mysql++-3.3.0/000755 000765 000024 00000000000 14042362153 013613 5ustar00tangentstaff000000 000000 mysql++-3.3.0/Makefile.mingw000644 000765 000024 00000107063 14042362131 016376 0ustar00tangentstaff000000 000000 # ========================================================================= # This makefile was generated by # Bakefile 0.2.11 (http://www.bakefile.org) # Do not modify, all changes will be overwritten! # ========================================================================= # ------------------------------------------------------------------------- # These are configurable options: # ------------------------------------------------------------------------- # Compiler flags to link shared library LINK_DLL_FLAGS ?= -shared # C++ compiler CXX = g++ # Standard flags for C++ CXXFLAGS ?= # Standard preprocessor flags (common for CC and CXX) CPPFLAGS ?= # Standard linker flags LDFLAGS ?= # Type of compiled binaries [debug,release] BUILD ?= debug # ------------------------------------------------------------------------- # Do not modify the rest of this file! # ------------------------------------------------------------------------- ### Variables: ### CPPDEPS = -MT$@ -MF$@.d -MD -MP MYSQLPP_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -mthreads -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -DHAVE_MYSQL_SSL_SET -I"C:\Program \ Files\MySQL\MySQL Connector C 6.1\include" $(CPPFLAGS) $(CXXFLAGS) MYSQLPP_OBJECTS = \ mysqlpp_beemutex.o \ mysqlpp_cmdline.o \ mysqlpp_connection.o \ mysqlpp_cpool.o \ mysqlpp_datetime.o \ mysqlpp_dbdriver.o \ mysqlpp_field_names.o \ mysqlpp_field_types.o \ mysqlpp_manip.o \ mysqlpp_myset.o \ mysqlpp_mysql++.o \ mysqlpp_mystring.o \ mysqlpp_null.o \ mysqlpp_options.o \ mysqlpp_qparms.o \ mysqlpp_query.o \ mysqlpp_result.o \ mysqlpp_row.o \ mysqlpp_scopedconnection.o \ mysqlpp_sql_buffer.o \ mysqlpp_sqlstream.o \ mysqlpp_ssqls2.o \ mysqlpp_stadapter.o \ mysqlpp_tcp_connection.o \ mysqlpp_transaction.o \ mysqlpp_type_info.o \ mysqlpp_uds_connection.o \ mysqlpp_utility.o \ mysqlpp_vallist.o \ mysqlpp_wnp_connection.o SSQLS2PARSE_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" -I. $(CPPFLAGS) $(CXXFLAGS) SSQLS2PARSE_OBJECTS = \ ssqls2parse_parsev2.o SSQLSXLAT_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) SSQLSXLAT_OBJECTS = \ ssqlsxlat_genv2.o \ ssqlsxlat_main.o TEST_ARRAY_INDEX_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) \ -DUNICODE -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL \ Connector C 6.1\include" $(CPPFLAGS) $(CXXFLAGS) TEST_ARRAY_INDEX_OBJECTS = \ test_array_index_array_index.o TEST_CPOOL_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) TEST_CPOOL_OBJECTS = \ test_cpool_cpool.o TEST_DATETIME_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) TEST_DATETIME_OBJECTS = \ test_datetime_datetime.o TEST_INTTYPES_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) TEST_INTTYPES_OBJECTS = \ test_inttypes_inttypes.o TEST_INSERTPOLICY_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) \ -DUNICODE -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL \ Connector C 6.1\include" $(CPPFLAGS) $(CXXFLAGS) TEST_INSERTPOLICY_OBJECTS = \ test_insertpolicy_insertpolicy.o TEST_MANIP_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) TEST_MANIP_OBJECTS = \ test_manip_manip.o TEST_NULL_COMPARISON_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) \ -DUNICODE -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL \ Connector C 6.1\include" $(CPPFLAGS) $(CXXFLAGS) TEST_NULL_COMPARISON_OBJECTS = \ test_null_comparison_null_comparison.o TEST_QUERY_COPY_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) \ -DUNICODE -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL \ Connector C 6.1\include" $(CPPFLAGS) $(CXXFLAGS) TEST_QUERY_COPY_OBJECTS = \ test_query_copy_query_copy.o TEST_QSSQLS_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) TEST_QSSQLS_OBJECTS = \ test_qssqls_qssqls.o TEST_QSTREAM_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) TEST_QSTREAM_OBJECTS = \ test_qstream_qstream.o TEST_SQLSTREAM_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) TEST_SQLSTREAM_OBJECTS = \ test_sqlstream_sqlstream.o TEST_SSQLS2_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) TEST_SSQLS2_OBJECTS = \ test_ssqls2_ssqls2.o TEST_STRING_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) TEST_STRING_OBJECTS = \ test_string_string.o TEST_TCP_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) TEST_TCP_OBJECTS = \ test_tcp_tcp.o TEST_UDS_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) TEST_UDS_OBJECTS = \ test_uds_uds.o TEST_WNP_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) TEST_WNP_OBJECTS = \ test_wnp_wnp.o EXCOMMON_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) EXCOMMON_OBJECTS = \ excommon_printdata.o CGI_JPEG_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) CGI_JPEG_OBJECTS = \ cgi_jpeg_cgi_jpeg.o CPOOL_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) CPOOL_OBJECTS = \ cpool_cpool.o DBINFO_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) DBINFO_OBJECTS = \ dbinfo_dbinfo.o DEADLOCK_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) DEADLOCK_OBJECTS = \ deadlock_deadlock.o FIELDINF_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) FIELDINF_OBJECTS = \ fieldinf_fieldinf.o FOR_EACH_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) FOR_EACH_OBJECTS = \ for_each_for_each.o LOAD_JPEG_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) LOAD_JPEG_OBJECTS = \ load_jpeg_load_jpeg.o MULTIQUERY_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) MULTIQUERY_OBJECTS = \ multiquery_multiquery.o RESETDB_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) RESETDB_OBJECTS = \ resetdb_resetdb.o SIMPLE1_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) SIMPLE1_OBJECTS = \ simple1_simple1.o SIMPLE2_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) SIMPLE2_OBJECTS = \ simple2_simple2.o SIMPLE3_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) SIMPLE3_OBJECTS = \ simple3_simple3.o SSQLS1_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) SSQLS1_OBJECTS = \ ssqls1_ssqls1.o SSQLS2_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) SSQLS2_OBJECTS = \ ssqls2_ssqls2.o SSQLS3_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) SSQLS3_OBJECTS = \ ssqls3_ssqls3.o SSQLS4_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) SSQLS4_OBJECTS = \ ssqls4_ssqls4.o SSQLS5_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) SSQLS5_OBJECTS = \ ssqls5_ssqls5.o SSQLS6_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) SSQLS6_OBJECTS = \ ssqls6_ssqls6.o STORE_IF_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) STORE_IF_OBJECTS = \ store_if_store_if.o TQUERY1_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) TQUERY1_OBJECTS = \ tquery1_tquery1.o TQUERY2_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) TQUERY2_OBJECTS = \ tquery2_tquery2.o TQUERY3_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) TQUERY3_OBJECTS = \ tquery3_tquery3.o TQUERY4_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) TQUERY4_OBJECTS = \ tquery4_tquery4.o TRANSACTION_CXXFLAGS = -mthreads $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -DUNICODE \ -D_UNICODE -DMYSQLPP_NO_DLL -Ilib -I"C:\Program Files\MySQL\MySQL Connector C \ 6.1\include" $(CPPFLAGS) $(CXXFLAGS) TRANSACTION_OBJECTS = \ transaction_transaction.o ### Conditionally set variables: ### ifeq ($(BUILD),debug) __OPTIMIZE_FLAG = -O0 endif ifeq ($(BUILD),release) __OPTIMIZE_FLAG = -O2 endif ifeq ($(BUILD),debug) __DEBUGINFO = -g endif ifeq ($(BUILD),release) __DEBUGINFO = endif ### Targets: ### all: mysqlpp.dll libmysqlpp_ssqls2parse.a ssqlsxlat.exe test_array_index.exe test_cpool.exe test_datetime.exe test_inttypes.exe test_insertpolicy.exe test_manip.exe test_null_comparison.exe test_query_copy.exe test_qssqls.exe test_qstream.exe test_sqlstream.exe test_ssqls2.exe test_string.exe test_tcp.exe test_uds.exe test_wnp.exe libmysqlpp_excommon.a cgi_jpeg.exe cpool.exe dbinfo.exe deadlock.exe fieldinf.exe for_each.exe load_jpeg.exe multiquery.exe resetdb.exe simple1.exe simple2.exe simple3.exe ssqls1.exe ssqls2.exe ssqls3.exe ssqls4.exe ssqls5.exe ssqls6.exe store_if.exe tquery1.exe tquery2.exe tquery3.exe tquery4.exe transaction.exe clean: -if exist .\*.o del .\*.o -if exist .\*.d del .\*.d -if exist mysqlpp.dll del mysqlpp.dll -if exist libmysqlpp.a del libmysqlpp.a -if exist libmysqlpp_ssqls2parse.a del libmysqlpp_ssqls2parse.a -if exist ssqlsxlat.exe del ssqlsxlat.exe -if exist test_array_index.exe del test_array_index.exe -if exist test_cpool.exe del test_cpool.exe -if exist test_datetime.exe del test_datetime.exe -if exist test_inttypes.exe del test_inttypes.exe -if exist test_insertpolicy.exe del test_insertpolicy.exe -if exist test_manip.exe del test_manip.exe -if exist test_null_comparison.exe del test_null_comparison.exe -if exist test_query_copy.exe del test_query_copy.exe -if exist test_qssqls.exe del test_qssqls.exe -if exist test_qstream.exe del test_qstream.exe -if exist test_sqlstream.exe del test_sqlstream.exe -if exist test_ssqls2.exe del test_ssqls2.exe -if exist test_string.exe del test_string.exe -if exist test_tcp.exe del test_tcp.exe -if exist test_uds.exe del test_uds.exe -if exist test_wnp.exe del test_wnp.exe -if exist libmysqlpp_excommon.a del libmysqlpp_excommon.a -if exist cgi_jpeg.exe del cgi_jpeg.exe -if exist cpool.exe del cpool.exe -if exist dbinfo.exe del dbinfo.exe -if exist deadlock.exe del deadlock.exe -if exist fieldinf.exe del fieldinf.exe -if exist for_each.exe del for_each.exe -if exist load_jpeg.exe del load_jpeg.exe -if exist multiquery.exe del multiquery.exe -if exist resetdb.exe del resetdb.exe -if exist simple1.exe del simple1.exe -if exist simple2.exe del simple2.exe -if exist simple3.exe del simple3.exe -if exist ssqls1.exe del ssqls1.exe -if exist ssqls2.exe del ssqls2.exe -if exist ssqls3.exe del ssqls3.exe -if exist ssqls4.exe del ssqls4.exe -if exist ssqls5.exe del ssqls5.exe -if exist ssqls6.exe del ssqls6.exe -if exist store_if.exe del store_if.exe -if exist tquery1.exe del tquery1.exe -if exist tquery2.exe del tquery2.exe -if exist tquery3.exe del tquery3.exe -if exist tquery4.exe del tquery4.exe -if exist transaction.exe del transaction.exe mysqlpp.dll: $(MYSQLPP_OBJECTS) $(CXX) $(LINK_DLL_FLAGS) -fPIC -o $@ $(MYSQLPP_OBJECTS) -Wl,--out-implib=libmysqlpp.a $(__DEBUGINFO) -mthreads -Wl,--enable-stdcall-fixup -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lwsock32 -lmysql libmysqlpp_ssqls2parse.a: $(SSQLS2PARSE_OBJECTS) mysqlpp.dll mysqlpp.dll if exist $@ del $@ ar rcu $@ $(SSQLS2PARSE_OBJECTS) ranlib $@ ssqlsxlat.exe: $(SSQLSXLAT_OBJECTS) mysqlpp.dll libmysqlpp_ssqls2parse.a mysqlpp.dll $(CXX) -o $@ $(SSQLSXLAT_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysql -lmysqlpp -lmysqlpp_ssqls2parse -lmysqlpp test_array_index.exe: $(TEST_ARRAY_INDEX_OBJECTS) mysqlpp.dll $(CXX) -o $@ $(TEST_ARRAY_INDEX_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysql -lmysqlpp test_cpool.exe: $(TEST_CPOOL_OBJECTS) mysqlpp.dll $(CXX) -o $@ $(TEST_CPOOL_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysql -lmysqlpp test_datetime.exe: $(TEST_DATETIME_OBJECTS) mysqlpp.dll $(CXX) -o $@ $(TEST_DATETIME_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysql -lmysqlpp test_inttypes.exe: $(TEST_INTTYPES_OBJECTS) mysqlpp.dll $(CXX) -o $@ $(TEST_INTTYPES_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysql -lmysqlpp test_insertpolicy.exe: $(TEST_INSERTPOLICY_OBJECTS) mysqlpp.dll $(CXX) -o $@ $(TEST_INSERTPOLICY_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysql -lmysqlpp test_manip.exe: $(TEST_MANIP_OBJECTS) mysqlpp.dll $(CXX) -o $@ $(TEST_MANIP_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysql -lmysqlpp test_null_comparison.exe: $(TEST_NULL_COMPARISON_OBJECTS) mysqlpp.dll $(CXX) -o $@ $(TEST_NULL_COMPARISON_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysql -lmysqlpp test_query_copy.exe: $(TEST_QUERY_COPY_OBJECTS) mysqlpp.dll $(CXX) -o $@ $(TEST_QUERY_COPY_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysql -lmysqlpp test_qssqls.exe: $(TEST_QSSQLS_OBJECTS) mysqlpp.dll $(CXX) -o $@ $(TEST_QSSQLS_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysql -lmysqlpp test_qstream.exe: $(TEST_QSTREAM_OBJECTS) mysqlpp.dll $(CXX) -o $@ $(TEST_QSTREAM_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysql -lmysqlpp test_sqlstream.exe: $(TEST_SQLSTREAM_OBJECTS) mysqlpp.dll $(CXX) -o $@ $(TEST_SQLSTREAM_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysql -lmysqlpp test_ssqls2.exe: $(TEST_SSQLS2_OBJECTS) mysqlpp.dll libmysqlpp_ssqls2parse.a mysqlpp.dll libmysqlpp_ssqls2parse.a $(CXX) -o $@ $(TEST_SSQLS2_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysql -lmysqlpp -lmysqlpp_ssqls2parse -lmysqlpp -lmysqlpp_ssqls2parse test_string.exe: $(TEST_STRING_OBJECTS) mysqlpp.dll $(CXX) -o $@ $(TEST_STRING_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysql -lmysqlpp test_tcp.exe: $(TEST_TCP_OBJECTS) mysqlpp.dll $(CXX) -o $@ $(TEST_TCP_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysql -lmysqlpp test_uds.exe: $(TEST_UDS_OBJECTS) mysqlpp.dll $(CXX) -o $@ $(TEST_UDS_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysql -lmysqlpp test_wnp.exe: $(TEST_WNP_OBJECTS) mysqlpp.dll $(CXX) -o $@ $(TEST_WNP_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysql -lmysqlpp libmysqlpp_excommon.a: $(EXCOMMON_OBJECTS) mysqlpp.dll if exist $@ del $@ ar rcu $@ $(EXCOMMON_OBJECTS) ranlib $@ cgi_jpeg.exe: $(CGI_JPEG_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(CGI_JPEG_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp cpool.exe: $(CPOOL_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(CPOOL_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp dbinfo.exe: $(DBINFO_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(DBINFO_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp deadlock.exe: $(DEADLOCK_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(DEADLOCK_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp fieldinf.exe: $(FIELDINF_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(FIELDINF_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp for_each.exe: $(FOR_EACH_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(FOR_EACH_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp load_jpeg.exe: $(LOAD_JPEG_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(LOAD_JPEG_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp multiquery.exe: $(MULTIQUERY_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(MULTIQUERY_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp resetdb.exe: $(RESETDB_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(RESETDB_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp simple1.exe: $(SIMPLE1_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(SIMPLE1_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp simple2.exe: $(SIMPLE2_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(SIMPLE2_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp simple3.exe: $(SIMPLE3_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(SIMPLE3_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp ssqls1.exe: $(SSQLS1_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(SSQLS1_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp ssqls2.exe: $(SSQLS2_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(SSQLS2_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp ssqls3.exe: $(SSQLS3_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(SSQLS3_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp ssqls4.exe: $(SSQLS4_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(SSQLS4_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp ssqls5.exe: $(SSQLS5_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(SSQLS5_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp ssqls6.exe: $(SSQLS6_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(SSQLS6_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp store_if.exe: $(STORE_IF_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(STORE_IF_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp tquery1.exe: $(TQUERY1_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(TQUERY1_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp tquery2.exe: $(TQUERY2_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(TQUERY2_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp tquery3.exe: $(TQUERY3_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(TQUERY3_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp tquery4.exe: $(TQUERY4_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(TQUERY4_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp transaction.exe: $(TRANSACTION_OBJECTS) libmysqlpp_excommon.a mysqlpp.dll $(CXX) -o $@ $(TRANSACTION_OBJECTS) -mthreads $(__DEBUGINFO) -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-stdcall-fixup -L. -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" $(LDFLAGS) -lmysqlpp_excommon -lmysql -lmysqlpp mysqlpp_beemutex.o: ./lib/beemutex.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_cmdline.o: ./lib/cmdline.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_connection.o: ./lib/connection.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_cpool.o: ./lib/cpool.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_datetime.o: ./lib/datetime.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_dbdriver.o: ./lib/dbdriver.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_field_names.o: ./lib/field_names.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_field_types.o: ./lib/field_types.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_manip.o: ./lib/manip.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_myset.o: ./lib/myset.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_mysql++.o: ./lib/mysql++.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_mystring.o: ./lib/mystring.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_null.o: ./lib/null.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_options.o: ./lib/options.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_qparms.o: ./lib/qparms.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_query.o: ./lib/query.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_result.o: ./lib/result.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_row.o: ./lib/row.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_scopedconnection.o: ./lib/scopedconnection.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_sql_buffer.o: ./lib/sql_buffer.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_sqlstream.o: ./lib/sqlstream.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_ssqls2.o: ./lib/ssqls2.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_stadapter.o: ./lib/stadapter.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_tcp_connection.o: ./lib/tcp_connection.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_transaction.o: ./lib/transaction.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_type_info.o: ./lib/type_info.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_uds_connection.o: ./lib/uds_connection.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_utility.o: ./lib/utility.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_vallist.o: ./lib/vallist.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< mysqlpp_wnp_connection.o: ./lib/wnp_connection.cpp $(CXX) -c -o $@ $(MYSQLPP_CXXFLAGS) $(CPPDEPS) $< ssqls2parse_parsev2.o: ./ssx/parsev2.cpp $(CXX) -c -o $@ $(SSQLS2PARSE_CXXFLAGS) $(CPPDEPS) $< ssqlsxlat_genv2.o: ./ssx/genv2.cpp $(CXX) -c -o $@ $(SSQLSXLAT_CXXFLAGS) $(CPPDEPS) $< ssqlsxlat_main.o: ./ssx/main.cpp $(CXX) -c -o $@ $(SSQLSXLAT_CXXFLAGS) $(CPPDEPS) $< test_array_index_array_index.o: ./test/array_index.cpp $(CXX) -c -o $@ $(TEST_ARRAY_INDEX_CXXFLAGS) $(CPPDEPS) $< test_cpool_cpool.o: ./test/cpool.cpp $(CXX) -c -o $@ $(TEST_CPOOL_CXXFLAGS) $(CPPDEPS) $< test_datetime_datetime.o: ./test/datetime.cpp $(CXX) -c -o $@ $(TEST_DATETIME_CXXFLAGS) $(CPPDEPS) $< test_inttypes_inttypes.o: ./test/inttypes.cpp $(CXX) -c -o $@ $(TEST_INTTYPES_CXXFLAGS) $(CPPDEPS) $< test_insertpolicy_insertpolicy.o: ./test/insertpolicy.cpp $(CXX) -c -o $@ $(TEST_INSERTPOLICY_CXXFLAGS) $(CPPDEPS) $< test_manip_manip.o: ./test/manip.cpp $(CXX) -c -o $@ $(TEST_MANIP_CXXFLAGS) $(CPPDEPS) $< test_null_comparison_null_comparison.o: ./test/null_comparison.cpp $(CXX) -c -o $@ $(TEST_NULL_COMPARISON_CXXFLAGS) $(CPPDEPS) $< test_query_copy_query_copy.o: ./test/query_copy.cpp $(CXX) -c -o $@ $(TEST_QUERY_COPY_CXXFLAGS) $(CPPDEPS) $< test_qssqls_qssqls.o: ./test/qssqls.cpp $(CXX) -c -o $@ $(TEST_QSSQLS_CXXFLAGS) $(CPPDEPS) $< test_qstream_qstream.o: ./test/qstream.cpp $(CXX) -c -o $@ $(TEST_QSTREAM_CXXFLAGS) $(CPPDEPS) $< test_sqlstream_sqlstream.o: ./test/sqlstream.cpp $(CXX) -c -o $@ $(TEST_SQLSTREAM_CXXFLAGS) $(CPPDEPS) $< test_ssqls2_ssqls2.o: ./test/ssqls2.cpp $(CXX) -c -o $@ $(TEST_SSQLS2_CXXFLAGS) $(CPPDEPS) $< test_string_string.o: ./test/string.cpp $(CXX) -c -o $@ $(TEST_STRING_CXXFLAGS) $(CPPDEPS) $< test_tcp_tcp.o: ./test/tcp.cpp $(CXX) -c -o $@ $(TEST_TCP_CXXFLAGS) $(CPPDEPS) $< test_uds_uds.o: ./test/uds.cpp $(CXX) -c -o $@ $(TEST_UDS_CXXFLAGS) $(CPPDEPS) $< test_wnp_wnp.o: ./test/wnp.cpp $(CXX) -c -o $@ $(TEST_WNP_CXXFLAGS) $(CPPDEPS) $< excommon_printdata.o: ./examples/printdata.cpp $(CXX) -c -o $@ $(EXCOMMON_CXXFLAGS) $(CPPDEPS) $< cgi_jpeg_cgi_jpeg.o: ./examples/cgi_jpeg.cpp $(CXX) -c -o $@ $(CGI_JPEG_CXXFLAGS) $(CPPDEPS) $< cpool_cpool.o: ./examples/cpool.cpp $(CXX) -c -o $@ $(CPOOL_CXXFLAGS) $(CPPDEPS) $< dbinfo_dbinfo.o: ./examples/dbinfo.cpp $(CXX) -c -o $@ $(DBINFO_CXXFLAGS) $(CPPDEPS) $< deadlock_deadlock.o: ./examples/deadlock.cpp $(CXX) -c -o $@ $(DEADLOCK_CXXFLAGS) $(CPPDEPS) $< fieldinf_fieldinf.o: ./examples/fieldinf.cpp $(CXX) -c -o $@ $(FIELDINF_CXXFLAGS) $(CPPDEPS) $< for_each_for_each.o: ./examples/for_each.cpp $(CXX) -c -o $@ $(FOR_EACH_CXXFLAGS) $(CPPDEPS) $< load_jpeg_load_jpeg.o: ./examples/load_jpeg.cpp $(CXX) -c -o $@ $(LOAD_JPEG_CXXFLAGS) $(CPPDEPS) $< multiquery_multiquery.o: ./examples/multiquery.cpp $(CXX) -c -o $@ $(MULTIQUERY_CXXFLAGS) $(CPPDEPS) $< resetdb_resetdb.o: ./examples/resetdb.cpp $(CXX) -c -o $@ $(RESETDB_CXXFLAGS) $(CPPDEPS) $< simple1_simple1.o: ./examples/simple1.cpp $(CXX) -c -o $@ $(SIMPLE1_CXXFLAGS) $(CPPDEPS) $< simple2_simple2.o: ./examples/simple2.cpp $(CXX) -c -o $@ $(SIMPLE2_CXXFLAGS) $(CPPDEPS) $< simple3_simple3.o: ./examples/simple3.cpp $(CXX) -c -o $@ $(SIMPLE3_CXXFLAGS) $(CPPDEPS) $< ssqls1_ssqls1.o: ./examples/ssqls1.cpp $(CXX) -c -o $@ $(SSQLS1_CXXFLAGS) $(CPPDEPS) $< ssqls2_ssqls2.o: ./examples/ssqls2.cpp $(CXX) -c -o $@ $(SSQLS2_CXXFLAGS) $(CPPDEPS) $< ssqls3_ssqls3.o: ./examples/ssqls3.cpp $(CXX) -c -o $@ $(SSQLS3_CXXFLAGS) $(CPPDEPS) $< ssqls4_ssqls4.o: ./examples/ssqls4.cpp $(CXX) -c -o $@ $(SSQLS4_CXXFLAGS) $(CPPDEPS) $< ssqls5_ssqls5.o: ./examples/ssqls5.cpp $(CXX) -c -o $@ $(SSQLS5_CXXFLAGS) $(CPPDEPS) $< ssqls6_ssqls6.o: ./examples/ssqls6.cpp $(CXX) -c -o $@ $(SSQLS6_CXXFLAGS) $(CPPDEPS) $< store_if_store_if.o: ./examples/store_if.cpp $(CXX) -c -o $@ $(STORE_IF_CXXFLAGS) $(CPPDEPS) $< tquery1_tquery1.o: ./examples/tquery1.cpp $(CXX) -c -o $@ $(TQUERY1_CXXFLAGS) $(CPPDEPS) $< tquery2_tquery2.o: ./examples/tquery2.cpp $(CXX) -c -o $@ $(TQUERY2_CXXFLAGS) $(CPPDEPS) $< tquery3_tquery3.o: ./examples/tquery3.cpp $(CXX) -c -o $@ $(TQUERY3_CXXFLAGS) $(CPPDEPS) $< tquery4_tquery4.o: ./examples/tquery4.cpp $(CXX) -c -o $@ $(TQUERY4_CXXFLAGS) $(CPPDEPS) $< transaction_transaction.o: ./examples/transaction.cpp $(CXX) -c -o $@ $(TRANSACTION_CXXFLAGS) $(CPPDEPS) $< .PHONY: all clean SHELL := $(COMSPEC) # Dependencies tracking: -include ./*.d mysql++-3.3.0/ssx/000755 000765 000024 00000000000 14042362153 014430 5ustar00tangentstaff000000 000000 mysql++-3.3.0/README-Solaris.txt000644 000765 000024 00000003410 14042362131 016715 0ustar00tangentstaff000000 000000 For the most part, Solaris is just another Unix variant as far as MySQL++ is concerned. See README-Unix.txt for most of what you need to know to build and use MySQL++. Prerequisite: Install the MySQL Development Files ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MySQL++ is built on top of the MySQL C API library, so it needs the C API development files to build against. With the current version of Solaris, at least, a MySQL package is included on the operating system disk, but not installed by default. To install it, oull down the GNOME System menu, go to Administration, and then to Package Manager. Search for "mysql5" and install those packages. While there, you may also need to install the gcc packages, if you haven't done that already. I'm not sure, but you may need to install Perl as well. Don't search for just "mysql" in Package Manager, as that will also bring up legacy MySQL 4.0 packages. MySQL++ may build against 4.0 still; it's been a while since we've tested it. What is certain is that the examples won't run against 4.0 without modification, as they assume the availability of UTF-8 character set support, which was added in 4.1. It's no doubt possible to use the official binaries from mysql.com instead, or to build from source. We don't do that ourselves, though, and don't have reports from those who have, so we can't advise on how to do it. C API Development File Directories ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sun's MySQL package installs the development files in relatively uncommon locations. The libraries are in /usr/mysql/lib/mysql, and the headers are in /usr/mysql/include/mysql. Way to be redundant, guys. :) mysql++-3.3.0/COPYING.txt000644 000765 000024 00000001116 14042362131 015457 0ustar00tangentstaff000000 000000 The MySQL++ library proper and the reference manual derived from comments in the library source code are licensed under the GNU Lesser General Public License. A copy is provided in this directory, in the file LICENSE.txt. The MySQL++ User Manual is licensed under a unique license derived from the Linux Documentation Project License. (The only changes are due to the fact that the User Manual isn't actually part of the LDP, so a lot of the language in the LDPL doesn't make sense when applied to the user manual.) This license is provided in the file doc/userman/LICENSE.txt. mysql++-3.3.0/libtool000755 000765 000024 00001242041 14042362153 015211 0ustar00tangentstaff000000 000000 #! /bin/sh # Generated automatically by config.status () # Libtool was configured on host Antakya.local: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 # Copyright (C) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # The names of the tagged configurations supported by this script. available_tags='CXX ' # Configured defaults for sys_lib_dlsearch_path munging. : ${LT_SYS_LIBRARY_PATH=""} # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=2.4.6 macro_revision=2.4.6 # Whether or not to build shared libraries. build_libtool_libs=yes # Whether or not to build static libraries. build_old_libs=yes # What type of objects to build. pic_mode=default # Whether or not to optimize for fast installation. fast_install=needless # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec= # Shell to use when invoking shell scripts. SHELL="/bin/sh" # An echo program that protects backslashes. ECHO="printf %s\\n" # The PATH separator for the build system. PATH_SEPARATOR=":" # The host system. host_alias= host=x86_64-apple-darwin19.6.0 host_os=darwin19.6.0 # The build system. build_alias= build=x86_64-apple-darwin19.6.0 build_os=darwin19.6.0 # A sed program that does not truncate output. SED="/usr/local/bin/gsed" # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e 1s/^X//" # A grep program that handles long lines. GREP="/usr/local/bin/ggrep" # An ERE matcher. EGREP="/usr/local/bin/ggrep -E" # A literal string matcher. FGREP="/usr/local/bin/ggrep -F" # A BSD- or MS-compatible name lister. NM="/usr/bin/nm -B" # Whether we need soft or hard links. LN_S="ln -s" # What is the maximum length of a command? max_cmd_len=196608 # Object file suffix (normally "o"). objext=o # Executable file suffix (normally ""). exeext= # whether the shell understands "unset". lt_unset=unset # turn spaces into newlines. SP2NL="tr \\040 \\012" # turn newlines into spaces. NL2SP="tr \\015\\012 \\040\\040" # convert $build file names to $host format. to_host_file_cmd=func_convert_file_noop # convert $build files to toolchain format. to_tool_file_cmd=func_convert_file_noop # An object symbol dumper. OBJDUMP="objdump" # Method to check whether dependent libraries are shared objects. deplibs_check_method="pass_all" # Command to use when deplibs_check_method = "file_magic". file_magic_cmd="\$MAGIC_CMD" # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob="" # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob="no" # DLL creation program. DLLTOOL="false" # Command to associate shared and link libraries. sharedlib_from_linklib_cmd="printf %s\\n" # The archiver. AR="ar" # Flags to create an archive. AR_FLAGS="cru" # How to feed a file listing to the archiver. archiver_list_spec="" # A symbol stripping program. STRIP="strip" # Commands used to install an old-style archive. RANLIB="ranlib" old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$tool_oldlib" old_postuninstall_cmds="" # Whether to use a lock for old archive extraction. lock_old_archive_extraction=yes # A C compiler. LTCC="gcc" # LTCC compiler flags. LTCFLAGS="-g -O2 -fno-common" # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe="sed -n -e 's/^.*[ ]\\([BCDEGRST][BCDEGRST]*\\)[ ][ ]*_\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 _\\2 \\2/p' | sed '/ __gnu_lto/d'" # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[BCDEGRST][BCDEGRST]* .* \\(.*\\)\$/extern char \\1;/p'" # Transform the output of nm into a list of symbols to manually relocate. global_symbol_to_import="" # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address="sed -n -e 's/^: \\(.*\\) .*\$/ {\"\\1\", (void *) 0},/p' -e 's/^[BCDEGRST][BCDEGRST]* .* \\(.*\\)\$/ {\"\\1\", (void *) \\&\\1},/p'" # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\(.*\\) .*\$/ {\"\\1\", (void *) 0},/p' -e 's/^[BCDEGRST][BCDEGRST]* .* \\(lib.*\\)\$/ {\"\\1\", (void *) \\&\\1},/p' -e 's/^[BCDEGRST][BCDEGRST]* .* \\(.*\\)\$/ {\"lib\\1\", (void *) \\&\\1},/p'" # The name lister interface. nm_interface="BSD nm" # Specify filename containing input files for $NM. nm_file_list_spec="@" # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot= # Command to truncate a binary pipe. lt_truncate_bin="/bin/dd bs=4096 count=1" # The name of the directory that contains temporary libtool files. objdir=.libs # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=file # Must we lock files when doing compilation? need_locks="no" # Manifest tool. MANIFEST_TOOL=":" # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL="dsymutil" # Tool to change global to local symbols on Mac OS X. NMEDIT="nmedit" # Tool to manipulate fat objects and archives on Mac OS X. LIPO="lipo" # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL="otool" # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=":" # Old archive suffix (normally "a"). libext=a # Shared library suffix (normally ".so"). shrext_cmds="\`test .\$module = .yes && echo .so || echo .dylib\`" # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds="" # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink="PATH DYLD_LIBRARY_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" # Do we need the "lib" prefix for modules? need_lib_prefix=no # Do we need a version for libraries? need_version=no # Library versioning type. version_type=darwin # Shared library runtime path variable. runpath_var= # Shared library path variable. shlibpath_var=DYLD_LIBRARY_PATH # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=yes # Format of library name prefix. libname_spec="lib\$name" # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec="\$libname\$release\$major\$shared_ext \$libname\$shared_ext" # The coded name of the library, if different from the real name. soname_spec="\$libname\$release\$major\$shared_ext" # Permission mode override for installation of shared libraries. install_override_mode="" # Command to use after installation of a shared archive. postinstall_cmds="" # Command to use after uninstallation of a shared archive. postuninstall_cmds="" # Commands used to finish a libtool library installation in a directory. finish_cmds="" # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval="" # Whether we should hardcode library paths into libraries. hardcode_into_libs=no # Compile-time system search path for libraries. sys_lib_search_path_spec="/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0 /usr/local/lib" # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec="/usr/local/lib /lib /usr/lib" # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path="" # Whether dlopen is supported. dlopen_support=unknown # Whether dlopen of programs is supported. dlopen_self=unknown # Whether dlopen of statically linked programs is supported. dlopen_self_static=unknown # Commands to strip libraries. old_striplib="strip -S" striplib="strip -x" # The linker used to build libraries. LD="/Library/Developer/CommandLineTools/usr/bin/ld" # How to create reloadable object files. reload_flag=" -r" reload_cmds="\$LTCC \$LTCFLAGS -nostdlib \$wl-r -o \$output\$reload_objs" # Commands used to build an old-style archive. old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib" # A language specific compiler. CC="gcc" # Is the compiler the GNU compiler? with_gcc=yes # Compiler flag to turn off builtin functions. no_builtin_flag=" -fno-builtin -fno-rtti -fno-exceptions" # Additional compiler flags for building library objects. pic_flag=" -fno-common -DPIC" # How to pass a linker flag through the compiler. wl="-Wl," # Compiler flag to prevent dynamic linking. link_static_flag="" # Does compiler simultaneously support -c and -o options? compiler_c_o="yes" # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=no # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=no # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec="" # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec="\`for conv in \$convenience\\\"\\\"; do test -n \\\"\$conv\\\" && new_convenience=\\\"\$new_convenience \$wl-force_load,\$conv\\\"; done; func_echo_all \\\"\$new_convenience\\\"\`" # Whether the compiler copes with passing no objects directly. compiler_needs_object="no" # Create an old-style archive from a shared archive. old_archive_from_new_cmds="" # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds="" # Commands used to build a shared archive. archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring \$single_module" archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring \$single_module \$wl-exported_symbols_list,\$output_objdir/\$libname-symbols.expsym" # Commands used to build a loadable module if different from building # a shared archive. module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags" module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags \$wl-exported_symbols_list,\$output_objdir/\$libname-symbols.expsym" # Whether we are building with GNU ld or not. with_gnu_ld="no" # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag="\$wl-undefined \${wl}dynamic_lookup" # Flag that enforces no undefined symbols. no_undefined_flag="" # Flag to hardcode $libdir into a binary during linking. # This must work even if $libdir does not exist hardcode_libdir_flag_spec="" # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator="" # Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=no # Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting $shlibpath_var if the # library is relocated. hardcode_direct_absolute=no # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=no # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=unsupported # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=yes # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=no # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=yes # Set to "yes" if exported symbols are required. always_export_symbols=no # The commands to list exported symbols. export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" # Symbols that should not be listed in the preloaded symbols. exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*" # Symbols that must always be exported. include_expsyms="" # Commands necessary for linking programs (against libraries) with templates. prelink_cmds="" # Commands necessary for finishing linking programs. postlink_cmds="" # Specify filename containing input files. file_list_spec="" # How to hardcode a shared library path into an executable. hardcode_action=immediate # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs="" # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects="" postdep_objects="" predeps="" postdeps="" # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path="" # ### END LIBTOOL CONFIG # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE #! /bin/sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2014-01-03.01 # libtool (GNU libtool) 2.4.6 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . PROGRAM=libtool PACKAGE=libtool VERSION=2.4.6 package_revision=2.4.6 ## ------ ## ## Usage. ## ## ------ ## # Run './libtool --help' for help with using this script from the # command line. ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # After configure completes, it has a better idea of some of the # shell tools we need than the defaults used by the functions shared # with bootstrap, so set those here where they can still be over- # ridden by the user, but otherwise take precedence. : ${AUTOCONF="autoconf"} : ${AUTOMAKE="automake"} ## -------------------------- ## ## Source external libraries. ## ## -------------------------- ## # Much of our low-level functionality needs to be sourced from external # libraries, which are installed to $pkgauxdir. # Set a version string for this script. scriptversion=2015-01-20.17; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # Copyright (C) 2004-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # As a special exception to the GNU General Public License, if you distribute # this file as part of a program or library that is built using GNU Libtool, # you may include this file under the same distribution terms that you use # for the rest of that program. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some retarded systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo 'GREP' >> conftest.nl "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s|\([`"$\\]\)|\\\1|g' # Same as above, but do not quote variable references. sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' # Sed substitution that converts a w32 file name or path # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_double_quote_subst, that '$' was protected from # expansion. Since each input '\' is now two '\'s, look for any number # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath=$0 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # We should try to minimise forks, especially on Windows where they are # unreasonably slow, so skip the feature probes when bash or zsh are # being used: if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then : ${_G_HAVE_ARITH_OP="yes"} : ${_G_HAVE_XSI_OPS="yes"} # The += operator was introduced in bash 3.1 case $BASH_VERSION in [12].* | 3.0 | 3.0*) ;; *) : ${_G_HAVE_PLUSEQ_OP="yes"} ;; esac fi # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. test -z "$_G_HAVE_PLUSEQ_OP" \ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ && _G_HAVE_PLUSEQ_OP=yes if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1+=\\ \$func_quote_for_eval_result" }' else func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1=\$$1\\ \$func_quote_for_eval_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT # -------------------------------------------------------- # Perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_mkdir_p_IFS # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # func_normal_abspath PATH # ------------------------ # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` while :; do # Processed it all yet? if test / = "$func_normal_abspath_tpath"; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result"; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=$func_dirname_result if test -z "$func_relative_path_tlibdir"; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_for_eval ARG... # -------------------------- # Aesthetically quote ARGs to be evaled later. # This function returns two values: # i) func_quote_for_eval_result # double-quoted, suitable for a subsequent eval # ii) func_quote_for_eval_unquoted_result # has all characters that are still active within double # quotes backslashified. func_quote_for_eval () { $debug_cmd func_quote_for_eval_unquoted_result= func_quote_for_eval_result= while test 0 -lt $#; do case $1 in *[\\\`\"\$]*) _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; *) _G_unquoted_arg=$1 ;; esac if test -n "$func_quote_for_eval_unquoted_result"; then func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" else func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" fi case $_G_unquoted_arg in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_quoted_arg=\"$_G_unquoted_arg\" ;; *) _G_quoted_arg=$_G_unquoted_arg ;; esac if test -n "$func_quote_for_eval_result"; then func_append func_quote_for_eval_result " $_G_quoted_arg" else func_append func_quote_for_eval_result "$_G_quoted_arg" fi shift done } # func_quote_for_expand ARG # ------------------------- # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { $debug_cmd case $1 in *[\\\`\"]*) _G_arg=`$ECHO "$1" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; *) _G_arg=$1 ;; esac case $_G_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_arg=\"$_G_arg\" ;; esac func_quote_for_expand_result=$_G_arg } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_for_expand "$_G_cmd" eval "func_notquiet $func_quote_for_expand_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_for_expand "$_G_cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_tr_sh # ---------- # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: #! /bin/sh # Set a version string for this script. scriptversion=2014-01-07.03; # UTC # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # Copyright (C) 2010-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# warranty; '. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # to the main code. A hook is just a named list of of function, that can # be run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of functions called by FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It is assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook funcions.n" ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do eval $_G_hook '"$@"' # store returned options list back into positional # parameters for next 'cmd' execution. eval _G_hook_result=\$${_G_hook}_result eval set dummy "$_G_hook_result"; shift done func_quote_for_eval ${1+"$@"} func_run_hooks_result=$func_quote_for_eval_result } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list in your hook function, remove any # options that you action, and then pass back the remaining unprocessed # options in '_result', escaped suitably for # 'eval'. Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # func_quote_for_eval ${1+"$@"} # my_options_prep_result=$func_quote_for_eval_result # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # # Note that for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # ;; # *) set dummy "$_G_opt" "$*"; shift; break ;; # esac # done # # func_quote_for_eval ${1+"$@"} # my_silent_option_result=$func_quote_for_eval_result # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # # func_quote_for_eval ${1+"$@"} # my_option_validation_result=$func_quote_for_eval_result # } # func_add_hook func_validate_options my_option_validation # # You'll alse need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd func_options_prep ${1+"$@"} eval func_parse_options \ ${func_options_prep_result+"$func_options_prep_result"} eval func_validate_options \ ${func_parse_options_result+"$func_parse_options_result"} eval func_run_hooks func_options \ ${func_validate_options_result+"$func_validate_options_result"} # save modified positional parameters for caller func_options_result=$func_run_hooks_result } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propogate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before # returning. func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= func_run_hooks func_options_prep ${1+"$@"} # save modified positional parameters for caller func_options_prep_result=$func_run_hooks_result } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd func_parse_options_result= # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. func_run_hooks func_parse_options ${1+"$@"} # Adjust func_parse_options positional parameters to match eval set dummy "$func_run_hooks_result"; shift # Break out of the loop if we already parsed every option. test $# -gt 0 || break _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) test $# = 0 && func_missing_arg $_G_opt && break case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} func_parse_options_result=$func_quote_for_eval_result } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" func_run_hooks func_validate_options ${1+"$@"} # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE # save modified positional parameters for caller func_validate_options_result=$func_run_hooks_result } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables after # splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} test "x$func_split_equals_lhs" = "x$1" \ && func_split_equals_rhs= }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # func_split_short_opt SHORTOPT # ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /(C)/!b go :more /\./!{ N s|\n# | | b more } :go /^# Written by /,/# warranty; / { s|^# || s|^# *$|| s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| p } /^# Written by / { s|^# || p } /^warranty; /q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. scriptversion='(GNU libtool) 2.4.6' # func_echo ARG... # ---------------- # Libtool also displays the current mode in messages, so override # funclib.sh func_echo with this custom definition. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" done IFS=$func_echo_IFS } # func_warning ARG... # ------------------- # Libtool warnings are not categorized, so override funclib.sh # func_warning with this simpler definition. func_warning () { $debug_cmd $warning_func ${1+"$@"} } ## ---------------- ## ## Options parsing. ## ## ---------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --mode=MODE use operation mode MODE --no-warnings equivalent to '-Wnone' --preserve-dup-deps don't remove duplicate dependency libraries --quiet, --silent don't print informational messages --tag=TAG use configuration variables from tag TAG -v, --verbose print more informational messages than default --version print version information -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. When passed as first option, '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. Try '$progname --help --mode=MODE' for a more detailed description of MODE. When reporting a bug, please describe a test case to reproduce it and include the following information: host-triplet: $host shell: $SHELL compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) version: $progname (GNU libtool) 2.4.6 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . GNU libtool home page: . General help using GNU software: ." exit 0 } # func_lo2o OBJECT-NAME # --------------------- # Transform OBJECT-NAME from a '.lo' suffix to the platform specific # object suffix. lo2o=s/\\.lo\$/.$objext/ o2lo=s/\\.$objext\$/.lo/ if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_lo2o () { case $1 in *.lo) func_lo2o_result=${1%.lo}.$objext ;; * ) func_lo2o_result=$1 ;; esac }' # func_xform LIBOBJ-OR-SOURCE # --------------------------- # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) # suffix to a '.lo' libtool-object suffix. eval 'func_xform () { func_xform_result=${1%.*}.lo }' else # ...otherwise fall back to using sed. func_lo2o () { func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` } func_xform () { func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` } fi # func_fatal_configuration ARG... # ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func__fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } # func_config # ----------- # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # ------------- # Display the features supported by this script. func_features () { echo "host: $host" if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag TAGNAME # ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname=$1 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf=/$re_begincf/,/$re_endcf/p # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # libtool_options_prep [ARG]... # ----------------------------- # Preparation for options parsed by libtool. libtool_options_prep () { $debug_mode # Option defaults: opt_config=false opt_dlopen= opt_dry_run=false opt_help=false opt_mode= opt_preserve_dup_deps=false opt_quiet=false nonopt= preserve_args= # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Pass back the list of options. func_quote_for_eval ${1+"$@"} libtool_options_prep_result=$func_quote_for_eval_result } func_add_hook func_options_prep libtool_options_prep # libtool_parse_options [ARG]... # --------------------------------- # Provide handling for libtool specific options. libtool_parse_options () { $debug_cmd # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) func_config ;; --dlopen|-dlopen) opt_dlopen="${opt_dlopen+$opt_dlopen }$1" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) func_features ;; --finish) set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $_G_opt && break opt_mode=$1 case $1 in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $_G_opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" ;; --no-warnings|--no-warning|--no-warn) opt_warning=false func_append preserve_args " $_G_opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $_G_opt" ;; --silent|--quiet) opt_quiet=: opt_verbose=false func_append preserve_args " $_G_opt" ;; --tag) test $# = 0 && func_missing_arg $_G_opt && break opt_tag=$1 func_append preserve_args " $_G_opt $1" func_enable_tag "$1" shift ;; --verbose|-v) opt_quiet=false opt_verbose=: func_append preserve_args " $_G_opt" ;; # An option not handled by this hook function: *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} libtool_parse_options_result=$func_quote_for_eval_result } func_add_hook func_parse_options libtool_parse_options # libtool_validate_options [ARG]... # --------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. libtool_validate_options () { # save first non-option argument if test 0 -lt $#; then nonopt=$1 shift fi # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" case $host in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match test yes != "$build_libtool_libs" \ && test yes != "$build_old_libs" \ && func_fatal_configuration "not configured to build any kind of library" # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test execute != "$opt_mode"; then func_error "unrecognized option '-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help=$help help="Try '$progname --help --mode=$opt_mode' for more information." } # Pass back the unparsed argument list func_quote_for_eval ${1+"$@"} libtool_validate_options_result=$func_quote_for_eval_result } func_add_hook func_validate_options libtool_validate_options # Process options as early as possible so that --help and --version # can return quickly. func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## ----------- ## ## Main. ## ## ----------- ## magic='%%%MAGIC variable%%%' magic_exe='%%%MAGIC EXE variable%%%' # Global variables. extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # func_generated_by_libtool # True iff stdin has been generated by Libtool. This function is only # a basic sanity check; it will hardly flush out determined imposters. func_generated_by_libtool_p () { $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test yes = "$lalib_p" } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { test -f "$1" && $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $debug_cmd save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # 'FILE.' does not work on cygwin managed mounts. func_source () { $debug_cmd case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $debug_cmd if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=$1 if test yes = "$build_libtool_libs"; then write_lobj=\'$2\' else write_lobj=none fi if test yes = "$build_old_libs"; then write_oldobj=\'$3\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $debug_cmd # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $debug_cmd if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $debug_cmd # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $debug_cmd if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result=$1 fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $debug_cmd if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result=$3 fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $debug_cmd case $4 in $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $debug_cmd $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $debug_cmd case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result=$1 } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $debug_cmd if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd=func_convert_path_$func_stripname_result fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $debug_cmd func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result=$1 } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_dll_def_p FILE # True iff FILE is a Windows DLL '.def' file. # Keep in sync with _LT_DLL_DEF_P in libtool.m4 func_dll_def_p () { $debug_cmd func_dll_def_p_tmp=`$SED -n \ -e 's/^[ ]*//' \ -e '/^\(;.*\)*$/d' \ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ -e q \ "$1"` test DEF = "$func_dll_def_p_tmp" } # func_mode_compile arg... func_mode_compile () { $debug_cmd # Get the compilation command and the source file. base_compile= srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg=$arg arg_mode=normal ;; target ) libobj=$arg arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs=$IFS; IFS=, for arg in $args; do IFS=$save_ifs func_append_quoted lastarg "$arg" done IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg=$srcfile srcfile=$arg ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj=$func_basename_result } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test yes = "$build_libtool_libs" \ || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname=$func_basename_result xdir=$func_dirname_result lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test no = "$compiler_c_o"; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext lockfile=$output_obj.lock else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test yes = "$build_old_libs"; then if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix '.c' with the library object suffix, '.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the '--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE use a list of object files found in FILE to specify objects -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with '-') are ignored. Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in '.la', then a libtool library is created, only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created using 'ar' and 'ranlib', or on Windows using 'lib'. If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test : = "$opt_help"; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | $SED '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $debug_cmd # The first argument is the command name. cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "'$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir=$func_dirname_result ;; *) func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file=$progdir/$program fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if $opt_dry_run; then # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd=\$cmd$args fi } test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $debug_cmd libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "'$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument '$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $debug_cmd # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=false stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=: if $isdir; then destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." destdir=$func_dirname_result destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking '$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname=$1 shift srcname=$realname test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme=$stripme case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= ;; esac ;; os2*) case $realname in *_dll.a) tstripme= ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name=$func_basename_result instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest=$destfile destfile= ;; *) func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=.exe fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script '$wrapper'" finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then func_warning "'$lib' has not been installed in '$libdir'" finalize=false fi done relink_command= func_source "$wrapper" outputname= if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file=$func_basename_result outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file=$outputname else func_warning "cannot relink '$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name=$func_basename_result # Set up the ranlib parameters. oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $debug_cmd my_outputname=$1 my_originator=$2 my_pic_p=${3-false} my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* External symbol declarations for the compiler. */\ " if test yes = "$dlself"; then func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" name=$func_basename_result case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi func_show_eval '$RM "${nlist}I"' if test -n "$global_symbol_to_import"; then eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[];\ " if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ static void lt_syminit(void) { LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; for (; symbol->name; ++symbol) {" $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" echo >> "$output_objdir/$my_dlsyms" "\ } }" fi echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = { {\"$my_originator\", (void *) 0}," if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ {\"@INIT@\", (void *) <_syminit}," fi case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $debug_cmd win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || func_cygming_gnu_implib_p "$1" then win32_nmres=import else win32_nmres= fi ;; *) func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s|.*|import| p q } }'` ;; esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $debug_cmd sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $debug_cmd match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive that possess that section. Heuristic: eliminate # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $debug_cmd if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result= fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $debug_cmd f_ex_an_ar_dir=$1; shift f_ex_an_ar_oldlib=$1 if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $debug_cmd my_gentop=$1; shift my_oldlibs=${1+"$@"} my_oldobjs= my_xlib= my_xabs= my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` func_basename "$darwin_archive" darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches; do func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" cd "unfat-$$/$darwin_base_archive-$darwin_arch" func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result=$my_oldobjs } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ #if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC #elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined other platforms ... */ #endif #if defined PATH_MAX # define LT_PATHMAX PATH_MAX #elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free (stale); stale = 0; } \ } while (0) #if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; size_t tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined HAVE_DOS_BASED_FILE_SYSTEM if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined HAVE_DOS_BASED_FILE_SYSTEM } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = (size_t) (q - p); p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (STREQ (str, pat)) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else size_t len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { size_t orig_value_len = strlen (orig_value); size_t add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ size_t len = strlen (new_value); while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $debug_cmd case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_suncc_cstd_abi # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! # Several compiler flags select an ABI that is incompatible with the # Cstd library. Avoid specifying it if any are in CXXFLAGS. func_suncc_cstd_abi () { $debug_cmd case " $compile_command " in *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) suncc_use_cstd_abi=no ;; *) suncc_use_cstd_abi=yes ;; esac } # func_mode_link arg... func_mode_link () { $debug_cmd case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=false prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test yes != "$build_libtool_libs" \ && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg=$1 shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir=$arg prev= continue ;; dlfiles|dlprefiles) $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=: } case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test no = "$dlself"; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test dlprefiles = "$prev"; then dlself=yes elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols=$arg test -f "$arg" \ || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex=$arg prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir=$arg prev= continue ;; mllvm) # Clang does not use LLVM to link, so we can simply discard any # '-mllvm $arg' options when doing the link step. prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object fi # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; os2dllname) os2dllname=$arg prev= continue ;; precious_regex) precious_files_regex=$arg prev= continue ;; release) release=-$arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds=$arg prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg=$arg case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between '-L' and '$1'" else func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of '$dir'" dir=$absdir ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test X-lc = "X$arg" && continue ;; esac elif test X-lc_r = "X$arg"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -mllvm) prev=mllvm continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module=$wl-multi_module continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "'-no-install' is ignored for $host" func_warning "assuming '-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -os2dllname) prev=os2dllname continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization # -stdlib=* select c++ std lib with clang -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; -Z*) if test os2 = "`expr $host : '.*\(os2\)'`"; then # OS/2 uses -Zxxx to specify OS/2-specific options compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case $arg in -Zlinker | -Zstack) prev=xcompiler ;; esac continue else # Otherwise treat like 'Some other compiler flag' below func_quote_for_eval "$arg" arg=$func_quote_for_eval_result fi ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result test none = "$pic_object" || { # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object } # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test dlfiles = "$prev"; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test dlprefiles = "$prev"; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the '$prevarg' option requires an argument" if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname=$func_basename_result libobjs_save=$libobjs if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" # Definition is injected by LT_CONFIG during libtool generation. func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" func_dirname "$output" "/" "" output_objdir=$func_dirname_result$objdir func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test lib = "$linkmode"; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=false newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test lib,link = "$linkmode,$pass"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs=$tmp_deplibs fi if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass"; then libs=$deplibs deplibs= fi if test prog = "$linkmode"; then case $pass in dlopen) libs=$dlfiles ;; dlpreopen) libs=$dlprefiles ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test lib,dlpreopen = "$linkmode,$pass"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs=$dlprefiles fi if test dlopen = "$pass"; then # Collect dlpreopened libraries save_deplibs=$deplibs deplibs= fi for deplib in $libs; do lib= found=false case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test lib != "$linkmode" && test prog != "$linkmode"; then func_warning "'-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test lib = "$linkmode"; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib=$searchdir/lib$name$search_ext if test -f "$lib"; then if test .la = "$search_ext"; then found=: else found=false fi break 2 fi done done if $found; then # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll=$l done if test "X$ll" = "X$old_library"; then # only static version available found=false func_dirname "$lib" "" "." ladir=$func_dirname_result lib=$ladir/$old_library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi else # deplib doesn't seem to be a libtool library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l *.ltframework) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test conv = "$pass" && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi if test scan = "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "'-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test link = "$pass"; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=false case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=: fi ;; pass_all) valid_a_lib=: ;; esac if $valid_a_lib; then echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" else echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." fi ;; esac continue ;; prog) if test link != "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test conv = "$pass"; then deplibs="$deplib $deplibs" elif test prog = "$linkmode"; then if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=: continue ;; esac # case $deplib $found || test -f "$lib" \ || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "'$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir=$func_dirname_result dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass" || { test prog != "$linkmode" && test lib != "$linkmode"; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test conv = "$pass"; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for '$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" elif test prog != "$linkmode" && test lib != "$linkmode"; then func_fatal_error "'$lib' is not a convenience library" fi tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test yes = "$prefer_static_libs" || test built,no = "$prefer_static_libs,$installed"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib=$l done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for '$lib'" fi # This library was specified with -dlopen. if test dlopen = "$pass"; then test -z "$libdir" \ && func_fatal_error "cannot -dlopen a convenience library: '$lib'" if test -z "$dlname" || test yes != "$dlopen_support" || test no = "$build_libtool_libs" then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of '$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir=$ladir fi ;; esac func_basename "$lib" laname=$func_basename_result # Find the relevant object directory and library name. if test yes = "$installed"; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library '$lib' was moved." dir=$ladir absdir=$abs_ladir libdir=$abs_ladir else dir=$lt_sysroot$libdir absdir=$lt_sysroot$libdir fi test yes = "$hardcode_automatic" && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir=$ladir absdir=$abs_ladir # Remove this search path later func_append notinst_path " $abs_ladir" else dir=$ladir/$objdir absdir=$abs_ladir/$objdir # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test dlpreopen = "$pass"; then if test -z "$libdir" && test prog = "$linkmode"; then func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" fi case $host in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test lib = "$linkmode"; then deplibs="$dir/$old_library $deplibs" elif test prog,link = "$linkmode,$pass"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test prog = "$linkmode" && test link != "$pass"; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=false if test no != "$link_all_deplibs" || test -z "$library_names" || test no = "$build_libtool_libs"; then linkalldeplibs=: fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if $linkalldeplibs; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test prog,link = "$linkmode,$pass"; then if test -n "$library_names" && { { test no = "$prefer_static_libs" || test built,yes = "$prefer_static_libs,$installed"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then # Make sure the rpath contains only unique directories. case $temp_rpath: in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if $alldeplibs && { test pass_all = "$deplibs_check_method" || { test yes = "$build_libtool_libs" && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test built = "$use_static_libs" && test yes = "$installed"; then use_static_libs=no fi if test -n "$library_names" && { test no = "$use_static_libs" || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc* | *os2*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test no = "$installed"; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule= for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule=$dlpremoduletest break fi done if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then echo if test prog = "$linkmode"; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test lib = "$linkmode" && test yes = "$hardcode_into_libs"; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname=$1 shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname=$dlname elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc* | *os2*) func_arith $current - $age major=$func_arith_result versuffix=-$major ;; esac eval soname=\"$soname_spec\" else soname=$realname fi # Make a new name for the extract_expsyms_cmds to use soroot=$soname func_basename "$soroot" soname=$func_basename_result func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from '$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for '$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test prog = "$linkmode" || test relink != "$opt_mode"; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test no = "$hardcode_direct"; then add=$dir/$linklib case $host in *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; *-*-sysv4*uw2*) add_dir=-L$dir ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir=-L$dir ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we cannot # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library"; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add=$dir/$old_library fi elif test -n "$old_library"; then add=$dir/$old_library fi fi esac elif test no = "$hardcode_minus_L"; then case $host in *-*-sunos*) add_shlibpath=$dir ;; esac add_dir=-L$dir add=-l$name elif test no = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; relink) if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$dir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$absdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name elif test yes = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; *) lib_linked=no ;; esac if test yes != "$lib_linked"; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test prog = "$linkmode"; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test yes != "$hardcode_direct" && test yes != "$hardcode_minus_L" && test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test prog = "$linkmode" || test relink = "$opt_mode"; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$libdir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$libdir add=-l$name elif test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add=-l$name elif test yes = "$hardcode_automatic"; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib"; then add=$inst_prefix_dir$libdir/$linklib else add=$libdir/$linklib fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir=-L$libdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name fi if test prog = "$linkmode"; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test prog = "$linkmode"; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test unsupported != "$hardcode_direct"; then test -n "$old_library" && linklib=$old_library compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test yes = "$build_libtool_libs"; then # Not a shared library if test pass_all != "$deplibs_check_method"; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system cannot link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test yes = "$module"; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test lib = "$linkmode"; then if test -n "$dependency_libs" && { test yes != "$hardcode_into_libs" || test yes = "$build_old_libs" || test yes = "$link_static"; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs=$temp_deplibs fi func_append newlib_search_path " $absdir" # Link against this library test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test no != "$link_all_deplibs"; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path=$deplib ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of '$dir'" absdir=$dir fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names"; then for tmp in $deplibrary_names; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl"; then depdepl=$absdir/$objdir/$depdepl darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" path= fi fi ;; *) path=-L$absdir/$objdir ;; esac else eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "'$deplib' seems to be moved" path=-L$absdir fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test link = "$pass"; then if test prog = "$linkmode"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs=$newdependency_libs if test dlpreopen = "$pass"; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test dlopen != "$pass"; then test conv = "$pass" || { # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= } if test prog,link = "$linkmode,$pass"; then vars="compile_deplibs finalize_deplibs" else vars=deplibs fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Add Sun CC postdeps if required: test CXX = "$tagname" && { case $host_os in linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; solaris*) func_cc_basename "$CC" case $func_cc_basename_result in CC* | sunCC*) func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; esac } # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i= ;; esac if test -n "$i"; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test prog = "$linkmode"; then dlfiles=$newdlfiles fi if test prog = "$linkmode" || test lib = "$linkmode"; then dlprefiles=$newdlprefiles fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "'-R' is ignored for archives" test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "'-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "'-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs=$output func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form 'libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test no = "$module" \ && func_fatal_help "libtool library '$output' must begin with 'lib'" if test no != "$need_lib_prefix"; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test pass_all != "$deplibs_check_method"; then func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test no = "$dlself" \ || func_warning "'-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test 1 -lt "$#" \ && func_warning "ignoring multiple '-rpath's for a libtool library" install_libdir=$1 oldlibs= if test -z "$rpath"; then if test yes = "$build_libtool_libs"; then # Building a libtool convenience library. # Some compilers have problems with a '.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "'-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs=$IFS; IFS=: set dummy $vinfo 0 0 0 shift IFS=$save_ifs test -n "$7" && \ func_fatal_help "too many parameters to '-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major=$1 number_minor=$2 number_revision=$3 # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # that has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|freebsd-elf|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_revision ;; freebsd-aout|qnx|sunos) current=$number_major revision=$number_minor age=0 ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_minor lt_irix_increment=no ;; esac ;; no) current=$1 revision=$2 age=$3 ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT '$current' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION '$revision' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE '$age' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE '$age' is greater than the current interface number '$current'" func_fatal_error "'$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" # On Darwin other compilers case $CC in nagfor*) verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" ;; *) verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; esac ;; freebsd-aout) major=.$current versuffix=.$current.$revision ;; freebsd-elf) func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; irix | nonstopux) if test no = "$lt_irix_increment"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring=$verstring_prefix$major.$revision # Add in all the interfaces that we are compatible with. loop=$revision while test 0 -ne "$loop"; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring_prefix$major.$iface:$verstring done # Before this point, $major must not contain '.'. major=.$major versuffix=$major.$revision ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=.$current.$age.$revision verstring=$current.$age.$revision # Add in all the interfaces that we are compatible with. loop=$age while test 0 -ne "$loop"; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring:$iface.0 done # Make executables depend on our current version. func_append verstring ":$current.0" ;; qnx) major=.$current versuffix=.$current ;; sco) major=.$current versuffix=.$current ;; sunos) major=.$current versuffix=.$current.$revision ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 file systems. func_arith $current - $age major=$func_arith_result versuffix=-$major ;; *) func_fatal_configuration "unknown library version type '$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring=0.0 ;; esac if test no = "$need_version"; then versuffix= else versuffix=.0.0 fi fi # Remove version info from name if versioning should be avoided if test yes,no = "$avoid_version,$need_version"; then major= versuffix= verstring= fi # Check to see if the archive will have undefined symbols. if test yes = "$allow_undefined"; then if test unsupported = "$allow_undefined_flag"; then if test yes = "$build_old_libs"; then func_warning "undefined symbols not allowed in $host shared libraries; building static only" build_libtool_libs=no else func_fatal_error "can't build $host shared library unless -no-undefined is specified" fi fi else # Don't allow undefined symbols. allow_undefined_flag=$no_undefined_flag fi fi func_generate_dlsyms "$libname" "$libname" : func_append libobjs " $symfileobj" test " " = "$libobjs" && libobjs= if test relink != "$opt_mode"; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) if test -n "$precious_files_regex"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles=$dlfiles dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles=$dlprefiles dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test yes = "$build_libtool_libs"; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test yes = "$build_libtool_need_lc"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release= versuffix= major= newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib=$potent_lib while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | $SED 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib= ;; esac fi if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib=$potent_lib # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs= tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test yes = "$allow_libtool_libs_with_static_runtimes"; then for i in $predeps $postdeps; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test none = "$deplibs_check_method"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test yes = "$droppeddeps"; then if test yes = "$module"; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test no = "$allow_undefined"; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs=$new_libs # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test yes = "$build_libtool_libs"; then # Remove $wl instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test yes = "$hardcode_into_libs"; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath=$finalize_rpath test relink = "$opt_mode" || rpath=$compile_rpath$rpath for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath=$finalize_shlibpath test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname=$1 shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname=$realname fi if test -z "$dlname"; then dlname=$soname fi lib=$output_objdir/$realname linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols=$output_objdir/$libname.uexp func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile func_dll_def_p "$export_symbols" || { # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols=$export_symbols export_symbols= always_export_symbols=yes } fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs=$IFS; IFS='~' for cmd1 in $cmds; do IFS=$save_ifs # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test yes = "$try_normal_branch" \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=$output_objdir/$output_la.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS=$save_ifs if test -n "$export_symbols_regex" && test : != "$skipped_export"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test : != "$skipped_export" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs=$tmp_deplibs if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test yes = "$compiler_needs_object" && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test : != "$skipped_export" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then output=$output_objdir/$output_la.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then output=$output_objdir/$output_la.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test yes = "$compiler_needs_object"; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-$k.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test -z "$objlist" || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test 1 -eq "$k"; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-$k.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-$k.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi ${skipped_export-false} && { func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi } test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs=$IFS; IFS='~' for cmd in $concat_cmds; do IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi ${skipped_export-false} && { if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi } libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs=$IFS; IFS='~' for cmd in $cmds; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs # Restore the uninstalled library and exit if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test yes = "$module" || test yes = "$export_dynamic"; then # On all known operating systems, these are identical. dlname=$soname fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "'-R' is ignored for objects" test -n "$vinfo" && \ func_warning "'-version-info' is ignored for objects" test -n "$release" && \ func_warning "'-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object '$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj=$output ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # if reload_cmds runs $LD directly, get rid of -Wl from # whole_archive_flag_spec and hope we can get by with turning comma # into space. case $reload_cmds in *\$LD[\ \$]*) wl= ;; esac if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags else gentop=$output_objdir/${obj}x func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test yes = "$build_libtool_libs" || libobjs=$non_pic_objects # Create the old-style object. reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs output=$obj func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi test yes = "$build_libtool_libs" || { if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS } if test -n "$pic_flag" || test default != "$pic_mode"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output=$libobj func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "'-version-info' is ignored for programs" test -n "$release" && \ func_warning "'-release' is ignored for programs" $preload \ && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test CXX = "$tagname"; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " $wl-bind_at_load" func_append finalize_command " $wl-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs=$new_libs func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath=$rpath rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath=$rpath if test -n "$libobjs" && test yes = "$build_old_libs"; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" false # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=: case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=false ;; *cygwin* | *mingw* ) test yes = "$build_libtool_libs" || wrappers_required=false ;; *) if test no = "$need_relink" || test yes != "$build_libtool_libs"; then wrappers_required=false fi ;; esac $wrappers_required || { # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command=$compile_command$compile_rpath # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.$objext"; then func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' fi exit $exit_status } if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test yes = "$no_install"; then # We don't need to create a wrapper script. link_command=$compile_var$compile_command$compile_rpath # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi case $hardcode_action,$fast_install in relink,*) # Fast installation is not supported link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath func_warning "this platform does not like uninstalled shared libraries" func_warning "'$output' will be relinked during installation" ;; *,yes) link_command=$finalize_var$compile_command$finalize_rpath relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` ;; *,no) link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath ;; *,needless) link_command=$finalize_var$compile_command$finalize_rpath relink_command= ;; esac # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource=$output_path/$objdir/lt-$output_name.c cwrapper=$output_path/$output_name.exe $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host"; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do case $build_libtool_libs in convenience) oldobjs="$libobjs_save $symfileobj" addlibs=$convenience build_libtool_libs=no ;; module) oldobjs=$libobjs_save addlibs=$old_convenience build_libtool_libs=no ;; *) oldobjs="$old_deplibs $non_pic_objects" $preload && test -f "$symfileobj" \ && func_append oldobjs " $symfileobj" addlibs=$old_convenience ;; esac if test -n "$addlibs"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase=$func_basename_result case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj"; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test -z "$oldobjs"; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test yes = "$build_old_libs" && old_library=$libname.$libext func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test yes = "$hardcode_automatic"; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test yes = "$installed"; then if test -z "$install_libdir"; then break fi output=$output_objdir/${outputname}i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name=$func_basename_result func_resolve_sysroot "$deplib" eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs=$newdependency_libs newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles=$newdlprefiles else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles=$newdlprefiles fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test -n "$bindir"; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result/$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that cannot go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test no,yes = "$installed,$need_relink"; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } if test link = "$opt_mode" || test relink = "$opt_mode"; then func_mode_link ${1+"$@"} fi # func_mode_uninstall arg... func_mode_uninstall () { $debug_cmd RM=$nonopt files= rmforce=false exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic for arg do case $arg in -f) func_append RM " $arg"; rmforce=: ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir=$func_dirname_result if test . = "$dir"; then odir=$objdir else odir=$dir/$objdir fi func_basename "$file" name=$func_basename_result test uninstall = "$opt_mode" && odir=$dir # Remember odir for removal later, being careful to avoid duplicates if test clean = "$opt_mode"; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif $rmforce; then continue fi rmfiles=$file case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case $opt_mode in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test none != "$pic_object"; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test none != "$non_pic_object"; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test clean = "$opt_mode"; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.$objext" if test yes = "$fast_install" && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name"; then func_append rmfiles " $odir/lt-$noexename.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the $objdir's in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then func_mode_uninstall ${1+"$@"} fi test -z "$opt_mode" && { help=$generic_help func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode '$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # where we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD="/Library/Developer/CommandLineTools/usr/bin/ld" # How to create reloadable object files. reload_flag=" -r" reload_cmds="\$LTCC \$LTCFLAGS -nostdlib \$wl-r -o \$output\$reload_objs" # Commands used to build an old-style archive. old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib" # A language specific compiler. CC="g++" # Is the compiler the GNU compiler? with_gcc=yes # Compiler flag to turn off builtin functions. no_builtin_flag=" -fno-builtin" # Additional compiler flags for building library objects. pic_flag=" -fno-common -DPIC" # How to pass a linker flag through the compiler. wl="-Wl," # Compiler flag to prevent dynamic linking. link_static_flag="" # Does compiler simultaneously support -c and -o options? compiler_c_o="yes" # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=no # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=no # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec="" # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec="\`for conv in \$convenience\\\"\\\"; do test -n \\\"\$conv\\\" && new_convenience=\\\"\$new_convenience \$wl-force_load,\$conv\\\"; done; func_echo_all \\\"\$new_convenience\\\"\`" # Whether the compiler copes with passing no objects directly. compiler_needs_object="no" # Create an old-style archive from a shared archive. old_archive_from_new_cmds="" # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds="" # Commands used to build a shared archive. archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring \$single_module" archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring \$single_module \$wl-exported_symbols_list,\$output_objdir/\$libname-symbols.expsym" # Commands used to build a loadable module if different from building # a shared archive. module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags" module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags \$wl-exported_symbols_list,\$output_objdir/\$libname-symbols.expsym" # Whether we are building with GNU ld or not. with_gnu_ld="no" # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag="\$wl-undefined \${wl}dynamic_lookup" # Flag that enforces no undefined symbols. no_undefined_flag="" # Flag to hardcode $libdir into a binary during linking. # This must work even if $libdir does not exist hardcode_libdir_flag_spec="" # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator="" # Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=no # Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting $shlibpath_var if the # library is relocated. hardcode_direct_absolute=no # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=no # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=unsupported # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=yes # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=no # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=yes # Set to "yes" if exported symbols are required. always_export_symbols=no # The commands to list exported symbols. export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" # Symbols that should not be listed in the preloaded symbols. exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*" # Symbols that must always be exported. include_expsyms="" # Commands necessary for linking programs (against libraries) with templates. prelink_cmds="" # Commands necessary for finishing linking programs. postlink_cmds="" # Specify filename containing input files. file_list_spec="" # How to hardcode a shared library path into an executable. hardcode_action=immediate # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs="" # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects="" postdep_objects="" predeps="" postdeps="" # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path="" # ### END LIBTOOL TAG CONFIG: CXX mysql++-3.3.0/osver000755 000765 000024 00000000524 14042362131 014674 0ustar00tangentstaff000000 000000 #!/bin/sh if grep Red /etc/issue > /dev/null 2>&1 then echo -n rh grep Red /etc/issue |cut -f5 -d' ' elif grep Fedora /etc/issue > /dev/null 2>&1 then echo -n fc grep Fedora /etc/issue |cut -f4 -d' ' elif grep CentOS /etc/issue > /dev/null 2>&1 then echo -n el grep CentOS /etc/issue |cut -f3 -d' ' |cut -f1 -d. else echo UNKNOWN fi mysql++-3.3.0/README-Linux.txt000644 000765 000024 00000007132 14042362131 016405 0ustar00tangentstaff000000 000000 Linux is basically Unix, so README-Unix.txt covers the generic bits. I'll just cover a few of the issues specific to Linux here. Prerequisite: Install the MySQL Development Files ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MySQL++ is built on top of the MySQL C API library, so it needs the C API development files to build against. Most distributions of the MySQL server for Linux don't come with these development files; they're packaged separately. This is because you don't actually need the server on your development machine, though it's often more convenient to use a local server than a remote one, for testing. There are about as many different ways to get the C API development files on your system as there are major Linux distributions. More actually, because you also have the option of the official MySQL binaries from mysql.com: http://dev.mysql.com/downloads/mysql/5.0.html#linux For RPM-based distributions, MySQL comes in several different packages. You need at least the -devel and the -shared packages to build MySQL++. The other binary distributions seem to come in just a single file, presumably with everything included. You can also build from source, in which case you will also get the entire kit and kaboodle. MySQL frequently comes with Linux distributions as well. If your distribution doesn't come with at least MySQL v4.1, I recommend using the official MySQL.com packages instead. MySQL++ can be made to run with 4.0 and older, but it takes some work. On Red Hat type systems with yum, say: # yum install mysql-devel If you want to use rpm directly, you need that package and probably the base mysql package as well. On Debian/Ubuntu type systems, say: $ sudo apt-get install libmysqlclient15-dev The version number is the ABI version of the MySQL C API library. ABI version 15 corresponds to MySQL version 5.0, the recommended stable version as of this writing. Dealing with the Dynamic Linker, ld.so ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ld.so is a system-level program on Linux which is used to run any program that uses shared libraries (lib*.so). Its job is to find the libraries and link them to the base executable so it will run. Because ld.so only looks in a few places for libraries on most systems, a common problem is a program that builds without error but won't run, complaining about libmysqlpp.SOMETHING. There are a number of ways to deal with this. First, you could just configure MySQL++ to install under /usr instead of /usr/local, like system-provided packages: $ ./configure --prefix=/usr This isn't recommended practice when building packages from source, but it does work. Second, you can add the MySQL++ library directory to the LD_LIBRARY_PATH environment variable. This works like the shell's PATH variable: a colon-separated list of directories to search. This is best when the installation directory is something totally uncommon, or you don't have root permissions on the box so you can't do the next option. Finally, the most robust way to tell ld.so about a nonstandard library directory is to put it in /etc/ld.so.conf or in one of the files included from there. Then, run ldconfig as root to rebuild the cache file ld.so uses to find libraries in these nonstandard directories. Running ldconfig isn't necessary for the previous two methods. mysql++-3.3.0/configure~000755 000765 000024 00002532551 14042362131 015731 0ustar00tangentstaff000000 000000 #! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for mysql++ 3.3.0. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="as_nop=: if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else $as_nop as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and $0: plusplus@lists.mysql.com about your system, including $0: any error possibly output before this message. Then $0: install a modern shell, or manually run the script $0: under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='mysql++' PACKAGE_TARNAME='mysql++' PACKAGE_VERSION='3.3.0' PACKAGE_STRING='mysql++ 3.3.0' PACKAGE_BUGREPORT='plusplus@lists.mysql.com' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_c_list= ac_subst_vars='LTLIBOBJS LIBOBJS COND_WINDOWS_IMPLIB_1 COND_USE_SOVERSOLARIS_1 COND_USE_SOVERSION_1_USE_SOVERSOLARIS_1 COND_USE_SOVERSION_0 COND_USE_SOVERLINUX_1 COND_USE_SOVERCYGWIN_1_USE_SOVERSION_1 COND_USE_SOTWOSYMLINKS_1 COND_PLATFORM_OS2_1 COND_PLATFORM_MACOSX_1_USE_SOVERSION_1 COND_PLATFORM_MACOSX_1 COND_PLATFORM_MACOSX_0_USE_SOVERSION_1 COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1 COND_DEPS_TRACKING_1 COND_DEPS_TRACKING_0 COND_BUILD_release COND_BUILD_debug OBJCXXFLAGS WINDRES BK_DEPS DEPS_TRACKING SONAME_FLAG USE_SOTWOSYMLINKS USE_MACVERSION USE_SOVERCYGWIN USE_SOVERSOLARIS USE_SOVERLINUX USE_SOVERSION WINDOWS_IMPLIB PIC_FLAG SHARED_LD_MODULE_CXX SHARED_LD_MODULE_CC SHARED_LD_CXX SHARED_LD_CC AIX_CXX_LD dlldir DLLPREFIX_MODULE DLLPREFIX LIBEXT LIBPREFIX DLLIMP_SUFFIX SO_SUFFIX_MODULE SO_SUFFIX PLATFORM_BEOS PLATFORM_MACOSX PLATFORM_MACOS PLATFORM_MAC PLATFORM_WIN32 PLATFORM_UNIX IF_GNU_MAKE LDFLAGS_GUI INSTALL_DIR AROPTIONS MAKE_SET SET_MAKE INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM HAVE_CXX11 CXXCPP ac_ct_CXX CXXFLAGS CXX MYSQL_C_LIB_NAME MYSQL_C_LIB_DIR MYSQL_C_INC_DIR MYSQLPP_EXTRA_LIBS PTHREAD_CFLAGS PTHREAD_LIBS PTHREAD_CC acx_pthread_config MYSQLPP_VERSION_BUGFIX MYSQLPP_VERSION_MINOR MYSQLPP_VERSION_MAJOR LIBTOOL_DEPS LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL AWK RANLIB STRIP ac_ct_AR AR DLLTOOL OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC LIBTOOL target_os target_vendor target_cpu target host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_shared enable_static with_pic enable_fast_install with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock enable_thread_check with_field_limit with_mysql with_mysql_lib with_mysql_include enable_dependency_tracking ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS LT_SYS_LIBRARY_PATH CXX CXXFLAGS CCC CXXCPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures mysql++ 3.3.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/mysql++] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of mysql++ 3.3.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-thread-check Check for threads, and use if available. --disable-dependency-tracking don't use dependency tracking even if the compiler can Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-field-limit= set max template query and SSQLS field count --with-mysql= root directory path of MySQL/MariaDB installation --with-mysql-lib= directory path of MySQL/MariaDB library installation --with-mysql-include= directory path of MySQL/MariaDB header installation Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory LT_SYS_LIBRARY_PATH User-defined run-time library search path. CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF mysql++ configure 3.3.0 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. */ #include #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main (void) { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_try_run LINENO # ---------------------- # Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that # executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: program exited with status $ac_status" >&5 printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by mysql++ $as_me 3.3.0, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ #if !defined __STDC__ # error "Compiler does not advertise C89 conformance" #endif #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not \xHH hex character constants. These do not provoke an error unfortunately, instead are silently treated as an "x". The following induces an error, until -std is added to get proper ANSI mode. Curiously \x00 != x always comes out true, for an array size at least. It is necessary to write \x00 == 0 to get something that is true only with -std. */ int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) '\''x'\'' int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' // Does the compiler advertise C99 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[0] = argv[0][0]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || dynamic_array[ni.number - 1] != 543); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' // Does the compiler advertise C11 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" # Test code for whether the C++ compiler supports C++98 (global declarations) ac_cxx_conftest_cxx98_globals=' // Does the compiler advertise C++98 conformance? #if !defined __cplusplus || __cplusplus < 199711L # error "Compiler does not advertise C++98 conformance" #endif // These inclusions are to reject old compilers that // lack the unsuffixed header files. #include #include // and are *not* freestanding headers in C++98. extern void assert (int); namespace std { extern int strcmp (const char *, const char *); } // Namespaces, exceptions, and templates were all added after "C++ 2.0". using std::exception; using std::strcmp; namespace { void test_exception_syntax() { try { throw "test"; } catch (const char *s) { // Extra parentheses suppress a warning when building autoconf itself, // due to lint rules shared with more typical C programs. assert (!(strcmp) (s, "test")); } } template struct test_template { T const val; explicit test_template(T t) : val(t) {} template T add(U u) { return static_cast(u) + val; } }; } // anonymous namespace ' # Test code for whether the C++ compiler supports C++98 (body of main) ac_cxx_conftest_cxx98_main=' assert (argc); assert (! argv[0]); { test_exception_syntax (); test_template tt (2.0); assert (tt.add (4) == 6.0); assert (true && !false); } ' # Test code for whether the C++ compiler supports C++11 (global declarations) ac_cxx_conftest_cxx11_globals=' // Does the compiler advertise C++ 2011 conformance? #if !defined __cplusplus || __cplusplus < 201103L # error "Compiler does not advertise C++11 conformance" #endif namespace cxx11test { constexpr int get_val() { return 20; } struct testinit { int i; double d; }; class delegate { public: delegate(int n) : n(n) {} delegate(): delegate(2354) {} virtual int getval() { return this->n; }; protected: int n; }; class overridden : public delegate { public: overridden(int n): delegate(n) {} virtual int getval() override final { return this->n * 2; } }; class nocopy { public: nocopy(int i): i(i) {} nocopy() = default; nocopy(const nocopy&) = delete; nocopy & operator=(const nocopy&) = delete; private: int i; }; // for testing lambda expressions template Ret eval(Fn f, Ret v) { return f(v); } // for testing variadic templates and trailing return types template auto sum(V first) -> V { return first; } template auto sum(V first, Args... rest) -> V { return first + sum(rest...); } } ' # Test code for whether the C++ compiler supports C++11 (body of main) ac_cxx_conftest_cxx11_main=' { // Test auto and decltype auto a1 = 6538; auto a2 = 48573953.4; auto a3 = "String literal"; int total = 0; for (auto i = a3; *i; ++i) { total += *i; } decltype(a2) a4 = 34895.034; } { // Test constexpr short sa[cxx11test::get_val()] = { 0 }; } { // Test initializer lists cxx11test::testinit il = { 4323, 435234.23544 }; } { // Test range-based for int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; for (auto &x : array) { x += 23; } } { // Test lambda expressions using cxx11test::eval; assert (eval ([](int x) { return x*2; }, 21) == 42); double d = 2.0; assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); assert (d == 5.0); assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); assert (d == 5.0); } { // Test use of variadic templates using cxx11test::sum; auto a = sum(1); auto b = sum(1, 2); auto c = sum(1.0, 2.0, 3.0); } { // Test constructor delegation cxx11test::delegate d1; cxx11test::delegate d2(); cxx11test::delegate d3(45); } { // Test override and final cxx11test::overridden o1(55464); } { // Test nullptr char *c = nullptr; } { // Test template brackets test_template<::test_template> v(test_template(12)); } { // Unicode literals char const *utf8 = u8"UTF-8 string \u2500"; char16_t const *utf16 = u"UTF-8 string \u2500"; char32_t const *utf32 = U"UTF-32 string \u2500"; } ' # Test code for whether the C compiler supports C++11 (complete). ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} ${ac_cxx_conftest_cxx11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} ${ac_cxx_conftest_cxx11_main} return ok; } " # Test code for whether the C compiler supports C++98 (complete). ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} return ok; } " # Auxiliary files required by this configure script. ac_aux_files="install-sh ltmain.sh config.guess config.sub" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" # Make sure we can run config.sub. $SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : printf %s "(cached) " >&6 else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : printf %s "(cached) " >&6 else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 printf %s "checking target system type... " >&6; } if test ${ac_cv_target+y} then : printf %s "(cached) " >&6 else $as_nop if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "${ac_aux_dir}config.sub" $target_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $target_alias failed" "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 printf "%s\n" "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' set x $ac_cv_target shift target_cpu=$1 target_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: target_os=$* IFS=$ac_save_IFS case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- # Enable libtool to decide shared library compile flags (ie -fPIC) case `pwd` in *\ * | *\ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.6' macro_revision='2.4.6' ltmain=$ac_aux_dir/ltmain.sh # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 printf %s "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 printf "%s\n" "printf" >&6; } ;; print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 printf "%s\n" "print -r" >&6; } ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 printf "%s\n" "cat" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else $as_nop ac_file='' fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 printf %s "checking for a sed that does not truncate output... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in sed gsed do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 printf %s "checking for grep that handles long lines and -e... " >&6; } if test ${ac_cv_path_GREP+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in grep ggrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 printf "%s\n" "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 printf %s "checking for egrep... " >&6; } if test ${ac_cv_path_EGREP+y} then : printf %s "(cached) " >&6 else $as_nop if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in egrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 printf %s "checking for fgrep... " >&6; } if test ${ac_cv_path_FGREP+y} then : printf %s "(cached) " >&6 else $as_nop if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in fgrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 printf "%s\n" "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else $as_nop with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test ${lt_cv_path_LD+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${lt_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if test ${lt_cv_path_NM+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 printf "%s\n" "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DUMPBIN+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 printf "%s\n" "$DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DUMPBIN+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 printf "%s\n" "$ac_ct_DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 printf %s "checking the name lister ($NM) interface... " >&6; } if test ${lt_cv_nm_interface+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 printf "%s\n" "$lt_cv_nm_interface" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 printf "%s\n" "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 printf %s "checking the maximum length of command line arguments... " >&6; } if test ${lt_cv_sys_max_cmd_len+y} then : printf %s "(cached) " >&6 else $as_nop i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n "$lt_cv_sys_max_cmd_len"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 printf "%s\n" "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 printf %s "checking how to convert $build file names to $host format... " >&6; } if test ${lt_cv_to_host_file_cmd+y} then : printf %s "(cached) " >&6 else $as_nop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 printf %s "checking how to convert $build file names to toolchain format... " >&6; } if test ${lt_cv_to_tool_file_cmd+y} then : printf %s "(cached) " >&6 else $as_nop #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 printf %s "checking for $LD option to reload object files... " >&6; } if test ${lt_cv_ld_reload_flag+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ld_reload_flag='-r' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OBJDUMP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 printf "%s\n" "$OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OBJDUMP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 printf "%s\n" "$ac_ct_OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 printf %s "checking how to recognize dependent libraries... " >&6; } if test ${lt_cv_deplibs_check_method+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DLLTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 printf "%s\n" "$DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DLLTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 printf "%s\n" "$ac_ct_DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 printf %s "checking how to associate runtime and link libraries... " >&6; } if test ${lt_cv_sharedlib_from_linklib_cmd+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 printf "%s\n" "$AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 printf "%s\n" "$ac_ct_AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 printf %s "checking for archiver @FILE support... " >&6; } if test ${lt_cv_ar_at_file+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 printf "%s\n" "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 printf "%s\n" "$RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 printf "%s\n" "$ac_ct_RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 printf %s "checking command to parse $NM output from $compiler object... " >&6; } if test ${lt_cv_sys_global_symbol_pipe+y} then : printf %s "(cached) " >&6 else $as_nop # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 printf "%s\n" "failed" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 printf "%s\n" "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 printf %s "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test ${with_sysroot+y} then : withval=$with_sysroot; else $as_nop with_sysroot=no fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 printf "%s\n" "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 printf "%s\n" "${lt_sysroot:-no}" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 printf %s "checking for a working dd... " >&6; } if test ${ac_cv_path_lt_DD+y} then : printf %s "(cached) " >&6 else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in dd do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 printf "%s\n" "$ac_cv_path_lt_DD" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 printf %s "checking how to truncate binary pipes... " >&6; } if test ${lt_cv_truncate_bin+y} then : printf %s "(cached) " >&6 else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 printf "%s\n" "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # Check whether --enable-libtool-lock was given. if test ${enable_libtool_lock+y} then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 printf %s "checking whether the C compiler needs -belf... " >&6; } if test ${lt_cv_cc_needs_belf+y} then : printf %s "(cached) " >&6 else $as_nop ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_cc_needs_belf=yes else $as_nop lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 printf "%s\n" "$MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if test ${lt_cv_path_mainfest_tool+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DSYMUTIL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 printf "%s\n" "$DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_NMEDIT+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 printf "%s\n" "$NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_NMEDIT+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 printf "%s\n" "$ac_ct_NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_LIPO+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 printf "%s\n" "$LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_LIPO+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 printf "%s\n" "$ac_ct_LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 printf "%s\n" "$OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 printf "%s\n" "$ac_ct_OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL64+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 printf "%s\n" "$OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL64+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 printf "%s\n" "$ac_ct_OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 printf %s "checking for -single_module linker flag... " >&6; } if test ${lt_cv_apple_cc_single_mod+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 printf %s "checking for -exported_symbols_list linker flag... " >&6; } if test ${lt_cv_ld_exported_symbols_list+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_ld_exported_symbols_list=yes else $as_nop lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 printf %s "checking for -force_load linker flag... " >&6; } if test ${lt_cv_ld_force_load+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 printf "%s\n" "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[012][,.]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } ac_header= ac_cache= for ac_item in $ac_header_c_list do if test $ac_cache; then ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then printf "%s\n" "#define $ac_item 1" >> confdefs.h fi ac_header= ac_cache= elif test $ac_header; then ac_cache=$ac_item else ac_header=$ac_item fi done if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes then : printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes then : printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h fi # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test ${enable_shared+y} then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop enable_shared=yes fi # Check whether --enable-static was given. if test ${enable_static+y} then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop enable_static=yes fi # Check whether --with-pic was given. if test ${with_pic+y} then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop pic_mode=default fi # Check whether --enable-fast-install was given. if test ${enable_fast_install+y} then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop enable_fast_install=yes fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 printf %s "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. if test ${with_aix_soname+y} then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else $as_nop if test ${lt_cv_with_aix_soname+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 printf "%s\n" "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 printf %s "checking for objdir... " >&6; } if test ${lt_cv_objdir+y} then : printf %s "(cached) " >&6 else $as_nop rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 printf "%s\n" "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o func_cc_basename $compiler cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 printf %s "checking for ${ac_tool_prefix}file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else $as_nop case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/${ac_tool_prefix}file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 printf %s "checking for file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else $as_nop case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test ${lt_cv_prog_compiler_rtti_exceptions+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test ${lt_cv_prog_compiler_pic_works+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 printf %s "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 printf "%s\n" "$hard_links" >&6; } if test no = "$hard_links"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' $wl-bernotok' allow_undefined_flag=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 printf %s "checking if $CC understands -b... " >&6; } if test ${lt_cv_prog_compiler__b+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if test ${lt_cv_irix_exported_symbol+y} then : printf %s "(cached) " >&6 else $as_nop save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_irix_exported_symbol=yes else $as_nop lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' else archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='$wl-z,text' allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 printf "%s\n" "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 printf %s "checking whether -lc should be explicitly linked in... " >&6; } if test ${lt_cv_archive_cmds_need_lc+y} then : printf %s "(cached) " >&6 else $as_nop $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 printf %s "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if test ${lt_cv_shlibpath_overrides_runpath+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 printf "%s\n" "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 printf "%s\n" "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dlopen (); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else $as_nop ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else $as_nop lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes then : lt_cv_dlopen=shl_load else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 printf %s "checking for shl_load in -ldld... " >&6; } if test ${ac_cv_lib_dld_shl_load+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char shl_load (); int main (void) { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_shl_load=yes else $as_nop ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else $as_nop ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes then : lt_cv_dlopen=dlopen else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dlopen (); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else $as_nop ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 printf %s "checking for dlopen in -lsvld... " >&6; } if test ${ac_cv_lib_svld_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dlopen (); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_svld_dlopen=yes else $as_nop ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 printf %s "checking for dld_link in -ldld... " >&6; } if test ${ac_cv_lib_dld_dld_link+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dld_link (); int main (void) { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_dld_link=yes else $as_nop ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi fi fi fi fi fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 printf %s "checking whether a program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self+y} then : printf %s "(cached) " >&6 else $as_nop if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 printf "%s\n" "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 printf %s "checking whether a statically linked program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self_static+y} then : printf %s "(cached) " >&6 else $as_nop if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 printf %s "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac fi # Report what library types will actually be built { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 printf %s "checking if libtool supports shared libraries... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 printf "%s\n" "$can_build_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 printf %s "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 printf "%s\n" "$enable_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 printf %s "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 printf "%s\n" "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC ac_config_commands="$ac_config_commands libtool" # Only expand once: # Break package version up into major, minor and bugfix components. MYSQLPP_VERSION_MAJOR=`echo $PACKAGE_VERSION | cut -f1 -d.` MYSQLPP_VERSION_MINOR=`echo $PACKAGE_VERSION | cut -f2 -d.` MYSQLPP_VERSION_BUGFIX=`echo $PACKAGE_VERSION | cut -f3 -d.` # Check for Standard C support ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Autoupdate added the next two lines to ensure that your configure # script's behavior did not change. They are probably safe to remove. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 printf %s "checking for egrep... " >&6; } if test ${ac_cv_path_EGREP+y} then : printf %s "(cached) " >&6 else $as_nop if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in egrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" # Figure out whether/how to handle threading support, if available. # Check whether --enable-thread-check was given. if test ${enable_thread_check+y} then : enableval=$enable_thread_check; thread_check=yes fi if test "x$thread_check" = "xyes" then ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu acx_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 printf %s "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char pthread_join (); int main (void) { return pthread_join (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : acx_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 printf "%s\n" "$acx_pthread_ok" >&6; } if test x"$acx_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all, and "pthread-config" # which is a program returning the flags for the Pth emulation library. acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # ... -mt is also the pthreads flag for HP/aCC # pthread: Linux, etcetera # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) case "${host_cpu}-${host_os}" in *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthreads/-mt/ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags" ;; esac if test x"$acx_pthread_ok" = xno; then for flag in $acx_pthread_flags; do case $flag in none) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 printf %s "checking whether pthreads work without any flags... " >&6; } ;; -*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5 printf %s "checking whether pthreads work with $flag... " >&6; } PTHREAD_CFLAGS="$flag" ;; pthread-config) # Extract the first word of "pthread-config", so it can be a program name with args. set dummy pthread-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_acx_pthread_config+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$acx_pthread_config"; then ac_cv_prog_acx_pthread_config="$acx_pthread_config" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_acx_pthread_config="yes" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_acx_pthread_config" && ac_cv_prog_acx_pthread_config="no" fi fi acx_pthread_config=$ac_cv_prog_acx_pthread_config if test -n "$acx_pthread_config"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_config" >&5 printf "%s\n" "$acx_pthread_config" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test x"$acx_pthread_config" = xno; then continue; fi PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5 printf %s "checking for the pthreads library -l$flag... " >&6; } PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : acx_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 printf "%s\n" "$acx_pthread_ok" >&6; } if test "x$acx_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$acx_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 printf %s "checking for joinable pthread attribute... " >&6; } attr_name=unknown for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { int attr=$attr; return attr; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : attr_name=$attr; break fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5 printf "%s\n" "$attr_name" >&6; } if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then printf "%s\n" "#define PTHREAD_CREATE_JOINABLE $attr_name" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 printf %s "checking if more special flags are required for pthreads... " >&6; } flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5 printf "%s\n" "${flag}" >&6; } if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: must compile with xlc_r or cc_r if test x"$GCC" != xyes; then for ac_prog in xlc_r cc_r do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_PTHREAD_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_PTHREAD_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 printf "%s\n" "$PTHREAD_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$PTHREAD_CC" && break done test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}" else PTHREAD_CC=$CC fi else PTHREAD_CC="$CC" fi # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$acx_pthread_ok" = xyes; then printf "%s\n" "#define HAVE_PTHREAD 1" >>confdefs.h : else acx_pthread_ok=no fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" CC="$PTHREAD_CC" ac_fn_c_check_header_compile "$LINENO" "synch.h" "ac_cv_header_synch_h" "$ac_includes_default" if test "x$ac_cv_header_synch_h" = xyes then : printf "%s\n" "#define HAVE_SYNCH_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" if test "x$ac_cv_header_unistd_h" = xyes then : printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h fi fi # Let caller provide -f to lib/*.pl scripts in a uniform way # Check whether --with-field-limit was given. if test ${with_field_limit+y} then : withval=$with_field_limit; fi if test -n "$with_field_limit" then ( cd lib ; ./querydef.pl -f $with_field_limit ; ./ssqls.pl -f $with_field_limit ) fi # Try to find local getopt(); if we fail, we'll use the one in lib/cmdline.* ac_fn_c_check_func "$LINENO" "getopt" "ac_cv_func_getopt" if test "x$ac_cv_func_getopt" = xyes then : printf "%s\n" "#define HAVE_POSIX_GETOPT /**/" >>confdefs.h else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getopt in -liberty" >&5 printf %s "checking for getopt in -liberty... " >&6; } if test ${ac_cv_lib_iberty_getopt+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-liberty $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char getopt (); int main (void) { return getopt (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_iberty_getopt=yes else $as_nop ac_cv_lib_iberty_getopt=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_iberty_getopt" >&5 printf "%s\n" "$ac_cv_lib_iberty_getopt" >&6; } if test "x$ac_cv_lib_iberty_getopt" = xyes then : printf "%s\n" "#define HAVE_LIBIBERTY_GETOPT /**/" >>confdefs.h fi fi # Checks for libraries and local system features { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lm is needed to use C math functions" >&5 printf %s "checking whether -lm is needed to use C math functions... " >&6; } MYSQLPP_EXTRA_LIBS= TRY_LIBM=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { floor(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else $as_nop TRY_LIBM=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "x$TRY_LIBM" = "xyes" then save_LIBS=$LIBS LIBS="$LIBS -lm" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { floor(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : MYSQLPP_EXTRA_LIBS=-lm { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else $as_nop as_fn_error $? "Failed to build program containing math functions!" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$save_LIBS" fi save_LIBS="$LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lsocket is needed" >&5 printf %s "checking whether -lsocket is needed... " >&6; } TRY_LSOCKET=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main (void) { socket(AF_INET, SOCK_STREAM, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else $as_nop TRY_LSOCKET=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "x$TRY_LSOCKET" = "xyes" then LIBS="-lsocket $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main (void) { socket(AF_INET, SOCK_STREAM, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : MYSQLPP_EXTRA_LIBS="-lsocket $MYSQLPP_EXTRA_LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else $as_nop as_fn_error $? "failed to link using -lsocket!" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lnsl is needed" >&5 printf %s "checking whether -lnsl is needed... " >&6; } TRY_LNSL=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { gethostbyname("gna.org"); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else $as_nop TRY_LNSL=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "x$TRY_LNSL" = "xyes" then LIBS="-lnsl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { gethostbyname("gna.org"); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : MYSQLPP_EXTRA_LIBS="-lnsl $MYSQLPP_EXTRA_LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else $as_nop as_fn_error $? "failed to link using -lnsl!" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi # # Set up configure script macros # # Check whether --with-mysql was given. if test ${with_mysql+y} then : withval=$with_mysql; MYSQL_lib_check="$with_mysql/lib/mysql $with_mysql/lib/mariadb $with_mysql/lib" MYSQL_inc_check="$with_mysql/include $with_mysql/include/mysql $with_mysql/include/mariadb" else $as_nop MYSQL_lib_check="/usr/lib64 /usr/lib /usr/lib64/mysql /usr/lib/mysql /usr/lib64/mariadb /usr/lib/mariadb /usr/local/lib64 /usr/local/lib /usr/local/lib/mysql /usr/local/mysql/lib /usr/local/mysql/lib/mysql /usr/mysql/lib/mysql /opt/mysql/lib /opt/mysql/lib/mysql /usr/local/lib/mariadb /usr/local/mariadb/lib /usr/local/mariadb/lib/mariadb /usr/mariadb/lib/mariadb /opt/mariadb/lib /opt/mariadb/lib/mariadb /sw/lib /sw/lib/mysql" MYSQL_inc_check="/usr/include/mysql /usr/local/include/mysql /usr/local/mysql/include /usr/local/mysql/include/mysql /usr/mysql/include/mysql /opt/mysql/include/mysql /usr/include/mariadb /usr/local/include/mariadb /usr/local/mariadb/include /usr/local/mariadb/include/mariadb /usr/mariadb/include/mariadb /opt/mariadb/include/mariadb /sw/include/mysql" fi # Check whether --with-mysql-lib was given. if test ${with_mysql_lib+y} then : withval=$with_mysql_lib; MYSQL_lib_check="$with_mysql_lib $with_mysql_lib/lib64 $with_mysql_lib/lib $with_mysql_lib/lib64/mysql $with_mysql_lib/lib/mysql $with_mysql_lib/lib64/mariadb $with_mysql_lib/lib/mariadb" fi # Check whether --with-mysql-include was given. if test ${with_mysql_include+y} then : withval=$with_mysql_include; MYSQL_inc_check="$with_mysql_include $with_mysql_include/include $with_mysql_include/include/mysql $with_mysql_include/include/mariadb" fi # # Decide which C API library to use, based on thread support # if test "x$acx_pthread_ok" = xyes then MYSQL_C_LIB_NAME=mysqlclient_r else MYSQL_C_LIB_NAME=mysqlclient fi # # Look for MySQL C API headers # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MySQL include directory" >&5 printf %s "checking for MySQL include directory... " >&6; } MYSQL_C_INC_DIR= for m in $MYSQL_inc_check do if test -d "$m" && test -f "$m/mysql.h" then MYSQL_C_INC_DIR=$m break fi done if test -z "$MYSQL_C_INC_DIR" then as_fn_error $? "Didn't find the MySQL include dir in '$MYSQL_inc_check'" "$LINENO" 5 fi case "$MYSQL_C_INC_DIR" in /* ) ;; * ) as_fn_error $? "The MySQL include directory ($MYSQL_C_INC_DIR) must be an absolute path." "$LINENO" 5 ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MYSQL_C_INC_DIR" >&5 printf "%s\n" "$MYSQL_C_INC_DIR" >&6; } # # Look for MySQL C API library # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MySQL C API library directory" >&5 printf %s "checking for MySQL C API library directory... " >&6; } save_CPPFLAGS=$CPPFLAGS save_LIBS=$LIBS save_LDFLAGS=$LDFLAGS CPPFLAGS="$CPPFLAGS -I$MYSQL_C_INC_DIR" MYSQL_C_LIB_DIR= for m in $MYSQL_lib_check do if test -d $m then LDFLAGS="$save_LDFLAGS -L$m" LIBS="$save_LIBS -l$MYSQL_C_LIB_NAME" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { mysql_store_result(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $m" >&5 printf "%s\n" "$m" >&6; } MYSQL_C_LIB_DIR=$m break else $as_nop LIBS="$save_LIBS -l$MYSQL_C_LIB_NAME -lz" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { mysql_store_result(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $m" >&5 printf "%s\n" "$m" >&6; } MYSQLPP_EXTRA_LIBS="$MYSQLPP_EXTRA_LIBS -lz" MYSQL_C_LIB_DIR=$m break fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi done CPPFLAGS=$save_CPPFLAGS LIBS=$save_LIBS LDFLAGS=$save_LDFLAGS if test -z "$MYSQL_C_LIB_DIR" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no joy" >&5 printf "%s\n" "no joy" >&6; } as_fn_error $? "Didn't find $MYSQL_C_LIB_NAME library in '$MYSQL_lib_check'" "$LINENO" 5 fi case "$MYSQL_C_LIB_DIR" in /* ) ;; * ) as_fn_error $? "The MySQL library directory ($MYSQL_C_LIB_DIR) must be an absolute path." "$LINENO" 5 ;; esac # # Check for mysql_ssl_set() in libmysqlclient(_r) # as_ac_Lib=`printf "%s\n" "ac_cv_lib_$MYSQL_C_LIB_NAME""_mysql_ssl_set" | $as_tr_sh` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mysql_ssl_set in -l$MYSQL_C_LIB_NAME" >&5 printf %s "checking for mysql_ssl_set in -l$MYSQL_C_LIB_NAME... " >&6; } if eval test \${$as_ac_Lib+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-l$MYSQL_C_LIB_NAME $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char mysql_ssl_set (); int main (void) { return mysql_ssl_set (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$as_ac_Lib=yes" else $as_nop eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : printf "%s\n" "#define HAVE_MYSQL_SSL_SET /**/" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for localtime_r()" >&5 printf %s "checking for localtime_r()... " >&6; } if test "$cross_compiling" = yes then : localtime_r_found=no else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { time_t tt; struct tm stm; localtime_r(&tt, &stm); return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : localtime_r_found=yes else $as_nop localtime_r_found=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $localtime_r_found" >&5 printf "%s\n" "$localtime_r_found" >&6; } if test x"$localtime_r_found" = xyes then printf "%s\n" "#define HAVE_LOCALTIME_R 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lintl" >&5 printf %s "checking for main in -lintl... " >&6; } if test ${ac_cv_lib_intl_main+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_intl_main=yes else $as_nop ac_cv_lib_intl_main=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_main" >&5 printf "%s\n" "$ac_cv_lib_intl_main" >&6; } if test "x$ac_cv_lib_intl_main" = xyes then : printf "%s\n" "#define HAVE_LIBINTL 1" >>confdefs.h LIBS="-lintl $LIBS" fi # If this is Cygwin, add a linker flag to suppress a silly link message. case "${host}" in *cygwin*) LDFLAGS="$LDFLAGS -Wl,--enable-auto-import" ;; esac # Check for Standard C++ support, and extensions. We try for C++11 if # available, but we don't insist on it. # # This must be near the end, because the CPLUSPLUS directive makes # autoconf use the C++ compiler for all subsequent tests! ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CXX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 printf "%s\n" "$CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CXX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 printf "%s\n" "$ac_ct_CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 printf %s "checking whether the compiler supports GNU C++... " >&6; } if test ${ac_cv_cxx_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 printf %s "checking whether $CXX accepts -g... " >&6; } if test ${ac_cv_prog_cxx_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes else $as_nop CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : else $as_nop ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } if test $ac_test_CXXFLAGS; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_prog_cxx_stdcxx=no if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 printf %s "checking for $CXX option to enable C++11 features... " >&6; } if test ${ac_cv_prog_cxx_11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_11=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx11_program _ACEOF for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx11" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX fi if test "x$ac_cv_prog_cxx_cxx11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cxx_cxx11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx11" fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 ac_prog_cxx_stdcxx=cxx11 fi fi if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 printf %s "checking for $CXX option to enable C++98 features... " >&6; } if test ${ac_cv_prog_cxx_98+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_98=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx98_program _ACEOF for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx98=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx98" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX fi if test "x$ac_cv_prog_cxx_cxx98" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cxx_cxx98" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx98" fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 ac_prog_cxx_stdcxx=cxx98 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu func_stripname_cnf () { case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; esac } # func_stripname_cnf if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 printf %s "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test ${ac_cv_prog_CXXCPP+y} then : printf %s "(cached) " >&6 else $as_nop # Double quotes because $CXX needs to be expanded for CXXCPP in "$CXX -E" cpp /lib/cpp do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 printf "%s\n" "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu else _lt_caught_CXX_error=yes fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC func_cc_basename $compiler cc_basename=$func_cc_basename_result if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else $as_nop with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test ${lt_cv_path_LD+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${lt_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test yes = "$with_gnu_ld"; then archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no ;; esac if test yes = "$GXX"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec_CXX='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. no_undefined_flag_CXX='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath__CXX+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath__CXX+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' $wl-bernotok' allow_undefined_flag_CXX=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='$wl--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" if test yes != "$lt_cv_apple_cc_single_mod"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi else ld_shlibs_CXX=no fi ;; os2*) hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_minus_L_CXX=yes allow_undefined_flag_CXX=unsupported shrext_cmds=.dll archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes_CXX=yes ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; hpux9*) hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='$wl-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='$wl-E' whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; then no_undefined_flag_CXX=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='$wl-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='$wl-z,text' allow_undefined_flag_CXX='$wl-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 printf "%s\n" "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && can_build_shared=no GCC_CXX=$GXX LD_CXX=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX=$prev$p else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX=$prev$p else postdeps_CXX="${postdeps_CXX} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$predep_objects_CXX"; then predep_objects_CXX=$p else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX=$p else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi lt_prog_compiler_pic_CXX='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_CXX='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic_CXX+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if test ${lt_cv_prog_compiler_pic_works_CXX+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works_CXX+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then : else lt_prog_compiler_static_CXX= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o_CXX+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o_CXX" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o_CXX+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 printf %s "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 printf "%s\n" "$hard_links" >&6; } if test no = "$hard_links"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 printf "%s\n" "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 printf %s "checking whether -lc should be explicitly linked in... " >&6; } if test ${lt_cv_archive_cmds_need_lc_CXX+y} then : printf %s "(cached) " >&6 else $as_nop $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 printf "%s\n" "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 printf %s "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec_CXX='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if test ${lt_cv_shlibpath_overrides_runpath+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 printf "%s\n" "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test yes = "$hardcode_automatic_CXX"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct_CXX" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && test no != "$hardcode_minus_L_CXX"; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 printf "%s\n" "$hardcode_action_CXX" >&6; } if test relink = "$hardcode_action_CXX" || test yes = "$inherit_rpath_CXX"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for STL slist extension" >&5 printf %s "checking for STL slist extension... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { slist l ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : printf "%s\n" "#define HAVE_GLOBAL_SLIST 1" >>confdefs.h else $as_nop TRY_NEXT=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test -z "$TRY_NEXT" then SLIST_LOC=", global scope" else TRY_NEXT="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { std::slist l ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : printf "%s\n" "#define HAVE_STD_SLIST 1" >>confdefs.h else $as_nop TRY_NEXT=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test -z "$TRY_NEXT" then SLIST_LOC=", namespace std" else TRY_NEXT="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { __gnu_cxx::slist l ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : printf "%s\n" "#define HAVE_EXT_SLIST 1" >>confdefs.h else $as_nop SLIST_LOC="not found" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test -z "$SLIST_LOC" then SLIST_LOC=", namespace __gnu_cxx" fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SLIST_LOC" >&5 printf "%s\n" "$SLIST_LOC" >&6; } ax_cxx_compile_alternatives="11 0x" ax_cxx_compile_cxx11_required=false ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_success=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5 printf %s "checking whether $CXX supports C++11 features by default... " >&6; } if test ${ax_cv_cxx_compile_cxx11+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ // If the compiler admits that it is not ready for C++11, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201103L #error "This is not a C++11 compiler" #else namespace cxx11 { namespace test_static_assert { template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; } namespace test_final_override { struct Base { virtual ~Base() {} virtual void f() {} }; struct Derived : public Base { virtual ~Derived() override {} virtual void f() override {} }; } namespace test_double_right_angle_brackets { template < typename T > struct check {}; typedef check single_type; typedef check> double_type; typedef check>> triple_type; typedef check>>> quadruple_type; } namespace test_decltype { int f() { int a = 1; decltype(a) b = 2; return a + b; } } namespace test_type_deduction { template < typename T1, typename T2 > struct is_same { static const bool value = false; }; template < typename T > struct is_same { static const bool value = true; }; template < typename T1, typename T2 > auto add(T1 a1, T2 a2) -> decltype(a1 + a2) { return a1 + a2; } int test(const int c, volatile int v) { static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == false, ""); auto ac = c; auto av = v; auto sumi = ac + av + 'x'; auto sumf = ac + av + 1.0; static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == true, ""); return (sumf > 0.0) ? sumi : add(c, v); } } namespace test_noexcept { int f() { return 0; } int g() noexcept { return 0; } static_assert(noexcept(f()) == false, ""); static_assert(noexcept(g()) == true, ""); } namespace test_constexpr { template < typename CharT > unsigned long constexpr strlen_c_r(const CharT *const s, const unsigned long acc) noexcept { return *s ? strlen_c_r(s + 1, acc + 1) : acc; } template < typename CharT > unsigned long constexpr strlen_c(const CharT *const s) noexcept { return strlen_c_r(s, 0UL); } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("1") == 1UL, ""); static_assert(strlen_c("example") == 7UL, ""); static_assert(strlen_c("another\0example") == 7UL, ""); } namespace test_rvalue_references { template < int N > struct answer { static constexpr int value = N; }; answer<1> f(int&) { return answer<1>(); } answer<2> f(const int&) { return answer<2>(); } answer<3> f(int&&) { return answer<3>(); } void test() { int i = 0; const int c = 0; static_assert(decltype(f(i))::value == 1, ""); static_assert(decltype(f(c))::value == 2, ""); static_assert(decltype(f(0))::value == 3, ""); } } namespace test_uniform_initialization { struct test { static const int zero {}; static const int one {1}; }; static_assert(test::zero == 0, ""); static_assert(test::one == 1, ""); } namespace test_lambdas { void test1() { auto lambda1 = [](){}; auto lambda2 = lambda1; lambda1(); lambda2(); } int test2() { auto a = [](int i, int j){ return i + j; }(1, 2); auto b = []() -> int { return '0'; }(); auto c = [=](){ return a + b; }(); auto d = [&](){ return c; }(); auto e = [a, &b](int x) mutable { const auto identity = [](int y){ return y; }; for (auto i = 0; i < a; ++i) a += b--; return x + identity(a + b); }(0); return a + b + c + d + e; } int test3() { const auto nullary = [](){ return 0; }; const auto unary = [](int x){ return x; }; using nullary_t = decltype(nullary); using unary_t = decltype(unary); const auto higher1st = [](nullary_t f){ return f(); }; const auto higher2nd = [unary](nullary_t f1){ return [unary, f1](unary_t f2){ return f2(unary(f1())); }; }; return higher1st(nullary) + higher2nd(nullary)(unary); } } namespace test_variadic_templates { template struct sum; template struct sum { static constexpr auto value = N0 + sum::value; }; template <> struct sum<> { static constexpr auto value = 0; }; static_assert(sum<>::value == 0, ""); static_assert(sum<1>::value == 1, ""); static_assert(sum<23>::value == 23, ""); static_assert(sum<1, 2>::value == 3, ""); static_assert(sum<5, 5, 11>::value == 21, ""); static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); } // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function // because of this. namespace test_template_alias_sfinae { struct foo {}; template using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } } // namespace cxx11 #endif // __cplusplus >= 201103L _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ax_cv_cxx_compile_cxx11=yes else $as_nop ax_cv_cxx_compile_cxx11=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5 printf "%s\n" "$ax_cv_cxx_compile_cxx11" >&6; } if test x$ax_cv_cxx_compile_cxx11 = xyes; then ac_success=yes fi if test x$ac_success = xno; then for alternative in ${ax_cxx_compile_alternatives}; do switch="-std=gnu++${alternative}" cachevar=`printf "%s\n" "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5 printf %s "checking whether $CXX supports C++11 features with $switch... " >&6; } if eval test \${$cachevar+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_CXX="$CXX" CXX="$CXX $switch" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ // If the compiler admits that it is not ready for C++11, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201103L #error "This is not a C++11 compiler" #else namespace cxx11 { namespace test_static_assert { template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; } namespace test_final_override { struct Base { virtual ~Base() {} virtual void f() {} }; struct Derived : public Base { virtual ~Derived() override {} virtual void f() override {} }; } namespace test_double_right_angle_brackets { template < typename T > struct check {}; typedef check single_type; typedef check> double_type; typedef check>> triple_type; typedef check>>> quadruple_type; } namespace test_decltype { int f() { int a = 1; decltype(a) b = 2; return a + b; } } namespace test_type_deduction { template < typename T1, typename T2 > struct is_same { static const bool value = false; }; template < typename T > struct is_same { static const bool value = true; }; template < typename T1, typename T2 > auto add(T1 a1, T2 a2) -> decltype(a1 + a2) { return a1 + a2; } int test(const int c, volatile int v) { static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == false, ""); auto ac = c; auto av = v; auto sumi = ac + av + 'x'; auto sumf = ac + av + 1.0; static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == true, ""); return (sumf > 0.0) ? sumi : add(c, v); } } namespace test_noexcept { int f() { return 0; } int g() noexcept { return 0; } static_assert(noexcept(f()) == false, ""); static_assert(noexcept(g()) == true, ""); } namespace test_constexpr { template < typename CharT > unsigned long constexpr strlen_c_r(const CharT *const s, const unsigned long acc) noexcept { return *s ? strlen_c_r(s + 1, acc + 1) : acc; } template < typename CharT > unsigned long constexpr strlen_c(const CharT *const s) noexcept { return strlen_c_r(s, 0UL); } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("1") == 1UL, ""); static_assert(strlen_c("example") == 7UL, ""); static_assert(strlen_c("another\0example") == 7UL, ""); } namespace test_rvalue_references { template < int N > struct answer { static constexpr int value = N; }; answer<1> f(int&) { return answer<1>(); } answer<2> f(const int&) { return answer<2>(); } answer<3> f(int&&) { return answer<3>(); } void test() { int i = 0; const int c = 0; static_assert(decltype(f(i))::value == 1, ""); static_assert(decltype(f(c))::value == 2, ""); static_assert(decltype(f(0))::value == 3, ""); } } namespace test_uniform_initialization { struct test { static const int zero {}; static const int one {1}; }; static_assert(test::zero == 0, ""); static_assert(test::one == 1, ""); } namespace test_lambdas { void test1() { auto lambda1 = [](){}; auto lambda2 = lambda1; lambda1(); lambda2(); } int test2() { auto a = [](int i, int j){ return i + j; }(1, 2); auto b = []() -> int { return '0'; }(); auto c = [=](){ return a + b; }(); auto d = [&](){ return c; }(); auto e = [a, &b](int x) mutable { const auto identity = [](int y){ return y; }; for (auto i = 0; i < a; ++i) a += b--; return x + identity(a + b); }(0); return a + b + c + d + e; } int test3() { const auto nullary = [](){ return 0; }; const auto unary = [](int x){ return x; }; using nullary_t = decltype(nullary); using unary_t = decltype(unary); const auto higher1st = [](nullary_t f){ return f(); }; const auto higher2nd = [unary](nullary_t f1){ return [unary, f1](unary_t f2){ return f2(unary(f1())); }; }; return higher1st(nullary) + higher2nd(nullary)(unary); } } namespace test_variadic_templates { template struct sum; template struct sum { static constexpr auto value = N0 + sum::value; }; template <> struct sum<> { static constexpr auto value = 0; }; static_assert(sum<>::value == 0, ""); static_assert(sum<1>::value == 1, ""); static_assert(sum<23>::value == 23, ""); static_assert(sum<1, 2>::value == 3, ""); static_assert(sum<5, 5, 11>::value == 21, ""); static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); } // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function // because of this. namespace test_template_alias_sfinae { struct foo {}; template using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } } // namespace cxx11 #endif // __cplusplus >= 201103L _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : eval $cachevar=yes else $as_nop eval $cachevar=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CXX="$ac_save_CXX" fi eval ac_res=\$$cachevar { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if eval test x\$$cachevar = xyes; then CXX="$CXX $switch" if test -n "$CXXCPP" ; then CXXCPP="$CXXCPP $switch" fi ac_success=yes break fi done fi if test x$ac_success = xno; then for alternative in ${ax_cxx_compile_alternatives}; do for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do cachevar=`printf "%s\n" "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5 printf %s "checking whether $CXX supports C++11 features with $switch... " >&6; } if eval test \${$cachevar+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_CXX="$CXX" CXX="$CXX $switch" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ // If the compiler admits that it is not ready for C++11, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201103L #error "This is not a C++11 compiler" #else namespace cxx11 { namespace test_static_assert { template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; } namespace test_final_override { struct Base { virtual ~Base() {} virtual void f() {} }; struct Derived : public Base { virtual ~Derived() override {} virtual void f() override {} }; } namespace test_double_right_angle_brackets { template < typename T > struct check {}; typedef check single_type; typedef check> double_type; typedef check>> triple_type; typedef check>>> quadruple_type; } namespace test_decltype { int f() { int a = 1; decltype(a) b = 2; return a + b; } } namespace test_type_deduction { template < typename T1, typename T2 > struct is_same { static const bool value = false; }; template < typename T > struct is_same { static const bool value = true; }; template < typename T1, typename T2 > auto add(T1 a1, T2 a2) -> decltype(a1 + a2) { return a1 + a2; } int test(const int c, volatile int v) { static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == false, ""); auto ac = c; auto av = v; auto sumi = ac + av + 'x'; auto sumf = ac + av + 1.0; static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == true, ""); return (sumf > 0.0) ? sumi : add(c, v); } } namespace test_noexcept { int f() { return 0; } int g() noexcept { return 0; } static_assert(noexcept(f()) == false, ""); static_assert(noexcept(g()) == true, ""); } namespace test_constexpr { template < typename CharT > unsigned long constexpr strlen_c_r(const CharT *const s, const unsigned long acc) noexcept { return *s ? strlen_c_r(s + 1, acc + 1) : acc; } template < typename CharT > unsigned long constexpr strlen_c(const CharT *const s) noexcept { return strlen_c_r(s, 0UL); } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("1") == 1UL, ""); static_assert(strlen_c("example") == 7UL, ""); static_assert(strlen_c("another\0example") == 7UL, ""); } namespace test_rvalue_references { template < int N > struct answer { static constexpr int value = N; }; answer<1> f(int&) { return answer<1>(); } answer<2> f(const int&) { return answer<2>(); } answer<3> f(int&&) { return answer<3>(); } void test() { int i = 0; const int c = 0; static_assert(decltype(f(i))::value == 1, ""); static_assert(decltype(f(c))::value == 2, ""); static_assert(decltype(f(0))::value == 3, ""); } } namespace test_uniform_initialization { struct test { static const int zero {}; static const int one {1}; }; static_assert(test::zero == 0, ""); static_assert(test::one == 1, ""); } namespace test_lambdas { void test1() { auto lambda1 = [](){}; auto lambda2 = lambda1; lambda1(); lambda2(); } int test2() { auto a = [](int i, int j){ return i + j; }(1, 2); auto b = []() -> int { return '0'; }(); auto c = [=](){ return a + b; }(); auto d = [&](){ return c; }(); auto e = [a, &b](int x) mutable { const auto identity = [](int y){ return y; }; for (auto i = 0; i < a; ++i) a += b--; return x + identity(a + b); }(0); return a + b + c + d + e; } int test3() { const auto nullary = [](){ return 0; }; const auto unary = [](int x){ return x; }; using nullary_t = decltype(nullary); using unary_t = decltype(unary); const auto higher1st = [](nullary_t f){ return f(); }; const auto higher2nd = [unary](nullary_t f1){ return [unary, f1](unary_t f2){ return f2(unary(f1())); }; }; return higher1st(nullary) + higher2nd(nullary)(unary); } } namespace test_variadic_templates { template struct sum; template struct sum { static constexpr auto value = N0 + sum::value; }; template <> struct sum<> { static constexpr auto value = 0; }; static_assert(sum<>::value == 0, ""); static_assert(sum<1>::value == 1, ""); static_assert(sum<23>::value == 23, ""); static_assert(sum<1, 2>::value == 3, ""); static_assert(sum<5, 5, 11>::value == 21, ""); static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); } // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function // because of this. namespace test_template_alias_sfinae { struct foo {}; template using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } } // namespace cxx11 #endif // __cplusplus >= 201103L _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : eval $cachevar=yes else $as_nop eval $cachevar=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CXX="$ac_save_CXX" fi eval ac_res=\$$cachevar { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if eval test x\$$cachevar = xyes; then CXX="$CXX $switch" if test -n "$CXXCPP" ; then CXXCPP="$CXXCPP $switch" fi ac_success=yes break fi done if test x$ac_success = xyes; then break fi done fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test x$ax_cxx_compile_cxx11_required = xtrue; then if test x$ac_success = xno; then as_fn_error $? "*** A compiler with support for C++11 language features is required." "$LINENO" 5 fi fi if test x$ac_success = xno; then HAVE_CXX11=0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5 printf "%s\n" "$as_me: No compiler with C++11 support was found" >&6;} else HAVE_CXX11=1 printf "%s\n" "#define HAVE_CXX11 1" >>confdefs.h fi # Include Bakefile macros ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the Intel C compiler" >&5 printf %s "checking whether we are using the Intel C compiler... " >&6; } if test ${bakefile_cv_c_compiler___INTEL_COMPILER+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __INTEL_COMPILER choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : bakefile_cv_c_compiler___INTEL_COMPILER=yes else $as_nop bakefile_cv_c_compiler___INTEL_COMPILER=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___INTEL_COMPILER" >&5 printf "%s\n" "$bakefile_cv_c_compiler___INTEL_COMPILER" >&6; } if test "x$bakefile_cv_c_compiler___INTEL_COMPILER" = "xyes"; then :; INTELCC=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test "$INTELCC" = "yes"; then ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using Intel C compiler v8 or later" >&5 printf %s "checking whether we are using Intel C compiler v8 or later... " >&6; } if test ${bakefile_cv_c_compiler___INTEL_COMPILER_lt_800+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __INTEL_COMPILER || __INTEL_COMPILER < 800 choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : bakefile_cv_c_compiler___INTEL_COMPILER_lt_800=yes else $as_nop bakefile_cv_c_compiler___INTEL_COMPILER_lt_800=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___INTEL_COMPILER_lt_800" >&5 printf "%s\n" "$bakefile_cv_c_compiler___INTEL_COMPILER_lt_800" >&6; } if test "x$bakefile_cv_c_compiler___INTEL_COMPILER_lt_800" = "xyes"; then :; INTELCC8=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using Intel C compiler v10 or later" >&5 printf %s "checking whether we are using Intel C compiler v10 or later... " >&6; } if test ${bakefile_cv_c_compiler___INTEL_COMPILER_lt_1000+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __INTEL_COMPILER || __INTEL_COMPILER < 1000 choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : bakefile_cv_c_compiler___INTEL_COMPILER_lt_1000=yes else $as_nop bakefile_cv_c_compiler___INTEL_COMPILER_lt_1000=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___INTEL_COMPILER_lt_1000" >&5 printf "%s\n" "$bakefile_cv_c_compiler___INTEL_COMPILER_lt_1000" >&6; } if test "x$bakefile_cv_c_compiler___INTEL_COMPILER_lt_1000" = "xyes"; then :; INTELCC10=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi if test "x$GCC" != "xyes"; then case `uname -s` in AIX*) ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the IBM xlC C compiler" >&5 printf %s "checking whether we are using the IBM xlC C compiler... " >&6; } if test ${bakefile_cv_c_compiler___xlC__+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __xlC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : bakefile_cv_c_compiler___xlC__=yes else $as_nop bakefile_cv_c_compiler___xlC__=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___xlC__" >&5 printf "%s\n" "$bakefile_cv_c_compiler___xlC__" >&6; } if test "x$bakefile_cv_c_compiler___xlC__" = "xyes"; then :; XLCC=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; Darwin) ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the IBM xlC C compiler" >&5 printf %s "checking whether we are using the IBM xlC C compiler... " >&6; } if test ${bakefile_cv_c_compiler___xlC__+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __xlC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : bakefile_cv_c_compiler___xlC__=yes else $as_nop bakefile_cv_c_compiler___xlC__=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___xlC__" >&5 printf "%s\n" "$bakefile_cv_c_compiler___xlC__" >&6; } if test "x$bakefile_cv_c_compiler___xlC__" = "xyes"; then :; XLCC=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; IRIX*) ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the SGI C compiler" >&5 printf %s "checking whether we are using the SGI C compiler... " >&6; } if test ${bakefile_cv_c_compiler__SGI_COMPILER_VERSION+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef _SGI_COMPILER_VERSION choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : bakefile_cv_c_compiler__SGI_COMPILER_VERSION=yes else $as_nop bakefile_cv_c_compiler__SGI_COMPILER_VERSION=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler__SGI_COMPILER_VERSION" >&5 printf "%s\n" "$bakefile_cv_c_compiler__SGI_COMPILER_VERSION" >&6; } if test "x$bakefile_cv_c_compiler__SGI_COMPILER_VERSION" = "xyes"; then :; SGICC=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; Linux*) if test "$INTELCC" != "yes"; then ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the Sun C compiler" >&5 printf %s "checking whether we are using the Sun C compiler... " >&6; } if test ${bakefile_cv_c_compiler___SUNPRO_C+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __SUNPRO_C choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : bakefile_cv_c_compiler___SUNPRO_C=yes else $as_nop bakefile_cv_c_compiler___SUNPRO_C=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___SUNPRO_C" >&5 printf "%s\n" "$bakefile_cv_c_compiler___SUNPRO_C" >&6; } if test "x$bakefile_cv_c_compiler___SUNPRO_C" = "xyes"; then :; SUNCC=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi ;; HP-UX*) ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the HP C compiler" >&5 printf %s "checking whether we are using the HP C compiler... " >&6; } if test ${bakefile_cv_c_compiler___HP_cc+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __HP_cc choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : bakefile_cv_c_compiler___HP_cc=yes else $as_nop bakefile_cv_c_compiler___HP_cc=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___HP_cc" >&5 printf "%s\n" "$bakefile_cv_c_compiler___HP_cc" >&6; } if test "x$bakefile_cv_c_compiler___HP_cc" = "xyes"; then :; HPCC=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; OSF1) ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the Compaq C compiler" >&5 printf %s "checking whether we are using the Compaq C compiler... " >&6; } if test ${bakefile_cv_c_compiler___DECC+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __DECC choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : bakefile_cv_c_compiler___DECC=yes else $as_nop bakefile_cv_c_compiler___DECC=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___DECC" >&5 printf "%s\n" "$bakefile_cv_c_compiler___DECC" >&6; } if test "x$bakefile_cv_c_compiler___DECC" = "xyes"; then :; COMPAQCC=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; SunOS) ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the Sun C compiler" >&5 printf %s "checking whether we are using the Sun C compiler... " >&6; } if test ${bakefile_cv_c_compiler___SUNPRO_C+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __SUNPRO_C choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : bakefile_cv_c_compiler___SUNPRO_C=yes else $as_nop bakefile_cv_c_compiler___SUNPRO_C=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___SUNPRO_C" >&5 printf "%s\n" "$bakefile_cv_c_compiler___SUNPRO_C" >&6; } if test "x$bakefile_cv_c_compiler___SUNPRO_C" = "xyes"; then :; SUNCC=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; esac fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the Intel C++ compiler" >&5 printf %s "checking whether we are using the Intel C++ compiler... " >&6; } if test ${bakefile_cv_cxx_compiler___INTEL_COMPILER+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __INTEL_COMPILER choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_cxx_compiler___INTEL_COMPILER=yes else $as_nop bakefile_cv_cxx_compiler___INTEL_COMPILER=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___INTEL_COMPILER" >&5 printf "%s\n" "$bakefile_cv_cxx_compiler___INTEL_COMPILER" >&6; } if test "x$bakefile_cv_cxx_compiler___INTEL_COMPILER" = "xyes"; then :; INTELCXX=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test "$INTELCXX" = "yes"; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using Intel C++ compiler v8 or later" >&5 printf %s "checking whether we are using Intel C++ compiler v8 or later... " >&6; } if test ${bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_800+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __INTEL_COMPILER || __INTEL_COMPILER < 800 choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_800=yes else $as_nop bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_800=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_800" >&5 printf "%s\n" "$bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_800" >&6; } if test "x$bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_800" = "xyes"; then :; INTELCXX8=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using Intel C++ compiler v10 or later" >&5 printf %s "checking whether we are using Intel C++ compiler v10 or later... " >&6; } if test ${bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_1000+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __INTEL_COMPILER || __INTEL_COMPILER < 1000 choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_1000=yes else $as_nop bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_1000=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_1000" >&5 printf "%s\n" "$bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_1000" >&6; } if test "x$bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_1000" = "xyes"; then :; INTELCXX10=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi if test "x$GCXX" != "xyes"; then case `uname -s` in AIX*) ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the IBM xlC C++ compiler" >&5 printf %s "checking whether we are using the IBM xlC C++ compiler... " >&6; } if test ${bakefile_cv_cxx_compiler___xlC__+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __xlC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_cxx_compiler___xlC__=yes else $as_nop bakefile_cv_cxx_compiler___xlC__=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___xlC__" >&5 printf "%s\n" "$bakefile_cv_cxx_compiler___xlC__" >&6; } if test "x$bakefile_cv_cxx_compiler___xlC__" = "xyes"; then :; XLCXX=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; Darwin) ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the IBM xlC C++ compiler" >&5 printf %s "checking whether we are using the IBM xlC C++ compiler... " >&6; } if test ${bakefile_cv_cxx_compiler___xlC__+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __xlC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_cxx_compiler___xlC__=yes else $as_nop bakefile_cv_cxx_compiler___xlC__=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___xlC__" >&5 printf "%s\n" "$bakefile_cv_cxx_compiler___xlC__" >&6; } if test "x$bakefile_cv_cxx_compiler___xlC__" = "xyes"; then :; XLCXX=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; IRIX*) ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the SGI C++ compiler" >&5 printf %s "checking whether we are using the SGI C++ compiler... " >&6; } if test ${bakefile_cv_cxx_compiler__SGI_COMPILER_VERSION+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef _SGI_COMPILER_VERSION choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_cxx_compiler__SGI_COMPILER_VERSION=yes else $as_nop bakefile_cv_cxx_compiler__SGI_COMPILER_VERSION=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler__SGI_COMPILER_VERSION" >&5 printf "%s\n" "$bakefile_cv_cxx_compiler__SGI_COMPILER_VERSION" >&6; } if test "x$bakefile_cv_cxx_compiler__SGI_COMPILER_VERSION" = "xyes"; then :; SGICXX=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; Linux*) if test "$INTELCXX" != "yes"; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the Sun C++ compiler" >&5 printf %s "checking whether we are using the Sun C++ compiler... " >&6; } if test ${bakefile_cv_cxx_compiler___SUNPRO_CC+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __SUNPRO_CC choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_cxx_compiler___SUNPRO_CC=yes else $as_nop bakefile_cv_cxx_compiler___SUNPRO_CC=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___SUNPRO_CC" >&5 printf "%s\n" "$bakefile_cv_cxx_compiler___SUNPRO_CC" >&6; } if test "x$bakefile_cv_cxx_compiler___SUNPRO_CC" = "xyes"; then :; SUNCXX=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi ;; HP-UX*) ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the HP C++ compiler" >&5 printf %s "checking whether we are using the HP C++ compiler... " >&6; } if test ${bakefile_cv_cxx_compiler___HP_aCC+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __HP_aCC choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_cxx_compiler___HP_aCC=yes else $as_nop bakefile_cv_cxx_compiler___HP_aCC=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___HP_aCC" >&5 printf "%s\n" "$bakefile_cv_cxx_compiler___HP_aCC" >&6; } if test "x$bakefile_cv_cxx_compiler___HP_aCC" = "xyes"; then :; HPCXX=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; OSF1) ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the Compaq C++ compiler" >&5 printf %s "checking whether we are using the Compaq C++ compiler... " >&6; } if test ${bakefile_cv_cxx_compiler___DECCXX+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __DECCXX choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_cxx_compiler___DECCXX=yes else $as_nop bakefile_cv_cxx_compiler___DECCXX=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___DECCXX" >&5 printf "%s\n" "$bakefile_cv_cxx_compiler___DECCXX" >&6; } if test "x$bakefile_cv_cxx_compiler___DECCXX" = "xyes"; then :; COMPAQCXX=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; SunOS) ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the Sun C++ compiler" >&5 printf %s "checking whether we are using the Sun C++ compiler... " >&6; } if test ${bakefile_cv_cxx_compiler___SUNPRO_CC+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __SUNPRO_CC choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_cxx_compiler___SUNPRO_CC=yes else $as_nop bakefile_cv_cxx_compiler___SUNPRO_CC=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___SUNPRO_CC" >&5 printf "%s\n" "$bakefile_cv_cxx_compiler___SUNPRO_CC" >&6; } if test "x$bakefile_cv_cxx_compiler___SUNPRO_CC" = "xyes"; then :; SUNCXX=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; esac fi # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac # Account for fact that we put trailing slashes in our PATH walk. case $as_dir in #(( ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' if test "x$BAKEFILE_HOST" = "x"; then if test "x${host}" = "x" ; then as_fn_error $? "You must call the autoconf \"CANONICAL_HOST\" macro in your configure.ac (or .in) file." "$LINENO" 5 fi BAKEFILE_HOST="${host}" fi if test "x$BAKEFILE_CHECK_BASICS" != "xno"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 printf "%s\n" "$RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 printf "%s\n" "$ac_ct_RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 printf "%s\n" "no, using $LN_S" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi if test "x$SUNCXX" = "xyes"; then AR=$CXX AROPTIONS="-xar -o" elif test "x$SGICC" = "xyes"; then AR=$CXX AROPTIONS="-ar -o" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="${ac_tool_prefix}ar" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 printf "%s\n" "$AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="ar" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 printf "%s\n" "$ac_ct_AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="ar" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi else AR="$ac_cv_prog_AR" fi AROPTIONS=rc fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nm", so it can be a program name with args. set dummy ${ac_tool_prefix}nm; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_NM+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$NM"; then ac_cv_prog_NM="$NM" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_NM="${ac_tool_prefix}nm" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NM=$ac_cv_prog_NM if test -n "$NM"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NM" >&5 printf "%s\n" "$NM" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_NM"; then ac_ct_NM=$NM # Extract the first word of "nm", so it can be a program name with args. set dummy nm; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_NM+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_NM"; then ac_cv_prog_ac_ct_NM="$ac_ct_NM" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NM="nm" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NM=$ac_cv_prog_ac_ct_NM if test -n "$ac_ct_NM"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NM" >&5 printf "%s\n" "$ac_ct_NM" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_NM" = x; then NM=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NM=$ac_ct_NM fi else NM="$ac_cv_prog_NM" fi INSTALL_DIR="mkdir -p" LDFLAGS_GUI= case ${BAKEFILE_HOST} in *-*-cygwin* | *-*-mingw32* ) LDFLAGS_GUI="-mwindows" esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if make is GNU make" >&5 printf %s "checking if make is GNU make... " >&6; } if test ${bakefile_cv_prog_makeisgnu+y} then : printf %s "(cached) " >&6 else $as_nop if ( ${SHELL-sh} -c "${MAKE-make} --version" 2> /dev/null | egrep -s GNU > /dev/null); then bakefile_cv_prog_makeisgnu="yes" else bakefile_cv_prog_makeisgnu="no" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_prog_makeisgnu" >&5 printf "%s\n" "$bakefile_cv_prog_makeisgnu" >&6; } if test "x$bakefile_cv_prog_makeisgnu" = "xyes"; then IF_GNU_MAKE="" else IF_GNU_MAKE="#" fi PLATFORM_UNIX=0 PLATFORM_WIN32=0 PLATFORM_MAC=0 PLATFORM_MACOS=0 PLATFORM_MACOSX=0 PLATFORM_BEOS=0 if test "x$BAKEFILE_FORCE_PLATFORM" = "x"; then case "${BAKEFILE_HOST}" in *-*-mingw32* ) PLATFORM_WIN32=1 ;; *-*-darwin* ) PLATFORM_MAC=1 PLATFORM_MACOSX=1 ;; *-*-beos* ) PLATFORM_BEOS=1 ;; powerpc-apple-macos* ) PLATFORM_MAC=1 PLATFORM_MACOS=1 ;; * ) PLATFORM_UNIX=1 ;; esac else case "$BAKEFILE_FORCE_PLATFORM" in win32 ) PLATFORM_WIN32=1 ;; darwin ) PLATFORM_MAC=1 PLATFORM_MACOSX=1 ;; unix ) PLATFORM_UNIX=1 ;; beos ) PLATFORM_BEOS=1 ;; * ) as_fn_error $? "Unknown platform: $BAKEFILE_FORCE_PLATFORM" "$LINENO" 5 ;; esac fi case "${BAKEFILE_HOST}" in *-*-darwin* ) if test "x$GCC" = "xyes"; then CFLAGS="$CFLAGS -fno-common" CXXFLAGS="$CXXFLAGS -fno-common" fi if test "x$XLCC" = "xyes"; then CFLAGS="$CFLAGS -qnocommon" CXXFLAGS="$CXXFLAGS -qnocommon" fi ;; i*86-*-beos* ) LDFLAGS="-L/boot/develop/lib/x86 $LDFLAGS" ;; esac SO_SUFFIX="so" SO_SUFFIX_MODULE="so" EXEEXT="" LIBPREFIX="lib" LIBEXT=".a" DLLPREFIX="lib" DLLPREFIX_MODULE="" DLLIMP_SUFFIX="" dlldir="$libdir" case "${BAKEFILE_HOST}" in ia64-hp-hpux* ) ;; *-hp-hpux* ) SO_SUFFIX="sl" SO_SUFFIX_MODULE="sl" ;; *-*-aix* ) SO_SUFFIX="a" SO_SUFFIX_MODULE="a" ;; *-*-cygwin* ) SO_SUFFIX="dll" SO_SUFFIX_MODULE="dll" DLLIMP_SUFFIX="dll.a" EXEEXT=".exe" DLLPREFIX="cyg" dlldir="$bindir" ;; *-*-mingw32* ) SO_SUFFIX="dll" SO_SUFFIX_MODULE="dll" DLLIMP_SUFFIX="dll.a" EXEEXT=".exe" DLLPREFIX="" dlldir="$bindir" ;; *-*-darwin* ) SO_SUFFIX="dylib" SO_SUFFIX_MODULE="bundle" ;; esac if test "x$DLLIMP_SUFFIX" = "x" ; then DLLIMP_SUFFIX="$SO_SUFFIX" fi PIC_FLAG="" if test "x$GCC" = "xyes"; then PIC_FLAG="-fPIC" fi SHARED_LD_CC="\$(CC) -shared ${PIC_FLAG} -o" SHARED_LD_CXX="\$(CXX) -shared ${PIC_FLAG} -o" WINDOWS_IMPLIB=0 case "${BAKEFILE_HOST}" in *-hp-hpux* ) if test "x$GCC" != "xyes"; then LDFLAGS="$LDFLAGS -L/usr/lib" SHARED_LD_CC="${CC} -b -o" SHARED_LD_CXX="${CXX} -b -o" PIC_FLAG="+Z" fi ;; *-*-linux* ) if test "$INTELCC" = "yes" -a "$INTELCC8" != "yes"; then PIC_FLAG="-KPIC" elif test "x$SUNCXX" = "xyes"; then SHARED_LD_CC="${CC} -G -o" SHARED_LD_CXX="${CXX} -G -o" PIC_FLAG="-KPIC" fi ;; *-*-solaris2* ) if test "x$SUNCXX" = xyes ; then SHARED_LD_CC="${CC} -G -o" SHARED_LD_CXX="${CXX} -G -o" PIC_FLAG="-KPIC" fi ;; *-*-darwin* ) D='$' cat <shared-ld-sh #!/bin/sh #----------------------------------------------------------------------------- #-- Name: distrib/mac/shared-ld-sh #-- Purpose: Link a mach-o dynamic shared library for Darwin / Mac OS X #-- Author: Gilles Depeyrot #-- Copyright: (c) 2002 Gilles Depeyrot #-- Licence: any use permitted #----------------------------------------------------------------------------- verbose=0 args="" objects="" linking_flag="-dynamiclib" ldargs="-r -keep_private_externs -nostdlib" if test "x${D}CXX" = "x"; then CXX="c++" fi while test ${D}# -gt 0; do case ${D}1 in -v) verbose=1 ;; -o|-compatibility_version|-current_version|-framework|-undefined|-install_name) # collect these options and values args="${D}{args} ${D}1 ${D}2" shift ;; -arch|-isysroot) # collect these options and values ldargs="${D}{ldargs} ${D}1 ${D}2" shift ;; -s|-Wl,*) # collect these load args ldargs="${D}{ldargs} ${D}1" ;; -l*|-L*|-flat_namespace|-headerpad_max_install_names) # collect these options args="${D}{args} ${D}1" ;; -dynamiclib|-bundle) linking_flag="${D}1" ;; -*) echo "shared-ld: unhandled option '${D}1'" exit 1 ;; *.o | *.a | *.dylib) # collect object files objects="${D}{objects} ${D}1" ;; *) echo "shared-ld: unhandled argument '${D}1'" exit 1 ;; esac shift done status=0 # # Link one module containing all the others # if test ${D}{verbose} = 1; then echo "${D}CXX ${D}{ldargs} ${D}{objects} -o master.${D}${D}.o" fi ${D}CXX ${D}{ldargs} ${D}{objects} -o master.${D}${D}.o status=${D}? # # Link the shared library from the single module created, but only if the # previous command didn't fail: # if test ${D}{status} = 0; then if test ${D}{verbose} = 1; then echo "${D}CXX ${D}{linking_flag} master.${D}${D}.o ${D}{args}" fi ${D}CXX ${D}{linking_flag} master.${D}${D}.o ${D}{args} status=${D}? fi # # Remove intermediate module # rm -f master.${D}${D}.o exit ${D}status EOF chmod +x shared-ld-sh SHARED_LD_MODULE_CC="`pwd`/shared-ld-sh -bundle -headerpad_max_install_names -o" SHARED_LD_MODULE_CXX="CXX=\"\$(CXX)\" $SHARED_LD_MODULE_CC" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gcc 3.1 or later" >&5 printf %s "checking for gcc 3.1 or later... " >&6; } if test ${bakefile_cv_gcc31+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #if (__GNUC__ < 3) || \ ((__GNUC__ == 3) && (__GNUC_MINOR__ < 1)) This is old gcc #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_gcc31=yes else $as_nop bakefile_cv_gcc31=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_gcc31" >&5 printf "%s\n" "$bakefile_cv_gcc31" >&6; } if test "$bakefile_cv_gcc31" = "no"; then SHARED_LD_CC="`pwd`/shared-ld-sh -dynamiclib -headerpad_max_install_names -o" SHARED_LD_CXX="$SHARED_LD_CC" else SHARED_LD_CC="\${CC} -dynamiclib -single_module -headerpad_max_install_names -o" SHARED_LD_CXX="\${CXX} -dynamiclib -single_module -headerpad_max_install_names -o" fi if test "x$GCC" == "xyes"; then PIC_FLAG="-dynamic -fPIC" fi if test "x$XLCC" = "xyes"; then PIC_FLAG="-dynamic -DPIC" fi ;; *-*-aix* ) if test "x$GCC" = "xyes"; then PIC_FLAG="" case "${BAKEFILE_HOST}" in *-*-aix5* ) LD_EXPFULL="-Wl,-bexpfull" ;; esac SHARED_LD_CC="\$(CC) -shared $LD_EXPFULL -o" SHARED_LD_CXX="\$(CXX) -shared $LD_EXPFULL -o" else # Extract the first word of "makeC++SharedLib", so it can be a program name with args. set dummy makeC++SharedLib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AIX_CXX_LD+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AIX_CXX_LD"; then ac_cv_prog_AIX_CXX_LD="$AIX_CXX_LD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AIX_CXX_LD="makeC++SharedLib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_AIX_CXX_LD" && ac_cv_prog_AIX_CXX_LD="/usr/lpp/xlC/bin/makeC++SharedLib" fi fi AIX_CXX_LD=$ac_cv_prog_AIX_CXX_LD if test -n "$AIX_CXX_LD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AIX_CXX_LD" >&5 printf "%s\n" "$AIX_CXX_LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi SHARED_LD_CC="$AIX_CC_LD -p 0 -o" SHARED_LD_CXX="$AIX_CXX_LD -p 0 -o" fi ;; *-*-beos* ) SHARED_LD_CC="${LD} -nostart -o" SHARED_LD_CXX="${LD} -nostart -o" ;; *-*-irix* ) if test "x$GCC" != "xyes"; then PIC_FLAG="-KPIC" fi ;; *-*-cygwin* | *-*-mingw32* ) PIC_FLAG="" SHARED_LD_CC="\$(CC) -shared -o" SHARED_LD_CXX="\$(CXX) -shared -o" WINDOWS_IMPLIB=1 ;; powerpc-apple-macos* | \ *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | *-*-gnu* | *-*-k*bsd*-gnu | \ *-*-mirbsd* | \ *-*-sunos4* | \ *-*-osf* | \ *-*-dgux5* | \ *-*-sysv5* ) ;; *) as_fn_error $? "unknown system type $BAKEFILE_HOST." "$LINENO" 5 esac if test "x$PIC_FLAG" != "x" ; then PIC_FLAG="$PIC_FLAG -DPIC" fi if test "x$SHARED_LD_MODULE_CC" = "x" ; then SHARED_LD_MODULE_CC="$SHARED_LD_CC" fi if test "x$SHARED_LD_MODULE_CXX" = "x" ; then SHARED_LD_MODULE_CXX="$SHARED_LD_CXX" fi USE_SOVERSION=0 USE_SOVERLINUX=0 USE_SOVERSOLARIS=0 USE_SOVERCYGWIN=0 USE_SOTWOSYMLINKS=0 USE_MACVERSION=0 SONAME_FLAG= case "${BAKEFILE_HOST}" in *-*-linux* | *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | \ *-*-k*bsd*-gnu | *-*-mirbsd* | *-*-gnu* ) if test "x$SUNCXX" = "xyes"; then SONAME_FLAG="-h " else SONAME_FLAG="-Wl,-soname," fi USE_SOVERSION=1 USE_SOVERLINUX=1 USE_SOTWOSYMLINKS=1 ;; *-*-solaris2* ) SONAME_FLAG="-h " USE_SOVERSION=1 USE_SOVERSOLARIS=1 ;; *-*-darwin* ) USE_MACVERSION=1 USE_SOVERSION=1 USE_SOTWOSYMLINKS=1 ;; *-*-cygwin* ) USE_SOVERSION=1 USE_SOVERCYGWIN=1 ;; esac # Check whether --enable-dependency-tracking was given. if test ${enable_dependency_tracking+y} then : enableval=$enable_dependency_tracking; bk_use_trackdeps="$enableval" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dependency tracking method" >&5 printf %s "checking for dependency tracking method... " >&6; } BK_DEPS="" if test "x$bk_use_trackdeps" = "xno" ; then DEPS_TRACKING=0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: disabled" >&5 printf "%s\n" "disabled" >&6; } else DEPS_TRACKING=1 if test "x$GCC" = "xyes"; then DEPSMODE=gcc DEPSFLAG="-MMD" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: gcc" >&5 printf "%s\n" "gcc" >&6; } elif test "x$SUNCC" = "xyes"; then DEPSMODE=unixcc DEPSFLAG="-xM1" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Sun cc" >&5 printf "%s\n" "Sun cc" >&6; } elif test "x$SGICC" = "xyes"; then DEPSMODE=unixcc DEPSFLAG="-M" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: SGI cc" >&5 printf "%s\n" "SGI cc" >&6; } elif test "x$HPCC" = "xyes"; then DEPSMODE=unixcc DEPSFLAG="+make" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: HP cc" >&5 printf "%s\n" "HP cc" >&6; } elif test "x$COMPAQCC" = "xyes"; then DEPSMODE=gcc DEPSFLAG="-MD" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Compaq cc" >&5 printf "%s\n" "Compaq cc" >&6; } else DEPS_TRACKING=0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 printf "%s\n" "none" >&6; } fi if test $DEPS_TRACKING = 1 ; then D='$' cat <bk-deps #!/bin/sh # This script is part of Bakefile (http://www.bakefile.org) autoconf # script. It is used to track C/C++ files dependencies in portable way. # # Permission is given to use this file in any way. DEPSMODE=${DEPSMODE} DEPSFLAG="${DEPSFLAG}" DEPSDIRBASE=.deps if test ${D}DEPSMODE = gcc ; then ${D}* ${D}{DEPSFLAG} status=${D}? # determine location of created files: while test ${D}# -gt 0; do case "${D}1" in -o ) shift objfile=${D}1 ;; -* ) ;; * ) srcfile=${D}1 ;; esac shift done objfilebase=\`basename ${D}objfile\` builddir=\`dirname ${D}objfile\` depfile=\`basename ${D}srcfile | sed -e 's/\\..*${D}/.d/g'\` depobjname=\`echo ${D}depfile |sed -e 's/\\.d/.o/g'\` depsdir=${D}builddir/${D}DEPSDIRBASE mkdir -p ${D}depsdir # if the compiler failed, we're done: if test ${D}{status} != 0 ; then rm -f ${D}depfile exit ${D}{status} fi # move created file to the location we want it in: if test -f ${D}depfile ; then sed -e "s,${D}depobjname:,${D}objfile:,g" ${D}depfile >${D}{depsdir}/${D}{objfilebase}.d rm -f ${D}depfile else # "g++ -MMD -o fooobj.o foosrc.cpp" produces fooobj.d depfile=\`echo "${D}objfile" | sed -e 's/\\..*${D}/.d/g'\` if test ! -f ${D}depfile ; then # "cxx -MD -o fooobj.o foosrc.cpp" creates fooobj.o.d (Compaq C++) depfile="${D}objfile.d" fi if test -f ${D}depfile ; then sed -e "\\,^${D}objfile,!s,${D}depobjname:,${D}objfile:,g" ${D}depfile >${D}{depsdir}/${D}{objfilebase}.d rm -f ${D}depfile fi fi exit 0 elif test ${D}DEPSMODE = unixcc; then ${D}* || exit ${D}? # Run compiler again with deps flag and redirect into the dep file. # It doesn't work if the '-o FILE' option is used, but without it the # dependency file will contain the wrong name for the object. So it is # removed from the command line, and the dep file is fixed with sed. cmd="" while test ${D}# -gt 0; do case "${D}1" in -o ) shift objfile=${D}1 ;; * ) eval arg${D}#=\\${D}1 cmd="${D}cmd \\${D}arg${D}#" ;; esac shift done objfilebase=\`basename ${D}objfile\` builddir=\`dirname ${D}objfile\` depsdir=${D}builddir/${D}DEPSDIRBASE mkdir -p ${D}depsdir eval "${D}cmd ${D}DEPSFLAG" | sed "s|.*:|${D}objfile:|" >${D}{depsdir}/${D}{objfilebase}.d exit 0 else ${D}* exit ${D}? fi EOF chmod +x bk-deps BK_DEPS="`pwd`/bk-deps" fi fi case ${BAKEFILE_HOST} in *-*-cygwin* | *-*-mingw32* ) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args. set dummy ${ac_tool_prefix}windres; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_WINDRES+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$WINDRES"; then ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_WINDRES="${ac_tool_prefix}windres" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi WINDRES=$ac_cv_prog_WINDRES if test -n "$WINDRES"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5 printf "%s\n" "$WINDRES" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_WINDRES"; then ac_ct_WINDRES=$WINDRES # Extract the first word of "windres", so it can be a program name with args. set dummy windres; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_WINDRES+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_WINDRES"; then ac_cv_prog_ac_ct_WINDRES="$ac_ct_WINDRES" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_WINDRES="windres" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_WINDRES=$ac_cv_prog_ac_ct_WINDRES if test -n "$ac_ct_WINDRES"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5 printf "%s\n" "$ac_ct_WINDRES" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_WINDRES" = x; then WINDRES="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac WINDRES=$ac_ct_WINDRES fi else WINDRES="$ac_cv_prog_WINDRES" fi ;; esac BAKEFILE_BAKEFILE_M4_VERSION="0.2.11" BAKEFILE_AUTOCONF_INC_M4_VERSION="0.2.11" COND_BUILD_debug="#" if test "x$BUILD" = "xdebug" ; then COND_BUILD_debug="" fi COND_BUILD_release="#" if test "x$BUILD" = "xrelease" ; then COND_BUILD_release="" fi COND_DEPS_TRACKING_0="#" if test "x$DEPS_TRACKING" = "x0" ; then COND_DEPS_TRACKING_0="" fi COND_DEPS_TRACKING_1="#" if test "x$DEPS_TRACKING" = "x1" ; then COND_DEPS_TRACKING_1="" fi COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1="#" if test "x$PLATFORM_MACOSX" = "x0" -a "x$USE_SOVERCYGWIN" = "x0" -a "x$USE_SOVERSION" = "x1" ; then COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1="" fi COND_PLATFORM_MACOSX_0_USE_SOVERSION_1="#" if test "x$PLATFORM_MACOSX" = "x0" -a "x$USE_SOVERSION" = "x1" ; then COND_PLATFORM_MACOSX_0_USE_SOVERSION_1="" fi COND_PLATFORM_MACOSX_1="#" if test "x$PLATFORM_MACOSX" = "x1" ; then COND_PLATFORM_MACOSX_1="" fi COND_PLATFORM_MACOSX_1_USE_SOVERSION_1="#" if test "x$PLATFORM_MACOSX" = "x1" -a "x$USE_SOVERSION" = "x1" ; then COND_PLATFORM_MACOSX_1_USE_SOVERSION_1="" fi COND_PLATFORM_OS2_1="#" if test "x$PLATFORM_OS2" = "x1" ; then COND_PLATFORM_OS2_1="" fi COND_USE_SOTWOSYMLINKS_1="#" if test "x$USE_SOTWOSYMLINKS" = "x1" ; then COND_USE_SOTWOSYMLINKS_1="" fi COND_USE_SOVERCYGWIN_1_USE_SOVERSION_1="#" if test "x$USE_SOVERCYGWIN" = "x1" -a "x$USE_SOVERSION" = "x1" ; then COND_USE_SOVERCYGWIN_1_USE_SOVERSION_1="" fi COND_USE_SOVERLINUX_1="#" if test "x$USE_SOVERLINUX" = "x1" ; then COND_USE_SOVERLINUX_1="" fi COND_USE_SOVERSION_0="#" if test "x$USE_SOVERSION" = "x0" ; then COND_USE_SOVERSION_0="" fi COND_USE_SOVERSION_1_USE_SOVERSOLARIS_1="#" if test "x$USE_SOVERSION" = "x1" -a "x$USE_SOVERSOLARIS" = "x1" ; then COND_USE_SOVERSION_1_USE_SOVERSOLARIS_1="" fi COND_USE_SOVERSOLARIS_1="#" if test "x$USE_SOVERSOLARIS" = "x1" ; then COND_USE_SOVERSOLARIS_1="" fi COND_WINDOWS_IMPLIB_1="#" if test "x$WINDOWS_IMPLIB" = "x1" ; then COND_WINDOWS_IMPLIB_1="" fi if test "$BAKEFILE_AUTOCONF_INC_M4_VERSION" = "" ; then as_fn_error $? "No version found in autoconf_inc.m4 - bakefile macro was changed to take additional argument, perhaps configure.in wasn't updated (see the documentation)?" "$LINENO" 5 fi if test "$BAKEFILE_BAKEFILE_M4_VERSION" != "$BAKEFILE_AUTOCONF_INC_M4_VERSION" ; then as_fn_error $? "Versions of Bakefile used to generate makefiles ($BAKEFILE_AUTOCONF_INC_M4_VERSION) and configure ($BAKEFILE_BAKEFILE_M4_VERSION) do not match." "$LINENO" 5 fi # # Configure process complete; write out files generated from *.in. # ac_config_files="$ac_config_files doc/userman/userman.dbx install.hta lib/Doxyfile lib/mysql++.h ssx/Doxyfile abi.xml mysql++.spec Makefile version" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by mysql++ $as_me 3.3.0, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ mysql++ config.status 3.3.0 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_separator_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path \ reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX \ postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "doc/userman/userman.dbx") CONFIG_FILES="$CONFIG_FILES doc/userman/userman.dbx" ;; "install.hta") CONFIG_FILES="$CONFIG_FILES install.hta" ;; "lib/Doxyfile") CONFIG_FILES="$CONFIG_FILES lib/Doxyfile" ;; "lib/mysql++.h") CONFIG_FILES="$CONFIG_FILES lib/mysql++.h" ;; "ssx/Doxyfile") CONFIG_FILES="$CONFIG_FILES ssx/Doxyfile" ;; "abi.xml") CONFIG_FILES="$CONFIG_FILES abi.xml" ;; "mysql++.spec") CONFIG_FILES="$CONFIG_FILES mysql++.spec" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "version") CONFIG_FILES="$CONFIG_FILES version" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "libtool":C) # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 # Copyright (C) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # The names of the tagged configurations supported by this script. available_tags='CXX ' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi chmod +x version mysql++-3.3.0/install-sh000755 000765 000024 00000035776 13755367766 015672 0ustar00tangentstaff000000 000000 #!/bin/sh # install - install a program, script, or datafile scriptversion=2020-11-14.01; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 # Create dirs (including intermediate dirs) using mode 755. # This is like GNU 'install' as of coreutils 8.32 (2020). mkdir_umask=22 backupsuffix= chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -p pass -p to $cpprog. -s $stripprog installed files. -S SUFFIX attempt to back up existing files, with suffix SUFFIX. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG By default, rm is invoked with -f; when overridden with RMPROG, it's up to you to specify -f if you want it. If -S is not specified, no backups are attempted. Email bug reports to bug-automake@gnu.org. Automake home page: https://www.gnu.org/software/automake/ " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -p) cpprog="$cpprog -p";; -s) stripcmd=$stripprog;; -S) backupsuffix="$2" shift;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? # Don't chown directories that already exist. if test $dstdir_status = 0; then chowncmd="" fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dstbase=`basename "$src"` case $dst in */) dst=$dst$dstbase;; *) dst=$dst/$dstbase;; esac dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi case $dstdir in */) dstdirslash=$dstdir;; *) dstdirslash=$dstdir/;; esac obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false # The $RANDOM variable is not portable (e.g., dash). Use it # here however when possible just to lower collision chance. tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap ' ret=$? rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null exit $ret ' 0 # Because "mkdir -p" follows existing symlinks and we likely work # directly in world-writeable /tmp, make sure that the '$tmpdir' # directory is successfully created first before we actually test # 'mkdir -p'. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=${dstdirslash}_inst.$$_ rmtmp=${dstdirslash}_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && { test -z "$stripcmd" || { # Create $dsttmp read-write so that cp doesn't create it read-only, # which would cause strip to fail. if test -z "$doit"; then : >"$dsttmp" # No need to fork-exec 'touch'. else $doit touch "$dsttmp" fi } } && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # If $backupsuffix is set, and the file being installed # already exists, attempt a backup. Don't worry if it fails, # e.g., if mv doesn't support -f. if test -n "$backupsuffix" && test -f "$dst"; then $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null fi # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: mysql++-3.3.0/README-Cygwin.txt000644 000765 000024 00000001751 14042362131 016547 0ustar00tangentstaff000000 000000 Prerequisite: Install MySQL ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Before you can build MySQL++, you need to install the libmysqlclient-devel package with Cygwin's setup.exe. In the past, you had to build MySQL from source, since there was no reliable place to get a binary version of the client library for Cygwin. If you must still do this for some reason, here's a hint on how to build just the client library, since you probably will be running either a native Windows version of the server, or have the server installed on another machine entirely: $ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ --infodir=/usr/share/info --mandir=/usr/share/man \ --disable-shared --without-{debug,readline,libedit,server} Building the Library and Example Programs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Having done that, Cygwin behaves like any other Unixy system. See the instructions in README-Unix.txt. mysql++-3.3.0/configure.ac000644 000765 000024 00000006502 14042362131 016100 0ustar00tangentstaff000000 000000 # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with MySQL++; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 # USA # Standard autotools stuff AC_INIT(mysql++, 3.3.0, plusplus@lists.mysql.com, mysql++) AC_CONFIG_HEADER(config.h) AC_CONFIG_MACRO_DIR([config]) AC_CANONICAL_SYSTEM # Enable libtool to decide shared library compile flags (ie -fPIC) AC_PROG_LIBTOOL AC_SUBST([LIBTOOL_DEPS]) # Break package version up into major, minor and bugfix components. MYSQLPP_VERSION_MAJOR=`echo $PACKAGE_VERSION | cut -f1 -d.` AC_SUBST(MYSQLPP_VERSION_MAJOR) MYSQLPP_VERSION_MINOR=`echo $PACKAGE_VERSION | cut -f2 -d.` AC_SUBST(MYSQLPP_VERSION_MINOR) MYSQLPP_VERSION_BUGFIX=`echo $PACKAGE_VERSION | cut -f3 -d.` AC_SUBST(MYSQLPP_VERSION_BUGFIX) # Check for Standard C support AC_PROG_CC AC_HEADER_STDC # Figure out whether/how to handle threading support, if available. AC_ARG_ENABLE(thread-check, [ --enable-thread-check Check for threads, and use if available. ], [ thread_check=yes ]) if test "x$thread_check" = "xyes" then ACX_PTHREAD LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" CC="$PTHREAD_CC" AC_CHECK_HEADERS(synch.h) AC_CHECK_HEADERS(unistd.h) fi # Let caller provide -f to lib/*.pl scripts in a uniform way AC_ARG_WITH([field-limit], AS_HELP_STRING([--with-field-limit=], [set max template query and SSQLS field count]), [], []) if test -n "$with_field_limit" then ( cd lib ; ./querydef.pl -f $with_field_limit ; ./ssqls.pl -f $with_field_limit ) fi # Try to find local getopt(); if we fail, we'll use the one in lib/cmdline.* AC_CHECK_FUNC(getopt, [AC_DEFINE(HAVE_POSIX_GETOPT, [], Define if getopt() is available in unistd.h)], [AC_CHECK_LIB(iberty, getopt, [AC_DEFINE(HAVE_LIBIBERTY_GETOPT, [], Define if getopt() is available in libiberty.h)], [])]) # Checks for libraries and local system features LIB_MATH LIB_SOCKET_NSL MYSQL_C_API_LOCATION MYSQL_WITH_SSL AX_C_LOCALTIME_R AC_CHECK_LIB(intl, main) # If this is Cygwin, add a linker flag to suppress a silly link message. case "${host}" in *cygwin*) LDFLAGS="$LDFLAGS -Wl,--enable-auto-import" ;; esac # Check for Standard C++ support, and extensions. We try for C++11 if # available, but we don't insist on it. # # This must be near the end, because the CPLUSPLUS directive makes # autoconf use the C++ compiler for all subsequent tests! AC_PROG_CXX AC_LANG_CPLUSPLUS STL_SLIST_EXTENSION AX_CXX_COMPILE_STDCXX(11, [], optional) # Include Bakefile macros AC_BAKEFILE([m4_include(config/autoconf_inc.m4)]) # # Configure process complete; write out files generated from *.in. # AC_OUTPUT([\ doc/userman/userman.dbx \ install.hta \ lib/Doxyfile \ lib/mysql++.h \ ssx/Doxyfile \ abi.xml \ mysql++.spec \ Makefile \ version ]) chmod +x version mysql++-3.3.0/mysql++.bkl-original000644 000765 000024 00000051561 14042362131 017406 0ustar00tangentstaff000000 000000 $(DOLLAR)$(DOLLAR)d $(DOLLAR)$(DOLLAR)e $(DOLLAR)$(DOLLAR)f 3.1.0 ../$(STABLEABI)/abi_dumps/mysqlpp ./abi_dumps/mysqlpp no single yes multi C:\Program Files\MySQL\MySQL Connector C 6.1 on off off speed _d yes yes yes yes $(PREFIX)/include/mysql++ .. mysqlpp$(DEBUG_SUFFIX) mysqlpp$(DEBUG_SUFFIX) 3.2.5 lib/beemutex.cpp lib/cmdline.cpp lib/connection.cpp lib/cpool.cpp lib/datetime.cpp lib/dbdriver.cpp lib/field_names.cpp lib/field_types.cpp lib/manip.cpp lib/myset.cpp lib/mysql++.cpp lib/mystring.cpp lib/null.cpp lib/options.cpp lib/qparms.cpp lib/query.cpp lib/result.cpp lib/row.cpp lib/scopedconnection.cpp lib/sql_buffer.cpp lib/sqlstream.cpp lib/ssqls2.cpp lib/stadapter.cpp lib/tcp_connection.cpp lib/transaction.cpp lib/type_info.cpp lib/uds_connection.cpp lib/utility.cpp lib/vallist.cpp lib/wnp_connection.cpp $(DEBUGINFO) $(OPTIMIZE_FLAG) $(THREAD_TYPE) on on $(LIBDIR) UNICODE _UNICODE wsock32 MYSQLPP_MAKING_DLL HAVE_MYSQL_SSL_SET $(MYSQL_WIN_DIR)\include $(MYSQL_WIN_DIR)\lib libmysql MYSQLPP_NO_DLL HAVE_MYSQL_SSL_SET "$(MYSQL_WIN_DIR)\include" -Wl,--enable-stdcall-fixup "$(MYSQL_WIN_DIR)\lib" mysql lib/ssqls.h lib/querydef.h @PTHREAD_CFLAGS@ . @MYSQL_C_INC_DIR@ -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ HAVE_POSIX_GETOPT MYSQLPP_XCODE /usr/local/mysql/include -lmysqlclient /usr/local/mysql/lib lib/*.h $(HEADER_DIR) mysqlpp_ssqls2parse ssx/parsev2.cpp . mysqlpp mysqlpp ssx/genv2.cpp ssx/main.cpp test/array_index.cpp test/cpool.cpp test/datetime.cpp test/inttypes.cpp test/insertpolicy.cpp test/manip.cpp test/null_comparison.cpp test/query_copy.cpp test/qssqls.cpp test/qstream.cpp test/sqlstream.cpp test/ssqls2.cpp ssqls2parse mysqlpp_ssqls2parse test/string.cpp test/tcp.cpp test/uds.cpp test/wnp.cpp mysqlpp_excommon examples/printdata.cpp examples/cgi_jpeg.cpp examples/cpool.cpp examples/dbinfo.cpp examples/deadlock.cpp examples/fieldinf.cpp examples/for_each.cpp examples/load_jpeg.cpp examples/multiquery.cpp examples/resetdb.cpp examples/simple1.cpp examples/simple2.cpp examples/simple3.cpp examples/ssqls1.cpp examples/ssqls2.cpp examples/ssqls3.cpp examples/ssqls4.cpp examples/ssqls5.cpp $ examples/ssqls6.cpp $ examples/store_if.cpp examples/tquery1.cpp examples/tquery2.cpp examples/tquery3.cpp examples/tquery4.cpp examples/transaction.cpp @PACKAGE_NAME@-@PACKAGE_VERSION@ rm -rf doc/latex doc/pdf ; \ cd doc/html/refman ; \ for e in dot html map md5 png ; \ do \ rm -f doxygen.css [a-z]*.$(DDE) ; \ done -rmdir $(HEADER_DIR) rm -f $(DESTDIR)$(libdir)/$(DLLPREFIX)mysqlpp.$(SO_SUFFIX) configure.ac install.hta.in mysql++.bkl mysql++.spec.in doc/userman/userman.dbx.in lib/Doxyfile.in lib/mysql++.h.in ssx/Doxyfile.in bakefile_gen ./config.status cd lib ; ./ssqls.pl lib/ssqls.pl cd lib ; ./querydef.pl lib/querydef.pl ctags --recurse=yes . tags lib/Doxyfile lib/*.cpp lib/*.h cd lib ; doxygen > /dev/null ssx/Doxyfile ssx/*.cpp ssx/*.h cd ssx ; doxygen > /dev/null doc/userman/*.dbx doc/userman/userman.dbx.in cd doc/userman ; make html pdf doc/html/refman/index.html doc/html/refman/ssx/index.html doc/html/userman/index.html for d in config doc/html/refman/ssx doc/html/userman \ doc/refman doc/userman examples lib ssx test ; \ do \ mkdir -p $(PKGNAME)/$(DDD) ; \ done cp -RL *.bat *.css *.in *.md *.txt abi.xml aclocal.m4 \ Bakefiles.bkgen bootstrap cleanmf config.guess config.h \ config.sub configure* dtest \exrun install* Makefile.* \ mysql++.* osver $(PKGNAME) for d in vc200? ; do \ mkdir -p $(PKGNAME)/$(DDD) ; \ cp $(DDD)/*.sln $(DDD)/*.vcproj $(PKGNAME)/$(DDD) ; \ done cp config/*.m4 $(PKGNAME)/config cp -RL doc/README* doc/pdf doc/ssqls-pretty $(PKGNAME)/doc for f in fo2pdf LICENSE.txt Makefile Makefile.hello.* mktxt README.txt \*.dbx \*.in \*.mod \*.txt \*.xsl ; \ do \ cp doc/userman/$(DDF) $(PKGNAME)/doc/userman ; \ done find doc \( -name *.css -o -name *.html \) -exec install {} $(PKGNAME)/{} \; cp doc/html/refman/*.png $(PKGNAME)/doc/html/refman cp doc/userman/userman.dbx.in $(PKGNAME)/doc/userman for e in cpp h jpg txt ; \ do \ cp examples/*.$(DDE) $(PKGNAME)/examples ; \ done for d in mfc wforms ; \ do \ mkdir -p $(PKGNAME)/examples/vstudio/$(DDD) ; \ cp examples/vstudio/$(DDD)/* $(PKGNAME)/examples/vstudio/$(DDD) ; \ done cp lib/*.cpp lib/*.h lib/*.in lib/*.pl $(PKGNAME)/lib cp test/*.cpp $(PKGNAME)/test cp ssx/*.cpp ssx/*.h ssx/*.in $(PKGNAME)/ssx cd $(PKGNAME) ; ./bootstrap nodoc nomaint rm -f $(PKGNAME)/Makefile rm -f $(PKGNAME)/config.log rm -f $(PKGNAME)/config.status rm -fr $(PKGNAME)/autom4te.cache doc $(PKGNAME) tar -chz -f $(PKGNAME).tar.gz $(PKGNAME) rm -rf $(PKGNAME) doc dist cp $(PKGNAME).tar.gz ~/rpmbuild/SOURCES cd ~/rpmbuild/SPECS rpm-prep rpmbuild -ba mysql++.spec rpm-prep rpmbuild -bs mysql++.spec dist cp $(PKGNAME).tar.gz /usr/portage/distfiles cp mysql++.ebuild /usr/portage/dev-db/mysql++/$(PKGNAME).ebuild ebuild /usr/portage/dev-db/mysql++/$(PKGNAME).ebuild digest mysql++-3.3.0/cleanmf000755 000765 000024 00000000064 14042362131 015142 0ustar00tangentstaff000000 000000 #!/bin/sh rm -f Makefile* rm -rf *.xcodeproj vc200? mysql++-3.3.0/ltmain.sh000644 000765 000024 00001170771 14042362142 015447 0ustar00tangentstaff000000 000000 #! /bin/sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2014-01-03.01 # libtool (GNU libtool) 2.4.6 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . PROGRAM=libtool PACKAGE=libtool VERSION=2.4.6 package_revision=2.4.6 ## ------ ## ## Usage. ## ## ------ ## # Run './libtool --help' for help with using this script from the # command line. ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # After configure completes, it has a better idea of some of the # shell tools we need than the defaults used by the functions shared # with bootstrap, so set those here where they can still be over- # ridden by the user, but otherwise take precedence. : ${AUTOCONF="autoconf"} : ${AUTOMAKE="automake"} ## -------------------------- ## ## Source external libraries. ## ## -------------------------- ## # Much of our low-level functionality needs to be sourced from external # libraries, which are installed to $pkgauxdir. # Set a version string for this script. scriptversion=2015-01-20.17; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # Copyright (C) 2004-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # As a special exception to the GNU General Public License, if you distribute # this file as part of a program or library that is built using GNU Libtool, # you may include this file under the same distribution terms that you use # for the rest of that program. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some retarded systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo 'GREP' >> conftest.nl "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s|\([`"$\\]\)|\\\1|g' # Same as above, but do not quote variable references. sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' # Sed substitution that converts a w32 file name or path # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_double_quote_subst, that '$' was protected from # expansion. Since each input '\' is now two '\'s, look for any number # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath=$0 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # We should try to minimise forks, especially on Windows where they are # unreasonably slow, so skip the feature probes when bash or zsh are # being used: if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then : ${_G_HAVE_ARITH_OP="yes"} : ${_G_HAVE_XSI_OPS="yes"} # The += operator was introduced in bash 3.1 case $BASH_VERSION in [12].* | 3.0 | 3.0*) ;; *) : ${_G_HAVE_PLUSEQ_OP="yes"} ;; esac fi # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. test -z "$_G_HAVE_PLUSEQ_OP" \ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ && _G_HAVE_PLUSEQ_OP=yes if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1+=\\ \$func_quote_for_eval_result" }' else func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1=\$$1\\ \$func_quote_for_eval_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT # -------------------------------------------------------- # Perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_mkdir_p_IFS # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # func_normal_abspath PATH # ------------------------ # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` while :; do # Processed it all yet? if test / = "$func_normal_abspath_tpath"; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result"; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=$func_dirname_result if test -z "$func_relative_path_tlibdir"; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_for_eval ARG... # -------------------------- # Aesthetically quote ARGs to be evaled later. # This function returns two values: # i) func_quote_for_eval_result # double-quoted, suitable for a subsequent eval # ii) func_quote_for_eval_unquoted_result # has all characters that are still active within double # quotes backslashified. func_quote_for_eval () { $debug_cmd func_quote_for_eval_unquoted_result= func_quote_for_eval_result= while test 0 -lt $#; do case $1 in *[\\\`\"\$]*) _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; *) _G_unquoted_arg=$1 ;; esac if test -n "$func_quote_for_eval_unquoted_result"; then func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" else func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" fi case $_G_unquoted_arg in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_quoted_arg=\"$_G_unquoted_arg\" ;; *) _G_quoted_arg=$_G_unquoted_arg ;; esac if test -n "$func_quote_for_eval_result"; then func_append func_quote_for_eval_result " $_G_quoted_arg" else func_append func_quote_for_eval_result "$_G_quoted_arg" fi shift done } # func_quote_for_expand ARG # ------------------------- # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { $debug_cmd case $1 in *[\\\`\"]*) _G_arg=`$ECHO "$1" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; *) _G_arg=$1 ;; esac case $_G_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_arg=\"$_G_arg\" ;; esac func_quote_for_expand_result=$_G_arg } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_for_expand "$_G_cmd" eval "func_notquiet $func_quote_for_expand_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_for_expand "$_G_cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_tr_sh # ---------- # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: #! /bin/sh # Set a version string for this script. scriptversion=2014-01-07.03; # UTC # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # Copyright (C) 2010-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# warranty; '. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # to the main code. A hook is just a named list of of function, that can # be run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of functions called by FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It is assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook funcions.n" ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do eval $_G_hook '"$@"' # store returned options list back into positional # parameters for next 'cmd' execution. eval _G_hook_result=\$${_G_hook}_result eval set dummy "$_G_hook_result"; shift done func_quote_for_eval ${1+"$@"} func_run_hooks_result=$func_quote_for_eval_result } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list in your hook function, remove any # options that you action, and then pass back the remaining unprocessed # options in '_result', escaped suitably for # 'eval'. Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # func_quote_for_eval ${1+"$@"} # my_options_prep_result=$func_quote_for_eval_result # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # # Note that for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # ;; # *) set dummy "$_G_opt" "$*"; shift; break ;; # esac # done # # func_quote_for_eval ${1+"$@"} # my_silent_option_result=$func_quote_for_eval_result # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # # func_quote_for_eval ${1+"$@"} # my_option_validation_result=$func_quote_for_eval_result # } # func_add_hook func_validate_options my_option_validation # # You'll alse need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd func_options_prep ${1+"$@"} eval func_parse_options \ ${func_options_prep_result+"$func_options_prep_result"} eval func_validate_options \ ${func_parse_options_result+"$func_parse_options_result"} eval func_run_hooks func_options \ ${func_validate_options_result+"$func_validate_options_result"} # save modified positional parameters for caller func_options_result=$func_run_hooks_result } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propogate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before # returning. func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= func_run_hooks func_options_prep ${1+"$@"} # save modified positional parameters for caller func_options_prep_result=$func_run_hooks_result } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd func_parse_options_result= # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. func_run_hooks func_parse_options ${1+"$@"} # Adjust func_parse_options positional parameters to match eval set dummy "$func_run_hooks_result"; shift # Break out of the loop if we already parsed every option. test $# -gt 0 || break _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) test $# = 0 && func_missing_arg $_G_opt && break case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} func_parse_options_result=$func_quote_for_eval_result } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" func_run_hooks func_validate_options ${1+"$@"} # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE # save modified positional parameters for caller func_validate_options_result=$func_run_hooks_result } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables after # splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} test "x$func_split_equals_lhs" = "x$1" \ && func_split_equals_rhs= }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # func_split_short_opt SHORTOPT # ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /(C)/!b go :more /\./!{ N s|\n# | | b more } :go /^# Written by /,/# warranty; / { s|^# || s|^# *$|| s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| p } /^# Written by / { s|^# || p } /^warranty; /q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. scriptversion='(GNU libtool) 2.4.6' # func_echo ARG... # ---------------- # Libtool also displays the current mode in messages, so override # funclib.sh func_echo with this custom definition. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" done IFS=$func_echo_IFS } # func_warning ARG... # ------------------- # Libtool warnings are not categorized, so override funclib.sh # func_warning with this simpler definition. func_warning () { $debug_cmd $warning_func ${1+"$@"} } ## ---------------- ## ## Options parsing. ## ## ---------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --mode=MODE use operation mode MODE --no-warnings equivalent to '-Wnone' --preserve-dup-deps don't remove duplicate dependency libraries --quiet, --silent don't print informational messages --tag=TAG use configuration variables from tag TAG -v, --verbose print more informational messages than default --version print version information -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. When passed as first option, '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. Try '$progname --help --mode=MODE' for a more detailed description of MODE. When reporting a bug, please describe a test case to reproduce it and include the following information: host-triplet: $host shell: $SHELL compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) version: $progname (GNU libtool) 2.4.6 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . GNU libtool home page: . General help using GNU software: ." exit 0 } # func_lo2o OBJECT-NAME # --------------------- # Transform OBJECT-NAME from a '.lo' suffix to the platform specific # object suffix. lo2o=s/\\.lo\$/.$objext/ o2lo=s/\\.$objext\$/.lo/ if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_lo2o () { case $1 in *.lo) func_lo2o_result=${1%.lo}.$objext ;; * ) func_lo2o_result=$1 ;; esac }' # func_xform LIBOBJ-OR-SOURCE # --------------------------- # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) # suffix to a '.lo' libtool-object suffix. eval 'func_xform () { func_xform_result=${1%.*}.lo }' else # ...otherwise fall back to using sed. func_lo2o () { func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` } func_xform () { func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` } fi # func_fatal_configuration ARG... # ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func__fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } # func_config # ----------- # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # ------------- # Display the features supported by this script. func_features () { echo "host: $host" if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag TAGNAME # ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname=$1 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf=/$re_begincf/,/$re_endcf/p # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # libtool_options_prep [ARG]... # ----------------------------- # Preparation for options parsed by libtool. libtool_options_prep () { $debug_mode # Option defaults: opt_config=false opt_dlopen= opt_dry_run=false opt_help=false opt_mode= opt_preserve_dup_deps=false opt_quiet=false nonopt= preserve_args= # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Pass back the list of options. func_quote_for_eval ${1+"$@"} libtool_options_prep_result=$func_quote_for_eval_result } func_add_hook func_options_prep libtool_options_prep # libtool_parse_options [ARG]... # --------------------------------- # Provide handling for libtool specific options. libtool_parse_options () { $debug_cmd # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) func_config ;; --dlopen|-dlopen) opt_dlopen="${opt_dlopen+$opt_dlopen }$1" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) func_features ;; --finish) set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $_G_opt && break opt_mode=$1 case $1 in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $_G_opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" ;; --no-warnings|--no-warning|--no-warn) opt_warning=false func_append preserve_args " $_G_opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $_G_opt" ;; --silent|--quiet) opt_quiet=: opt_verbose=false func_append preserve_args " $_G_opt" ;; --tag) test $# = 0 && func_missing_arg $_G_opt && break opt_tag=$1 func_append preserve_args " $_G_opt $1" func_enable_tag "$1" shift ;; --verbose|-v) opt_quiet=false opt_verbose=: func_append preserve_args " $_G_opt" ;; # An option not handled by this hook function: *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} libtool_parse_options_result=$func_quote_for_eval_result } func_add_hook func_parse_options libtool_parse_options # libtool_validate_options [ARG]... # --------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. libtool_validate_options () { # save first non-option argument if test 0 -lt $#; then nonopt=$1 shift fi # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" case $host in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match test yes != "$build_libtool_libs" \ && test yes != "$build_old_libs" \ && func_fatal_configuration "not configured to build any kind of library" # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test execute != "$opt_mode"; then func_error "unrecognized option '-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help=$help help="Try '$progname --help --mode=$opt_mode' for more information." } # Pass back the unparsed argument list func_quote_for_eval ${1+"$@"} libtool_validate_options_result=$func_quote_for_eval_result } func_add_hook func_validate_options libtool_validate_options # Process options as early as possible so that --help and --version # can return quickly. func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## ----------- ## ## Main. ## ## ----------- ## magic='%%%MAGIC variable%%%' magic_exe='%%%MAGIC EXE variable%%%' # Global variables. extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # func_generated_by_libtool # True iff stdin has been generated by Libtool. This function is only # a basic sanity check; it will hardly flush out determined imposters. func_generated_by_libtool_p () { $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test yes = "$lalib_p" } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { test -f "$1" && $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $debug_cmd save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # 'FILE.' does not work on cygwin managed mounts. func_source () { $debug_cmd case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $debug_cmd if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=$1 if test yes = "$build_libtool_libs"; then write_lobj=\'$2\' else write_lobj=none fi if test yes = "$build_old_libs"; then write_oldobj=\'$3\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $debug_cmd # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $debug_cmd if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $debug_cmd # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $debug_cmd if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result=$1 fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $debug_cmd if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result=$3 fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $debug_cmd case $4 in $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $debug_cmd $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $debug_cmd case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result=$1 } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $debug_cmd if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd=func_convert_path_$func_stripname_result fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $debug_cmd func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result=$1 } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_dll_def_p FILE # True iff FILE is a Windows DLL '.def' file. # Keep in sync with _LT_DLL_DEF_P in libtool.m4 func_dll_def_p () { $debug_cmd func_dll_def_p_tmp=`$SED -n \ -e 's/^[ ]*//' \ -e '/^\(;.*\)*$/d' \ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ -e q \ "$1"` test DEF = "$func_dll_def_p_tmp" } # func_mode_compile arg... func_mode_compile () { $debug_cmd # Get the compilation command and the source file. base_compile= srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg=$arg arg_mode=normal ;; target ) libobj=$arg arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs=$IFS; IFS=, for arg in $args; do IFS=$save_ifs func_append_quoted lastarg "$arg" done IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg=$srcfile srcfile=$arg ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj=$func_basename_result } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test yes = "$build_libtool_libs" \ || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname=$func_basename_result xdir=$func_dirname_result lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test no = "$compiler_c_o"; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext lockfile=$output_obj.lock else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test yes = "$build_old_libs"; then if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix '.c' with the library object suffix, '.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the '--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE use a list of object files found in FILE to specify objects -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with '-') are ignored. Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in '.la', then a libtool library is created, only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created using 'ar' and 'ranlib', or on Windows using 'lib'. If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test : = "$opt_help"; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | $SED '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $debug_cmd # The first argument is the command name. cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "'$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir=$func_dirname_result ;; *) func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file=$progdir/$program fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if $opt_dry_run; then # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd=\$cmd$args fi } test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $debug_cmd libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "'$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument '$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $debug_cmd # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=false stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=: if $isdir; then destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." destdir=$func_dirname_result destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking '$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname=$1 shift srcname=$realname test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme=$stripme case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= ;; esac ;; os2*) case $realname in *_dll.a) tstripme= ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name=$func_basename_result instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest=$destfile destfile= ;; *) func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=.exe fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script '$wrapper'" finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then func_warning "'$lib' has not been installed in '$libdir'" finalize=false fi done relink_command= func_source "$wrapper" outputname= if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file=$func_basename_result outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file=$outputname else func_warning "cannot relink '$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name=$func_basename_result # Set up the ranlib parameters. oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $debug_cmd my_outputname=$1 my_originator=$2 my_pic_p=${3-false} my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* External symbol declarations for the compiler. */\ " if test yes = "$dlself"; then func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" name=$func_basename_result case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi func_show_eval '$RM "${nlist}I"' if test -n "$global_symbol_to_import"; then eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[];\ " if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ static void lt_syminit(void) { LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; for (; symbol->name; ++symbol) {" $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" echo >> "$output_objdir/$my_dlsyms" "\ } }" fi echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = { {\"$my_originator\", (void *) 0}," if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ {\"@INIT@\", (void *) <_syminit}," fi case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $debug_cmd win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || func_cygming_gnu_implib_p "$1" then win32_nmres=import else win32_nmres= fi ;; *) func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s|.*|import| p q } }'` ;; esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $debug_cmd sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $debug_cmd match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive that possess that section. Heuristic: eliminate # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $debug_cmd if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result= fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $debug_cmd f_ex_an_ar_dir=$1; shift f_ex_an_ar_oldlib=$1 if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $debug_cmd my_gentop=$1; shift my_oldlibs=${1+"$@"} my_oldobjs= my_xlib= my_xabs= my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` func_basename "$darwin_archive" darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches; do func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" cd "unfat-$$/$darwin_base_archive-$darwin_arch" func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result=$my_oldobjs } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ #if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC #elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined other platforms ... */ #endif #if defined PATH_MAX # define LT_PATHMAX PATH_MAX #elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free (stale); stale = 0; } \ } while (0) #if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; size_t tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined HAVE_DOS_BASED_FILE_SYSTEM if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined HAVE_DOS_BASED_FILE_SYSTEM } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = (size_t) (q - p); p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (STREQ (str, pat)) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else size_t len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { size_t orig_value_len = strlen (orig_value); size_t add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ size_t len = strlen (new_value); while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $debug_cmd case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_suncc_cstd_abi # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! # Several compiler flags select an ABI that is incompatible with the # Cstd library. Avoid specifying it if any are in CXXFLAGS. func_suncc_cstd_abi () { $debug_cmd case " $compile_command " in *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) suncc_use_cstd_abi=no ;; *) suncc_use_cstd_abi=yes ;; esac } # func_mode_link arg... func_mode_link () { $debug_cmd case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=false prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test yes != "$build_libtool_libs" \ && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg=$1 shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir=$arg prev= continue ;; dlfiles|dlprefiles) $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=: } case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test no = "$dlself"; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test dlprefiles = "$prev"; then dlself=yes elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols=$arg test -f "$arg" \ || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex=$arg prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir=$arg prev= continue ;; mllvm) # Clang does not use LLVM to link, so we can simply discard any # '-mllvm $arg' options when doing the link step. prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object fi # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; os2dllname) os2dllname=$arg prev= continue ;; precious_regex) precious_files_regex=$arg prev= continue ;; release) release=-$arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds=$arg prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg=$arg case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between '-L' and '$1'" else func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of '$dir'" dir=$absdir ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test X-lc = "X$arg" && continue ;; esac elif test X-lc_r = "X$arg"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -mllvm) prev=mllvm continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module=$wl-multi_module continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "'-no-install' is ignored for $host" func_warning "assuming '-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -os2dllname) prev=os2dllname continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization # -stdlib=* select c++ std lib with clang -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; -Z*) if test os2 = "`expr $host : '.*\(os2\)'`"; then # OS/2 uses -Zxxx to specify OS/2-specific options compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case $arg in -Zlinker | -Zstack) prev=xcompiler ;; esac continue else # Otherwise treat like 'Some other compiler flag' below func_quote_for_eval "$arg" arg=$func_quote_for_eval_result fi ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result test none = "$pic_object" || { # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object } # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test dlfiles = "$prev"; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test dlprefiles = "$prev"; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the '$prevarg' option requires an argument" if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname=$func_basename_result libobjs_save=$libobjs if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" # Definition is injected by LT_CONFIG during libtool generation. func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" func_dirname "$output" "/" "" output_objdir=$func_dirname_result$objdir func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test lib = "$linkmode"; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=false newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test lib,link = "$linkmode,$pass"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs=$tmp_deplibs fi if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass"; then libs=$deplibs deplibs= fi if test prog = "$linkmode"; then case $pass in dlopen) libs=$dlfiles ;; dlpreopen) libs=$dlprefiles ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test lib,dlpreopen = "$linkmode,$pass"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs=$dlprefiles fi if test dlopen = "$pass"; then # Collect dlpreopened libraries save_deplibs=$deplibs deplibs= fi for deplib in $libs; do lib= found=false case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test lib != "$linkmode" && test prog != "$linkmode"; then func_warning "'-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test lib = "$linkmode"; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib=$searchdir/lib$name$search_ext if test -f "$lib"; then if test .la = "$search_ext"; then found=: else found=false fi break 2 fi done done if $found; then # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll=$l done if test "X$ll" = "X$old_library"; then # only static version available found=false func_dirname "$lib" "" "." ladir=$func_dirname_result lib=$ladir/$old_library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi else # deplib doesn't seem to be a libtool library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l *.ltframework) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test conv = "$pass" && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi if test scan = "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "'-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test link = "$pass"; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=false case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=: fi ;; pass_all) valid_a_lib=: ;; esac if $valid_a_lib; then echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" else echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." fi ;; esac continue ;; prog) if test link != "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test conv = "$pass"; then deplibs="$deplib $deplibs" elif test prog = "$linkmode"; then if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=: continue ;; esac # case $deplib $found || test -f "$lib" \ || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "'$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir=$func_dirname_result dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass" || { test prog != "$linkmode" && test lib != "$linkmode"; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test conv = "$pass"; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for '$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" elif test prog != "$linkmode" && test lib != "$linkmode"; then func_fatal_error "'$lib' is not a convenience library" fi tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test yes = "$prefer_static_libs" || test built,no = "$prefer_static_libs,$installed"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib=$l done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for '$lib'" fi # This library was specified with -dlopen. if test dlopen = "$pass"; then test -z "$libdir" \ && func_fatal_error "cannot -dlopen a convenience library: '$lib'" if test -z "$dlname" || test yes != "$dlopen_support" || test no = "$build_libtool_libs" then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of '$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir=$ladir fi ;; esac func_basename "$lib" laname=$func_basename_result # Find the relevant object directory and library name. if test yes = "$installed"; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library '$lib' was moved." dir=$ladir absdir=$abs_ladir libdir=$abs_ladir else dir=$lt_sysroot$libdir absdir=$lt_sysroot$libdir fi test yes = "$hardcode_automatic" && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir=$ladir absdir=$abs_ladir # Remove this search path later func_append notinst_path " $abs_ladir" else dir=$ladir/$objdir absdir=$abs_ladir/$objdir # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test dlpreopen = "$pass"; then if test -z "$libdir" && test prog = "$linkmode"; then func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" fi case $host in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test lib = "$linkmode"; then deplibs="$dir/$old_library $deplibs" elif test prog,link = "$linkmode,$pass"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test prog = "$linkmode" && test link != "$pass"; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=false if test no != "$link_all_deplibs" || test -z "$library_names" || test no = "$build_libtool_libs"; then linkalldeplibs=: fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if $linkalldeplibs; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test prog,link = "$linkmode,$pass"; then if test -n "$library_names" && { { test no = "$prefer_static_libs" || test built,yes = "$prefer_static_libs,$installed"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then # Make sure the rpath contains only unique directories. case $temp_rpath: in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if $alldeplibs && { test pass_all = "$deplibs_check_method" || { test yes = "$build_libtool_libs" && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test built = "$use_static_libs" && test yes = "$installed"; then use_static_libs=no fi if test -n "$library_names" && { test no = "$use_static_libs" || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc* | *os2*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test no = "$installed"; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule= for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule=$dlpremoduletest break fi done if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then echo if test prog = "$linkmode"; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test lib = "$linkmode" && test yes = "$hardcode_into_libs"; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname=$1 shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname=$dlname elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc* | *os2*) func_arith $current - $age major=$func_arith_result versuffix=-$major ;; esac eval soname=\"$soname_spec\" else soname=$realname fi # Make a new name for the extract_expsyms_cmds to use soroot=$soname func_basename "$soroot" soname=$func_basename_result func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from '$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for '$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test prog = "$linkmode" || test relink != "$opt_mode"; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test no = "$hardcode_direct"; then add=$dir/$linklib case $host in *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; *-*-sysv4*uw2*) add_dir=-L$dir ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir=-L$dir ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we cannot # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library"; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add=$dir/$old_library fi elif test -n "$old_library"; then add=$dir/$old_library fi fi esac elif test no = "$hardcode_minus_L"; then case $host in *-*-sunos*) add_shlibpath=$dir ;; esac add_dir=-L$dir add=-l$name elif test no = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; relink) if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$dir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$absdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name elif test yes = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; *) lib_linked=no ;; esac if test yes != "$lib_linked"; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test prog = "$linkmode"; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test yes != "$hardcode_direct" && test yes != "$hardcode_minus_L" && test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test prog = "$linkmode" || test relink = "$opt_mode"; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$libdir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$libdir add=-l$name elif test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add=-l$name elif test yes = "$hardcode_automatic"; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib"; then add=$inst_prefix_dir$libdir/$linklib else add=$libdir/$linklib fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir=-L$libdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name fi if test prog = "$linkmode"; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test prog = "$linkmode"; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test unsupported != "$hardcode_direct"; then test -n "$old_library" && linklib=$old_library compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test yes = "$build_libtool_libs"; then # Not a shared library if test pass_all != "$deplibs_check_method"; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system cannot link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test yes = "$module"; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test lib = "$linkmode"; then if test -n "$dependency_libs" && { test yes != "$hardcode_into_libs" || test yes = "$build_old_libs" || test yes = "$link_static"; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs=$temp_deplibs fi func_append newlib_search_path " $absdir" # Link against this library test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test no != "$link_all_deplibs"; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path=$deplib ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of '$dir'" absdir=$dir fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names"; then for tmp in $deplibrary_names; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl"; then depdepl=$absdir/$objdir/$depdepl darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" path= fi fi ;; *) path=-L$absdir/$objdir ;; esac else eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "'$deplib' seems to be moved" path=-L$absdir fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test link = "$pass"; then if test prog = "$linkmode"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs=$newdependency_libs if test dlpreopen = "$pass"; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test dlopen != "$pass"; then test conv = "$pass" || { # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= } if test prog,link = "$linkmode,$pass"; then vars="compile_deplibs finalize_deplibs" else vars=deplibs fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Add Sun CC postdeps if required: test CXX = "$tagname" && { case $host_os in linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; solaris*) func_cc_basename "$CC" case $func_cc_basename_result in CC* | sunCC*) func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; esac } # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i= ;; esac if test -n "$i"; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test prog = "$linkmode"; then dlfiles=$newdlfiles fi if test prog = "$linkmode" || test lib = "$linkmode"; then dlprefiles=$newdlprefiles fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "'-R' is ignored for archives" test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "'-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "'-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs=$output func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form 'libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test no = "$module" \ && func_fatal_help "libtool library '$output' must begin with 'lib'" if test no != "$need_lib_prefix"; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test pass_all != "$deplibs_check_method"; then func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test no = "$dlself" \ || func_warning "'-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test 1 -lt "$#" \ && func_warning "ignoring multiple '-rpath's for a libtool library" install_libdir=$1 oldlibs= if test -z "$rpath"; then if test yes = "$build_libtool_libs"; then # Building a libtool convenience library. # Some compilers have problems with a '.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "'-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs=$IFS; IFS=: set dummy $vinfo 0 0 0 shift IFS=$save_ifs test -n "$7" && \ func_fatal_help "too many parameters to '-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major=$1 number_minor=$2 number_revision=$3 # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # that has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|freebsd-elf|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_revision ;; freebsd-aout|qnx|sunos) current=$number_major revision=$number_minor age=0 ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_minor lt_irix_increment=no ;; esac ;; no) current=$1 revision=$2 age=$3 ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT '$current' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION '$revision' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE '$age' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE '$age' is greater than the current interface number '$current'" func_fatal_error "'$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" # On Darwin other compilers case $CC in nagfor*) verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" ;; *) verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; esac ;; freebsd-aout) major=.$current versuffix=.$current.$revision ;; freebsd-elf) func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; irix | nonstopux) if test no = "$lt_irix_increment"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring=$verstring_prefix$major.$revision # Add in all the interfaces that we are compatible with. loop=$revision while test 0 -ne "$loop"; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring_prefix$major.$iface:$verstring done # Before this point, $major must not contain '.'. major=.$major versuffix=$major.$revision ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=.$current.$age.$revision verstring=$current.$age.$revision # Add in all the interfaces that we are compatible with. loop=$age while test 0 -ne "$loop"; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring:$iface.0 done # Make executables depend on our current version. func_append verstring ":$current.0" ;; qnx) major=.$current versuffix=.$current ;; sco) major=.$current versuffix=.$current ;; sunos) major=.$current versuffix=.$current.$revision ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 file systems. func_arith $current - $age major=$func_arith_result versuffix=-$major ;; *) func_fatal_configuration "unknown library version type '$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring=0.0 ;; esac if test no = "$need_version"; then versuffix= else versuffix=.0.0 fi fi # Remove version info from name if versioning should be avoided if test yes,no = "$avoid_version,$need_version"; then major= versuffix= verstring= fi # Check to see if the archive will have undefined symbols. if test yes = "$allow_undefined"; then if test unsupported = "$allow_undefined_flag"; then if test yes = "$build_old_libs"; then func_warning "undefined symbols not allowed in $host shared libraries; building static only" build_libtool_libs=no else func_fatal_error "can't build $host shared library unless -no-undefined is specified" fi fi else # Don't allow undefined symbols. allow_undefined_flag=$no_undefined_flag fi fi func_generate_dlsyms "$libname" "$libname" : func_append libobjs " $symfileobj" test " " = "$libobjs" && libobjs= if test relink != "$opt_mode"; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) if test -n "$precious_files_regex"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles=$dlfiles dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles=$dlprefiles dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test yes = "$build_libtool_libs"; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test yes = "$build_libtool_need_lc"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release= versuffix= major= newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib=$potent_lib while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | $SED 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib= ;; esac fi if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib=$potent_lib # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs= tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test yes = "$allow_libtool_libs_with_static_runtimes"; then for i in $predeps $postdeps; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test none = "$deplibs_check_method"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test yes = "$droppeddeps"; then if test yes = "$module"; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test no = "$allow_undefined"; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs=$new_libs # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test yes = "$build_libtool_libs"; then # Remove $wl instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test yes = "$hardcode_into_libs"; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath=$finalize_rpath test relink = "$opt_mode" || rpath=$compile_rpath$rpath for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath=$finalize_shlibpath test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname=$1 shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname=$realname fi if test -z "$dlname"; then dlname=$soname fi lib=$output_objdir/$realname linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols=$output_objdir/$libname.uexp func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile func_dll_def_p "$export_symbols" || { # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols=$export_symbols export_symbols= always_export_symbols=yes } fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs=$IFS; IFS='~' for cmd1 in $cmds; do IFS=$save_ifs # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test yes = "$try_normal_branch" \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=$output_objdir/$output_la.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS=$save_ifs if test -n "$export_symbols_regex" && test : != "$skipped_export"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test : != "$skipped_export" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs=$tmp_deplibs if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test yes = "$compiler_needs_object" && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test : != "$skipped_export" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then output=$output_objdir/$output_la.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then output=$output_objdir/$output_la.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test yes = "$compiler_needs_object"; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-$k.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test -z "$objlist" || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test 1 -eq "$k"; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-$k.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-$k.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi ${skipped_export-false} && { func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi } test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs=$IFS; IFS='~' for cmd in $concat_cmds; do IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi ${skipped_export-false} && { if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi } libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs=$IFS; IFS='~' for cmd in $cmds; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs # Restore the uninstalled library and exit if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test yes = "$module" || test yes = "$export_dynamic"; then # On all known operating systems, these are identical. dlname=$soname fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "'-R' is ignored for objects" test -n "$vinfo" && \ func_warning "'-version-info' is ignored for objects" test -n "$release" && \ func_warning "'-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object '$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj=$output ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # if reload_cmds runs $LD directly, get rid of -Wl from # whole_archive_flag_spec and hope we can get by with turning comma # into space. case $reload_cmds in *\$LD[\ \$]*) wl= ;; esac if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags else gentop=$output_objdir/${obj}x func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test yes = "$build_libtool_libs" || libobjs=$non_pic_objects # Create the old-style object. reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs output=$obj func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi test yes = "$build_libtool_libs" || { if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS } if test -n "$pic_flag" || test default != "$pic_mode"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output=$libobj func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "'-version-info' is ignored for programs" test -n "$release" && \ func_warning "'-release' is ignored for programs" $preload \ && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test CXX = "$tagname"; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " $wl-bind_at_load" func_append finalize_command " $wl-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs=$new_libs func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath=$rpath rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath=$rpath if test -n "$libobjs" && test yes = "$build_old_libs"; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" false # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=: case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=false ;; *cygwin* | *mingw* ) test yes = "$build_libtool_libs" || wrappers_required=false ;; *) if test no = "$need_relink" || test yes != "$build_libtool_libs"; then wrappers_required=false fi ;; esac $wrappers_required || { # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command=$compile_command$compile_rpath # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.$objext"; then func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' fi exit $exit_status } if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test yes = "$no_install"; then # We don't need to create a wrapper script. link_command=$compile_var$compile_command$compile_rpath # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi case $hardcode_action,$fast_install in relink,*) # Fast installation is not supported link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath func_warning "this platform does not like uninstalled shared libraries" func_warning "'$output' will be relinked during installation" ;; *,yes) link_command=$finalize_var$compile_command$finalize_rpath relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` ;; *,no) link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath ;; *,needless) link_command=$finalize_var$compile_command$finalize_rpath relink_command= ;; esac # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource=$output_path/$objdir/lt-$output_name.c cwrapper=$output_path/$output_name.exe $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host"; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do case $build_libtool_libs in convenience) oldobjs="$libobjs_save $symfileobj" addlibs=$convenience build_libtool_libs=no ;; module) oldobjs=$libobjs_save addlibs=$old_convenience build_libtool_libs=no ;; *) oldobjs="$old_deplibs $non_pic_objects" $preload && test -f "$symfileobj" \ && func_append oldobjs " $symfileobj" addlibs=$old_convenience ;; esac if test -n "$addlibs"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase=$func_basename_result case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj"; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test -z "$oldobjs"; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test yes = "$build_old_libs" && old_library=$libname.$libext func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test yes = "$hardcode_automatic"; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test yes = "$installed"; then if test -z "$install_libdir"; then break fi output=$output_objdir/${outputname}i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name=$func_basename_result func_resolve_sysroot "$deplib" eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs=$newdependency_libs newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles=$newdlprefiles else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles=$newdlprefiles fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test -n "$bindir"; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result/$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that cannot go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test no,yes = "$installed,$need_relink"; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } if test link = "$opt_mode" || test relink = "$opt_mode"; then func_mode_link ${1+"$@"} fi # func_mode_uninstall arg... func_mode_uninstall () { $debug_cmd RM=$nonopt files= rmforce=false exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic for arg do case $arg in -f) func_append RM " $arg"; rmforce=: ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir=$func_dirname_result if test . = "$dir"; then odir=$objdir else odir=$dir/$objdir fi func_basename "$file" name=$func_basename_result test uninstall = "$opt_mode" && odir=$dir # Remember odir for removal later, being careful to avoid duplicates if test clean = "$opt_mode"; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif $rmforce; then continue fi rmfiles=$file case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case $opt_mode in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test none != "$pic_object"; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test none != "$non_pic_object"; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test clean = "$opt_mode"; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.$objext" if test yes = "$fast_install" && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name"; then func_append rmfiles " $odir/lt-$noexename.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the $objdir's in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then func_mode_uninstall ${1+"$@"} fi test -z "$opt_mode" && { help=$generic_help func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode '$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # where we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: mysql++-3.3.0/bootstrap000755 000765 000024 00000006066 14042362131 015562 0ustar00tangentstaff000000 000000 #!/bin/bash ARGS=1 BF_OPTIONS= MAINT_FLAGS="--cache-file=config.cache" while [ $ARGS != 0 ] do case "$1" in bat) cmd /c bootstrap.bat $BF_OPTIONS exit 0 ;; nodoc) BF_OPTIONS="-DBUILDDOCS=no $BF_OPTIONS" shift ;; noex) BF_OPTIONS="-DBUILDEXAMPLES=no $BF_OPTIONS" shift ;; nolib) BF_OPTIONS="-DBUILDLIBRARY=no $BF_OPTIONS" shift ;; nomaint) MAINT_FLAGS= shift ;; noopt) export CXXFLAGS="-g -O0" shift ;; pedantic) export CXXFLAGS="-g -O2 -ansi -pedantic -Wall -Wextra -W -Wold-style-cast -Wfloat-equal -Wwrite-strings -Wno-overloaded-virtual -Wno-long-long -Wno-variadic-macros -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC" shift ;; *) ARGS=0 ;; esac done # Find location of Bakefile stuff. bakefilize=bakefilize for d in /usr/share/aclocal /usr/local/share/aclocal \ '/c/Program Files (x86)/Bakefile/autoconf' do BAKEFILE_M4="$d" if [ -e "$BAKEFILE_M4/bakefile.m4" ] then if [ -x "$d/bakefilize" ] then bakefilize="$d/bakefilize" fi break fi done if [ ! -e "$BAKEFILE_M4/bakefile.m4" ] then echo echo "Failed to find bakefile.m4. Add the directory containing" echo "this to the bootstrap script." echo exit 1 fi if [ ! -x "$bakefilize" ] && ! type -p "$bakefilize" > /dev/null then echo echo "Failed to find the bakefilize script. Is Bakefile installed?" echo exit 1 fi # Check for existence of needed tools, so we can give a better error # message than the shell will. tools="make" # POSIX tools="$tools aclocal autoconf autoheader autoreconf libtoolize" # Autotools tools="$tools bakefile bakefile_gen" # Bakefile for tool in $tools do if ! type -p $tool > /dev/null then echo "FAILED to find build tool '$tool'!" echo echo BOOTSTRAP FAILED! echo exit 1 fi done # Do Bakefile stuff first. Autoconf can't succeed without # autoconf_in.m4, which Bakefile creates. success= set -x && for d in 3 5 8 ; do mkdir -p vc200$d ; done && "$bakefilize" && rm -f INSTALL && bakefile_gen $BF_OPTIONS && bakefile -f gnu -o Makefile.simple -DBUILDLIBRARY=no mysql++.bkl && set +x && success=shonuff # Do the autotools stuff if Bakefile steps succeeded # # We're calling automake only because autoconf depends on install-sh or # similar, and it *ass*umes you're using automake as well, so it # delegates installation of that to automake! This is why we ignore its # errors: it fails because configure.ac doesn't refer to AM_* and there # is no Makefile.am file, but it does still copy over the missing files. if [ -n "$success" ] then # autoreconf from old Autoconf doesn't pass -I to aclocal properly. export ACLOCAL="aclocal -I config -I '${BAKEFILE_M4}'" rm -f config.cache mv autoconf_inc.m4 config > /dev/null 2>&1 # don't care if it fails set -x && automake --add-missing --force-missing > /dev/null 2>&1 ; autoreconf -i && ./configure $MAINT_FLAGS $* && make lib/querydef.h lib/ssqls.h && set +x && success=awyeah fi # Detect failure in any part of above if [ -z "$success" ] then echo echo BOOTSTRAP FAILED! echo exit 1 fi mysql++-3.3.0/bmark.txt000644 000765 000024 00000026322 14042362131 015451 0ustar00tangentstaff000000 000000 All unit tests passed ---------------- BEGIN resetdb OUTPUT ---------------- Connecting to database server... Dropping existing sample data tables... Creating stock table... Populating stock table...inserted 4 rows. Creating empty images table... Creating deadlock testing tables... Reinitialized sample database successfully. ================ END resetdb OUTPUT ================ ---------------- BEGIN simple1 OUTPUT ---------------- We have: Nürnberger Brats Pickle Relish Hot Mustard Hotdog Buns ================ END simple1 OUTPUT ================ ---------------- BEGIN simple2 OUTPUT ---------------- Item Num Weight Price Date Nürnberger Brats 97 1.5 8.79 2005-03-10 Pickle Relish 87 1.5 1.75 1998-09-04 Hot Mustard 73 0.95 0.97 1998-05-25 Hotdog Buns 65 1.1 1.10 1998-04-23 ================ END simple2 OUTPUT ================ ---------------- BEGIN simple3 OUTPUT ---------------- Item Num Weight Price Date Nürnberger Brats 97 1.5 8.79 2005-03-10 Pickle Relish 87 1.5 1.75 1998-09-04 Hot Mustard 73 0.95 0.97 1998-05-25 Hotdog Buns 65 1.1 1.10 1998-04-23 ================ END simple3 OUTPUT ================ ---------------- BEGIN store_if OUTPUT ---------------- Records found: 2 Item Num Weight Price Date Nürnberger Brats 97 1.5 8.79 2005-03-10 Hot Mustard 73 0.95 0.97 1998-05-25 ================ END store_if OUTPUT ================ ---------------- BEGIN for_each OUTPUT ---------------- There are 322 items weighing 416.85 stone and costing 1147.19 cowrie shells. ================ END for_each OUTPUT ================ ---------------- BEGIN multiquery OUTPUT ---------------- Multi-query: DROP TABLE IF EXISTS test_table; CREATE TABLE test_table(id INT); INSERT INTO test_table VALUES(10); UPDATE test_table SET id=20 WHERE id=10; SELECT * FROM test_table; DROP TABLE test_table Result set 0 is empty. Result set 1 is empty. Result set 2 is empty. Result set 3 is empty. Result set 4 has 1 row: +----+ | id | +----+ | 20 | +----+ Result set 5 is empty. Stored procedure query: DROP PROCEDURE IF EXISTS get_stock; CREATE PROCEDURE get_stock( i_item varchar(20) ) BEGIN SET i_item = concat('%', i_item, '%'); SELECT * FROM stock WHERE lower(item) like lower(i_item); END; Result set 0 is empty. Result set 1 is empty. Query: CALL get_stock('relish') Result set 0 has 1 row: +---------------+-----+--------+-------+------------+-------------+ | item | num | weight | price | sdate | description | +---------------+-----+--------+-------+------------+-------------+ | Pickle Relish | 87 | 1.5 | 1.75 | 1998-09-04 | NULL | +---------------+-----+--------+-------+------------+-------------+ Result set 1 is empty. ================ END multiquery OUTPUT ================ ---------------- BEGIN tquery1 OUTPUT ---------------- Query: select * from stock Records found: 4 Item Num Weight Price Date Nuerenberger Bratwurst 97 1.5 8.79 2005-03-10 Pickle Relish 87 1.5 1.75 1998-09-04 Hot Mustard 73 0.95 0.97 1998-05-25 Hotdog Buns 65 1.1 1.1 1998-04-23 ================ END tquery1 OUTPUT ================ ---------------- BEGIN resetdb OUTPUT ---------------- Connecting to database server... Dropping existing sample data tables... Creating stock table... Populating stock table...inserted 4 rows. Creating empty images table... Creating deadlock testing tables... Reinitialized sample database successfully. ================ END resetdb OUTPUT ================ ---------------- BEGIN tquery2 OUTPUT ---------------- Query: select * from stock Records found: 4 Item Num Weight Price Date Nuerenberger Bratwurst 97 1.5 8.79 2005-03-10 Pickle Relish 87 1.5 1.75 1998-09-04 Hot Mustard 73 0.95 0.97 1998-05-25 Hotdog Buns 65 1.1 1.1 1998-04-23 ================ END tquery2 OUTPUT ================ ---------------- BEGIN tquery3 OUTPUT ---------------- Stuff we have a lot of in stock: Nuerenberger Bratwurst Pickle Relish ================ END tquery3 OUTPUT ================ ---------------- BEGIN tquery4 OUTPUT ---------------- Query: update stock set num = 70 where num < 70 Query: select * from stock Records found: 4 Item Num Weight Price Date Nuerenberger Bratwurst 97 1.5 8.79 2005-03-10 Pickle Relish 87 1.5 1.75 1998-09-04 Hot Mustard 73 0.95 0.97 1998-05-25 Hotdog Buns 70 1.1 1.1 1998-04-23 Query: select * from stock where weight > 1.2 or description like '%Mustard%' Records found: 3 Item Num Weight Price Date Nuerenberger Bratwurst 97 1.5 8.79 2005-03-10 Pickle Relish 87 1.5 1.75 1998-09-04 Hot Mustard 73 0.95 0.97 1998-05-25 ================ END tquery4 OUTPUT ================ ---------------- BEGIN resetdb OUTPUT ---------------- Connecting to database server... Dropping existing sample data tables... Creating stock table... Populating stock table...inserted 4 rows. Creating empty images table... Creating deadlock testing tables... Reinitialized sample database successfully. ================ END resetdb OUTPUT ================ ---------------- BEGIN ssqls1 OUTPUT ---------------- We have: Nürnberger Brats Pickle Relish Hot Mustard (good American yellow mustard, not that European stuff) Hotdog Buns ================ END ssqls1 OUTPUT ================ ---------------- BEGIN ssqls2 OUTPUT ---------------- Query: INSERT INTO `stock` (`item`,`num`,`weight`,`price`,`sDate`,`description`) VALUES ('Hot Dogs',100,1.5,NULL,'1998-09-25',NULL) Query: select * from stock Records found: 5 Item Num Weight Price Date Nürnberger Brats 97 1.5 8.79 2005-03-10 Pickle Relish 87 1.5 1.75 1998-09-04 Hot Mustard 73 0.95 0.97 1998-05-25 Hotdog Buns 65 1.1 1.1 1998-04-23 Hot Dogs 100 1.5 (NULL) 1998-09-25 ================ END ssqls2 OUTPUT ================ ---------------- BEGIN ssqls3 OUTPUT ---------------- Query: UPDATE `stock` SET `item` = 'Nuerenberger Bratwurst',`num` = 97,`weight` = 1.5,`price` = 8.7899999999999991,`sDate` = '2005-03-10',`description` = NULL WHERE `item` = 'Nürnberger Brats' Query: select * from stock Records found: 5 Item Num Weight Price Date Nuerenberger Bratwurst 97 1.5 8.79 2005-03-10 Pickle Relish 87 1.5 1.75 1998-09-04 Hot Mustard 73 0.95 0.97 1998-05-25 Hotdog Buns 65 1.1 1.1 1998-04-23 Hot Dogs 100 1.5 (NULL) 1998-09-25 ================ END ssqls3 OUTPUT ================ ---------------- BEGIN ssqls4 OUTPUT ---------------- Records found: 5 Item Num Weight Price Date Hot Dogs 100 1.5 (NULL) 1998-09-25 Hot Mustard 73 0.95 0.97 1998-05-25 Hotdog Buns 65 1.1 1.1 1998-04-23 Nuerenberger Bratwurst 97 1.5 8.79 2005-03-10 Pickle Relish 87 1.5 1.75 1998-09-04 Currently 65 hotdog buns in stock. ================ END ssqls4 OUTPUT ================ ---------------- BEGIN ssqls5 OUTPUT ---------------- Custom query: select * from stock where `weight` = 1.5 and `price` = 8.7899999999999991 ================ END ssqls5 OUTPUT ================ ---------------- BEGIN ssqls6 OUTPUT ---------------- Query: select * from stock Records found: 26 Item Num Weight Price Date Tiny Screws 1000 0.01 0.05 2008-11-11 Needle-nose Pliers 50 0.5 5.95 2008-11-12 Small Soldering Iron 40 0.5 15.95 2008-09-01 Large Soldering Iron 35 0.75 24.95 2008-08-01 Solder Wick 100 0.1 2.95 2008-04-01 Mini Screwdrivers, 3 pc. 30 0.4 8.95 2008-03-25 Mini Screwdrivers, 6 pc. 40 0.6 12.95 2008-04-01 Wire-wrapping Tool 25 0.2 4.95 2008-04-23 Red LED, 5mm, 3000mcd 300 0.01 0.29 2008-10-02 Orange LED, 5mm, 2500mcd 250 0.01 0.29 2008-07-31 Yellow LED, 5mm, 3000mcd 400 0.01 0.25 2008-09-30 Green LED, 5mm, 1000mcd 350 0.01 0.45 2008-09-27 Blue LED, 5mm, 3900mcd 500 0.01 0.34 2007-12-01 White LED, 5mm, 15000mcd 750 0.01 0.43 2008-02-01 AA Battery, single 220 0.05 0.5 2007-09-19 AA Battery, 4-pack 60 0.2 1.79 2007-08-03 AA Battery, 24-pack 8 1.2 9.99 2007-04-25 C Battery, single 100 0.075 0.65 2007-11-14 C Battery, 4-pack 25 0.3 2.29 2007-06-05 C Battery, 24-pack 5 1.8 10.99 2007-06-13 D Battery, single 180 0.08 0.7 2007-12-03 D Battery, 4-pack 45 0.3 2.59 2007-04-01 D Battery, 24-pack 12 1.9 11.99 2007-05-15 9-volt Battery, single 90 0.06 0.75 2008-01-02 9-volt Battery, 3-pack 17 0.2 1.99 2008-02-28 9-volt Batter, 20-pack 12 1.2 12.99 2007-12-28 ================ END ssqls6 OUTPUT ================ ---------------- BEGIN load_jpeg OUTPUT ---------------- Inserted "NULL" into images table, 0 bytes, ID 1 ================ END load_jpeg OUTPUT ================ ---------------- BEGIN cgi_jpeg OUTPUT ---------------- Content-type: text/plain No image content! ================ END cgi_jpeg OUTPUT ================ --- BEGIN ssqlsxlat -i examples/common.ssqls -o ERROR OUTPUT --- ==== END ssqlsxlat -i examples/common.ssqls -o ERROR OUTPUT ==== --- BEGIN ssqlsxlat -i examples/stock.ssqls -o ERROR OUTPUT --- ==== END ssqlsxlat -i examples/stock.ssqls -o ERROR OUTPUT ==== --- BEGIN ssqlsxlat -i test/test1.ssqls -o ERROR OUTPUT --- ==== END ssqlsxlat -i test/test1.ssqls -o ERROR OUTPUT ==== --- BEGIN ssqlsxlat -i test/test2.ssqls -o ERROR OUTPUT --- ==== END ssqlsxlat -i test/test2.ssqls -o ERROR OUTPUT ==== mysql++-3.3.0/Bakefiles.bkgen000644 000765 000024 00000001176 14042362131 016511 0ustar00tangentstaff000000 000000 ./mysql++.bkl autoconf,mingw,msvs2003prj,msvs2005prj,msvs2008prj,xcode2 -o$(INPUT_FILE_DIR)/Makefile.mingw -ovc2003/mysql++.sln -ovc2005/mysql++.sln -ovc2008/mysql++.sln -DMSVS_PLATFORMS=win64 mysql++-3.3.0/test/000755 000765 000024 00000000000 14042362133 014570 5ustar00tangentstaff000000 000000 mysql++-3.3.0/config.h000644 000765 000024 00000005563 14042362131 015236 0ustar00tangentstaff000000 000000 /* config.h. Generated from config.h.in by configure. */ /* config.h.in. Generated from configure.ac by autoheader. */ /* define if the compiler supports basic C++11 syntax */ #define HAVE_CXX11 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define if you have __gnu_cxx:slist container in */ /* #undef HAVE_EXT_SLIST */ /* Define if you have ::slist container in */ /* #undef HAVE_GLOBAL_SLIST */ /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define if getopt() is available in libiberty.h */ /* #undef HAVE_LIBIBERTY_GETOPT */ /* Define to 1 if you have the `intl' library (-lintl). */ /* #undef HAVE_LIBINTL */ /* Define if you have the localtime_r() facility */ #define HAVE_LOCALTIME_R 1 /* Define if your MySQL library has SSL functions */ #define HAVE_MYSQL_SSL_SET /**/ /* Define if getopt() is available in unistd.h */ #define HAVE_POSIX_GETOPT /**/ /* Define if you have POSIX threads libraries and header files. */ /* #undef HAVE_PTHREAD */ /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDIO_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define if you have std::slist container in */ /* #undef HAVE_STD_SLIST */ /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYNCH_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to the sub-directory where libtool stores uninstalled libraries. */ #define LT_OBJDIR ".libs/" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "plusplus@lists.mysql.com" /* Define to the full name of this package. */ #define PACKAGE_NAME "mysql++" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "mysql++ 3.3.0" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "mysql++" /* Define to the home page for this package. */ #define PACKAGE_URL "" /* Define to the version of this package. */ #define PACKAGE_VERSION "3.3.0" /* Define to necessary symbol if this constant uses a non-standard name on your system. */ /* #undef PTHREAD_CREATE_JOINABLE */ /* Define to 1 if all of the C90 standard headers exist (not just the ones required in a freestanding environment). This macro is provided for backward compatibility; new code need not use it. */ #define STDC_HEADERS 1 mysql++-3.3.0/configure000755 000765 000024 00002532551 14042362144 015537 0ustar00tangentstaff000000 000000 #! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for mysql++ 3.3.0. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="as_nop=: if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else $as_nop as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and $0: plusplus@lists.mysql.com about your system, including $0: any error possibly output before this message. Then $0: install a modern shell, or manually run the script $0: under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='mysql++' PACKAGE_TARNAME='mysql++' PACKAGE_VERSION='3.3.0' PACKAGE_STRING='mysql++ 3.3.0' PACKAGE_BUGREPORT='plusplus@lists.mysql.com' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_c_list= ac_subst_vars='LTLIBOBJS LIBOBJS COND_WINDOWS_IMPLIB_1 COND_USE_SOVERSOLARIS_1 COND_USE_SOVERSION_1_USE_SOVERSOLARIS_1 COND_USE_SOVERSION_0 COND_USE_SOVERLINUX_1 COND_USE_SOVERCYGWIN_1_USE_SOVERSION_1 COND_USE_SOTWOSYMLINKS_1 COND_PLATFORM_OS2_1 COND_PLATFORM_MACOSX_1_USE_SOVERSION_1 COND_PLATFORM_MACOSX_1 COND_PLATFORM_MACOSX_0_USE_SOVERSION_1 COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1 COND_DEPS_TRACKING_1 COND_DEPS_TRACKING_0 COND_BUILD_release COND_BUILD_debug OBJCXXFLAGS WINDRES BK_DEPS DEPS_TRACKING SONAME_FLAG USE_SOTWOSYMLINKS USE_MACVERSION USE_SOVERCYGWIN USE_SOVERSOLARIS USE_SOVERLINUX USE_SOVERSION WINDOWS_IMPLIB PIC_FLAG SHARED_LD_MODULE_CXX SHARED_LD_MODULE_CC SHARED_LD_CXX SHARED_LD_CC AIX_CXX_LD dlldir DLLPREFIX_MODULE DLLPREFIX LIBEXT LIBPREFIX DLLIMP_SUFFIX SO_SUFFIX_MODULE SO_SUFFIX PLATFORM_BEOS PLATFORM_MACOSX PLATFORM_MACOS PLATFORM_MAC PLATFORM_WIN32 PLATFORM_UNIX IF_GNU_MAKE LDFLAGS_GUI INSTALL_DIR AROPTIONS MAKE_SET SET_MAKE INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM HAVE_CXX11 CXXCPP ac_ct_CXX CXXFLAGS CXX MYSQL_C_LIB_NAME MYSQL_C_LIB_DIR MYSQL_C_INC_DIR MYSQLPP_EXTRA_LIBS PTHREAD_CFLAGS PTHREAD_LIBS PTHREAD_CC acx_pthread_config MYSQLPP_VERSION_BUGFIX MYSQLPP_VERSION_MINOR MYSQLPP_VERSION_MAJOR LIBTOOL_DEPS LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL AWK RANLIB STRIP ac_ct_AR AR DLLTOOL OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC LIBTOOL target_os target_vendor target_cpu target host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_shared enable_static with_pic enable_fast_install with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock enable_thread_check with_field_limit with_mysql with_mysql_lib with_mysql_include enable_dependency_tracking ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS LT_SYS_LIBRARY_PATH CXX CXXFLAGS CCC CXXCPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures mysql++ 3.3.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/mysql++] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of mysql++ 3.3.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-thread-check Check for threads, and use if available. --disable-dependency-tracking don't use dependency tracking even if the compiler can Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-field-limit= set max template query and SSQLS field count --with-mysql= root directory path of MySQL/MariaDB installation --with-mysql-lib= directory path of MySQL/MariaDB library installation --with-mysql-include= directory path of MySQL/MariaDB header installation Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory LT_SYS_LIBRARY_PATH User-defined run-time library search path. CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF mysql++ configure 3.3.0 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. */ #include #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main (void) { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_try_run LINENO # ---------------------- # Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that # executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: program exited with status $ac_status" >&5 printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by mysql++ $as_me 3.3.0, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ #if !defined __STDC__ # error "Compiler does not advertise C89 conformance" #endif #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not \xHH hex character constants. These do not provoke an error unfortunately, instead are silently treated as an "x". The following induces an error, until -std is added to get proper ANSI mode. Curiously \x00 != x always comes out true, for an array size at least. It is necessary to write \x00 == 0 to get something that is true only with -std. */ int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) '\''x'\'' int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' // Does the compiler advertise C99 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[0] = argv[0][0]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || dynamic_array[ni.number - 1] != 543); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' // Does the compiler advertise C11 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" # Test code for whether the C++ compiler supports C++98 (global declarations) ac_cxx_conftest_cxx98_globals=' // Does the compiler advertise C++98 conformance? #if !defined __cplusplus || __cplusplus < 199711L # error "Compiler does not advertise C++98 conformance" #endif // These inclusions are to reject old compilers that // lack the unsuffixed header files. #include #include // and are *not* freestanding headers in C++98. extern void assert (int); namespace std { extern int strcmp (const char *, const char *); } // Namespaces, exceptions, and templates were all added after "C++ 2.0". using std::exception; using std::strcmp; namespace { void test_exception_syntax() { try { throw "test"; } catch (const char *s) { // Extra parentheses suppress a warning when building autoconf itself, // due to lint rules shared with more typical C programs. assert (!(strcmp) (s, "test")); } } template struct test_template { T const val; explicit test_template(T t) : val(t) {} template T add(U u) { return static_cast(u) + val; } }; } // anonymous namespace ' # Test code for whether the C++ compiler supports C++98 (body of main) ac_cxx_conftest_cxx98_main=' assert (argc); assert (! argv[0]); { test_exception_syntax (); test_template tt (2.0); assert (tt.add (4) == 6.0); assert (true && !false); } ' # Test code for whether the C++ compiler supports C++11 (global declarations) ac_cxx_conftest_cxx11_globals=' // Does the compiler advertise C++ 2011 conformance? #if !defined __cplusplus || __cplusplus < 201103L # error "Compiler does not advertise C++11 conformance" #endif namespace cxx11test { constexpr int get_val() { return 20; } struct testinit { int i; double d; }; class delegate { public: delegate(int n) : n(n) {} delegate(): delegate(2354) {} virtual int getval() { return this->n; }; protected: int n; }; class overridden : public delegate { public: overridden(int n): delegate(n) {} virtual int getval() override final { return this->n * 2; } }; class nocopy { public: nocopy(int i): i(i) {} nocopy() = default; nocopy(const nocopy&) = delete; nocopy & operator=(const nocopy&) = delete; private: int i; }; // for testing lambda expressions template Ret eval(Fn f, Ret v) { return f(v); } // for testing variadic templates and trailing return types template auto sum(V first) -> V { return first; } template auto sum(V first, Args... rest) -> V { return first + sum(rest...); } } ' # Test code for whether the C++ compiler supports C++11 (body of main) ac_cxx_conftest_cxx11_main=' { // Test auto and decltype auto a1 = 6538; auto a2 = 48573953.4; auto a3 = "String literal"; int total = 0; for (auto i = a3; *i; ++i) { total += *i; } decltype(a2) a4 = 34895.034; } { // Test constexpr short sa[cxx11test::get_val()] = { 0 }; } { // Test initializer lists cxx11test::testinit il = { 4323, 435234.23544 }; } { // Test range-based for int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; for (auto &x : array) { x += 23; } } { // Test lambda expressions using cxx11test::eval; assert (eval ([](int x) { return x*2; }, 21) == 42); double d = 2.0; assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); assert (d == 5.0); assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); assert (d == 5.0); } { // Test use of variadic templates using cxx11test::sum; auto a = sum(1); auto b = sum(1, 2); auto c = sum(1.0, 2.0, 3.0); } { // Test constructor delegation cxx11test::delegate d1; cxx11test::delegate d2(); cxx11test::delegate d3(45); } { // Test override and final cxx11test::overridden o1(55464); } { // Test nullptr char *c = nullptr; } { // Test template brackets test_template<::test_template> v(test_template(12)); } { // Unicode literals char const *utf8 = u8"UTF-8 string \u2500"; char16_t const *utf16 = u"UTF-8 string \u2500"; char32_t const *utf32 = U"UTF-32 string \u2500"; } ' # Test code for whether the C compiler supports C++11 (complete). ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} ${ac_cxx_conftest_cxx11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} ${ac_cxx_conftest_cxx11_main} return ok; } " # Test code for whether the C compiler supports C++98 (complete). ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} return ok; } " # Auxiliary files required by this configure script. ac_aux_files="install-sh ltmain.sh config.guess config.sub" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" # Make sure we can run config.sub. $SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : printf %s "(cached) " >&6 else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : printf %s "(cached) " >&6 else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 printf %s "checking target system type... " >&6; } if test ${ac_cv_target+y} then : printf %s "(cached) " >&6 else $as_nop if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "${ac_aux_dir}config.sub" $target_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $target_alias failed" "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 printf "%s\n" "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' set x $ac_cv_target shift target_cpu=$1 target_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: target_os=$* IFS=$ac_save_IFS case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- # Enable libtool to decide shared library compile flags (ie -fPIC) case `pwd` in *\ * | *\ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.6' macro_revision='2.4.6' ltmain=$ac_aux_dir/ltmain.sh # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 printf %s "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 printf "%s\n" "printf" >&6; } ;; print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 printf "%s\n" "print -r" >&6; } ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 printf "%s\n" "cat" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else $as_nop ac_file='' fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 printf %s "checking for a sed that does not truncate output... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in sed gsed do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 printf %s "checking for grep that handles long lines and -e... " >&6; } if test ${ac_cv_path_GREP+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in grep ggrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 printf "%s\n" "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 printf %s "checking for egrep... " >&6; } if test ${ac_cv_path_EGREP+y} then : printf %s "(cached) " >&6 else $as_nop if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in egrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 printf %s "checking for fgrep... " >&6; } if test ${ac_cv_path_FGREP+y} then : printf %s "(cached) " >&6 else $as_nop if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in fgrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 printf "%s\n" "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else $as_nop with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test ${lt_cv_path_LD+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${lt_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if test ${lt_cv_path_NM+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 printf "%s\n" "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DUMPBIN+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 printf "%s\n" "$DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DUMPBIN+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 printf "%s\n" "$ac_ct_DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 printf %s "checking the name lister ($NM) interface... " >&6; } if test ${lt_cv_nm_interface+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 printf "%s\n" "$lt_cv_nm_interface" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 printf "%s\n" "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 printf %s "checking the maximum length of command line arguments... " >&6; } if test ${lt_cv_sys_max_cmd_len+y} then : printf %s "(cached) " >&6 else $as_nop i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n "$lt_cv_sys_max_cmd_len"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 printf "%s\n" "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 printf %s "checking how to convert $build file names to $host format... " >&6; } if test ${lt_cv_to_host_file_cmd+y} then : printf %s "(cached) " >&6 else $as_nop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 printf %s "checking how to convert $build file names to toolchain format... " >&6; } if test ${lt_cv_to_tool_file_cmd+y} then : printf %s "(cached) " >&6 else $as_nop #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 printf %s "checking for $LD option to reload object files... " >&6; } if test ${lt_cv_ld_reload_flag+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ld_reload_flag='-r' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OBJDUMP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 printf "%s\n" "$OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OBJDUMP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 printf "%s\n" "$ac_ct_OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 printf %s "checking how to recognize dependent libraries... " >&6; } if test ${lt_cv_deplibs_check_method+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DLLTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 printf "%s\n" "$DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DLLTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 printf "%s\n" "$ac_ct_DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 printf %s "checking how to associate runtime and link libraries... " >&6; } if test ${lt_cv_sharedlib_from_linklib_cmd+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 printf "%s\n" "$AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 printf "%s\n" "$ac_ct_AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 printf %s "checking for archiver @FILE support... " >&6; } if test ${lt_cv_ar_at_file+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 printf "%s\n" "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 printf "%s\n" "$RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 printf "%s\n" "$ac_ct_RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 printf %s "checking command to parse $NM output from $compiler object... " >&6; } if test ${lt_cv_sys_global_symbol_pipe+y} then : printf %s "(cached) " >&6 else $as_nop # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 printf "%s\n" "failed" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 printf "%s\n" "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 printf %s "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test ${with_sysroot+y} then : withval=$with_sysroot; else $as_nop with_sysroot=no fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 printf "%s\n" "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 printf "%s\n" "${lt_sysroot:-no}" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 printf %s "checking for a working dd... " >&6; } if test ${ac_cv_path_lt_DD+y} then : printf %s "(cached) " >&6 else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in dd do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 printf "%s\n" "$ac_cv_path_lt_DD" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 printf %s "checking how to truncate binary pipes... " >&6; } if test ${lt_cv_truncate_bin+y} then : printf %s "(cached) " >&6 else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 printf "%s\n" "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # Check whether --enable-libtool-lock was given. if test ${enable_libtool_lock+y} then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 printf %s "checking whether the C compiler needs -belf... " >&6; } if test ${lt_cv_cc_needs_belf+y} then : printf %s "(cached) " >&6 else $as_nop ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_cc_needs_belf=yes else $as_nop lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 printf "%s\n" "$MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if test ${lt_cv_path_mainfest_tool+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DSYMUTIL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 printf "%s\n" "$DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_NMEDIT+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 printf "%s\n" "$NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_NMEDIT+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 printf "%s\n" "$ac_ct_NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_LIPO+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 printf "%s\n" "$LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_LIPO+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 printf "%s\n" "$ac_ct_LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 printf "%s\n" "$OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 printf "%s\n" "$ac_ct_OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL64+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 printf "%s\n" "$OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL64+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 printf "%s\n" "$ac_ct_OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 printf %s "checking for -single_module linker flag... " >&6; } if test ${lt_cv_apple_cc_single_mod+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 printf %s "checking for -exported_symbols_list linker flag... " >&6; } if test ${lt_cv_ld_exported_symbols_list+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_ld_exported_symbols_list=yes else $as_nop lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 printf %s "checking for -force_load linker flag... " >&6; } if test ${lt_cv_ld_force_load+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 printf "%s\n" "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[012][,.]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } ac_header= ac_cache= for ac_item in $ac_header_c_list do if test $ac_cache; then ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then printf "%s\n" "#define $ac_item 1" >> confdefs.h fi ac_header= ac_cache= elif test $ac_header; then ac_cache=$ac_item else ac_header=$ac_item fi done if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes then : printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes then : printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h fi # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test ${enable_shared+y} then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop enable_shared=yes fi # Check whether --enable-static was given. if test ${enable_static+y} then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop enable_static=yes fi # Check whether --with-pic was given. if test ${with_pic+y} then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop pic_mode=default fi # Check whether --enable-fast-install was given. if test ${enable_fast_install+y} then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop enable_fast_install=yes fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 printf %s "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. if test ${with_aix_soname+y} then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else $as_nop if test ${lt_cv_with_aix_soname+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 printf "%s\n" "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 printf %s "checking for objdir... " >&6; } if test ${lt_cv_objdir+y} then : printf %s "(cached) " >&6 else $as_nop rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 printf "%s\n" "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o func_cc_basename $compiler cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 printf %s "checking for ${ac_tool_prefix}file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else $as_nop case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/${ac_tool_prefix}file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 printf %s "checking for file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else $as_nop case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test ${lt_cv_prog_compiler_rtti_exceptions+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test ${lt_cv_prog_compiler_pic_works+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 printf %s "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 printf "%s\n" "$hard_links" >&6; } if test no = "$hard_links"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' $wl-bernotok' allow_undefined_flag=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 printf %s "checking if $CC understands -b... " >&6; } if test ${lt_cv_prog_compiler__b+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if test ${lt_cv_irix_exported_symbol+y} then : printf %s "(cached) " >&6 else $as_nop save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_irix_exported_symbol=yes else $as_nop lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' else archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='$wl-z,text' allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 printf "%s\n" "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 printf %s "checking whether -lc should be explicitly linked in... " >&6; } if test ${lt_cv_archive_cmds_need_lc+y} then : printf %s "(cached) " >&6 else $as_nop $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 printf %s "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if test ${lt_cv_shlibpath_overrides_runpath+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 printf "%s\n" "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 printf "%s\n" "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dlopen (); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else $as_nop ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else $as_nop lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes then : lt_cv_dlopen=shl_load else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 printf %s "checking for shl_load in -ldld... " >&6; } if test ${ac_cv_lib_dld_shl_load+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char shl_load (); int main (void) { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_shl_load=yes else $as_nop ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else $as_nop ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes then : lt_cv_dlopen=dlopen else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dlopen (); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else $as_nop ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 printf %s "checking for dlopen in -lsvld... " >&6; } if test ${ac_cv_lib_svld_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dlopen (); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_svld_dlopen=yes else $as_nop ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 printf %s "checking for dld_link in -ldld... " >&6; } if test ${ac_cv_lib_dld_dld_link+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dld_link (); int main (void) { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_dld_link=yes else $as_nop ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi fi fi fi fi fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 printf %s "checking whether a program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self+y} then : printf %s "(cached) " >&6 else $as_nop if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 printf "%s\n" "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 printf %s "checking whether a statically linked program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self_static+y} then : printf %s "(cached) " >&6 else $as_nop if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 printf %s "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac fi # Report what library types will actually be built { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 printf %s "checking if libtool supports shared libraries... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 printf "%s\n" "$can_build_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 printf %s "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 printf "%s\n" "$enable_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 printf %s "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 printf "%s\n" "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC ac_config_commands="$ac_config_commands libtool" # Only expand once: # Break package version up into major, minor and bugfix components. MYSQLPP_VERSION_MAJOR=`echo $PACKAGE_VERSION | cut -f1 -d.` MYSQLPP_VERSION_MINOR=`echo $PACKAGE_VERSION | cut -f2 -d.` MYSQLPP_VERSION_BUGFIX=`echo $PACKAGE_VERSION | cut -f3 -d.` # Check for Standard C support ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Autoupdate added the next two lines to ensure that your configure # script's behavior did not change. They are probably safe to remove. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 printf %s "checking for egrep... " >&6; } if test ${ac_cv_path_EGREP+y} then : printf %s "(cached) " >&6 else $as_nop if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in egrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" # Figure out whether/how to handle threading support, if available. # Check whether --enable-thread-check was given. if test ${enable_thread_check+y} then : enableval=$enable_thread_check; thread_check=yes fi if test "x$thread_check" = "xyes" then ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu acx_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 printf %s "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char pthread_join (); int main (void) { return pthread_join (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : acx_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 printf "%s\n" "$acx_pthread_ok" >&6; } if test x"$acx_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all, and "pthread-config" # which is a program returning the flags for the Pth emulation library. acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # ... -mt is also the pthreads flag for HP/aCC # pthread: Linux, etcetera # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) case "${host_cpu}-${host_os}" in *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthreads/-mt/ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags" ;; esac if test x"$acx_pthread_ok" = xno; then for flag in $acx_pthread_flags; do case $flag in none) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 printf %s "checking whether pthreads work without any flags... " >&6; } ;; -*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5 printf %s "checking whether pthreads work with $flag... " >&6; } PTHREAD_CFLAGS="$flag" ;; pthread-config) # Extract the first word of "pthread-config", so it can be a program name with args. set dummy pthread-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_acx_pthread_config+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$acx_pthread_config"; then ac_cv_prog_acx_pthread_config="$acx_pthread_config" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_acx_pthread_config="yes" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_acx_pthread_config" && ac_cv_prog_acx_pthread_config="no" fi fi acx_pthread_config=$ac_cv_prog_acx_pthread_config if test -n "$acx_pthread_config"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_config" >&5 printf "%s\n" "$acx_pthread_config" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test x"$acx_pthread_config" = xno; then continue; fi PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5 printf %s "checking for the pthreads library -l$flag... " >&6; } PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : acx_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 printf "%s\n" "$acx_pthread_ok" >&6; } if test "x$acx_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$acx_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 printf %s "checking for joinable pthread attribute... " >&6; } attr_name=unknown for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { int attr=$attr; return attr; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : attr_name=$attr; break fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5 printf "%s\n" "$attr_name" >&6; } if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then printf "%s\n" "#define PTHREAD_CREATE_JOINABLE $attr_name" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 printf %s "checking if more special flags are required for pthreads... " >&6; } flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5 printf "%s\n" "${flag}" >&6; } if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: must compile with xlc_r or cc_r if test x"$GCC" != xyes; then for ac_prog in xlc_r cc_r do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_PTHREAD_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_PTHREAD_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 printf "%s\n" "$PTHREAD_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$PTHREAD_CC" && break done test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}" else PTHREAD_CC=$CC fi else PTHREAD_CC="$CC" fi # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$acx_pthread_ok" = xyes; then printf "%s\n" "#define HAVE_PTHREAD 1" >>confdefs.h : else acx_pthread_ok=no fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" CC="$PTHREAD_CC" ac_fn_c_check_header_compile "$LINENO" "synch.h" "ac_cv_header_synch_h" "$ac_includes_default" if test "x$ac_cv_header_synch_h" = xyes then : printf "%s\n" "#define HAVE_SYNCH_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" if test "x$ac_cv_header_unistd_h" = xyes then : printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h fi fi # Let caller provide -f to lib/*.pl scripts in a uniform way # Check whether --with-field-limit was given. if test ${with_field_limit+y} then : withval=$with_field_limit; fi if test -n "$with_field_limit" then ( cd lib ; ./querydef.pl -f $with_field_limit ; ./ssqls.pl -f $with_field_limit ) fi # Try to find local getopt(); if we fail, we'll use the one in lib/cmdline.* ac_fn_c_check_func "$LINENO" "getopt" "ac_cv_func_getopt" if test "x$ac_cv_func_getopt" = xyes then : printf "%s\n" "#define HAVE_POSIX_GETOPT /**/" >>confdefs.h else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getopt in -liberty" >&5 printf %s "checking for getopt in -liberty... " >&6; } if test ${ac_cv_lib_iberty_getopt+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-liberty $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char getopt (); int main (void) { return getopt (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_iberty_getopt=yes else $as_nop ac_cv_lib_iberty_getopt=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_iberty_getopt" >&5 printf "%s\n" "$ac_cv_lib_iberty_getopt" >&6; } if test "x$ac_cv_lib_iberty_getopt" = xyes then : printf "%s\n" "#define HAVE_LIBIBERTY_GETOPT /**/" >>confdefs.h fi fi # Checks for libraries and local system features { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lm is needed to use C math functions" >&5 printf %s "checking whether -lm is needed to use C math functions... " >&6; } MYSQLPP_EXTRA_LIBS= TRY_LIBM=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { floor(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else $as_nop TRY_LIBM=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "x$TRY_LIBM" = "xyes" then save_LIBS=$LIBS LIBS="$LIBS -lm" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { floor(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : MYSQLPP_EXTRA_LIBS=-lm { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else $as_nop as_fn_error $? "Failed to build program containing math functions!" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$save_LIBS" fi save_LIBS="$LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lsocket is needed" >&5 printf %s "checking whether -lsocket is needed... " >&6; } TRY_LSOCKET=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main (void) { socket(AF_INET, SOCK_STREAM, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else $as_nop TRY_LSOCKET=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "x$TRY_LSOCKET" = "xyes" then LIBS="-lsocket $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main (void) { socket(AF_INET, SOCK_STREAM, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : MYSQLPP_EXTRA_LIBS="-lsocket $MYSQLPP_EXTRA_LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else $as_nop as_fn_error $? "failed to link using -lsocket!" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lnsl is needed" >&5 printf %s "checking whether -lnsl is needed... " >&6; } TRY_LNSL=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { gethostbyname("gna.org"); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else $as_nop TRY_LNSL=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "x$TRY_LNSL" = "xyes" then LIBS="-lnsl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { gethostbyname("gna.org"); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : MYSQLPP_EXTRA_LIBS="-lnsl $MYSQLPP_EXTRA_LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else $as_nop as_fn_error $? "failed to link using -lnsl!" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi # # Set up configure script macros # # Check whether --with-mysql was given. if test ${with_mysql+y} then : withval=$with_mysql; MYSQL_lib_check="$with_mysql/lib/mysql $with_mysql/lib/mariadb $with_mysql/lib" MYSQL_inc_check="$with_mysql/include $with_mysql/include/mysql $with_mysql/include/mariadb" else $as_nop MYSQL_lib_check="/usr/lib64 /usr/lib /usr/lib64/mysql /usr/lib/mysql /usr/lib64/mariadb /usr/lib/mariadb /usr/local/lib64 /usr/local/lib /usr/local/lib/mysql /usr/local/mysql/lib /usr/local/mysql/lib/mysql /usr/mysql/lib/mysql /opt/mysql/lib /opt/mysql/lib/mysql /usr/local/lib/mariadb /usr/local/mariadb/lib /usr/local/mariadb/lib/mariadb /usr/mariadb/lib/mariadb /opt/mariadb/lib /opt/mariadb/lib/mariadb /sw/lib /sw/lib/mysql" MYSQL_inc_check="/usr/include/mysql /usr/local/include/mysql /usr/local/mysql/include /usr/local/mysql/include/mysql /usr/mysql/include/mysql /opt/mysql/include/mysql /usr/include/mariadb /usr/local/include/mariadb /usr/local/mariadb/include /usr/local/mariadb/include/mariadb /usr/mariadb/include/mariadb /opt/mariadb/include/mariadb /sw/include/mysql" fi # Check whether --with-mysql-lib was given. if test ${with_mysql_lib+y} then : withval=$with_mysql_lib; MYSQL_lib_check="$with_mysql_lib $with_mysql_lib/lib64 $with_mysql_lib/lib $with_mysql_lib/lib64/mysql $with_mysql_lib/lib/mysql $with_mysql_lib/lib64/mariadb $with_mysql_lib/lib/mariadb" fi # Check whether --with-mysql-include was given. if test ${with_mysql_include+y} then : withval=$with_mysql_include; MYSQL_inc_check="$with_mysql_include $with_mysql_include/include $with_mysql_include/include/mysql $with_mysql_include/include/mariadb" fi # # Decide which C API library to use, based on thread support # if test "x$acx_pthread_ok" = xyes then MYSQL_C_LIB_NAME=mysqlclient_r else MYSQL_C_LIB_NAME=mysqlclient fi # # Look for MySQL C API headers # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MySQL include directory" >&5 printf %s "checking for MySQL include directory... " >&6; } MYSQL_C_INC_DIR= for m in $MYSQL_inc_check do if test -d "$m" && test -f "$m/mysql.h" then MYSQL_C_INC_DIR=$m break fi done if test -z "$MYSQL_C_INC_DIR" then as_fn_error $? "Didn't find the MySQL include dir in '$MYSQL_inc_check'" "$LINENO" 5 fi case "$MYSQL_C_INC_DIR" in /* ) ;; * ) as_fn_error $? "The MySQL include directory ($MYSQL_C_INC_DIR) must be an absolute path." "$LINENO" 5 ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MYSQL_C_INC_DIR" >&5 printf "%s\n" "$MYSQL_C_INC_DIR" >&6; } # # Look for MySQL C API library # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MySQL C API library directory" >&5 printf %s "checking for MySQL C API library directory... " >&6; } save_CPPFLAGS=$CPPFLAGS save_LIBS=$LIBS save_LDFLAGS=$LDFLAGS CPPFLAGS="$CPPFLAGS -I$MYSQL_C_INC_DIR" MYSQL_C_LIB_DIR= for m in $MYSQL_lib_check do if test -d $m then LDFLAGS="$save_LDFLAGS -L$m" LIBS="$save_LIBS -l$MYSQL_C_LIB_NAME" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { mysql_store_result(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $m" >&5 printf "%s\n" "$m" >&6; } MYSQL_C_LIB_DIR=$m break else $as_nop LIBS="$save_LIBS -l$MYSQL_C_LIB_NAME -lz" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { mysql_store_result(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $m" >&5 printf "%s\n" "$m" >&6; } MYSQLPP_EXTRA_LIBS="$MYSQLPP_EXTRA_LIBS -lz" MYSQL_C_LIB_DIR=$m break fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi done CPPFLAGS=$save_CPPFLAGS LIBS=$save_LIBS LDFLAGS=$save_LDFLAGS if test -z "$MYSQL_C_LIB_DIR" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no joy" >&5 printf "%s\n" "no joy" >&6; } as_fn_error $? "Didn't find $MYSQL_C_LIB_NAME library in '$MYSQL_lib_check'" "$LINENO" 5 fi case "$MYSQL_C_LIB_DIR" in /* ) ;; * ) as_fn_error $? "The MySQL library directory ($MYSQL_C_LIB_DIR) must be an absolute path." "$LINENO" 5 ;; esac # # Check for mysql_ssl_set() in libmysqlclient(_r) # as_ac_Lib=`printf "%s\n" "ac_cv_lib_$MYSQL_C_LIB_NAME""_mysql_ssl_set" | $as_tr_sh` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mysql_ssl_set in -l$MYSQL_C_LIB_NAME" >&5 printf %s "checking for mysql_ssl_set in -l$MYSQL_C_LIB_NAME... " >&6; } if eval test \${$as_ac_Lib+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-l$MYSQL_C_LIB_NAME $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char mysql_ssl_set (); int main (void) { return mysql_ssl_set (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$as_ac_Lib=yes" else $as_nop eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : printf "%s\n" "#define HAVE_MYSQL_SSL_SET /**/" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for localtime_r()" >&5 printf %s "checking for localtime_r()... " >&6; } if test "$cross_compiling" = yes then : localtime_r_found=no else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { time_t tt; struct tm stm; localtime_r(&tt, &stm); return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : localtime_r_found=yes else $as_nop localtime_r_found=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $localtime_r_found" >&5 printf "%s\n" "$localtime_r_found" >&6; } if test x"$localtime_r_found" = xyes then printf "%s\n" "#define HAVE_LOCALTIME_R 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lintl" >&5 printf %s "checking for main in -lintl... " >&6; } if test ${ac_cv_lib_intl_main+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_intl_main=yes else $as_nop ac_cv_lib_intl_main=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_main" >&5 printf "%s\n" "$ac_cv_lib_intl_main" >&6; } if test "x$ac_cv_lib_intl_main" = xyes then : printf "%s\n" "#define HAVE_LIBINTL 1" >>confdefs.h LIBS="-lintl $LIBS" fi # If this is Cygwin, add a linker flag to suppress a silly link message. case "${host}" in *cygwin*) LDFLAGS="$LDFLAGS -Wl,--enable-auto-import" ;; esac # Check for Standard C++ support, and extensions. We try for C++11 if # available, but we don't insist on it. # # This must be near the end, because the CPLUSPLUS directive makes # autoconf use the C++ compiler for all subsequent tests! ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CXX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 printf "%s\n" "$CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CXX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 printf "%s\n" "$ac_ct_CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 printf %s "checking whether the compiler supports GNU C++... " >&6; } if test ${ac_cv_cxx_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 printf %s "checking whether $CXX accepts -g... " >&6; } if test ${ac_cv_prog_cxx_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes else $as_nop CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : else $as_nop ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } if test $ac_test_CXXFLAGS; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_prog_cxx_stdcxx=no if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 printf %s "checking for $CXX option to enable C++11 features... " >&6; } if test ${ac_cv_prog_cxx_11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_11=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx11_program _ACEOF for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx11" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX fi if test "x$ac_cv_prog_cxx_cxx11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cxx_cxx11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx11" fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 ac_prog_cxx_stdcxx=cxx11 fi fi if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 printf %s "checking for $CXX option to enable C++98 features... " >&6; } if test ${ac_cv_prog_cxx_98+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_98=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx98_program _ACEOF for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx98=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx98" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX fi if test "x$ac_cv_prog_cxx_cxx98" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cxx_cxx98" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx98" fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 ac_prog_cxx_stdcxx=cxx98 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu func_stripname_cnf () { case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; esac } # func_stripname_cnf if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 printf %s "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test ${ac_cv_prog_CXXCPP+y} then : printf %s "(cached) " >&6 else $as_nop # Double quotes because $CXX needs to be expanded for CXXCPP in "$CXX -E" cpp /lib/cpp do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 printf "%s\n" "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu else _lt_caught_CXX_error=yes fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC func_cc_basename $compiler cc_basename=$func_cc_basename_result if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else $as_nop with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test ${lt_cv_path_LD+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${lt_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test yes = "$with_gnu_ld"; then archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no ;; esac if test yes = "$GXX"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec_CXX='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. no_undefined_flag_CXX='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath__CXX+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath__CXX+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' $wl-bernotok' allow_undefined_flag_CXX=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='$wl--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" if test yes != "$lt_cv_apple_cc_single_mod"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi else ld_shlibs_CXX=no fi ;; os2*) hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_minus_L_CXX=yes allow_undefined_flag_CXX=unsupported shrext_cmds=.dll archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes_CXX=yes ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; hpux9*) hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='$wl-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='$wl-E' whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; then no_undefined_flag_CXX=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='$wl-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='$wl-z,text' allow_undefined_flag_CXX='$wl-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 printf "%s\n" "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && can_build_shared=no GCC_CXX=$GXX LD_CXX=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX=$prev$p else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX=$prev$p else postdeps_CXX="${postdeps_CXX} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$predep_objects_CXX"; then predep_objects_CXX=$p else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX=$p else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi lt_prog_compiler_pic_CXX='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_CXX='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic_CXX+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if test ${lt_cv_prog_compiler_pic_works_CXX+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works_CXX+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then : else lt_prog_compiler_static_CXX= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o_CXX+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o_CXX" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o_CXX+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 printf %s "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 printf "%s\n" "$hard_links" >&6; } if test no = "$hard_links"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 printf "%s\n" "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 printf %s "checking whether -lc should be explicitly linked in... " >&6; } if test ${lt_cv_archive_cmds_need_lc_CXX+y} then : printf %s "(cached) " >&6 else $as_nop $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 printf "%s\n" "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 printf %s "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec_CXX='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if test ${lt_cv_shlibpath_overrides_runpath+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 printf "%s\n" "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test yes = "$hardcode_automatic_CXX"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct_CXX" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && test no != "$hardcode_minus_L_CXX"; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 printf "%s\n" "$hardcode_action_CXX" >&6; } if test relink = "$hardcode_action_CXX" || test yes = "$inherit_rpath_CXX"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for STL slist extension" >&5 printf %s "checking for STL slist extension... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { slist l ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : printf "%s\n" "#define HAVE_GLOBAL_SLIST 1" >>confdefs.h else $as_nop TRY_NEXT=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test -z "$TRY_NEXT" then SLIST_LOC=", global scope" else TRY_NEXT="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { std::slist l ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : printf "%s\n" "#define HAVE_STD_SLIST 1" >>confdefs.h else $as_nop TRY_NEXT=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test -z "$TRY_NEXT" then SLIST_LOC=", namespace std" else TRY_NEXT="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { __gnu_cxx::slist l ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : printf "%s\n" "#define HAVE_EXT_SLIST 1" >>confdefs.h else $as_nop SLIST_LOC="not found" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test -z "$SLIST_LOC" then SLIST_LOC=", namespace __gnu_cxx" fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SLIST_LOC" >&5 printf "%s\n" "$SLIST_LOC" >&6; } ax_cxx_compile_alternatives="11 0x" ax_cxx_compile_cxx11_required=false ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_success=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5 printf %s "checking whether $CXX supports C++11 features by default... " >&6; } if test ${ax_cv_cxx_compile_cxx11+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ // If the compiler admits that it is not ready for C++11, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201103L #error "This is not a C++11 compiler" #else namespace cxx11 { namespace test_static_assert { template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; } namespace test_final_override { struct Base { virtual ~Base() {} virtual void f() {} }; struct Derived : public Base { virtual ~Derived() override {} virtual void f() override {} }; } namespace test_double_right_angle_brackets { template < typename T > struct check {}; typedef check single_type; typedef check> double_type; typedef check>> triple_type; typedef check>>> quadruple_type; } namespace test_decltype { int f() { int a = 1; decltype(a) b = 2; return a + b; } } namespace test_type_deduction { template < typename T1, typename T2 > struct is_same { static const bool value = false; }; template < typename T > struct is_same { static const bool value = true; }; template < typename T1, typename T2 > auto add(T1 a1, T2 a2) -> decltype(a1 + a2) { return a1 + a2; } int test(const int c, volatile int v) { static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == false, ""); auto ac = c; auto av = v; auto sumi = ac + av + 'x'; auto sumf = ac + av + 1.0; static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == true, ""); return (sumf > 0.0) ? sumi : add(c, v); } } namespace test_noexcept { int f() { return 0; } int g() noexcept { return 0; } static_assert(noexcept(f()) == false, ""); static_assert(noexcept(g()) == true, ""); } namespace test_constexpr { template < typename CharT > unsigned long constexpr strlen_c_r(const CharT *const s, const unsigned long acc) noexcept { return *s ? strlen_c_r(s + 1, acc + 1) : acc; } template < typename CharT > unsigned long constexpr strlen_c(const CharT *const s) noexcept { return strlen_c_r(s, 0UL); } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("1") == 1UL, ""); static_assert(strlen_c("example") == 7UL, ""); static_assert(strlen_c("another\0example") == 7UL, ""); } namespace test_rvalue_references { template < int N > struct answer { static constexpr int value = N; }; answer<1> f(int&) { return answer<1>(); } answer<2> f(const int&) { return answer<2>(); } answer<3> f(int&&) { return answer<3>(); } void test() { int i = 0; const int c = 0; static_assert(decltype(f(i))::value == 1, ""); static_assert(decltype(f(c))::value == 2, ""); static_assert(decltype(f(0))::value == 3, ""); } } namespace test_uniform_initialization { struct test { static const int zero {}; static const int one {1}; }; static_assert(test::zero == 0, ""); static_assert(test::one == 1, ""); } namespace test_lambdas { void test1() { auto lambda1 = [](){}; auto lambda2 = lambda1; lambda1(); lambda2(); } int test2() { auto a = [](int i, int j){ return i + j; }(1, 2); auto b = []() -> int { return '0'; }(); auto c = [=](){ return a + b; }(); auto d = [&](){ return c; }(); auto e = [a, &b](int x) mutable { const auto identity = [](int y){ return y; }; for (auto i = 0; i < a; ++i) a += b--; return x + identity(a + b); }(0); return a + b + c + d + e; } int test3() { const auto nullary = [](){ return 0; }; const auto unary = [](int x){ return x; }; using nullary_t = decltype(nullary); using unary_t = decltype(unary); const auto higher1st = [](nullary_t f){ return f(); }; const auto higher2nd = [unary](nullary_t f1){ return [unary, f1](unary_t f2){ return f2(unary(f1())); }; }; return higher1st(nullary) + higher2nd(nullary)(unary); } } namespace test_variadic_templates { template struct sum; template struct sum { static constexpr auto value = N0 + sum::value; }; template <> struct sum<> { static constexpr auto value = 0; }; static_assert(sum<>::value == 0, ""); static_assert(sum<1>::value == 1, ""); static_assert(sum<23>::value == 23, ""); static_assert(sum<1, 2>::value == 3, ""); static_assert(sum<5, 5, 11>::value == 21, ""); static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); } // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function // because of this. namespace test_template_alias_sfinae { struct foo {}; template using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } } // namespace cxx11 #endif // __cplusplus >= 201103L _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ax_cv_cxx_compile_cxx11=yes else $as_nop ax_cv_cxx_compile_cxx11=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5 printf "%s\n" "$ax_cv_cxx_compile_cxx11" >&6; } if test x$ax_cv_cxx_compile_cxx11 = xyes; then ac_success=yes fi if test x$ac_success = xno; then for alternative in ${ax_cxx_compile_alternatives}; do switch="-std=gnu++${alternative}" cachevar=`printf "%s\n" "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5 printf %s "checking whether $CXX supports C++11 features with $switch... " >&6; } if eval test \${$cachevar+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_CXX="$CXX" CXX="$CXX $switch" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ // If the compiler admits that it is not ready for C++11, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201103L #error "This is not a C++11 compiler" #else namespace cxx11 { namespace test_static_assert { template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; } namespace test_final_override { struct Base { virtual ~Base() {} virtual void f() {} }; struct Derived : public Base { virtual ~Derived() override {} virtual void f() override {} }; } namespace test_double_right_angle_brackets { template < typename T > struct check {}; typedef check single_type; typedef check> double_type; typedef check>> triple_type; typedef check>>> quadruple_type; } namespace test_decltype { int f() { int a = 1; decltype(a) b = 2; return a + b; } } namespace test_type_deduction { template < typename T1, typename T2 > struct is_same { static const bool value = false; }; template < typename T > struct is_same { static const bool value = true; }; template < typename T1, typename T2 > auto add(T1 a1, T2 a2) -> decltype(a1 + a2) { return a1 + a2; } int test(const int c, volatile int v) { static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == false, ""); auto ac = c; auto av = v; auto sumi = ac + av + 'x'; auto sumf = ac + av + 1.0; static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == true, ""); return (sumf > 0.0) ? sumi : add(c, v); } } namespace test_noexcept { int f() { return 0; } int g() noexcept { return 0; } static_assert(noexcept(f()) == false, ""); static_assert(noexcept(g()) == true, ""); } namespace test_constexpr { template < typename CharT > unsigned long constexpr strlen_c_r(const CharT *const s, const unsigned long acc) noexcept { return *s ? strlen_c_r(s + 1, acc + 1) : acc; } template < typename CharT > unsigned long constexpr strlen_c(const CharT *const s) noexcept { return strlen_c_r(s, 0UL); } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("1") == 1UL, ""); static_assert(strlen_c("example") == 7UL, ""); static_assert(strlen_c("another\0example") == 7UL, ""); } namespace test_rvalue_references { template < int N > struct answer { static constexpr int value = N; }; answer<1> f(int&) { return answer<1>(); } answer<2> f(const int&) { return answer<2>(); } answer<3> f(int&&) { return answer<3>(); } void test() { int i = 0; const int c = 0; static_assert(decltype(f(i))::value == 1, ""); static_assert(decltype(f(c))::value == 2, ""); static_assert(decltype(f(0))::value == 3, ""); } } namespace test_uniform_initialization { struct test { static const int zero {}; static const int one {1}; }; static_assert(test::zero == 0, ""); static_assert(test::one == 1, ""); } namespace test_lambdas { void test1() { auto lambda1 = [](){}; auto lambda2 = lambda1; lambda1(); lambda2(); } int test2() { auto a = [](int i, int j){ return i + j; }(1, 2); auto b = []() -> int { return '0'; }(); auto c = [=](){ return a + b; }(); auto d = [&](){ return c; }(); auto e = [a, &b](int x) mutable { const auto identity = [](int y){ return y; }; for (auto i = 0; i < a; ++i) a += b--; return x + identity(a + b); }(0); return a + b + c + d + e; } int test3() { const auto nullary = [](){ return 0; }; const auto unary = [](int x){ return x; }; using nullary_t = decltype(nullary); using unary_t = decltype(unary); const auto higher1st = [](nullary_t f){ return f(); }; const auto higher2nd = [unary](nullary_t f1){ return [unary, f1](unary_t f2){ return f2(unary(f1())); }; }; return higher1st(nullary) + higher2nd(nullary)(unary); } } namespace test_variadic_templates { template struct sum; template struct sum { static constexpr auto value = N0 + sum::value; }; template <> struct sum<> { static constexpr auto value = 0; }; static_assert(sum<>::value == 0, ""); static_assert(sum<1>::value == 1, ""); static_assert(sum<23>::value == 23, ""); static_assert(sum<1, 2>::value == 3, ""); static_assert(sum<5, 5, 11>::value == 21, ""); static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); } // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function // because of this. namespace test_template_alias_sfinae { struct foo {}; template using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } } // namespace cxx11 #endif // __cplusplus >= 201103L _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : eval $cachevar=yes else $as_nop eval $cachevar=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CXX="$ac_save_CXX" fi eval ac_res=\$$cachevar { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if eval test x\$$cachevar = xyes; then CXX="$CXX $switch" if test -n "$CXXCPP" ; then CXXCPP="$CXXCPP $switch" fi ac_success=yes break fi done fi if test x$ac_success = xno; then for alternative in ${ax_cxx_compile_alternatives}; do for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do cachevar=`printf "%s\n" "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5 printf %s "checking whether $CXX supports C++11 features with $switch... " >&6; } if eval test \${$cachevar+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_CXX="$CXX" CXX="$CXX $switch" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ // If the compiler admits that it is not ready for C++11, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201103L #error "This is not a C++11 compiler" #else namespace cxx11 { namespace test_static_assert { template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; } namespace test_final_override { struct Base { virtual ~Base() {} virtual void f() {} }; struct Derived : public Base { virtual ~Derived() override {} virtual void f() override {} }; } namespace test_double_right_angle_brackets { template < typename T > struct check {}; typedef check single_type; typedef check> double_type; typedef check>> triple_type; typedef check>>> quadruple_type; } namespace test_decltype { int f() { int a = 1; decltype(a) b = 2; return a + b; } } namespace test_type_deduction { template < typename T1, typename T2 > struct is_same { static const bool value = false; }; template < typename T > struct is_same { static const bool value = true; }; template < typename T1, typename T2 > auto add(T1 a1, T2 a2) -> decltype(a1 + a2) { return a1 + a2; } int test(const int c, volatile int v) { static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == false, ""); auto ac = c; auto av = v; auto sumi = ac + av + 'x'; auto sumf = ac + av + 1.0; static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == true, ""); return (sumf > 0.0) ? sumi : add(c, v); } } namespace test_noexcept { int f() { return 0; } int g() noexcept { return 0; } static_assert(noexcept(f()) == false, ""); static_assert(noexcept(g()) == true, ""); } namespace test_constexpr { template < typename CharT > unsigned long constexpr strlen_c_r(const CharT *const s, const unsigned long acc) noexcept { return *s ? strlen_c_r(s + 1, acc + 1) : acc; } template < typename CharT > unsigned long constexpr strlen_c(const CharT *const s) noexcept { return strlen_c_r(s, 0UL); } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("1") == 1UL, ""); static_assert(strlen_c("example") == 7UL, ""); static_assert(strlen_c("another\0example") == 7UL, ""); } namespace test_rvalue_references { template < int N > struct answer { static constexpr int value = N; }; answer<1> f(int&) { return answer<1>(); } answer<2> f(const int&) { return answer<2>(); } answer<3> f(int&&) { return answer<3>(); } void test() { int i = 0; const int c = 0; static_assert(decltype(f(i))::value == 1, ""); static_assert(decltype(f(c))::value == 2, ""); static_assert(decltype(f(0))::value == 3, ""); } } namespace test_uniform_initialization { struct test { static const int zero {}; static const int one {1}; }; static_assert(test::zero == 0, ""); static_assert(test::one == 1, ""); } namespace test_lambdas { void test1() { auto lambda1 = [](){}; auto lambda2 = lambda1; lambda1(); lambda2(); } int test2() { auto a = [](int i, int j){ return i + j; }(1, 2); auto b = []() -> int { return '0'; }(); auto c = [=](){ return a + b; }(); auto d = [&](){ return c; }(); auto e = [a, &b](int x) mutable { const auto identity = [](int y){ return y; }; for (auto i = 0; i < a; ++i) a += b--; return x + identity(a + b); }(0); return a + b + c + d + e; } int test3() { const auto nullary = [](){ return 0; }; const auto unary = [](int x){ return x; }; using nullary_t = decltype(nullary); using unary_t = decltype(unary); const auto higher1st = [](nullary_t f){ return f(); }; const auto higher2nd = [unary](nullary_t f1){ return [unary, f1](unary_t f2){ return f2(unary(f1())); }; }; return higher1st(nullary) + higher2nd(nullary)(unary); } } namespace test_variadic_templates { template struct sum; template struct sum { static constexpr auto value = N0 + sum::value; }; template <> struct sum<> { static constexpr auto value = 0; }; static_assert(sum<>::value == 0, ""); static_assert(sum<1>::value == 1, ""); static_assert(sum<23>::value == 23, ""); static_assert(sum<1, 2>::value == 3, ""); static_assert(sum<5, 5, 11>::value == 21, ""); static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); } // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function // because of this. namespace test_template_alias_sfinae { struct foo {}; template using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } } // namespace cxx11 #endif // __cplusplus >= 201103L _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : eval $cachevar=yes else $as_nop eval $cachevar=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CXX="$ac_save_CXX" fi eval ac_res=\$$cachevar { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if eval test x\$$cachevar = xyes; then CXX="$CXX $switch" if test -n "$CXXCPP" ; then CXXCPP="$CXXCPP $switch" fi ac_success=yes break fi done if test x$ac_success = xyes; then break fi done fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test x$ax_cxx_compile_cxx11_required = xtrue; then if test x$ac_success = xno; then as_fn_error $? "*** A compiler with support for C++11 language features is required." "$LINENO" 5 fi fi if test x$ac_success = xno; then HAVE_CXX11=0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5 printf "%s\n" "$as_me: No compiler with C++11 support was found" >&6;} else HAVE_CXX11=1 printf "%s\n" "#define HAVE_CXX11 1" >>confdefs.h fi # Include Bakefile macros ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the Intel C compiler" >&5 printf %s "checking whether we are using the Intel C compiler... " >&6; } if test ${bakefile_cv_c_compiler___INTEL_COMPILER+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __INTEL_COMPILER choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : bakefile_cv_c_compiler___INTEL_COMPILER=yes else $as_nop bakefile_cv_c_compiler___INTEL_COMPILER=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___INTEL_COMPILER" >&5 printf "%s\n" "$bakefile_cv_c_compiler___INTEL_COMPILER" >&6; } if test "x$bakefile_cv_c_compiler___INTEL_COMPILER" = "xyes"; then :; INTELCC=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test "$INTELCC" = "yes"; then ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using Intel C compiler v8 or later" >&5 printf %s "checking whether we are using Intel C compiler v8 or later... " >&6; } if test ${bakefile_cv_c_compiler___INTEL_COMPILER_lt_800+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __INTEL_COMPILER || __INTEL_COMPILER < 800 choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : bakefile_cv_c_compiler___INTEL_COMPILER_lt_800=yes else $as_nop bakefile_cv_c_compiler___INTEL_COMPILER_lt_800=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___INTEL_COMPILER_lt_800" >&5 printf "%s\n" "$bakefile_cv_c_compiler___INTEL_COMPILER_lt_800" >&6; } if test "x$bakefile_cv_c_compiler___INTEL_COMPILER_lt_800" = "xyes"; then :; INTELCC8=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using Intel C compiler v10 or later" >&5 printf %s "checking whether we are using Intel C compiler v10 or later... " >&6; } if test ${bakefile_cv_c_compiler___INTEL_COMPILER_lt_1000+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __INTEL_COMPILER || __INTEL_COMPILER < 1000 choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : bakefile_cv_c_compiler___INTEL_COMPILER_lt_1000=yes else $as_nop bakefile_cv_c_compiler___INTEL_COMPILER_lt_1000=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___INTEL_COMPILER_lt_1000" >&5 printf "%s\n" "$bakefile_cv_c_compiler___INTEL_COMPILER_lt_1000" >&6; } if test "x$bakefile_cv_c_compiler___INTEL_COMPILER_lt_1000" = "xyes"; then :; INTELCC10=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi if test "x$GCC" != "xyes"; then case `uname -s` in AIX*) ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the IBM xlC C compiler" >&5 printf %s "checking whether we are using the IBM xlC C compiler... " >&6; } if test ${bakefile_cv_c_compiler___xlC__+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __xlC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : bakefile_cv_c_compiler___xlC__=yes else $as_nop bakefile_cv_c_compiler___xlC__=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___xlC__" >&5 printf "%s\n" "$bakefile_cv_c_compiler___xlC__" >&6; } if test "x$bakefile_cv_c_compiler___xlC__" = "xyes"; then :; XLCC=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; Darwin) ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the IBM xlC C compiler" >&5 printf %s "checking whether we are using the IBM xlC C compiler... " >&6; } if test ${bakefile_cv_c_compiler___xlC__+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __xlC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : bakefile_cv_c_compiler___xlC__=yes else $as_nop bakefile_cv_c_compiler___xlC__=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___xlC__" >&5 printf "%s\n" "$bakefile_cv_c_compiler___xlC__" >&6; } if test "x$bakefile_cv_c_compiler___xlC__" = "xyes"; then :; XLCC=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; IRIX*) ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the SGI C compiler" >&5 printf %s "checking whether we are using the SGI C compiler... " >&6; } if test ${bakefile_cv_c_compiler__SGI_COMPILER_VERSION+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef _SGI_COMPILER_VERSION choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : bakefile_cv_c_compiler__SGI_COMPILER_VERSION=yes else $as_nop bakefile_cv_c_compiler__SGI_COMPILER_VERSION=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler__SGI_COMPILER_VERSION" >&5 printf "%s\n" "$bakefile_cv_c_compiler__SGI_COMPILER_VERSION" >&6; } if test "x$bakefile_cv_c_compiler__SGI_COMPILER_VERSION" = "xyes"; then :; SGICC=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; Linux*) if test "$INTELCC" != "yes"; then ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the Sun C compiler" >&5 printf %s "checking whether we are using the Sun C compiler... " >&6; } if test ${bakefile_cv_c_compiler___SUNPRO_C+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __SUNPRO_C choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : bakefile_cv_c_compiler___SUNPRO_C=yes else $as_nop bakefile_cv_c_compiler___SUNPRO_C=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___SUNPRO_C" >&5 printf "%s\n" "$bakefile_cv_c_compiler___SUNPRO_C" >&6; } if test "x$bakefile_cv_c_compiler___SUNPRO_C" = "xyes"; then :; SUNCC=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi ;; HP-UX*) ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the HP C compiler" >&5 printf %s "checking whether we are using the HP C compiler... " >&6; } if test ${bakefile_cv_c_compiler___HP_cc+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __HP_cc choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : bakefile_cv_c_compiler___HP_cc=yes else $as_nop bakefile_cv_c_compiler___HP_cc=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___HP_cc" >&5 printf "%s\n" "$bakefile_cv_c_compiler___HP_cc" >&6; } if test "x$bakefile_cv_c_compiler___HP_cc" = "xyes"; then :; HPCC=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; OSF1) ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the Compaq C compiler" >&5 printf %s "checking whether we are using the Compaq C compiler... " >&6; } if test ${bakefile_cv_c_compiler___DECC+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __DECC choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : bakefile_cv_c_compiler___DECC=yes else $as_nop bakefile_cv_c_compiler___DECC=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___DECC" >&5 printf "%s\n" "$bakefile_cv_c_compiler___DECC" >&6; } if test "x$bakefile_cv_c_compiler___DECC" = "xyes"; then :; COMPAQCC=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; SunOS) ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the Sun C compiler" >&5 printf %s "checking whether we are using the Sun C compiler... " >&6; } if test ${bakefile_cv_c_compiler___SUNPRO_C+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __SUNPRO_C choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : bakefile_cv_c_compiler___SUNPRO_C=yes else $as_nop bakefile_cv_c_compiler___SUNPRO_C=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___SUNPRO_C" >&5 printf "%s\n" "$bakefile_cv_c_compiler___SUNPRO_C" >&6; } if test "x$bakefile_cv_c_compiler___SUNPRO_C" = "xyes"; then :; SUNCC=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; esac fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the Intel C++ compiler" >&5 printf %s "checking whether we are using the Intel C++ compiler... " >&6; } if test ${bakefile_cv_cxx_compiler___INTEL_COMPILER+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __INTEL_COMPILER choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_cxx_compiler___INTEL_COMPILER=yes else $as_nop bakefile_cv_cxx_compiler___INTEL_COMPILER=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___INTEL_COMPILER" >&5 printf "%s\n" "$bakefile_cv_cxx_compiler___INTEL_COMPILER" >&6; } if test "x$bakefile_cv_cxx_compiler___INTEL_COMPILER" = "xyes"; then :; INTELCXX=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test "$INTELCXX" = "yes"; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using Intel C++ compiler v8 or later" >&5 printf %s "checking whether we are using Intel C++ compiler v8 or later... " >&6; } if test ${bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_800+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __INTEL_COMPILER || __INTEL_COMPILER < 800 choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_800=yes else $as_nop bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_800=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_800" >&5 printf "%s\n" "$bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_800" >&6; } if test "x$bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_800" = "xyes"; then :; INTELCXX8=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using Intel C++ compiler v10 or later" >&5 printf %s "checking whether we are using Intel C++ compiler v10 or later... " >&6; } if test ${bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_1000+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __INTEL_COMPILER || __INTEL_COMPILER < 1000 choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_1000=yes else $as_nop bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_1000=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_1000" >&5 printf "%s\n" "$bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_1000" >&6; } if test "x$bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_1000" = "xyes"; then :; INTELCXX10=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi if test "x$GCXX" != "xyes"; then case `uname -s` in AIX*) ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the IBM xlC C++ compiler" >&5 printf %s "checking whether we are using the IBM xlC C++ compiler... " >&6; } if test ${bakefile_cv_cxx_compiler___xlC__+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __xlC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_cxx_compiler___xlC__=yes else $as_nop bakefile_cv_cxx_compiler___xlC__=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___xlC__" >&5 printf "%s\n" "$bakefile_cv_cxx_compiler___xlC__" >&6; } if test "x$bakefile_cv_cxx_compiler___xlC__" = "xyes"; then :; XLCXX=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; Darwin) ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the IBM xlC C++ compiler" >&5 printf %s "checking whether we are using the IBM xlC C++ compiler... " >&6; } if test ${bakefile_cv_cxx_compiler___xlC__+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __xlC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_cxx_compiler___xlC__=yes else $as_nop bakefile_cv_cxx_compiler___xlC__=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___xlC__" >&5 printf "%s\n" "$bakefile_cv_cxx_compiler___xlC__" >&6; } if test "x$bakefile_cv_cxx_compiler___xlC__" = "xyes"; then :; XLCXX=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; IRIX*) ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the SGI C++ compiler" >&5 printf %s "checking whether we are using the SGI C++ compiler... " >&6; } if test ${bakefile_cv_cxx_compiler__SGI_COMPILER_VERSION+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef _SGI_COMPILER_VERSION choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_cxx_compiler__SGI_COMPILER_VERSION=yes else $as_nop bakefile_cv_cxx_compiler__SGI_COMPILER_VERSION=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler__SGI_COMPILER_VERSION" >&5 printf "%s\n" "$bakefile_cv_cxx_compiler__SGI_COMPILER_VERSION" >&6; } if test "x$bakefile_cv_cxx_compiler__SGI_COMPILER_VERSION" = "xyes"; then :; SGICXX=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; Linux*) if test "$INTELCXX" != "yes"; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the Sun C++ compiler" >&5 printf %s "checking whether we are using the Sun C++ compiler... " >&6; } if test ${bakefile_cv_cxx_compiler___SUNPRO_CC+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __SUNPRO_CC choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_cxx_compiler___SUNPRO_CC=yes else $as_nop bakefile_cv_cxx_compiler___SUNPRO_CC=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___SUNPRO_CC" >&5 printf "%s\n" "$bakefile_cv_cxx_compiler___SUNPRO_CC" >&6; } if test "x$bakefile_cv_cxx_compiler___SUNPRO_CC" = "xyes"; then :; SUNCXX=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi ;; HP-UX*) ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the HP C++ compiler" >&5 printf %s "checking whether we are using the HP C++ compiler... " >&6; } if test ${bakefile_cv_cxx_compiler___HP_aCC+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __HP_aCC choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_cxx_compiler___HP_aCC=yes else $as_nop bakefile_cv_cxx_compiler___HP_aCC=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___HP_aCC" >&5 printf "%s\n" "$bakefile_cv_cxx_compiler___HP_aCC" >&6; } if test "x$bakefile_cv_cxx_compiler___HP_aCC" = "xyes"; then :; HPCXX=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; OSF1) ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the Compaq C++ compiler" >&5 printf %s "checking whether we are using the Compaq C++ compiler... " >&6; } if test ${bakefile_cv_cxx_compiler___DECCXX+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __DECCXX choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_cxx_compiler___DECCXX=yes else $as_nop bakefile_cv_cxx_compiler___DECCXX=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___DECCXX" >&5 printf "%s\n" "$bakefile_cv_cxx_compiler___DECCXX" >&6; } if test "x$bakefile_cv_cxx_compiler___DECCXX" = "xyes"; then :; COMPAQCXX=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; SunOS) ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the Sun C++ compiler" >&5 printf %s "checking whether we are using the Sun C++ compiler... " >&6; } if test ${bakefile_cv_cxx_compiler___SUNPRO_CC+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __SUNPRO_CC choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_cxx_compiler___SUNPRO_CC=yes else $as_nop bakefile_cv_cxx_compiler___SUNPRO_CC=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___SUNPRO_CC" >&5 printf "%s\n" "$bakefile_cv_cxx_compiler___SUNPRO_CC" >&6; } if test "x$bakefile_cv_cxx_compiler___SUNPRO_CC" = "xyes"; then :; SUNCXX=yes else :; fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ;; esac fi # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac # Account for fact that we put trailing slashes in our PATH walk. case $as_dir in #(( ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' if test "x$BAKEFILE_HOST" = "x"; then if test "x${host}" = "x" ; then as_fn_error $? "You must call the autoconf \"CANONICAL_HOST\" macro in your configure.ac (or .in) file." "$LINENO" 5 fi BAKEFILE_HOST="${host}" fi if test "x$BAKEFILE_CHECK_BASICS" != "xno"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 printf "%s\n" "$RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 printf "%s\n" "$ac_ct_RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 printf "%s\n" "no, using $LN_S" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi if test "x$SUNCXX" = "xyes"; then AR=$CXX AROPTIONS="-xar -o" elif test "x$SGICC" = "xyes"; then AR=$CXX AROPTIONS="-ar -o" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="${ac_tool_prefix}ar" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 printf "%s\n" "$AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="ar" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 printf "%s\n" "$ac_ct_AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="ar" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi else AR="$ac_cv_prog_AR" fi AROPTIONS=rc fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nm", so it can be a program name with args. set dummy ${ac_tool_prefix}nm; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_NM+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$NM"; then ac_cv_prog_NM="$NM" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_NM="${ac_tool_prefix}nm" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NM=$ac_cv_prog_NM if test -n "$NM"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NM" >&5 printf "%s\n" "$NM" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_NM"; then ac_ct_NM=$NM # Extract the first word of "nm", so it can be a program name with args. set dummy nm; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_NM+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_NM"; then ac_cv_prog_ac_ct_NM="$ac_ct_NM" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NM="nm" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NM=$ac_cv_prog_ac_ct_NM if test -n "$ac_ct_NM"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NM" >&5 printf "%s\n" "$ac_ct_NM" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_NM" = x; then NM=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NM=$ac_ct_NM fi else NM="$ac_cv_prog_NM" fi INSTALL_DIR="mkdir -p" LDFLAGS_GUI= case ${BAKEFILE_HOST} in *-*-cygwin* | *-*-mingw32* ) LDFLAGS_GUI="-mwindows" esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if make is GNU make" >&5 printf %s "checking if make is GNU make... " >&6; } if test ${bakefile_cv_prog_makeisgnu+y} then : printf %s "(cached) " >&6 else $as_nop if ( ${SHELL-sh} -c "${MAKE-make} --version" 2> /dev/null | egrep -s GNU > /dev/null); then bakefile_cv_prog_makeisgnu="yes" else bakefile_cv_prog_makeisgnu="no" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_prog_makeisgnu" >&5 printf "%s\n" "$bakefile_cv_prog_makeisgnu" >&6; } if test "x$bakefile_cv_prog_makeisgnu" = "xyes"; then IF_GNU_MAKE="" else IF_GNU_MAKE="#" fi PLATFORM_UNIX=0 PLATFORM_WIN32=0 PLATFORM_MAC=0 PLATFORM_MACOS=0 PLATFORM_MACOSX=0 PLATFORM_BEOS=0 if test "x$BAKEFILE_FORCE_PLATFORM" = "x"; then case "${BAKEFILE_HOST}" in *-*-mingw32* ) PLATFORM_WIN32=1 ;; *-*-darwin* ) PLATFORM_MAC=1 PLATFORM_MACOSX=1 ;; *-*-beos* ) PLATFORM_BEOS=1 ;; powerpc-apple-macos* ) PLATFORM_MAC=1 PLATFORM_MACOS=1 ;; * ) PLATFORM_UNIX=1 ;; esac else case "$BAKEFILE_FORCE_PLATFORM" in win32 ) PLATFORM_WIN32=1 ;; darwin ) PLATFORM_MAC=1 PLATFORM_MACOSX=1 ;; unix ) PLATFORM_UNIX=1 ;; beos ) PLATFORM_BEOS=1 ;; * ) as_fn_error $? "Unknown platform: $BAKEFILE_FORCE_PLATFORM" "$LINENO" 5 ;; esac fi case "${BAKEFILE_HOST}" in *-*-darwin* ) if test "x$GCC" = "xyes"; then CFLAGS="$CFLAGS -fno-common" CXXFLAGS="$CXXFLAGS -fno-common" fi if test "x$XLCC" = "xyes"; then CFLAGS="$CFLAGS -qnocommon" CXXFLAGS="$CXXFLAGS -qnocommon" fi ;; i*86-*-beos* ) LDFLAGS="-L/boot/develop/lib/x86 $LDFLAGS" ;; esac SO_SUFFIX="so" SO_SUFFIX_MODULE="so" EXEEXT="" LIBPREFIX="lib" LIBEXT=".a" DLLPREFIX="lib" DLLPREFIX_MODULE="" DLLIMP_SUFFIX="" dlldir="$libdir" case "${BAKEFILE_HOST}" in ia64-hp-hpux* ) ;; *-hp-hpux* ) SO_SUFFIX="sl" SO_SUFFIX_MODULE="sl" ;; *-*-aix* ) SO_SUFFIX="a" SO_SUFFIX_MODULE="a" ;; *-*-cygwin* ) SO_SUFFIX="dll" SO_SUFFIX_MODULE="dll" DLLIMP_SUFFIX="dll.a" EXEEXT=".exe" DLLPREFIX="cyg" dlldir="$bindir" ;; *-*-mingw32* ) SO_SUFFIX="dll" SO_SUFFIX_MODULE="dll" DLLIMP_SUFFIX="dll.a" EXEEXT=".exe" DLLPREFIX="" dlldir="$bindir" ;; *-*-darwin* ) SO_SUFFIX="dylib" SO_SUFFIX_MODULE="bundle" ;; esac if test "x$DLLIMP_SUFFIX" = "x" ; then DLLIMP_SUFFIX="$SO_SUFFIX" fi PIC_FLAG="" if test "x$GCC" = "xyes"; then PIC_FLAG="-fPIC" fi SHARED_LD_CC="\$(CC) -shared ${PIC_FLAG} -o" SHARED_LD_CXX="\$(CXX) -shared ${PIC_FLAG} -o" WINDOWS_IMPLIB=0 case "${BAKEFILE_HOST}" in *-hp-hpux* ) if test "x$GCC" != "xyes"; then LDFLAGS="$LDFLAGS -L/usr/lib" SHARED_LD_CC="${CC} -b -o" SHARED_LD_CXX="${CXX} -b -o" PIC_FLAG="+Z" fi ;; *-*-linux* ) if test "$INTELCC" = "yes" -a "$INTELCC8" != "yes"; then PIC_FLAG="-KPIC" elif test "x$SUNCXX" = "xyes"; then SHARED_LD_CC="${CC} -G -o" SHARED_LD_CXX="${CXX} -G -o" PIC_FLAG="-KPIC" fi ;; *-*-solaris2* ) if test "x$SUNCXX" = xyes ; then SHARED_LD_CC="${CC} -G -o" SHARED_LD_CXX="${CXX} -G -o" PIC_FLAG="-KPIC" fi ;; *-*-darwin* ) D='$' cat <shared-ld-sh #!/bin/sh #----------------------------------------------------------------------------- #-- Name: distrib/mac/shared-ld-sh #-- Purpose: Link a mach-o dynamic shared library for Darwin / Mac OS X #-- Author: Gilles Depeyrot #-- Copyright: (c) 2002 Gilles Depeyrot #-- Licence: any use permitted #----------------------------------------------------------------------------- verbose=0 args="" objects="" linking_flag="-dynamiclib" ldargs="-r -keep_private_externs -nostdlib" if test "x${D}CXX" = "x"; then CXX="c++" fi while test ${D}# -gt 0; do case ${D}1 in -v) verbose=1 ;; -o|-compatibility_version|-current_version|-framework|-undefined|-install_name) # collect these options and values args="${D}{args} ${D}1 ${D}2" shift ;; -arch|-isysroot) # collect these options and values ldargs="${D}{ldargs} ${D}1 ${D}2" shift ;; -s|-Wl,*) # collect these load args ldargs="${D}{ldargs} ${D}1" ;; -l*|-L*|-flat_namespace|-headerpad_max_install_names) # collect these options args="${D}{args} ${D}1" ;; -dynamiclib|-bundle) linking_flag="${D}1" ;; -*) echo "shared-ld: unhandled option '${D}1'" exit 1 ;; *.o | *.a | *.dylib) # collect object files objects="${D}{objects} ${D}1" ;; *) echo "shared-ld: unhandled argument '${D}1'" exit 1 ;; esac shift done status=0 # # Link one module containing all the others # if test ${D}{verbose} = 1; then echo "${D}CXX ${D}{ldargs} ${D}{objects} -o master.${D}${D}.o" fi ${D}CXX ${D}{ldargs} ${D}{objects} -o master.${D}${D}.o status=${D}? # # Link the shared library from the single module created, but only if the # previous command didn't fail: # if test ${D}{status} = 0; then if test ${D}{verbose} = 1; then echo "${D}CXX ${D}{linking_flag} master.${D}${D}.o ${D}{args}" fi ${D}CXX ${D}{linking_flag} master.${D}${D}.o ${D}{args} status=${D}? fi # # Remove intermediate module # rm -f master.${D}${D}.o exit ${D}status EOF chmod +x shared-ld-sh SHARED_LD_MODULE_CC="`pwd`/shared-ld-sh -bundle -headerpad_max_install_names -o" SHARED_LD_MODULE_CXX="CXX=\"\$(CXX)\" $SHARED_LD_MODULE_CC" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gcc 3.1 or later" >&5 printf %s "checking for gcc 3.1 or later... " >&6; } if test ${bakefile_cv_gcc31+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #if (__GNUC__ < 3) || \ ((__GNUC__ == 3) && (__GNUC_MINOR__ < 1)) This is old gcc #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : bakefile_cv_gcc31=yes else $as_nop bakefile_cv_gcc31=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_gcc31" >&5 printf "%s\n" "$bakefile_cv_gcc31" >&6; } if test "$bakefile_cv_gcc31" = "no"; then SHARED_LD_CC="`pwd`/shared-ld-sh -dynamiclib -headerpad_max_install_names -o" SHARED_LD_CXX="$SHARED_LD_CC" else SHARED_LD_CC="\${CC} -dynamiclib -single_module -headerpad_max_install_names -o" SHARED_LD_CXX="\${CXX} -dynamiclib -single_module -headerpad_max_install_names -o" fi if test "x$GCC" == "xyes"; then PIC_FLAG="-dynamic -fPIC" fi if test "x$XLCC" = "xyes"; then PIC_FLAG="-dynamic -DPIC" fi ;; *-*-aix* ) if test "x$GCC" = "xyes"; then PIC_FLAG="" case "${BAKEFILE_HOST}" in *-*-aix5* ) LD_EXPFULL="-Wl,-bexpfull" ;; esac SHARED_LD_CC="\$(CC) -shared $LD_EXPFULL -o" SHARED_LD_CXX="\$(CXX) -shared $LD_EXPFULL -o" else # Extract the first word of "makeC++SharedLib", so it can be a program name with args. set dummy makeC++SharedLib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AIX_CXX_LD+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AIX_CXX_LD"; then ac_cv_prog_AIX_CXX_LD="$AIX_CXX_LD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AIX_CXX_LD="makeC++SharedLib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_AIX_CXX_LD" && ac_cv_prog_AIX_CXX_LD="/usr/lpp/xlC/bin/makeC++SharedLib" fi fi AIX_CXX_LD=$ac_cv_prog_AIX_CXX_LD if test -n "$AIX_CXX_LD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AIX_CXX_LD" >&5 printf "%s\n" "$AIX_CXX_LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi SHARED_LD_CC="$AIX_CC_LD -p 0 -o" SHARED_LD_CXX="$AIX_CXX_LD -p 0 -o" fi ;; *-*-beos* ) SHARED_LD_CC="${LD} -nostart -o" SHARED_LD_CXX="${LD} -nostart -o" ;; *-*-irix* ) if test "x$GCC" != "xyes"; then PIC_FLAG="-KPIC" fi ;; *-*-cygwin* | *-*-mingw32* ) PIC_FLAG="" SHARED_LD_CC="\$(CC) -shared -o" SHARED_LD_CXX="\$(CXX) -shared -o" WINDOWS_IMPLIB=1 ;; powerpc-apple-macos* | \ *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | *-*-gnu* | *-*-k*bsd*-gnu | \ *-*-mirbsd* | \ *-*-sunos4* | \ *-*-osf* | \ *-*-dgux5* | \ *-*-sysv5* ) ;; *) as_fn_error $? "unknown system type $BAKEFILE_HOST." "$LINENO" 5 esac if test "x$PIC_FLAG" != "x" ; then PIC_FLAG="$PIC_FLAG -DPIC" fi if test "x$SHARED_LD_MODULE_CC" = "x" ; then SHARED_LD_MODULE_CC="$SHARED_LD_CC" fi if test "x$SHARED_LD_MODULE_CXX" = "x" ; then SHARED_LD_MODULE_CXX="$SHARED_LD_CXX" fi USE_SOVERSION=0 USE_SOVERLINUX=0 USE_SOVERSOLARIS=0 USE_SOVERCYGWIN=0 USE_SOTWOSYMLINKS=0 USE_MACVERSION=0 SONAME_FLAG= case "${BAKEFILE_HOST}" in *-*-linux* | *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | \ *-*-k*bsd*-gnu | *-*-mirbsd* | *-*-gnu* ) if test "x$SUNCXX" = "xyes"; then SONAME_FLAG="-h " else SONAME_FLAG="-Wl,-soname," fi USE_SOVERSION=1 USE_SOVERLINUX=1 USE_SOTWOSYMLINKS=1 ;; *-*-solaris2* ) SONAME_FLAG="-h " USE_SOVERSION=1 USE_SOVERSOLARIS=1 ;; *-*-darwin* ) USE_MACVERSION=1 USE_SOVERSION=1 USE_SOTWOSYMLINKS=1 ;; *-*-cygwin* ) USE_SOVERSION=1 USE_SOVERCYGWIN=1 ;; esac # Check whether --enable-dependency-tracking was given. if test ${enable_dependency_tracking+y} then : enableval=$enable_dependency_tracking; bk_use_trackdeps="$enableval" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dependency tracking method" >&5 printf %s "checking for dependency tracking method... " >&6; } BK_DEPS="" if test "x$bk_use_trackdeps" = "xno" ; then DEPS_TRACKING=0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: disabled" >&5 printf "%s\n" "disabled" >&6; } else DEPS_TRACKING=1 if test "x$GCC" = "xyes"; then DEPSMODE=gcc DEPSFLAG="-MMD" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: gcc" >&5 printf "%s\n" "gcc" >&6; } elif test "x$SUNCC" = "xyes"; then DEPSMODE=unixcc DEPSFLAG="-xM1" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Sun cc" >&5 printf "%s\n" "Sun cc" >&6; } elif test "x$SGICC" = "xyes"; then DEPSMODE=unixcc DEPSFLAG="-M" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: SGI cc" >&5 printf "%s\n" "SGI cc" >&6; } elif test "x$HPCC" = "xyes"; then DEPSMODE=unixcc DEPSFLAG="+make" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: HP cc" >&5 printf "%s\n" "HP cc" >&6; } elif test "x$COMPAQCC" = "xyes"; then DEPSMODE=gcc DEPSFLAG="-MD" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Compaq cc" >&5 printf "%s\n" "Compaq cc" >&6; } else DEPS_TRACKING=0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 printf "%s\n" "none" >&6; } fi if test $DEPS_TRACKING = 1 ; then D='$' cat <bk-deps #!/bin/sh # This script is part of Bakefile (http://www.bakefile.org) autoconf # script. It is used to track C/C++ files dependencies in portable way. # # Permission is given to use this file in any way. DEPSMODE=${DEPSMODE} DEPSFLAG="${DEPSFLAG}" DEPSDIRBASE=.deps if test ${D}DEPSMODE = gcc ; then ${D}* ${D}{DEPSFLAG} status=${D}? # determine location of created files: while test ${D}# -gt 0; do case "${D}1" in -o ) shift objfile=${D}1 ;; -* ) ;; * ) srcfile=${D}1 ;; esac shift done objfilebase=\`basename ${D}objfile\` builddir=\`dirname ${D}objfile\` depfile=\`basename ${D}srcfile | sed -e 's/\\..*${D}/.d/g'\` depobjname=\`echo ${D}depfile |sed -e 's/\\.d/.o/g'\` depsdir=${D}builddir/${D}DEPSDIRBASE mkdir -p ${D}depsdir # if the compiler failed, we're done: if test ${D}{status} != 0 ; then rm -f ${D}depfile exit ${D}{status} fi # move created file to the location we want it in: if test -f ${D}depfile ; then sed -e "s,${D}depobjname:,${D}objfile:,g" ${D}depfile >${D}{depsdir}/${D}{objfilebase}.d rm -f ${D}depfile else # "g++ -MMD -o fooobj.o foosrc.cpp" produces fooobj.d depfile=\`echo "${D}objfile" | sed -e 's/\\..*${D}/.d/g'\` if test ! -f ${D}depfile ; then # "cxx -MD -o fooobj.o foosrc.cpp" creates fooobj.o.d (Compaq C++) depfile="${D}objfile.d" fi if test -f ${D}depfile ; then sed -e "\\,^${D}objfile,!s,${D}depobjname:,${D}objfile:,g" ${D}depfile >${D}{depsdir}/${D}{objfilebase}.d rm -f ${D}depfile fi fi exit 0 elif test ${D}DEPSMODE = unixcc; then ${D}* || exit ${D}? # Run compiler again with deps flag and redirect into the dep file. # It doesn't work if the '-o FILE' option is used, but without it the # dependency file will contain the wrong name for the object. So it is # removed from the command line, and the dep file is fixed with sed. cmd="" while test ${D}# -gt 0; do case "${D}1" in -o ) shift objfile=${D}1 ;; * ) eval arg${D}#=\\${D}1 cmd="${D}cmd \\${D}arg${D}#" ;; esac shift done objfilebase=\`basename ${D}objfile\` builddir=\`dirname ${D}objfile\` depsdir=${D}builddir/${D}DEPSDIRBASE mkdir -p ${D}depsdir eval "${D}cmd ${D}DEPSFLAG" | sed "s|.*:|${D}objfile:|" >${D}{depsdir}/${D}{objfilebase}.d exit 0 else ${D}* exit ${D}? fi EOF chmod +x bk-deps BK_DEPS="`pwd`/bk-deps" fi fi case ${BAKEFILE_HOST} in *-*-cygwin* | *-*-mingw32* ) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args. set dummy ${ac_tool_prefix}windres; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_WINDRES+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$WINDRES"; then ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_WINDRES="${ac_tool_prefix}windres" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi WINDRES=$ac_cv_prog_WINDRES if test -n "$WINDRES"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5 printf "%s\n" "$WINDRES" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_WINDRES"; then ac_ct_WINDRES=$WINDRES # Extract the first word of "windres", so it can be a program name with args. set dummy windres; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_WINDRES+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_WINDRES"; then ac_cv_prog_ac_ct_WINDRES="$ac_ct_WINDRES" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_WINDRES="windres" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_WINDRES=$ac_cv_prog_ac_ct_WINDRES if test -n "$ac_ct_WINDRES"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5 printf "%s\n" "$ac_ct_WINDRES" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_WINDRES" = x; then WINDRES="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac WINDRES=$ac_ct_WINDRES fi else WINDRES="$ac_cv_prog_WINDRES" fi ;; esac BAKEFILE_BAKEFILE_M4_VERSION="0.2.11" BAKEFILE_AUTOCONF_INC_M4_VERSION="0.2.11" COND_BUILD_debug="#" if test "x$BUILD" = "xdebug" ; then COND_BUILD_debug="" fi COND_BUILD_release="#" if test "x$BUILD" = "xrelease" ; then COND_BUILD_release="" fi COND_DEPS_TRACKING_0="#" if test "x$DEPS_TRACKING" = "x0" ; then COND_DEPS_TRACKING_0="" fi COND_DEPS_TRACKING_1="#" if test "x$DEPS_TRACKING" = "x1" ; then COND_DEPS_TRACKING_1="" fi COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1="#" if test "x$PLATFORM_MACOSX" = "x0" -a "x$USE_SOVERCYGWIN" = "x0" -a "x$USE_SOVERSION" = "x1" ; then COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1="" fi COND_PLATFORM_MACOSX_0_USE_SOVERSION_1="#" if test "x$PLATFORM_MACOSX" = "x0" -a "x$USE_SOVERSION" = "x1" ; then COND_PLATFORM_MACOSX_0_USE_SOVERSION_1="" fi COND_PLATFORM_MACOSX_1="#" if test "x$PLATFORM_MACOSX" = "x1" ; then COND_PLATFORM_MACOSX_1="" fi COND_PLATFORM_MACOSX_1_USE_SOVERSION_1="#" if test "x$PLATFORM_MACOSX" = "x1" -a "x$USE_SOVERSION" = "x1" ; then COND_PLATFORM_MACOSX_1_USE_SOVERSION_1="" fi COND_PLATFORM_OS2_1="#" if test "x$PLATFORM_OS2" = "x1" ; then COND_PLATFORM_OS2_1="" fi COND_USE_SOTWOSYMLINKS_1="#" if test "x$USE_SOTWOSYMLINKS" = "x1" ; then COND_USE_SOTWOSYMLINKS_1="" fi COND_USE_SOVERCYGWIN_1_USE_SOVERSION_1="#" if test "x$USE_SOVERCYGWIN" = "x1" -a "x$USE_SOVERSION" = "x1" ; then COND_USE_SOVERCYGWIN_1_USE_SOVERSION_1="" fi COND_USE_SOVERLINUX_1="#" if test "x$USE_SOVERLINUX" = "x1" ; then COND_USE_SOVERLINUX_1="" fi COND_USE_SOVERSION_0="#" if test "x$USE_SOVERSION" = "x0" ; then COND_USE_SOVERSION_0="" fi COND_USE_SOVERSION_1_USE_SOVERSOLARIS_1="#" if test "x$USE_SOVERSION" = "x1" -a "x$USE_SOVERSOLARIS" = "x1" ; then COND_USE_SOVERSION_1_USE_SOVERSOLARIS_1="" fi COND_USE_SOVERSOLARIS_1="#" if test "x$USE_SOVERSOLARIS" = "x1" ; then COND_USE_SOVERSOLARIS_1="" fi COND_WINDOWS_IMPLIB_1="#" if test "x$WINDOWS_IMPLIB" = "x1" ; then COND_WINDOWS_IMPLIB_1="" fi if test "$BAKEFILE_AUTOCONF_INC_M4_VERSION" = "" ; then as_fn_error $? "No version found in autoconf_inc.m4 - bakefile macro was changed to take additional argument, perhaps configure.in wasn't updated (see the documentation)?" "$LINENO" 5 fi if test "$BAKEFILE_BAKEFILE_M4_VERSION" != "$BAKEFILE_AUTOCONF_INC_M4_VERSION" ; then as_fn_error $? "Versions of Bakefile used to generate makefiles ($BAKEFILE_AUTOCONF_INC_M4_VERSION) and configure ($BAKEFILE_BAKEFILE_M4_VERSION) do not match." "$LINENO" 5 fi # # Configure process complete; write out files generated from *.in. # ac_config_files="$ac_config_files doc/userman/userman.dbx install.hta lib/Doxyfile lib/mysql++.h ssx/Doxyfile abi.xml mysql++.spec Makefile version" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by mysql++ $as_me 3.3.0, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ mysql++ config.status 3.3.0 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_separator_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path \ reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX \ postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "doc/userman/userman.dbx") CONFIG_FILES="$CONFIG_FILES doc/userman/userman.dbx" ;; "install.hta") CONFIG_FILES="$CONFIG_FILES install.hta" ;; "lib/Doxyfile") CONFIG_FILES="$CONFIG_FILES lib/Doxyfile" ;; "lib/mysql++.h") CONFIG_FILES="$CONFIG_FILES lib/mysql++.h" ;; "ssx/Doxyfile") CONFIG_FILES="$CONFIG_FILES ssx/Doxyfile" ;; "abi.xml") CONFIG_FILES="$CONFIG_FILES abi.xml" ;; "mysql++.spec") CONFIG_FILES="$CONFIG_FILES mysql++.spec" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "version") CONFIG_FILES="$CONFIG_FILES version" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "libtool":C) # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 # Copyright (C) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # The names of the tagged configurations supported by this script. available_tags='CXX ' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi chmod +x version mysql++-3.3.0/ChangeLog.md000644 000765 000024 00000416370 14042362131 015773 0ustar00tangentstaff000000 000000 # Change Log ## 3.3.0, 2021.04.28 * MySQL++ now detects the availability of C++11 capable compilers on Autoconf based systems and adjusts the compiler calling command to require that if such options are required. The general policy for MySQL++ is to support the oldest version of C++ that our oldest supported system provides. Thus the update to C++11: the last compilers still supporting only C++03 or C++98 dropped out of support since the last time we checked. It may be that this release still supports these older versions of C++, but we will not longer go very far out of our way to ensure it. Patches to restore backwards compatibility will be accepted if they don’t break forward compatibility. **Beware:** This change means builds are only ABI-compatible within the 3.x series when built with the same C++ version! You may need to override `CXX`, `CXXFLAGS` and similar to get an ABI-compatible build, since older releases would use the generic compiler options, which might default to older versions of C++. You can adjust the build system to try for C++14 or C++17 by changing the `AX_CXX_COMPILE_STDCXX` call in `configure.ac`. Although this release contains features that depend on C++17, they’re optional, so unless you do this or adjust the build flags manually to ask your compiler to use a newer C++ version, these features will not be built into MySQL++. * Several conditional C++11 thru C++17 improvements by GitHub user “BratSinot:†* Added move ctors and no-copy ctors to `ScopedConnection`. * The copy ctor and assignment operators for `class ScopedLock` change so the compiler can elide them where it finds that safe. * Added no-copy and no-assign ctors to class NoExceptions. * Added a no-assign operator to `class mysql_ti_sql_type_info`. * Using (`std::string::operator==`) in the inner loop of `FieldNames::operator []` to speed up comparisons. * Changed the “file slurp†idiom used by the `load_jpeg` example to a form that works with C++11, squishing an “address to rvalue†complaint with some compilers. * Throwing exceptions (if enabled) from a few more places in the code now when the underlying C API library reports an error. * Fixed a SQL type mapping problem with `TIMESTAMP NULL`. Patch by Fossil repository user `nofree`. * Replaced a use of `size()` in bool context on an STL data structure where that isn’t a constant-time operation with faster `!empty()`. * Updated the stock paths in the MySQL C API library autodiscovery Autoconf macro so it'll work on MariaDB based systems where the headers and/or library are installed in a `.../mariadb` directory instead of `.../mysql` for backwards compatibility. * The RPM spec file now declares a build dependency on `mariadb-devel` rather than `mysql-devel`. * Reordered the `-L.` flag in the build lines to ensure the examples and test programs link against the in-tree version of MySQL++ if you have it installed at the system level as well. * Squished pedantic warnings from newer compilers. * Assorted documentation improvements. * Assorted build system improvements. ## 3.2.5, 2019.07.21 * Supports `ulonglong` in MySQL++-to-SQL data type conversions so you can pass the return from `Result.insert_id()` and such into another SQL expression. This previously required an explicit cast to one of the `sql_*` types when using a C++ compiler that can’t figure out that `sql_bigint` is equivalent on its own. * Updates to support newer versions of MySQL and MariaDB. * Assorted documentation improvements. * Assorted build system improvements. ## 3.2.4, 2018.07.26 * Added the `MYSQLPP_UTF8_CS` and `MYSQLPP_UTF8_COL` macros to allow a given bit of code use either the legacy "utf8" character set or the new full-Unicode "utf8mb4" version depending on whether MySQL++ is built against MySQL 5.5 or newer, the version where `utf8mb4` was added. Using this in the `resetdb` example to demo the feature. * Updated the [Unicode chapter of the user manual][umuc] to cover this and other changes in the Unicode world over the past several years. * Recent versions of MySQL and MariaDB have removed some obsolete features, causing MySQL++ build errors in places where the library wraps one of these features: * MySQL 8.0 removed the embedded database feature, which caused build errors in four `Option::set()` overrides. For MySQL 8.0 and newer, these methods are now no-ops. * Removal of the `CLIENT_LONG_PASSWORD` define in MariaDB 10.2 caused a build error which we now fix with a conditional test for this before trying to use it. Thanks for this fix go to Augusto Caringi of Red Hat. * Updated the library to work with newer toolchains, particularly Clang on current macOS and the C++17 aware versions of GCC: * Methods with throw specifications still have them for ABI compatibility on systems with older compilers, but if we detect that the compiler is expecting C++14 or newer, we elide them. * If the compiler is detected as expecting C++11 or newer, we now use `std::unique_ptr` everywere we used to use `auto_ptr`. * Removed all `register` variable qualifiers. It's officially obsolete in C++17 and it's been anywhere from unnecessary to unhelpful in C++ compilers for quite a long time now. * It is now possible to build a release tarball (`make dist`) on systems like Debian where `/bin/sh` is not Bash. * All prior MySQL++ 3.2.x release tarballs contain a symlink from `ltmain.sh` to the copy provided by Libtool on the system the tarball was made on. If your system doesn't have Libtool installed or it's installed somewhere other than where Red Hat Enterprise Linux puts it, that symlink will be broken, preventing those tarballs from building until you fix the symlink somehow. We're now dereferencing all symlinks when building the tarball to avoid this sort of problem. There are also several changes to MySQL++ due purely to converting the MySQL++ source code repository from Subversion to Fossil: * Updated the hackers' guide to reflect all of the differences this repository conversion entails. * Converted the old `HACKERS.txt` and this change log file to Markdown format. Fossil will display plain text just fine, but it has a web renderer for Markdown, which gives nicer output. [umuc]: https://tangentsoft.com/mysqlpp/doc/html/userman/unicode.html ## 3.2.3, 2016.12.29 * Now using `snprintf()` instead of `_snprintf()` on Visual C++ 2015. * Cygwin changed its naming for the MySQL C API library since the last time we successfully tried building MySQL++ there. Reworked the autoconf detection macro to make it less dependent on such individual platform differences. The macro is in fact now entirely side-effect-free, just setting MYSQL_C_* variables that the top-level Bakefile uses when and as it needs them, rather than expecting that major variables like CPPLFAGS and LIBS were overridden by the autoconf macro. This makes the autoconf case more like that of the non-autoconf Bakefile outputs. * Squished a Clang warning ## 3.2.2, 2015.03.18 * The DBDriver::operator= would leak a live connection if you assigned a disconnected DBDriver to it. Patch by Quentin Armitage. * Plugged a potential DBDriver instance leak in Connection ctor. Patch by Yury Alekseev. * Explicitly #including algorithm.h in examples/multiquery.cpp for std::max(). * Added missing "break;" statements in Transaction ctor taking an isolation level parameter, which caused only the last one to do the right thing. Problem noticed by Tony Whyman, fix by me. * The bootstrap script now checks for the existence of needed build tools before trying to use them. This lets us emit a clearer error message than the shell will. Original patch by Adrian Cornish. * Fixed a build problem related to std::min/max with Visual C++ 2013 due to a change in the definitions provided by its header files. * Tracked several changes made to Connector/C made since 3.2.1. * Assorted documentation updates. * Generating HTML with UTF-8 encoding, not 8859-1 ## 3.2.1, 2013.12.10 * Connection copy ctor wasn't copying the "throw exceptions" flag. The copy always had exceptions enabled. * The resetdb example would print a bogus message about logging in as '1'@'1' instead of showing the actual values passed on the command line. This did not affect how it actually logged in. * Previous release tarball was missing a few text files present in the source repository. * Updated build paths for VC++ and MinGW to track a file layout change in Connector/C 6.1.2. ## 3.2.0, 2013.06.20 * References to MySQL 5.1 have been replaced with 5.6, that being the current GA release. * All Windows builds now assume you're using Connector/C 6.1 instead of having installed the MySQL server on your machine just to get development files. If you are running a MySQL server on your development machine and don't want to install Connector/C just to make MySQL++ happy, see the README-*.txt file for your platform to get instructions on fixing the paths so the build system finds the development files under the MySQL server directory. * The generated VC++ 2008 project files now assume you want 64-bit executables. (It is 2013 now, after all.) Since the VC++ 2005 project files continue to be configured for 32-bit builds, the easiest way to get a 32-bit project in VC++ 2008+ is to import the VC++ *2005* project files, rather than adjust the build target settings of all 44 vc2008/*.vcproj files within the IDE. See README-Visual-C++.txt for more on this change. * Added Query::replacefrom(): like insertfrom() but it uses REPLACE statements instead of INSERT. Patch by Adrian Cornish. * Added support for SQL "unsigned float" columns. Patch by Leonardo Lang. * Added "abicheck" top-level build target, which runs the ISPRAS ABI checker tool (http://goo.gl/e19lD) against a predecided "ABI-stable" version of MySQL++, comparing it against the current version. This should help avoid future unplanned ABI breakages, as happened between 3.0.9 and 3.1.0. We have chosen not to revert those changes that broke the ABI, but instead have chosen to accept the 3.1.0 ABI as the new stable ABI for the rest of the 3.x series. Running the ABI checker is now part of the release process, so we should not change the ABI again until 4.0! * The Query::insert() and replace() overloads that take a pair of iterators now work with containers that only provide forward iterators. Idea by Adrian Cornish. * Using libtool again on Autotools systems. It gives us relocatable libraries, which is needed in some linking situations. Patch by Adrian Cornish. * VC++ release builds now have optimization enabled. This might also affect other toolchains that create separate Debug and Release builds, if Bakefile obeys the directive for those systems. (Such as, perhaps, Xcode.) Initial patch by Matthew Bradbury. * Fixed a crash in CommandLine mechanism when the usage message is called up for programs that have no "extra" parameter and corresponding usage appendage. Initial patch by "Crazy Pete". * Query::storein() now tolerates empty result sets, due either to DBMS failure or passing a query that never returns results, such as INSERT. * Exposed `DBDriver::result_empty()` as `Query::result_empty()`. We did this primarily because it was needed as a helper for the previous fix, but it could also be useful more broadly. * Added -Wextra to the pedantic build flags. * Fixed the "escape" manipulator so it will work with Null<> wrapped types. Patch by "Kemet". * ssqls2parse now depends on libmysqlpp. (It wasn't getting relinked when you changed the library.) * The configure script's test for the existence of `mysql_ssl_set()` got broken by a change in the mysql_loc.m4 test, causing it to always return "no" even if the platform's MySQL C API library did have the function. Therefore, the SslOption could never be set. Fixes this bug: stackoverflow.com/questions/7794408 * Fixed a missing a "buried headers" ifdef wrapper for type_info.cpp. Patch provided by Xavier Richez. * We now export the DBDriver class from the MySQL++ DLL when building on Windows. Client programs can now access it directly, instead of being able to access only the fields and members exposed through Connection and Query. Fix suggested by Xavier Richez. * MinGW builds no longer require that you manually create an import library for the MySQL C API DLL from a .def file we provide, which would inevitably get outdated. We can now link directly to the DLL, and rely on the MinGW linker to figure out the imports. * Split the -l flags out of LDFLAGS in the userman's example Makefiles. They're now in LDLIBS, which causes them to be put after -o $(EXE) by the default GNU make rules, where they should be. * Assorted documentation and build system improvements. * Assorted fixes for newer GCCs. ## 3.1.0, 2010.06.03 * Default MySQL version now 5.1, having entered GA since 3.0.9. * Lots of platform updates tracked, lots of warnings from newer compilers squished. Most by me, some by Adrian Cornish. * Added Query::insertfrom(), plus associated classes SQLStream, NoTransactions, and the InsertPolicy hierarchy. Also adds examples/ssqls6.cpp, which shows how to use this new feature. Thanks for this feature go to Rick Gutleber, except for RowCountInsertPolicy, by me. * Added comparison operators to `tiny_int`. Thanks for this patch go to Edward Diener. * Added `SQLTypeAdapter::is_null()`. This lets you retrieve a nullable column from the DB, then re-insert a value from that column back into the DB via a template query without explicit checks for null-ness; it will do the right thing now. * Added `-f` flags to `lib/*.pl` header file generating scripts to allow overriding the default limit of 25 fields for tqueries and SSQLSes without having to edit the file, as in previous versions of MySQL++. Also added --with-field-limit option to the configure script so you can give both -f options at once during the build process. This latter is especially useful for automated binary package builders. * The file lib/querydef.h (generated by lib/querydef.pl) now defines the MYSQLPP_TQUERY_MAX_PARAMETERS macro, giving the maximum number of parameters the functions in the generated file allow for template queries. Similarly, lib/ssqls.h (generated by lib/ssqls.pl) defines MYSQLPP_SSQLS_MAX_MEMBERS. * Added `ConnectionPool::safe_grab()`, which pings the grabbed connection before returning it. If the ping fails, we remove the dead connection from the pool and try again. This doesn't eliminate the possibility of returning a dead connection; there is no protection against race conditions. It is merely a best-effort attempt. * Added `ConnectionPool::remove(Connection*)`, which removes a connection from the pool. * Added `ConnectionPool::exchange()`, which wraps `remove()` and `grab()`. It works like a customer support counter in a store: "I'm sorry, but this `Connection` is defective. Can I have another, please?" * Added a feature to Transaction, where it can send a SET TRANSACTION ISOLATION LEVEL query before it starts the transaction proper, affecting the isolation level and the scope of that change. * Added ScopedConnection class. Initial version by Joel Fielder, lots of changes by me. Using it instead of explicit safe_grab() and release() calls on the pool in examples/cpool.cpp. * Added `FieldNames::operator[](size_type)` overloads. This is necessary to correctly overload the base class versions inherited from std::vector. * FieldNames wasn't doing field-by-name matches case insentitively, most likely since 3.0.0 when we changed it to derive from std::vector. This caused SSQLS (at least) to be case sensitive. Fixed this and renamed the stock.sdate field in the SSQLS examples to stock.sDate to test this. * Added Query::replace(iter, iter), on the model of existing insert(iter, iter). Thanks for this patch go to David Walthour. * Added `Query::operator!()`, overriding `basic_ios` version so that `if (!query)` does the right thing. Fixes problem report in thread http://lists.mysql.com/plusplus/8594 * Query copy ctor and assignment operator now perform deeper copies, so you can pass Query objects around in certain ways that used to cause crashes. Thanks for this patch go to Steven Van Ingelgem. * Defined `*_null` variants for every `sql_* typedef`, wrapping all those earlier types in `Null<>`. All example programs now use these types instead of explicit `Null<>-wrapped` types. * Created a C++ command line parsing mechanism for the examples today, and for programs coming in the future. It uses the platform version of getopt() if available, substituting a public-domain implementation that gets built into MySQL++ itself otherwise. It's documented in the refman -- see the CommandLineBase class -- but it's in the newly created mysqlpp::internal namespace, which means we don't promise any sort of ABI or API stability for it. You're welcome to use it in your own programs, but expect it to change without warning. * Added a few missing `MYSQLPP_EXPORT` qualifiers to `operator<<()` overloads for stream manipulators to allow their use when MySQL++ is built as a DLL. * Added backticks around table and column identifiers in all code paths exercised by dtest. There are some others remaining, particularly things like Row::field_list(). Thanks for this patch go to Adrian Cornish. * Added mysqlpp::NOW() which returns a value that, when inserted into a SQL query, results in a call to SQL's NOW() function. DateTime::now() -- added in 3.0.0 -- does the same thing, but this is shorter and matches the SQL syntax. * Calling DBDriver::disconnect() twice no longer calls mysql_close() twice. * Worked around a weakness on Windows that caused problems in code with a connect(), disconnect(), connect() call pattern, when also using a named pipe to connect to the DB. (There never has been a problem with this on other platforms or with other IPC mechanisms.) * Initializing a SQLTypeAdapter with a floating-point value equal to infinity or NaN results in SQL null if the type is also nullable, or 0 otherwise. Previously, we got an implementation-defined string, which could give invalid SQL, or could give 0, a different value from NaN, infinity, or SQL null. This does collapse the notions of NaN and infinity, but the MySQL reference manual doesn't say how you're supposed to preserve these differences. * Removed the dependency of stadapter.h on `sql_types.h` just to get `sql_tinyint*`. We now `#include "tinyint.h"` instead, and use equivalent types to what `sql_types.h` defines. This is necessary because `sql_types.h` should be one of the last things included from `mysql++.h`, so that it can define `sql_*` equivalents for everything else in MySQL++, which means all those other things need to be included by that point. * The "find MySQL++" autoconf macro (config/mysql++.m4) now searches for the library in lib64 subdirectories everywhere it also looks in lib. We did this for the C API finder macro way back in MySQL++ 2.2.0, and only neglected to do it for this macro because it's not used by MySQL++ itself, just provided as a courtesy to MySQL++ users that also use autoconf. * Also improved the "find C API" macro (`config/mysql_loc.m4`) so it, too, is more useful in third-party projects. * Moved private `FieldNames::str_to_lwr()` method out into its own module, in the new mysqlpp::internal namespace, so other modules can use it. Also added an overload for this new global method taking std::string instead of char*. * userman build process can now find FOP when installed from the standard Ubuntu/Debian package repository. * No longer generating refman.pdf. It's difficult to generate properly on some platforms, and isn't all that useful anyway compared to the HTML version, which builds properly everywhere. * Dropped custom.h backwards-compatibility header. (Deprecated over a year ago in MySQL++ 3.0.0.) * Fixed a bad pointer access crash in `Connection::set_option()` triggered when the option set call fails. Thanks for this patch go to Kevin Regan. * ReconnectOption behavior now knows about a fix in MySQL 5.1.6 and newer that lets you set it either before the connection is up, or after. If you try to set this option when MySQL++ is built against earlier versions of the MySQL C API, it will refuse to set the option because it knows the option will be reset when the connection comes up. * No longer trying to make the C API library read from a "my" options file before connect. It does that by default, and the file is supposed to be .my.cnf anyway. * Reworked the `load_jpeg` example code for clarity, extracting load_jpeg_file() routine as an implementation detail and making that use the C++ stringstream "slurp into string" idiom instead of allocating a C char buffer and copying that into a std::string. * Restored support for repeating query parameters. Apparently you could say things like "stuff %0 morestuff %0" in v2.1, but this was broken by initial 1-parameter fixes in v2.2. This patch reportedly lets us have both things at once, and improves handling of 1-parameter template queries in general. Thanks for this patch go to Martin Gallwey. * Added examples/tquery4.cpp based on test code and feedback from Martin. * Put Comparable class in namespace mysqlpp, where it should always have been. Aside from being just plain wrong, it caused a conflict with Boost if you used its Comparable class and hoist them both into the global namespace. Thanks for this patch go to Michael Radzewitz. * Fixed all the known problems with the Xcode project files. * Skeletal support for SSQLS v2. Doesn't do anything useful yet, it just got caught up in the need to release 3.1 as-is. * Various enhancements to the test suite. * Many, many documentation enhancements. ## 3.0.9, 2009.02.04 * It is now possible to use Null objects in const context. * Query was emitting thousands separators when used in some locales. Thanks for the fix go to Tomaž Šolc. * Restored support for using Query::storein() with template queries. Was mistakenly removed in the 3.0.0 development process. * GCC 4.4 build fixes. Thanks for this go to Remi Collet. ## 3.0.8, 2008.11.27 (r2432) The "Thanksgiving" release * Fixed a VC++ build error introduced in 3.0.7 in the Sun CC fix. * Fixed the Makefile we generate from Makefile.simple for the devel RPM. The recent Bakefile upgrade changed the output so our munger stopped munging. * Changed all instances of "CREDITS" in header comments to "CREDITS.txt". * Brought ebuild file up to date with what Gentoo has been using for 2.3.2. ## 3.0.7, 2008.11.21 * Fixed bug where initting a Query with a query string and then appending more to it with operator <<() would start overwriting the beginning of the buffer. Thanks for the fix go to Chris Frey. * Added String::empty(), to parallel std::string better. * Added SQLTypeAdapter ctor for Null, to allow SSQLS with NULL BLOB columns. Thanks for this patch go to Russell Robinson. * Passing on "throw exceptions" flag in Query::storein() to the temporary Row objects it creates. (Should have done this all along.) * All MySQL++ classes with operator[]() and at() methods now throw the new BadIndex exception on out of range indices now, unconditionally. Before, it was a mishmash of MySQL++-specific mechanisms, std::range_error, and unchecked access. * Fixed some bugs in `load_jpeg` and `cgi_jpeg` examples that prevented them from working correctly on Windows. * Squished some warnings and incompatibilities that caused difficulty with Solaris CC. * Several minor fixes to allow building on Cygwin again. * Dedicated VC++ 2008 support. (Not just a clone of VC++ 2005 project files in a different directory.) * Lots of documentation improvements. ## 3.0.6, 2008.08.16 * Several fixes to allow thread-aware build on Solaris * More improvements to search for Fink version of C API library. * Various improvements to Windows installer (install.hta) ## 3.0.5, 2008.08.06 * Replaced install.bat with new install.hta, which has a GUI and a lot of embeded logic for doing The Right Thing, which we couldn't do in a dumb batch file. * Several fixes to allow it to build on Solaris 10. * Fixed a bug in comparison of Null to T: wouldn't always give the right result for one particular combination of argument values and order of parameters to operator <(). It wouldn't fail all the time, either; it depended on the way the system's memory allocator dealt with newly allocated RAM. The bug was discovered during the Solaris 10 porting effort, but it is not a Solaris-specific bug. * Split Linux-specific material out of README-Unix.txt into README-Linux.txt, and created README-Solaris.txt. * Shipping a vc2008 directory. Populated by bootstrap script with copies of vc2005 files when those are newer, with the idea being to update them by hand by running them through VC++2008 before release. * Several fixes to VS-only examples. They hadn't been updated to track several of the changes in MySQL++ v3, so they wouldn't build OOTB at all, crashed when you did get them building, and emitted a lot of warnings during the build. Cleaned it all up. * Autoconf now explicitly checks whether we need to link to zlib to link to MySQL C API library. It used to be required, but lately, MySQL has been shipping the library with zlib stuff embedded, causing multiply defined symbol errors on some systems. * configure script now looks in more locations for the MySQL C API library, adding default locations for Fink and Solaris. ## 3.0.4, 2008.07.02 * Fixed a few bugs in SslOption that prevented it from actually working. If you've been having SSL problems since upgrading to MySQL++ v3, this is why! Thanks for these patches go to Petteri Kiiskinen. * Changed type of String's internal "size" typedefs so it'll build without errors on 64-bit systems where these ints are different sizes. * Many user manual improvements. ## 3.0.3, 2008.05.11 * Fixed query well-formedness handling in Query::store() and use(). It was quietly eating these errors, confusing them with the no-results case. * Fixed examples/cpool.cpp to build without thread support. * No longer hiding all stdint.h typedefs inside namespace mysqlpp. * Fixed mysqlpp::String comparisons of empty strings against nonempty strings; if the empty string was on the left hand side, it would succeed because it was only comparing against characters in the empty side, which matches everything. (Fixes bug 11588.) ## 3.0.2, 2008.04.13 * Increased float to string conversion precision from 7 to 9 and double from 16 to 17 digits. Previous values weren't enough near the maximum values that each can hold. * Replaced Query's safe bool mechanism with an override of basic_ios::operator void*() to avoid a conflict between the two mechanisms. As the base class version isn't virtual, this is arguably evil, but it should be harmless in typical use. Besides, testing Query in bool context usually isn't the right thing anyway: test the result set instead. * Made ConnectionPool::grab() virtual. * Overriding ConnectionPool::grab() and release() in examples/cpool.cpp to show how to do connection-in-use count limiting. Also, added a few more output indicator states to allow one to better understand program flow. ## 3.0.1, 2008.03.23 * String objects can now be compared to mysqlpp::null directly. * Added a template operator== and operator!= to String, syntactic sugar for the existing String::compare() methods. * String::compare() now returns 0 ("equal") when one of the strings is an uninitialized String() (no refcounted buffer) and the other is empty. It used to consider any initialized string greater than an uninitted one. An uninitialized String appears empty, though, so this was incorrect. * Made `Connection::thread_aware()`, `thread_start()` and `thread_end()` static methods, so they can be called before you create your first connection. Ditto for DBDriver versions of these methods. * Calling `Connection::thread_start()` and `thread_end()` in `examples/cpool.cpp`, as appropriate. Above changes were necessary to make this work sensibly. * Made ConnectionPool::release() virtual, so your pool subclass can override it. * Added ConnectionPool::size(), so a subclass can know the current number of extant connections. * No longer single-quoting NOW() call generated for default init of DateTime type when building queries from SSQLS objects in Query::insert(), replace() and update(). The template query and stream interfaces of Query treated NOW() correctly already. * Fixed a bug that left `SSQLS::table_override_` uninitted if you used certain of the generated ctors or `set()` member functions instead of others used by the examples. This could cause a crash any time you caused `SSQLS.table()` to be called, such as when passing the SSQLS to `Query::insert()`. * Minor memset bug fixed in `test/uds.cpp`. Patch by Dave Jones. ## 3.0.0, 2008.02.29 (r2236) The "Giant Leap Forward" release **WARNING:** THIS IS NOT A DROP-IN REPLACEMENT FOR MySQL++ v2.x! You will have to recompile your program against this version of the library, and you will almost certainly have to make code changes as well. Please see thee [API][apib3] and [ABI breakages][abib3] sections in the user manual for information on migrating your code to this new version. [apib3]: https://tangentsoft.com/mysqlpp/doc/html/userman/breakages.html#api-3.0.0 [abib3]: https://tangentsoft.com/mysqlpp/doc/html/userman/breakages.html#abi-3.0.0 * Added ConnectionPool class, primarily to let multithreaded programs share a set of Connection objects safely in situations where it isn't acceptable to have a Connection per thread. * Created examples/cpool.cpp to demonstrate this new class. * Added RefCountedPointer template, which provides automatic memory management and data sharing. It's not intended for use outside of MySQL++ itself, but it's the mechanism behind everything below where reference counting is mentioned. I created the initial version of it, but Jonathan Wakely almost completely rebuilt it, and Joseph Artsimovich provided helpful commentary and advice as well. * Many improvements to Specialized SQL Structures (SSQLS): - Renamed `custom* to ssqls*`. There's still a custom.h which #includes ssqls.h for you, but it's only intended to ease the transition to the new name. It will go away in a future release, probably as soon as v3.1. - SSQLSes are finally compatible with Null<>-wrapped types. This feature is based loosely on the "Waba" patch posted to the mailing list back in the v2.0 days, but extended to allow Null types for key fields. (The Waba patch only allowed these types in non-key fields.) - It's no longer necessary to define a different SSQLS for each different field set you use in queries. That is to say, you can define an SSQLS for an entire table and store just a subset of the table in it now, with the other fields keeping default values. Removed examples/custom6.cpp, as custom1.cpp can now demonstrate the same thing, implicitly. - An SSQLS's field order no longer has to match the order of fields in the result set it is populated from. - As a result of previous, removed `sql_create_c_order_*` macros; they have no purpose now. - Removed order parameters from `sql_create_complete_*`, which now gives it the same functionality as `sql_create_c_names_*` so removed the latter, too. - Removed "basic" variants of SSQLS creation macros. They've been unofficially deprecated by dint of being all but undocumented and unexemplified for a very long time now. - It's now possible to use mysqlpp::String, Date, DateTime, and Time types in the key field positions in an SSQLS as they now support the necessary comparison interfaces. - If you use a floating-point data type in one of the key field positions, it no longer uses exact comparison logic. Instead, it now does [in]equality comparisons by testing whether the difference between two floating-point values is less than a configurable threshold defaulting to 0.00001. - You can now use 'bool' type in an SSQLS. - Renamed `_table` static member variable in each SSQLS to `table_` and made it private. There are now public setter and getter methods, `table()`. - Added per-instance table name overriding via `instance_table()` setter. `table()` getter returns static version if this is not set, so it's still a global setting by default. * You can now use mysqlpp::null as a template query parameter to get a SQL null. * Replaced template `ColData_Tmpl`: - Used to have `typedef ColData_Tmpl MutableColData`. It was used only once within MySQL++ itself, and was never documented as a class for end users. This one use within the library was a crock, so we just replaced this use with std::string and removed the typedef. - This left just one use of `ColData_Tmpl`, instantiating it with the MySQL++ utility class const_string, basically a clone of std::string with all the mutating features removed. Folded the functionality of const_string into the template, renamed the result to String, and deleted the const_string class. It'd be a complete std::string replacement -- with SQL-related enhancements -- if it were modifiable, but MySQL++ doesn't need it to be modifiable. Yet, it's still the closest thing MySQL++ has to its own string type; thus the name. - Replaced its internal buffer management with a much more clever reference counted scheme. This shows its greatest advantage in the return from Row::operator[](), which for technical reasons must return by value, not by reference as is more common. This lets you pass around Strings by value while having the efficiency of reference semantics. This can be important with large return values, like BLOBs. - Converting String to numeric types (ints, floats...) uses a new, cleaner system by Jonathan Wakely. Unless you were abusing weaknesses in the old system, you won't see a difference. It's just more robust and flexible. * Redesigned SQLString: - It used to derive from std::string, and while MySQL++'s internals did use it in place of std::string, these places didn't take advantage of the additional features offered by SQLString. So, replaced all those uses with std::string. - All the remaining uses are MySQL++ public interfaces that need to be able to accept any of many different data types, and we want that data to be automatically converted to a SQL-compatible string form. Because it no longer has the parentage to be a general-purpose string type and MySQL++ has a new contender for that role (String), renamed SQLString to SQLTypeAdapter to reflect its new, limited purpose. ("STA" for short.) - Since we don't have the std::string base class to manage the string buffer any more, using the same reference counted buffer mechanism as String. In addition to saving code by not creating yet another buffer management mechanism, it means objects of the two classes can share a buffer when you assign one to the other or pass one to the other's copy ctor. - Added many more conversion ctors. - STA interfaces using the 'char' data type now treat them as single-character strings instead of one-byte integers, as does the Standard C++ Library. - Added `mysqlpp::tiny_int` interfaces to STA to replace the former char interfaces for those needing one-byte integers. * As a result of the ColData -> String redesign, removed Row::raw_*(). Before String copies were efficient, this was helpful in accessing BLOB data efficiently. It was also required back when ColData didn't deal correctly with embedded null characters, but that reason is gone now, too. * `Row::operator[](const char*)` no longer unconditionally throws the `BadFieldName` exception when you ask for a field that doesn't exist. It will still throw it if exceptions are enabled, but if not, it'll just return an empty `String`. This was necessary to make the SSQLS subset and field order independence features work. * Similarly, `Result::field_num()` returns -1 when exceptions are disabled and you ask for a field that doesn't exist. * You can now use the OptionalExceptions mechanism to disable exceptions on const MySQL++ objects. * Redesigned query result classes: - Instead of Result deriving from ResUse, the two derive from a common base class -- ResultBase -- containing the bits that are truly the same between them. Before, Result inherited several methods that didn't really make sense for "store" query result sets. - Renamed Result to StoreQueryResult and ResUse to UseQueryResult so it's clearer what each is for. - Renamed ResNSel to SimpleResult. - Made all SimpleResult data members private and hid them behind const accessor functions of the same name. - The result set classes all used to be friends of Connection for various lame reasons. Since they are created by Query, and Query has a good reason for a strong relationship with Connection, moved Connection access out of each result set class into the code in Query that creates that type of result set object. - StoreQueryResult now derives from vector in addition to ResultBase; it used to merely emulate a vector of Rows, poorly. It can now dispose of the MYSQL_RESULT at the end of object construction, because it creates all the Row objects up front instead of on the fly. And as a result of *that*, operator[] returns by reference instead of by value, operator -> works correctly on iterators, all STL algorithms work, etc., etc. - IMPORTANT COMPATIBILITY BREAK: because we used `fetch_row()` stuff in Result previously, it was okay to index past the end of the result set: you'd just get a falsy Row when you did this, just as happens when doing the same thing in a "use" query. The simple1 and simple2 examples did this, so it's likely that code exists that takes advantage of this misfeature. New versions of these examples show how to index through a StoreQueryResult without running past its end. - ResUse used to delay creation of its FieldNames and FieldTypes objects until the point of need. This had several implications for thread and exception safety that we fix by just creating them in the ctor. If your code is multi-threaded and was avoiding certain usage patterns due to crashes, it's worth trying your preferred way again. - Result sets create a few data structures to hold information common to all rows in that set. The row objects need access to these shared data structures, so on creation each gets a pointer back to the result set object that creates it. This was efficient, but required that a result set object outlive any row objects it creates. Now these shared data structures are reference-counted, decoupling the lifetime of the child row objects from their result set parent. - Copy operations for result sets used to actually be "moves" before, for efficiency. (MySQL++ itelf only copied result sets in returning them by value from the query execution methods of Query, so this was acceptable if you didn't do anything uncommon with these objects.) Reference counted data structures allow us to have copy semantics now without sacrificing efficiency. - You can now use Query::storein() with an STL container of Row objects now, instead of having to use SSQLSes. The lifetime issue guaranteed a crash if you tried this before. - Removed a bunch of unnecessary alias methods: - columns() -> num_fields() - names() -> field_names() - rows() -> num_rows() - types() -> field_types() - Renamed several methods for grammar reasons: - fields(unsigned int) -> field(unsigned int) - names(const std::string&) -> field_num(const std::string&) - names(int) -> field_name(int) - types(int) -> field_type(int) - Removed several "smelly" methods: - purge() - raw_result() - reset_names() - reset_field_names() - reset_types() - reset_field_types() * Field class used to just be a typedef for the corresponding C API class. Now it's a real C++ class providing a more MySQL++ sort of interface, plus good OO things like information hiding and implementation detail abstraction. This changes several things about the interface. * Fields class was basically a specialized std::vector work-alike for dealing with the C API to get access to MYSQL_FIELD objects and present them as contained Field objects. New Field type let us replace it with "typedef std::vector Fields" * Major improvements to the quoting and escaping mechanisms: - Replaced almost all of the type-specific interfaces in manip.h with a single version taking STA. The compiler can convert almost anything to STA without losing any information we need for correct quoting and escaping. This has the side benefit that we can now do correct quoting and escaping for more data types now, including plain C and C++ string types. - Fixed a bug in `quote_double_only` manipulator for String: was using single quotes by mistake. - Escaping and quoting only works in instances where MySQL++ can tell you're building a SQL query and are using a data type that requires it. This affects many things, but the one most likely to cause trouble is that inserting MySQL++'s quoting and escaping manipulators in non-Query ostreams is now a no-op. - Added `escape_string()` member functions to Query and `SQLQueryParms::escape_string()`, and removed the global function of the same name. Because these are tied indirectly to a Connection object, this also has the effect that escaping is now aware of the current default character set used by the database server. There's only one case where this isn't done now, and that's when we're disconnected from the server. - Previous two items form a trade-off: if your code was depending on MySQL++ to get SQL escaping and it no longer happens for what we consider a good reason, you can build a replacement mechanism using these new functions. Quoting needs no special support in MySQL++. - Removed 'r' and 'R' template query parameter modifiers, which meant "always quote" and "always quote and escape" regardless of the data type of the parameter. There are no corresponding manipulators (for good reason), so the removal restores symmetry. * Created DBDriver class from code previously in Connection and Query to almost completely wrap the low-level MySQL C API: - Connection creates a DBDriver object upon connection and passes a pointer to it down to Query objects it creates. In turn, they pass the pointer on to any of their children that need access to the C API. - Nothing outside DBDriver calls the C API directly now, though DBDriver leaks C API data structures quite a lot, so this feature doesn't constitute "database independence." See the Wishlist for what must be done to get to that point. * Completely redesigned the connection option setting mechanism: - There's now just a single `Connection::set_option()` method that takes a pointer to the abstract Option base class, and there is an Option subclass for every connection option we understand. Thus, type errors are now caught at compile time instead of at run time. - Replaced `Connection::enable_ssl()` with SslOption class. - Enabling data compression and setting the connection timeout are no longer set via parameters to Connection interfaces. These are now set with CompressOption and ConnectTimeoutOption. - Similarly, removed `client_flag` parameters from Connection's ctor and connect() method and added corresponding Option subclasses. There's about a dozen, so rather than list them here, look for similarly-named classes in lib/options.h. * Added `Connection::count_rows()` to execute `SELECT COUNT(*) FROM tablename` queries for you. * Moved `Connection::affected_rows()`, `info()` and `insert_id()` methods to class Query, as they relate to the most recently-executed query, not to the connection. * Several method name changes in Connection: - `client_info()` -> `client_version()` - `host_info()` -> `ipc_info()` - `proto_info()` -> `protocol_version()` - `server_info()` -> `server_version()` - `stat()` -> `status()` * Removed `Connection::api_version()`. It does the same thing as `client_version()`. * Lots of changes to Date, DateTime, and Time classes: - If you use the default constructor for DateTime and don't subsequently set its year, month, day, hour, minute or second data members to nonzero values, it becomes the SQL function "NOW()" in a query string. You can also use DateTime::now() as syntactic sugar for this. - As a result of above, had to hide all of DateTime's data members behind accessor functions, to keep the state of the object consistent. (If it's initialized as "now" and you give it an explicit year value, say, it is no longer "now", so the setter has to clear the now-flag.) There are getters and setters for year, month, day, hour, minute and second, all named after the member. - Did the same for Date and Time for consistency, even though it isn't technically required. - The `sql_timestamp` typedef now aliases DateTime instead of Time. - Renamed template class DTbase to Comparable. The fact that it's the common base class of all date and time classes is irrelevant; making subclasses comparable is what it does, so that's what it should be named after. - Added a DateTime ctor taking discrete year, month, day, hour, minute, and second values. - Implicit conversion from stringish types to the date and time types is no longer allowed. This is part of the "Waba" Null patch mentioned above; allowing implicit conversions would break this new feature. - Added operator std::string and str() methods to all of these classes. Adding this to the existing operator << support, you now have several ways to convert these objects to string form. - Added `time_t` conversion to Date and Time classes. DateTime already had it, since it's more legitimate to convert time_t to DateTime, but you could already "slice" it with something like Time(DateTime(time(0))) so there's no point pretending you can't get from time_t to Date or Time. Might as well legitimize it. * Improved `tiny_int` class: - Turned it into a template parameterized on the value type so you can get both signed and unsigned TINYINTs - Changed the `sql_tinyint` and `sql_tinyint_unsigned` typedefs to use `mysqlpp::tiny_int` instead of raw chars - Added a bool conversion ctor and operator, and typedef'd it to sql_bool and sql_boolean to match MySQL server behavior * Added many more `sql_*` typedefs. We now have a typedef for every type the MySQL server knows about, including those it supports just for compatibility with other database servers. * Changed the `sql_*int*` typedefs to use integer types of the same size as the MySQL server. (Run test/inttypes.cpp to test it.) * Added copy ctor and assignment operator to Row. * Row::operator[]() takes int now instead of unsigned int. This finally (!) makes it possible to say row[0] without the compiler giving an ambiguous overload error. * Changed all uses of row.at(0) in the examples to row[0] * Added operator[] to all classes that only had at(). * Query now automatically resets itself unless the query fails or you're using template queries. In either case, the contents of the query's internal buffers are considered precious, either for debugging, or future queries. Except when using template queries, this means you may be able to avoid calling Query::reset() entirely. It's still safe to call reset() as before, just unnecessary most of the time. * Removed `reset_query` parameter from all Query methods. It was almost completely broken before, and above change does what was really wanted to begin with. * `Query::store_next()` and `Result::fetch_row()` no longer throw the EndOfResults and EndOfResultSets exceptions; these are not exceptional conditions! These methods simply return false now. * Removed examples/usequery.cpp: there's no essential difference between what it did and what examples/simple3.cpp does now as a result of the previous change. * Added Query::exec(void), paralleling Query::execute(void). * Removed Query::preview(). The most direct replacement is str(), which has always done the same thing. * You can now insert a Query object into an ostream to get a copy of the built query. This means Query::str() is only necessary when using template queries. * Removed overloads of Query::execute(), store(), and use() that take const char*. It was redundant because const char* converts implicitly to STA, for which overloads already exist. * Renamed Query::def to `Query::template_defaults` to make its purpose clearer. * `Query::error()` now returns const `char*`, not a `std::string` by value. There's no point in making a copy of the error string. The method is now `const` as well, as it doesn't change the `Query` object. * Added Query::errnum(), which just wraps Connection::errnum(). * Added error number parameters and accessor functions to BadQuery, ConnectionFailed and DBSelectionFailed exceptions, to preserve the state of Connection::errnum() at the point of the exception, so you don't have to rely on this value remaining unchanged during the exception throw process. All places that use these exceptions now include this value where possible. Thanks for the initial patch go to Jim Wallace. * Removed Lockable mechanism from Connection and Query; it was conceptually flawed. See the new user manual chapter on threading for advice on using MySQL++ safely without locking. There is mutex locking now in ConnectionPool, but that's it. * Connection::query() now takes an optional query string, allowing the returned Query object to start off with a value. Especially useful when the query string is static, either because it's a simple query or because it's a template. You can now build chains like "if (conn.query("CREATE INDEX ...").exec()) { ..." * Added `Connection::thread_aware()`, `thread_end()`, `thread_id()` and thread_safe(). See user manual's threading chapter for explanations. * Renamed "success" data members in Connection, Query and SimpleResult (neé ResNSel) to "copacetic_", making them private if they weren't before. This better reflects their actual use, which isn't to say that there has necessarily been actual success, but rather that everything's okay with the object. * Removed success() member functions from above classes. All can be tested in bool context to get the same information. * Replaced all operator bool()s in MySQL++ classes with safer alternatives. See http://www.artima.com/cppsource/safebool.html Thanks to Jonathan Wakely for much helpful commentary, advice, and code used in these mechanisms. * Decoupled `Connection::copacetic_` from `Connection::is_connected_`. It is now possible for the object to be copacetic without being connected. However, if it tries to connect and fails, then it is not copacetic. If it is copacetic and not connected, it means we haven't even tried to connect yet, a useful distinction. * Collapsed `Connection`'s host, port, and socket name down into a new combined `server` parameter which is parsed to determine what kind of connection you mean. These interfaces are still compatible with v2.3 and earlier up through the port parameter. There are differences beyond this. * Added TCPConnection, UnixDomainSocketConnection and WindowsNamedPipeConnection subclasses for Connection giving simpler construction and connect() method interfaces for instances where you know what kind of connection you want at compile time. * Changed Connection::ping() return value from int to bool. * Renamed NullisNull to NullIsNull -- capital I -- and similar for NullisZero and NullisBlank. * It's now a compile-time error to try to convert a MySQL++ representation of a SQL null to any other data type, rather than a run-time error as in previous versions. Removed BadNullConversion exception as a result. * Way back in v1.7.x we used the BadQuery exception for all kinds of exceptional conditions, not just bad queries. Replaced most of these in v2.0.0 with new dedicated exceptions, but a few remained: - Errors that occur during the processing of a "use" query after the query itself executes correctly now throw UseQueryError. It's not a "bad query", because the query executed successfully. It just choked during subsequent processing, so it's a different exception. Thanks for this patch go to Jim Wallace. - Replaced BadQuery exceptions thrown in Row constructor due to bad ctor parameters with new ObjectNotInitialized exception This is also Jim Wallace's work. * The examples now all use getopt() type command line options instead of positional options. This makes it possible to pass options in any order, leave at their default options that used to be in the middle of the sequence, and offer different subsets of options for different programs. Also allows for special internal-use options, like -D passed by dtest to let examples change their behavior when run under dtest to produce only predictable output. * Split old libutil functionality into two modules, one holding all the "print data" functions, and another holding all the command line parsing stuff. This makes it easier for newbies to ignore the command line stuff, treating it like a black box. The wish to understand the "print data" routines is much more common, so the two needed to be disentangled. * Renamed examples' libutil to libexcommon. * Removed `connect_to_db()` `libutil` function. It combined command line parsing, which users don't care about, with database connection establishment, which they do care about. Now the examples just call out to libexcommon to parse the command line, and use the values they get back to explicitly make the connection, so it isn't hidden. * Removed cchar and uint typedefs. * Redesigned dbinfo example's output to be easier to read. * Fixed an output formatting bug created in 2.3.0 that caused the tabular output from examples to not line up. * Renamed examples/tquery.cpp to tquery1.cpp. Created tquery2.cpp to demonstrate passing parameters via a SQLQueryParametrs object instead of discretely. Created tquery3.cpp for testing unquoted template parameters, such as integers. * Renamed fieldinf1.cpp example to fieldinf.cpp, and simplified its output so it can be part of the dtest sequence. * Renamed examples/xaction.cpp to transaction.cpp. It created too much cognotive dissonance whenever thinking about both it and lib/transaction.cpp. * Added examples/deadlock.cpp, to test handling of exceptions due to server-side transaction deadlock detection. Also added code to resetdb to create a table needed to test this. Initial version created by Jim Wallace to test the value of all his BadQuery exception work, with reworking by me. * Greatly expanded dtest suite. Primary change is that we now have a handful of unit tests, where in v2.3.2 we only tested a subset of the examples. Still very low coverage ratio, but it's a big improvement. * Optimized #includes, especially in `lib/*.h` to reduce dependencies and thus compile time when one of these changes. * Fixed a typo in RPM filename generation that prevented -devel RPM from recognizing that the corresponding MySQL++ library RPM was installed. * RPM spec file improvements by Remi Collet. * Renamed `NO_LONG_LONGS` to `MYSQLPP_NO_LONG_LONGS` to avoid a risk of collision in the global macro namespace. * First cut at Xcode2 project support. Testing needed! * Debug build of library on VC++ and Xcode have a `_d` suffix now so you can have both versions of the library installed without conflict. * Moved the VC++ 2003 project files into a new vs2003 subdirectory because there are so many of them. Also created vs2005 subdirectory for VC++ 2005 and 2008 compatible project files. 2005 makes an even bigger mess of the directory containing the .sln file, so the incentive is bigger. Plus, we have to disable several things to get VC++ 2003 to build MySQL++ now, so we need a special 2005+ version of the project files for a complete build, if the user has one of the newer compilers. * ...plus dozens of small bug fixes and internal enhancements, many documentation improvements, and expansion of support for newer operating systems and compilers. ## 2.3.2, 2007.07.11 **NOTE:** Because this is the last release in the 2.x line, and because I have no plans to make another formal 2.x release, there is now a [branch][m232] with minimal changes to allow this version of the software to build on modern systems. [m232]: https://tangentsoft.com/mysqlpp/timeline?r=v2.3.2-modern * Previous release's `const_string` change caused more problems than it fixed. This release contains the real fix. :) * New `Connection::set_option()` handling deals with the multi statements option correctly again. examples/multiquery now runs again as a result. * Added new unit testing script, called dtest. See the HACKERS file for details. (This tool caught the previous two problems!) * Squished a GCC pedantic warning. Thanks for the patch go to Andrew Sayers. ## 2.3.1, 2007.07.10 (r1659) The "After the Fireworks" release * `const_string` objects now keep a copy of their data, not just a pointer to it. This is less efficient, but necessary to allow SSQLS to work with BLOBs. Without this, we were seeing segfaults due to accessing freed memory pointed to by the const_string, because the underlying object went out of scope. * Fixed many more potential embedded null handling problems in manip.h. * MySQL++ can now optionally reference MySQL C API headers as being in a mysql subdirectory, a common thing on *ix systems, by defining MYSQLPP_MYSQL_HEADERS_BURIED before #including mysql++.h. * Restored `ColData_Tmpl::get_string()`, removed in v2.3.0, along with warnings in the docs saying why you don't want to use it, and what your alternatives are. * VC++ and MinGW builds now define the `HAVE_MYSQL_SSL_SET` macro, which lets you use the C API's SSL features. This assumes your C API library does actually have these features enabled, which is the case with the official binary releases on Windows. (Builds on *ix systems continue to test for these features at configure time.) * Fixed simple examples-only Makefile generation, for RPMs. ## 2.3.0, 2007.07.02 * Added `Query::for_each()` and `Query::store_if()` methods proposed by Joel Fielder, and added examples for each. * It's now possible to store BLOB data in an SSQLS. It's not foolproof, so added a section to the user manual (5.9) to document the method. Also, changed examples/cgi_jpeg to use this new mechanism, instead of the ugly "raw row data" method it used to use. * Revamped `Connection::set_option()` handling. These options used to be queued up, and applied only just before actually establishing the connection. This made error reporting less helpful because the diagnostic was separated from the cause. Plus, the error messages were misleading to begin with. Now, set_option() takes effect immediately if the connection is not yet up (excepting one special option that can actually be set after the connection is up) and issues better diagnostics when it detects errors. * Connection::connect() used to set a few options in such a way that the user couldn't override them. Now it's smart enough to set them with the desired default values only when we see that the user hasn't given them other values. * SQLString can now be initialized from a mysqlpp::null, giving a "NULL" string. This is useful for template queries. Patch by Michael Hanselmann. * resetdb error message about mixing library and header version numbers is now more explicit. * Changed BadConversion exception's "what" message text to be more like the other exceptions. The inconsistency lead one to incorrectly copy-paste code from another exception handler, expecting it to behave the same way. Now it does. * Added `Row::raw_size()`, as a shortcut for Row::at().size(). * ssqls-pretty now detects when it's being run from within the MySQL++ distribution tree and gives a different -I flag to the compiler, so that it picks up the distribution headers instead of those that may be on the system already. * The quote manipulator now works for char[] correctly. Thanks for this patch go to Andrew Sayers. (It's always worked for char*, but C++ doesn't consider that to be the same type, so it used the generic quote handling path, which doesn't do anything for char[].) * Fixed a build bug on older Solaris versions where the test for the C API library was erroneously failing, stopping the configuration process. * Simplified `mysql_shutdown()` level argument detection. Already had to do a version number ifdef check for the Windows case, so there's really no point to doing it with autoconf on Unixy platforms. Moved version number check into lib/connection.cpp, and nuked the separate autoconf and Windows tests. * Removed dependency of `sql_types.h` on myset.h and (indirectly) datetime.h. Now we only define sql_* typedef aliases for those MySQL++ types if the headers are included before sql_types.h. * Fixed a typo in one of the `storein_sequence()` template overloads, which is apparently rarely (or never?) used, because no one reported the compiler error you'd get if you tried. * Fixed a few more embedded null handling problems. * ColData used to keep two copies of all data it held. Now it keeps just one. * Fixed install.bat script to track the unified Bakefile change and the lack of separate debug and release builds under MinGW. * Yet another STLport + Query memory leak fix. * Squished a warning in newer GCCs having to do with identifier shadowing. Patch by Jonathan Wakely. * Fixed a null-termination bug in Query::parse(). If you somehow constructed a query string without a terminating null character, then tried to parse it as a template query, it could walk off the end of the string. Patch by Worster Chen. * Removed `MYSQLPP_EXPORT` tag from FieldNames and FieldTypes class declarations, as this can cause problems in programs that use vector in VC++. It has to do with multiply defined templates, since these classes derive from that template, and VC++ can't resolve the conflict without help. Since these classes aren't actually used outside the library, this shouldn't cause a problem. Patch by Nils Woetzel. * Partial fix to Doxygen PDF build on RHEL4 and 5. Needs hand-coaxing to complete successfully on RHEL4, and doesn't yet work at all on RHEL5. * Shortened the `no*` options to the bootstrap script, so that the usage message fits on a single line. * Added "nodoc" bootstrap script option, for disabling the documentation build during the dist target build. Allows for building binary RPMs on CentOS 5.0, where doc building is currently broken. * Removed the updel example program. It was kind of silly, and if you were to rewrite it today, you'd use for_each() anyway. * Lots of documentation improvements. ## 2.2.3, 2007.04.17 (r1538) The "Tax Day" release * Previous version left `examples/vstudio/*` out of the tarball by accident. * Improved generation of RPM temporary build directory path name generation. Was using a hacked variant of the Fedora Packaging Guidelines' second best choice. Now we're using the choice they recommend most highly, without changes. * Removed unnecessary resources from vstudio/wforms example. * Minor URL fix in refman ## 2.2.2, 2007.04.13 (r1526) The "Nervousmaking Friday the 13th" release * More small fixes to embedded null handling in Query. * Fixed a bug in single-parameter template query handling. * Added tquery example, to demonstrate proper use of template queries. Previously, resetdb was the only exemplar, and it wasn't really suited for that. This example also tests the previous item. * Added examples/vstudio/mfc, allowing us to improve the way we demonstrate Unicode handling. Old way wasn't realistic. On *ix, people will depend on the terminal code to handle UTF-8. On Windows, users are almost certain to be writing a GUI program, which requires different Unicode handling than the old examples showed. * Removed explicit Unicode conversion stuff from command line examples, and reworked the Unicode chapter in the user manual. * Added examples/vstudio/wforms to show integration with C++/CLI and Windows Forms. Documented this in README.vc. * Rewrote `load_file` and `cgi_image` examples to be more useful, renaming them to load_jpeg and cgi_jpeg along the way. Also, resetdb now creates a second table in the sample database for these two examples' use. Also, added examples/logo.jpg to the distribution as sample data for these examples. * Limited the ostream base class casting stuff in Query to VC++ 2003, which is the only platform that really needed it. VC++ 2005 emits a warning with that hack in place, and on other platforms it's just replicating work that the compiler does already. * Added library version information to main library target so that systems that version shared libraries work as expected. Thanks for this patch go to Jack Eidsness. * Merged much of the diffs between Remi Collet's RPM spec file into the official one. * Reorganized the doc subdir a bit. Generated HTML is now all under doc/html instead of scattered under other subdirs, and renamed doc/README.mysql++ to doc/README.manuals. * Improvements to top-level manual building make targets: manuals now only rebuild at need, it's easier to request a rebuild of all manuals, and we force a rebuild attempt before building the distribution tarball so we don't ship outdated manuals. * Added ability to run examples under gdb using exrun, using same mechanism as we currently have for valgrind. Thanks for this patch go to Michael Hanselmann. * Added "Important Underlying C API Limitations" chapter to the user manual, to cover problems we keep seeing on the mailing list that are the result of ignorance of the way libmysqlclient behaves, not bugs MySQL++ is really in a position to fix. ## 2.2.1, 2007.02.28 * Fixed the new localtime() alternative selection code for VS2003 and various uses of STLport. * No longer inserting a null character into the query stream on calling one of the preview() functions. This was harmless in v2.1, which used C strings more extensively, but began causing problems in v2.2 due to its wider use of C++ strings. * Fixed a bug in the Connection copy ctor where it didn't completely initialize the object. * Optimized `Query::preview_char()` a bit. Patch by Jonathan Wakely. * Reordered directory list used by autconf when locating the MySQL C API library. The list is now ordered with the most likely locations for the library first, so we're less distracted by incorrect libraries. This fixes a specific build error under RHEL4 with recent versions of MySQL 5.0. ## 2.2.0, 2007.01.23 * `ColData`, `const_string`, and `SQLString` can now be constructed with an explicit length parameter. Furthermore, Query class's `execute()`, `store()` and `use()` call chains terminate in a version taking an explicit length parameter, instead of one taking a simple C string. Together, this means that it's now easier to handle data from the SQL server containing nulls. The library is almost certainly not yet capable of handling embedded nulls in all cases, but this is a big first step towards that. * Can now construct a DateTime object from a `time_t`, and convert a DateTime back to a time_t. Patch by Korolyov Ilya. * Changed the way we're handling exported functions in the Windows DLL case so that it works more reliably under MinGW. * Added proper copy semantics to Connection, so that you get a new connection with the same parameters, not just a bitwise copy of the object. * Using an explicitly thread-safe variant of localtime() for time conversions where one is available. * Removed ListInsert template from myset.h. This wasn't used within the library, and was never documented, so I'm betting that no one actually uses it. * Result::copy() was not copying the exception flag in all cases. Fix by Steven Van Ingelgem. * Added exrun shell script and exrun.bat files to distribution, to avoid linkage errors when running the examples while you still have an older version of MySQL++ installed. * Renamed `MYSQLPP_LIB_VERSION` to `MYSQLPP_HEADER_VERSION`, as what it really encodes is the version number in the `mysql++.h` file you're using, not the actual library version number. * Added `mysqlpp::get_library_version()`, which returns the library version number at build time. Between this and the header version constant, you can check that you're not mixing MySQL++ header and library versions. * resetdb example uses these new version number affordances to double-check that you're not mixing libraries and headers from different versions. This happens easily unless you take care of it (such as by using exrun) when you have one version of MySQL++ installed and you're trying to build and test a new version without blowing away the old one first or overwriting it. * No longer using recursive Makefiles on Unixy platforms or split lib + examples project files on VC++. Everything is handled by a single top-level Makefile or project file, which is simpler for the end user, and makes better dependency management possible. * When looking for the MySQL C library on systems using autoconf, looking in .../lib64 wherever we are also looking in .../lib. * RPM build process no longer depends on Bakefile. It means you have to build the examples when building an RPM even though they're never used within the RPM, but it's a better tradeoff in my opinion. * Updated include and library paths on Windows to reflect changes in the most recent MySQL installers. * Merged lib/defs.h and lib/platform.h into new file, lib/common.h. Just cleans up the library internals. * Fixed build errors on Windows due to recent changes in MySQL. * Fixed a few memory leaks and double-deletes in Query class. * Fixed compatibility with STLPort's string implementation. Patch by dengxy at cse.buaa.edu.cn. * Fixed a compatibility problem between Set<> template and SSQLS. Patch by Korolyov Ilya. * Fixed build bug in SQLQueryParms due to a character signedness issue on PowerPC with GCC. Patch by Michael Hanselmann. * ~Transaction() can no longer throw exceptions. It'll just quietly eat them, to avoid program termination. Fix suggested by Alex Burton. * Fixed thread safety testing in autoconf case, accidentally broken during v2.1.0 development cycle. * Using Doxygen 1.5.1 to generate documentation. ## 2.1.1, 2006.04.04 * MinGW and Cygwin will now build and link to mysqlpp DLLs. * Fixed bug in Query, causing it to initialize the "throw exceptions" flag incorrectly. Thanks for this patch go to Joel Fielder. * Added -v flag for custom.pl script, which turns off the multiply-defined static variable fix. Needed for VS 2003, which doesn't support variadic macros. Also, added a diagnostic to detect the need for the -v flag, and suppressed the test for this feature in examples/util.cpp. ## 2.1.0, 2006.03.24 * Converted automake and makemake files to their equivalents in Bakefile format. * Added the Transaction class, which makes it easy to use transaction sets in MySQL++. * Added xaction example to test new Transaction class. * Resetdb example now creates its example table using the InnoDB storage engine, in order to test the new transaction support. Resetdb also declares the table as using UTF-8 text; this doesn't change anything, but it does correctly document what we're doing. * Added `sql_types.h` header, containing C++ typedefs corresponding to each MySQL column type. Using those new types in the type_info module, and in the SSQLS examples. * Replaced the way we were handling the template query version of Query member functions, to allow an arbitrary number of template query parameters. By default, we now support 25 parameters, up from the old limit of 12. It's now possible to change just one number, run a script, and have a new limit. * Connection class does a better job of returning error messages if you call certain member functions that depend on a connection to the server before the connection is established. * Updated libmysqlclient.def for newer versions of MySQL. (Fixes build errors having to do with mysql_more_results() and mysql_next_result(). * Replaced final use of strcpy() with strncpy(). * custom.pl now runs without complaint in strict mode, with warnings turned on. Thanks for this patch go to "Waba". * Fixed a bug in custom.pl where incorrect code would be generated for some SSQLS set() methods. Thanks for this patch go to "Waba". * SSQLS structures now support long and unsigned long fields. Thanks for this patch go to "Waba". * It's now possible to put SSQLS definitions in a header file used by multiple modules in a program without getting multiple static member definition errors. See the documentation for details. Thanks for this patch go to Viktor Stark. * Moved the definition of the 'stock' SSQLS out of the custom*.cpp example files and into a new stock.h file. Also, #including that file in the util module to test out the new SSQLS multiple static definition fix. * Using all of the digits of precision guaranteed by the IEEE 754 spec when stringizing floating point numbers to build queries. Previously, we would use the platform default, which can be as few as 6 digits. * Removed lib/compare.h. Not used within the library, never documented, and nobody seems to want to defend it. ## 2.0.7, 2005.11.23 * Added explicit mysqlpp namespace qualifiers to generated code in custom*.h so you can use SSQLS in places where it doesn't make sense to say "using namespace mysqlpp" before the declaration. Also updated some of the examples to not have this "using" declaration to make it clear to users that it isn't needed, if you want to use explicit namespace qualifiers as well. Thanks for this patch to Chris Frey. * Removed an apparently useless unlock() call from ResUse; there is no nearby lock() call, so if this unlock() is in fact necessary, it shouldn't be here anyway, because the two calls should be nearby each other. Thanks for this patch to Chris Frey. * Fixed Query ostream initialization bug affecting SunPro CC (at least). While this bug violates the Standard, it doesn't affect many real compilers because they don't enforce this rule. Fixed by Chris Frey. * Previously, we only used the C99 style "long long" support when building under GNU CC. This is now the default. This should allow the code to work under SunPro CC. * Added another dynamic cast needed for proper Query ostream subclass overloading under VC++. (7.1 at least...) * Detecting whether MySQL is built with SSL support on platforms using autotools. Needed on some old Sun systems, for instance. Thanks for this patch to Ovidiu Bivolaru. * Fixed a potential memory bug in ColData's conversion to SQL null. * Many minor packaging tweaks. (README clarifications, file permission fixes, better adherence to GNU packaging standards, etc.) ## 2.0.6, 2005.09.28 * Fixed makemake.bat so it works on cmd.exe, not just 4NT. * Documentation fixes. ## 2.0.5, 2005.09.13 * Visual C++ build now requires GNU make. It is tested to work with either the Cygwin or the MinGW versions. The previous version of MySQL++ used nmake. This change enabled the following features: o Debug and Release versions are both built into separate subdirectories. o Dependency tracking for release version works correctly now. (Previously dependencies worked only for debug version.) o 'make clean' removes release version binaries in addition to debug versions. * MinGW makemake support updated to support new release/debug subdirectory system. This is probationary support, since this code currently can't be built as a DLL. As a result, it is no more useful than the Cygwin version, for licensing reasons. * Several fixes to allow building on Solaris 8. These fixes may also help on other SVR4-derived systems. * Removed Borland C++ makemake support, because this version of the library does not work completely, and there seems to be almost no user interest in fixing it. * Clarified "Handling SQL Nulls" section of user manual's Tutorial chapter. ## 2.0.4, 2005.08.29 * Made `mysql_shutdown()` second parameter autoconf check less sensitive to compiler pedantry. * VC++ library Makefile is now smart enough to re-create the import library, if it is deleted while leaving the DLL alone. * Added libmysqlclient.def to tarball. * Reworked most of the top-level `README*` files. * Renamed LGPL file to LICENSE. ## 2.0.3, 2005.08.25 * Visual C++ makemake system updated to build both debug and release versions of library DLL. * Fixed bug in simple1 example that caused crashes on Windows. * Doing UTF-8 to ANSI text translation in simple examples now. * Previous two releases built libmysqlpp with wrong soname on autotools-based systems. Fixed. ## 2.0.2, 2005.08.18 * Fixes to makemake system for cmd.exe. * Fixed the case where the system's C++ library includes an slist implementation in namespace std. ## 2.0.1, 2005.08.17 * Added new simple1 example, showing how to retrieve just one column from a table. Old simple1 is now called simple2, and simple2 is likewise shifted to simple3. * Added custom6 example, showing how to do the same thing with SSQLS. * Updated user manual to cover new examples. * Was accidentally shipping Subversion crap with tarball. Fixed. ## 2.0.0, 2005.08.16 (r1031) The "Excess Hair Removal" release **WARNING:** THIS IS NOT A DROP-IN REPLACEMENT FOR MySQL++ v1.7! At minimum, you will have to recompile your program against this library. You may also have to make code changes. Please see the "[Incompatible Library Changes][ilc]" chapter of the user manual for a guide to migrating your code to this new version. [ilc]: https://tangentsoft.com/mysqlpp/doc/html/userman/breakages.html * The library's shared object file name (soname) scheme has changed. (This mainly affects POSIX systems.) The soname for the last 1.7.x releases of MySQL++ was libmysqlpp.so.4, meaning the fourth version of the library's application binary interface (ABI). (The first ABI version in this scheme was that provided by 1.7.9.) MySQL++ 2.0.0's soname is libmysqlpp.so.2.0.0. Since the dynamic linker setup on some systems will create a symlink to that file called libmysqlpp.so.2, it's possible that this library could be confused with that for MySQL++ 1.7.19 through .21, which also used this number. Do not install this library on a system which still has binaries linked against that version of the library! The new scheme is {ABI}.{feature}.{bug fix}. That is, the first number changes whenever we break the library's binary interface; the second changes when adding features that do not break the ABI; and the last changes when the release contains only internal bug fixes. This means that we will probably end up with MySQL++ 3.0 and 4.0 at some point, so there will be further soname conflicts. Hopefully we can put these ABI changes off long enough to avoid any real problems. * autoconf now installs headers into $prefix/include/mysql++, instead of $prefix/include. If you were using the --includedir configure script option to get this behavior before, you no longer need it. * Linux binary RPMs will henceforth include only the libmysqlpp.so.X.Y.Z file, and create any short names required, to allow multiple versions to be installed at once. Currently, you cannot install two MySQL++ library RPMs at once, because they both have /usr/lib/libmysqlpp.so.X, for instance. * Replaced the Visual C++ and Borland C++ project files with a new "makemake" system, which creates Makefiles specific to a particular toolchain. This new mechanism also supports MinGW and generic GCC-on-*ix. This was done partly to reduce the number of places we have to change when changing the file names in MySQL++ or adding new ones, and partly so we're not tied to one particular version of each of these tools. * VC++ Makefiles create a DLL version of the library only now, so there's no excuse for LGPL violations now. This same mechanism should make DLL builds under other Windows compilers easy. * Added `Connection::enable_ssl()`, which enables encrypted connections to the database server using SSL. * `Connection::create_db()` and `drop_db()` now return true on success, not false. * `Connection::create_db()` and `drop_db()` use Query::exec() now, for efficiency, rather than Query::execute(). * Removed `Connection::infoo()`. Apparently just there to save you from a typo when calling the info() method, since it was a mere alias. * Renamed `Connection::real_connect()` to `connect()`, gave several more of its parameters defaults, and removed old connect() function. Then changed user manual and examples to use new APIs. * Replaced `Connection::read_option()` with new `set_option()` mechanism. The name change matches the method's purpose better. Functional changes are that it returns true on success instead of 0, it supports a broader set of options than read_option() did, and it enforces the correct option argument type. * You can now call `Connection::set_option()` before the connection is established, which will simply queue the option request up until the connection comes up. If you use this feature, you should use exceptions, because that's the only way an option setting failure can be signalled in this case. * Removed query-building functions (`exec*()`, `store*()`, `use()`) from class `Connection`, and moved all the implementation code to `class Query`. `Query` no longer delegates the final step of sending the query to the database server to `Connection()`. * Added `Connection::enable_ssl()`, for turning on SSL support on a connection. * Extracted exception disabling mechanism out of the many classes that had the feature into a new OptionalExceptions base class, which all classes having this feature now derive from. Also, removed all per-method exception handling flags. Finally, added NoExceptions class. With all of these changes, there is now a common way to disable exceptions with fine granularity on all objects that support the feature. * All custom MySQL++ exceptions now derive from the new Exceptions class. This regularizes the exception interface and allows you to use a single catch() block if you want. * The "throw exceptions" flag is passed from parent to child in all situations now. (Or if not, please report it as a bug.) This fulfills a promise made in the v1.7.9 user manual, with the cost being that some programs will see new exceptions thrown that they're not expecting. * Added a bunch of new exception types: BadOption, ConnectionFailed, DBSelectionFailed, EndOfResults, EndOfResultSets, LockFailed, and ObjectNotInitialized. Some of these replace the use of BadQuery, which in v1.7.x was a kind of generic exception, thrown when something more specific wasn't available. Beware, this means that programs may start crashing after recompiling them under v2.0 due to uncaught exceptions, if they were only trying to catch BadQuery. There are additional instances where the library will throw new exceptions. One is when calling a method that forces the internals to use an out-of-bounds index on a vector; previously, this would just make the program likely to crash. Another is that the library uses the BadFieldName exception -- created in v1.7.30 -- in more apropos situations. * Renamed SQLQueryNEParms to BadParamCount, to match naming style of other concrete exception types. * Extracted lock()/unlock() functions from Connection and Query classes into a new Lockable interface class. Locking is implemented in terms of a different class hierarchy, Lock, which allows multiple locking strategies with a single ABI. * Removed ResUse::eof(). It's based on a deprecated MySQL C API feature, and it isn't needed anyway. * Removed arrow operator (->) for iterator returned by Fields, Result and Row containers. It was inherently buggy, because a correct arrow operator must return the address of an object, but the underlying element access functions in these classes (e.g. at()) return objects by value, of necessity. Therefore, this operator could only return the address of a temporary, which cannot be safely dereferenced. * Returned Row subscripting to something more like the v1.7.9 scheme: there are two operator[] overloads, one for an integer (field by index) and another for const char* (field by name). lookup_by_name() has been removed. Because row[0] is ambiguous again, added Row::at() (by analogy with STL sequence containers), which always works. * Collapsed two of the `Row::value_list*()` overloads into two other similar functions using default parameters. This changes the API, but the removed functions aren't used within the library, and I doubt they are used outside, either. * Merged RowTemplate into Row. * Merged SQLQuery class into Query class. * Query is now derived from std::ostream instead of std::stringstream, and we manage our own internal string buffer. * Moved SQLParseElement and SQLQueryParms into their own module, qparms. * Added multiple result set handling to Query. MySQL 4.1 and higher allow you to give multiple SQL statements in a single "store" call, which requires extensions to MySQL++ so you can iterate through the multiple result sets. Also, stored procedures in MySQL 5.0 reportedly return multiple result sets. Thanks for the initial patch go to Arnon Jalon; I reworked it quite a bit. * `Query::storein*()` now supports more varieties of the nonstandard slist comtainer. (Singly-linked version of STL `std::list`.) * Template query mechanism and user manual had several mismatches. Made manual match actual behavior, or made library match documented behavior, as apropriate. Initial patch by Jürgen MF Gleiss, with corrections and enhancements by Warren Young. * Collapsed `mysql_*` date and time base classes' methods and data into the subclasses. Also, DateTime no longer derives from Date and Time; you could get away with that in the old hierarchy, but now it creates an inheritance diamond, and allows unsupported concepts like comparing a Time to a DateTime. * Removed "field name" form of `Row::field_list()`. It was pretty much redundant -- if you have the field names, why do you need a list of field names? * ColData can convert itself to bool now. Thanks for this patch go to Byrial Jensen. * Removed `simp_list_b` type; wasn't being used, and doesn't look to be useful for end-user code. * Several methods that used to take objects by value now do so by const reference, for efficiency. * Several variable and function renamings so that MySQL++ isn't needlessly tied to MySQL. Even if we never make the library work with other database servers, there's little point in tying this library to MySQL blindly. * Renamed all private data members of MySQL++ classes to have trailing underscores. * 'private' section follows 'public' section in all classes now. * Removed mysql++.hh and sqlplus.hh backwards-compatibility headers. * Added copy ctors to Date/Time classes so that they will work in SSQLS under GCC 4.0.0. Without these, the compiler couldn't make the conversion from raw MySQL row data. * Fixed a bunch of GCC 4.0 pedantic warnings: added virtual dtors to all base classes, calling base class ctors from leaf classes, etc. * All warnings fixed under VC++ at warning level 3. (Mostly harmless signedness and integer conversion stuff.) * Updated LGPL license/copyright comments at the top of several files to use FSF's new physical address. * Relicensed user manual under a close variant of the Linux Documentation Project License, as it's designed for documentation, which the LGPL is not. Permission for this received from Kevin Atkinson and MySQL AB. * Added ABI and API breakages chapter to user manual. It is basically a subset of this change log, with only the information an end-user must know when migrating between versions. * Reworked user manual's DocBook code quite a bit after reading Bob Stayton's book "DocBook XSL" 3/e. Better handling of stylesheets, taking advantage of some superior DocBook features, prettier output (especially the HTML version), etc. * Rewrote doc/userman/README to make it clearer how to get started contributing to the user manual. It's essentially a "getting started with DocBook" guide now! * Lots of small text improvements to user and reference manuals. Aside from the obvious tracking of library changes, made a bunch of minor style and clarity improvements. * Added CSS stylesheets for userman and refman to make the HTML versions of each a) not ugly; and b) match `tangentsoft.com`. (Yes, some may say that these are incompatible goals....) * Standardized exception handling code in the examples that use it. * Fixed a potential memory leak due to exceptions thrown from ResUse. Thanks for this patch go to Chris Frey. * Using new "no exceptions" feature of library in simple1 example, so it is now truly simple. * simple1 example no longer depends as much on util module, so that all of the important code is in one place. Makes learning MySQL++ a little less intimidating. * Added new simple2 and usequery examples, to demonstrate the proper way to handle a "use" query, with exceptions disabled, and not, respectively. Added them to the user manual, in the appropriate place. * Refactored the "print stock table" example functions again, to make code using them clearer. * UTF-8 to UCS-2 handling in examples is now automatic on Windows. * Removed debug code from Windows Unicode output examples that slipped into previous release. * resetdb example is now clearer, and more robust in the face of database errors. * Simplified `connect_to_db()` in examples' util module. * Added sample autoconf macro for finding MySQL++ libraries, for people to use in their own autotools-based projects. * Lots and lots of minor cleanups not worth mentioning individually... ## 1.7.40, 2005.05.26 * Multiple item form of insert() now works if you're using the SQLQuery class, or its derivative, Query. Thanks to Mark Meredino for this patch. * Fixed a bug in `const_string::compare()`, in which MySQL++ would walk off the end of the shorter of the two strings. All was well if the two were the same length. * ResUse::operator=() now fully updates the object, so it's more like the behavior of the full ctor. * All source files now contain a license and copyright statement somewhere within them. * Optimized mysql++.h a bit: it now #includes only the minimum set of files required, and there is now an idempotency guard. This improves compile times a smidge, but mainly it was done to clean up the generated #include file graph in the reference manual. Before, it was a frightful tangle because we #included everything except custom*.h. * Constness fix in MySQL++ date/time classes to avoid compiler warnings with SSQLS. Thanks to Wolfram Arnold for this patch. * Fixed some compiler warnings in `custom*.h`. Thanks to Chris Frey for this patch. * Added "Submitting Patches" and "Maintaining a Private CVS Repository" sections to the HACKERS file. Thanks to Chris Frey for the source material for these sections. The HACKERS file was improved in several other ways at the same time. * PDF version of user manual no longer has links to the reference manual. They were ugly, and they were broken anyway due to the way we move the PDFs after generating them. If you want interlinked manuals, use the HTML version. * PDF version of user manual now has hard page breaks between chapters. * Removed complic1 example. Wasn't pulling its own weight. Everything it is supposed to demonstrate is shown in other examples already. * Refactored `print_stock_table()` in examples/util module to be four functions, and made all the examples use various of these functions where appropriate. Before, several of the examples had one-off stock table printing code because print_stock_table() wasn't exactly the right thing, for one reason or another. One practical problem with this is that some of the examples missed out on the recent Unicode updates; now such a change affects all examples the same way. * Since so many of the examples rely on the util module, the user manual now covers it. The simple1 example in the user manual didn't make much sense before, in particular, because it's really just a driver for the util module. * Added custom5 example. It shows how to use the `equal_list()` functionality of SSQLS. Thanks to Chris Frey for the original version of this program. (I simplified it quite a bit after accepting it.) * New user manual now covers the `value_list()`, `equal_list()` and `field_list()` stuff that the old manual covered but which was left out in previous versions of the new manaul. Most of the examples are the same, but the prose is almost completely new. This new section includes the custom5 example. * Every declaration in MySQL++ is now documented in the reference manual, or explicitly treated as "internal only". * Improved docs for MySQL++'s mechanism to map between MySQL server types and C++ types. Initial doc patch by Chris Frey, which I greatly reworked. * Improved a lot of existing reference manual documentation while adding the new stuff. * Expanded greatly on the exception handling discussion in the user manual. * Added all-new "Quoting and Escaping" section to the user manual's Tutorial chapter. Moved some existing comments on quoting and escaping around and added some new ones to other sections as a result. * Added all-new "Handling SQL Nulls" section to the user manual's Tutorial chapter. * Many improvements to the Overview section of the user manual. * Row::operator[] reference now explains the right and wrong way to use the values it returns. This is in response to a mailing list post where someone was incorrectly using this feature and getting a bunch of dangling pointers. * Updated Doxyfile so 1.3.19.1 parses it without warnings. Still works with versions back to 1.2.18, at least. (These are the versions shipped with Fedora Core 3 and Red Hat Linux 9, respectively.) * Using a superior method to make Doxygen ignore certain sections of the source code. Between this change and the fact that everything not so ignored is documented, Doxygen no longer generates any warnings. * Lots of code style updates. Everything should now be consistently formatted. ## 1.7.35, 2005.05.05 (r601) The "Cinco de Mayo" release * Added a "how to use Unicode with MySQL++" chapter to the user manual. (Too bad "Cinco de Mayo" doesn't have any accented characters. That would be just _too_ precious.) * VC++ examples now use the Unicode Win32 APIs, so they can display Unicode data from MySQL++. * Added an optional conversion function to examples/util.cpp to handle the conversion from UTF-8 to UCS-2 on Win32. * Moved "brief history of MySQL++" from intro section of refman to intro section of userman. * Lots of small bits of documentation polishing. * Made some minor constness fixes. Thanks to Erwin van Eijk for this patch. * Made some warning fixes for GCC 4.0. Not all warnings are fixed, because some of the needed changes would break the ABI. Thanks to Chris Frey for this patch. * Added lib/Doxyfile to distribution. ## 1.7.34, 2005.04.30 * Added a multiple-insert method for Query, which lets you insert a range of records from an STL container (or the whole thing, if you like) in a single SQL query. This is faster, and it reduces coding errors due to less repetition. Thanks to Mark Meredino for the patch. * Reference and user manual now get rebuilt automatically when required. (E.g. on 'make dist', or explicitly now through 'make docs'.) * Made it easier to change the maximum number of SSQLS data members in generated custom-macros.h file. It used to be hard-coded in several places in lib/custom.pl; now it's a variable at the top of the file. * Changed default SSQLS data member limit to 25, which is what it has been documented as for a long time now. It was actually 26 within custom.pl. * Fixed a regression in previous version. * Trimmed some fat from the distribution packages. * Some more small doucmentation improvements. ## 1.7.33, 2005.04.29 * Worked around an overloaded operator lookup bug in VC++ 7.1 that caused SSQLS insert, replace and update queries to get mangled. (Symptom was that custom2 and custom3 examples didn't work right.) Thanks to Mark Meredino for digging up [the problem's characterization and its solution](https://groups.google.com/forum/#!topic/microsoft.public.vc.stl/mmjYRkTmTxU). * Some VC++ warning fixes. * Major documentation improvements: o Using DocBook for user manual and Doxygen for reference manual. The former now references the latter where useful. o Split out HACKERS and CREDITS files from main README, and improved remaining bits of README. o Moved the text from the old v1.7.9 LaTeX-based documentation over into the new systems, and reworked it to more closely resemble English. o Added a lot of new material to documentation, and simplified a lot of what already existed. o Documentation is now being built in HTML and PDF forms. * ebuild file updated to take advantage of recent configure script features. Thanks to Chris Frey for this patch. ## 1.7.32, 2005.03.10 * Example building may now be skipped with --disable-examples configure script flag. * Changed stock items added in resetdb. One is now UTF-8 encoded, to show that basic use of Unicode with MySQL++ is easy, yet not foolproof. (See formatting of table on systems where cout isn't UTF-8 aware!) Other stock items now follow a theme, for your amusement. :) * custom3 example now changes UTF-8 item's name to the 7-bit ASCII equivalent. Previously, this example would fix a spelling error in the table. * resetdb example now says 'why' when it is unable to create the sample database. * Small formatting change to `print_stock_table()`, used by several examples. * Was issuing a VC++-specific warning-disable pragma when built by any Windows compiler. Fixed. ## 1.7.31, 2005.03.05 (r462) The "Inevitable Point-one Followup" release * Check for threads support must now be explicitly requested via configure script's new --enable-thread-check flag. * Fix for contacting MySQL server on a nonstandard port number. Thanks to Chris Frey for this patch. * Example programs using standard command line format now accept a fourth optional parameter, a port number for the server. Thanks to Chris Frey for this patch. * One more g++ 3.4 pedantic warning fix by Chris Frey. * Exception handling in resetdb is no longer nested, because you'd get a segfault on some systems when an exception was thrown from one of the inner try blocks. * Improvements to Connection class's handling of locking mechanism. Concept based on patches by Rongjun Mu. * Implemented the declared-but-never-defined Query::lock(). Thanks to Rongjun Mu for this patch. * Cleaned up some unclear if/else blocks in connection.cpp by adding explicit braces, correct indenting and putting normal code path in the if side instead of the else. ## 1.7.30, 2005.02.28 (r443) The "Power of Round Numbers" release * bootstrap script now accepts a 'pedantic' argument, which sets a bunch of CFLAGS that make g++ very picky about the code it accepts without warnings. * Fixed a bunch of things that generated warnings with g++ in pedantic mode. Only two warnings remain, having to do with floating point comparisons. (See Wishlist for plans on how to deal with these.) Thanks to Chris Frey for this patch. * Split long tests out of configure.in into M4 files in new config subdir. This makes configure.in easier to read. * Added preliminary thread support. Currently, this just means that we detect the required compiler and linker thread flags, and link against the proper thread-safe libraries. THERE MAY BE UN-THREAD-SAFE CODE IN MYSQL++ STILL! * Standard C++ exceptions are the default now. Old pre-Standard exception stuff removed. * `Row::lookup_by_name()` will throw the new BadFieldName exception if you pass a bad field name. Thanks for this patch to Chris Frey. * Row::operator[] will throw a Standard C++ out of bounds exception by way of std::vector::at() if you pass it a bad index. Thanks for this patch to Chris Frey. * Setting `Connection::is_connected` flag to false on close(). Previously, is_connected() would continue to return true after close() was called. * All number-to-string conversion ctors in SQLString class now use ostringstream to do the conversion. Previously, we used snprintf(), which isn't available on all systems. Also, we used a C99 format specifier for the "long long" conversion, which is also not available on all systems. This new ostringstream code should be platform-independent, finally. ## 1.7.28, 2005.02.04 * ` --with-mysql*` flags to configure script now try the given directory explicitly, and only if that fails do they try variations, like tacking '/lib' and such onto it to try and find the MySQL includes and libraries. Thanks to Matthew Walton for the patch. * Finally removed `sql_quote.h`'s dependence on `custom.h` by moving the one definition it needed from `custom.h` to `deps.h`. This will help portability to compilers that can't handle the SSQLS macros by making that part of the library truly optional. ## 1.7.27, 2005.01.12 * configure check for libmysqlclient now halts configuration if the library isn't found. Previously, it would just be flagged as missing, and MySQL++ would fail to build. * Added `sql_string.cpp` to VC++ and BCBuilder project files. * Removed Totte Karlsson's 'populate' example, which never made it into the distribution anyway. * Removed last vestiges of 'dummy.cpp'. * Renamed `*.cc` to `*.cpp` in BCBuilder project files. * Worked around a BCBuilder C++ syntax processing bug in row.h. ## 1.7.26, 2004.12.17 * Moved all of the SQLString definitions out of the header and into a new .cpp file, reformatted it all, and made the integer conversion functions use snprintf() or _snprintf() instead of sprintf(). Also, widened some of the buffers for 64-bit systems. * Using quoted #include form for internal library headers, to avoid some problems with file name clashes. (The headers should still be installed in their own separate directory for best results, however.) Thanks to Chris Frey and Evan Wies for the patch and the discussion that lead to it. * Removed unnecessary semicolons on namespace block closures. Thanks to Evan Wies for this patch. * Fixed namespace handling in the legacy headers mysql++.hh and sqlplus.hh. Thanks to Chris Frey for this patch. * #including iostream instead of ostream in lib/null.h for broader C++ compatibility. (This may allow MySQL++ to work on GCC 2.95.2 again, but this is unconfirmed.) * Detecting proper `mysql_shutdown()` argument handling automatically in platform.h for the Windows compiler case instead of making the user edit the file. Thanks to Evan Wies for this patch. * Fixed examples/Makefile.simple to use new `*.cpp` file naming. * Fix to Gentoo ebuild file's exception configure switch handling. Thanks to Chris Frey for this patch. * Rebuilding `lib/custom*.h` intelligently now, to avoid unnecessary recompiles after running bootstrap script. ## 1.7.25, 2004.12.09 * Yet more fixes to the --with-mysql-lib and --with-mysql-include flags. * Added DLLEXPORT stuff to platform.h, hopefully so that someone can figure out how to make VC++ make a DLL version of MySQL++. * Renamed `*.cc` to `*.cpp`. * Made 'set -> myset' change in VC++ project files. * Some style changes (mostly whitespace) in header files. ## 1.7.24, 2004.12.08 * Fixed the --with-mysql-lib and --with-mysql-include flags' behavior, and extended their search ability to handle one other common case. (Fixed by Steve Roberts) * Fixes to put freestanding functions in namespace mysqlpp. (They weren't in the namespace, while all the class member functions were.) This required bumping the ABI version number to 4. * Renamed set module to myset, to avoid conflicts with Standard C++ Library's set.h when MySQL++ headers were installed into one of the standard system include directories. * Renamed all the idempotency guards to make them consistent in style and unique to MySQL++. * Reformatted all of `lib/*.cc`. ## 1.7.23, 2004.11.20 * Query::reset() now empties the stored query string. If you subsequently stored a longer query in the object, you'd overwrite the previous query, but otherwise the longer part of the previous one would stick out past the new query. * We now look to the `NO_LONG_LONGS` macro only to decide whether to fake 64-bit integer support using 32-bit integers. * 64-bit integer support under Visual C++ may be working now, using that platform's __int64_t type. This has not been tested. * Removed 64-bit integer support for Codewarrior on Mac OS 9 and earlier. OS X uses GCC, so it requires no special support. * Added MinGW detection in platform.h. * If you pass a flag (-X) to the examples that take the standard parameters (resetdb, simple1, etc.), it prints a usage message. * Better error handling in resetdb example, where errors are the most critical. (If that one runs without errors, the others probably will, too, and you have to run that one first.) * resetdb now reports success, rather than succeeding silently. * Removed the code in sample1 example that duplicated util module's print_stock_table(), and called that function instead. * Moved the preview() calls in the example programs to before the query execution calls, because execution modifies the query. * All examples that take the standard command line parameters now exit when connect_to_db() fails in one of the ways that don't throw an exception, rather than bulling onward until the next MySQL database call fails because the connection isn't up. * dbinfo example now takes the standard command line parameters. * Much better output formatting in dbinfo example. * Calling reset() where appropriate in the various example programs. Before, the programs may have worked, but not for the right reason. This lead some people to believe that calling reset() was not necessary. * Fixed an incorrect use of row["string"] in complic1 example. * Lots of code style improvements to the examples. * Some VC++ type warnings squished. Some remain. ## 1.7.22, 2004.11.17 * Applied patches by Zahroof Mohammed to allow it to build under GCC 3.4.2. Tested on MinGW and Fedora Core 3 systems. * Removed all the forward declarations in defs.h, and added forward declarations where necessary in individual header files. #including defs.h in fewer locations as a result. * Legacy headers sqlplus.hh and mysql++.hh now declare they are using namespace mysqlpp, to allow old code to compile against the new library without changes. * Removed `query_reset` parameter from several class Query member functions. In the implementation, these parameters were always overridden! No sense pretending that we pay attention to these parameters. This changes the ABI version to 3. * `#including custom.h` in `sql_query.h` again...it's necessary on GCC 3.4. * bootstrap script runs lib/config.pl after configure. This is just a nicety for those running in 'maintainer mode'. ## 1.7.21, 2004.11.05 * Generating a main mysql++ RPM containing just the library files and basic documentation, and the -devel package containing everything else. * Devel package contains examples now, along with a new Makefile that uses the system include and library files, rather than the automake-based Makefile.am we currently have which uses the files in the mysql++ source directory. * Renamed sqlplusint subdirectory in the package to lib. * Removed the obsolete lib/README file. * `lib/sql_query.h` no longer #includes custom.h, simplifying build-time dependencies and shortening compile times. ## 1.7.20, 2004.11.03 * Collapsed all numbered `*.hh` headers into a single `*.h` file. For example, the contents of row1.hh, row2.hh and row3.hh are now in row.h. * While doing the previous change, broke several circular dependencies. (The numbered file scheme was probably partly done to avoid this problem.) The practical upshot of most of these changes is that some functions are no longer inline. * Removed `define_short.hh` and everything associated with it. The library now uses the short names exclusively (e.g. Row instead of MysqlRow). * Put all definitions into namespace mysqlpp. For most programs, simply adding a 'using namespace mysqlpp' near the top of the program will suffice to convert to this version. * Once again, the main include file was renamed, this time to mysql++.h. Hopefully this is the last renaming! * mysql++.hh still exists. It emits a compiler warning that the file is obsolete, then it #includes mysql++.h for you. * sqlplus.hh is back, being a copy of the new mysql++.hh. Both of these files may go away at any time. They exist simply to help people transition to the new file naming scheme. * Renamed mysql++-windows.hh to platform.h, and added code to it to handle #inclusion of config.h on autotools-based systems intelligently. This fixes the config.h error when building under Visual C++. * There is now only one place where conditional inclusion of winsock.h happens: platform.h. * Beautified the example programs. ## 1.7.19, 2004.10.25 * Fixed an infinite loop in the query mechanism resulting from the strstream change in the previous version. There is an overloaded set of str() member functions that weren't a problem when query objects were based on strstream. * Query mechanism had a bunch of const-incorrectness: there were several function parameters and functions that were const for the convenience of other parts of the code, but within these functions the constness was const_cast away! This was evil and wrong; now there are fewer const promises, and only one is still quietly broken within the code. (It's in the SQLQuery copy ctor implementation; it should be harmless.) * Removed operator=() in Query and SQLQuery classes. It cannot take a const argument for the same reason we have to cast away const in the SQLQuery copy ctor. It's tolerable to do this in the copy ctor, but intolerable in an operator. Since the copy ctor is good enough for all code within the library and within my own code, I'm removing the operator. * Above changes required bumping the ABI to version 2. * Visual C++ projects now look for MySQL build files in c:\mysql, since that's the default install location. (Previously, it was c:\program files\mysql.) ## 1.7.18, 2004.10.01 * Changed all the strstream (and friends) stuff to stringstream type classes. Let there be much rejoicing. * Query object now lets you use store() even when the SQL query cannot return a result, such as a DROP TABLE command. This is useful for sending arbitrary SQL to the server. Thanks to Jose Mortensen for the patch. * Quote fix in configure.in, thanks to David Sward. * Renamed `undef_short` file to `undef_short.hh`. * Gentoo ebuild file is actually being shipped with the tarball, instead of just sitting in my private CVS tree since 1.7.14 was current. Ooops.... ## 1.7.17, 2004.09.16 * Reverted one of the VC++ warning fix changes from 1.7.16 that caused crashes on Linux. * Added a configure test that conditionally adds the extra 'level' parameter to mysql_shutdown() that was added in MySQL 4.1.3 and 5.0.1. ## 1.7.16, 2004.09.13 * Building VC++ version with DLL version of C runtime libraries, and at warning level 3 with no warnings emitted. * VC++ build no longer attempts to fake "long long" support. See the Wishlist for further thoughts on this. ## 1.7.15, 2004.09.02 * Renamed Configure file to common.am, to avoid file name conflict with configure script on case-sensitive file systems. * Added ebuild file and ebuild target to top-level Makefile for Gentoo systems. Thanks to Chris Frey for this. * Small efficiency improvements to BadQuery exception handling. Initial idea by Chris Frey, improvements by Warren Young. ## 1.7.14, 2004.08.26 * Builds with Visual C++ 7.1. * Fixed a bug in custom macro generation that caused problems with GCC 3.4. (X_cus_value_list ctor definition was broken.) ## 1.7.13, 2004.08.23 * Removed USL CC support. (System V stock system compiler.) Use GCC on these platforms instead. * Added examples/README, explaining how to use the examples, and what they all do. * Most of the example programs now accept command line arguments for host name, user name and password, like resetdb does. * Renamed `sinisa_ex` example to `dbinfo`. * Several Standard C++ syntax fixes to quash errors emitted by GCC 3.4 and Borland C++ Builder 6. Thanks to Steffen Schumacher and Totte Karlsson for their testing and help with these. * Added proper #includes for BCBuilder, plus project files for same. Thanks to Totte Karlsson for these. ## 1.7.12, 2004.08.19 * Many Standard C++ fixes, most from the GCC 3.4 patch by Rune Kleveland. * Added Wishlist file to distribution. * Fixed a problem in the bootstrap script that caused complaints from the autotools on some systems. * RPM building is working properly now. * Fixed the idempotency guard in datetime1.hh. ## 1.7.11, 2004.08.17 * Renamed `mysql++`, `defs` and `define_short` files, adding `.hh` to the end of each. (They're header files!) This shouldn't impact library users, since these are hopefully used internal to the library only. * Removed `sqlplus.hh` file. Use `mysql++.hh` instead. * Added mysql++.spec, extracted from contributed 1.7.9 source RPM, and updated it significantly. Also, added an 'rpm' target to Makefile.am to automate the process of building RPMs. * Added bootstrap and LGPL files to distribution tarball. * Added pre-1.7.10 history to this file. * Removed .version file. Apparently it's something required by old versions of libtool. ## 1.7.10, 2004.08.16 Maintenance taken over by Warren Young. See [the mailing list post](http://lists.mysql.com/plusplus/3326) for rationale. * Applied many of the GCC 3.x patches submitted for 1.7.9 over the years. This allows it to build on everything from 3.0 to 3.3.3, at least. Because so many patches are rolled up in one big jump, it's difficult to describe all the changes and where they came from. Mostly they're Standard C++ fixes, as GCC has become more strict in the source code that it will accept. * MysqlRow used to overload operator[] for string types as well as integers so you could look up a field by its name, rather than by its index. GCC 3.3 says this is illegal C++ due to ambiguities in resolving which overload should be used in various situations. operator[] is now overloaded only for one integer type, and a new member function lookup_by_name() was added to maintain the old by-field-name functionality. * Fixed another operator overloading problem in SSQLS macro generation with GCC 3.3. * The` _table` member of SSQLS-defined structures is now `const char*`, so you can assign to it from a `const char*` string. * Got autoconf/automake build system working with current versions of those tools again. Removed the generated autotools files from CVS. * Renamed library file from libsqlplus to libmysqlpp. ## 1.7.9, 2001.05.01 * Fixed a serious bug in Connection constructor when reading MySQL options * Improved copy constructor and some other methods in Result / ResUse * Many other minor improvements * Produced a complete manual with chapter 5 included * Updated documentation, including a Postscript format ## 1.7.8, 2000.11.14 * Introduced a new, standard way of dealing with C++ exceptions. * MySQL++ now supports two different methods of tracing exceptions. One is by the fixed type (the old one) and one is standard C++ type by the usage of what() method. A choice of methods has to be done in building a library. If configure script is run with `-enable-exception` option , then new method will be used. If no option is provided, or `-disable-exception` is used, old MySQL++ exceptions will be enforced. This innovation is a contribution of Mr. Ben Johnson * MySQL++ now automatically reads at connection all standard MySQL configuration files * Fixed a bug in `sql_query::parse` to enable it to parse more then 99 char's * Added an optional client flag in connect, which will enable usage of this option, e.g. for getting matched and not just affected rows. This change does not require any changes in existing programs. * Fixed some smaller bugs * Added better handling of NULL's. Programmers will get a NULL string in result set and should use `is_null()` method in `ColData` to check if value is NULL * Further improved configuration * Updated documentation, including a Postscript format ## 1.7.6, 2000.09.22 This release contains some C++ coherency improvements and scripts enhacements. * `result_id()` is made available to programmers to fetch `LAST_INSERT_ID()` value * `Connection` ctor ambiguity resolved, thanks to marc@mit.edu * Improved cnnfigure for better finding out MySQL libraries and includes * Updated documentation, including a Postscript format ## 1.7.5, 2000.07.30 This release has mainl bug fixes and code improvements: * A bug in FieldNames::init has been fixed, enabling a bug free usage of this class with in what ever a mixture of cases that is required * Changed behaviour of ResUse, Result and Row classes, so that they could be re-used as much as necessary, without any memory leaks, nor with any re-initializations necessary * Fixed all potential leaks that could have been caused by usage of delete instead of delete[] after memory has been allocated with new[] * Deleted all unused classes and macros. This led to a reduction of library size to one half of the original size. This has furthermore brought improvements in compilation speed * Moved all string manipulation from system libraries to libmysqlclient, thus enabling uniformity of code and usage of 64 bit integers on all platforms, including Windows, without reverting to conditional compilation. This changes now requires usage of mysql 3.23 client libraries, as mandatory * Changed examples to reflect above changes * Configuration scripts have been largely changed and further changes shall appear in consecutive sub-releases. This changes have been done and shall be done by our MySQL developer Thimble Smith * Changed README, TODO and text version of manual. Other versions of manual have not been updated * Fixed .version ``bug''. This is only partially fixed and version remains 1.7.0 due to some problems in current versions of libtool. This shall be finally fixed in a near future. * Several smaller fixes and improvements * Added build.sh script to point to the correct procedure of building of this library. Edit it to add configure options of your choice. ## 1.7, 2000.05.17 This is mainly a release dealing with bug fixes, consistency improvements and easier configure on some platforms. * A bug in fetch_row() method of ResUse class has been fixed. Beside changes that existed in a distributed patch, some additional error checking has been introduced. * A bug in escape manipulator has been fixed that could cause an error if all characters had to be escaped. * An inconsistency in column indexing has been fixed. Before this version, column names in row indexing with strings, i.e. row[] , has been case sensitive, which was inconsistent with MySQL server handling of column names. * An inconsistency in conversion from strings to integers or floats has been fixed. In prior version a space found in data would cause a BadConversion exception. This has been fixed, but 100% consistency with MySQL server has not been targeted, so that other non-numeric characters in data will still cause BadConversion exception or error. As this API is used in applications, users should provide feedback if full compatibility with MySQL server is desired, in which case BadConversion exception or error would be abolished in some of future versions. * A new method in ColData class has been introduced. is_null() method returns a boolean to denote if a column in a row is NULL. * Finally, as of this release, testing for NULL values is possible. * Those are columns with empty strings for which is_null() returns true. * Some SPARC Solaris installations had C++ exception problems with g++ 2.95.2 This was a bug that was fixed in GNU gcc, as from release 2.95 19990728. This version was thoroughly tested and is fully functional on SPARC Solaris 2.6 with the above version of gcc. * A 'virtual destructor ' warning for Result class has been fixed * Several new functions for STL strings have been added. Those functions (see string_util.hh) add some of the functionality missing in existing STL libraries * Conversion for 64 bit integers on FreeBSD systems has been added. On those systems _FIX_FOR_BSD_ should be defined in CXXFLAGS prior to configuring. Complete conversion to the usage of functions for integer conversion found in mysqlclient library is planned for one of the next releases. * A completely new, fully dynamic, dramatic and fully mutable result set has been designed and will be implemented in some of 2.x releases. * Several smaller fixes and improvements, including defaulting exceptions to true, instead of false, as of this version. * An up-to-date and complete Postscript version of documentation is included in this distribution. * Large chunks of this manual are changed, as well as README and TODO files. ## 1.6, 2000.02.03 * This is a major release as it includes new features and major rewrites. * Automatic quoting and escaping with streams. It works automatically , depending on the column type. It will work with << on all ostream derived types. it is paricularly handy with query objects and strstreams. Automatic quoting and escaping on cout, cerr and clog stream objects is intentionally left out, as quoting / escaping on those stream objects is not necessary. This feature can be turned of by setting global boolean dont_quote_auto to true. * Made some major changes in code, so that now execute method should be used only with SSQL and template queries, while for all other query execution of UPDATE's, INSERT's, DELETE's, new method exec() should be used. It is also faster. * New method `get_string` is inroduced for easier handling / casting `ColData` into C++ strings. * Major rewrite of entire code, which led to it's reduction and speed improvement. This also led to removal of several source files. * Handling of binary data is introduced. No application program changes are required. One of new example programs demonstrates handling of binary data. * Three new example programs have been written and thoroughly tested. Their intention is to solve some problems addressed by MySQL users. * Thorough changes is Makefile system has been made * Better configuration scripts are written, thanks to D.Hawkins * Added several bug fixes * Changed Manual and Changelog ## 1.5, 1999.12.01 * Fixed bug in template queries, introduced in 1.4 (!) * Fixed connect bug * Fixed several bug in `type_info` classes * Added additional robustness in classes * Added additional methods for SQL type info * Changed Changelog and README ## 1.4, 1999.11.25 * Fixed bug in store and storein methods * Fixed one serious memory leak * Fixed a very serious bug generated by gcc 2.95.xx !! * Added robustness in classes, so that e.g. same query and row objects can be re-used. Changed `sinisa_ex` example to reflect and demonstrate this ability. * Changed Changelog and README * Few other bug fixes and small improvements and speed-ups ## 1.3, 1999.11.10 * Fixed several erronous definitions * Further changed source to be 2.95.2 compatible * Expunged unused statements, especially dubious ones, like use of `pointer_tracker` * Corrected bug in example file `fieldinf1` * Finally fixed `mysql_init` in `Connection` constructor, which provided much greater stability! * Added read and get options, so that clients, like mysqlgui can use it * Changed Changelog and README * Many other bug fixes. ## 1.2, 1999.10.15 First offical release by [Sinisa Milivojevic](mailto:sinisa@mysql.com) after Kevin Atkinson made him the offical maintainer, * Many manual fixes. * Changed README and Changelog * Changed source to be compilable by gcc 2.95.xx, tribute to Kevin Atkinson * Added methods in Connection class which are necessary for fullfilling administrative functions with MySQL * Added many bug fixes in code pertaining to missing class initializers, as notified by Michael Rendell ## 1.1, 1999.08.02 This release is the first one made by Sinisa Milivojevic. * Added several bug fixes * Fixed memory leak problems and variables overlapping problems. * Added automake and autoconf support by loic@ceic.com * Added Makefile for manual * Added support for cygwin * Added example `sinisa_ex` (let modesty prevail) which used to crash a lot when memory allocation, memory leak and overlap problems were present. Smooth running of this example proves that all those bugs are fixed * Corrected bugs in `sql_query.cc` regarding delete versus `delete[]` and string length in `manip.cc` * Changed manual * Changed README * Many other smaller things ## 1.0, 1999.06.09 All prior versions were released by Kevin Atkinson. This release was made by [Monty Widenius](mailto:monty@monty.pp.sci.fi) * Added patches from Orion Poplawski to support the UnixWare 7.0 compiler ## .64.1.1a, 1998.09.27 * Fixed several bugs that caused my library to fail to compile with egcs 1.1. Hopefully it will still compile with egcs 1.0 however I have not been able to test it with egcs 1.0. * Removed some problem causing debug output in sql++pretty. ## .64.1a, 1998.08.01 * Added an (almost) full guide to using Template Queries. * Fixed it so the SQLQuery will throw an exception when all the template parameters are not provided. * Proofread and speedchecked the manual (it really needed it). * Other minor document fixes. ## .64.0.1a, 1998.07.31 * Reworked the Class Reference section a bit. * Minor document fixes * Added more examples for SSQLS. * Changed the syntax of `equal_list` for SSQLS from `equal_list(cchar *, Manip, cchar *)` to `(cchar *, cchar *, Manip)`. * Added set methods to SSQLS. These new methods do the same thing as there corresponding constructors. * Added methods for creating a `mysql_type_info` from a C++ `type_info`. ## .64.a, 1998.07.24 * Changed the names of all the classes so they no longer have to have Mysql in the begging of it. However if this creates a problem you can define a macro to only use the old names instead. * The Specialized SQL Structures (formally known as Custom Mysql Structures) changed from mysql_ to sql_. * Added the option of using exceptions thoughout the API. * ColData (formally known as MysqlStrings) will now throw an exception if there is a problem in the conversion. * Added a null adapter. * Added Mutable Result Sets * Added a very basic runtime type identification for SQL types * Changed the document format from POD to LYX . * Am now using a modified version of Perceps to extract the class information directly from the code to make my life easier. * Added an option of defining a macro to avoid using the automatic conversion with binary operators. * Other small fixed I probully forgot to mentune. ## .63.1.a * Added Custom Mysql Structures. * Fixed the Copy constructor of class Mysql * Started adding code so that class Mysql lets it children now when it is leaving. * Attempted to compile it into a library but still need help. As default it will compile as a regular program. * Other small fixes. ## .62.a, 1998.05.03 * Added Template Queries * Created a separate SQLQuery object that is independent of an SQL connection. * You no longer have to import the data for the test program as the program creates the database and tables it needs. * Many small bug fixes. ## .61.1.a 1998.04.28 * Cleaned up the example code in test.cc and included it in the manual. * Added an interface layout plan to the manual. * Added a reverse iterator. * Fixed a bug with row.hh (It wasn't being included because of a typo). ## .61.0.a * Major interface changes. I warned you that the interface may change while it is in pre-alpha state and I wasn't kidding. * Created a new and Separate Query Object. You can no longer execute queries from the Mysql object instead you have to create a query object with Mysql::query() and use it to execute queries. * Added the comparison operators to MysqlDate, MysqlTime and MysqlDateTime. Fixed a few bugs in the MysqlDate... that effected the stream output and the conversion of them to strings. * Reflected the MysqlDate... changes in the manual. * Added a new MysqlSet object and a bunch of functions for working with mysql set strings. ## .60.3a, 1998.04.24 * Changed strtoq and strtouq to strtoll and strtull for metter compatibility Minor Manual fix. * Changed makefile to make it more compatible with Solaris (Thanks Chris H) * Fixed bug in comparison functions so that they would compare in he right direction. * Added some items to the to do list be sure to have a look. mysql++-3.3.0/mysql++.ebuild000644 000765 000024 00000003005 14042362131 016266 0ustar00tangentstaff000000 000000 # Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/dev-db/mysql++/mysql++-2.3.2.ebuild,v 1.3 2008/04/21 03:00:49 dirtyepic Exp $ inherit eutils DESCRIPTION="C++ API interface to the MySQL database" HOMEPAGE="http://tangentsoft.net/mysql++/" SRC_URI="http://www.tangentsoft.net/mysql++/releases/${P}.tar.gz" LICENSE="LGPL-2" SLOT="0" KEYWORDS="~alpha ~amd64 ~hppa ~mips ~ppc ~sparc ~x86" IUSE="" DEPEND=">=sys-devel/gcc-3" RDEPEND="${DEPEND} >=virtual/mysql-4.0" src_unpack() { unpack ${A} cd "${S}" epatch "${FILESDIR}"/${P}-gcc-4.3.patch for i in "${S}"/lib/*.h ; do sed -i \ -e '/#include tag to . (Remember the closing tag!) - Remove the tag - Remove the tag Then, re-bootstrap the library. See HACKERS.txt if you need further instruction on doing that. mysql++-3.3.0/vc2005/000755 000765 000024 00000000000 14042362131 014526 5ustar00tangentstaff000000 000000 mysql++-3.3.0/install.hta.in000644 000765 000024 00000025122 14042362131 016362 0ustar00tangentstaff000000 000000 Install MySQL++ Development Files

Where would you like to install the MySQL++ development files?
Drives:
Folders:
  Install in versioned folder?
  Segregate native C++ library builds from C++/CLI (CLR) builds?
  Segregate libraries by platform?
Target:
 

mysql++-3.3.0/exrun.bat000755 000765 000024 00000000717 14042362131 015450 0ustar00tangentstaff000000 000000 @echo off set PROG=%1 if not exist %PROG% set PROG=%1.exe if not exist %PROG% set PROG=Debug\%1 if not exist %PROG% set PROG=vc2008\x64\Debug\%1.exe if not exist %PROG% set PROG=vc2008\Debug\%1.exe if not exist %PROG% set PROG=vc2005\Debug\%1.exe if not exist %PROG% set PROG=vc2003\Debug\%1.exe if not exist %PROG% exit shift set PATH=Debug;vc2008\x64\Debug;vc2008\Debug;vc2005\Debug;vc2003\Debug;%PATH% echo Running %PROG%... %PROG% %1 %2 %3 %4 %5 %6 %7 %8 %9 mysql++-3.3.0/mysql++.bkl-baseline000644 000765 000024 00000051575 14042362131 017371 0ustar00tangentstaff000000 000000 $(DOLLAR)$(DOLLAR)d $(DOLLAR)$(DOLLAR)e $(DOLLAR)$(DOLLAR)f 3.1.0 ../$(STABLEABI)/abi_dumps/mysqlpp ./abi_dumps/mysqlpp no single yes multi C:\Program Files\MySQL\MySQL Connector C 6.1 on off off speed _d yes yes yes yes $(PREFIX)/include/mysql++ .. mysqlpp$(DEBUG_SUFFIX) mysqlpp$(DEBUG_SUFFIX) 3.2.5 lib/beemutex.cpp lib/cmdline.cpp lib/connection.cpp lib/cpool.cpp lib/datetime.cpp lib/dbdriver.cpp lib/field_names.cpp lib/field_types.cpp lib/manip.cpp lib/myset.cpp lib/mysql++.cpp lib/mystring.cpp lib/null.cpp lib/options.cpp lib/qparms.cpp lib/query.cpp lib/result.cpp lib/row.cpp lib/scopedconnection.cpp lib/sql_buffer.cpp lib/sqlstream.cpp lib/ssqls2.cpp lib/stadapter.cpp lib/tcp_connection.cpp lib/transaction.cpp lib/type_info.cpp lib/uds_connection.cpp lib/utility.cpp lib/vallist.cpp lib/wnp_connection.cpp $(DEBUGINFO) $(OPTIMIZE_FLAG) $(THREAD_TYPE) on on $(LIBDIR) UNICODE _UNICODE wsock32 MYSQLPP_MAKING_DLL HAVE_MYSQL_SSL_SET $(MYSQL_WIN_DIR)\include $(MYSQL_WIN_DIR)\lib libmysql MYSQLPP_NO_DLL HAVE_MYSQL_SSL_SET "$(MYSQL_WIN_DIR)\include" -Wl,--enable-stdcall-fixup "$(MYSQL_WIN_DIR)\lib" mysql lib/ssqls.h lib/querydef.h @PTHREAD_CFLAGS@ . @MYSQL_C_INC_DIR@ -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ HAVE_POSIX_GETOPT MYSQLPP_XCODE /usr/local/mysql/include -lmysqlclient /usr/local/mysql/lib lib/*.h $(HEADER_DIR) mysqlpp_ssqls2parse ssx/parsev2.cpp . mysqlpp mysqlpp ssx/genv2.cpp ssx/main.cpp test/array_index.cpp test/cpool.cpp test/datetime.cpp test/inttypes.cpp test/insertpolicy.cpp test/manip.cpp test/null_comparison.cpp test/query_copy.cpp test/qssqls.cpp test/qstream.cpp test/sqlstream.cpp test/ssqls2.cpp ssqls2parse mysqlpp_ssqls2parse test/string.cpp test/tcp.cpp test/uds.cpp test/wnp.cpp mysqlpp_excommon examples/printdata.cpp examples/cgi_jpeg.cpp examples/cpool.cpp examples/dbinfo.cpp examples/deadlock.cpp examples/fieldinf.cpp examples/for_each.cpp examples/load_jpeg.cpp examples/multiquery.cpp examples/resetdb.cpp examples/simple1.cpp examples/simple2.cpp examples/simple3.cpp examples/ssqls1.cpp examples/ssqls2.cpp examples/ssqls3.cpp examples/ssqls4.cpp examples/ssqls5.cpp $ examples/ssqls6.cpp $ examples/store_if.cpp examples/tquery1.cpp examples/tquery2.cpp examples/tquery3.cpp examples/tquery4.cpp examples/transaction.cpp @PACKAGE_NAME@-@PACKAGE_VERSION@ rm -rf doc/latex doc/pdf ; \ cd doc/html/refman ; \ for e in dot html map md5 png ; \ do \ rm -f doxygen.css [a-z]*.$(DDE) ; \ done -rmdir $(HEADER_DIR) rm -f $(DESTDIR)$(libdir)/$(DLLPREFIX)mysqlpp.$(SO_SUFFIX) configure.ac install.hta.in mysql++.bkl mysql++.spec.in doc/userman/userman.dbx.in lib/Doxyfile.in lib/mysql++.h.in ssx/Doxyfile.in bakefile_gen ./config.status cd lib ; ./ssqls.pl lib/ssqls.pl cd lib ; ./querydef.pl lib/querydef.pl ctags --recurse=yes . tags lib/Doxyfile lib/*.cpp lib/*.h cd lib ; doxygen > /dev/null ssx/Doxyfile ssx/*.cpp ssx/*.h cd ssx ; doxygen > /dev/null doc/userman/*.dbx doc/userman/userman.dbx.in cd doc/userman ; make html pdf doc/html/refman/index.html doc/html/refman/ssx/index.html doc/html/userman/index.html for d in config doc/html/refman/ssx doc/html/userman \ doc/refman doc/userman examples lib ssx test ; \ do \ mkdir -p $(PKGNAME)/$(DDD) ; \ done cp -RL *.bat *.in *.txt abi.xml aclocal.m4 Bakefiles.bkgen \ bootstrap ChangeLog.md cleanmf config.guess config.h \ config.sub configure* dtest exrun HACKERS.md install* \ Makefile.* mysql++.* osver $(PKGNAME) for d in vc200? ; do \ mkdir -p $(PKGNAME)/$(DDD) ; \ cp $(DDD)/*.sln $(DDD)/*.vcproj $(PKGNAME)/$(DDD) ; \ done cp config/*.m4 $(PKGNAME)/config cp -RL doc/README* doc/pdf doc/ssqls-pretty $(PKGNAME)/doc for f in fo2pdf LICENSE.txt Makefile Makefile.hello.* mktxt README.txt \*.dbx \*.in \*.mod \*.txt \*.xsl ; \ do \ cp doc/userman/$(DDF) $(PKGNAME)/doc/userman ; \ done find doc \( -name *.css -o -name *.html \) -exec install {} $(PKGNAME)/{} \; cp doc/html/refman/*.png $(PKGNAME)/doc/html/refman cp doc/userman/userman.dbx.in $(PKGNAME)/doc/userman for e in cpp h jpg txt ; \ do \ cp examples/*.$(DDE) $(PKGNAME)/examples ; \ done for d in mfc wforms ; \ do \ mkdir -p $(PKGNAME)/examples/vstudio/$(DDD) ; \ cp examples/vstudio/$(DDD)/* $(PKGNAME)/examples/vstudio/$(DDD) ; \ done cp lib/*.cpp lib/*.h lib/*.in lib/*.pl $(PKGNAME)/lib cp test/*.cpp $(PKGNAME)/test cp ssx/*.cpp ssx/*.h ssx/*.in $(PKGNAME)/ssx cd $(PKGNAME) ; ./bootstrap nodoc nomaint rm -f $(PKGNAME)/Makefile rm -f $(PKGNAME)/config.log rm -f $(PKGNAME)/config.status rm -fr $(PKGNAME)/autom4te.cache doc $(PKGNAME) tar -chz -f $(PKGNAME).tar.gz $(PKGNAME) rm -rf $(PKGNAME) doc dist cp $(PKGNAME).tar.gz ~/rpmbuild/SOURCES cd ~/rpmbuild/SPECS rpm-prep rpmbuild -ba mysql++.spec rpm-prep rpmbuild -bs mysql++.spec dist cp $(PKGNAME).tar.gz /usr/portage/distfiles cp mysql++.ebuild /usr/portage/dev-db/mysql++/$(PKGNAME).ebuild ebuild /usr/portage/dev-db/mysql++/$(PKGNAME).ebuild digest mysql++-3.3.0/vc2003/000755 000765 000024 00000000000 14042362131 014524 5ustar00tangentstaff000000 000000 mysql++-3.3.0/README-Visual-C++.txt000644 000765 000024 00000017613 14042362131 017064 0ustar00tangentstaff000000 000000 Prerequisites ~~~~~~~~~~~~~ You need to have the MySQL C API development files on your system, since MySQL++ is built on top of it. The easiest way to get it is to download Connector/C from mysql.com. If you need the MySQL server on your development system anyway, you you can choose to install the development files along with the server. Some versions of the MySQL Server installer for Windows have installed the development files by default, while others have made it an optional install. Project Files ~~~~~~~~~~~~~ The distribution comes with three sets of .sln and .vcproj files in the vc2003, vc2005 and vc2008 subdirectories. We do this for several reasons: 1. It lets you build MySQL++ with multiple versions of Visual C++ without the build products conflicting. 2. For Visual C++ 2003, we had to disable the SSQLS feature because changes made in MySQL++ 3.0 now cause the compiler to crash while building. See the Breakages chapter in the user manual for workarounds if you must still use VC++ 2003. 3. The VC++ 2008 project files get built for 64-bit output, while the other two build 32-bit executables. With VC++ 2003, we have no choice about this, since it only supports 32-bit targets. VC++ 2005 did have experimental 64-bit compilers available, but their beta nature was only one reason we chose not to use them. The real reason is that the current MySQL++ build system isn't currently set up to make it easy to build both 32- and 64-bit libraries and executables at the same time within the same solution. Bakefile allows it, but it would require forking many of the build rules in mysql++.bkl so we can do things like have separate MYSQL_WIN_DIR values for each bitness. (See below for more on this variable.) For that same reason, the VC++ 2008 project files are set up to build 64-bit libraries and executables *only*. It is possible to upgrade these project files to work with newer versions of Visual C++, but beware that the upgrade feature tends to be problematic. If you want to do a 32-bit build on VC++ 2008 or newer, it is easiest to open the vc2005\* project files and let Visual Studio upgrade them for you. The alternative, starting with the vc2008 files, requires that you add a 32-bit build option to all of the many targets in MySQL++, then optionally delete the 64-bit targets. This is a lot more work. Plus, it only works if you have the 64-bit compilers installed, since Visual Studio will refuse to open project files where all targets must be built with compilers that aren't installed, even if your goal is to immediately adjust them to use compilers that *are* installed. When converting the VC++ 2008 project files to VC++ 2012, Visual Studio will change the output directories from Debug to Debug\x64 (and similar for Release), but it won't also change the link paths from Debug to Debug\x64, so that the library and examples will compile but not link. The migration tool detects that there is a problem, but it can't fix its own mess. You have to manually fix it. There were also problems in VC++ 2010 when you had converted 32-bit VC++ 2008 projects and then were trying to switch them to 64-bit. It ended up being simpler in this case to just start over from scratch and build your own project files. Using Nonstandard MySQL Installations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The Visual Studio project files that come with MySQL++ have everything set up correctly for the common case. The biggest assumption in the settings is that you're building against the current stable version of Connector/C, which gets installed here at the time of this writing: C:\Program Files\MySQL\MySQL Connector C 6.1\ If you installed a different version, or it's in a different directory, or you've installed the development files as part of MySQL Server on the same machine, you need to change the project files to reference the C API development files in that other location. There are two ways to do this. The hard way is to make 16 different changes each to 44 separate project files. If you're a talented Visual Studio driver, you can do this in as little as about 5 or 6 steps. You might even get it right the first time. If you are not so talented, you have to make all ~700 changes one at a time, and you almost certainly will *not* get it right the first time. The somewhat easier way is to open all these files in a text editor that lets you make a global search and replace on all open files. The easy way is to install Bakefile (http://bakefile.org/), change the value of the MYSQL_WIN_DIR variable near the top of mysql++.bkl in the top level of the MySQL++ source tree, and run rebake.bat. This will rebuild all of the project files for you, using the new MySQL path in all the many places it's needed. Building the Library and Example Programs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ You must build both the Debug and Release versions of the library, because a release build of your program won't work with a Debug version of the MySQL++ DLL. These DLLs get different names, so you can install them in the same directory if needed: mysqlpp_d.dll for the Debug version, and mysqlpp.dll for the Release version. With the library built, run at least the resetdb and simple1 examples to ensure that the library is working correctly. In addition to the other generic examples, there are a few Visual C++ specific examples that you might want to look at in examples\vstudio. See README-examples.txt for further details. Once you're sure the library is working correctly, you can run the install.hta file at the project root to install the library files and headers in a directory of your choosing. (Aside: You may not have come across the .hta extension before. It's for a rarely-used feature of Microsoft's Internet Explorer, called HTML Applications. Know what Adobe AIR is? Kinda like that, only without the compilation into a single binary blob which you must install before you can run it. Just open install.hta in a text editor to see how it works.) Using MySQL++ in Your Own Projects ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This is covered in the user manual, chapter 9. Working With Bakefile ~~~~~~~~~~~~~~~~~~~~~ MySQL++'s top-level Visual Studio project files aren't maintained directly. Instead, we use a tool called Bakefile (http://bakefile.org/) to generate them from mysql++.bkl. Since there are so many project files in MySQL++, it's often simpler to edit this source file and "re-bake" the project files from it than to make your changes in Visual Studio. To do this, download the native Windows version of Bakefile from the web site given above. Install it, and then put the installation directory in your Windows PATH. Then, open up a command window, cd into the MySQL++ directory, and type "rebake". This will run rebake.bat, which rebuilds the Visual Studio project files from mysql++.bkl. There's more information about using Bakefile in HACKERS.txt. If You Run Into Problems... ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Especially if you have linking problems, make sure your project settings match the above. Visual C++ is very picky about things like run time library settings. When in doubt, try running one of the example programs. If it works, the problem is likely in your project settings, not in MySQL++. mysql++-3.3.0/config.h.in000644 000765 000024 00000005173 14042362131 015640 0ustar00tangentstaff000000 000000 /* config.h.in. Generated from configure.ac by autoheader. */ /* define if the compiler supports basic C++11 syntax */ #undef HAVE_CXX11 /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define if you have __gnu_cxx:slist container in */ #undef HAVE_EXT_SLIST /* Define if you have ::slist container in */ #undef HAVE_GLOBAL_SLIST /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define if getopt() is available in libiberty.h */ #undef HAVE_LIBIBERTY_GETOPT /* Define to 1 if you have the `intl' library (-lintl). */ #undef HAVE_LIBINTL /* Define if you have the localtime_r() facility */ #undef HAVE_LOCALTIME_R /* Define if your MySQL library has SSL functions */ #undef HAVE_MYSQL_SSL_SET /* Define if getopt() is available in unistd.h */ #undef HAVE_POSIX_GETOPT /* Define if you have POSIX threads libraries and header files. */ #undef HAVE_PTHREAD /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDIO_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define if you have std::slist container in */ #undef HAVE_STD_SLIST /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYNCH_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to necessary symbol if this constant uses a non-standard name on your system. */ #undef PTHREAD_CREATE_JOINABLE /* Define to 1 if all of the C90 standard headers exist (not just the ones required in a freestanding environment). This macro is provided for backward compatibility; new code need not use it. */ #undef STDC_HEADERS mysql++-3.3.0/INSTALL.txt000644 000765 000024 00000001211 14042362131 015451 0ustar00tangentstaff000000 000000 The installation procedure depends on the compiler you use to build MySQL++ and the OS you build it on. There are platform-specific instructions for all popular platforms: README-Cygwin.txt - for Cygwin README-Linux.txt - for Linux README-Mac-OS-X.txt - for Mac OS X README-MinGW.txt - for MinGW README-Solaris.txt - for Solaris README-Visual-C++.txt - for Visual C++ If you're on some Unix variant (Linux, OS X, *BSD, Solaris, Cygwin...) there are additional general instructions in README-Unix.txt. See the main README.txt file for high-level instructions that apply to all platforms MySQL++ works on. mysql++-3.3.0/config.guess000755 000765 000024 00000137613 13755367766 016177 0ustar00tangentstaff000000 000000 #! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2020 Free Software Foundation, Inc. timestamp='2020-11-07' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . me=$(echo "$0" | sed -e 's,.*/,,') usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2020 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. tmp= # shellcheck disable=SC2172 trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" # shellcheck disable=SC2039 { tmp=$( (umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null) && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } dummy=$tmp/dummy case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD="$driver" break fi done if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac } # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=$( (uname -m) 2>/dev/null) || UNAME_MACHINE=unknown UNAME_RELEASE=$( (uname -r) 2>/dev/null) || UNAME_RELEASE=unknown UNAME_SYSTEM=$( (uname -s) 2>/dev/null) || UNAME_SYSTEM=unknown UNAME_VERSION=$( (uname -v) 2>/dev/null) || UNAME_VERSION=unknown case "$UNAME_SYSTEM" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu set_cc_for_build cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else #include #ifdef __DEFINED_va_list LIBC=musl #else LIBC=gnu #endif #endif EOF eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g')" ;; esac # Note: order is significant - the case branches are not exclusive. case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \ "/sbin/$sysctl" 2>/dev/null || \ "/usr/sbin/$sysctl" 2>/dev/null || \ echo unknown)) case "$UNAME_MACHINE_ARCH" in aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=$(echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,') endian=$(echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p') machine="${arch}${endian}"-unknown ;; *) machine="$UNAME_MACHINE_ARCH"-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case "$UNAME_MACHINE_ARCH" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case "$UNAME_MACHINE_ARCH" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=$(echo "$UNAME_MACHINE_ARCH" | sed -e "$expr") ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "$UNAME_VERSION" in Debian*) release='-gnu' ;; *) release=$(echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2) ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "$machine-${os}${release}${abi-}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=$(arch | sed 's/Bitrig.//') echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=$(arch | sed 's/OpenBSD.//') echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" exit ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=$(arch | sed 's/^.*BSD\.//') echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" exit ;; *:MidnightBSD:*:*) echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" exit ;; *:ekkoBSD:*:*) echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" exit ;; *:SolidBSD:*:*) echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" exit ;; *:OS108:*:*) echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE" exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd"$UNAME_RELEASE" exit ;; *:MirBSD:*:*) echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" exit ;; *:Sortix:*:*) echo "$UNAME_MACHINE"-unknown-sortix exit ;; *:Twizzler:*:*) echo "$UNAME_MACHINE"-unknown-twizzler exit ;; *:Redox:*:*) echo "$UNAME_MACHINE"-unknown-redox exit ;; mips:OSF1:*.*) echo mips-dec-osf1 exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $3}') ;; *5.*) UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $4}') ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=$(/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1) case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo "$UNAME_MACHINE"-dec-osf"$(echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)" # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo "$UNAME_MACHINE"-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo "$UNAME_MACHINE"-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix"$UNAME_RELEASE" exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "$( (/bin/universe) 2>/dev/null)" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case $(/usr/bin/uname -p) in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo "$UNAME_MACHINE"-ibm-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')" exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')" exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')" exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux"$UNAME_RELEASE" exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi echo "$SUN_ARCH"-pc-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')" exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')" exit ;; sun4*:SunOS:*:*) case "$(/usr/bin/arch -k)" in Series*|S4*) UNAME_RELEASE=$(uname -v) ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/')" exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos"$UNAME_RELEASE" exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=$( (sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null) test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 case "$(/bin/arch)" in sun3) echo m68k-sun-sunos"$UNAME_RELEASE" ;; sun4) echo sparc-sun-sunos"$UNAME_RELEASE" ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos"$UNAME_RELEASE" exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint"$UNAME_RELEASE" exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint"$UNAME_RELEASE" exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint"$UNAME_RELEASE" exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint"$UNAME_RELEASE" exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint"$UNAME_RELEASE" exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint"$UNAME_RELEASE" exit ;; m68k:machten:*:*) echo m68k-apple-machten"$UNAME_RELEASE" exit ;; powerpc:machten:*:*) echo powerpc-apple-machten"$UNAME_RELEASE" exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix"$UNAME_RELEASE" exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix"$UNAME_RELEASE" exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix"$UNAME_RELEASE" exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && dummyarg=$(echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p') && SYSTEM_NAME=$("$dummy" "$dummyarg") && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos"$UNAME_RELEASE" exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=$(/usr/bin/uname -p) if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ test "$TARGET_BINARY_INTERFACE"x = x then echo m88k-dg-dgux"$UNAME_RELEASE" else echo m88k-dg-dguxbcs"$UNAME_RELEASE" fi else echo i586-dg-dgux"$UNAME_RELEASE" fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/g')" exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'$(uname -s)'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if test -x /usr/bin/oslevel ; then IBM_REV=$(/usr/bin/oslevel) else IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=$(/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }') if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if test -x /usr/bin/lslpp ; then IBM_REV=$(/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/) else IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi echo "$IBM_ARCH"-ibm-aix"$IBM_REV" exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//') case "$UNAME_MACHINE" in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if test -x /usr/bin/getconf; then sc_cpu_version=$(/usr/bin/getconf SC_CPU_VERSION 2>/dev/null) sc_kernel_bits=$(/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null) case "$sc_cpu_version" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "$sc_kernel_bits" in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if test "$HP_ARCH" = ""; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=$("$dummy") test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if test "$HP_ARCH" = hppa2.0w then set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi echo "$HP_ARCH"-hp-hpux"$HPUX_REV" exit ;; ia64:HP-UX:*:*) HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//') echo ia64-hp-hpux"$HPUX_REV" exit ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if test -x /usr/sbin/sysversion ; then echo "$UNAME_MACHINE"-unknown-osf1mk else echo "$UNAME_MACHINE"-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=$(uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz) FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///') FUJITSU_REL=$(echo "$UNAME_RELEASE" | sed -e 's/ /_/') echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///') FUJITSU_REL=$(echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/') echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi"$UNAME_RELEASE" exit ;; *:BSD/OS:*:*) echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" exit ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=$(uname -p) set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabi else echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabihf fi exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=$(/usr/bin/uname -p) case "$UNAME_PROCESSOR" in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac echo "$UNAME_PROCESSOR"-unknown-freebsd"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')" exit ;; i*:CYGWIN*:*) echo "$UNAME_MACHINE"-pc-cygwin exit ;; *:MINGW64*:*) echo "$UNAME_MACHINE"-pc-mingw64 exit ;; *:MINGW*:*) echo "$UNAME_MACHINE"-pc-mingw32 exit ;; *:MSYS*:*) echo "$UNAME_MACHINE"-pc-msys exit ;; i*:PW*:*) echo "$UNAME_MACHINE"-pc-pw32 exit ;; *:Interix*:*) case "$UNAME_MACHINE" in x86) echo i586-pc-interix"$UNAME_RELEASE" exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix"$UNAME_RELEASE" exit ;; IA64) echo ia64-unknown-interix"$UNAME_RELEASE" exit ;; esac ;; i*:UWIN*:*) echo "$UNAME_MACHINE"-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-pc-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')" exit ;; *:GNU:*:*) # the GNU system echo "$(echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,')-unknown-$LIBC$(echo "$UNAME_RELEASE"|sed -e 's,/.*$,,')" exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo "$UNAME_MACHINE-unknown-$(echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]")$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')-$LIBC" exit ;; *:Minix:*:*) echo "$UNAME_MACHINE"-unknown-minix exit ;; aarch64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; alpha:Linux:*:*) case $(sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null) in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi else echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf fi fi exit ;; avr32*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; cris:Linux:*:*) echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; crisv32:Linux:*:*) echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; e2k:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; frv:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; hexagon:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:Linux:*:*) echo "$UNAME_MACHINE"-pc-linux-"$LIBC" exit ;; ia64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; k1om:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m32r*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m68*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 test x"${LIBC}" = xgnu && IS_GLIBC=1 sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef mips #undef mipsel #undef mips64 #undef mips64el #if ${IS_GLIBC} && defined(_ABI64) LIBCABI=gnuabi64 #else #if ${IS_GLIBC} && defined(_ABIN32) LIBCABI=gnuabin32 #else LIBCABI=${LIBC} #endif #endif #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa64r6 #else #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa32r6 #else #if defined(__mips64) CPU=mips64 #else CPU=mips #endif #endif #endif #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) MIPS_ENDIAN= #else MIPS_ENDIAN= #endif #endif EOF eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI')" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-"$LIBC" exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; padre:Linux:*:*) echo sparc-unknown-linux-"$LIBC" exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-"$LIBC" exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case $(grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2) in PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; *) echo hppa-unknown-linux-"$LIBC" ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-"$LIBC" exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-"$LIBC" exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-"$LIBC" exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-"$LIBC" exit ;; riscv32:Linux:*:* | riscv64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" exit ;; sh64*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sh*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; tile*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; vax:Linux:*:*) echo "$UNAME_MACHINE"-dec-linux-"$LIBC" exit ;; x86_64:Linux:*:*) set_cc_for_build LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_X32 >/dev/null then LIBCABI="$LIBC"x32 fi fi echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI" exit ;; xtensa*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo "$UNAME_MACHINE"-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo "$UNAME_MACHINE"-unknown-stop exit ;; i*86:atheos:*:*) echo "$UNAME_MACHINE"-unknown-atheos exit ;; i*86:syllable:*:*) echo "$UNAME_MACHINE"-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos"$UNAME_RELEASE" exit ;; i*86:*DOS:*:*) echo "$UNAME_MACHINE"-pc-msdosdjgpp exit ;; i*86:*:4.*:*) UNAME_REL=$(echo "$UNAME_RELEASE" | sed 's/\/MP$//') if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" else echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case $(/bin/uname -X | grep "^Machine") in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}" exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=$(sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=$( (/bin/uname -X|grep Release|sed -e 's/.*= //')) (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" else echo "$UNAME_MACHINE"-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos"$UNAME_RELEASE" exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos"$UNAME_RELEASE" exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos"$UNAME_RELEASE" exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos"$UNAME_RELEASE" exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv"$UNAME_RELEASE" exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=$( (uname -p) 2>/dev/null) echo "$UNAME_MACHINE"-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo "$UNAME_MACHINE"-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux"$UNAME_RELEASE" exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if test -d /usr/nec; then echo mips-nec-sysv"$UNAME_RELEASE" else echo mips-unknown-sysv"$UNAME_RELEASE" fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux"$UNAME_RELEASE" exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux"$UNAME_RELEASE" exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux"$UNAME_RELEASE" exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux"$UNAME_RELEASE" exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux"$UNAME_RELEASE" exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux"$UNAME_RELEASE" exit ;; SX-ACE:SUPER-UX:*:*) echo sxace-nec-superux"$UNAME_RELEASE" exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Rhapsody:*:*) echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" exit ;; arm64:Darwin:*:*) echo aarch64-apple-darwin"$UNAME_RELEASE" exit ;; *:Darwin:*:*) UNAME_PROCESSOR=$(uname -p) case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac if command -v xcode-select > /dev/null 2> /dev/null && \ ! xcode-select --print-path > /dev/null 2> /dev/null ; then # Avoid executing cc if there is no toolchain installed as # cc will be a stub that puts up a graphical alert # prompting the user to install developer tools. CC_FOR_BUILD=no_compiler_found else set_cc_for_build fi if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_PPC >/dev/null then UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=$(uname -p) if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-*:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk"$UNAME_RELEASE" exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk"$UNAME_RELEASE" exit ;; NSR-*:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk"$UNAME_RELEASE" exit ;; NSV-*:NONSTOP_KERNEL:*:*) echo nsv-tandem-nsk"$UNAME_RELEASE" exit ;; NSX-*:NONSTOP_KERNEL:*:*) echo nsx-tandem-nsk"$UNAME_RELEASE" exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. # shellcheck disable=SC2154 if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo "$UNAME_MACHINE"-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux"$UNAME_RELEASE" exit ;; *:DragonFly:*:*) echo "$UNAME_MACHINE"-unknown-dragonfly"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')" exit ;; *:*VMS:*:*) UNAME_MACHINE=$( (uname -p) 2>/dev/null) case "$UNAME_MACHINE" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo "$UNAME_MACHINE"-pc-skyos"$(echo "$UNAME_RELEASE" | sed -e 's/ .*$//')" exit ;; i*86:rdos:*:*) echo "$UNAME_MACHINE"-pc-rdos exit ;; i*86:AROS:*:*) echo "$UNAME_MACHINE"-pc-aros exit ;; x86_64:VMkernel:*:*) echo "$UNAME_MACHINE"-unknown-esx exit ;; amd64:Isilon\ OneFS:*:*) echo x86_64-unknown-onefs exit ;; *:Unleashed:*:*) echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE" exit ;; esac # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" < #include #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #include #if defined(_SIZE_T_) || defined(SIGLOST) #include #endif #endif #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=$( (hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null); if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) #if !defined (ultrix) #include #if defined (BSD) #if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); #else #if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); #else printf ("vax-dec-bsd\n"); exit (0); #endif #endif #else printf ("vax-dec-bsd\n"); exit (0); #endif #else #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname un; uname (&un); printf ("vax-dec-ultrix%s\n", un.release); exit (0); #else printf ("vax-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname *un; uname (&un); printf ("mips-dec-ultrix%s\n", un.release); exit (0); #else printf ("mips-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=$($dummy) && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 case "$UNAME_MACHINE:$UNAME_SYSTEM" in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 <&2 </dev/null || echo unknown) uname -r = $( (uname -r) 2>/dev/null || echo unknown) uname -s = $( (uname -s) 2>/dev/null || echo unknown) uname -v = $( (uname -v) 2>/dev/null || echo unknown) /usr/bin/uname -p = $( (/usr/bin/uname -p) 2>/dev/null) /bin/uname -X = $( (/bin/uname -X) 2>/dev/null) hostinfo = $( (hostinfo) 2>/dev/null) /bin/universe = $( (/bin/universe) 2>/dev/null) /usr/bin/arch -k = $( (/usr/bin/arch -k) 2>/dev/null) /bin/arch = $( (/bin/arch) 2>/dev/null) /usr/bin/oslevel = $( (/usr/bin/oslevel) 2>/dev/null) /usr/convex/getsysinfo = $( (/usr/convex/getsysinfo) 2>/dev/null) UNAME_MACHINE = "$UNAME_MACHINE" UNAME_RELEASE = "$UNAME_RELEASE" UNAME_SYSTEM = "$UNAME_SYSTEM" UNAME_VERSION = "$UNAME_VERSION" EOF fi exit 1 # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: mysql++-3.3.0/exrun000755 000765 000024 00000002562 14042362131 014703 0ustar00tangentstaff000000 000000 #!/bin/sh if [ -z "$1" ] then echo "usage: $0 [TOOL] [args...]" echo echo " Runs the given example, using the library in the current directory" echo " instead of using the system library search mechanism. Accepts an " echo " arbitrary number of arguments." echo echo " TOOL can be 'valgrind', 'gdb', or 'ldd', which causes exrun to" echo " run the example program under the given tool." echo exit 1 fi TOOL= PROG=$1 if [ "$PROG" = 'valgrind' ] then TOOL='valgrind' shift PROG=$1 elif [ "$PROG" = 'gdb' ] then TOOL='gdb --args' shift PROG=$1 elif [ "$PROG" = 'ldd' ] then TOOL='ldd' shift PROG=$1 fi shift if [ -e "$PROG" ] then if [ `uname -s` = 'Darwin' ] then DYLD_LIBRARY_PATH=. $TOOL ./$PROG $* elif [ `uname -o` = 'Cygwin' ] then # Cygwin build case; see below for bash-as-DOS-shell case PATH=. $TOOL ./$PROG $* elif [ -e /usr/bin/ldd ] then if [ `uname -s` = 'SunOS' ] then LD_LIBRARY_PATH=.:/usr/mysql/lib/mysql $TOOL ./$PROG $* else LD_LIBRARY_PATH=. $TOOL ./$PROG $* fi else echo "ERROR: I don't grok this system's dynamic linkage system." fi elif [ `uname -o` = 'Cygwin' ] then # VC++ build, but using Cygwin's bash as shell to run programs cmd.exe /c exrun.bat $PROG $* else echo "usage: $0 [TOOL] [args...]" echo echo " Run $0 without arguments for more detailed usage info." echo exit 1 fi mysql++-3.3.0/version.in000644 000765 000024 00000000130 14042362131 015616 0ustar00tangentstaff000000 000000 #!/bin/sh echo @MYSQLPP_VERSION_MAJOR@.@MYSQLPP_VERSION_MINOR@.@MYSQLPP_VERSION_BUGFIX@ mysql++-3.3.0/mysql++.spec.in000644 000765 000024 00000013004 14042362131 016361 0ustar00tangentstaff000000 000000 Summary: C++ wrapper for the MySQL C API Name: @PACKAGE_NAME@ Version: @PACKAGE_VERSION@ Release: 1%{?dist} License: LGPL Group: Development/Libraries URL: http://tangentsoft.net/mysql++/ Source0: http://tangentsoft.net/mysql++/releases/mysql++-%{version}.tar.gz BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) BuildRequires: mariadb-devel %description MySQL++ makes working with MySQL server queries as easy as working with STL containers. This package contains only the libraries needed to run MySQL++-based programs. If you are building your own MySQL++-based programs, you also need to install the -devel package. %package devel Summary: MySQL++ developer files (headers, examples, etc.) Group: Development/Libraries Requires: mysql++ = %{version}-%{release}, mariadb-devel %description devel These are the files needed to compile MySQL++ based programs, plus some sample code to get you started. If you aren't building your own programs, you probably don't need to install this package. %package manuals Summary: MySQL++ user and reference manuals Group: Development/Libraries %description manuals This is the MySQL++ documentation. It's a separate RPM just because it's so large, and it doesn't change with every release. %prep %setup -q # Fakery for nodoc case if [ ! -e doc/README-devel-RPM.txt ] then touch doc/README-devel-RPM.txt touch doc/README-doc-RPM.txt touch doc/README-manuals-RPM.txt %{__mkdir_p} doc/html doc/pdf fi %build %configure --disable-dependency-tracking %{__make} %{?_smp_mflags} %install rm -rf %{buildroot} doc/examples %{__mkdir_p} %{buildroot}{%{_libdir},%{_includedir}} %{__make} DESTDIR=%{buildroot} install # Copy example programs to doc directory %{__mkdir_p} doc/examples %{__install} -m644 examples/*.{cpp,h} doc/examples/ %{__install} -m644 config.h doc/examples/ sed -i -e s@../config.h@config.h@ doc/examples/threads.h # Fix up simple example Makefile to allow it to build on the install # system, as opposed to the system where the Makefile was created. %{__sed} -e 's@./examples/@@' \ -e 's@^CPPFLAGS.*$@CPPFLAGS := $(shell mysql_config --cflags)@' \ -e 's@^LDFLAGS.*$@LDFLAGS := $(shell mysql_config --libs)@' \ -e 's@ -Ilib@@' \ -e '/^all:/s/test_[a-z,_]* //g' \ Makefile.simple > doc/examples/Makefile %clean rm -rf %{buildroot} doc/examples %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %files %defattr(-,root,root,-) %doc ChangeLog.md COPYING.txt CREDITS.txt LICENSE.txt README.md %{_libdir}/libmysqlpp.so.* %files devel %defattr(-,root,root,-) %doc doc/examples doc/README-devel-RPM.txt README-examples.txt %{_includedir}/mysql++ %{_libdir}/libmysqlpp.so %files manuals %defattr(-,root,root,-) %doc doc/html doc/pdf doc/README-manuals-RPM.txt %changelog * Wed Apr 28 2021 Warren Young 3.3.0-1 - Changed dependency on mysql-devel to mariadb-devel, now that our build systems no longer ship that as a compatibility RPM. * Mon Jul 2 2007 Warren Young 2.3.0-1 - Reflected changes to doc dir layout in manuals sub-package * Mon Mar 19 2007 Warren Young 2.2.1-4 - Reorganized locations of generated documentation * Mon Mar 19 2007 Warren Young 2.2.1-3 - Merge of Remi Collet's spec file with official one * Sun Mar 18 2007 Remi Collet 2.2.1-2 - find perm on common.h - soname mysql++-2.2.1-bkl.patch * Wed Feb 28 2007 Remi Collet 2.2.1-1 - Initial spec for Extras * Wed Feb 28 2007 Remi Collet 2.2.1-1.fc{3-6}.remi - update to version 2.2.1 * Thu Jan 25 2007 Remi Collet 2.2.0-1.fc{3-6}.remi - update to version 2.2.0 * Mon Nov 13 2006 Remi Collet 2.1.1.fc6.remi - FC6.x86_64 build - dynamic (sed) patch for Makefile (use mysql_config) * Thu Nov 02 2006 Remi Collet 2.1.1.fc6.remi - FC6 build * Sat Apr 8 2006 Remi Collet 2.1.1.fc{3,4,5}.remi - update to version 2.1.1 * Sat Nov 26 2005 Remi Collet 2.0.7-1.fc3.remi - 2.0.7-1.fc4.remi - update to version 2.0.4 - build with mysql-5.0.15 (requires libmysqlclient.so.15) * Sun Sep 4 2005 Remi Collet 2.0.4-1.FC4.remi - version 2.0.4 * Sat Aug 20 2005 Remi Collet 2.0.2-1.FC4.remi - built for FC4 - spec cleanning... * Thu Jun 16 2005 Remi Collet 1.7.40-1.FC3.remi - built for FC3 and MySQL 4.1.11 - examples in /usr/share/doc/mysql++-%%{version}/examples * Sat Apr 30 2005 Warren Young 1.7.34-1 - Split manuals out into their own sub-package. * Thu Mar 10 2005 Warren Young 1.7.32-1 - Disabled building of examples, to speed RPM build. * Fri Nov 05 2004 Warren Young 1.7.21-1 - Split out -devel subpackage, which now includes the examples * Wed Aug 18 2004 Warren Young 1.7.11-1 - Removed examples from documentation. - Limited documentation to just the generated files, not the sources. * Wed Apr 16 2003 Tuan Hoang 1.7.9-4 - Added gcc 3.2.2 patch. - Packaged using Red Hat Linux 8.0 and 9. * Thu Nov 14 2002 Tuan Hoang 1.7.9-3 - Changed the version passed to libtool. * Mon Oct 28 2002 Tuan Hoang 1.7.9-2 - Updated the version numbering of the library to be 1.7.9. - Packaged using Red Hat Linux 8.0. * Thu Oct 17 2002 Philipp Berndt - packaged mysql++-3.3.0/RELEASE-CHECKLIST.txt000644 000765 000024 00000004151 14042362131 016740 0ustar00tangentstaff000000 000000 - Update ChangeLog.md. - Change version number in configure.ac, mysql++.bkl, and ~/tangentsoft.com/mysqlpp/GNUmakefile All other places the version number occurs are generated from the first two. If there's a corresponding *.in file for the one you're looking at, the version number was substituted in by autoconf from configure.ac. Otherwise, the file was most likely created by the build system using the version number in mysql++.bkl. - Run "make abicheck". There should be no changes. You may have to run the following command in the current "stable" directory before this will succeed, since it depends on there being an ACC dump file in place already. $ abi-compliance-checker -lib mysqlpp -dump abi.xml ("Stable" is assumed to be in ../3.1.0 relative to the trunk checkout, as I write this.) This dependence on an existing ABI dump file is deemed reasonable since the ABI of the stable version had better not be changing! Plus, it saves some processing time, since ACC can load the stable ABI info without re-parsing its headers and library file. - Re-bootstrap the system in pedantic mode, then do a clean rebuild. Fix any new errors and warnings. Known bogus warnings: - Query's std::basic_ios<> base class is not being initialized. Yes, we know. We don't care. - The "==" float comparisons in lib/stadapter.cpp are harmless. They're comparisons against special NaN and infinity constants. Those are safe. - Re-bootstrap it again without "pedantic", to avoid shipping the pedantic build files. - Run tools/mkrel to check the new ChangeLog.md, configure.ac, and mysqyl++.bkl files in with the proper version tag and to merge it into the release branch. This also creates mysql++-$(VERSION).tar.gz and synchs it up to tangentsoft.com in the MySQL++ releases directory. - On a CentOS 8 box, say "make rpm" from the "release" branch tree. Copy the resulting ~/rpmbuild/SRPMS/mysql++-$(VERSION)-1.el8.src.rpm to that same releases directory. - Update "MySQL++" wiki document to point to new release packages. mysql++-3.3.0/mysql++.spec000644 000765 000024 00000012761 14042362153 015771 0ustar00tangentstaff000000 000000 Summary: C++ wrapper for the MySQL C API Name: mysql++ Version: 3.3.0 Release: 1%{?dist} License: LGPL Group: Development/Libraries URL: http://tangentsoft.net/mysql++/ Source0: http://tangentsoft.net/mysql++/releases/mysql++-%{version}.tar.gz BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) BuildRequires: mariadb-devel %description MySQL++ makes working with MySQL server queries as easy as working with STL containers. This package contains only the libraries needed to run MySQL++-based programs. If you are building your own MySQL++-based programs, you also need to install the -devel package. %package devel Summary: MySQL++ developer files (headers, examples, etc.) Group: Development/Libraries Requires: mysql++ = %{version}-%{release}, mariadb-devel %description devel These are the files needed to compile MySQL++ based programs, plus some sample code to get you started. If you aren't building your own programs, you probably don't need to install this package. %package manuals Summary: MySQL++ user and reference manuals Group: Development/Libraries %description manuals This is the MySQL++ documentation. It's a separate RPM just because it's so large, and it doesn't change with every release. %prep %setup -q # Fakery for nodoc case if [ ! -e doc/README-devel-RPM.txt ] then touch doc/README-devel-RPM.txt touch doc/README-doc-RPM.txt touch doc/README-manuals-RPM.txt %{__mkdir_p} doc/html doc/pdf fi %build %configure --disable-dependency-tracking %{__make} %{?_smp_mflags} %install rm -rf %{buildroot} doc/examples %{__mkdir_p} %{buildroot}{%{_libdir},%{_includedir}} %{__make} DESTDIR=%{buildroot} install # Copy example programs to doc directory %{__mkdir_p} doc/examples %{__install} -m644 examples/*.{cpp,h} doc/examples/ %{__install} -m644 config.h doc/examples/ sed -i -e s@../config.h@config.h@ doc/examples/threads.h # Fix up simple example Makefile to allow it to build on the install # system, as opposed to the system where the Makefile was created. %{__sed} -e 's@./examples/@@' \ -e 's@^CPPFLAGS.*$@CPPFLAGS := $(shell mysql_config --cflags)@' \ -e 's@^LDFLAGS.*$@LDFLAGS := $(shell mysql_config --libs)@' \ -e 's@ -Ilib@@' \ -e '/^all:/s/test_[a-z,_]* //g' \ Makefile.simple > doc/examples/Makefile %clean rm -rf %{buildroot} doc/examples %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %files %defattr(-,root,root,-) %doc ChangeLog.md COPYING.txt CREDITS.txt LICENSE.txt README.md %{_libdir}/libmysqlpp.so.* %files devel %defattr(-,root,root,-) %doc doc/examples doc/README-devel-RPM.txt README-examples.txt %{_includedir}/mysql++ %{_libdir}/libmysqlpp.so %files manuals %defattr(-,root,root,-) %doc doc/html doc/pdf doc/README-manuals-RPM.txt %changelog * Wed Apr 28 2021 Warren Young 3.3.0-1 - Changed dependency on mysql-devel to mariadb-devel, now that our build systems no longer ship that as a compatibility RPM. * Mon Jul 2 2007 Warren Young 2.3.0-1 - Reflected changes to doc dir layout in manuals sub-package * Mon Mar 19 2007 Warren Young 2.2.1-4 - Reorganized locations of generated documentation * Mon Mar 19 2007 Warren Young 2.2.1-3 - Merge of Remi Collet's spec file with official one * Sun Mar 18 2007 Remi Collet 2.2.1-2 - find perm on common.h - soname mysql++-2.2.1-bkl.patch * Wed Feb 28 2007 Remi Collet 2.2.1-1 - Initial spec for Extras * Wed Feb 28 2007 Remi Collet 2.2.1-1.fc{3-6}.remi - update to version 2.2.1 * Thu Jan 25 2007 Remi Collet 2.2.0-1.fc{3-6}.remi - update to version 2.2.0 * Mon Nov 13 2006 Remi Collet 2.1.1.fc6.remi - FC6.x86_64 build - dynamic (sed) patch for Makefile (use mysql_config) * Thu Nov 02 2006 Remi Collet 2.1.1.fc6.remi - FC6 build * Sat Apr 8 2006 Remi Collet 2.1.1.fc{3,4,5}.remi - update to version 2.1.1 * Sat Nov 26 2005 Remi Collet 2.0.7-1.fc3.remi - 2.0.7-1.fc4.remi - update to version 2.0.4 - build with mysql-5.0.15 (requires libmysqlclient.so.15) * Sun Sep 4 2005 Remi Collet 2.0.4-1.FC4.remi - version 2.0.4 * Sat Aug 20 2005 Remi Collet 2.0.2-1.FC4.remi - built for FC4 - spec cleanning... * Thu Jun 16 2005 Remi Collet 1.7.40-1.FC3.remi - built for FC3 and MySQL 4.1.11 - examples in /usr/share/doc/mysql++-%%{version}/examples * Sat Apr 30 2005 Warren Young 1.7.34-1 - Split manuals out into their own sub-package. * Thu Mar 10 2005 Warren Young 1.7.32-1 - Disabled building of examples, to speed RPM build. * Fri Nov 05 2004 Warren Young 1.7.21-1 - Split out -devel subpackage, which now includes the examples * Wed Aug 18 2004 Warren Young 1.7.11-1 - Removed examples from documentation. - Limited documentation to just the generated files, not the sources. * Wed Apr 16 2003 Tuan Hoang 1.7.9-4 - Added gcc 3.2.2 patch. - Packaged using Red Hat Linux 8.0 and 9. * Thu Nov 14 2002 Tuan Hoang 1.7.9-3 - Changed the version passed to libtool. * Mon Oct 28 2002 Tuan Hoang 1.7.9-2 - Updated the version numbering of the library to be 1.7.9. - Packaged using Red Hat Linux 8.0. * Thu Oct 17 2002 Philipp Berndt - packaged mysql++-3.3.0/CREDITS.txt000644 000765 000024 00000010067 14042362131 015451 0ustar00tangentstaff000000 000000 MySQL++ was created by Kevin Atkinson during 1998. From version 1.0 (released in June 1999) through 1.7.9 (May 2001), the primary maintainer was Sinisa Milivojevic . Neither Kevin nor Sinisa are currently involved in MySQL++ development. The current maintainer is Warren Young , starting with version 1.7.10 in August of 2004. For a fuller account of the library's history, see the first chapter of the user manual. For the nitty-gritty details, see the ChangeLog.md file in the root package directory. Change log items since 1.7.9 that aren't attributed to anyone else were done by Warren Young. Other contributors of note since 1.7.10: Chris Frey : Lots of GCC warning fixes for the bleeding-edge compiler versions, Gentoo ebuild support, and misc other fixes. Mark Meredino : Several fixes and additions, including a lot of work on Microsoft Visual C++ compatibility, and discoveries made while spelunking in the library. Evan Wies : Contributed several C++ code style cleanups. Arnon Jalon : Added the multi-query result set handling features, and examples/multiquery.cpp to demonstrate it. Korolyov Ilya has submitted several patches in many different areas of the library. Remi Collet is maintaining offical RPMs for Fedora, with other systems on the way. His work has improved the RPM spec file we distribute greatly. Joel Fielder of Switchplane, Ltd. created the ScopedConnection class, came up with the original idea for Query's for_each() and store_in() methods, provided the basis for examples/for_each.cpp, and provided a fix for exception flag propagation in Query. Jim Wallace demonstrated the need for BadQuery::errnum(), and contributed the patches and also examples/deadlock.cpp to test that this feature does what it is supposed to. Jonathan Wakely rebuilt my original versions of ConnectionPool, RefCountedPointer, and RefCountedBuffer. They're now simpler and safer. He also created the numeric conversion logic in lib/mystring.h introduced in v3.0. Adrian Cornish Several fixes and additions. Rick Gutleber contributed the Query::insertfrom() method and associated InsertPolicy object, as well as the SQLStream class. Here are the personal credits from the old 1.7.9 documentation, apparently written by Kevin Atkinson: Chris Halverson - For helping me get it to compile under Solaris. Fredric Fredricson - For a long talk about automatic conversions. Michael Widenius - MySQL developer who has been very supportive of my efforts. Paul J. Lucas - For the original idea of treating the query object like a stream. Scott Barron - For helping me with the shared libraries. Jools Enticknap - For giving me the Template Queries idea. M. S. Sriram - For a detailed dission of how the Template Queries should be implemented, the suggestion to throw exceptions on bad queries, and the idea of having a back-end independent query object (ie SQLQuery). Sinisa Milivojevic - For becoming the new offical maintainer. D. Hawkins and E. Loic for their autoconf + automake contribution. See the ChangeLog.md file for further credits and details about the differences between the many versions of this library. Please do not email any of these people with general questions about MySQL++. All of us who are still active in MySQL++ development read the mailing list, so questions sent there do get to us: http://lists.mysql.com/plusplus The mailing list is superior to private email because the answers are archived for future questioners to find, and because you are likely to get answers from more people. mysql++-3.3.0/README.md000644 000765 000024 00000012362 14042362131 015072 0ustar00tangentstaff000000 000000 # What It Is MySQL++ is a C++ wrapper for the MySQL and MariaDB C APIs. It is built on the same principles as the Standard C++ Library to make dealing with the database as easy as dealing with `std` containers. MySQL++ also provides facilities that let you avoid the most repetitive sorts of SQL within your own code, providing native C++ interfaces for these common tasks. MySQL++’s development home is its [Fossil repository][home]. You may be reading this via its read-only [GitHub mirror][ghm], intended for use by automation tooling based on Git. Checkins to the Fossil repository get pushed into the GitHub mirror within an hour. [ghm]: https://github.com/tangentsoft/mysqlpp [home]: https://tangentsoft.com/mysqlpp/ # Prerequisites To build MySQL++, you must have the MySQL/MariaDB C API development files installed. On Unixy systems — Linux, macOS, Cygwin, \*BSD, Solaris... — you are most likely using a binary MySQL/MariaDB package where the server, client, and development pieces are packaged separately. The package containing the development files is typically called something like `MySQL-devel`, `libmysqlclient-dev`, etc. If you're building on Windows with Visual C++ or MinGW, you need to install the native Windows port of MySQL or MariaDB. That includes the development files in the installer, but depending on how it was built, those files might not be installed by default. You might have to select a “complete†or “custom†install to get what you need to build MySQL++ against that version of MySQL/MariaDB. Another common pitfall is that the Windows installers install MySQL/MariaDB to a path with the version number embedded, which means we cannot ship a single set of build system files that works with all versions. We simply point at the General Availability version of MySQL/MariaDB at the time of release, which may well be different from the version installed on your computer. You will have to adjust the link and include file paths in the build system files accordingly. # Additional Things to Read Each major platform we support has a dedicated `README-*.txt` file for it containing information specific to that platform. Please read it. For authorship information, see [the CREDITS.txt file][f1]. For license information, see [the COPYING.txt file][f2]. If you want to change MySQL++ itself, see [the HACKERS.md file][f3]. If you want to change the MySQL++ user manual, also read [the user manual’s README][umr]. If you want to change the MySQL++ reference manual, see [the Doxygen manual][dgm]. You should have received a user manual and a reference manual with MySQL++. If not, you can read a recent version [online][docs]. Search the MySQL++ [mailing list archives][ml] and [its forum][for] if you have more questions. [dgm]: https://www.doxygen.nl/manual/ [docs]: https://tangentsoft.com/mysqlpp/doc/ [f1]: https://tangentsoft.com/mysqlpp/doc/trunk/CREDITS.txt [f2]: https://tangentsoft.com/mysqlpp/doc/trunk/COPYING.txt [f3]: https://tangentsoft.com/mysqlpp/doc/trunk/HACKERS.md [for]: https://tangentsoft.com/mysqlpp/froum/ [ml]: http://lists.mysql.com/plusplus/ [umr]: https://tangentsoft.com/mysqlpp/doc/trunk/doc/userman/README.md # Building the Library MySQL++ uses [Bakefile](http://bakefile.org/) to generate platform-specific project files and makefiles from a single set of input files. We currently support these build systems: * **autoconf:** Use this method for most Unix type platforms along with [the generic instructions][unix]. We have supplemental information for [Linux][linux], [macOS][macos], [Cygwin][cyg], and [Solaris][sol]. * **MinGW:** We ship `Makefile.mingw` for MinGW. See [its README][mingw] for details. * **Visual C++:** We ship Visual Studio 2003, 2005, and 2008 project files. Newer versions of Visual C++ can upgrade these automatically, though the result sometimes requires manual adjustment. No older version of Visual C++ will build MySQL++, due to compiler limitations. See [its README][vcpp] for more details. * **Xcode:** We ship an Xcode project file, but it hasn't been well tested, since the autoconf method works just fine on macOS. [cyg]: https://tangentsoft.com/mysqlpp/doc/trunk/README-Cygwin.txt [linux]: https://tangentsoft.com/mysqlpp/doc/trunk/README-Linux.txt [macos]: https://tangentsoft.com/mysqlpp/doc/trunk/README-Mac-OS-X.txt [mingw]: https://tangentsoft.com/mysqlpp/doc/trunk/README-MinGW.txt [sol]: https://tangentsoft.com/mysqlpp/doc/trunk/README-Solaris.txt [unix]: https://tangentsoft.com/mysqlpp/doc/trunk/README-Unix.txt [vcpp]: https://tangentsoft.com/mysqlpp/doc/trunk/README-Visual-C%2B%2B.txt # Unsupported C++ Compilers and Operating Systems If you get MySQL++ to build under an operating system or with a C++ compiler not listed above, we’re likely to accept a patch for it. See [the HACKERS file][f3] for guidance. # Example Programs You may want to try out the programs in the examples subdirectory to ensure that the MySQL++ API and your MySQL database are both working properly. Also, [these examples][exr] give many examples of the proper use of MySQL++. [exr]: /doc/trunk/README-examples.txt mysql++-3.3.0/.bakefile_gen.state000644 000765 000024 00000064644 14042362135 017344 0ustar00tangentstaff000000 000000 K.}q((U8/usr/local/src/mysqlpp/release/mysql++-3.3.0/mysql++.bklU msvs2008prjt(cdependencies DepsRecord qo}q(Uoutputsq]q((UK/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_excommon.vcprojUreplaceqtq(UK/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_test_uds.vcprojhtq(UJ/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_tquery3.vcprojhtq (UQ/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_test_sqlstream.vcprojhtq (UN/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_test_string.vcprojhtq (UT/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_test_insertpolicy.vcprojhtq (UP/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_test_inttypes.vcprojhtq (UJ/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_resetdb.vcprojhtq(UN/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_test_ssqls2.vcprojhtq(UK/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_deadlock.vcprojhtq(UK/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_test_wnp.vcprojhtq(UK/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_cgi_jpeg.vcprojhtq(UM/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_test_cpool.vcprojhtq(UL/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_load_jpeg.vcprojhtq(UI/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_ssqls4.vcprojhtq(UI/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_ssqls6.vcprojhtq(UW/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_test_null_comparison.vcprojhtq(UI/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_ssqls1.vcprojhtq(UO/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_test_qstream.vcprojhtq(UJ/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_mysqlpp.vcprojhtq(UJ/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_simple2.vcprojhtq(UR/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_test_query_copy.vcprojhtq(UI/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_ssqls3.vcprojhtq(UH/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_cpool.vcprojhtq(UL/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_ssqlsxlat.vcprojhtq(UK/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_store_if.vcprojhtq (UI/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_dbinfo.vcprojhtq!(UJ/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_tquery1.vcprojhtq"(UI/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_ssqls2.vcprojhtq#(UP/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_test_datetime.vcprojhtq$(UK/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_test_tcp.vcprojhtq%(UN/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_ssqls2parse.vcprojhtq&(UN/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_test_qssqls.vcprojhtq'(UN/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_transaction.vcprojhtq((U?/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++.slnhtq)(UK/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_fieldinf.vcprojhtq*(UM/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_multiquery.vcprojhtq+(UK/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_for_each.vcprojhtq,(UJ/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_simple3.vcprojhtq-(US/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_test_array_index.vcprojhtq.(UM/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_test_manip.vcprojhtq/(UJ/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_tquery2.vcprojhtq0(UJ/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_tquery4.vcprojhtq1(UJ/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_simple1.vcprojhtq2(UI/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2008/mysql++_ssqls5.vcprojhtq3eUdepsq4]q5((cdependencies FileDep q6oq7}q8Ufilenameq9U*/usr/local/share/bakefile/rules/common.bklsb(h6oq:}q;h9U+/usr/local/share/bakefile/rules/version.bklsb(h6oq<}q=h9U(/usr/local/share/bakefile/rules/dirs.bklsb(h6oq>}q?h9U3/usr/local/share/bakefile/rules/format_features.bklsb(h6oq@}qAh9U//usr/local/share/bakefile/rules/msvs2008prj.bklsb(h6oqB}qCh9U//usr/local/share/bakefile/rules/msvs2005prj.bklsb(h6oqD}qEh9U//usr/local/share/bakefile/rules/msvs200xprj.bklsb(h6oqF}qGh9U:/usr/local/share/bakefile/rules/msvc_prj_vcproj_common.bklsb(h6oqH}qIh9U3/usr/local/share/bakefile/rules/msvc_prj_common.bklsb(h6oqJ}qKh9U)/usr/local/share/bakefile/rules/win32.bklsb(h6oqL}qMh9U5/usr/local/share/bakefile/rules/modules/datafiles.bklsb(h6oqN}qOh9U,/usr/local/share/bakefile/presets/simple.bklsb(h6oqP}qQh9U//usr/local/share/bakefile/output/msvs200xprj.pysbeub(U8/usr/local/src/mysqlpp/release/mysql++-3.3.0/mysql++.bklU msvs2003prjt(ho}qR(h]qS((US/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_test_array_index.vcprojUreplaceqTtqU(UK/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_test_uds.vcprojhTtqV(UJ/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_simple1.vcprojhTtqW(UI/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_dbinfo.vcprojhTtqX(UP/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_test_datetime.vcprojhTtqY(UM/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_test_cpool.vcprojhTtqZ(UM/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_test_manip.vcprojhTtq[(UH/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_cpool.vcprojhTtq\(UJ/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_simple2.vcprojhTtq](U?/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++.slnhTtq^(UK/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_test_tcp.vcprojhTtq_(UM/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_multiquery.vcprojhTtq`(UJ/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_tquery1.vcprojhTtqa(UK/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_deadlock.vcprojhTtqb(UJ/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_tquery3.vcprojhTtqc(UQ/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_test_sqlstream.vcprojhTtqd(UN/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_test_ssqls2.vcprojhTtqe(UL/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_load_jpeg.vcprojhTtqf(UK/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_test_wnp.vcprojhTtqg(UR/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_test_query_copy.vcprojhTtqh(UL/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_ssqlsxlat.vcprojhTtqi(UJ/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_simple3.vcprojhTtqj(UK/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_fieldinf.vcprojhTtqk(UJ/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_mysqlpp.vcprojhTtql(UJ/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_tquery4.vcprojhTtqm(UO/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_test_qstream.vcprojhTtqn(UP/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_test_inttypes.vcprojhTtqo(UJ/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_resetdb.vcprojhTtqp(UJ/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_tquery2.vcprojhTtqq(UN/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_ssqls2parse.vcprojhTtqr(UT/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_test_insertpolicy.vcprojhTtqs(UK/usr/local/src/mysqlpp/release/mysql++-3.3.0/vc2003/mysql++_excommon.vcprojhTtqteh4]qu((h6oqv}qwh9U*/usr/local/share/bakefile/rules/common.bklsb(h6oqx}qyh9U+/usr/local/share/bakefile/rules/version.bklsb(h6oqz}q{h9U(/usr/local/share/bakefile/rules/dirs.bklsb(h6oq|}q}h9U3/usr/local/share/bakefile/rules/format_features.bklsb(h6oq~}qh9U//usr/local/share/bakefile/rules/msvs2003prj.bklsb(h6oq€}qh9U//usr/local/share/bakefile/rules/msvs200xprj.bklsb(h6oq‚}qƒh9U:/usr/local/share/bakefile/rules/msvc_prj_vcproj_common.bklsb(h6oq„}q…h9U3/usr/local/share/bakefile/rules/msvc_prj_common.bklsb(h6oq†}q‡h9U)/usr/local/share/bakefile/rules/win32.bklsb(h6oqˆ}q‰h9U5/usr/local/share/bakefile/rules/modules/datafiles.bklsb(h6oqŠ}q‹h9U,/usr/local/share/bakefile/presets/simple.bklsb(h6oqŒ}qh9U//usr/local/share/bakefile/output/msvs200xprj.pysbeub(U8/usr/local/src/mysqlpp/release/mysql++-3.3.0/mysql++.bklUautoconft(ho}qŽ(h]q((U8/usr/local/src/mysqlpp/release/mysql++-3.3.0/Makefile.inUreplacetq(U/usr/local/src/mysqlpp/release/mysql++-3.3.0/mysql++.xcodeprojqas.mysql++-3.3.0/bk-deps000755 000765 000024 00000004730 14042362152 015071 0ustar00tangentstaff000000 000000 #!/bin/sh # This script is part of Bakefile (http://www.bakefile.org) autoconf # script. It is used to track C/C++ files dependencies in portable way. # # Permission is given to use this file in any way. DEPSMODE=gcc DEPSFLAG="-MMD" DEPSDIRBASE=.deps if test $DEPSMODE = gcc ; then $* ${DEPSFLAG} status=$? # determine location of created files: while test $# -gt 0; do case "$1" in -o ) shift objfile=$1 ;; -* ) ;; * ) srcfile=$1 ;; esac shift done objfilebase=`basename $objfile` builddir=`dirname $objfile` depfile=`basename $srcfile | sed -e 's/\..*$/.d/g'` depobjname=`echo $depfile |sed -e 's/\.d/.o/g'` depsdir=$builddir/$DEPSDIRBASE mkdir -p $depsdir # if the compiler failed, we're done: if test ${status} != 0 ; then rm -f $depfile exit ${status} fi # move created file to the location we want it in: if test -f $depfile ; then sed -e "s,$depobjname:,$objfile:,g" $depfile >${depsdir}/${objfilebase}.d rm -f $depfile else # "g++ -MMD -o fooobj.o foosrc.cpp" produces fooobj.d depfile=`echo "$objfile" | sed -e 's/\..*$/.d/g'` if test ! -f $depfile ; then # "cxx -MD -o fooobj.o foosrc.cpp" creates fooobj.o.d (Compaq C++) depfile="$objfile.d" fi if test -f $depfile ; then sed -e "\,^$objfile,!s,$depobjname:,$objfile:,g" $depfile >${depsdir}/${objfilebase}.d rm -f $depfile fi fi exit 0 elif test $DEPSMODE = unixcc; then $* || exit $? # Run compiler again with deps flag and redirect into the dep file. # It doesn't work if the '-o FILE' option is used, but without it the # dependency file will contain the wrong name for the object. So it is # removed from the command line, and the dep file is fixed with sed. cmd="" while test $# -gt 0; do case "$1" in -o ) shift objfile=$1 ;; * ) eval arg$#=\$1 cmd="$cmd \$arg$#" ;; esac shift done objfilebase=`basename $objfile` builddir=`dirname $objfile` depsdir=$builddir/$DEPSDIRBASE mkdir -p $depsdir eval "$cmd $DEPSFLAG" | sed "s|.*:|$objfile:|" >${depsdir}/${objfilebase}.d exit 0 else $* exit $? fi mysql++-3.3.0/mysql++.xcodeproj/000755 000765 000024 00000000000 14042362131 017076 5ustar00tangentstaff000000 000000 mysql++-3.3.0/dtest000755 000765 000024 00000004675 14042362131 014674 0ustar00tangentstaff000000 000000 #!/bin/bash TMP=`mktemp bmXXXXXX` # Run simple unit tests first. typeset -i count=0 echo -n 'Running unit tests:' for t in test_* do if [ -x "$t" ] then errmsg=`./exrun "$t" 2>&1` errno=$? if [ "$errno" = 0 ] then count=count+1 else rm -f $TMP echo " $t FAILED ($errno)" echo echo "$errmsg" exit $? fi fi done echo " $count tests succeeded" echo 'All unit tests passed' >> $TMP # Assume AUTO_INCREMENT id column in images table will get 1 in # load_jpeg call below, since we reset the DB before doing it. export QUERY_STRING=id=1 # Now run examples to test high-level behavior. The repeated use of # resetdb is intentional! It's run after each example that changes # the database in a way that will cause a subsequent example to fail # because data it expects isn't present. echo -n 'Running examples:' for t in \ resetdb simple[0-9] store_if for_each multiquery tquery1 \ resetdb tquery[2-9] \ resetdb ssqls[0-9] \ load_jpeg cgi_jpeg do if [ -x $t ] then if [ "$t" = "resetdb" ] then echo echo -n " " fi echo -n "$t " echo "---------------- BEGIN $t OUTPUT ----------------" >> $TMP if ! ./exrun $t -D $* >> $TMP then echo echo 'TESTING ABORTED.' rm -f $TMP exit $? fi echo "================ END $t OUTPUT ================" >> $TMP echo >> $TMP fi done echo # Test ssqlsxlat -o. Note that it suppresses stdout but keeps stderr # so warnings about directives and line elements it doesn't understand # aren't suppressed. We run the first pass's output back through # ssqlsxlat to deal with comments, whitespace differences, line element # ordering, boolean value and type canonicalization, and other niggly # differences we really don't care about. diff -w isn't enough. for f in {examples,test}/*.ssqls do echo -n "Testing ssqlsxlat -i $f -o..." echo "--- BEGIN ssqlsxlat -i $f -o ERROR OUTPUT ---" >> $TMP pass1=/tmp/dtest-ssxgv2-pass1-$bnf pass2=/tmp/dtest-ssxgv2-pass2-$bnf echo -n "pass 1" ./exrun ssqlsxlat -i $f -o $pass1 > /dev/null 2>> $TMP echo -n ", pass 2" ./exrun ssqlsxlat -i $pass1 -o $pass2 > /dev/null 2>> $TMP echo -n ", diff" diff $pass1 $pass2 > /dev/null >> $TMP echo "==== END ssqlsxlat -i $f -o ERROR OUTPUT ====" >> $TMP echo done # Check for any changes BFILE=bmark.txt if [ -f $BFILE ] then if diff -u -w $BFILE $TMP then echo echo 'All tests passed.' fi rm -f $TMP else mv $TMP $BFILE chmod -w $BFILE echo echo 'BENCHMARK FILE REGENERATED.' echo fi mysql++-3.3.0/Makefile.simple000644 000765 000024 00000051203 14042362131 016540 0ustar00tangentstaff000000 000000 # ========================================================================= # This makefile was generated by # Bakefile 0.2.11 (http://www.bakefile.org) # Do not modify, all changes will be overwritten! # ========================================================================= # ------------------------------------------------------------------------- # These are configurable options: # ------------------------------------------------------------------------- # AR ?= ar # RANLIB ?= ranlib # C++ compiler CXX = g++ # Standard flags for C++ CXXFLAGS ?= # Standard preprocessor flags (common for CC and CXX) CPPFLAGS ?= # Standard linker flags LDFLAGS ?= # Type of compiled binaries [debug,release] BUILD ?= debug # ------------------------------------------------------------------------- # Do not modify the rest of this file! # ------------------------------------------------------------------------- ### Variables: ### CPPDEPS = -MT$@ -MF`echo $@ | sed -e 's,\.o$$,.d,'` -MD -MP TEST_ARRAY_INDEX_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib \ -I@MYSQL_C_INC_DIR@ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) \ $(CXXFLAGS) TEST_ARRAY_INDEX_OBJECTS = \ test_array_index_array_index.o TEST_CPOOL_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib \ -I@MYSQL_C_INC_DIR@ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) \ $(CXXFLAGS) TEST_CPOOL_OBJECTS = \ test_cpool_cpool.o TEST_DATETIME_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib \ -I@MYSQL_C_INC_DIR@ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) \ $(CXXFLAGS) TEST_DATETIME_OBJECTS = \ test_datetime_datetime.o TEST_INTTYPES_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib \ -I@MYSQL_C_INC_DIR@ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) \ $(CXXFLAGS) TEST_INTTYPES_OBJECTS = \ test_inttypes_inttypes.o TEST_INSERTPOLICY_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib \ -I@MYSQL_C_INC_DIR@ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) \ $(CXXFLAGS) TEST_INSERTPOLICY_OBJECTS = \ test_insertpolicy_insertpolicy.o TEST_MANIP_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib \ -I@MYSQL_C_INC_DIR@ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) \ $(CXXFLAGS) TEST_MANIP_OBJECTS = \ test_manip_manip.o TEST_NULL_COMPARISON_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib \ -I@MYSQL_C_INC_DIR@ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) \ $(CXXFLAGS) TEST_NULL_COMPARISON_OBJECTS = \ test_null_comparison_null_comparison.o TEST_QUERY_COPY_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib \ -I@MYSQL_C_INC_DIR@ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) \ $(CXXFLAGS) TEST_QUERY_COPY_OBJECTS = \ test_query_copy_query_copy.o TEST_QSSQLS_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib \ -I@MYSQL_C_INC_DIR@ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) \ $(CXXFLAGS) TEST_QSSQLS_OBJECTS = \ test_qssqls_qssqls.o TEST_QSTREAM_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib \ -I@MYSQL_C_INC_DIR@ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) \ $(CXXFLAGS) TEST_QSTREAM_OBJECTS = \ test_qstream_qstream.o TEST_SQLSTREAM_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib \ -I@MYSQL_C_INC_DIR@ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) \ $(CXXFLAGS) TEST_SQLSTREAM_OBJECTS = \ test_sqlstream_sqlstream.o TEST_STRING_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib \ -I@MYSQL_C_INC_DIR@ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) \ $(CXXFLAGS) TEST_STRING_OBJECTS = \ test_string_string.o TEST_TCP_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) TEST_TCP_OBJECTS = \ test_tcp_tcp.o TEST_UDS_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) TEST_UDS_OBJECTS = \ test_uds_uds.o TEST_WNP_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) TEST_WNP_OBJECTS = \ test_wnp_wnp.o EXCOMMON_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) EXCOMMON_OBJECTS = \ excommon_printdata.o CGI_JPEG_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) CGI_JPEG_OBJECTS = \ cgi_jpeg_cgi_jpeg.o CPOOL_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) CPOOL_OBJECTS = \ cpool_cpool.o DBINFO_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) DBINFO_OBJECTS = \ dbinfo_dbinfo.o DEADLOCK_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) DEADLOCK_OBJECTS = \ deadlock_deadlock.o FIELDINF_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) FIELDINF_OBJECTS = \ fieldinf_fieldinf.o FOR_EACH_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) FOR_EACH_OBJECTS = \ for_each_for_each.o LOAD_JPEG_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib \ -I@MYSQL_C_INC_DIR@ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) \ $(CXXFLAGS) LOAD_JPEG_OBJECTS = \ load_jpeg_load_jpeg.o MULTIQUERY_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib \ -I@MYSQL_C_INC_DIR@ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) \ $(CXXFLAGS) MULTIQUERY_OBJECTS = \ multiquery_multiquery.o RESETDB_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) RESETDB_OBJECTS = \ resetdb_resetdb.o SIMPLE1_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) SIMPLE1_OBJECTS = \ simple1_simple1.o SIMPLE2_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) SIMPLE2_OBJECTS = \ simple2_simple2.o SIMPLE3_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) SIMPLE3_OBJECTS = \ simple3_simple3.o SSQLS1_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) SSQLS1_OBJECTS = \ ssqls1_ssqls1.o SSQLS2_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) SSQLS2_OBJECTS = \ ssqls2_ssqls2.o SSQLS3_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) SSQLS3_OBJECTS = \ ssqls3_ssqls3.o SSQLS4_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) SSQLS4_OBJECTS = \ ssqls4_ssqls4.o SSQLS5_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) SSQLS5_OBJECTS = \ ssqls5_ssqls5.o SSQLS6_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) SSQLS6_OBJECTS = \ ssqls6_ssqls6.o STORE_IF_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) STORE_IF_OBJECTS = \ store_if_store_if.o TQUERY1_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) TQUERY1_OBJECTS = \ tquery1_tquery1.o TQUERY2_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) TQUERY2_OBJECTS = \ tquery2_tquery2.o TQUERY3_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) TQUERY3_OBJECTS = \ tquery3_tquery3.o TQUERY4_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib -I@MYSQL_C_INC_DIR@ \ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) $(CXXFLAGS) TQUERY4_OBJECTS = \ tquery4_tquery4.o TRANSACTION_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZE_FLAG) -Ilib \ -I@MYSQL_C_INC_DIR@ -I/usr/include/mysql -I/usr/include/mysql++ $(CPPFLAGS) \ $(CXXFLAGS) TRANSACTION_OBJECTS = \ transaction_transaction.o ### Conditionally set variables: ### ifeq ($(BUILD),debug) __OPTIMIZE_FLAG = -O0 endif ifeq ($(BUILD),release) __OPTIMIZE_FLAG = -O2 endif ifeq ($(BUILD),debug) __DEBUGINFO = -g endif ifeq ($(BUILD),release) __DEBUGINFO = endif ### Targets: ### all: test_array_index test_cpool test_datetime test_inttypes test_insertpolicy test_manip test_null_comparison test_query_copy test_qssqls test_qstream test_sqlstream test_string test_tcp test_uds test_wnp libmysqlpp_excommon.a cgi_jpeg cpool dbinfo deadlock fieldinf for_each load_jpeg multiquery resetdb simple1 simple2 simple3 ssqls1 ssqls2 ssqls3 ssqls4 ssqls5 ssqls6 store_if tquery1 tquery2 tquery3 tquery4 transaction install: uninstall: clean: rm -f ./*.o rm -f ./*.d rm -f test_array_index rm -f test_cpool rm -f test_datetime rm -f test_inttypes rm -f test_insertpolicy rm -f test_manip rm -f test_null_comparison rm -f test_query_copy rm -f test_qssqls rm -f test_qstream rm -f test_sqlstream rm -f test_string rm -f test_tcp rm -f test_uds rm -f test_wnp rm -f libmysqlpp_excommon.a rm -f cgi_jpeg rm -f cpool rm -f dbinfo rm -f deadlock rm -f fieldinf rm -f for_each rm -f load_jpeg rm -f multiquery rm -f resetdb rm -f simple1 rm -f simple2 rm -f simple3 rm -f ssqls1 rm -f ssqls2 rm -f ssqls3 rm -f ssqls4 rm -f ssqls5 rm -f ssqls6 rm -f store_if rm -f tquery1 rm -f tquery2 rm -f tquery3 rm -f tquery4 rm -f transaction test_array_index: $(TEST_ARRAY_INDEX_OBJECTS) $(CXX) -o $@ $(TEST_ARRAY_INDEX_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp -lmysqlclient test_cpool: $(TEST_CPOOL_OBJECTS) $(CXX) -o $@ $(TEST_CPOOL_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp -lmysqlclient test_datetime: $(TEST_DATETIME_OBJECTS) $(CXX) -o $@ $(TEST_DATETIME_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp -lmysqlclient test_inttypes: $(TEST_INTTYPES_OBJECTS) $(CXX) -o $@ $(TEST_INTTYPES_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp -lmysqlclient test_insertpolicy: $(TEST_INSERTPOLICY_OBJECTS) $(CXX) -o $@ $(TEST_INSERTPOLICY_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp -lmysqlclient test_manip: $(TEST_MANIP_OBJECTS) $(CXX) -o $@ $(TEST_MANIP_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp -lmysqlclient test_null_comparison: $(TEST_NULL_COMPARISON_OBJECTS) $(CXX) -o $@ $(TEST_NULL_COMPARISON_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp -lmysqlclient test_query_copy: $(TEST_QUERY_COPY_OBJECTS) $(CXX) -o $@ $(TEST_QUERY_COPY_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp -lmysqlclient test_qssqls: $(TEST_QSSQLS_OBJECTS) $(CXX) -o $@ $(TEST_QSSQLS_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp -lmysqlclient test_qstream: $(TEST_QSTREAM_OBJECTS) $(CXX) -o $@ $(TEST_QSTREAM_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp -lmysqlclient test_sqlstream: $(TEST_SQLSTREAM_OBJECTS) $(CXX) -o $@ $(TEST_SQLSTREAM_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp -lmysqlclient test_string: $(TEST_STRING_OBJECTS) $(CXX) -o $@ $(TEST_STRING_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp -lmysqlclient test_tcp: $(TEST_TCP_OBJECTS) $(CXX) -o $@ $(TEST_TCP_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp -lmysqlclient test_uds: $(TEST_UDS_OBJECTS) $(CXX) -o $@ $(TEST_UDS_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp -lmysqlclient test_wnp: $(TEST_WNP_OBJECTS) $(CXX) -o $@ $(TEST_WNP_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp -lmysqlclient libmysqlpp_excommon.a: $(EXCOMMON_OBJECTS) rm -f $@ $(AR) rcu $@ $(EXCOMMON_OBJECTS) $(RANLIB) $@ cgi_jpeg: $(CGI_JPEG_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(CGI_JPEG_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient cpool: $(CPOOL_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(CPOOL_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient dbinfo: $(DBINFO_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(DBINFO_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient deadlock: $(DEADLOCK_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(DEADLOCK_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient fieldinf: $(FIELDINF_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(FIELDINF_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient for_each: $(FOR_EACH_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(FOR_EACH_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient load_jpeg: $(LOAD_JPEG_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(LOAD_JPEG_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient multiquery: $(MULTIQUERY_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(MULTIQUERY_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient resetdb: $(RESETDB_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(RESETDB_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient simple1: $(SIMPLE1_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(SIMPLE1_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient simple2: $(SIMPLE2_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(SIMPLE2_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient simple3: $(SIMPLE3_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(SIMPLE3_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient ssqls1: $(SSQLS1_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(SSQLS1_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient ssqls2: $(SSQLS2_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(SSQLS2_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient ssqls3: $(SSQLS3_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(SSQLS3_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient ssqls4: $(SSQLS4_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(SSQLS4_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient ssqls5: $(SSQLS5_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(SSQLS5_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient ssqls6: $(SSQLS6_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(SSQLS6_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient store_if: $(STORE_IF_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(STORE_IF_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient tquery1: $(TQUERY1_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(TQUERY1_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient tquery2: $(TQUERY2_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(TQUERY2_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient tquery3: $(TQUERY3_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(TQUERY3_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient tquery4: $(TQUERY4_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(TQUERY4_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient transaction: $(TRANSACTION_OBJECTS) libmysqlpp_excommon.a $(CXX) -o $@ $(TRANSACTION_OBJECTS) $(__DEBUGINFO) -L. -L@MYSQL_C_LIB_DIR@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp -lmysqlclient test_array_index_array_index.o: ./test/array_index.cpp $(CXX) -c -o $@ $(TEST_ARRAY_INDEX_CXXFLAGS) $(CPPDEPS) $< test_cpool_cpool.o: ./test/cpool.cpp $(CXX) -c -o $@ $(TEST_CPOOL_CXXFLAGS) $(CPPDEPS) $< test_datetime_datetime.o: ./test/datetime.cpp $(CXX) -c -o $@ $(TEST_DATETIME_CXXFLAGS) $(CPPDEPS) $< test_inttypes_inttypes.o: ./test/inttypes.cpp $(CXX) -c -o $@ $(TEST_INTTYPES_CXXFLAGS) $(CPPDEPS) $< test_insertpolicy_insertpolicy.o: ./test/insertpolicy.cpp $(CXX) -c -o $@ $(TEST_INSERTPOLICY_CXXFLAGS) $(CPPDEPS) $< test_manip_manip.o: ./test/manip.cpp $(CXX) -c -o $@ $(TEST_MANIP_CXXFLAGS) $(CPPDEPS) $< test_null_comparison_null_comparison.o: ./test/null_comparison.cpp $(CXX) -c -o $@ $(TEST_NULL_COMPARISON_CXXFLAGS) $(CPPDEPS) $< test_query_copy_query_copy.o: ./test/query_copy.cpp $(CXX) -c -o $@ $(TEST_QUERY_COPY_CXXFLAGS) $(CPPDEPS) $< test_qssqls_qssqls.o: ./test/qssqls.cpp $(CXX) -c -o $@ $(TEST_QSSQLS_CXXFLAGS) $(CPPDEPS) $< test_qstream_qstream.o: ./test/qstream.cpp $(CXX) -c -o $@ $(TEST_QSTREAM_CXXFLAGS) $(CPPDEPS) $< test_sqlstream_sqlstream.o: ./test/sqlstream.cpp $(CXX) -c -o $@ $(TEST_SQLSTREAM_CXXFLAGS) $(CPPDEPS) $< test_string_string.o: ./test/string.cpp $(CXX) -c -o $@ $(TEST_STRING_CXXFLAGS) $(CPPDEPS) $< test_tcp_tcp.o: ./test/tcp.cpp $(CXX) -c -o $@ $(TEST_TCP_CXXFLAGS) $(CPPDEPS) $< test_uds_uds.o: ./test/uds.cpp $(CXX) -c -o $@ $(TEST_UDS_CXXFLAGS) $(CPPDEPS) $< test_wnp_wnp.o: ./test/wnp.cpp $(CXX) -c -o $@ $(TEST_WNP_CXXFLAGS) $(CPPDEPS) $< excommon_printdata.o: ./examples/printdata.cpp $(CXX) -c -o $@ $(EXCOMMON_CXXFLAGS) $(CPPDEPS) $< cgi_jpeg_cgi_jpeg.o: ./examples/cgi_jpeg.cpp $(CXX) -c -o $@ $(CGI_JPEG_CXXFLAGS) $(CPPDEPS) $< cpool_cpool.o: ./examples/cpool.cpp $(CXX) -c -o $@ $(CPOOL_CXXFLAGS) $(CPPDEPS) $< dbinfo_dbinfo.o: ./examples/dbinfo.cpp $(CXX) -c -o $@ $(DBINFO_CXXFLAGS) $(CPPDEPS) $< deadlock_deadlock.o: ./examples/deadlock.cpp $(CXX) -c -o $@ $(DEADLOCK_CXXFLAGS) $(CPPDEPS) $< fieldinf_fieldinf.o: ./examples/fieldinf.cpp $(CXX) -c -o $@ $(FIELDINF_CXXFLAGS) $(CPPDEPS) $< for_each_for_each.o: ./examples/for_each.cpp $(CXX) -c -o $@ $(FOR_EACH_CXXFLAGS) $(CPPDEPS) $< load_jpeg_load_jpeg.o: ./examples/load_jpeg.cpp $(CXX) -c -o $@ $(LOAD_JPEG_CXXFLAGS) $(CPPDEPS) $< multiquery_multiquery.o: ./examples/multiquery.cpp $(CXX) -c -o $@ $(MULTIQUERY_CXXFLAGS) $(CPPDEPS) $< resetdb_resetdb.o: ./examples/resetdb.cpp $(CXX) -c -o $@ $(RESETDB_CXXFLAGS) $(CPPDEPS) $< simple1_simple1.o: ./examples/simple1.cpp $(CXX) -c -o $@ $(SIMPLE1_CXXFLAGS) $(CPPDEPS) $< simple2_simple2.o: ./examples/simple2.cpp $(CXX) -c -o $@ $(SIMPLE2_CXXFLAGS) $(CPPDEPS) $< simple3_simple3.o: ./examples/simple3.cpp $(CXX) -c -o $@ $(SIMPLE3_CXXFLAGS) $(CPPDEPS) $< ssqls1_ssqls1.o: ./examples/ssqls1.cpp $(CXX) -c -o $@ $(SSQLS1_CXXFLAGS) $(CPPDEPS) $< ssqls2_ssqls2.o: ./examples/ssqls2.cpp $(CXX) -c -o $@ $(SSQLS2_CXXFLAGS) $(CPPDEPS) $< ssqls3_ssqls3.o: ./examples/ssqls3.cpp $(CXX) -c -o $@ $(SSQLS3_CXXFLAGS) $(CPPDEPS) $< ssqls4_ssqls4.o: ./examples/ssqls4.cpp $(CXX) -c -o $@ $(SSQLS4_CXXFLAGS) $(CPPDEPS) $< ssqls5_ssqls5.o: ./examples/ssqls5.cpp $(CXX) -c -o $@ $(SSQLS5_CXXFLAGS) $(CPPDEPS) $< ssqls6_ssqls6.o: ./examples/ssqls6.cpp $(CXX) -c -o $@ $(SSQLS6_CXXFLAGS) $(CPPDEPS) $< store_if_store_if.o: ./examples/store_if.cpp $(CXX) -c -o $@ $(STORE_IF_CXXFLAGS) $(CPPDEPS) $< tquery1_tquery1.o: ./examples/tquery1.cpp $(CXX) -c -o $@ $(TQUERY1_CXXFLAGS) $(CPPDEPS) $< tquery2_tquery2.o: ./examples/tquery2.cpp $(CXX) -c -o $@ $(TQUERY2_CXXFLAGS) $(CPPDEPS) $< tquery3_tquery3.o: ./examples/tquery3.cpp $(CXX) -c -o $@ $(TQUERY3_CXXFLAGS) $(CPPDEPS) $< tquery4_tquery4.o: ./examples/tquery4.cpp $(CXX) -c -o $@ $(TQUERY4_CXXFLAGS) $(CPPDEPS) $< transaction_transaction.o: ./examples/transaction.cpp $(CXX) -c -o $@ $(TRANSACTION_CXXFLAGS) $(CPPDEPS) $< .PHONY: all install uninstall clean # Dependencies tracking: -include ./*.d mysql++-3.3.0/config.sub000755 000765 000024 00000102644 13755367766 015636 0ustar00tangentstaff000000 000000 #! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2020 Free Software Foundation, Inc. timestamp='2020-11-07' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=$(echo "$0" | sed -e 's,.*/,,') usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2020 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; *local*) # First pass through any local machine types. echo "$1" exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Split fields of configuration type # shellcheck disable=SC2162 IFS="-" read field1 field2 field3 field4 <&2 exit 1 ;; *-*-*-*) basic_machine=$field1-$field2 basic_os=$field3-$field4 ;; *-*-*) # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two # parts maybe_os=$field2-$field3 case $maybe_os in nto-qnx* | linux-* | uclinux-uclibc* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ | storm-chaos* | os2-emx* | rtmk-nova*) basic_machine=$field1 basic_os=$maybe_os ;; android-linux) basic_machine=$field1-unknown basic_os=linux-android ;; *) basic_machine=$field1-$field2 basic_os=$field3 ;; esac ;; *-*) # A lone config we happen to match not fitting any pattern case $field1-$field2 in decstation-3100) basic_machine=mips-dec basic_os= ;; *-*) # Second component is usually, but not always the OS case $field2 in # Prevent following clause from handling this valid os sun*os*) basic_machine=$field1 basic_os=$field2 ;; # Manufacturers dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ | unicom* | ibm* | next | hp | isi* | apollo | altos* \ | convergent* | ncr* | news | 32* | 3600* | 3100* \ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ | ultra | tti* | harris | dolphin | highlevel | gould \ | cbm | ns | masscomp | apple | axis | knuth | cray \ | microblaze* | sim | cisco \ | oki | wec | wrs | winbond) basic_machine=$field1-$field2 basic_os= ;; *) basic_machine=$field1 basic_os=$field2 ;; esac ;; esac ;; *) # Convert single-component short-hands not valid as part of # multi-component configurations. case $field1 in 386bsd) basic_machine=i386-pc basic_os=bsd ;; a29khif) basic_machine=a29k-amd basic_os=udi ;; adobe68k) basic_machine=m68010-adobe basic_os=scout ;; alliant) basic_machine=fx80-alliant basic_os= ;; altos | altos3068) basic_machine=m68k-altos basic_os= ;; am29k) basic_machine=a29k-none basic_os=bsd ;; amdahl) basic_machine=580-amdahl basic_os=sysv ;; amiga) basic_machine=m68k-unknown basic_os= ;; amigaos | amigados) basic_machine=m68k-unknown basic_os=amigaos ;; amigaunix | amix) basic_machine=m68k-unknown basic_os=sysv4 ;; apollo68) basic_machine=m68k-apollo basic_os=sysv ;; apollo68bsd) basic_machine=m68k-apollo basic_os=bsd ;; aros) basic_machine=i386-pc basic_os=aros ;; aux) basic_machine=m68k-apple basic_os=aux ;; balance) basic_machine=ns32k-sequent basic_os=dynix ;; blackfin) basic_machine=bfin-unknown basic_os=linux ;; cegcc) basic_machine=arm-unknown basic_os=cegcc ;; convex-c1) basic_machine=c1-convex basic_os=bsd ;; convex-c2) basic_machine=c2-convex basic_os=bsd ;; convex-c32) basic_machine=c32-convex basic_os=bsd ;; convex-c34) basic_machine=c34-convex basic_os=bsd ;; convex-c38) basic_machine=c38-convex basic_os=bsd ;; cray) basic_machine=j90-cray basic_os=unicos ;; crds | unos) basic_machine=m68k-crds basic_os= ;; da30) basic_machine=m68k-da30 basic_os= ;; decstation | pmax | pmin | dec3100 | decstatn) basic_machine=mips-dec basic_os= ;; delta88) basic_machine=m88k-motorola basic_os=sysv3 ;; dicos) basic_machine=i686-pc basic_os=dicos ;; djgpp) basic_machine=i586-pc basic_os=msdosdjgpp ;; ebmon29k) basic_machine=a29k-amd basic_os=ebmon ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson basic_os=ose ;; gmicro) basic_machine=tron-gmicro basic_os=sysv ;; go32) basic_machine=i386-pc basic_os=go32 ;; h8300hms) basic_machine=h8300-hitachi basic_os=hms ;; h8300xray) basic_machine=h8300-hitachi basic_os=xray ;; h8500hms) basic_machine=h8500-hitachi basic_os=hms ;; harris) basic_machine=m88k-harris basic_os=sysv3 ;; hp300 | hp300hpux) basic_machine=m68k-hp basic_os=hpux ;; hp300bsd) basic_machine=m68k-hp basic_os=bsd ;; hppaosf) basic_machine=hppa1.1-hp basic_os=osf ;; hppro) basic_machine=hppa1.1-hp basic_os=proelf ;; i386mach) basic_machine=i386-mach basic_os=mach ;; isi68 | isi) basic_machine=m68k-isi basic_os=sysv ;; m68knommu) basic_machine=m68k-unknown basic_os=linux ;; magnum | m3230) basic_machine=mips-mips basic_os=sysv ;; merlin) basic_machine=ns32k-utek basic_os=sysv ;; mingw64) basic_machine=x86_64-pc basic_os=mingw64 ;; mingw32) basic_machine=i686-pc basic_os=mingw32 ;; mingw32ce) basic_machine=arm-unknown basic_os=mingw32ce ;; monitor) basic_machine=m68k-rom68k basic_os=coff ;; morphos) basic_machine=powerpc-unknown basic_os=morphos ;; moxiebox) basic_machine=moxie-unknown basic_os=moxiebox ;; msdos) basic_machine=i386-pc basic_os=msdos ;; msys) basic_machine=i686-pc basic_os=msys ;; mvs) basic_machine=i370-ibm basic_os=mvs ;; nacl) basic_machine=le32-unknown basic_os=nacl ;; ncr3000) basic_machine=i486-ncr basic_os=sysv4 ;; netbsd386) basic_machine=i386-pc basic_os=netbsd ;; netwinder) basic_machine=armv4l-rebel basic_os=linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony basic_os=newsos ;; news1000) basic_machine=m68030-sony basic_os=newsos ;; necv70) basic_machine=v70-nec basic_os=sysv ;; nh3000) basic_machine=m68k-harris basic_os=cxux ;; nh[45]000) basic_machine=m88k-harris basic_os=cxux ;; nindy960) basic_machine=i960-intel basic_os=nindy ;; mon960) basic_machine=i960-intel basic_os=mon960 ;; nonstopux) basic_machine=mips-compaq basic_os=nonstopux ;; os400) basic_machine=powerpc-ibm basic_os=os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson basic_os=ose ;; os68k) basic_machine=m68k-none basic_os=os68k ;; paragon) basic_machine=i860-intel basic_os=osf ;; parisc) basic_machine=hppa-unknown basic_os=linux ;; psp) basic_machine=mipsallegrexel-sony basic_os=psp ;; pw32) basic_machine=i586-unknown basic_os=pw32 ;; rdos | rdos64) basic_machine=x86_64-pc basic_os=rdos ;; rdos32) basic_machine=i386-pc basic_os=rdos ;; rom68k) basic_machine=m68k-rom68k basic_os=coff ;; sa29200) basic_machine=a29k-amd basic_os=udi ;; sei) basic_machine=mips-sei basic_os=seiux ;; sequent) basic_machine=i386-sequent basic_os= ;; sps7) basic_machine=m68k-bull basic_os=sysv2 ;; st2000) basic_machine=m68k-tandem basic_os= ;; stratus) basic_machine=i860-stratus basic_os=sysv4 ;; sun2) basic_machine=m68000-sun basic_os= ;; sun2os3) basic_machine=m68000-sun basic_os=sunos3 ;; sun2os4) basic_machine=m68000-sun basic_os=sunos4 ;; sun3) basic_machine=m68k-sun basic_os= ;; sun3os3) basic_machine=m68k-sun basic_os=sunos3 ;; sun3os4) basic_machine=m68k-sun basic_os=sunos4 ;; sun4) basic_machine=sparc-sun basic_os= ;; sun4os3) basic_machine=sparc-sun basic_os=sunos3 ;; sun4os4) basic_machine=sparc-sun basic_os=sunos4 ;; sun4sol2) basic_machine=sparc-sun basic_os=solaris2 ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun basic_os= ;; sv1) basic_machine=sv1-cray basic_os=unicos ;; symmetry) basic_machine=i386-sequent basic_os=dynix ;; t3e) basic_machine=alphaev5-cray basic_os=unicos ;; t90) basic_machine=t90-cray basic_os=unicos ;; toad1) basic_machine=pdp10-xkl basic_os=tops20 ;; tpf) basic_machine=s390x-ibm basic_os=tpf ;; udi29k) basic_machine=a29k-amd basic_os=udi ;; ultra3) basic_machine=a29k-nyu basic_os=sym1 ;; v810 | necv810) basic_machine=v810-nec basic_os=none ;; vaxv) basic_machine=vax-dec basic_os=sysv ;; vms) basic_machine=vax-dec basic_os=vms ;; vsta) basic_machine=i386-pc basic_os=vsta ;; vxworks960) basic_machine=i960-wrs basic_os=vxworks ;; vxworks68) basic_machine=m68k-wrs basic_os=vxworks ;; vxworks29k) basic_machine=a29k-wrs basic_os=vxworks ;; xbox) basic_machine=i686-pc basic_os=mingw32 ;; ymp) basic_machine=ymp-cray basic_os=unicos ;; *) basic_machine=$1 basic_os= ;; esac ;; esac # Decode 1-component or ad-hoc basic machines case $basic_machine in # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) cpu=hppa1.1 vendor=winbond ;; op50n) cpu=hppa1.1 vendor=oki ;; op60c) cpu=hppa1.1 vendor=oki ;; ibm*) cpu=i370 vendor=ibm ;; orion105) cpu=clipper vendor=highlevel ;; mac | mpw | mac-mpw) cpu=m68k vendor=apple ;; pmac | pmac-mpw) cpu=powerpc vendor=apple ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) cpu=m68000 vendor=att ;; 3b*) cpu=we32k vendor=att ;; bluegene*) cpu=powerpc vendor=ibm basic_os=cnk ;; decsystem10* | dec10*) cpu=pdp10 vendor=dec basic_os=tops10 ;; decsystem20* | dec20*) cpu=pdp10 vendor=dec basic_os=tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) cpu=m68k vendor=motorola ;; dpx2*) cpu=m68k vendor=bull basic_os=sysv3 ;; encore | umax | mmax) cpu=ns32k vendor=encore ;; elxsi) cpu=elxsi vendor=elxsi basic_os=${basic_os:-bsd} ;; fx2800) cpu=i860 vendor=alliant ;; genix) cpu=ns32k vendor=ns ;; h3050r* | hiux*) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) cpu=m68000 vendor=hp ;; hp9k3[2-9][0-9]) cpu=m68k vendor=hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) cpu=hppa1.1 vendor=hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; i*86v32) cpu=$(echo "$1" | sed -e 's/86.*/86/') vendor=pc basic_os=sysv32 ;; i*86v4*) cpu=$(echo "$1" | sed -e 's/86.*/86/') vendor=pc basic_os=sysv4 ;; i*86v) cpu=$(echo "$1" | sed -e 's/86.*/86/') vendor=pc basic_os=sysv ;; i*86sol2) cpu=$(echo "$1" | sed -e 's/86.*/86/') vendor=pc basic_os=solaris2 ;; j90 | j90-cray) cpu=j90 vendor=cray basic_os=${basic_os:-unicos} ;; iris | iris4d) cpu=mips vendor=sgi case $basic_os in irix*) ;; *) basic_os=irix4 ;; esac ;; miniframe) cpu=m68000 vendor=convergent ;; *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) cpu=m68k vendor=atari basic_os=mint ;; news-3600 | risc-news) cpu=mips vendor=sony basic_os=newsos ;; next | m*-next) cpu=m68k vendor=next case $basic_os in openstep*) ;; nextstep*) ;; ns2*) basic_os=nextstep2 ;; *) basic_os=nextstep3 ;; esac ;; np1) cpu=np1 vendor=gould ;; op50n-* | op60c-*) cpu=hppa1.1 vendor=oki basic_os=proelf ;; pa-hitachi) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; pbd) cpu=sparc vendor=tti ;; pbb) cpu=m68k vendor=tti ;; pc532) cpu=ns32k vendor=pc532 ;; pn) cpu=pn vendor=gould ;; power) cpu=power vendor=ibm ;; ps2) cpu=i386 vendor=ibm ;; rm[46]00) cpu=mips vendor=siemens ;; rtpc | rtpc-*) cpu=romp vendor=ibm ;; sde) cpu=mipsisa32 vendor=sde basic_os=${basic_os:-elf} ;; simso-wrs) cpu=sparclite vendor=wrs basic_os=vxworks ;; tower | tower-32) cpu=m68k vendor=ncr ;; vpp*|vx|vx-*) cpu=f301 vendor=fujitsu ;; w65) cpu=w65 vendor=wdc ;; w89k-*) cpu=hppa1.1 vendor=winbond basic_os=proelf ;; none) cpu=none vendor=none ;; leon|leon[3-9]) cpu=sparc vendor=$basic_machine ;; leon-*|leon[3-9]-*) cpu=sparc vendor=$(echo "$basic_machine" | sed 's/-.*//') ;; *-*) # shellcheck disable=SC2162 IFS="-" read cpu vendor <&2 exit 1 ;; esac ;; esac # Here we canonicalize certain aliases for manufacturers. case $vendor in digital*) vendor=dec ;; commodore*) vendor=cbm ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if test x$basic_os != x then # First recognize some ad-hoc caes, or perhaps split kernel-os, or else just # set os. case $basic_os in gnu/linux*) kernel=linux os=$(echo $basic_os | sed -e 's|gnu/linux|gnu|') ;; os2-emx) kernel=os2 os=$(echo $basic_os | sed -e 's|os2-emx|emx|') ;; nto-qnx*) kernel=nto os=$(echo $basic_os | sed -e 's|nto-qnx|qnx|') ;; *-*) # shellcheck disable=SC2162 IFS="-" read kernel os <&2 exit 1 ;; esac # As a final step for OS-related things, validate the OS-kernel combination # (given a valid OS), if there is a kernel. case $kernel-$os in linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* ) ;; uclinux-uclibc* ) ;; -dietlibc* | -newlib* | -musl* | -uclibc* ) # These are just libc implementations, not actual OSes, and thus # require a kernel. echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 exit 1 ;; kfreebsd*-gnu* | kopensolaris*-gnu*) ;; nto-qnx*) ;; os2-emx) ;; *-eabi* | *-gnueabi*) ;; -*) # Blank kernel with real OS is always fine. ;; *-*) echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 exit 1 ;; esac # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. case $vendor in unknown) case $cpu-$os in *-riscix*) vendor=acorn ;; *-sunos*) vendor=sun ;; *-cnk* | *-aix*) vendor=ibm ;; *-beos*) vendor=be ;; *-hpux*) vendor=hp ;; *-mpeix*) vendor=hp ;; *-hiux*) vendor=hitachi ;; *-unos*) vendor=crds ;; *-dgux*) vendor=dg ;; *-luna*) vendor=omron ;; *-genix*) vendor=ns ;; *-clix*) vendor=intergraph ;; *-mvs* | *-opened*) vendor=ibm ;; *-os400*) vendor=ibm ;; s390-* | s390x-*) vendor=ibm ;; *-ptx*) vendor=sequent ;; *-tpf*) vendor=ibm ;; *-vxsim* | *-vxworks* | *-windiss*) vendor=wrs ;; *-aux*) vendor=apple ;; *-hms*) vendor=hitachi ;; *-mpw* | *-macos*) vendor=apple ;; *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) vendor=atari ;; *-vos*) vendor=stratus ;; esac ;; esac echo "$cpu-$vendor-${kernel:+$kernel-}$os" exit # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: mysql++-3.3.0/abi.xml.in000644 000765 000024 00000000224 14042362131 015467 0ustar00tangentstaff000000 000000 @MYSQLPP_VERSION_MAJOR@.@MYSQLPP_VERSION_MINOR@.@MYSQLPP_VERSION_BUGFIX@ lib . mysql++-3.3.0/version000755 000765 000024 00000000025 14042362153 015223 0ustar00tangentstaff000000 000000 #!/bin/sh echo 3.3.0 mysql++-3.3.0/CONTRIBUTING.md000644 000765 000024 00000110205 14042362131 016037 0ustar00tangentstaff000000 000000 # Contributing to the MySQL++ Project If you wish to make any changes to [the project’s files][home], here are some rules and hints to keep in mind while you work. [home]: https://tangentsoft.com/mysqlpp/ ## Fossil Anonymous Access There are three ways to clone the repository anonymously using Fossil. Each of these methods gets you a file called `mysqlpp.fossil` containing the [abridged version history][avh] back to the project’s founding. You only need to take one of these options, once per machine. Thereafter, you will just be working with the cloned repository. [avh]: https://tangentsoft.com/mysqlpp/wiki?name=Abridged+Version+History ### One-Step Clone-and-Open The easiest way requires Fossil 2.14 or higher: $ fossil clone https://tangentsoft.com/mysqlpp $ cd mysqlpp That gets you a clone of the `mysqlpp.fossil` repository plus a check-out of the current trunk in a `mysqlpp/` directory alongside it. We recommend that you do this in a directory like `~/src` so you don’t commingle these files with other things in your current working directory. ### Open from URI If you have Fossil 2.12 or 2.13, the next-easiest method is: $ mkdir -p ~/src/mysqlpp $ cd ~/src/mysqlpp $ fossil open https://tangentsoft.com/mysqlpp This opens the repository referenced by that URI into the current directory as `mysqlpp.fossil`, then opens that repo into that same subdirectory. You have to create the destination directory first with this method because Fossil will refuse to spam a non-empty directory with the check-out contents when opening the repo into a directory containing other files unless you give it the `--force` flag. Notice that the repo file ends up *inside* the check-out tree with this method. This is because of a purposeful semantic difference in Fossil between “open†and “clone.†It may seem strange to someone coming from Git, but while we don’t want to get into the whys and wherefores here, realize there is logic behind this choice. ### Separate Clone and Open The complicated method works with all versions of Fossil back to 2.1, and it is the one we recommend to people who want to get involved with the project, because it has [numerous advantages][cowf] over the easy methods. We’ll explain those benefits in the context of the MySQL++ project later, but for now, the method is: $ mkdir -p ~/museum ~/src/mysqlpp/trunk $ fossil clone https://tangentsoft.com/mysqlpp ~/museum/mysqlpp.fossil $ cd ~/src/mysqlpp/trunk $ fossil open ~/museum/mysqlpp.fossil [cowf]: https://fossil-scm.org/home/doc/trunk/www/ckout-workflows.md ## Fossil Developer Access If you have a developer account on the `tangentsoft.com/mysqlpp` Fossil instance, just add your username to the URL like so: $ fossil clone https://USERNAME@tangentsoft.com/mysqlpp mysqlpp.fossil If you’ve already cloned anonymously, simply tell Fossil about the new sync URL instead: $ cd ~/src/mysqlpp/trunk $ fossil sync https://USERNAME@tangentsoft.com/mysqlpp Either way, Fossil will ask you for the password for `USERNAME` on the remote Fossil instance, and it will offer to remember it for you. If you let it remember the password, operation from then on is scarcely different from working with an anonymous clone, except that on checkin, your changes will be sync’d back to the repository on tangentsoft.com if you’re online at the time, and you’ll get credit under your developer account name for the checkin. If you’re working offline, Fossil will still do the checkin locally, and it will sync up with the central repository after you get back online. It is best to work on a branch when unable to use Fossil’s autosync feature, as you are less likely to have a sync conflict when attempting to send a new branch to the central server than in attempting to merge your changes to the tip of trunk into the current upstream trunk, which may well have changed since you went offline. You can purposely work offline by disabling autosync mode: $ fossil set autosync 0 Until you re-enable it (`autosync 1`) Fossil will stop trying to sync your local changes back to the central repo. In this mode, Fossil works more like Git’s default mode, buying you many of the same problems that go along with that working style. I recommend disabling autosync mode only when you are truly going to be offline and don’t want Fossil attempting to sync when you know it will fail. ## Getting Developer Access We are pretty open about giving developer access to someone who’s provided at least one good, substantial [patch](#patches) to the software. If we’ve accepted one of your patches, just ask for a developer account [on the forum][pfor]. [pfor]: https://tangentsoft.com/mysqlpp/forum ## Working with Existing Tags and Branches The directory structure shown in the [separate clone and open](#sep-clone-open) sequence above is more complicated than strictly necessary, but it has a number of nice properties. First, it collects software projects under a common top-level directory. I’ve used `~/src` for this example, but you are free to use any scheme you like. Second, the level underneath the project directory (`~/src/mysqlpp`) stores multiple separate checkouts, one for each version the developer is actively working with at the moment, so to add a few other checkouts, you could say: ~/museum/ # Where one keeps fossils, right? mysqlpp.fossil ~/src/ # Working tree for software projects mysqlpp/ # A directory for each project trunk/ # Primary working branch for MySQL++ v2.3.2-modern/ # Checkout for another branch v3.2.3/ # Checkout for a tagged stable release This gives you multiple independent checkouts, which allows you to quickly switch between versions with “`cd`†commands. The alternative (favored by Git and some other version control systems) is to use a single working directory and switch among versions by updating that single working directory in place. The problem is that this invalidates all of the build artifacts tied to changed files, so you have a longer rebuild time than simply switching among check-out directories. Since disk space is cheap these days, it’s better to have multiple working states and just “`cd`†among them. When you say `fossil update` in a check-out directory, you get the “tip†state of that version’s branch. This means that if you created your “`release`†check-out while version 3.2.4 was current and you say “`fossil update`†today, you’ll get the release version 3.2.5 or later, because both tags are on the `release` branch. This shows an essential difference between tags and branches in Fossil, which are at bottom otherwise nearly identical: tags apply to a single commit only, while branches are propagating tags, moving from one commit to the next until explicitly canceled. The project uses tags for [each released version][tags], and it has [many working branches][brlist]. You can use any of those names in “`fossil open`†and “`fossil update`†commands, and you can also use any of [Fossil’s special check-in names][fscn]. [brlist]: https://tangentsoft.com/mysqlpp/brlist [fscn]: https://fossil-scm.org/home/doc/trunk/www/checkin_names.wiki [fvg]: https://fossil-scm.org/home/doc/trunk/www/fossil-v-git.wiki [gitwt]: https://git-scm.com/docs/git-worktree [tags]: https://tangentsoft.com/mysqlpp/taglist ## Creating Branches Creating a branch in Fossil is scary-simple, to the point that those coming from other version control systems may ask, “Is that really all there is to it?†Yes, really, this is it: $ fossil ci --branch new-branch-name That is to say, you make your changes as you normally would; then when you go to check them in, you give the `--branch` option to the `ci/checkin` command to put the changes on a new branch, rather than add them to the same branch the changes were made against. While developers with login rights to the Fossil instance are allowed to check in on the trunk at any time, we recommend using branches whenever you’re working on something experimental, or where you can’t make the necessary changes in a single coherent checkin. A good example is an API or ABI breakage: those should go on a branch rather than on trunk, since they require discussion before we merge them down to trunk. One of this project’s core principles is that `trunk` should always build without error, and it should always function correctly. That’s an ideal we have not always achieved, but we do always *try* to achieve it. Contrast branches, which project developers may use to isolate work until it is ready to merge into the trunk. It is okay to check work in on a branch that doesn’t work, or doesn’t even *build*, so long as the goal is to get it to a point that it does build and work properly before merging it into trunk. Here again we have a difference with Git: because Fossil normally syncs your work back to the central repository, this means we get to see the branches you are still working on. This is a *good thing*. Do not fear committing broken or otherwise bad code to a branch. [You are not your code.][daff] We are software developers, too: we understand that software development is an iterative process, that not all ideas spring forth perfect and production-ready from the fingers of its developers. These public branches let your collaborators see what you’re up to; they may be able to lend advice, to help with the work, or to at least be unsurprised when your change finally lands in trunk. Fossil fosters close cooperation, whereas Git fosters wild tangents that never come back home. Jim McCarthy (author of [Dynamics of Software Development][dosd]) has a presentation on YouTube that touches on this topic at a couple of points: * [Don’t go dark](https://www.youtube.com/watch?v=9OJ9hplU8XA) * [Beware of a guy in a room](https://www.youtube.com/watch?v=oY6BCHqEbyc) Fossil’s sync-by-default behavior fights these negative tendencies. Project developers are welcome to create branches at will. The main rule is to follow the branch naming scheme: all lowercase with hyphens separating words. See the [available branch list][brlist] for examples to emulate. If you have checkin rights on the repository, it is generally fine to check things in on someone else’s feature branch, as long as you do so in a way that cooperates with the purpose of that branch. The same is true of `trunk`: you should not check something in directly on the trunk that changes the nature of the software in a major way without discussing the idea first. This is yet another use for branches: to make a possibly-controversial change so that it can be discussed before being merged into the trunk. [daff]: http://www.hanselman.com/blog/YouAreNotYourCode.aspx [dosd]: http://amzn.to/2iEVoBL ## Special Branches Most of the branches in the project are feature branches of the sort described in the previous section: an isolated line of development by one or more of the project’s developers to work towards some new feature, with the goal of merging that feature into the `trunk` branch. There are a few branches in the project that are special, which are subject to different rules than other branches: * **release** — One of the steps in the [release process][relpr] is to merge the stabilized `trunk` into the `release` branch, from which the release tarballs and binary OS images are created. Only the project’s release manager — currently Warren Young — should make changes to this branch. * **bogus** or **BOGUS** — Because a branch is basically just a label for a specific checkin, Fossil allows the tip of one branch to be “moved†to another branch by applying a branch label to that checkin. We use this label when someone makes a checkin on the tip of a branch that should be “forgotten.†Fossil makes destroying project history very difficult, on purpose, so things moved to the “bogus†branch are not actually destroyed; instead, they are merely moved out of the way so that they do not interfere with that branch’s normal purpose. If you find yourself needing to prune the tip of a branch this way, the simplest way is to do it via the web UI, using the checkin description page’s “edit†link. You can instead do it from the command line with the `fossil amend` command. [relpr]: https://tangentsoft.com/mysqlpp/doc/trunk/RELEASE-CHECKLIST.txt ## Discussion Forum The “[Forum][pfor]†link at the top of the Fossil web interface is for both end-user discussions and internal MySQL++ project developer discussions. If you come across the old mailing list, we don’t use that any more. We also prefer Fossil forum and ticket postings to GitHub issues and such. You can sign up for the forum without having a developer login, and you can even post anonymously. If you have a login, you can [sign up for email alerts][alert] if you like. Keep in mind that posts to the Fossil forum are treated much the same way as ticket submissions and wiki articles. They are permanently archived with the project. The “edit†feature of Fossil forums just creates a replacement record for a post, but the old post is still available in the repository. Don’t post anything you wouldn’t want made part of the permanent record of the project! [alert]: https://tangentsoft.com/mysqlpp/alerts ## Bootstrapping the Library When you check out MySQL++ from Fossil, there are a lot of things "missing" as compared to a distributed tarball, because the Fossil repository contains only source files, no generated files. The process that turns a fresh MySQL++ repository checkout into something you can build and hack on is called bootstrapping. Boostrapping is best done on a modern Unix type platform: Linux, OS X, BSD, Solaris...any version released since 2005 or so. It's possible to [bootstrap MySQL++ on Windows](#winbs), but it’s much harder. Two of the tools you need to do this are commonly available on Unixy systems, at least as an option: Perl 5, and GNU Autoconf 1.59 or higher. If they're not installed, you can probably run your system's package manager to install suitable versions. There's a third tool you'll need to bootstrap MySQL++ called [Bakefile][bf]. The syntax used in `mysql++.bkl` requires at least Bakefile 0.2.5 or higher, which in turn requires Python 2.3 or higher to run. You may require a newer version of Bakefile to support newer OSes and Python versions; we've tested with versions up to 0.2.11 successfully. Do not use any of the Bakefile 1.x versions: it’s an incompatible change, and we currently have no intention to switch from Bakefile 0.x. Once you have all the tools in place, you can bootstrap MySQL++ with a Bourne shell script called `bootstrap`, which you get as part of the Fossil checkout. It's fairly powerful, with many options. For most cases, it suffices to just run it without any arguments: $ ./bootstrap For more unusual situations, here's the complete usage: $ ./bootstrap [no{doc,ex,lib,opt}] [pedantic] [bat] [configure flags] Arguments: * `nodoc` The documentation won't be considered a prerequisite for building the distribution tarball. This is useful on systems where the documentation doesn't build correctly, and you only need to make a binary RPM. That process requires a tarball, but doesn't need the documentation. Don't distribute the tarball or SRPM that results, as they are no good for any other purpose. * `noex` The generated `Makefiles` and project files won't try to build any of the examples. * `nolib` The generated `Makefiles` and project files won't try to build the MySQL++ library. * `nomaint` Turn off "maintainer mode" stuff in the build. These are features used only by those building MySQL++ from Fossil. The `dist` build target uses this when creating the tarball, because it reduces the build time somewhat. * `noopt` Compiler optimization will be turned off. (This currently has no effect on the generated MinGW Makefile or the Visual C++ project files.) * `pedantic` Turns on all of GCC's warnings and portability checks. We use this as part of our [release process](./RELEASE-CHECKLIST.txt). * `bat` Runs `bootstrap.bat` via `cmd.exe` for you, passing along equivalent options to any of the "*no*" options you give before it. Only the "*no*" options above have an effect on the generated build system files when you give "`bat`". In particular, the files generated by `bootstrap.bat` make no distinction between "pedantic" and normal builds. Passing `bat` stops all command line processing in the `bootstrap` script, so if you also pass some of the other options, "`bat`" must be last. The `bootstrap.bat` script is useful only when you intend to build MySQL++ with MinGW or Visual C++, and you are using Cygwin only as a command line environment. If you intend to build MySQL++ with Cygwin's GCC toolchain, you must not give this option, else you will not end up with the necessary build system files. One advantage of this feature is that the commands necessary to achieve a given effect with `bootstrap.bat` when run via `bootstrap` are shorter than when you run the batch file directly. Another advantage is that this low-strength version of the bootstrap script runs faster than the full-strength form, because it produces fewer files. Finally, running `bootstrap.bat` indirectly like this lets you avoid using `cmd.exe`, a command shell greatly inferior to any of those available for Cygwin. * `configure` script options As soon as the bootstrap script sees an option that it doesn't understand, it stops processing the command line. Any subsequent options are passed to the `configure` script. See [README-Unix.txt][rmu] for more on `configure` script options. [bf]: http://bakefile.org/ [rmu]: https://tangentsoft.com/mysqlpp/file/README-Unix.txt ## Bootstrapping the Library Using Only Windows The thing that makes bootstrapping on Windows difficult is that one of the required steps uses a Unix-centric tool, Autoconf. This section gives alternatives for either getting Autoconf working on Windows or avoiding the need for it. The thing Autoconf does that's relevant to Windows builds of MySQL++ is that it substitutes the current MySQL++ version number into several source files. This allows us to change the version number in just one place — `configure.ac` — and have it applied to all these other places. Until you do this step, a Fossil checkout of MySQL++ won't build, because these files with the version numbers in them won't be generated. ### Option 1: Copy the generated files over from a released version Only one of these generated files is absolutely critical to allowing MySQL++ to build: `lib/mysql++.h`. So, the simplest option you have to bootstrap MySQL++ entirely on Windows is to copy `lib/mysql++.h` over from a released version of MySQL++. While you're doing that, you might copy over the other such generated files: install.hta mysql++.spec doc/userman/userman.dbx lib/Doxyfile Having done that, you can complete the bootstrapping process by running `bootstrap.bat`. It has the same purpose as the Bourne shell script described [above](#bootstrap), but with a different and simpler usage: C:\> bootstrap.bat [bakefile-options] Any options passed are passed as-is to Bakefile. This is normally used to pass `-D` options to affect the generated build system output files. ### Option 2: Cygwin If you'd like to hack on MySQL++ entirely on Windows and have all the build freedoms enjoyed by those working on Unixy platforms, the simplest solution is probably to [install Cygwin][cyg]. It doesn’t matter whether you use the 32-bit or 64-bit version, for our purposes here. While in the Cygwin setup program, you will have to add the Autoconf and Perl 5 packages, which aren't installed in Cygwin by default. Autoconf is in the Devel category, and Perl 5 in the Interpreters category. You will also need to install the native Windows binary version of [Bakefile][bf]. Don't get the source version and try to build Bakefile under Cygwin; it won't work. The Windows binary version of Bakefile includes an embedded version of Python, so you won't need to install Cygwin's Python. Having done all this, you can follow the Unix bootstrapping instructions in the previous section. [cyg]: http://cygwin.com/ ### Option 3: Windows Subsystem for Linux (WSL) If you’re on Windows 10, you have the option of [installing WSL][WSL], a lightweight Linux kernel and user environment that runs atop Windows. This is fundamentally different technology than Cygwin, but the user-level effect of it is the same as far as MySQL++’s build system goes. Assuming you use the default Ubuntu enviroment atop WSL, the [standard bootstrapping process](#bootstrap) applies, after you install the needed tools: $ sudo apt install build-essential perl libmysqlclient-dev You will also need to install the legacy [Bakefile 0.2.x][bf] version. If there is a `bakefile` package available at all, it is likely for the incompatible 1.x series. [WSL]: https://docs.microsoft.com/en-us/windows/wsl/install-win10 ### Option 4: ["Here's a nickel, kid, get yourself a better computer."][dc] Finally, you might have access to a Unixy system, or the ability to set one up. You don't even need a separate physical computer, now that virtual machine techology is free. Given such a machine, you'd do the Fossil checkout of MySQL++ on that machine, then bootstrap it there using the instructions in the previous section, and copy the generated files back to the Windows box. [dc]: http://tomayko.com/writings/that-dilbert-cartoon ## Manipulating the Build System Source Files One of the things the bootstrapping system described [above](#bootstrap) does is produces various types of project and make files from a small number of source files. This system lets us support many platforms without having to maintain separate build system files for each platform. [Bakefile][bf] produces most of these project and make files from a single source file called [`mysql++.bkl`][bkl]. Except for small local changes, it's best to change `mysql++.bkl` and "re-bake" the project and make files rather than change those files directly. You can do this with the bootstrap scripts covered above. On Windows, if all you've changed is `mysql++.bkl`, you can use `rebake.bat` instead, which doesn't try to do as much as `bootstrap.bat`. Bakefile produces finished project files for Visual C++ and Xcode and finished `Makefiles` for MinGW. It also produces `Makefile.in`, which is input to GNU Autoconf along with `configure.ac` and `config/*`. You may need to change these latter files in addition to or instead of `mysql++.bkl` to get the effect you want. Running bootstrap incorporates changes to all of these files in the GNU Autoconf output. While Bakefile's documentation isn't as comprehensive as it ought to be, you can at least count on it to list all of the available features. So, if you can't see a way to make Bakefile do something, it's likely it just can't do it. Bakefile is a high-level abstraction of build systems in general, so it'll never support all the particulars of every odd build system out there. [bkl]: https://tangentsoft.com/mysqlpp/file/mysql%2B%2B.bkl ## Submitting Patches If you do not have a developer login on the project repository, you can still send changes to the project. The simplest way is to say this after developing your change against trunk: $ fossil diff > my-changes.patch Then paste that into a [forum post][pfor] using a [fenced code block][fcb]. We will also accept trivial patches not needing discussion as text or attachments on [a Fossil ticket][tkt]. If you're making a patch against a MySQL++ distribution tarball, you can generate a patch this way: $ diff -ruN mysql++-olddir mysql++-newdir > mychange.patch The `diff` command is part of every Unix and Linux system, and should be installed by default. If you're on a Windows machine, GNU diff is part of [Cygwin](http://cygwin.com/) and [WSL]. Fossil is also available for all of these systems. There are no excuses for not being able to make unified diffs. :) [fcb]: https://www.markdownguide.org/extended-syntax#fenced-code-blocks [tkt]: https://tangentsoft.com/mysqlpp/tktnew #### Bundles Instead of Patches If your change is more than a small patch, `fossil diff` might not incorporate all of the changes you have made. The old unified `diff` format can’t encode branch names, file renamings, file deletions, tags, checkin comments, and other Fossil-specific information. For such changes, it is better to send a [Fossil bundle][fb]: $ fossil set autosync 0 # disable autosync $ fossil checkin --branch my-changes ...followed by more checkins on that branch... $ fossil bundle export --branch my-changes my-changes.bundle After that first `fossil checkin --branch ...` command, any subsequent `fossil ci` commands will check your changes in on that branch without needing a `--branch` option until you explicitly switch that checkout directory to some other branch. This lets you build up a larger change on a private branch until you’re ready to submit the whole thing as a bundle. Because you are working on a branch on your private copy of the project’s Fossil repository, you are free to make as many checkins as you like on the new branch before giving the `bundle export` command. Once you are done with the bundle, upload it somewhere public and point to it from a forum post or ticket. [fb]: https://fossil-scm.org/home/help?cmd=bundle #### Contribution Licensing Because MySQL++ uses the “[viral]†LGPL license, you do not have to declare a release of copyright or explicit license: a public diff against our source base is inherently made available under the same license. [viral]: https://en.wikipedia.org/wiki/Viral_license #### Can I Use GitHub Instead? Although MySQL++ does have a [GitHub mirror][ghm], it is intended as a read-only mirror for those heavily tied into Git-based tooling. You’re welcome to send us a PR anyway, but realize that what’s going to happen on the back end is that we’ll generate a patch, apply it to the Fossil repo by hand, test it, and then commit it to the repository under one of our existing Fossil developer accounts. Only then do we update the mirror so that the change appears on GitHub; thus, you don’t get GitHub credit for the PR. You avoid these problems by simply asking for a developer account on the Fossil repo, so you can commit there instead. This is not simply because setting up bidirectional mirroring is difficult, it is actually [impossible to achieve 100% fidelity][ghlim] due to limitations of Git and/or GitHub. If you want a faithful clone of the project repo, or if you wish to contribute to the project’s development with full credit for your contributions, it’s best done via Fossil, not via GitHub. [ghlim]: https://fossil-scm.org/home/doc/trunk/www/mirrorlimitations.md [ghm]: https://github.com/tangentsoft/mysqlpp/ ## The MySQL++ Code Style Every code base should have a common code style. Love it or hate it, here are MySQL++'s current code style rules: ### Source Code File types: `ac`, `cpp`, `h`, `in`, `m4`, `pl` - Tabs for indents, size 4 - Unix line endings. Any decent programmer's editor can cope with this, even on Windows. - C/C++ rules: - Base whitespace style is AT&Tish: K&R/Stroustrup, plus a little local spice. If you have the indent(1) program, the command is: indent -kr -nce -cli4 -ss -di1 -psl -ts4 FILES... That is, don't cuddle else, indent case statement labels, space before semicolon with empty loop body, no extra space between a variable type and name, return value of function on separate line from rest of definition. - Class names are in `CamelCase`, uppercased first letter - Method names are in `all_lower_case_with_underscores()`; ditto most other global symbols. - Macro names are in `ALL_UPPERCASE_WITH_UNDERSCORES` - Doxygen comment for all public declarations, unless there is a very good reason to keep the thing undocumented. - Perl and shell script rules are more or less the same as for C/C++, to the extent this makes sense. ### XML/HTML Dialects File types: `bkl`, `dbx`, `hta` - Spaces for indents, size 2. Shallow indents due to the high level of nesting occurring in such files, and spaces because they're not as annoying at shallow indent levels in editors that don't treat space indents like tabs. - Unix line endings. Again, these are intended to be viewed in a programmer's text editor, which should work with Unix line endings no matter the platform. ### Plain Text Files File types: `txt` - Spaces for indents, size 4. Spaces because such files are often viewed in Notepad and similarly crippled text editors which use a default indent level of 8. - DOS line endings, again for the Notepad reason. And on modern Unixy platforms, the tools cope with DOS line endings reasonably well. Better than the converse, anyway. When in doubt, mimic what you see in the current code. When still in doubt, ask on [the forum][pfor]. ## Testing Your Proposed Change MySQL++ includes a self-test mechanism called `dtest`. It's a Bourne shell script, run much like `exrun`: $ ./dtest [-s server_addr] [-u user] [-p password] This automatically runs most of the examples, captures the outputs to a file, and then compares that to a known-good run's outputs, stored in `bmark.txt`. So, before you submit a patch, run `dtest` to see if anything has changed. If something has and you can't account for it, it represents a problem that you'll have to fix before submitting the patch. If it gives an expected change, remove `bmark.txt`, re-run `dtest`, and include the `bmark.txt` diffs in your patch. This communicates to us the fact that you know there are differences and want the patch evaluated anyway. Otherwise, we are likely to view the change in the program outputs as a bug or regression. `dtest` also runs all of the unit tests in `test/*`. The purpose of `test/*` is different from that of `examples/*`: - `test/*` are unit tests: each tests only one MySQL++ class, independent of everything else. Because DB access requires several MySQL++ classes to cooperate, a unit test never accesses a database; hence, no unit test needs DB connection parameters. We will never get 100% code coverage from `test/*` alone. - `examples/*` can be thought of as integration tests: they test many pieces of MySQL++ working together, accessing a real database server. In addition to ensuring that all the pieces work together and give consistent results from platform to platform and run to run, it also fills in gaps in the code coverage where no suitable `test/*` module could be created. - `test/*` programs always run silently on success, writing output only to indicate test failures. This is because they're usually only run via `dtest`. - `examples/*` are always "noisy," regardless of whether they succeed or fail, because they're also run interactively by people learning to use MySQL++. Patches should include tests if they introduce new functionality or fix a bug that the existing test coverage failed to catch. If the test is noisy, needs DB access, or tests multiple parts of the library at once, it goes in `examples/*`. If your change affects only one class in MySQL++ and testing it can be done without instantiating other MySQL++ classes — other than by composition, of course — it should go in `test/*`. In general, prefer modifying an existing `examples/*` or `test/*` program. Add a new one only if you're introducing brand new functionality or when a given feature currently has no test at all. Beware that the primary role of the examples is to illustrate points in the user manual. If an existing example does something similar to what a proper test would need to do and the test doesn't change the nature of the example, don't worry about changing the example code. If your test would change the nature of the example, you either need to do the test another way or also submit a change to `doc/userman/*.dbx` that incorporates the difference. ## Adding Support for a Different Compiler As described above, MySQL++ uses the Bakefile system for creating project files and makefiles. This allows a single change to propagate across all build systems we support. In the past, we used more ad-hoc systems, and we'd frequently forget to update the build system for a particular platform, so that at any given time, at least one target was likely to be broken. We will therefore resist any change that requires that we go back to distributing manually-maintained build system files not generated from a single source. If MySQL++ doesn't currently ship with project files or makefiles tuned for your compiler of choice, you need to work through the Bakefile mechanism to add support. We're not willing to do ad-hoc platform support any more, so please don't ask if you can send us project files instead; we don't want them. If you want to port MySQL++ to another platform, we need to be confident that the entire library works on your platform before we'll accept patches. In the past, we've had broken ports that were either missing important library features, or which crashed when built in certain ways. Few people will knowingly use a crippled version of MySQL++, since there are usually acceptable alternatives. Therefore, such ports become maintenance baggage with little compensating value. ## Maintaining a Private Repository Although Fossil tries to sync changes back to the [MySQL++ Fossil repository][home] by default, it is possible to maintain a private repository that simply pulls changes in occasionally. The first step is to turn off the auto-sync feature: $ fossil set autosync off ...or set it so it only pulls from the central repo without trying to push local changes, making it complain that you don’t have commit capability: $ fossil set autosync pullonly Then I recommend that you make any local changes on a branch: ...hack, hack, hack... $ fossil ci --branch my-local-branch After you give the `--branch` option on a checkin, Fossil automatically switches your local checkout to that branch, so that all further checkins can be made without the `--branch` option. To get back to the trunk, you'd say `fossil up trunk`, but under this workflow, the need for that will be rare. When something happens on the official trunk on `tangentsoft.com` that you want pulled into your private repository, say: $ fossil pull $ fossil merge trunk The first command pulls all remote changes into your local clone, but since those changes don't affect your private branch, you won't see any immediate change. The second attempts to merge the trunk branch's changes since the last branch or merge point into your private branch. Whether the merge is successful or not, Fossil does not immediately modify your clone, only the working checkout directory. You must then say `fossil ci` once you're happy with the merge. Until then, all the usual Fossil commands like `fossil diff` and `fossil status` will help you come to that decision. If you ever decide to contribute your private branch to the MySQL++ project, there are a couple of easy ways to achieve that. Ask about it on [the forum][pfor] if you find yourself in this situation. If you want to ensure that your private branch *never* syncs with the public project, even if you later get a developer account on it, you can go a step further and use Fossil’s [private branch feature][pbr]. [home]: https://tangentsoft.com/mysqlpp/ [pbr]: https://fossil-scm.org/home/doc/trunk/www/private.wiki mysql++-3.3.0/README-MinGW.txt000644 000765 000024 00000015737 14042362131 016301 0ustar00tangentstaff000000 000000 Prerequisite: GCC Version ~~~~~~~~~~~~~~~~~~~~~~~~~ If your MinGW version isn't using at least GCC 3.4.5, it needs to be updated. Older versions are known to not work with MySQL++. As of MySQL++ 3.1.1, the required version might need to be even newer, as we are now depending on improvements to the MinGW linker which probably don't go back that far. Prerequisite: MySQL C Development Files ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MySQL++ is built atop MySQL's C API library. The easiest way to get that is to install Connector/C on your development system, which you can download from mysql.com. The distribution assumes these files are in: C:\Program Files\MySQL\MySQL Connector C 6.1\ There are a number of reasons why that path may not work for you: - You have a newer version of Connector/C installed - You're on a 64-bit system, but have the 32-bit versions of Connector/C and MinGW installed and wish to build a 32-bit binary. In that case, the path will look like this instead: C:\Program Files (x86)\MySQL\MySQL Connector C 6.1\ - You may have the MySQL Server on your system and installed the development files along with it, and therefore don't want to install Connector/C separately. In that case, the path will look like this instead: C:\Program Files\MySQL\MySQL Server 5.6\ Regardless of the reason you have for changing this path, there are two ways that work: - The easy way is to do a global search and replace on the path in Makefile.mingw. This is a generated file, but if that's the only change to MySQL++ you need, it works fine. - If you're doing deeper work on MySQL++, you should change the MYSQL_WIN_DIR variable at the top of mysql++.bkl instead. Having done that, you can generate Makefile.mingw from that file using the Windows port of Bakefile (http://bakefile.org/): bakefile_gen -f mingw Building the Library and Example Programs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ With the prerequisites above taken care of, you can build MySQL++ with this command: mingw32-make -f Makefile.mingw Notice that we're using the MinGW-specific version of GNU make, not the Cygwin or MSYS versions. Many things will break otherwise: path separator handling, shell commands used by the Makefile, etc. Speaking of Cygwin and MSYS, if you have either these or any other Unix emulation environment installed, be sure their executables aren't in the PATH when building MySQL++. MinGW's version of GNU make does some funny things if it thinks it's running in the presence of Unixy tools, which will break the MySQL++ build. Once the library is built, you should run the examples. At minimum, run resetdb and simple1. Once you're satisfied that the library is working correctly, you can run install.hta to automatically install the library files and headers in subdirectories under c:\mysql++. Cygwin and MinGW Coexistence ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ It's possible to have both Cygwin and MinGW installed and build with the MinGW tools without interference from the Cygwin bits. The main thing you have to take care of is that MinGW's bin directory must precede the Cygwin bin directory in the PATH, so that its tools are found first. If you use Cygwin's bash as a command shell in preference to the DOS-like cmd.exe, you can use this shell script to temporarily set the environment to "MinGW mode" and make it easy to get back to "Cygwin mode": #!/bin/sh PATH=/c/mingw/bin:/c/windows:/c/windows/system32:/c/cygwin/bin echo "Say 'exit' to leave MinGW shell and restore Cygwin environment." /usr/bin/bash --rcfile ~/.mingwrc I recommend having at least this in the ~/.mingwrc file: alias make=mingw32-make PS1='MinGW: \W \$ ' The prompt change reminds you that you are in a sub-shell set up for MinGW. The alias for 'make' ensures you don't accidentally run Cygwin's make, which won't work with Makefile.mingw. We could just leave /c/cygwin/bin out of the environment, but there are Cygwin tools we want access to, like vim. As long as all the MinGW ones override those Cygwin also provides, we don't need to worry about having both in the PATH. Besides, having the alias is nice for those who have 'make' committed to muscle memory. Building on Linux ~~~~~~~~~~~~~~~~~ You might wish to build MySQL++ with MinGW because you're not actually running Windows, but need Windows executables. The thought being that this lets you use GCC, the same compiler you're probably using to make native executables. There are indeed ways to make this work. The most "native" way to do this is to run MinGW under Wine. Leonti Bielski provided these instructions: 1. Install MinGW through Wine: $ wine MinGW-5.1.6.exe 2. Add the MinGW directory to Wine's PATH with Wine regedit: http://winehq.org/site/docs/wineusr-guide/environment-variables 3. Install MySQL under Wine, or at least unpack the Windows ZIP file version of MySQL in a place where Wine can find it. You don't need to run a Windows MySQL server under Wine. We're only doing this to get the MySQL C API library and its headers, which MySQL++ builds against. The resulting MinGW build of MySQL++ can talk to a native MySQL server out in Wine's host environment or on some other machine. 4. Modify Makefile.mingw to match the install location for the MySQL C API files. 5. Build MySQL++ with: $ wine mingw32-make -f Makefile.mingw Another way is to build a Windows virtual machine, such as with VMware or VirtualBox. In that case, you'd use the regular build instructions at the top of this document. You might think to avoid the need for Wine or Windows by use of a MinGW cross-compiler: $ ./configure --target=mingw32 $ make Unfortunately, that currently doesn't work. The reason is that our autoconf build system assumes a typical POSIX type target, which MinGW is not. We made this assumption because we have a perfectly good MinGW build option, Makefile.mingw. But, that also won't work on a POSIX system because that Makefile assumes external commands run under cmd.exe, not some Unixy shell. Thus the advice to build with Makefile.mingw under Windows or something sufficiently close to it. If you really wanted to, you could extend the autoconf build system to make it realize when it's being used to cross-compile for MinGW. Patches thoughtfully considered; see HACKERS.txt. mysql++-3.3.0/examples/000755 000765 000024 00000000000 14042362133 015427 5ustar00tangentstaff000000 000000 mysql++-3.3.0/README-Mac-OS-X.txt000644 000765 000024 00000014423 14042362131 016533 0ustar00tangentstaff000000 000000 Building MySQL++ ~~~~~~~~~~~~~~~~ There are two major ways to build MySQL++: from the command line, or from within the Xcode IDE. MySQL++ has its roots in Unix and Linux, like MySQL itself. As a result, the most well-supported way to build MySQL++ is from the command line, or Terminal as Apple likes to call it. See README-Unix.txt for the generic instructions. Further Mac-specific details are given elsewhere in this file. The option to build MySQL++ from within Xcode is new. We added experimental support for it in 3.0.0, but it didn't actually get tested and debugged until 3.1.0. It may still be buggy, and over time it's more likely to break again than the command line method, simply because it receives less testing during development. Even fully functional, it is less flexible than building from the command line; Xcode's project system cannot match the power available within the autotools build system. If you try the Xcode method and find that it doesn't work, the easiest way around that roadblock is to build from the command line instead. If you're the adventurous sort and want to contribute to the development of MySQL++, see the file HACKERS.txt for more info on fixing the source file used as input in the project file generation process. We don't want fixed project files, we want a process that lets us consistently generate correct project files. Prerequisite: Install the MySQL Development Files ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MySQL++ is built on top of the MySQL C API library, so for MySQL++ to build, it needs at least that library and its header files installed. You don't need the server itself installed on your development machine, though it's often helpful anyway, for testing. There are many suitable sources: - The simplest option is to download the MySQL server DMG from mysql.com. In addition to the C API files you absolultely must have, this gives you a nice Mac-like installation procedure and a preference pane for bringing the server up and down and setting it to start on system boot. - If you really only want the C API development files, MySQL offers them separately as Connector/C. As of this writing, you get the files as a tarball, and you have to copy its contents to some suitable location on your hard drive. If you're using Xcode to build MySQL++, you'll want to put them under /usr/local/mysql. MySQL++'s command line build system is far more tolerant, looking there and in many other typical locations. - If you use Fink, you can install the C API files with: $ fink install mysql15-dev If you also want a local MySQL server, say this instead: $ fink install mysql mysql15-dev - From MacPorts, http://macports.org. I have zero information on this other than that it's theoretically possible for it to work. If you figure out how to make it work, please post the method to the mailing list so I can update this document. Dealing with the 64-Bit Transition in Snow Leopard ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Xcode for Snow Leopard installs two independent versions of the GNU Compiler Collection. The default is GCC 4.2, and it is set up to build 64-bit executables by default, even if your system is booted into 32-bit mode. You also get GCC 4.0, which builds 32-bit executables by default. On top of that, you have the confusion added by Apple's decision to make all 64-bit capable machines boot into 32-bit mode by default, except for the Xserves. The first symptom most people run into as a result of this mess is that the "configure" script fails, yelling something about being unable to link to libmysqlclient, the MySQL C API client library. It's because the library was probably built as a 32-bit executable and you're using the default compiler which tries to build a 64-bit test executable against this library and fails. There are many ways out of this tarpit. Here are the ones I prefer: First, you can force GCC 4.2 to build 32-bit binaries: ./configure CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32 --other-flags-here Second, you can make the MySQL++ build system use GCC 4.0 instead: ./configure CC=gcc-4.0 CXX=g++-4.0 --other-flags-here Last, you could just take Apple's implied advice and start booting your Mac into 64-bit mode, if it will support it. Here's an article that goes into all the details: http://macperformanceguide.com/SnowLeopard-64bit.html I'm aware of other solutions to the problem, but I expect one among these will work for you. Making Universal Binaries ~~~~~~~~~~~~~~~~~~~~~~~~~ By default, the command line build system will generate libraries that only work with the platform you build MySQL++ on. It can be convinced to build "universal" binaries instead by configuring the library like so: $ ./configure --disable-dependency-tracking \ CXXFLAGS='-arch ppc -arch i386' This builds the library for the two 32-bit OS X architectures, and is what most people have traditionally thought of as "universal". However, you may also want a 64-bit build, meaning there are four different architectures, and thus four -arch flags needed: $ ./configure --disable-dependency-tracking \ CXXFLAGS='-arch ppc -arch ppc64 -arch i386 -arch x86_64' These are single commands, with the line broken to keep the line lengths in this document reasonable. The first command doubles build time relative to the default configuration, and the second quadruples it. It also makes the resulting binaries larger, which increases the amount of time it takes to start a program. Build MySQL++ like this only if you must. The --disable-dependency-tracking flag is necessary because, when building universal binaries, it has to rebuild each source module multiple times, which confuses the logic that tries to tell when a given module needs rebuiding based on its dependencies on other files. mysql++-3.3.0/abi.xml000644 000765 000024 00000000121 14042362153 015062 0ustar00tangentstaff000000 000000 3.3.0 lib . mysql++-3.3.0/lib/000755 000765 000024 00000000000 14042362153 014361 5ustar00tangentstaff000000 000000 mysql++-3.3.0/doc/000755 000765 000024 00000000000 14042362131 014354 5ustar00tangentstaff000000 000000 mysql++-3.3.0/bootstrap.bat000644 000765 000024 00000003606 14042362131 016321 0ustar00tangentstaff000000 000000 @echo off if not exist vc2003 mkdir vc2003 if not exist vc2005 mkdir vc2005 if not exist vc2008 mkdir vc2008 bakefile_gen %* if errorlevel 1 exit if not exist vc2003\mysql++.sln goto no_bakefile if not exist vc2005\mysql++.sln goto no_bakefile if not exist vc2008\mysql++.sln goto no_bakefile cd lib perl querydef.pl if errorlevel 1 exit if not exist querydef.h goto no_perl perl ssqls.pl if errorlevel 1 exit if not exist ssqls.h goto no_perl if not exist mysql++.h goto no_mysqlpp_h cd .. exit :no_bakefile echo. echo Bakefile doesn't seem to be installed on this system. Download it echo from http://bakefile.org/ You need version 0.2.3 or newer. echo. exit :no_perl echo. echo You need a Perl interpreter installed on your system, somewhere in echo the PATH. Any recent version or flavor should work; we don't use echo any special extensions. The easiest to install on Windows would be echo ActivePerl, from http://activestate.com/Products/activeperl/ echo If you're familiar with Unix, you might like Cygwin better instead: echo http://cygwin.com/setup.exe echo. cd .. exit :no_mysqlpp_h echo. echo WARNING: Can't make lib/mysql++.h echo. echo On Unixy systems, autoconf creates lib/mysql++.h from lib/mysql++.h.in echo but there is no easy way to do this on Windows. You can do it manually: echo just copy the file to the new name, and edit the MYSQLPP_HEADER_VERSION echo definition to put the proper version number parts into the macro. It echo needs to look something like this: echo. echo #define MYSQLPP_HEADER_VERSION MYSQLPP_VERSION(3, 0, 0) echo. echo It's important that the three numbers match the actual library version echo number, or else programs that check this (like resetdb) will fail. echo. echo Alternately, if you've also got MySQL++ installed on some Unixy type echo system, you can let its bootstrap procedure create mysql++.h and then echo copy it to the Windows machine. echo. cd .. mysql++-3.3.0/vc2008/000755 000765 000024 00000000000 14042362131 014531 5ustar00tangentstaff000000 000000 mysql++-3.3.0/install.hta000644 000765 000024 00000025106 14042362153 015763 0ustar00tangentstaff000000 000000 Install MySQL++ Development Files

Where would you like to install the MySQL++ development files?
Drives:
Folders:
  Install in versioned folder?
  Segregate native C++ library builds from C++/CLI (CLR) builds?
  Segregate libraries by platform?
Target:
 

mysql++-3.3.0/shared-ld-sh000755 000765 000024 00000004045 14042362151 016015 0ustar00tangentstaff000000 000000 #!/bin/sh #----------------------------------------------------------------------------- #-- Name: distrib/mac/shared-ld-sh #-- Purpose: Link a mach-o dynamic shared library for Darwin / Mac OS X #-- Author: Gilles Depeyrot #-- Copyright: (c) 2002 Gilles Depeyrot #-- Licence: any use permitted #----------------------------------------------------------------------------- verbose=0 args="" objects="" linking_flag="-dynamiclib" ldargs="-r -keep_private_externs -nostdlib" if test "x$CXX" = "x"; then CXX="c++" fi while test $# -gt 0; do case $1 in -v) verbose=1 ;; -o|-compatibility_version|-current_version|-framework|-undefined|-install_name) # collect these options and values args="${args} $1 $2" shift ;; -arch|-isysroot) # collect these options and values ldargs="${ldargs} $1 $2" shift ;; -s|-Wl,*) # collect these load args ldargs="${ldargs} $1" ;; -l*|-L*|-flat_namespace|-headerpad_max_install_names) # collect these options args="${args} $1" ;; -dynamiclib|-bundle) linking_flag="$1" ;; -*) echo "shared-ld: unhandled option '$1'" exit 1 ;; *.o | *.a | *.dylib) # collect object files objects="${objects} $1" ;; *) echo "shared-ld: unhandled argument '$1'" exit 1 ;; esac shift done status=0 # # Link one module containing all the others # if test ${verbose} = 1; then echo "$CXX ${ldargs} ${objects} -o master.$$.o" fi $CXX ${ldargs} ${objects} -o master.$$.o status=$? # # Link the shared library from the single module created, but only if the # previous command didn't fail: # if test ${status} = 0; then if test ${verbose} = 1; then echo "$CXX ${linking_flag} master.$$.o ${args}" fi $CXX ${linking_flag} master.$$.o ${args} status=$? fi # # Remove intermediate module # rm -f master.$$.o exit $status mysql++-3.3.0/LICENSE.txt000644 000765 000024 00000064470 14042362131 015445 0ustar00tangentstaff000000 000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! mysql++-3.3.0/rebake.bat000644 000765 000024 00000000031 14042362131 015522 0ustar00tangentstaff000000 000000 @echo on bakefile_gen %* mysql++-3.3.0/README-examples.txt000644 000765 000024 00000020553 14042362131 017126 0ustar00tangentstaff000000 000000 Building the Examples ~~~~~~~~~~~~~~~~~~~~~ If you're installing MySQL++ from the source tarball, the example programs get built when you build the library. If you change any example code, just say 'make' to rebuild the examples. The examples are built against the headers and library in the lib subdirectory, not against the ones you may have installed elsewhere on the system. If these example files were installed on your system as part of the -devel RPM, copy all the files to a directory you can write to, then say 'make' in that directory. This uses a simplified Makefile, which builds the examples against the headers and libraries installed in the system directories. Getting Started with the Examples ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MySQL++ is built as a shared library on most systems, and a DLL on Windows. Since it isn't built in the same directory as the examples, this means that your system won't be able to find the library without help until you install it. Since you generally want to run the examples _before_ installing the library, to test that the library actually works, we need a workaround. That workaround is the exrun script. There are two versions, a Bourne shell script called just exrun for POSIX systems, and exrun.bat for Windows. Before running the other examples, you must first create the sample database. On POSIX systems, you do that like so: $ ./exrun resetdb [-s server_addr] [-u user] [-p password] On Windows, that would instead be: C:\mysql++\> exrun.bat resetdb [-s server] [-u user] [-p pass] You don't have to give any of these options. If you don't pass -s, it assumes the database server is running on the same machine, and so tries to contact the server over some form of local IPC. If you don't pass -u, it uses your own user name when logging into to the database server. If you don't pass -p, it assumes the database user has an empty password, which hopefully is not true. The -s option accepts many different forms of address. The main one is some sort of TCP/IP address, with an optional port number or service name. On Unixy systems, you can give a Unix domain socket name. On Windows, you can give just a period to use named pipes, if the server supports it. All of these are legal: . localhost 172.20.0.252:12345 /var/run/mysqld.sock my.server.name.com:mysql If you give -s but don't give a port number or service name with it, it assumes the default, port 3306. Running the Other Command Line Examples ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The following examples use the database set up by resetdb, and have the same command line format as resetdb: simple1: Shows the item names for all records in the sample stock table. Try this one if you do nothing else. simple2: Similar to simple1, but it displays all columns from the sample stock table, not just the item name. simple3: Same as simple2, except that it retrieves the data with a "use" query instead of a "store" query. See the user manual for the difference between these methods. ssqls1-5: These demonstrate the SSQLS features. Read the SSQLS sections in the user manual for details about these examples. multiquery: MySQL++ allows you to issue multiple queries at once, and get the results as separate sets. This shows that, and also how to use stored procedures, which return their results in the same way as a multiquery. tquery1-3: Shows how to use the template query facility. transaction: Shows how to use the Transaction class to create transaction sets which automatically roll back if not explicitly committed. deadlock: Shows how to handle errors that happen when the database server detects a deadlock in a transaction set. Also demonstrates the need for BadQuery::errnum() store_if: Demonstrates the Query::store_if() method, which allows you to store the results of a query in an STL container conditionally. Think of it as a way to express rules for selecting records in C++, to be used when SQL's WHERE clause isn't powerful enough. for_each: Demonstrates the Query::for_each() method, which allows you to execute a query and call a functor on each returned row. This example uses this to gather statistics on the sample table's contents. cpoolp, cpoolw: Respectively, the POSIX and Windows threads variants of the ConnectionPool class demonstration. load_jpeg: Inserts a JPEG file into the sample database, for use by the cgi_jpeg example. (See below.) Unlike the other examples, this one takes anything given on the command line that isn't a switch to be a JPEG file name. We've included examples/logo.jpg as a sample, if you want to use that. fieldinf: Shows how to get information about the fields in a result set. (Types, etc.) dbinfo: Dumps a bunch of information about the database server and some of the data it's managing. If you run the load_jpeg example, you should consider also playing with the other half of the demonstration, cgi_jpeg. To run it, you'll need to install MySQL++ on a machine with a web server, then copy the cgi_jpeg program to the server's CGI directory. For example, on a stock Red Hat type box, that would be /var/www/cgi-bin. At that point, a request like http://my.server.com/cgi-bin/cgi_jpeg?id=1 should show the JPEG you loaded. The ID value to use will be that reported by load_jpeg. Dedicated Windows Examples ~~~~~~~~~~~~~~~~~~~~~~~~~~ If you're a Visual C++ user, there are two GUI examples, too: examples\vstudio\mfc.vcproj: MFC-based replacement for the simple2 example. examples\vstudio\wforms.vcproj: The same thing, only written in C++/CLI and using Windows Forms. Please follow the instructions in README-Visual-C++.txt before trying to build and run this example. The MySQL++ library build settings must be modified and the library rebuilt first. Although these examples show use of MySQL++ in a GUI rather than command line program, that's not the main point of these examples. What we're really showing here is how to deal with Unicode. The MySQL server prefers the UTF-8 encoding for Unicode, which works naturally with most non-Windows systems. Windows, on the other hand, uses a different Unicode character encoding, UCS-2. These examples show how to do the necessary conversions. (See the Unicode chapter in the user manual for more on this topic.) We need two different examples because Unicode conversions and string handling are so wildly different under .NET than with the native Win32 API. .NET makes these tasks much easier. These examples build and run as-is under Visual C++ 2005. To make them work with VC++ 2008, you will have to change several paths in both project's settings to reference the "vc2008" subdirectory instead of "vc2005": o Configuration Properties > Debugging > Working Directory o Configuration Properties > Linker > General > Additional Library Directories If you want to backport these examples to VC++ 2003, it's probably not hard. The main difficulty is that VS 2003 supports Managed C++, which isn't the same thing as C++/CLI. Special exrun Capabilities ~~~~~~~~~~~~~~~~~~~~~~~~~~ The Bourne shell version of the exrun script has a few features not avaiable in the Windows batch file version. These features let you run the examples under various debugging tools. You can get simple gdb debugging if you run an example like this: $ ./exrun gdb simple1 foo bar qux The script also supports valgrind, in memory leak testing mode: $ ./exrun valgrind simple1 foo bar qux mysql++-3.3.0/Makefile.in000644 000765 000024 00000114467 14042362135 015675 0ustar00tangentstaff000000 000000 # ========================================================================= # This makefile was generated by # Bakefile 0.2.11 (http://www.bakefile.org) # Do not modify, all changes will be overwritten! # ========================================================================= @MAKE_SET@ prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ INSTALL = @INSTALL@ SHARED_LD_CXX = @SHARED_LD_CXX@ LIBEXT = @LIBEXT@ LIBPREFIX = @LIBPREFIX@ SO_SUFFIX = @SO_SUFFIX@ DLLIMP_SUFFIX = @DLLIMP_SUFFIX@ EXEEXT = @EXEEXT@ LN_S = @LN_S@ PIC_FLAG = @PIC_FLAG@ SONAME_FLAG = @SONAME_FLAG@ STRIP = @STRIP@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_DIR = @INSTALL_DIR@ BK_DEPS = @BK_DEPS@ srcdir = @srcdir@ libdir = @libdir@ DLLPREFIX = @DLLPREFIX@ LIBS = @LIBS@ AR = @AR@ AROPTIONS = @AROPTIONS@ RANLIB = @RANLIB@ CXX = @CXX@ CXXFLAGS = @CXXFLAGS@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ ### Variables: ### DESTDIR = MYSQLPP_CXXFLAGS = -I. -I@MYSQL_C_INC_DIR@ $(PIC_FLAG) @PTHREAD_CFLAGS@ \ $(CPPFLAGS) $(CXXFLAGS) MYSQLPP_OBJECTS = \ mysqlpp_beemutex.o \ mysqlpp_cmdline.o \ mysqlpp_connection.o \ mysqlpp_cpool.o \ mysqlpp_datetime.o \ mysqlpp_dbdriver.o \ mysqlpp_field_names.o \ mysqlpp_field_types.o \ mysqlpp_manip.o \ mysqlpp_myset.o \ mysqlpp_mysql++.o \ mysqlpp_mystring.o \ mysqlpp_null.o \ mysqlpp_options.o \ mysqlpp_qparms.o \ mysqlpp_query.o \ mysqlpp_result.o \ mysqlpp_row.o \ mysqlpp_scopedconnection.o \ mysqlpp_sql_buffer.o \ mysqlpp_sqlstream.o \ mysqlpp_ssqls2.o \ mysqlpp_stadapter.o \ mysqlpp_tcp_connection.o \ mysqlpp_transaction.o \ mysqlpp_type_info.o \ mysqlpp_uds_connection.o \ mysqlpp_utility.o \ mysqlpp_vallist.o \ mysqlpp_wnp_connection.o SSQLS2PARSE_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ -I. @PTHREAD_CFLAGS@ \ $(CPPFLAGS) $(CXXFLAGS) SSQLS2PARSE_OBJECTS = \ ssqls2parse_parsev2.o SSQLSXLAT_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) SSQLSXLAT_OBJECTS = \ ssqlsxlat_genv2.o \ ssqlsxlat_main.o TEST_ARRAY_INDEX_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ \ $(CPPFLAGS) $(CXXFLAGS) TEST_ARRAY_INDEX_OBJECTS = \ test_array_index_array_index.o TEST_CPOOL_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) TEST_CPOOL_OBJECTS = \ test_cpool_cpool.o TEST_DATETIME_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) TEST_DATETIME_OBJECTS = \ test_datetime_datetime.o TEST_INTTYPES_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) TEST_INTTYPES_OBJECTS = \ test_inttypes_inttypes.o TEST_INSERTPOLICY_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ \ $(CPPFLAGS) $(CXXFLAGS) TEST_INSERTPOLICY_OBJECTS = \ test_insertpolicy_insertpolicy.o TEST_MANIP_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) TEST_MANIP_OBJECTS = \ test_manip_manip.o TEST_NULL_COMPARISON_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ \ $(CPPFLAGS) $(CXXFLAGS) TEST_NULL_COMPARISON_OBJECTS = \ test_null_comparison_null_comparison.o TEST_QUERY_COPY_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ \ $(CPPFLAGS) $(CXXFLAGS) TEST_QUERY_COPY_OBJECTS = \ test_query_copy_query_copy.o TEST_QSSQLS_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) TEST_QSSQLS_OBJECTS = \ test_qssqls_qssqls.o TEST_QSTREAM_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) TEST_QSTREAM_OBJECTS = \ test_qstream_qstream.o TEST_SQLSTREAM_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ \ $(CPPFLAGS) $(CXXFLAGS) TEST_SQLSTREAM_OBJECTS = \ test_sqlstream_sqlstream.o TEST_SSQLS2_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) TEST_SSQLS2_OBJECTS = \ test_ssqls2_ssqls2.o TEST_STRING_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) TEST_STRING_OBJECTS = \ test_string_string.o TEST_TCP_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) TEST_TCP_OBJECTS = \ test_tcp_tcp.o TEST_UDS_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) TEST_UDS_OBJECTS = \ test_uds_uds.o TEST_WNP_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) TEST_WNP_OBJECTS = \ test_wnp_wnp.o EXCOMMON_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) EXCOMMON_OBJECTS = \ excommon_printdata.o CGI_JPEG_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) CGI_JPEG_OBJECTS = \ cgi_jpeg_cgi_jpeg.o CPOOL_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) CPOOL_OBJECTS = \ cpool_cpool.o DBINFO_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) DBINFO_OBJECTS = \ dbinfo_dbinfo.o DEADLOCK_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) DEADLOCK_OBJECTS = \ deadlock_deadlock.o FIELDINF_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) FIELDINF_OBJECTS = \ fieldinf_fieldinf.o FOR_EACH_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) FOR_EACH_OBJECTS = \ for_each_for_each.o LOAD_JPEG_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) LOAD_JPEG_OBJECTS = \ load_jpeg_load_jpeg.o MULTIQUERY_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) MULTIQUERY_OBJECTS = \ multiquery_multiquery.o RESETDB_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) RESETDB_OBJECTS = \ resetdb_resetdb.o SIMPLE1_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) SIMPLE1_OBJECTS = \ simple1_simple1.o SIMPLE2_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) SIMPLE2_OBJECTS = \ simple2_simple2.o SIMPLE3_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) SIMPLE3_OBJECTS = \ simple3_simple3.o SSQLS1_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) SSQLS1_OBJECTS = \ ssqls1_ssqls1.o SSQLS2_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) SSQLS2_OBJECTS = \ ssqls2_ssqls2.o SSQLS3_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) SSQLS3_OBJECTS = \ ssqls3_ssqls3.o SSQLS4_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) SSQLS4_OBJECTS = \ ssqls4_ssqls4.o SSQLS5_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) SSQLS5_OBJECTS = \ ssqls5_ssqls5.o SSQLS6_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) SSQLS6_OBJECTS = \ ssqls6_ssqls6.o STORE_IF_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) STORE_IF_OBJECTS = \ store_if_store_if.o TQUERY1_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) TQUERY1_OBJECTS = \ tquery1_tquery1.o TQUERY2_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) TQUERY2_OBJECTS = \ tquery2_tquery2.o TQUERY3_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) TQUERY3_OBJECTS = \ tquery3_tquery3.o TQUERY4_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) TQUERY4_OBJECTS = \ tquery4_tquery4.o TRANSACTION_CXXFLAGS = -Ilib -I@MYSQL_C_INC_DIR@ @PTHREAD_CFLAGS@ $(CPPFLAGS) \ $(CXXFLAGS) TRANSACTION_OBJECTS = \ transaction_transaction.o ### Conditionally set variables: ### @COND_DEPS_TRACKING_0@CXXC = $(CXX) @COND_DEPS_TRACKING_1@CXXC = $(BK_DEPS) $(CXX) @COND_PLATFORM_OS2_1@__mysqlpp___importlib = -import \ @COND_PLATFORM_OS2_1@ $(LIBPREFIX)mysqlpp.$(DLLIMP_SUFFIX) @COND_WINDOWS_IMPLIB_1@__mysqlpp___importlib = \ @COND_WINDOWS_IMPLIB_1@ -Wl,--out-implib=$(LIBPREFIX)mysqlpp.$(DLLIMP_SUFFIX) @COND_PLATFORM_MACOSX_0_USE_SOVERSION_1@__mysqlpp___targetsuf2 \ @COND_PLATFORM_MACOSX_0_USE_SOVERSION_1@ = .$(SO_SUFFIX).3 @COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@__mysqlpp___targetsuf2 \ @COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@ = .3.$(SO_SUFFIX) @COND_USE_SOVERSION_0@__mysqlpp___targetsuf2 = .$(SO_SUFFIX) @COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@__mysqlpp___targetsuf3 \ @COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@ = \ @COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@ .$(SO_SUFFIX).3.3.0 @COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@__mysqlpp___targetsuf3 \ @COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@ = .3.3.0.$(SO_SUFFIX) @COND_USE_SOVERSION_1_USE_SOVERSOLARIS_1@__mysqlpp___targetsuf3 \ @COND_USE_SOVERSION_1_USE_SOVERSOLARIS_1@ = .$(SO_SUFFIX).3 @COND_USE_SOVERCYGWIN_1_USE_SOVERSION_1@__mysqlpp___targetsuf3 \ @COND_USE_SOVERCYGWIN_1_USE_SOVERSION_1@ = -3.$(SO_SUFFIX) @COND_USE_SOVERSION_0@__mysqlpp___targetsuf3 = .$(SO_SUFFIX) @COND_USE_SOVERLINUX_1@__mysqlpp___soname_flags = \ @COND_USE_SOVERLINUX_1@ $(SONAME_FLAG)$(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf2) @COND_USE_SOVERSOLARIS_1@__mysqlpp___soname_flags \ @COND_USE_SOVERSOLARIS_1@ = \ @COND_USE_SOVERSOLARIS_1@ $(SONAME_FLAG)$(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) COND_USE_SOTWOSYMLINKS_1___mysqlpp___so_symlinks_cmd = (cd .; rm -f \ $(LIBPREFIX)mysqlpp.$(DLLIMP_SUFFIX) \ $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf2); $(LN_S) \ $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) \ $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf2); $(LN_S) \ $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf2) \ $(LIBPREFIX)mysqlpp.$(DLLIMP_SUFFIX)) @COND_USE_SOTWOSYMLINKS_1@__mysqlpp___so_symlinks_cmd = $(COND_USE_SOTWOSYMLINKS_1___mysqlpp___so_symlinks_cmd) COND_USE_SOVERSOLARIS_1___mysqlpp___so_symlinks_cmd = (cd .; rm -f \ $(LIBPREFIX)mysqlpp.$(DLLIMP_SUFFIX); $(LN_S) \ $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) \ $(LIBPREFIX)mysqlpp.$(DLLIMP_SUFFIX)) @COND_USE_SOVERSOLARIS_1@__mysqlpp___so_symlinks_cmd = $(COND_USE_SOVERSOLARIS_1___mysqlpp___so_symlinks_cmd) COND_USE_SOTWOSYMLINKS_1___mysqlpp___so_symlinks_inst_cmd = rm -f \ $(LIBPREFIX)mysqlpp.$(DLLIMP_SUFFIX) \ $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf2); $(LN_S) \ $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) \ $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf2); $(LN_S) \ $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf2) \ $(LIBPREFIX)mysqlpp.$(DLLIMP_SUFFIX) @COND_USE_SOTWOSYMLINKS_1@__mysqlpp___so_symlinks_inst_cmd = $(COND_USE_SOTWOSYMLINKS_1___mysqlpp___so_symlinks_inst_cmd) COND_USE_SOVERSOLARIS_1___mysqlpp___so_symlinks_inst_cmd = rm -f \ $(LIBPREFIX)mysqlpp.$(DLLIMP_SUFFIX); $(LN_S) \ $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) \ $(LIBPREFIX)mysqlpp.$(DLLIMP_SUFFIX); @COND_USE_SOVERSOLARIS_1@__mysqlpp___so_symlinks_inst_cmd = $(COND_USE_SOVERSOLARIS_1___mysqlpp___so_symlinks_inst_cmd) COND_USE_SOTWOSYMLINKS_1___mysqlpp___so_symlinks_uninst_cmd = rm -f \ $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf2) \ $(LIBPREFIX)mysqlpp.$(DLLIMP_SUFFIX) @COND_USE_SOTWOSYMLINKS_1@__mysqlpp___so_symlinks_uninst_cmd = $(COND_USE_SOTWOSYMLINKS_1___mysqlpp___so_symlinks_uninst_cmd) @COND_USE_SOVERSOLARIS_1@__mysqlpp___so_symlinks_uninst_cmd \ @COND_USE_SOVERSOLARIS_1@ = rm -f $(LIBPREFIX)mysqlpp.$(DLLIMP_SUFFIX) @COND_PLATFORM_MACOSX_1@__mysqlpp___macinstnamecmd \ @COND_PLATFORM_MACOSX_1@ = -install_name \ @COND_PLATFORM_MACOSX_1@ $(libdir)/$(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf2) ### Targets: ### all: $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(LIBPREFIX)mysqlpp_ssqls2parse$(LIBEXT) ssqlsxlat$(EXEEXT) test_array_index$(EXEEXT) test_cpool$(EXEEXT) test_datetime$(EXEEXT) test_inttypes$(EXEEXT) test_insertpolicy$(EXEEXT) test_manip$(EXEEXT) test_null_comparison$(EXEEXT) test_query_copy$(EXEEXT) test_qssqls$(EXEEXT) test_qstream$(EXEEXT) test_sqlstream$(EXEEXT) test_ssqls2$(EXEEXT) test_string$(EXEEXT) test_tcp$(EXEEXT) test_uds$(EXEEXT) test_wnp$(EXEEXT) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) cgi_jpeg$(EXEEXT) cpool$(EXEEXT) dbinfo$(EXEEXT) deadlock$(EXEEXT) fieldinf$(EXEEXT) for_each$(EXEEXT) load_jpeg$(EXEEXT) multiquery$(EXEEXT) resetdb$(EXEEXT) simple1$(EXEEXT) simple2$(EXEEXT) simple3$(EXEEXT) ssqls1$(EXEEXT) ssqls2$(EXEEXT) ssqls3$(EXEEXT) ssqls4$(EXEEXT) ssqls5$(EXEEXT) ssqls6$(EXEEXT) store_if$(EXEEXT) tquery1$(EXEEXT) tquery2$(EXEEXT) tquery3$(EXEEXT) tquery4$(EXEEXT) transaction$(EXEEXT) install: install_mysqlpp $(INSTALL_DIR) $(DESTDIR)$(prefix)/include/mysql++ (cd $(srcdir) ; $(INSTALL_DATA) lib/*.h $(DESTDIR)$(prefix)/include/mysql++) uninstall: uninstall_mysqlpp (cd $(DESTDIR)$(prefix)/include/mysql++ ; rm -f *.h) -rmdir $(prefix)/include/mysql++ rm -f $(DESTDIR)$(libdir)/$(DLLPREFIX)mysqlpp.$(SO_SUFFIX) install-strip: install $(STRIP) $(DESTDIR)$(libdir)/$(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) clean: rm -rf ./.deps ./.pch rm -f ./*.o rm -f $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) rm -f $(LIBPREFIX)mysqlpp.$(DLLIMP_SUFFIX) rm -f $(LIBPREFIX)mysqlpp.$(DLLIMP_SUFFIX) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf2) rm -f $(LIBPREFIX)mysqlpp_ssqls2parse$(LIBEXT) rm -f ssqlsxlat$(EXEEXT) rm -f test_array_index$(EXEEXT) rm -f test_cpool$(EXEEXT) rm -f test_datetime$(EXEEXT) rm -f test_inttypes$(EXEEXT) rm -f test_insertpolicy$(EXEEXT) rm -f test_manip$(EXEEXT) rm -f test_null_comparison$(EXEEXT) rm -f test_query_copy$(EXEEXT) rm -f test_qssqls$(EXEEXT) rm -f test_qstream$(EXEEXT) rm -f test_sqlstream$(EXEEXT) rm -f test_ssqls2$(EXEEXT) rm -f test_string$(EXEEXT) rm -f test_tcp$(EXEEXT) rm -f test_uds$(EXEEXT) rm -f test_wnp$(EXEEXT) rm -f $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) rm -f cgi_jpeg$(EXEEXT) rm -f cpool$(EXEEXT) rm -f dbinfo$(EXEEXT) rm -f deadlock$(EXEEXT) rm -f fieldinf$(EXEEXT) rm -f for_each$(EXEEXT) rm -f load_jpeg$(EXEEXT) rm -f multiquery$(EXEEXT) rm -f resetdb$(EXEEXT) rm -f simple1$(EXEEXT) rm -f simple2$(EXEEXT) rm -f simple3$(EXEEXT) rm -f ssqls1$(EXEEXT) rm -f ssqls2$(EXEEXT) rm -f ssqls3$(EXEEXT) rm -f ssqls4$(EXEEXT) rm -f ssqls5$(EXEEXT) rm -f ssqls6$(EXEEXT) rm -f store_if$(EXEEXT) rm -f tquery1$(EXEEXT) rm -f tquery2$(EXEEXT) rm -f tquery3$(EXEEXT) rm -f tquery4$(EXEEXT) rm -f transaction$(EXEEXT) rm -rf doc/latex doc/pdf ; \ cd doc/html/refman ; \ rm -f doxygen.css ; \ for e in dot html js map md5 png ; \ do \ rm -f [a-z]*.$$e ; \ done distclean: clean rm -f config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3): $(MYSQLPP_OBJECTS) lib/ssqls.h lib/querydef.h $(SHARED_LD_CXX) $@ $(MYSQLPP_OBJECTS) $(__mysqlpp___importlib) $(__mysqlpp___soname_flags) $(__mysqlpp___macinstnamecmd) -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) $(LIBS) $(__mysqlpp___so_symlinks_cmd) install_mysqlpp: $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(INSTALL_DIR) $(DESTDIR)$(libdir) $(INSTALL_DATA) $(LIBPREFIX)mysqlpp.$(DLLIMP_SUFFIX) $(DESTDIR)$(libdir) $(INSTALL_PROGRAM) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(DESTDIR)$(libdir) (cd $(DESTDIR)$(libdir) ; $(__mysqlpp___so_symlinks_inst_cmd)) uninstall_mysqlpp: rm -f $(DESTDIR)$(libdir)/$(LIBPREFIX)mysqlpp.$(DLLIMP_SUFFIX) rm -f $(DESTDIR)$(libdir)/$(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) (cd $(DESTDIR)$(libdir) ; $(__mysqlpp___so_symlinks_uninst_cmd)) $(LIBPREFIX)mysqlpp_ssqls2parse$(LIBEXT): $(SSQLS2PARSE_OBJECTS) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) rm -f $@ $(AR) $(AROPTIONS) $@ $(SSQLS2PARSE_OBJECTS) $(RANLIB) $@ ssqlsxlat$(EXEEXT): $(SSQLSXLAT_OBJECTS) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(LIBPREFIX)mysqlpp_ssqls2parse$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(SSQLSXLAT_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp -lmysqlpp_ssqls2parse -lmysqlpp $(LIBS) test_array_index$(EXEEXT): $(TEST_ARRAY_INDEX_OBJECTS) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(TEST_ARRAY_INDEX_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp $(LIBS) test_cpool$(EXEEXT): $(TEST_CPOOL_OBJECTS) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(TEST_CPOOL_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp $(LIBS) test_datetime$(EXEEXT): $(TEST_DATETIME_OBJECTS) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(TEST_DATETIME_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp $(LIBS) test_inttypes$(EXEEXT): $(TEST_INTTYPES_OBJECTS) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(TEST_INTTYPES_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp $(LIBS) test_insertpolicy$(EXEEXT): $(TEST_INSERTPOLICY_OBJECTS) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(TEST_INSERTPOLICY_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp $(LIBS) test_manip$(EXEEXT): $(TEST_MANIP_OBJECTS) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(TEST_MANIP_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp $(LIBS) test_null_comparison$(EXEEXT): $(TEST_NULL_COMPARISON_OBJECTS) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(TEST_NULL_COMPARISON_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp $(LIBS) test_query_copy$(EXEEXT): $(TEST_QUERY_COPY_OBJECTS) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(TEST_QUERY_COPY_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp $(LIBS) test_qssqls$(EXEEXT): $(TEST_QSSQLS_OBJECTS) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(TEST_QSSQLS_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp $(LIBS) test_qstream$(EXEEXT): $(TEST_QSTREAM_OBJECTS) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(TEST_QSTREAM_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp $(LIBS) test_sqlstream$(EXEEXT): $(TEST_SQLSTREAM_OBJECTS) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(TEST_SQLSTREAM_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp $(LIBS) test_ssqls2$(EXEEXT): $(TEST_SSQLS2_OBJECTS) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(LIBPREFIX)mysqlpp_ssqls2parse$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(LIBPREFIX)mysqlpp_ssqls2parse$(LIBEXT) $(CXX) -o $@ $(TEST_SSQLS2_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp -lmysqlpp_ssqls2parse -lmysqlpp -lmysqlpp_ssqls2parse $(LIBS) test_string$(EXEEXT): $(TEST_STRING_OBJECTS) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(TEST_STRING_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp $(LIBS) test_tcp$(EXEEXT): $(TEST_TCP_OBJECTS) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(TEST_TCP_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp $(LIBS) test_uds$(EXEEXT): $(TEST_UDS_OBJECTS) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(TEST_UDS_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp $(LIBS) test_wnp$(EXEEXT): $(TEST_WNP_OBJECTS) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(TEST_WNP_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp $(LIBS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT): $(EXCOMMON_OBJECTS) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) rm -f $@ $(AR) $(AROPTIONS) $@ $(EXCOMMON_OBJECTS) $(RANLIB) $@ cgi_jpeg$(EXEEXT): $(CGI_JPEG_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(CGI_JPEG_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) cpool$(EXEEXT): $(CPOOL_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(CPOOL_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) dbinfo$(EXEEXT): $(DBINFO_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(DBINFO_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) deadlock$(EXEEXT): $(DEADLOCK_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(DEADLOCK_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) fieldinf$(EXEEXT): $(FIELDINF_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(FIELDINF_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) for_each$(EXEEXT): $(FOR_EACH_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(FOR_EACH_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) load_jpeg$(EXEEXT): $(LOAD_JPEG_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(LOAD_JPEG_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) multiquery$(EXEEXT): $(MULTIQUERY_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(MULTIQUERY_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) resetdb$(EXEEXT): $(RESETDB_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(RESETDB_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) simple1$(EXEEXT): $(SIMPLE1_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(SIMPLE1_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) simple2$(EXEEXT): $(SIMPLE2_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(SIMPLE2_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) simple3$(EXEEXT): $(SIMPLE3_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(SIMPLE3_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) ssqls1$(EXEEXT): $(SSQLS1_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(SSQLS1_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) ssqls2$(EXEEXT): $(SSQLS2_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(SSQLS2_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) ssqls3$(EXEEXT): $(SSQLS3_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(SSQLS3_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) ssqls4$(EXEEXT): $(SSQLS4_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(SSQLS4_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) ssqls5$(EXEEXT): $(SSQLS5_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(SSQLS5_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) ssqls6$(EXEEXT): $(SSQLS6_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(SSQLS6_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) store_if$(EXEEXT): $(STORE_IF_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(STORE_IF_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) tquery1$(EXEEXT): $(TQUERY1_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(TQUERY1_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) tquery2$(EXEEXT): $(TQUERY2_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(TQUERY2_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) tquery3$(EXEEXT): $(TQUERY3_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(TQUERY3_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) tquery4$(EXEEXT): $(TQUERY4_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(TQUERY4_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) transaction$(EXEEXT): $(TRANSACTION_OBJECTS) $(LIBPREFIX)mysqlpp_excommon$(LIBEXT) $(DLLPREFIX)mysqlpp$(__mysqlpp___targetsuf3) $(CXX) -o $@ $(TRANSACTION_OBJECTS) -L. -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ $(LDFLAGS) -lmysqlpp_excommon -lmysqlpp $(LIBS) Makefile: configure.ac install.hta.in mysql++.bkl mysql++.spec.in doc/userman/userman.dbx.in lib/Doxyfile.in lib/mysql++.h.in ssx/Doxyfile.in bakefile_gen ./config.status lib/ssqls.h: lib/ssqls.pl cd lib ; ./ssqls.pl lib/querydef.h: lib/querydef.pl cd lib ; ./querydef.pl tags: ctags --recurse=yes . ctags: tags doc/html/refman/index.html: lib/Doxyfile lib/*.cpp lib/*.h cd lib ; doxygen > /dev/null doc/html/refman/ssx/index.html: ssx/Doxyfile ssx/*.cpp ssx/*.h cd ssx ; doxygen > /dev/null doc/html/userman/index.html: doc/userman/*.dbx doc/userman/userman.dbx.in cd doc/userman ; make html pdf doc: doc/html/refman/index.html doc/html/refman/ssx/index.html doc/html/userman/index.html @PACKAGE_NAME@-@PACKAGE_VERSION@: for d in config \ doc/html/refman/search \ doc/html/refman/ssx \ doc/html/userman \ doc/refman/search \ doc/userman \ examples \ lib \ ssx \ test ; \ do \ mkdir -p @PACKAGE_NAME@-@PACKAGE_VERSION@/$$d ; \ done cp -RL *.bat *.in *.md *.txt abi.xml aclocal.m4 \ Bakefiles.bkgen bootstrap cleanmf config.guess config.h \ config.sub configure* dtest exrun install* Makefile.* \ mysql++.* osver @PACKAGE_NAME@-@PACKAGE_VERSION@ for d in vc200? ; do \ mkdir -p @PACKAGE_NAME@-@PACKAGE_VERSION@/$$d ; \ cp $$d/*.sln $$d/*.vcproj @PACKAGE_NAME@-@PACKAGE_VERSION@/$$d ; \ done cp config/*.m4 @PACKAGE_NAME@-@PACKAGE_VERSION@/config cp doc/userman/userman.dbx.in @PACKAGE_NAME@-@PACKAGE_VERSION@/doc/userman for e in cpp h jpg txt ; \ do \ cp examples/*.$$e @PACKAGE_NAME@-@PACKAGE_VERSION@/examples ; \ done for d in mfc wforms ; \ do \ mkdir -p @PACKAGE_NAME@-@PACKAGE_VERSION@/examples/vstudio/$$d ; \ cp examples/vstudio/$$d/* @PACKAGE_NAME@-@PACKAGE_VERSION@/examples/vstudio/$$d ; \ done cp lib/*.cpp lib/*.h lib/*.in lib/*.pl @PACKAGE_NAME@-@PACKAGE_VERSION@/lib cp test/*.cpp @PACKAGE_NAME@-@PACKAGE_VERSION@/test cp ssx/*.cpp ssx/*.h ssx/*.in @PACKAGE_NAME@-@PACKAGE_VERSION@/ssx cd @PACKAGE_NAME@-@PACKAGE_VERSION@ ; ./bootstrap nodoc nomaint rm -f @PACKAGE_NAME@-@PACKAGE_VERSION@/Makefile rm -f @PACKAGE_NAME@-@PACKAGE_VERSION@/config.log rm -f @PACKAGE_NAME@-@PACKAGE_VERSION@/config.status rm -fr @PACKAGE_NAME@-@PACKAGE_VERSION@/autom4te.cache abicheck: abi-compliance-checker -lib mysqlpp -dump abi.xml abi-compliance-checker -lib mysqlpp \ -old ../3.1.0/abi_dumps/mysqlpp/mysqlpp_3.1.0.abi.tar.gz \ -new ./abi_dumps/mysqlpp/mysqlpp_@PACKAGE_VERSION@.abi.tar.gz mv compat_reports/mysqlpp/*/compat_report.html ~/Desktop find compat_reports -empty -delete dist: doc @PACKAGE_NAME@-@PACKAGE_VERSION@ tar -chz -f @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz @PACKAGE_NAME@-@PACKAGE_VERSION@ rm -rf @PACKAGE_NAME@-@PACKAGE_VERSION@ rpm-prep: dist cp @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz ~/rpmbuild/SOURCES cd ~/rpmbuild/SPECS rpm: rpm-prep rpmbuild -ba mysql++.spec srpm: rpm-prep rpmbuild -bs mysql++.spec ebuild: dist cp @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz /usr/portage/distfiles cp mysql++.ebuild /usr/portage/dev-db/mysql++/@PACKAGE_NAME@-@PACKAGE_VERSION@.ebuild ebuild /usr/portage/dev-db/mysql++/@PACKAGE_NAME@-@PACKAGE_VERSION@.ebuild digest mysqlpp_beemutex.o: $(srcdir)/lib/beemutex.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/beemutex.cpp mysqlpp_cmdline.o: $(srcdir)/lib/cmdline.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/cmdline.cpp mysqlpp_connection.o: $(srcdir)/lib/connection.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/connection.cpp mysqlpp_cpool.o: $(srcdir)/lib/cpool.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/cpool.cpp mysqlpp_datetime.o: $(srcdir)/lib/datetime.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/datetime.cpp mysqlpp_dbdriver.o: $(srcdir)/lib/dbdriver.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/dbdriver.cpp mysqlpp_field_names.o: $(srcdir)/lib/field_names.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/field_names.cpp mysqlpp_field_types.o: $(srcdir)/lib/field_types.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/field_types.cpp mysqlpp_manip.o: $(srcdir)/lib/manip.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/manip.cpp mysqlpp_myset.o: $(srcdir)/lib/myset.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/myset.cpp mysqlpp_mysql++.o: $(srcdir)/lib/mysql++.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/mysql++.cpp mysqlpp_mystring.o: $(srcdir)/lib/mystring.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/mystring.cpp mysqlpp_null.o: $(srcdir)/lib/null.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/null.cpp mysqlpp_options.o: $(srcdir)/lib/options.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/options.cpp mysqlpp_qparms.o: $(srcdir)/lib/qparms.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/qparms.cpp mysqlpp_query.o: $(srcdir)/lib/query.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/query.cpp mysqlpp_result.o: $(srcdir)/lib/result.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/result.cpp mysqlpp_row.o: $(srcdir)/lib/row.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/row.cpp mysqlpp_scopedconnection.o: $(srcdir)/lib/scopedconnection.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/scopedconnection.cpp mysqlpp_sql_buffer.o: $(srcdir)/lib/sql_buffer.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/sql_buffer.cpp mysqlpp_sqlstream.o: $(srcdir)/lib/sqlstream.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/sqlstream.cpp mysqlpp_ssqls2.o: $(srcdir)/lib/ssqls2.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/ssqls2.cpp mysqlpp_stadapter.o: $(srcdir)/lib/stadapter.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/stadapter.cpp mysqlpp_tcp_connection.o: $(srcdir)/lib/tcp_connection.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/tcp_connection.cpp mysqlpp_transaction.o: $(srcdir)/lib/transaction.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/transaction.cpp mysqlpp_type_info.o: $(srcdir)/lib/type_info.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/type_info.cpp mysqlpp_uds_connection.o: $(srcdir)/lib/uds_connection.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/uds_connection.cpp mysqlpp_utility.o: $(srcdir)/lib/utility.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/utility.cpp mysqlpp_vallist.o: $(srcdir)/lib/vallist.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/vallist.cpp mysqlpp_wnp_connection.o: $(srcdir)/lib/wnp_connection.cpp $(CXXC) -c -o $@ $(MYSQLPP_CXXFLAGS) $(srcdir)/lib/wnp_connection.cpp ssqls2parse_parsev2.o: $(srcdir)/ssx/parsev2.cpp $(CXXC) -c -o $@ $(SSQLS2PARSE_CXXFLAGS) $(srcdir)/ssx/parsev2.cpp ssqlsxlat_genv2.o: $(srcdir)/ssx/genv2.cpp $(CXXC) -c -o $@ $(SSQLSXLAT_CXXFLAGS) $(srcdir)/ssx/genv2.cpp ssqlsxlat_main.o: $(srcdir)/ssx/main.cpp $(CXXC) -c -o $@ $(SSQLSXLAT_CXXFLAGS) $(srcdir)/ssx/main.cpp test_array_index_array_index.o: $(srcdir)/test/array_index.cpp $(CXXC) -c -o $@ $(TEST_ARRAY_INDEX_CXXFLAGS) $(srcdir)/test/array_index.cpp test_cpool_cpool.o: $(srcdir)/test/cpool.cpp $(CXXC) -c -o $@ $(TEST_CPOOL_CXXFLAGS) $(srcdir)/test/cpool.cpp test_datetime_datetime.o: $(srcdir)/test/datetime.cpp $(CXXC) -c -o $@ $(TEST_DATETIME_CXXFLAGS) $(srcdir)/test/datetime.cpp test_inttypes_inttypes.o: $(srcdir)/test/inttypes.cpp $(CXXC) -c -o $@ $(TEST_INTTYPES_CXXFLAGS) $(srcdir)/test/inttypes.cpp test_insertpolicy_insertpolicy.o: $(srcdir)/test/insertpolicy.cpp $(CXXC) -c -o $@ $(TEST_INSERTPOLICY_CXXFLAGS) $(srcdir)/test/insertpolicy.cpp test_manip_manip.o: $(srcdir)/test/manip.cpp $(CXXC) -c -o $@ $(TEST_MANIP_CXXFLAGS) $(srcdir)/test/manip.cpp test_null_comparison_null_comparison.o: $(srcdir)/test/null_comparison.cpp $(CXXC) -c -o $@ $(TEST_NULL_COMPARISON_CXXFLAGS) $(srcdir)/test/null_comparison.cpp test_query_copy_query_copy.o: $(srcdir)/test/query_copy.cpp $(CXXC) -c -o $@ $(TEST_QUERY_COPY_CXXFLAGS) $(srcdir)/test/query_copy.cpp test_qssqls_qssqls.o: $(srcdir)/test/qssqls.cpp $(CXXC) -c -o $@ $(TEST_QSSQLS_CXXFLAGS) $(srcdir)/test/qssqls.cpp test_qstream_qstream.o: $(srcdir)/test/qstream.cpp $(CXXC) -c -o $@ $(TEST_QSTREAM_CXXFLAGS) $(srcdir)/test/qstream.cpp test_sqlstream_sqlstream.o: $(srcdir)/test/sqlstream.cpp $(CXXC) -c -o $@ $(TEST_SQLSTREAM_CXXFLAGS) $(srcdir)/test/sqlstream.cpp test_ssqls2_ssqls2.o: $(srcdir)/test/ssqls2.cpp $(CXXC) -c -o $@ $(TEST_SSQLS2_CXXFLAGS) $(srcdir)/test/ssqls2.cpp test_string_string.o: $(srcdir)/test/string.cpp $(CXXC) -c -o $@ $(TEST_STRING_CXXFLAGS) $(srcdir)/test/string.cpp test_tcp_tcp.o: $(srcdir)/test/tcp.cpp $(CXXC) -c -o $@ $(TEST_TCP_CXXFLAGS) $(srcdir)/test/tcp.cpp test_uds_uds.o: $(srcdir)/test/uds.cpp $(CXXC) -c -o $@ $(TEST_UDS_CXXFLAGS) $(srcdir)/test/uds.cpp test_wnp_wnp.o: $(srcdir)/test/wnp.cpp $(CXXC) -c -o $@ $(TEST_WNP_CXXFLAGS) $(srcdir)/test/wnp.cpp excommon_printdata.o: $(srcdir)/examples/printdata.cpp $(CXXC) -c -o $@ $(EXCOMMON_CXXFLAGS) $(srcdir)/examples/printdata.cpp cgi_jpeg_cgi_jpeg.o: $(srcdir)/examples/cgi_jpeg.cpp $(CXXC) -c -o $@ $(CGI_JPEG_CXXFLAGS) $(srcdir)/examples/cgi_jpeg.cpp cpool_cpool.o: $(srcdir)/examples/cpool.cpp $(CXXC) -c -o $@ $(CPOOL_CXXFLAGS) $(srcdir)/examples/cpool.cpp dbinfo_dbinfo.o: $(srcdir)/examples/dbinfo.cpp $(CXXC) -c -o $@ $(DBINFO_CXXFLAGS) $(srcdir)/examples/dbinfo.cpp deadlock_deadlock.o: $(srcdir)/examples/deadlock.cpp $(CXXC) -c -o $@ $(DEADLOCK_CXXFLAGS) $(srcdir)/examples/deadlock.cpp fieldinf_fieldinf.o: $(srcdir)/examples/fieldinf.cpp $(CXXC) -c -o $@ $(FIELDINF_CXXFLAGS) $(srcdir)/examples/fieldinf.cpp for_each_for_each.o: $(srcdir)/examples/for_each.cpp $(CXXC) -c -o $@ $(FOR_EACH_CXXFLAGS) $(srcdir)/examples/for_each.cpp load_jpeg_load_jpeg.o: $(srcdir)/examples/load_jpeg.cpp $(CXXC) -c -o $@ $(LOAD_JPEG_CXXFLAGS) $(srcdir)/examples/load_jpeg.cpp multiquery_multiquery.o: $(srcdir)/examples/multiquery.cpp $(CXXC) -c -o $@ $(MULTIQUERY_CXXFLAGS) $(srcdir)/examples/multiquery.cpp resetdb_resetdb.o: $(srcdir)/examples/resetdb.cpp $(CXXC) -c -o $@ $(RESETDB_CXXFLAGS) $(srcdir)/examples/resetdb.cpp simple1_simple1.o: $(srcdir)/examples/simple1.cpp $(CXXC) -c -o $@ $(SIMPLE1_CXXFLAGS) $(srcdir)/examples/simple1.cpp simple2_simple2.o: $(srcdir)/examples/simple2.cpp $(CXXC) -c -o $@ $(SIMPLE2_CXXFLAGS) $(srcdir)/examples/simple2.cpp simple3_simple3.o: $(srcdir)/examples/simple3.cpp $(CXXC) -c -o $@ $(SIMPLE3_CXXFLAGS) $(srcdir)/examples/simple3.cpp ssqls1_ssqls1.o: $(srcdir)/examples/ssqls1.cpp $(CXXC) -c -o $@ $(SSQLS1_CXXFLAGS) $(srcdir)/examples/ssqls1.cpp ssqls2_ssqls2.o: $(srcdir)/examples/ssqls2.cpp $(CXXC) -c -o $@ $(SSQLS2_CXXFLAGS) $(srcdir)/examples/ssqls2.cpp ssqls3_ssqls3.o: $(srcdir)/examples/ssqls3.cpp $(CXXC) -c -o $@ $(SSQLS3_CXXFLAGS) $(srcdir)/examples/ssqls3.cpp ssqls4_ssqls4.o: $(srcdir)/examples/ssqls4.cpp $(CXXC) -c -o $@ $(SSQLS4_CXXFLAGS) $(srcdir)/examples/ssqls4.cpp ssqls5_ssqls5.o: $(srcdir)/examples/ssqls5.cpp $(CXXC) -c -o $@ $(SSQLS5_CXXFLAGS) $(srcdir)/examples/ssqls5.cpp ssqls6_ssqls6.o: $(srcdir)/examples/ssqls6.cpp $(CXXC) -c -o $@ $(SSQLS6_CXXFLAGS) $(srcdir)/examples/ssqls6.cpp store_if_store_if.o: $(srcdir)/examples/store_if.cpp $(CXXC) -c -o $@ $(STORE_IF_CXXFLAGS) $(srcdir)/examples/store_if.cpp tquery1_tquery1.o: $(srcdir)/examples/tquery1.cpp $(CXXC) -c -o $@ $(TQUERY1_CXXFLAGS) $(srcdir)/examples/tquery1.cpp tquery2_tquery2.o: $(srcdir)/examples/tquery2.cpp $(CXXC) -c -o $@ $(TQUERY2_CXXFLAGS) $(srcdir)/examples/tquery2.cpp tquery3_tquery3.o: $(srcdir)/examples/tquery3.cpp $(CXXC) -c -o $@ $(TQUERY3_CXXFLAGS) $(srcdir)/examples/tquery3.cpp tquery4_tquery4.o: $(srcdir)/examples/tquery4.cpp $(CXXC) -c -o $@ $(TQUERY4_CXXFLAGS) $(srcdir)/examples/tquery4.cpp transaction_transaction.o: $(srcdir)/examples/transaction.cpp $(CXXC) -c -o $@ $(TRANSACTION_CXXFLAGS) $(srcdir)/examples/transaction.cpp # Include dependency info, if present: @IF_GNU_MAKE@-include ./.deps/*.d .PHONY: all install uninstall clean distclean install_mysqlpp uninstall_mysqlpp \ tags mysql++-3.3.0/aclocal.m4000644 000765 000024 00000120267 14042362141 015460 0ustar00tangentstaff000000 000000 # generated automatically by aclocal 1.16.3 -*- Autoconf -*- # Copyright (C) 1996-2020 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) dnl dnl This file is part of Bakefile (http://www.bakefile.org) dnl dnl Copyright (C) 2003-2007 Vaclav Slavik, David Elliott and others dnl dnl Permission is hereby granted, free of charge, to any person obtaining a dnl copy of this software and associated documentation files (the "Software"), dnl to deal in the Software without restriction, including without limitation dnl the rights to use, copy, modify, merge, publish, distribute, sublicense, dnl and/or sell copies of the Software, and to permit persons to whom the dnl Software is furnished to do so, subject to the following conditions: dnl dnl The above copyright notice and this permission notice shall be included in dnl all copies or substantial portions of the Software. dnl dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL dnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER dnl DEALINGS IN THE SOFTWARE. dnl dnl Compiler detection macros by David Elliott and Vadim Zeitlin dnl dnl =========================================================================== dnl Macros to detect different C/C++ compilers dnl =========================================================================== dnl Based on autoconf _AC_LANG_COMPILER_GNU dnl _AC_BAKEFILE_LANG_COMPILER(NAME, LANG, SYMBOL, IF-YES, IF-NO) AC_DEFUN([_AC_BAKEFILE_LANG_COMPILER], [ AC_LANG_PUSH($2) AC_CACHE_CHECK( [whether we are using the $1 $2 compiler], [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3], [AC_TRY_COMPILE( [], [ #ifndef $3 choke me #endif ], [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3=yes], [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3=no] ) ] ) if test "x$bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3" = "xyes"; then :; $4 else :; $5 fi AC_LANG_POP($2) ]) dnl More specific version of the above macro checking whether the compiler dnl version is at least the given one (assumes that we do use this compiler) dnl dnl _AC_BAKEFILE_LANG_COMPILER_LATER_THAN(NAME, LANG, SYMBOL, VER, VERMSG, IF-YES, IF-NO) AC_DEFUN([_AC_BAKEFILE_LANG_COMPILER_LATER_THAN], [ AC_LANG_PUSH($2) AC_CACHE_CHECK( [whether we are using $1 $2 compiler v$5 or later], [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3[]_lt_[]$4], [AC_TRY_COMPILE( [], [ #ifndef $3 || $3 < $4 choke me #endif ], [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3[]_lt_[]$4=yes], [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3[]_lt_[]$4=no] ) ] ) if test "x$bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3[]_lt_[]$4" = "xyes"; then :; $6 else :; $7 fi AC_LANG_POP($2) ]) dnl IBM xlC compiler defines __xlC__ for both C and C++ AC_DEFUN([AC_BAKEFILE_PROG_XLCC], [ _AC_BAKEFILE_LANG_COMPILER([IBM xlC], C, __xlC__, XLCC=yes) ]) AC_DEFUN([AC_BAKEFILE_PROG_XLCXX], [ _AC_BAKEFILE_LANG_COMPILER([IBM xlC], C++, __xlC__, XLCXX=yes) ]) dnl recent versions of SGI mipsPro compiler define _SGI_COMPILER_VERSION dnl dnl NB: old versions define _COMPILER_VERSION but this could probably be dnl defined by other compilers too so don't test for it to be safe AC_DEFUN([AC_BAKEFILE_PROG_SGICC], [ _AC_BAKEFILE_LANG_COMPILER(SGI, C, _SGI_COMPILER_VERSION, SGICC=yes) ]) AC_DEFUN([AC_BAKEFILE_PROG_SGICXX], [ _AC_BAKEFILE_LANG_COMPILER(SGI, C++, _SGI_COMPILER_VERSION, SGICXX=yes) ]) dnl Sun compiler defines __SUNPRO_C/__SUNPRO_CC AC_DEFUN([AC_BAKEFILE_PROG_SUNCC], [ _AC_BAKEFILE_LANG_COMPILER(Sun, C, __SUNPRO_C, SUNCC=yes) ]) AC_DEFUN([AC_BAKEFILE_PROG_SUNCXX], [ _AC_BAKEFILE_LANG_COMPILER(Sun, C++, __SUNPRO_CC, SUNCXX=yes) ]) dnl Intel icc compiler defines __INTEL_COMPILER for both C and C++ AC_DEFUN([AC_BAKEFILE_PROG_INTELCC], [ _AC_BAKEFILE_LANG_COMPILER(Intel, C, __INTEL_COMPILER, INTELCC=yes) ]) AC_DEFUN([AC_BAKEFILE_PROG_INTELCXX], [ _AC_BAKEFILE_LANG_COMPILER(Intel, C++, __INTEL_COMPILER, INTELCXX=yes) ]) dnl Intel compiler command line options changed in incompatible ways sometimes dnl before v8 (-KPIC was replaced with gcc-compatible -fPIC) and again in v10 dnl (-create-pch deprecated in favour of -pch-create) so we need to test for dnl its exact version too AC_DEFUN([AC_BAKEFILE_PROG_INTELCC_8], [ _AC_BAKEFILE_LANG_COMPILER_LATER_THAN(Intel, C, __INTEL_COMPILER, 800, 8, INTELCC8=yes) ]) AC_DEFUN([AC_BAKEFILE_PROG_INTELCXX_8], [ _AC_BAKEFILE_LANG_COMPILER_LATER_THAN(Intel, C++, __INTEL_COMPILER, 800, 8, INTELCXX8=yes) ]) AC_DEFUN([AC_BAKEFILE_PROG_INTELCC_10], [ _AC_BAKEFILE_LANG_COMPILER_LATER_THAN(Intel, C, __INTEL_COMPILER, 1000, 10, INTELCC10=yes) ]) AC_DEFUN([AC_BAKEFILE_PROG_INTELCXX_10], [ _AC_BAKEFILE_LANG_COMPILER_LATER_THAN(Intel, C++, __INTEL_COMPILER, 1000, 10, INTELCXX10=yes) ]) dnl HP-UX aCC: see http://docs.hp.com/en/6162/preprocess.htm#macropredef AC_DEFUN([AC_BAKEFILE_PROG_HPCC], [ _AC_BAKEFILE_LANG_COMPILER(HP, C, __HP_cc, HPCC=yes) ]) AC_DEFUN([AC_BAKEFILE_PROG_HPCXX], [ _AC_BAKEFILE_LANG_COMPILER(HP, C++, __HP_aCC, HPCXX=yes) ]) dnl Tru64 cc and cxx AC_DEFUN([AC_BAKEFILE_PROG_COMPAQCC], [ _AC_BAKEFILE_LANG_COMPILER(Compaq, C, __DECC, COMPAQCC=yes) ]) AC_DEFUN([AC_BAKEFILE_PROG_COMPAQCXX], [ _AC_BAKEFILE_LANG_COMPILER(Compaq, C++, __DECCXX, COMPAQCXX=yes) ]) dnl =========================================================================== dnl Macros to do all of the compiler detections as one macro dnl =========================================================================== dnl check for different proprietary compilers depending on target platform dnl _AC_BAKEFILE_PROG_COMPILER(LANG) AC_DEFUN([_AC_BAKEFILE_PROG_COMPILER], [ AC_REQUIRE([AC_PROG_$1]) dnl Intel compiler can be used under several different OS and even dnl different architectures (x86, amd64 and Itanium) so it's easier to just dnl always test for it AC_BAKEFILE_PROG_INTEL$1 dnl If we use Intel compiler we also need to know its version if test "$INTEL$1" = "yes"; then AC_BAKEFILE_PROG_INTEL$1_8 AC_BAKEFILE_PROG_INTEL$1_10 fi dnl if we're using gcc, we can't be using any of incompatible compilers if test "x$G$1" != "xyes"; then dnl most of these compilers are only used under well-defined OS so dnl don't waste time checking for them on other ones case `uname -s` in AIX*) AC_BAKEFILE_PROG_XL$1 ;; Darwin) AC_BAKEFILE_PROG_XL$1 ;; IRIX*) AC_BAKEFILE_PROG_SGI$1 ;; Linux*) dnl Sun CC is now available under Linux too, test for it unless dnl we already found that we were using a different compiler if test "$INTEL$1" != "yes"; then AC_BAKEFILE_PROG_SUN$1 fi ;; HP-UX*) AC_BAKEFILE_PROG_HP$1 ;; OSF1) AC_BAKEFILE_PROG_COMPAQ$1 ;; SunOS) AC_BAKEFILE_PROG_SUN$1 ;; esac fi ]) AC_DEFUN([AC_BAKEFILE_PROG_CC], [ _AC_BAKEFILE_PROG_COMPILER(CC) ]) AC_DEFUN([AC_BAKEFILE_PROG_CXX], [ _AC_BAKEFILE_PROG_COMPILER(CXX) ]) dnl dnl This file is part of Bakefile (http://www.bakefile.org) dnl dnl Copyright (C) 2003-2007 Vaclav Slavik and others dnl dnl Permission is hereby granted, free of charge, to any person obtaining a dnl copy of this software and associated documentation files (the "Software"), dnl to deal in the Software without restriction, including without limitation dnl the rights to use, copy, modify, merge, publish, distribute, sublicense, dnl and/or sell copies of the Software, and to permit persons to whom the dnl Software is furnished to do so, subject to the following conditions: dnl dnl The above copyright notice and this permission notice shall be included in dnl all copies or substantial portions of the Software. dnl dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL dnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER dnl DEALINGS IN THE SOFTWARE. dnl dnl Support macros for makefiles generated by BAKEFILE. dnl dnl --------------------------------------------------------------------------- dnl Lots of compiler & linker detection code contained here was taken from dnl wxWidgets configure.in script (see https://www.wxwidgets.org) dnl --------------------------------------------------------------------------- dnl --------------------------------------------------------------------------- dnl AC_BAKEFILE_GNUMAKE dnl dnl Detects GNU make dnl --------------------------------------------------------------------------- AC_DEFUN([AC_BAKEFILE_GNUMAKE], [ dnl does make support "-include" (only GNU make does AFAIK)? AC_CACHE_CHECK([if make is GNU make], bakefile_cv_prog_makeisgnu, [ if ( ${SHELL-sh} -c "${MAKE-make} --version" 2> /dev/null | egrep -s GNU > /dev/null); then bakefile_cv_prog_makeisgnu="yes" else bakefile_cv_prog_makeisgnu="no" fi ]) if test "x$bakefile_cv_prog_makeisgnu" = "xyes"; then IF_GNU_MAKE="" else IF_GNU_MAKE="#" fi AC_SUBST(IF_GNU_MAKE) ]) dnl --------------------------------------------------------------------------- dnl AC_BAKEFILE_PLATFORM dnl dnl Detects platform and sets PLATFORM_XXX variables accordingly dnl --------------------------------------------------------------------------- AC_DEFUN([AC_BAKEFILE_PLATFORM], [ PLATFORM_UNIX=0 PLATFORM_WIN32=0 PLATFORM_MAC=0 PLATFORM_MACOS=0 PLATFORM_MACOSX=0 PLATFORM_BEOS=0 if test "x$BAKEFILE_FORCE_PLATFORM" = "x"; then case "${BAKEFILE_HOST}" in *-*-mingw32* ) PLATFORM_WIN32=1 ;; *-*-darwin* ) PLATFORM_MAC=1 PLATFORM_MACOSX=1 ;; *-*-beos* ) PLATFORM_BEOS=1 ;; powerpc-apple-macos* ) PLATFORM_MAC=1 PLATFORM_MACOS=1 ;; * ) PLATFORM_UNIX=1 ;; esac else case "$BAKEFILE_FORCE_PLATFORM" in win32 ) PLATFORM_WIN32=1 ;; darwin ) PLATFORM_MAC=1 PLATFORM_MACOSX=1 ;; unix ) PLATFORM_UNIX=1 ;; beos ) PLATFORM_BEOS=1 ;; * ) AC_MSG_ERROR([Unknown platform: $BAKEFILE_FORCE_PLATFORM]) ;; esac fi AC_SUBST(PLATFORM_UNIX) AC_SUBST(PLATFORM_WIN32) AC_SUBST(PLATFORM_MAC) AC_SUBST(PLATFORM_MACOS) AC_SUBST(PLATFORM_MACOSX) AC_SUBST(PLATFORM_BEOS) ]) dnl --------------------------------------------------------------------------- dnl AC_BAKEFILE_PLATFORM_SPECIFICS dnl dnl Sets misc platform-specific settings dnl --------------------------------------------------------------------------- AC_DEFUN([AC_BAKEFILE_PLATFORM_SPECIFICS], [ case "${BAKEFILE_HOST}" in *-*-darwin* ) dnl For Unix to MacOS X porting instructions, see: dnl http://fink.sourceforge.net/doc/porting/porting.html if test "x$GCC" = "xyes"; then CFLAGS="$CFLAGS -fno-common" CXXFLAGS="$CXXFLAGS -fno-common" fi if test "x$XLCC" = "xyes"; then CFLAGS="$CFLAGS -qnocommon" CXXFLAGS="$CXXFLAGS -qnocommon" fi ;; i*86-*-beos* ) LDFLAGS="-L/boot/develop/lib/x86 $LDFLAGS" ;; esac ]) dnl --------------------------------------------------------------------------- dnl AC_BAKEFILE_SUFFIXES dnl dnl Detects shared various suffixes for shared libraries, libraries, programs, dnl plugins etc. dnl --------------------------------------------------------------------------- AC_DEFUN([AC_BAKEFILE_SUFFIXES], [ SO_SUFFIX="so" SO_SUFFIX_MODULE="so" EXEEXT="" LIBPREFIX="lib" LIBEXT=".a" DLLPREFIX="lib" DLLPREFIX_MODULE="" DLLIMP_SUFFIX="" dlldir="$libdir" case "${BAKEFILE_HOST}" in dnl PA-RISC HP systems used .sl but IA64 use ELF-64 and so use the dnl standard .so extension ia64-hp-hpux* ) ;; *-hp-hpux* ) SO_SUFFIX="sl" SO_SUFFIX_MODULE="sl" ;; *-*-aix* ) dnl quoting from dnl http://www-1.ibm.com/servers/esdd/articles/gnu.html: dnl Both archive libraries and shared libraries on AIX have an dnl .a extension. This will explain why you can't link with an dnl .so and why it works with the name changed to .a. SO_SUFFIX="a" SO_SUFFIX_MODULE="a" ;; *-*-cygwin* ) SO_SUFFIX="dll" SO_SUFFIX_MODULE="dll" DLLIMP_SUFFIX="dll.a" EXEEXT=".exe" DLLPREFIX="cyg" dlldir="$bindir" ;; *-*-mingw32* ) SO_SUFFIX="dll" SO_SUFFIX_MODULE="dll" DLLIMP_SUFFIX="dll.a" EXEEXT=".exe" DLLPREFIX="" dlldir="$bindir" ;; *-*-darwin* ) SO_SUFFIX="dylib" SO_SUFFIX_MODULE="bundle" ;; esac if test "x$DLLIMP_SUFFIX" = "x" ; then DLLIMP_SUFFIX="$SO_SUFFIX" fi AC_SUBST(SO_SUFFIX) AC_SUBST(SO_SUFFIX_MODULE) AC_SUBST(DLLIMP_SUFFIX) AC_SUBST(EXEEXT) AC_SUBST(LIBPREFIX) AC_SUBST(LIBEXT) AC_SUBST(DLLPREFIX) AC_SUBST(DLLPREFIX_MODULE) AC_SUBST(dlldir) ]) dnl --------------------------------------------------------------------------- dnl AC_BAKEFILE_SHARED_LD dnl dnl Detects command for making shared libraries, substitutes SHARED_LD_CC dnl and SHARED_LD_CXX. dnl --------------------------------------------------------------------------- AC_DEFUN([AC_BAKEFILE_SHARED_LD], [ dnl the extra compiler flags needed for compilation of shared library PIC_FLAG="" if test "x$GCC" = "xyes"; then dnl the switch for gcc is the same under all platforms PIC_FLAG="-fPIC" fi dnl Defaults for GCC and ELF .so shared libs: SHARED_LD_CC="\$(CC) -shared ${PIC_FLAG} -o" SHARED_LD_CXX="\$(CXX) -shared ${PIC_FLAG} -o" WINDOWS_IMPLIB=0 case "${BAKEFILE_HOST}" in *-hp-hpux* ) dnl default settings are good for gcc but not for the native HP-UX if test "x$GCC" != "xyes"; then dnl no idea why it wants it, but it does LDFLAGS="$LDFLAGS -L/usr/lib" SHARED_LD_CC="${CC} -b -o" SHARED_LD_CXX="${CXX} -b -o" PIC_FLAG="+Z" fi ;; *-*-linux* ) dnl newer icc versions use -fPIC just as gcc does and, in fact, the dnl newest (v10+) ones don't even understand -KPIC any longer if test "$INTELCC" = "yes" -a "$INTELCC8" != "yes"; then PIC_FLAG="-KPIC" elif test "x$SUNCXX" = "xyes"; then SHARED_LD_CC="${CC} -G -o" SHARED_LD_CXX="${CXX} -G -o" PIC_FLAG="-KPIC" fi ;; *-*-solaris2* ) if test "x$SUNCXX" = xyes ; then SHARED_LD_CC="${CC} -G -o" SHARED_LD_CXX="${CXX} -G -o" PIC_FLAG="-KPIC" fi ;; *-*-darwin* ) AC_BAKEFILE_CREATE_FILE_SHARED_LD_SH chmod +x shared-ld-sh SHARED_LD_MODULE_CC="`pwd`/shared-ld-sh -bundle -headerpad_max_install_names -o" SHARED_LD_MODULE_CXX="CXX=\"\$(CXX)\" $SHARED_LD_MODULE_CC" dnl Most apps benefit from being fully binded (its faster and static dnl variables initialized at startup work). dnl This can be done either with the exe linker flag -Wl,-bind_at_load dnl or with a double stage link in order to create a single module dnl "-init _wxWindowsDylibInit" not useful with lazy linking solved dnl If using newer dev tools then there is a -single_module flag that dnl we can use to do this for dylibs, otherwise we'll need to use a helper dnl script. Check the version of gcc to see which way we can go: AC_CACHE_CHECK([for gcc 3.1 or later], bakefile_cv_gcc31, [ AC_TRY_COMPILE([], [ #if (__GNUC__ < 3) || \ ((__GNUC__ == 3) && (__GNUC_MINOR__ < 1)) This is old gcc #endif ], [ bakefile_cv_gcc31=yes ], [ bakefile_cv_gcc31=no ] ) ]) if test "$bakefile_cv_gcc31" = "no"; then dnl Use the shared-ld-sh helper script SHARED_LD_CC="`pwd`/shared-ld-sh -dynamiclib -headerpad_max_install_names -o" SHARED_LD_CXX="$SHARED_LD_CC" else dnl Use the -single_module flag and let the linker do it for us SHARED_LD_CC="\${CC} -dynamiclib -single_module -headerpad_max_install_names -o" SHARED_LD_CXX="\${CXX} -dynamiclib -single_module -headerpad_max_install_names -o" fi if test "x$GCC" == "xyes"; then PIC_FLAG="-dynamic -fPIC" fi if test "x$XLCC" = "xyes"; then PIC_FLAG="-dynamic -DPIC" fi ;; *-*-aix* ) if test "x$GCC" = "xyes"; then dnl at least gcc 2.95 warns that -fPIC is ignored when dnl compiling each and every file under AIX which is annoying, dnl so don't use it there (it's useless as AIX runs on dnl position-independent architectures only anyhow) PIC_FLAG="" dnl -bexpfull is needed by AIX linker to export all symbols (by dnl default it doesn't export any and even with -bexpall it dnl doesn't export all C++ support symbols, e.g. vtable dnl pointers) but it's only available starting from 5.1 (with dnl maintenance pack 2, whatever this is), see dnl http://www-128.ibm.com/developerworks/eserver/articles/gnu.html case "${BAKEFILE_HOST}" in *-*-aix5* ) LD_EXPFULL="-Wl,-bexpfull" ;; esac SHARED_LD_CC="\$(CC) -shared $LD_EXPFULL -o" SHARED_LD_CXX="\$(CXX) -shared $LD_EXPFULL -o" else dnl FIXME: makeC++SharedLib is obsolete, what should we do for dnl recent AIX versions? AC_CHECK_PROG(AIX_CXX_LD, makeC++SharedLib, makeC++SharedLib, /usr/lpp/xlC/bin/makeC++SharedLib) SHARED_LD_CC="$AIX_CC_LD -p 0 -o" SHARED_LD_CXX="$AIX_CXX_LD -p 0 -o" fi ;; *-*-beos* ) dnl can't use gcc under BeOS for shared library creation because it dnl complains about missing 'main' SHARED_LD_CC="${LD} -nostart -o" SHARED_LD_CXX="${LD} -nostart -o" ;; *-*-irix* ) dnl default settings are ok for gcc if test "x$GCC" != "xyes"; then PIC_FLAG="-KPIC" fi ;; *-*-cygwin* | *-*-mingw32* ) PIC_FLAG="" SHARED_LD_CC="\$(CC) -shared -o" SHARED_LD_CXX="\$(CXX) -shared -o" WINDOWS_IMPLIB=1 ;; powerpc-apple-macos* | \ *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | *-*-gnu* | *-*-k*bsd*-gnu | \ *-*-mirbsd* | \ *-*-sunos4* | \ *-*-osf* | \ *-*-dgux5* | \ *-*-sysv5* ) dnl defaults are ok ;; *) AC_MSG_ERROR(unknown system type $BAKEFILE_HOST.) esac if test "x$PIC_FLAG" != "x" ; then PIC_FLAG="$PIC_FLAG -DPIC" fi if test "x$SHARED_LD_MODULE_CC" = "x" ; then SHARED_LD_MODULE_CC="$SHARED_LD_CC" fi if test "x$SHARED_LD_MODULE_CXX" = "x" ; then SHARED_LD_MODULE_CXX="$SHARED_LD_CXX" fi AC_SUBST(SHARED_LD_CC) AC_SUBST(SHARED_LD_CXX) AC_SUBST(SHARED_LD_MODULE_CC) AC_SUBST(SHARED_LD_MODULE_CXX) AC_SUBST(PIC_FLAG) AC_SUBST(WINDOWS_IMPLIB) ]) dnl --------------------------------------------------------------------------- dnl AC_BAKEFILE_SHARED_VERSIONS dnl dnl Detects linker options for attaching versions (sonames) to shared libs. dnl --------------------------------------------------------------------------- AC_DEFUN([AC_BAKEFILE_SHARED_VERSIONS], [ USE_SOVERSION=0 USE_SOVERLINUX=0 USE_SOVERSOLARIS=0 USE_SOVERCYGWIN=0 USE_SOTWOSYMLINKS=0 USE_MACVERSION=0 SONAME_FLAG= case "${BAKEFILE_HOST}" in *-*-linux* | *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | \ *-*-k*bsd*-gnu | *-*-mirbsd* | *-*-gnu* ) if test "x$SUNCXX" = "xyes"; then SONAME_FLAG="-h " else SONAME_FLAG="-Wl,-soname," fi USE_SOVERSION=1 USE_SOVERLINUX=1 USE_SOTWOSYMLINKS=1 ;; *-*-solaris2* ) SONAME_FLAG="-h " USE_SOVERSION=1 USE_SOVERSOLARIS=1 ;; *-*-darwin* ) USE_MACVERSION=1 USE_SOVERSION=1 USE_SOTWOSYMLINKS=1 ;; *-*-cygwin* ) USE_SOVERSION=1 USE_SOVERCYGWIN=1 ;; esac AC_SUBST(USE_SOVERSION) AC_SUBST(USE_SOVERLINUX) AC_SUBST(USE_SOVERSOLARIS) AC_SUBST(USE_SOVERCYGWIN) AC_SUBST(USE_MACVERSION) AC_SUBST(USE_SOTWOSYMLINKS) AC_SUBST(SONAME_FLAG) ]) dnl --------------------------------------------------------------------------- dnl AC_BAKEFILE_DEPS dnl dnl Detects available C/C++ dependency tracking options dnl --------------------------------------------------------------------------- AC_DEFUN([AC_BAKEFILE_DEPS], [ AC_ARG_ENABLE([dependency-tracking], AS_HELP_STRING([--disable-dependency-tracking], [don't use dependency tracking even if the compiler can]), [bk_use_trackdeps="$enableval"]) AC_MSG_CHECKING([for dependency tracking method]) BK_DEPS="" if test "x$bk_use_trackdeps" = "xno" ; then DEPS_TRACKING=0 AC_MSG_RESULT([disabled]) else DEPS_TRACKING=1 if test "x$GCC" = "xyes"; then DEPSMODE=gcc DEPSFLAG="-MMD" AC_MSG_RESULT([gcc]) elif test "x$SUNCC" = "xyes"; then DEPSMODE=unixcc DEPSFLAG="-xM1" AC_MSG_RESULT([Sun cc]) elif test "x$SGICC" = "xyes"; then DEPSMODE=unixcc DEPSFLAG="-M" AC_MSG_RESULT([SGI cc]) elif test "x$HPCC" = "xyes"; then DEPSMODE=unixcc DEPSFLAG="+make" AC_MSG_RESULT([HP cc]) elif test "x$COMPAQCC" = "xyes"; then DEPSMODE=gcc DEPSFLAG="-MD" AC_MSG_RESULT([Compaq cc]) else DEPS_TRACKING=0 AC_MSG_RESULT([none]) fi if test $DEPS_TRACKING = 1 ; then AC_BAKEFILE_CREATE_FILE_BK_DEPS chmod +x bk-deps dnl FIXME: make this $(top_builddir)/bk-deps once autoconf-2.60 dnl is required (and so top_builddir is never empty): BK_DEPS="`pwd`/bk-deps" fi fi AC_SUBST(DEPS_TRACKING) AC_SUBST(BK_DEPS) ]) dnl --------------------------------------------------------------------------- dnl AC_BAKEFILE_CHECK_BASIC_STUFF dnl dnl Checks for presence of basic programs, such as C and C++ compiler, "ranlib" dnl or "install" dnl --------------------------------------------------------------------------- AC_DEFUN([AC_BAKEFILE_CHECK_BASIC_STUFF], [ AC_PROG_RANLIB AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET AC_SUBST(MAKE_SET) if test "x$SUNCXX" = "xyes"; then dnl Sun C++ compiler requires special way of creating static libs; dnl see here for more details: dnl https://sourceforge.net/tracker/?func=detail&atid=109863&aid=1229751&group_id=9863 AR=$CXX AROPTIONS="-xar -o" AC_SUBST(AR) elif test "x$SGICC" = "xyes"; then dnl Almost the same as above for SGI mipsPro compiler AR=$CXX AROPTIONS="-ar -o" AC_SUBST(AR) else AC_CHECK_TOOL(AR, ar, ar) AROPTIONS=rc fi AC_SUBST(AROPTIONS) AC_CHECK_TOOL(STRIP, strip, :) AC_CHECK_TOOL(NM, nm, :) dnl Don't use `install -d`, see https://trac.wxwidgets.org/ticket/13452 INSTALL_DIR="mkdir -p" AC_SUBST(INSTALL_DIR) LDFLAGS_GUI= case ${BAKEFILE_HOST} in *-*-cygwin* | *-*-mingw32* ) LDFLAGS_GUI="-mwindows" esac AC_SUBST(LDFLAGS_GUI) ]) dnl --------------------------------------------------------------------------- dnl AC_BAKEFILE_RES_COMPILERS dnl dnl Checks for presence of resource compilers for win32 or mac dnl --------------------------------------------------------------------------- AC_DEFUN([AC_BAKEFILE_RES_COMPILERS], [ case ${BAKEFILE_HOST} in *-*-cygwin* | *-*-mingw32* ) dnl Check for win32 resources compiler: AC_CHECK_TOOL(WINDRES, windres) ;; esac AC_SUBST(WINDRES) ]) dnl --------------------------------------------------------------------------- dnl AC_BAKEFILE_PRECOMP_HEADERS dnl dnl Check for precompiled headers support (GCC >= 3.4) dnl --------------------------------------------------------------------------- AC_DEFUN([AC_BAKEFILE_PRECOMP_HEADERS], [ AC_ARG_ENABLE([precomp-headers], AS_HELP_STRING([--disable-precomp-headers], [don't use precompiled headers even if compiler can]), [bk_use_pch="$enableval"]) GCC_PCH=0 ICC_PCH=0 USE_PCH=0 BK_MAKE_PCH="" case ${BAKEFILE_HOST} in *-*-cygwin* ) dnl PCH support is broken in cygwin gcc because of unportable dnl assumptions about mmap() in gcc code which make PCH generation dnl fail erratically; disable PCH completely until this is fixed bk_use_pch="no" ;; esac if test "x$bk_use_pch" = "x" -o "x$bk_use_pch" = "xyes" ; then if test "x$GCC" = "xyes"; then dnl test if we have gcc-3.4: AC_MSG_CHECKING([if the compiler supports precompiled headers]) AC_TRY_COMPILE([], [ #if !defined(__GNUC__) || !defined(__GNUC_MINOR__) There is no PCH support #endif #if (__GNUC__ < 3) There is no PCH support #endif #if (__GNUC__ == 3) && \ ((!defined(__APPLE_CC__) && (__GNUC_MINOR__ < 4)) || \ ( defined(__APPLE_CC__) && (__GNUC_MINOR__ < 3))) || \ ( defined(__INTEL_COMPILER) ) There is no PCH support #endif ], [ AC_MSG_RESULT([yes]) GCC_PCH=1 ], [ if test "$INTELCXX8" = "yes"; then AC_MSG_RESULT([yes]) ICC_PCH=1 if test "$INTELCXX10" = "yes"; then ICC_PCH_CREATE_SWITCH="-pch-create" ICC_PCH_USE_SWITCH="-pch-use" else ICC_PCH_CREATE_SWITCH="-create-pch" ICC_PCH_USE_SWITCH="-use-pch" fi else AC_MSG_RESULT([no]) fi ]) if test $GCC_PCH = 1 -o $ICC_PCH = 1 ; then USE_PCH=1 AC_BAKEFILE_CREATE_FILE_BK_MAKE_PCH chmod +x bk-make-pch dnl FIXME: make this $(top_builddir)/bk-make-pch once dnl autoconf-2.60 is required (and so top_builddir is dnl never empty): BK_MAKE_PCH="`pwd`/bk-make-pch" fi fi fi AC_SUBST(GCC_PCH) AC_SUBST(ICC_PCH) AC_SUBST(ICC_PCH_CREATE_SWITCH) AC_SUBST(ICC_PCH_USE_SWITCH) AC_SUBST(BK_MAKE_PCH) ]) dnl --------------------------------------------------------------------------- dnl AC_BAKEFILE([autoconf_inc.m4 inclusion]) dnl dnl To be used in configure.in of any project using Bakefile-generated mks dnl dnl Behaviour can be modified by setting following variables: dnl BAKEFILE_CHECK_BASICS set to "no" if you don't want bakefile to dnl to perform check for basic tools like ranlib dnl BAKEFILE_HOST set this to override host detection, defaults dnl to ${host} dnl BAKEFILE_FORCE_PLATFORM set to override platform detection dnl dnl Example usage: dnl dnl AC_BAKEFILE([FOO(autoconf_inc.m4)]) dnl dnl (replace FOO with m4_include above, aclocal would die otherwise) dnl (yes, it's ugly, but thanks to a bug in aclocal, it's the only thing dnl we can do...) dnl --------------------------------------------------------------------------- AC_DEFUN([AC_BAKEFILE], [ AC_PREREQ([2.58]) dnl We need to always run C/C++ compiler tests, but it's also possible dnl for the user to call these macros manually, hence this instead of dnl simply calling these macros. See http://www.bakefile.org/ticket/64 AC_REQUIRE([AC_BAKEFILE_PROG_CC]) AC_REQUIRE([AC_BAKEFILE_PROG_CXX]) if test "x$BAKEFILE_HOST" = "x"; then if test "x${host}" = "x" ; then AC_MSG_ERROR([You must call the autoconf "CANONICAL_HOST" macro in your configure.ac (or .in) file.]) fi BAKEFILE_HOST="${host}" fi if test "x$BAKEFILE_CHECK_BASICS" != "xno"; then AC_BAKEFILE_CHECK_BASIC_STUFF fi AC_BAKEFILE_GNUMAKE AC_BAKEFILE_PLATFORM AC_BAKEFILE_PLATFORM_SPECIFICS AC_BAKEFILE_SUFFIXES AC_BAKEFILE_SHARED_LD AC_BAKEFILE_SHARED_VERSIONS AC_BAKEFILE_DEPS AC_BAKEFILE_RES_COMPILERS dnl OBJCFLAGS is set by Autoconf, but OBJCXXFLAGS is not: AC_SUBST(OBJCXXFLAGS) BAKEFILE_BAKEFILE_M4_VERSION="0.2.11" dnl includes autoconf_inc.m4: $1 if test "$BAKEFILE_AUTOCONF_INC_M4_VERSION" = "" ; then AC_MSG_ERROR([No version found in autoconf_inc.m4 - bakefile macro was changed to take additional argument, perhaps configure.in wasn't updated (see the documentation)?]) fi if test "$BAKEFILE_BAKEFILE_M4_VERSION" != "$BAKEFILE_AUTOCONF_INC_M4_VERSION" ; then AC_MSG_ERROR([Versions of Bakefile used to generate makefiles ($BAKEFILE_AUTOCONF_INC_M4_VERSION) and configure ($BAKEFILE_BAKEFILE_M4_VERSION) do not match.]) fi ]) dnl --------------------------------------------------------------------------- dnl Embedded copies of helper scripts follow: dnl --------------------------------------------------------------------------- AC_DEFUN([AC_BAKEFILE_CREATE_FILE_BK_DEPS], [ dnl ===================== bk-deps begins here ===================== dnl (Created by merge-scripts.py from bk-deps dnl file do not edit here!) D='$' cat <bk-deps #!/bin/sh # This script is part of Bakefile (http://www.bakefile.org) autoconf # script. It is used to track C/C++ files dependencies in portable way. # # Permission is given to use this file in any way. DEPSMODE=${DEPSMODE} DEPSFLAG="${DEPSFLAG}" DEPSDIRBASE=.deps if test ${D}DEPSMODE = gcc ; then ${D}* ${D}{DEPSFLAG} status=${D}? # determine location of created files: while test ${D}# -gt 0; do case "${D}1" in -o ) shift objfile=${D}1 ;; -* ) ;; * ) srcfile=${D}1 ;; esac shift done objfilebase=\`basename ${D}objfile\` builddir=\`dirname ${D}objfile\` depfile=\`basename ${D}srcfile | sed -e 's/\\..*${D}/.d/g'\` depobjname=\`echo ${D}depfile |sed -e 's/\\.d/.o/g'\` depsdir=${D}builddir/${D}DEPSDIRBASE mkdir -p ${D}depsdir # if the compiler failed, we're done: if test ${D}{status} != 0 ; then rm -f ${D}depfile exit ${D}{status} fi # move created file to the location we want it in: if test -f ${D}depfile ; then sed -e "s,${D}depobjname:,${D}objfile:,g" ${D}depfile >${D}{depsdir}/${D}{objfilebase}.d rm -f ${D}depfile else # "g++ -MMD -o fooobj.o foosrc.cpp" produces fooobj.d depfile=\`echo "${D}objfile" | sed -e 's/\\..*${D}/.d/g'\` if test ! -f ${D}depfile ; then # "cxx -MD -o fooobj.o foosrc.cpp" creates fooobj.o.d (Compaq C++) depfile="${D}objfile.d" fi if test -f ${D}depfile ; then sed -e "\\,^${D}objfile,!s,${D}depobjname:,${D}objfile:,g" ${D}depfile >${D}{depsdir}/${D}{objfilebase}.d rm -f ${D}depfile fi fi exit 0 elif test ${D}DEPSMODE = unixcc; then ${D}* || exit ${D}? # Run compiler again with deps flag and redirect into the dep file. # It doesn't work if the '-o FILE' option is used, but without it the # dependency file will contain the wrong name for the object. So it is # removed from the command line, and the dep file is fixed with sed. cmd="" while test ${D}# -gt 0; do case "${D}1" in -o ) shift objfile=${D}1 ;; * ) eval arg${D}#=\\${D}1 cmd="${D}cmd \\${D}arg${D}#" ;; esac shift done objfilebase=\`basename ${D}objfile\` builddir=\`dirname ${D}objfile\` depsdir=${D}builddir/${D}DEPSDIRBASE mkdir -p ${D}depsdir eval "${D}cmd ${D}DEPSFLAG" | sed "s|.*:|${D}objfile:|" >${D}{depsdir}/${D}{objfilebase}.d exit 0 else ${D}* exit ${D}? fi EOF dnl ===================== bk-deps ends here ===================== ]) AC_DEFUN([AC_BAKEFILE_CREATE_FILE_SHARED_LD_SH], [ dnl ===================== shared-ld-sh begins here ===================== dnl (Created by merge-scripts.py from shared-ld-sh dnl file do not edit here!) D='$' cat <shared-ld-sh #!/bin/sh #----------------------------------------------------------------------------- #-- Name: distrib/mac/shared-ld-sh #-- Purpose: Link a mach-o dynamic shared library for Darwin / Mac OS X #-- Author: Gilles Depeyrot #-- Copyright: (c) 2002 Gilles Depeyrot #-- Licence: any use permitted #----------------------------------------------------------------------------- verbose=0 args="" objects="" linking_flag="-dynamiclib" ldargs="-r -keep_private_externs -nostdlib" if test "x${D}CXX" = "x"; then CXX="c++" fi while test ${D}# -gt 0; do case ${D}1 in -v) verbose=1 ;; -o|-compatibility_version|-current_version|-framework|-undefined|-install_name) # collect these options and values args="${D}{args} ${D}1 ${D}2" shift ;; -arch|-isysroot) # collect these options and values ldargs="${D}{ldargs} ${D}1 ${D}2" shift ;; -s|-Wl,*) # collect these load args ldargs="${D}{ldargs} ${D}1" ;; -l*|-L*|-flat_namespace|-headerpad_max_install_names) # collect these options args="${D}{args} ${D}1" ;; -dynamiclib|-bundle) linking_flag="${D}1" ;; -*) echo "shared-ld: unhandled option '${D}1'" exit 1 ;; *.o | *.a | *.dylib) # collect object files objects="${D}{objects} ${D}1" ;; *) echo "shared-ld: unhandled argument '${D}1'" exit 1 ;; esac shift done status=0 # # Link one module containing all the others # if test ${D}{verbose} = 1; then echo "${D}CXX ${D}{ldargs} ${D}{objects} -o master.${D}${D}.o" fi ${D}CXX ${D}{ldargs} ${D}{objects} -o master.${D}${D}.o status=${D}? # # Link the shared library from the single module created, but only if the # previous command didn't fail: # if test ${D}{status} = 0; then if test ${D}{verbose} = 1; then echo "${D}CXX ${D}{linking_flag} master.${D}${D}.o ${D}{args}" fi ${D}CXX ${D}{linking_flag} master.${D}${D}.o ${D}{args} status=${D}? fi # # Remove intermediate module # rm -f master.${D}${D}.o exit ${D}status EOF dnl ===================== shared-ld-sh ends here ===================== ]) AC_DEFUN([AC_BAKEFILE_CREATE_FILE_BK_MAKE_PCH], [ dnl ===================== bk-make-pch begins here ===================== dnl (Created by merge-scripts.py from bk-make-pch dnl file do not edit here!) D='$' cat <bk-make-pch #!/bin/sh # This script is part of Bakefile (http://www.bakefile.org) autoconf # script. It is used to generated precompiled headers. # # Permission is given to use this file in any way. outfile="${D}{1}" header="${D}{2}" shift shift builddir=\`echo ${D}outfile | sed -e 's,/\\.pch/.*${D},,g'\` compiler="" headerfile="" while test ${D}{#} -gt 0; do add_to_cmdline=1 case "${D}{1}" in -I* ) incdir=\`echo ${D}{1} | sed -e 's/-I\\(.*\\)/\\1/g'\` if test "x${D}{headerfile}" = "x" -a -f "${D}{incdir}/${D}{header}" ; then headerfile="${D}{incdir}/${D}{header}" fi ;; -use-pch|-use_pch|-pch-use ) shift add_to_cmdline=0 ;; esac if test ${D}add_to_cmdline = 1 ; then compiler="${D}{compiler} ${D}{1}" fi shift done if test "x${D}{headerfile}" = "x" ; then echo "error: can't find header ${D}{header} in include paths" >&2 else if test -f ${D}{outfile} ; then rm -f ${D}{outfile} else mkdir -p \`dirname ${D}{outfile}\` fi depsfile="${D}{builddir}/.deps/\`echo ${D}{outfile} | tr '/.' '__'\`.d" mkdir -p ${D}{builddir}/.deps if test "x${GCC_PCH}" = "x1" ; then # can do this because gcc is >= 3.4: ${D}{compiler} -o ${D}{outfile} -MMD -MF "${D}{depsfile}" "${D}{headerfile}" elif test "x${ICC_PCH}" = "x1" ; then filename=pch_gen-${D}${D} file=${D}{filename}.c dfile=${D}{filename}.d cat > ${D}file < ${D}depsfile && \\ rm -f ${D}file ${D}dfile ${D}{filename}.o fi exit ${D}{?} fi EOF dnl ===================== bk-make-pch ends here ===================== ]) m4_include([config/acx_pthread.m4]) m4_include([config/ax_cxx_compile_stdcxx.m4]) m4_include([config/libm.m4]) m4_include([config/libtool.m4]) m4_include([config/localtime_r.m4]) m4_include([config/ltoptions.m4]) m4_include([config/ltsugar.m4]) m4_include([config/ltversion.m4]) m4_include([config/lt~obsolete.m4]) m4_include([config/mysql_loc.m4]) m4_include([config/mysql_ssl.m4]) m4_include([config/socket_nsl.m4]) m4_include([config/stl_slist.m4]) mysql++-3.3.0/mysql++.bkl000644 000765 000024 00000052204 14042362131 015577 0ustar00tangentstaff000000 000000 $(DOLLAR)$(DOLLAR)d $(DOLLAR)$(DOLLAR)e $(DOLLAR)$(DOLLAR)f 3.1.0 ../$(STABLEABI)/abi_dumps/mysqlpp ./abi_dumps/mysqlpp no single yes multi C:\Program Files\MySQL\MySQL Connector C 6.1 on off off speed _d yes yes yes yes $(PREFIX)/include/mysql++ .. mysqlpp$(DEBUG_SUFFIX) mysqlpp$(DEBUG_SUFFIX) 3.3.0 lib/beemutex.cpp lib/cmdline.cpp lib/connection.cpp lib/cpool.cpp lib/datetime.cpp lib/dbdriver.cpp lib/field_names.cpp lib/field_types.cpp lib/manip.cpp lib/myset.cpp lib/mysql++.cpp lib/mystring.cpp lib/null.cpp lib/options.cpp lib/qparms.cpp lib/query.cpp lib/result.cpp lib/row.cpp lib/scopedconnection.cpp lib/sql_buffer.cpp lib/sqlstream.cpp lib/ssqls2.cpp lib/stadapter.cpp lib/tcp_connection.cpp lib/transaction.cpp lib/type_info.cpp lib/uds_connection.cpp lib/utility.cpp lib/vallist.cpp lib/wnp_connection.cpp $(DEBUGINFO) $(OPTIMIZE_FLAG) $(THREAD_TYPE) on on $(LIBDIR) UNICODE _UNICODE wsock32 MYSQLPP_MAKING_DLL HAVE_MYSQL_SSL_SET $(MYSQL_WIN_DIR)\include $(MYSQL_WIN_DIR)\lib libmysql MYSQLPP_NO_DLL HAVE_MYSQL_SSL_SET "$(MYSQL_WIN_DIR)\include" -Wl,--enable-stdcall-fixup "$(MYSQL_WIN_DIR)\lib" mysql lib/ssqls.h lib/querydef.h @PTHREAD_CFLAGS@ . @MYSQL_C_INC_DIR@ -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ HAVE_POSIX_GETOPT MYSQLPP_XCODE /usr/local/mysql/include -lmysqlclient /usr/local/mysql/lib lib/*.h $(HEADER_DIR) mysqlpp_ssqls2parse ssx/parsev2.cpp . mysqlpp mysqlpp ssx/genv2.cpp ssx/main.cpp test/array_index.cpp test/cpool.cpp test/datetime.cpp test/inttypes.cpp test/insertpolicy.cpp test/manip.cpp test/null_comparison.cpp test/query_copy.cpp test/qssqls.cpp test/qstream.cpp test/sqlstream.cpp test/ssqls2.cpp ssqls2parse mysqlpp_ssqls2parse test/string.cpp test/tcp.cpp test/uds.cpp test/wnp.cpp mysqlpp_excommon examples/printdata.cpp examples/cgi_jpeg.cpp examples/cpool.cpp examples/dbinfo.cpp examples/deadlock.cpp examples/fieldinf.cpp examples/for_each.cpp examples/load_jpeg.cpp examples/multiquery.cpp examples/resetdb.cpp examples/simple1.cpp examples/simple2.cpp examples/simple3.cpp examples/ssqls1.cpp examples/ssqls2.cpp examples/ssqls3.cpp examples/ssqls4.cpp examples/ssqls5.cpp $ examples/ssqls6.cpp $ examples/store_if.cpp examples/tquery1.cpp examples/tquery2.cpp examples/tquery3.cpp examples/tquery4.cpp examples/transaction.cpp @PACKAGE_NAME@-@PACKAGE_VERSION@ rm -rf doc/latex doc/pdf ; \ cd doc/html/refman ; \ rm -f doxygen.css ; \ for e in dot html js map md5 png ; \ do \ rm -f [a-z]*.$(DDE) ; \ done -rmdir $(HEADER_DIR) rm -f $(DESTDIR)$(libdir)/$(DLLPREFIX)mysqlpp.$(SO_SUFFIX) configure.ac install.hta.in mysql++.bkl mysql++.spec.in doc/userman/userman.dbx.in lib/Doxyfile.in lib/mysql++.h.in ssx/Doxyfile.in bakefile_gen ./config.status cd lib ; ./ssqls.pl lib/ssqls.pl cd lib ; ./querydef.pl lib/querydef.pl ctags --recurse=yes . tags lib/Doxyfile lib/*.cpp lib/*.h cd lib ; doxygen > /dev/null ssx/Doxyfile ssx/*.cpp ssx/*.h cd ssx ; doxygen > /dev/null doc/userman/*.dbx doc/userman/userman.dbx.in cd doc/userman ; make html pdf doc/html/refman/index.html doc/html/refman/ssx/index.html doc/html/userman/index.html for d in config \ doc/html/refman/search \ doc/html/refman/ssx \ doc/html/userman \ doc/refman/search \ doc/userman \ examples \ lib \ ssx \ test ; \ do \ mkdir -p $(PKGNAME)/$(DDD) ; \ done cp -RL *.bat *.in *.md *.txt abi.xml aclocal.m4 \ Bakefiles.bkgen bootstrap cleanmf config.guess config.h \ config.sub configure* dtest exrun install* Makefile.* \ mysql++.* osver $(PKGNAME) for d in vc200? ; do \ mkdir -p $(PKGNAME)/$(DDD) ; \ cp $(DDD)/*.sln $(DDD)/*.vcproj $(PKGNAME)/$(DDD) ; \ done cp config/*.m4 $(PKGNAME)/config cp -RL doc/README* doc/pdf doc/ssqls-pretty $(PKGNAME)/doc for f in fo2pdf LICENSE.txt Makefile Makefile.hello.* mktxt README.md \*.dbx \*.in \*.mod \*.txt \*.xsl ; \ do \ cp doc/userman/$(DDF) $(PKGNAME)/doc/userman ; \ done find doc \( -name *.css \ -o -name *.html \ -o -name *.js \ -o -name *.png \) \ -exec install -m 644 {} $(PKGNAME)/{} \; cp doc/html/refman/*.png $(PKGNAME)/doc/html/refman cp doc/userman/userman.dbx.in $(PKGNAME)/doc/userman for e in cpp h jpg txt ; \ do \ cp examples/*.$(DDE) $(PKGNAME)/examples ; \ done for d in mfc wforms ; \ do \ mkdir -p $(PKGNAME)/examples/vstudio/$(DDD) ; \ cp examples/vstudio/$(DDD)/* $(PKGNAME)/examples/vstudio/$(DDD) ; \ done cp lib/*.cpp lib/*.h lib/*.in lib/*.pl $(PKGNAME)/lib cp test/*.cpp $(PKGNAME)/test cp ssx/*.cpp ssx/*.h ssx/*.in $(PKGNAME)/ssx cd $(PKGNAME) ; ./bootstrap nodoc nomaint rm -f $(PKGNAME)/Makefile rm -f $(PKGNAME)/config.log rm -f $(PKGNAME)/config.status rm -fr $(PKGNAME)/autom4te.cache doc $(PKGNAME) tar -chz -f $(PKGNAME).tar.gz $(PKGNAME) rm -rf $(PKGNAME) doc dist cp $(PKGNAME).tar.gz ~/rpmbuild/SOURCES cd ~/rpmbuild/SPECS rpm-prep rpmbuild -ba mysql++.spec rpm-prep rpmbuild -bs mysql++.spec dist cp $(PKGNAME).tar.gz /usr/portage/distfiles cp mysql++.ebuild /usr/portage/dev-db/mysql++/$(PKGNAME).ebuild ebuild /usr/portage/dev-db/mysql++/$(PKGNAME).ebuild digest mysql++-3.3.0/mysql++.bkl-merge000644 000765 000024 00000051602 14042362131 016675 0ustar00tangentstaff000000 000000 $(DOLLAR)$(DOLLAR)d $(DOLLAR)$(DOLLAR)e $(DOLLAR)$(DOLLAR)f 3.1.0 ../$(STABLEABI)/abi_dumps/mysqlpp ./abi_dumps/mysqlpp no single yes multi C:\Program Files\MySQL\MySQL Connector C 6.1 on off off speed _d yes yes yes yes $(PREFIX)/include/mysql++ .. mysqlpp$(DEBUG_SUFFIX) mysqlpp$(DEBUG_SUFFIX) 3.2.5 lib/beemutex.cpp lib/cmdline.cpp lib/connection.cpp lib/cpool.cpp lib/datetime.cpp lib/dbdriver.cpp lib/field_names.cpp lib/field_types.cpp lib/manip.cpp lib/myset.cpp lib/mysql++.cpp lib/mystring.cpp lib/null.cpp lib/options.cpp lib/qparms.cpp lib/query.cpp lib/result.cpp lib/row.cpp lib/scopedconnection.cpp lib/sql_buffer.cpp lib/sqlstream.cpp lib/ssqls2.cpp lib/stadapter.cpp lib/tcp_connection.cpp lib/transaction.cpp lib/type_info.cpp lib/uds_connection.cpp lib/utility.cpp lib/vallist.cpp lib/wnp_connection.cpp $(DEBUGINFO) $(OPTIMIZE_FLAG) $(THREAD_TYPE) on on $(LIBDIR) UNICODE _UNICODE wsock32 MYSQLPP_MAKING_DLL HAVE_MYSQL_SSL_SET $(MYSQL_WIN_DIR)\include $(MYSQL_WIN_DIR)\lib libmysql MYSQLPP_NO_DLL HAVE_MYSQL_SSL_SET "$(MYSQL_WIN_DIR)\include" -Wl,--enable-stdcall-fixup "$(MYSQL_WIN_DIR)\lib" mysql lib/ssqls.h lib/querydef.h @PTHREAD_CFLAGS@ . @MYSQL_C_INC_DIR@ -L@MYSQL_C_LIB_DIR@ -l@MYSQL_C_LIB_NAME@ @PTHREAD_LIBS@ @MYSQLPP_EXTRA_LIBS@ HAVE_POSIX_GETOPT MYSQLPP_XCODE /usr/local/mysql/include -lmysqlclient /usr/local/mysql/lib lib/*.h $(HEADER_DIR) mysqlpp_ssqls2parse ssx/parsev2.cpp . mysqlpp mysqlpp ssx/genv2.cpp ssx/main.cpp test/array_index.cpp test/cpool.cpp test/datetime.cpp test/inttypes.cpp test/insertpolicy.cpp test/manip.cpp test/null_comparison.cpp test/query_copy.cpp test/qssqls.cpp test/qstream.cpp test/sqlstream.cpp test/ssqls2.cpp ssqls2parse mysqlpp_ssqls2parse test/string.cpp test/tcp.cpp test/uds.cpp test/wnp.cpp mysqlpp_excommon examples/printdata.cpp examples/cgi_jpeg.cpp examples/cpool.cpp examples/dbinfo.cpp examples/deadlock.cpp examples/fieldinf.cpp examples/for_each.cpp examples/load_jpeg.cpp examples/multiquery.cpp examples/resetdb.cpp examples/simple1.cpp examples/simple2.cpp examples/simple3.cpp examples/ssqls1.cpp examples/ssqls2.cpp examples/ssqls3.cpp examples/ssqls4.cpp examples/ssqls5.cpp $ examples/ssqls6.cpp $ examples/store_if.cpp examples/tquery1.cpp examples/tquery2.cpp examples/tquery3.cpp examples/tquery4.cpp examples/transaction.cpp @PACKAGE_NAME@-@PACKAGE_VERSION@ rm -rf doc/latex doc/pdf ; \ cd doc/html/refman ; \ for e in dot html map md5 png ; \ do \ rm -f doxygen.css [a-z]*.$(DDE) ; \ done -rmdir $(HEADER_DIR) rm -f $(DESTDIR)$(libdir)/$(DLLPREFIX)mysqlpp.$(SO_SUFFIX) configure.ac install.hta.in mysql++.bkl mysql++.spec.in doc/userman/userman.dbx.in lib/Doxyfile.in lib/mysql++.h.in ssx/Doxyfile.in bakefile_gen ./config.status cd lib ; ./ssqls.pl lib/ssqls.pl cd lib ; ./querydef.pl lib/querydef.pl ctags --recurse=yes . tags lib/Doxyfile lib/*.cpp lib/*.h cd lib ; doxygen > /dev/null ssx/Doxyfile ssx/*.cpp ssx/*.h cd ssx ; doxygen > /dev/null doc/userman/*.dbx doc/userman/userman.dbx.in cd doc/userman ; make html pdf doc/html/refman/index.html doc/html/refman/ssx/index.html doc/html/userman/index.html for d in config doc/html/refman/ssx doc/html/userman \ doc/refman doc/userman examples lib ssx test ; \ do \ mkdir -p $(PKGNAME)/$(DDD) ; \ done cp -RL *.bat *.in *.md *.txt abi.xml aclocal.m4 Bakefiles.bkgen \ bootstrap ChangeLog.md cleanmf config.guess config.h \ config.sub configure* dtest exrun HACKERS.md install* \ Makefile.* mysql++.* osver $(PKGNAME) for d in vc200? ; do \ mkdir -p $(PKGNAME)/$(DDD) ; \ cp $(DDD)/*.sln $(DDD)/*.vcproj $(PKGNAME)/$(DDD) ; \ done cp config/*.m4 $(PKGNAME)/config cp -RL doc/README* doc/pdf doc/ssqls-pretty $(PKGNAME)/doc for f in fo2pdf LICENSE.txt Makefile Makefile.hello.* mktxt README.txt \*.dbx \*.in \*.mod \*.txt \*.xsl ; \ do \ cp doc/userman/$(DDF) $(PKGNAME)/doc/userman ; \ done find doc \( -name *.css -o -name *.html \) -exec install {} $(PKGNAME)/{} \; cp doc/html/refman/*.png $(PKGNAME)/doc/html/refman cp doc/userman/userman.dbx.in $(PKGNAME)/doc/userman for e in cpp h jpg txt ; \ do \ cp examples/*.$(DDE) $(PKGNAME)/examples ; \ done for d in mfc wforms ; \ do \ mkdir -p $(PKGNAME)/examples/vstudio/$(DDD) ; \ cp examples/vstudio/$(DDD)/* $(PKGNAME)/examples/vstudio/$(DDD) ; \ done cp lib/*.cpp lib/*.h lib/*.in lib/*.pl $(PKGNAME)/lib cp test/*.cpp $(PKGNAME)/test cp ssx/*.cpp ssx/*.h ssx/*.in $(PKGNAME)/ssx cd $(PKGNAME) ; ./bootstrap nodoc nomaint rm -f $(PKGNAME)/Makefile rm -f $(PKGNAME)/config.log rm -f $(PKGNAME)/config.status rm -fr $(PKGNAME)/autom4te.cache doc $(PKGNAME) tar -chz -f $(PKGNAME).tar.gz $(PKGNAME) rm -rf $(PKGNAME) doc dist cp $(PKGNAME).tar.gz ~/rpmbuild/SOURCES cd ~/rpmbuild/SPECS rpm-prep rpmbuild -ba mysql++.spec rpm-prep rpmbuild -bs mysql++.spec dist cp $(PKGNAME).tar.gz /usr/portage/distfiles cp mysql++.ebuild /usr/portage/dev-db/mysql++/$(PKGNAME).ebuild ebuild /usr/portage/dev-db/mysql++/$(PKGNAME).ebuild digest mysql++-3.3.0/vc2008/mysql++_cpool.vcproj000644 000765 000024 00000013555 14042362131 020456 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_ssqls2.vcproj000644 000765 000024 00000013573 14042362131 020571 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_simple2.vcproj000644 000765 000024 00000013611 14042362131 020706 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_load_jpeg.vcproj000644 000765 000024 00000013645 14042362131 021266 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_tquery2.vcproj000644 000765 000024 00000013611 14042362131 020746 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_fieldinf.vcproj000644 000765 000024 00000013627 14042362131 021122 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_test_datetime.vcproj000644 000765 000024 00000013652 14042362131 022173 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_excommon.vcproj000644 000765 000024 00000012067 14042362131 021164 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_ssqls4.vcproj000644 000765 000024 00000013573 14042362131 020573 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_multiquery.vcproj000644 000765 000024 00000013663 14042362131 021562 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_test_sqlstream.vcproj000644 000765 000024 00000013670 14042362131 022412 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_resetdb.vcproj000644 000765 000024 00000013611 14042362131 020763 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_cgi_jpeg.vcproj000644 000765 000024 00000013627 14042362131 021111 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_test_qstream.vcproj000644 000765 000024 00000013634 14042362131 022053 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_test_null_comparison.vcproj000644 000765 000024 00000014014 14042362131 023574 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++.sln000644 000765 000024 00000071112 14042362131 016544 0ustar00tangentstaff000000 000000 Microsoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysqlpp", "mysql++_mysqlpp.vcproj", "{2DAE6437-6594-5B8A-B969-BBF287043EE4}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssqls2parse", "mysql++_ssqls2parse.vcproj", "{3F335D9A-C386-53A3-9294-B563821A54E7}" ProjectSection(ProjectDependencies) = postProject {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssqlsxlat", "mysql++_ssqlsxlat.vcproj", "{DF066212-36AA-5EC6-B7D0-5ED156C98E4D}" ProjectSection(ProjectDependencies) = postProject {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} {3F335D9A-C386-53A3-9294-B563821A54E7} = {3F335D9A-C386-53A3-9294-B563821A54E7} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_array_index", "mysql++_test_array_index.vcproj", "{0801DB51-9DA6-5A2F-ACC2-7FDA54B2DC9C}" ProjectSection(ProjectDependencies) = postProject {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_cpool", "mysql++_test_cpool.vcproj", "{3326BAB6-0ECE-59BF-A906-88B8594026E8}" ProjectSection(ProjectDependencies) = postProject {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_datetime", "mysql++_test_datetime.vcproj", "{B06A9EDD-0359-58E0-A75F-9E2E20A9594B}" ProjectSection(ProjectDependencies) = postProject {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_inttypes", "mysql++_test_inttypes.vcproj", "{B289676A-C942-5AF4-BF54-BBC1165C43E9}" ProjectSection(ProjectDependencies) = postProject {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_insertpolicy", "mysql++_test_insertpolicy.vcproj", "{2EC28D38-EE44-580F-90E4-6B8826B9F576}" ProjectSection(ProjectDependencies) = postProject {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_manip", "mysql++_test_manip.vcproj", "{018E5F11-D3F8-5CCD-BB80-CE39FCB6D6B1}" ProjectSection(ProjectDependencies) = postProject {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_null_comparison", "mysql++_test_null_comparison.vcproj", "{CC659BFE-6389-5177-BDBE-B90BD7DF37B4}" ProjectSection(ProjectDependencies) = postProject {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_query_copy", "mysql++_test_query_copy.vcproj", "{909DDC42-823D-5AD6-97FA-851530837BFC}" ProjectSection(ProjectDependencies) = postProject {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_qssqls", "mysql++_test_qssqls.vcproj", "{86E0B232-5D5F-5094-9AB9-933599772625}" ProjectSection(ProjectDependencies) = postProject {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_qstream", "mysql++_test_qstream.vcproj", "{16DAFA3B-3B92-55EE-A8E6-EC79FAFC0C4E}" ProjectSection(ProjectDependencies) = postProject {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_sqlstream", "mysql++_test_sqlstream.vcproj", "{FD3716DB-7D45-533E-BD42-1A9D2CB596A2}" ProjectSection(ProjectDependencies) = postProject {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_ssqls2", "mysql++_test_ssqls2.vcproj", "{0A03AD93-69A4-5741-99B1-D4230CDD90CC}" ProjectSection(ProjectDependencies) = postProject {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} {3F335D9A-C386-53A3-9294-B563821A54E7} = {3F335D9A-C386-53A3-9294-B563821A54E7} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} {3F335D9A-C386-53A3-9294-B563821A54E7} = {3F335D9A-C386-53A3-9294-B563821A54E7} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_string", "mysql++_test_string.vcproj", "{365E5370-8E8C-555C-A7DB-80541B4590E7}" ProjectSection(ProjectDependencies) = postProject {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_tcp", "mysql++_test_tcp.vcproj", "{C0406F25-3F72-5CD4-ADBE-76E6F28B499D}" ProjectSection(ProjectDependencies) = postProject {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_uds", "mysql++_test_uds.vcproj", "{E53E4EF0-816F-5B91-B084-5C10E1173814}" ProjectSection(ProjectDependencies) = postProject {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_wnp", "mysql++_test_wnp.vcproj", "{DE19B7FF-C8A1-5944-8482-4F8059F0901F}" ProjectSection(ProjectDependencies) = postProject {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "excommon", "mysql++_excommon.vcproj", "{7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF}" ProjectSection(ProjectDependencies) = postProject {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cgi_jpeg", "mysql++_cgi_jpeg.vcproj", "{C59EBA80-FF8B-5D56-BE89-CDEA0744516A}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cpool", "mysql++_cpool.vcproj", "{5D6870A5-F52B-544D-8502-BA5D90A59262}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dbinfo", "mysql++_dbinfo.vcproj", "{9E60B7F5-27E4-54E1-B1E4-8D48BCCA3112}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "deadlock", "mysql++_deadlock.vcproj", "{AD9BBB2D-EBDF-578A-8E93-690633102134}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fieldinf", "mysql++_fieldinf.vcproj", "{BFD32EF9-C341-55A7-877C-ACA2E12D758D}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "for_each", "mysql++_for_each.vcproj", "{31312F99-64B9-55A3-98CD-9C6716F94F4D}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "load_jpeg", "mysql++_load_jpeg.vcproj", "{7845BFF5-8676-5038-9B8F-56125A7CD668}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multiquery", "mysql++_multiquery.vcproj", "{C265E5A2-2BC5-5369-9224-F0686847A25A}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "resetdb", "mysql++_resetdb.vcproj", "{D3A0178F-3F8C-5383-BDA2-A1C435F8A624}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simple1", "mysql++_simple1.vcproj", "{41C15B4A-390C-5E7B-9281-DEDBC41FEABC}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simple2", "mysql++_simple2.vcproj", "{65D8E850-75E9-5A2D-B6FC-66D749EBFC03}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simple3", "mysql++_simple3.vcproj", "{412C93B3-32D8-590D-84AD-A74BDE903E3D}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssqls1", "mysql++_ssqls1.vcproj", "{735CF9E3-42AE-52A6-B8E2-B14204F835F6}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssqls2", "mysql++_ssqls2.vcproj", "{3602F0B4-8828-5CAC-B704-FD8DEA79B138}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssqls3", "mysql++_ssqls3.vcproj", "{53B1D2B1-620F-561A-8DE4-85F55E4D564B}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssqls4", "mysql++_ssqls4.vcproj", "{32C814A1-0D7D-56E3-B63D-D4A096D0E7E7}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssqls5", "mysql++_ssqls5.vcproj", "{F72023A7-259D-5CCE-8EBB-C796CF0CFD0F}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssqls6", "mysql++_ssqls6.vcproj", "{28C337E6-DC50-590C-8506-833192B80273}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "store_if", "mysql++_store_if.vcproj", "{FFCEE0E9-435F-593F-B2B8-FDDC0B95A47E}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tquery1", "mysql++_tquery1.vcproj", "{76AF7D4B-B9A1-5E76-83CB-9F9EFDE10E3A}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tquery2", "mysql++_tquery2.vcproj", "{1BE11466-4CE8-52BA-A317-FDCDAE8FC884}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tquery3", "mysql++_tquery3.vcproj", "{D6B04B3F-8326-55E5-B4E6-FB11D6784BCD}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tquery4", "mysql++_tquery4.vcproj", "{2682F384-189A-5897-B38E-4C0E5749404D}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "transaction", "mysql++_transaction.vcproj", "{FF09D392-E501-5DAB-B5A9-B1B97E246D37}" ProjectSection(ProjectDependencies) = postProject {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} = {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF} {2DAE6437-6594-5B8A-B969-BBF287043EE4} = {2DAE6437-6594-5B8A-B969-BBF287043EE4} EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {2DAE6437-6594-5B8A-B969-BBF287043EE4}.Debug|x64.ActiveCfg = Debug|x64 {2DAE6437-6594-5B8A-B969-BBF287043EE4}.Debug|x64.Build.0 = Debug|x64 {2DAE6437-6594-5B8A-B969-BBF287043EE4}.Release|x64.ActiveCfg = Release|x64 {2DAE6437-6594-5B8A-B969-BBF287043EE4}.Release|x64.Build.0 = Release|x64 {3F335D9A-C386-53A3-9294-B563821A54E7}.Debug|x64.ActiveCfg = Debug|x64 {3F335D9A-C386-53A3-9294-B563821A54E7}.Debug|x64.Build.0 = Debug|x64 {3F335D9A-C386-53A3-9294-B563821A54E7}.Release|x64.ActiveCfg = Release|x64 {3F335D9A-C386-53A3-9294-B563821A54E7}.Release|x64.Build.0 = Release|x64 {DF066212-36AA-5EC6-B7D0-5ED156C98E4D}.Debug|x64.ActiveCfg = Debug|x64 {DF066212-36AA-5EC6-B7D0-5ED156C98E4D}.Debug|x64.Build.0 = Debug|x64 {DF066212-36AA-5EC6-B7D0-5ED156C98E4D}.Release|x64.ActiveCfg = Release|x64 {DF066212-36AA-5EC6-B7D0-5ED156C98E4D}.Release|x64.Build.0 = Release|x64 {0801DB51-9DA6-5A2F-ACC2-7FDA54B2DC9C}.Debug|x64.ActiveCfg = Debug|x64 {0801DB51-9DA6-5A2F-ACC2-7FDA54B2DC9C}.Debug|x64.Build.0 = Debug|x64 {0801DB51-9DA6-5A2F-ACC2-7FDA54B2DC9C}.Release|x64.ActiveCfg = Release|x64 {0801DB51-9DA6-5A2F-ACC2-7FDA54B2DC9C}.Release|x64.Build.0 = Release|x64 {3326BAB6-0ECE-59BF-A906-88B8594026E8}.Debug|x64.ActiveCfg = Debug|x64 {3326BAB6-0ECE-59BF-A906-88B8594026E8}.Debug|x64.Build.0 = Debug|x64 {3326BAB6-0ECE-59BF-A906-88B8594026E8}.Release|x64.ActiveCfg = Release|x64 {3326BAB6-0ECE-59BF-A906-88B8594026E8}.Release|x64.Build.0 = Release|x64 {B06A9EDD-0359-58E0-A75F-9E2E20A9594B}.Debug|x64.ActiveCfg = Debug|x64 {B06A9EDD-0359-58E0-A75F-9E2E20A9594B}.Debug|x64.Build.0 = Debug|x64 {B06A9EDD-0359-58E0-A75F-9E2E20A9594B}.Release|x64.ActiveCfg = Release|x64 {B06A9EDD-0359-58E0-A75F-9E2E20A9594B}.Release|x64.Build.0 = Release|x64 {B289676A-C942-5AF4-BF54-BBC1165C43E9}.Debug|x64.ActiveCfg = Debug|x64 {B289676A-C942-5AF4-BF54-BBC1165C43E9}.Debug|x64.Build.0 = Debug|x64 {B289676A-C942-5AF4-BF54-BBC1165C43E9}.Release|x64.ActiveCfg = Release|x64 {B289676A-C942-5AF4-BF54-BBC1165C43E9}.Release|x64.Build.0 = Release|x64 {2EC28D38-EE44-580F-90E4-6B8826B9F576}.Debug|x64.ActiveCfg = Debug|x64 {2EC28D38-EE44-580F-90E4-6B8826B9F576}.Debug|x64.Build.0 = Debug|x64 {2EC28D38-EE44-580F-90E4-6B8826B9F576}.Release|x64.ActiveCfg = Release|x64 {2EC28D38-EE44-580F-90E4-6B8826B9F576}.Release|x64.Build.0 = Release|x64 {018E5F11-D3F8-5CCD-BB80-CE39FCB6D6B1}.Debug|x64.ActiveCfg = Debug|x64 {018E5F11-D3F8-5CCD-BB80-CE39FCB6D6B1}.Debug|x64.Build.0 = Debug|x64 {018E5F11-D3F8-5CCD-BB80-CE39FCB6D6B1}.Release|x64.ActiveCfg = Release|x64 {018E5F11-D3F8-5CCD-BB80-CE39FCB6D6B1}.Release|x64.Build.0 = Release|x64 {CC659BFE-6389-5177-BDBE-B90BD7DF37B4}.Debug|x64.ActiveCfg = Debug|x64 {CC659BFE-6389-5177-BDBE-B90BD7DF37B4}.Debug|x64.Build.0 = Debug|x64 {CC659BFE-6389-5177-BDBE-B90BD7DF37B4}.Release|x64.ActiveCfg = Release|x64 {CC659BFE-6389-5177-BDBE-B90BD7DF37B4}.Release|x64.Build.0 = Release|x64 {909DDC42-823D-5AD6-97FA-851530837BFC}.Debug|x64.ActiveCfg = Debug|x64 {909DDC42-823D-5AD6-97FA-851530837BFC}.Debug|x64.Build.0 = Debug|x64 {909DDC42-823D-5AD6-97FA-851530837BFC}.Release|x64.ActiveCfg = Release|x64 {909DDC42-823D-5AD6-97FA-851530837BFC}.Release|x64.Build.0 = Release|x64 {86E0B232-5D5F-5094-9AB9-933599772625}.Debug|x64.ActiveCfg = Debug|x64 {86E0B232-5D5F-5094-9AB9-933599772625}.Debug|x64.Build.0 = Debug|x64 {86E0B232-5D5F-5094-9AB9-933599772625}.Release|x64.ActiveCfg = Release|x64 {86E0B232-5D5F-5094-9AB9-933599772625}.Release|x64.Build.0 = Release|x64 {16DAFA3B-3B92-55EE-A8E6-EC79FAFC0C4E}.Debug|x64.ActiveCfg = Debug|x64 {16DAFA3B-3B92-55EE-A8E6-EC79FAFC0C4E}.Debug|x64.Build.0 = Debug|x64 {16DAFA3B-3B92-55EE-A8E6-EC79FAFC0C4E}.Release|x64.ActiveCfg = Release|x64 {16DAFA3B-3B92-55EE-A8E6-EC79FAFC0C4E}.Release|x64.Build.0 = Release|x64 {FD3716DB-7D45-533E-BD42-1A9D2CB596A2}.Debug|x64.ActiveCfg = Debug|x64 {FD3716DB-7D45-533E-BD42-1A9D2CB596A2}.Debug|x64.Build.0 = Debug|x64 {FD3716DB-7D45-533E-BD42-1A9D2CB596A2}.Release|x64.ActiveCfg = Release|x64 {FD3716DB-7D45-533E-BD42-1A9D2CB596A2}.Release|x64.Build.0 = Release|x64 {0A03AD93-69A4-5741-99B1-D4230CDD90CC}.Debug|x64.ActiveCfg = Debug|x64 {0A03AD93-69A4-5741-99B1-D4230CDD90CC}.Debug|x64.Build.0 = Debug|x64 {0A03AD93-69A4-5741-99B1-D4230CDD90CC}.Release|x64.ActiveCfg = Release|x64 {0A03AD93-69A4-5741-99B1-D4230CDD90CC}.Release|x64.Build.0 = Release|x64 {365E5370-8E8C-555C-A7DB-80541B4590E7}.Debug|x64.ActiveCfg = Debug|x64 {365E5370-8E8C-555C-A7DB-80541B4590E7}.Debug|x64.Build.0 = Debug|x64 {365E5370-8E8C-555C-A7DB-80541B4590E7}.Release|x64.ActiveCfg = Release|x64 {365E5370-8E8C-555C-A7DB-80541B4590E7}.Release|x64.Build.0 = Release|x64 {C0406F25-3F72-5CD4-ADBE-76E6F28B499D}.Debug|x64.ActiveCfg = Debug|x64 {C0406F25-3F72-5CD4-ADBE-76E6F28B499D}.Debug|x64.Build.0 = Debug|x64 {C0406F25-3F72-5CD4-ADBE-76E6F28B499D}.Release|x64.ActiveCfg = Release|x64 {C0406F25-3F72-5CD4-ADBE-76E6F28B499D}.Release|x64.Build.0 = Release|x64 {E53E4EF0-816F-5B91-B084-5C10E1173814}.Debug|x64.ActiveCfg = Debug|x64 {E53E4EF0-816F-5B91-B084-5C10E1173814}.Debug|x64.Build.0 = Debug|x64 {E53E4EF0-816F-5B91-B084-5C10E1173814}.Release|x64.ActiveCfg = Release|x64 {E53E4EF0-816F-5B91-B084-5C10E1173814}.Release|x64.Build.0 = Release|x64 {DE19B7FF-C8A1-5944-8482-4F8059F0901F}.Debug|x64.ActiveCfg = Debug|x64 {DE19B7FF-C8A1-5944-8482-4F8059F0901F}.Debug|x64.Build.0 = Debug|x64 {DE19B7FF-C8A1-5944-8482-4F8059F0901F}.Release|x64.ActiveCfg = Release|x64 {DE19B7FF-C8A1-5944-8482-4F8059F0901F}.Release|x64.Build.0 = Release|x64 {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF}.Debug|x64.ActiveCfg = Debug|x64 {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF}.Debug|x64.Build.0 = Debug|x64 {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF}.Release|x64.ActiveCfg = Release|x64 {7AFF80FE-F36B-5F8F-BB52-3568D7E03AAF}.Release|x64.Build.0 = Release|x64 {C59EBA80-FF8B-5D56-BE89-CDEA0744516A}.Debug|x64.ActiveCfg = Debug|x64 {C59EBA80-FF8B-5D56-BE89-CDEA0744516A}.Debug|x64.Build.0 = Debug|x64 {C59EBA80-FF8B-5D56-BE89-CDEA0744516A}.Release|x64.ActiveCfg = Release|x64 {C59EBA80-FF8B-5D56-BE89-CDEA0744516A}.Release|x64.Build.0 = Release|x64 {5D6870A5-F52B-544D-8502-BA5D90A59262}.Debug|x64.ActiveCfg = Debug|x64 {5D6870A5-F52B-544D-8502-BA5D90A59262}.Debug|x64.Build.0 = Debug|x64 {5D6870A5-F52B-544D-8502-BA5D90A59262}.Release|x64.ActiveCfg = Release|x64 {5D6870A5-F52B-544D-8502-BA5D90A59262}.Release|x64.Build.0 = Release|x64 {9E60B7F5-27E4-54E1-B1E4-8D48BCCA3112}.Debug|x64.ActiveCfg = Debug|x64 {9E60B7F5-27E4-54E1-B1E4-8D48BCCA3112}.Debug|x64.Build.0 = Debug|x64 {9E60B7F5-27E4-54E1-B1E4-8D48BCCA3112}.Release|x64.ActiveCfg = Release|x64 {9E60B7F5-27E4-54E1-B1E4-8D48BCCA3112}.Release|x64.Build.0 = Release|x64 {AD9BBB2D-EBDF-578A-8E93-690633102134}.Debug|x64.ActiveCfg = Debug|x64 {AD9BBB2D-EBDF-578A-8E93-690633102134}.Debug|x64.Build.0 = Debug|x64 {AD9BBB2D-EBDF-578A-8E93-690633102134}.Release|x64.ActiveCfg = Release|x64 {AD9BBB2D-EBDF-578A-8E93-690633102134}.Release|x64.Build.0 = Release|x64 {BFD32EF9-C341-55A7-877C-ACA2E12D758D}.Debug|x64.ActiveCfg = Debug|x64 {BFD32EF9-C341-55A7-877C-ACA2E12D758D}.Debug|x64.Build.0 = Debug|x64 {BFD32EF9-C341-55A7-877C-ACA2E12D758D}.Release|x64.ActiveCfg = Release|x64 {BFD32EF9-C341-55A7-877C-ACA2E12D758D}.Release|x64.Build.0 = Release|x64 {31312F99-64B9-55A3-98CD-9C6716F94F4D}.Debug|x64.ActiveCfg = Debug|x64 {31312F99-64B9-55A3-98CD-9C6716F94F4D}.Debug|x64.Build.0 = Debug|x64 {31312F99-64B9-55A3-98CD-9C6716F94F4D}.Release|x64.ActiveCfg = Release|x64 {31312F99-64B9-55A3-98CD-9C6716F94F4D}.Release|x64.Build.0 = Release|x64 {7845BFF5-8676-5038-9B8F-56125A7CD668}.Debug|x64.ActiveCfg = Debug|x64 {7845BFF5-8676-5038-9B8F-56125A7CD668}.Debug|x64.Build.0 = Debug|x64 {7845BFF5-8676-5038-9B8F-56125A7CD668}.Release|x64.ActiveCfg = Release|x64 {7845BFF5-8676-5038-9B8F-56125A7CD668}.Release|x64.Build.0 = Release|x64 {C265E5A2-2BC5-5369-9224-F0686847A25A}.Debug|x64.ActiveCfg = Debug|x64 {C265E5A2-2BC5-5369-9224-F0686847A25A}.Debug|x64.Build.0 = Debug|x64 {C265E5A2-2BC5-5369-9224-F0686847A25A}.Release|x64.ActiveCfg = Release|x64 {C265E5A2-2BC5-5369-9224-F0686847A25A}.Release|x64.Build.0 = Release|x64 {D3A0178F-3F8C-5383-BDA2-A1C435F8A624}.Debug|x64.ActiveCfg = Debug|x64 {D3A0178F-3F8C-5383-BDA2-A1C435F8A624}.Debug|x64.Build.0 = Debug|x64 {D3A0178F-3F8C-5383-BDA2-A1C435F8A624}.Release|x64.ActiveCfg = Release|x64 {D3A0178F-3F8C-5383-BDA2-A1C435F8A624}.Release|x64.Build.0 = Release|x64 {41C15B4A-390C-5E7B-9281-DEDBC41FEABC}.Debug|x64.ActiveCfg = Debug|x64 {41C15B4A-390C-5E7B-9281-DEDBC41FEABC}.Debug|x64.Build.0 = Debug|x64 {41C15B4A-390C-5E7B-9281-DEDBC41FEABC}.Release|x64.ActiveCfg = Release|x64 {41C15B4A-390C-5E7B-9281-DEDBC41FEABC}.Release|x64.Build.0 = Release|x64 {65D8E850-75E9-5A2D-B6FC-66D749EBFC03}.Debug|x64.ActiveCfg = Debug|x64 {65D8E850-75E9-5A2D-B6FC-66D749EBFC03}.Debug|x64.Build.0 = Debug|x64 {65D8E850-75E9-5A2D-B6FC-66D749EBFC03}.Release|x64.ActiveCfg = Release|x64 {65D8E850-75E9-5A2D-B6FC-66D749EBFC03}.Release|x64.Build.0 = Release|x64 {412C93B3-32D8-590D-84AD-A74BDE903E3D}.Debug|x64.ActiveCfg = Debug|x64 {412C93B3-32D8-590D-84AD-A74BDE903E3D}.Debug|x64.Build.0 = Debug|x64 {412C93B3-32D8-590D-84AD-A74BDE903E3D}.Release|x64.ActiveCfg = Release|x64 {412C93B3-32D8-590D-84AD-A74BDE903E3D}.Release|x64.Build.0 = Release|x64 {735CF9E3-42AE-52A6-B8E2-B14204F835F6}.Debug|x64.ActiveCfg = Debug|x64 {735CF9E3-42AE-52A6-B8E2-B14204F835F6}.Debug|x64.Build.0 = Debug|x64 {735CF9E3-42AE-52A6-B8E2-B14204F835F6}.Release|x64.ActiveCfg = Release|x64 {735CF9E3-42AE-52A6-B8E2-B14204F835F6}.Release|x64.Build.0 = Release|x64 {3602F0B4-8828-5CAC-B704-FD8DEA79B138}.Debug|x64.ActiveCfg = Debug|x64 {3602F0B4-8828-5CAC-B704-FD8DEA79B138}.Debug|x64.Build.0 = Debug|x64 {3602F0B4-8828-5CAC-B704-FD8DEA79B138}.Release|x64.ActiveCfg = Release|x64 {3602F0B4-8828-5CAC-B704-FD8DEA79B138}.Release|x64.Build.0 = Release|x64 {53B1D2B1-620F-561A-8DE4-85F55E4D564B}.Debug|x64.ActiveCfg = Debug|x64 {53B1D2B1-620F-561A-8DE4-85F55E4D564B}.Debug|x64.Build.0 = Debug|x64 {53B1D2B1-620F-561A-8DE4-85F55E4D564B}.Release|x64.ActiveCfg = Release|x64 {53B1D2B1-620F-561A-8DE4-85F55E4D564B}.Release|x64.Build.0 = Release|x64 {32C814A1-0D7D-56E3-B63D-D4A096D0E7E7}.Debug|x64.ActiveCfg = Debug|x64 {32C814A1-0D7D-56E3-B63D-D4A096D0E7E7}.Debug|x64.Build.0 = Debug|x64 {32C814A1-0D7D-56E3-B63D-D4A096D0E7E7}.Release|x64.ActiveCfg = Release|x64 {32C814A1-0D7D-56E3-B63D-D4A096D0E7E7}.Release|x64.Build.0 = Release|x64 {F72023A7-259D-5CCE-8EBB-C796CF0CFD0F}.Debug|x64.ActiveCfg = Debug|x64 {F72023A7-259D-5CCE-8EBB-C796CF0CFD0F}.Debug|x64.Build.0 = Debug|x64 {F72023A7-259D-5CCE-8EBB-C796CF0CFD0F}.Release|x64.ActiveCfg = Release|x64 {F72023A7-259D-5CCE-8EBB-C796CF0CFD0F}.Release|x64.Build.0 = Release|x64 {28C337E6-DC50-590C-8506-833192B80273}.Debug|x64.ActiveCfg = Debug|x64 {28C337E6-DC50-590C-8506-833192B80273}.Debug|x64.Build.0 = Debug|x64 {28C337E6-DC50-590C-8506-833192B80273}.Release|x64.ActiveCfg = Release|x64 {28C337E6-DC50-590C-8506-833192B80273}.Release|x64.Build.0 = Release|x64 {FFCEE0E9-435F-593F-B2B8-FDDC0B95A47E}.Debug|x64.ActiveCfg = Debug|x64 {FFCEE0E9-435F-593F-B2B8-FDDC0B95A47E}.Debug|x64.Build.0 = Debug|x64 {FFCEE0E9-435F-593F-B2B8-FDDC0B95A47E}.Release|x64.ActiveCfg = Release|x64 {FFCEE0E9-435F-593F-B2B8-FDDC0B95A47E}.Release|x64.Build.0 = Release|x64 {76AF7D4B-B9A1-5E76-83CB-9F9EFDE10E3A}.Debug|x64.ActiveCfg = Debug|x64 {76AF7D4B-B9A1-5E76-83CB-9F9EFDE10E3A}.Debug|x64.Build.0 = Debug|x64 {76AF7D4B-B9A1-5E76-83CB-9F9EFDE10E3A}.Release|x64.ActiveCfg = Release|x64 {76AF7D4B-B9A1-5E76-83CB-9F9EFDE10E3A}.Release|x64.Build.0 = Release|x64 {1BE11466-4CE8-52BA-A317-FDCDAE8FC884}.Debug|x64.ActiveCfg = Debug|x64 {1BE11466-4CE8-52BA-A317-FDCDAE8FC884}.Debug|x64.Build.0 = Debug|x64 {1BE11466-4CE8-52BA-A317-FDCDAE8FC884}.Release|x64.ActiveCfg = Release|x64 {1BE11466-4CE8-52BA-A317-FDCDAE8FC884}.Release|x64.Build.0 = Release|x64 {D6B04B3F-8326-55E5-B4E6-FB11D6784BCD}.Debug|x64.ActiveCfg = Debug|x64 {D6B04B3F-8326-55E5-B4E6-FB11D6784BCD}.Debug|x64.Build.0 = Debug|x64 {D6B04B3F-8326-55E5-B4E6-FB11D6784BCD}.Release|x64.ActiveCfg = Release|x64 {D6B04B3F-8326-55E5-B4E6-FB11D6784BCD}.Release|x64.Build.0 = Release|x64 {2682F384-189A-5897-B38E-4C0E5749404D}.Debug|x64.ActiveCfg = Debug|x64 {2682F384-189A-5897-B38E-4C0E5749404D}.Debug|x64.Build.0 = Debug|x64 {2682F384-189A-5897-B38E-4C0E5749404D}.Release|x64.ActiveCfg = Release|x64 {2682F384-189A-5897-B38E-4C0E5749404D}.Release|x64.Build.0 = Release|x64 {FF09D392-E501-5DAB-B5A9-B1B97E246D37}.Debug|x64.ActiveCfg = Debug|x64 {FF09D392-E501-5DAB-B5A9-B1B97E246D37}.Debug|x64.Build.0 = Debug|x64 {FF09D392-E501-5DAB-B5A9-B1B97E246D37}.Release|x64.ActiveCfg = Release|x64 {FF09D392-E501-5DAB-B5A9-B1B97E246D37}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal mysql++-3.3.0/vc2008/mysql++_ssqls6.vcproj000644 000765 000024 00000013573 14042362131 020575 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_test_string.vcproj000644 000765 000024 00000013616 14042362131 021705 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_test_cpool.vcproj000644 000765 000024 00000013600 14042362131 021504 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_tquery4.vcproj000644 000765 000024 00000013611 14042362131 020750 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_mysqlpp.vcproj000644 000765 000024 00000020012 14042362131 021031 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_tquery1.vcproj000644 000765 000024 00000013611 14042362131 020745 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_ssqls3.vcproj000644 000765 000024 00000013573 14042362131 020572 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_test_wnp.vcproj000644 000765 000024 00000013544 14042362131 021203 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_simple1.vcproj000644 000765 000024 00000013611 14042362131 020705 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_test_query_copy.vcproj000644 000765 000024 00000013706 14042362131 022576 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_ssqls1.vcproj000644 000765 000024 00000013573 14042362131 020570 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_test_insertpolicy.vcproj000644 000765 000024 00000013742 14042362131 023123 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_store_if.vcproj000644 000765 000024 00000013627 14042362131 021154 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_tquery3.vcproj000644 000765 000024 00000013611 14042362131 020747 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_test_qssqls.vcproj000644 000765 000024 00000013616 14042362131 021725 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_simple3.vcproj000644 000765 000024 00000013611 14042362131 020707 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_deadlock.vcproj000644 000765 000024 00000013627 14042362131 021110 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_test_array_index.vcproj000644 000765 000024 00000013724 14042362131 022704 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_test_uds.vcproj000644 000765 000024 00000013544 14042362131 021172 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_ssqls5.vcproj000644 000765 000024 00000013573 14042362131 020574 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_ssqls2parse.vcproj000644 000765 000024 00000012135 14042362131 021615 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_test_inttypes.vcproj000644 000765 000024 00000013652 14042362131 022256 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_ssqlsxlat.vcproj000644 000765 000024 00000013773 14042362131 021402 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_test_ssqls2.vcproj000644 000765 000024 00000014006 14042362131 021620 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_test_tcp.vcproj000644 000765 000024 00000013544 14042362131 021165 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_test_manip.vcproj000644 000765 000024 00000013600 14042362131 021474 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_transaction.vcproj000644 000765 000024 00000013701 14042362131 021660 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_dbinfo.vcproj000644 000765 000024 00000013573 14042362131 020603 0ustar00tangentstaff000000 000000 mysql++-3.3.0/vc2008/mysql++_for_each.vcproj000644 000765 000024 00000013627 14042362131 021110 0ustar00tangentstaff000000 000000 mysql++-3.3.0/doc/ssqls-pretty000755 000765 000024 00000002370 14042362131 016776 0ustar00tangentstaff000000 000000 #!/usr/bin/perl use FileHandle; use IPC::Open2; if ($ARGV[0] =~ /^--command\=(.+)/) { $command = $1; } else { $command = "g++ -E -I /usr/include/mysql"; } if (-e 'lib/mysql++.h') { $command .= " -I lib"; } else { $command .= " -I /usr/include/mysql++/"; } $/ = undef; $orgcode = ; ($macro) = $orgcode =~ /(sql_create_.+? *\(.+?\))/s; $out = << "---"; #include $macro --- $/ = "\n"; $temp_dir = -d '/tmp' ? '/tmp' : $ENV{TMP} || $ENV{TEMP}; #print $out; open OUT, ">$temp_dir/${$}.cc"; print OUT $out; close OUT; system "$command $temp_dir/${$}.cc > $temp_dir/${$}.ii"; open IN, "$temp_dir/${$}.ii"; while () { next if /^\#/; $code .= $_; } close IN; unlink "$temp_dir/${$}.cc","$temp_dir/${$}.ii"; $_ = $code; s/\s+/ /g; s/ *public: */public:\n/g; s/ *private: */public:\n/g; s/ *\; */\;\n/g; s/ *\{ */ \{\n/g; s/ *\} */ \}\n\n/g; s/ *\n */\n/g; s/\{\s+}/\{\}/g; s/\}\s+\;/\}\;\n/g; $code = ""; foreach (split /\n/) { if (/\}/ && !/\{\}/ ) { $indent -= 2; $ind = ' 'x$indent; } $code .= "$ind$_\n" unless /\:$/; $code .= "$_\n" if /\:$/; if (/\{/ && !/\{\}/ ) { $indent += 2; $ind = ' 'x$indent; } } $orgcode =~ s/(sql_create_.+? *\(.+?\))/\n$code\n/s; print $orgcode; mysql++-3.3.0/doc/README-devel-RPM.txt000644 000765 000024 00000000716 14042362131 017607 0ustar00tangentstaff000000 000000 mysql++-devel RPM installs the files you need when building your own MySQL++ based programs, as well as documentation and examples that can help you learn how to use the library. The MySQL++ header files are in /usr/include/mysql++, the library is in /usr/lib, and the example programs' source code is in /usr/share/doc/mysql++-devel-*/examples. For more information on the examples, see the README-examples.txt file in the directory containing the examples. mysql++-3.3.0/doc/pdf/000755 000765 000024 00000000000 14042362131 015125 5ustar00tangentstaff000000 000000 mysql++-3.3.0/doc/html/000755 000765 000024 00000000000 14042362131 015320 5ustar00tangentstaff000000 000000 mysql++-3.3.0/doc/userman/000755 000765 000024 00000000000 14042362153 016032 5ustar00tangentstaff000000 000000 mysql++-3.3.0/doc/README-manuals-RPM.txt000644 000765 000024 00000000234 14042362131 020143 0ustar00tangentstaff000000 000000 For more information about MySQL++, see its home page: http://tangentsoft.net/mysql++/ See the LICENSE file in this directory for the library's license. mysql++-3.3.0/doc/refman/000755 000765 000024 00000000000 14042362131 015624 5ustar00tangentstaff000000 000000 mysql++-3.3.0/doc/refman/search/000755 000765 000024 00000000000 14042362131 017071 5ustar00tangentstaff000000 000000 mysql++-3.3.0/doc/userman/html.xsl000644 000765 000024 00000006323 14042362131 017526 0ustar00tangentstaff000000 000000 http://dev.mysql.com/doc/mysql/en/ .html () ../refman/classmysqlpp_1_1 .html ../refman/structmysqlpp_1_1 .html mysql++-3.3.0/doc/userman/cgi_jpeg.txt000644 000765 000024 00000006132 14042362131 020340 0ustar00tangentstaff000000 000000 #include "cmdline.h" #include "images.h" #define CRLF "\r\n" #define CRLF2 "\r\n\r\n" int main(int argc, char* argv[]) { // Get database access parameters from command line if present, else // use hard-coded values for true CGI case. mysqlpp::examples::CommandLine cmdline(argc, argv, "root", "nunyabinness"); if (!cmdline) { return 1; } // Parse CGI query string environment variable to get image ID unsigned int img_id = 0; char* cgi_query = getenv("QUERY_STRING"); if (cgi_query) { if ((strlen(cgi_query) < 4) || memcmp(cgi_query, "id=", 3)) { std::cout << "Content-type: text/plain" << std::endl << std::endl; std::cout << "ERROR: Bad query string" << std::endl; return 1; } else { img_id = atoi(cgi_query + 3); } } else { std::cerr << "Put this program into a web server's cgi-bin " "directory, then" << std::endl; std::cerr << "invoke it with a URL like this:" << std::endl; std::cerr << std::endl; std::cerr << " http://server.name.com/cgi-bin/cgi_jpeg?id=2" << std::endl; std::cerr << std::endl; std::cerr << "This will retrieve the image with ID 2." << std::endl; std::cerr << std::endl; std::cerr << "You will probably have to change some of the #defines " "at the top of" << std::endl; std::cerr << "examples/cgi_jpeg.cpp to allow the lookup to work." << std::endl; return 1; } // Retrieve image from DB by ID try { mysqlpp::Connection con(mysqlpp::examples::db_name, cmdline.server(), cmdline.user(), cmdline.pass()); mysqlpp::Query query = con.query(); query << "SELECT * FROM images WHERE id = " << img_id; mysqlpp::StoreQueryResult res = query.store(); if (res && res.num_rows()) { images img = res[0]; if (img.data.is_null) { std::cout << "Content-type: text/plain" << CRLF2; std::cout << "No image content!" << CRLF; } else { std::cout << "X-Image-Id: " << img_id << CRLF; // for debugging std::cout << "Content-type: image/jpeg" << CRLF; std::cout << "Content-length: " << img.data.data.length() << CRLF2; std::cout << img.data; } } else { std::cout << "Content-type: text/plain" << CRLF2; std::cout << "ERROR: No image with ID " << img_id << CRLF; } } catch (const mysqlpp::BadQuery& er) { // Handle any query errors std::cout << "Content-type: text/plain" << CRLF2; std::cout << "QUERY ERROR: " << er.what() << CRLF; return 1; } catch (const mysqlpp::Exception& er) { // Catch-all for any other MySQL++ exceptions std::cout << "Content-type: text/plain" << CRLF2; std::cout << "GENERAL ERROR: " << er.what() << CRLF; return 1; } return 0; } mysql++-3.3.0/doc/userman/stock.txt000644 000765 000024 00000001273 14042362131 017715 0ustar00tangentstaff000000 000000 #include #include // The following is calling a very complex macro which will create // "struct stock", which has the member variables: // // sql_char item; // ... // sql_mediumtext_null description; // // plus methods to help populate the class from a MySQL row. See the // SSQLS sections in the user manual for further details. sql_create_6(stock, 1, 6, // The meaning of these values is covered in the user manual mysqlpp::sql_char, item, mysqlpp::sql_bigint, num, mysqlpp::sql_double, weight, mysqlpp::sql_double_null, price, mysqlpp::sql_date, sDate, // SSQLS isn't case-sensitive! mysqlpp::sql_mediumtext_null, description) mysql++-3.3.0/doc/userman/licenses.dbx000644 000765 000024 00000104764 14042362131 020346 0ustar00tangentstaff000000 000000 Licensing The primary copyright holders on the MySQL++ library and its documentation are Kevin Atkinson (1998), MySQL AB (1999 through 2001) and Educational Technology Resources, Inc. (2004 through the date of this writing). There are other contributors, who also retain copyrights on their additions; see the ChangeLog.md file in the MySQL++ distribution tarball for details. The MySQL++ library and its Reference Manual are released under the GNU Lesser General Public License (LGPL), reproduced below. The MySQL++ User Manual — excepting some example code from the library reproduced within it — is offered under a license closely based on the Linux Documentation Project License (LDPL) v2.0, included below. (The MySQL++ documentation isn’t actually part of the Linux Documentation Project, so the main changes are to LDP-related language. Also, generic language such as “author’s (or authors’)” has been replaced with specific language, because the license applies to only this one document.) These licenses basically state that you are free to use, distribute and modify these works, whether for personal or commercial purposes, as long as you grant the same rights to those you distribute the works to, whether you changed them or not. See the licenses below for full details. GNU Lesser General Public License Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author’s reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the “Lesser” General Public License because it does Less to protect the user’s freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users’ freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a “work based on the library” and a “work that uses the library”. The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called “this License”). Each licensee is addressed as “you”. A “library” means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The “Library”, below, refers to any such software library or work which has been distributed under these terms. A “work based on the Library” means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term “modification”.) “Source code” for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library’s complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:

a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a “work that uses the Library”. Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a “work that uses the Library” with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a “work that uses the library”. The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a “work that uses the Library” uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a “work that uses the Library” with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer’s own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:
a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable “work that uses the Library”, as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user’s computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy.
For an executable, the required form of the “work that uses the Library” must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients’ exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and “any later version”, you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found.
<one line to give the library’s name and a brief idea of what it does.> Copyright © <year> <name of author> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a “copyright disclaimer” for the library, if necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. <signature of Ty Coon>, 1 April 1990 Ty Coon, President of Vice
That’s all there is to it!
MySQL++ User Manual License I. COPYRIGHT The copyright to the MySQL++ User Manual is owned by its authors. II. LICENSE The MySQL++ User Manual may be reproduced and distributed in whole or in part, in any medium physical or electronic, provided that this license notice is displayed in the reproduction. Commercial redistribution is permitted and encouraged. Thirty days advance notice via email to the authors of redistribution is appreciated, to give the authors time to provide updated documents. A. REQUIREMENTS OF MODIFIED WORKS All modified documents, including translations, anthologies, and partial documents, must meet the following requirements: The modified version must be labeled as such. The person making the modifications must be identified. Acknowledgement of the original author must be retained. The location of the original unmodified document be identified. The original authors’ names may not be used to assert or imply endorsement of the resulting document without the original authors’ permission. In addition it is requested that: The modifications (including deletions) be noted. The authors be notified by email of the modification in advance of redistribution, if an email address is provided in the document. Mere aggregation of the MySQL++ User Manual with other documents or programs on the same media shall not cause this license to apply to those other works. All translations, derivative documents, or modified documents that incorporate the MySQL++ User Manual may not have more restrictive license terms than these, except that you may require distributors to make the resulting document available in source format. mysql++-3.3.0/doc/userman/ssqls6.txt000644 000765 000024 00000006632 14042362131 020031 0ustar00tangentstaff000000 000000 #include "cmdline.h" #include "printdata.h" #include "stock.h" #include using namespace std; // Breaks a given text line of tab-separated fields up into a list of // strings. static size_t tokenize_line(const string& line, vector& strings) { string field; strings.clear(); istringstream iss(line); while (getline(iss, field, '\t')) { strings.push_back(mysqlpp::String(field)); } return strings.size(); } // Reads a tab-delimited text file, returning the data found therein // as a vector of stock SSQLS objects. static bool read_stock_items(const char* filename, vector& stock_vector) { ifstream input(filename); if (!input) { cerr << "Error opening input file '" << filename << "'" << endl; return false; } string line; vector strings; while (getline(input, line)) { if (tokenize_line(line, strings) == 6) { stock_vector.push_back(stock(string(strings[0]), strings[1], strings[2], strings[3], strings[4], strings[5])); } else { cerr << "Error parsing input line (doesn't have 6 fields) " << "in file '" << filename << "'" << endl; cerr << "invalid line: '" << line << "'" << endl; } } return true; } int main(int argc, char *argv[]) { // Get database access parameters from command line mysqlpp::examples::CommandLine cmdline(argc, argv); if (!cmdline) { return 1; } // Read in a tab-delimited file of stock data vector stock_vector; if (!read_stock_items("examples/stock.txt", stock_vector)) { return 1; } try { // Establish the connection to the database server. mysqlpp::Connection con(mysqlpp::examples::db_name, cmdline.server(), cmdline.user(), cmdline.pass()); // Clear all existing rows from stock table, as we're about to // insert a bunch of new ones, and we want a clean slate. mysqlpp::Query query = con.query(); query.exec("DELETE FROM stock"); // Insert data read from the CSV file, allowing up to 1000 // characters per packet. We're using a small size in this // example just to force multiple inserts. In a real program, // you'd want to use larger packets, for greater efficiency. mysqlpp::Query::MaxPacketInsertPolicy<> insert_policy(1000); query.insertfrom(stock_vector.begin(), stock_vector.end(), insert_policy); // Retrieve and print out the new table contents. print_stock_table(query); } catch (const mysqlpp::BadQuery& er) { // Handle any query errors cerr << "Query error: " << er.what() << endl; return -1; } catch (const mysqlpp::BadConversion& er) { // Handle bad conversions cerr << "Conversion error: " << er.what() << endl << "\tretrieved data size: " << er.retrieved << ", actual size: " << er.actual_size << endl; return -1; } catch (const mysqlpp::BadInsertPolicy& er) { // Handle bad conversions cerr << "InsertPolicy error: " << er.what() << endl; return -1; } catch (const mysqlpp::Exception& er) { // Catch-all for any other MySQL++ exceptions cerr << "Error: " << er.what() << endl; return -1; } return 0; } mysql++-3.3.0/doc/userman/fo.xsl000644 000765 000024 00000005310 14042362131 017161 0ustar00tangentstaff000000 000000 page false left 85% mysql++-3.3.0/doc/userman/ssqls4.txt000644 000765 000024 00000004520 14042362131 020021 0ustar00tangentstaff000000 000000 #include "cmdline.h" #include "printdata.h" #include "stock.h" #include using namespace std; int main(int argc, char *argv[]) { // Get database access parameters from command line mysqlpp::examples::CommandLine cmdline(argc, argv); if (!cmdline) { return 1; } try { // Establish the connection to the database server. mysqlpp::Connection con(mysqlpp::examples::db_name, cmdline.server(), cmdline.user(), cmdline.pass()); // Retrieve all rows from the stock table and put them in an // STL set. Notice that this works just as well as storing them // in a vector, which we did in ssqls1.cpp. It works because // SSQLS objects are less-than comparable. mysqlpp::Query query = con.query("select * from stock"); set res; query.storein(res); // Display the result set. Since it is an STL set and we set up // the SSQLS to compare based on the item column, the rows will // be sorted by item. print_stock_header(res.size()); set::iterator it; cout.precision(3); for (it = res.begin(); it != res.end(); ++it) { print_stock_row(it->item.c_str(), it->num, it->weight, it->price, it->sDate); } // Use set's find method to look up a stock item by item name. // This also uses the SSQLS comparison setup. it = res.find(stock("Hotdog Buns")); if (it != res.end()) { cout << endl << "Currently " << it->num << " hotdog buns in stock." << endl; } else { cout << endl << "Sorry, no hotdog buns in stock." << endl; } } catch (const mysqlpp::BadQuery& er) { // Handle any query errors cerr << "Query error: " << er.what() << endl; return -1; } catch (const mysqlpp::BadConversion& er) { // Handle bad conversions cerr << "Conversion error: " << er.what() << endl << "\tretrieved data size: " << er.retrieved << ", actual size: " << er.actual_size << endl; return -1; } catch (const mysqlpp::Exception& er) { // Catch-all for any other MySQL++ exceptions cerr << "Error: " << er.what() << endl; return -1; } return 0; } mysql++-3.3.0/doc/userman/multiquery.txt000644 000765 000024 00000012011 14042362131 021002 0ustar00tangentstaff000000 000000 #include "cmdline.h" #include "printdata.h" #include #include #include #include #include using namespace std; using namespace mysqlpp; typedef vector IntVectorType; static void print_header(IntVectorType& widths, StoreQueryResult& res) { cout << " |" << setfill(' '); for (size_t i = 0; i < res.field_names()->size(); i++) { cout << " " << setw(widths.at(i)) << res.field_name(int(i)) << " |"; } cout << endl; } static void print_row(IntVectorType& widths, Row& row) { cout << " |" << setfill(' '); for (size_t i = 0; i < row.size(); ++i) { cout << " " << setw(widths.at(i)) << row[int(i)] << " |"; } cout << endl; } static void print_row_separator(IntVectorType& widths) { cout << " +" << setfill('-'); for (size_t i = 0; i < widths.size(); i++) { cout << "-" << setw(widths.at(i)) << '-' << "-+"; } cout << endl; } static void print_result(StoreQueryResult& res, int index) { // Show how many rows are in result, if any StoreQueryResult::size_type num_results = res.size(); if (res && (num_results > 0)) { cout << "Result set " << index << " has " << num_results << " row" << (num_results == 1 ? "" : "s") << ':' << endl; } else { cout << "Result set " << index << " is empty." << endl; return; } // Figure out the widths of the result set's columns IntVectorType widths; size_t size = res.num_fields(); for (size_t i = 0; i < size; i++) { widths.push_back(max( res.field(i).max_length(), res.field_name(i).size())); } // Print result set header print_row_separator(widths); print_header(widths, res); print_row_separator(widths); // Display the result set contents for (StoreQueryResult::size_type i = 0; i < num_results; ++i) { print_row(widths, res[i]); } // Print result set footer print_row_separator(widths); } static void print_multiple_results(Query& query) { // Execute query and print all result sets StoreQueryResult res = query.store(); print_result(res, 0); for (int i = 1; query.more_results(); ++i) { res = query.store_next(); print_result(res, i); } } int main(int argc, char *argv[]) { // Get connection parameters from command line mysqlpp::examples::CommandLine cmdline(argc, argv); if (!cmdline) { return 1; } try { // Enable multi-queries. Notice that you almost always set // MySQL++ connection options before establishing the server // connection, and options are always set using this one // interface. If you're familiar with the underlying C API, // you know that there is poor consistency on these matters; // MySQL++ abstracts these differences away. Connection con; con.set_option(new MultiStatementsOption(true)); // Connect to the database if (!con.connect(mysqlpp::examples::db_name, cmdline.server(), cmdline.user(), cmdline.pass())) { return 1; } // Set up query with multiple queries. Query query = con.query(); query << "DROP TABLE IF EXISTS test_table; " << "CREATE TABLE test_table(id INT); " << "INSERT INTO test_table VALUES(10); " << "UPDATE test_table SET id=20 WHERE id=10; " << "SELECT * FROM test_table; " << "DROP TABLE test_table"; cout << "Multi-query: " << endl << query << endl; // Execute statement and display all result sets. print_multiple_results(query); #if MYSQL_VERSION_ID >= 50000 // If it's MySQL v5.0 or higher, also test stored procedures, which // return their results the same way multi-queries do. query << "DROP PROCEDURE IF EXISTS get_stock; " << "CREATE PROCEDURE get_stock" << "( i_item varchar(20) ) " << "BEGIN " << "SET i_item = concat('%', i_item, '%'); " << "SELECT * FROM stock WHERE lower(item) like lower(i_item); " << "END;"; cout << "Stored procedure query: " << endl << query << endl; // Create the stored procedure. print_multiple_results(query); // Call the stored procedure and display its results. query << "CALL get_stock('relish')"; cout << "Query: " << query << endl; print_multiple_results(query); #endif return 0; } catch (const BadOption& err) { cerr << err.what() << endl; cerr << "This example requires MySQL 4.1.1 or later." << endl; return 1; } catch (const ConnectionFailed& err) { cerr << "Failed to connect to database server: " << err.what() << endl; return 1; } catch (const Exception& er) { // Catch-all for any other MySQL++ exceptions cerr << "Error: " << er.what() << endl; return 1; } } mysql++-3.3.0/doc/userman/ssqls5.txt000644 000765 000024 00000003253 14042362131 020024 0ustar00tangentstaff000000 000000 #include "cmdline.h" #include "printdata.h" #include "stock.h" #include #include using namespace std; int main(int argc, char *argv[]) { // Get database access parameters from command line mysqlpp::examples::CommandLine cmdline(argc, argv); if (!cmdline) { return 1; } try { // Establish the connection to the database server. mysqlpp::Connection con(mysqlpp::examples::db_name, cmdline.server(), cmdline.user(), cmdline.pass()); // Get all the rows in the stock table. mysqlpp::Query query = con.query("select * from stock"); vector res; query.storein(res); if (res.size() > 0) { // Build a select query using the data from the first row // returned by our previous query. query << "select * from stock where " << res[0].equal_list(" and ", stock_weight, stock_price); // Display the finished query. cout << "Custom query:\n" << query << endl; } } catch (const mysqlpp::BadQuery& er) { // Handle any query errors cerr << "Query error: " << er.what() << endl; return -1; } catch (const mysqlpp::BadConversion& er) { // Handle bad conversions cerr << "Conversion error: " << er.what() << endl << "\tretrieved data size: " << er.retrieved << ", actual size: " << er.actual_size << endl; return -1; } catch (const mysqlpp::Exception& er) { // Catch-all for any other MySQL++ exceptions cerr << "Error: " << er.what() << endl; return -1; } return 0; } mysql++-3.3.0/doc/userman/ssqls1.txt000644 000765 000024 00000003675 14042362131 020030 0ustar00tangentstaff000000 000000 #include "cmdline.h" #include "printdata.h" #include "stock.h" #include #include using namespace std; int main(int argc, char *argv[]) { // Get database access parameters from command line mysqlpp::examples::CommandLine cmdline(argc, argv); if (!cmdline) { return 1; } try { // Establish the connection to the database server. mysqlpp::Connection con(mysqlpp::examples::db_name, cmdline.server(), cmdline.user(), cmdline.pass()); // Retrieve a subset of the stock table's columns, and store // the data in a vector of 'stock' SSQLS structures. See the // user manual for the consequences arising from this quiet // ability to store a subset of the table in the stock SSQLS. mysqlpp::Query query = con.query("select item,description from stock"); vector res; query.storein(res); // Display the items cout << "We have:" << endl; vector::iterator it; for (it = res.begin(); it != res.end(); ++it) { cout << '\t' << it->item; if (it->description != mysqlpp::null) { cout << " (" << it->description << ")"; } cout << endl; } } catch (const mysqlpp::BadQuery& er) { // Handle any query errors cerr << "Query error: " << er.what() << endl; return -1; } catch (const mysqlpp::BadConversion& er) { // Handle bad conversions; e.g. type mismatch populating 'stock' cerr << "Conversion error: " << er.what() << endl << "\tretrieved data size: " << er.retrieved << ", actual size: " << er.actual_size << endl; return -1; } catch (const mysqlpp::Exception& er) { // Catch-all for any other MySQL++ exceptions cerr << "Error: " << er.what() << endl; return -1; } return 0; } mysql++-3.3.0/doc/userman/Makefile.hello.posix000644 000765 000024 00000000311 14042362131 021724 0ustar00tangentstaff000000 000000 CXXFLAGS := -I/usr/include/mysql -I/usr/local/include/mysql++ LDFLAGS := -L/usr/local/lib LDLIBS := -lmysqlpp -lmysqlclient EXECUTABLE := hello all: $(EXECUTABLE) clean: rm -f $(EXECUTABLE) *.o mysql++-3.3.0/doc/userman/mktxt000755 000765 000024 00000001151 14042362131 017121 0ustar00tangentstaff000000 000000 #!/bin/sh # Script to convert C++ source files to a text format, with 4 spaces for # every tab, and with the leading block comment removed. Used to # reformat the example programs so they can be xincluded directly into # the DocBook during XSLT processing. TXTFILE=$1 SRCFILE=`echo ../../examples/$TXTFILE | sed -e s/\\\\.txt/.cpp/` if [ ! -e $SRCFILE ] then SRCFILE=`echo ../../examples/$TXTFILE | sed -e s/\\\\.txt/.h/` fi CLINE=`grep -n '\*\*/' $SRCFILE |cut -f1 -d:` LINE=`echo $CLINE + 2 |bc` #echo Converting $SRCFILE to $TXTFILE, starting at line $LINE... expand -t4 $SRCFILE | tail -n +$LINE > $TXTFILE mysql++-3.3.0/doc/userman/ssqls2.txt000644 000765 000024 00000003636 14042362131 020026 0ustar00tangentstaff000000 000000 #include "cmdline.h" #include "printdata.h" #include "stock.h" #include #include using namespace std; int main(int argc, char *argv[]) { // Get database access parameters from command line mysqlpp::examples::CommandLine cmdline(argc, argv); if (!cmdline) { return 1; } try { // Establish the connection to the database server. mysqlpp::Connection con(mysqlpp::examples::db_name, cmdline.server(), cmdline.user(), cmdline.pass()); // Create and populate a stock object. We could also have used // the set() member, which takes the same parameters as this // constructor. stock row("Hot Dogs", 100, 1.5, numeric_limits::infinity(), // "priceless," ha! mysqlpp::sql_date("1998-09-25"), mysqlpp::null); // Form the query to insert the row into the stock table. mysqlpp::Query query = con.query(); query.insert(row); // Show the query about to be executed. cout << "Query: " << query << endl; // Execute the query. We use execute() because INSERT doesn't // return a result set. query.execute(); // Retrieve and print out the new table contents. print_stock_table(query); } catch (const mysqlpp::BadQuery& er) { // Handle any query errors cerr << "Query error: " << er.what() << endl; return -1; } catch (const mysqlpp::BadConversion& er) { // Handle bad conversions cerr << "Conversion error: " << er.what() << endl << "\tretrieved data size: " << er.retrieved << ", actual size: " << er.actual_size << endl; return -1; } catch (const mysqlpp::Exception& er) { // Catch-all for any other MySQL++ exceptions cerr << "Error: " << er.what() << endl; return -1; } return 0; } mysql++-3.3.0/doc/userman/section-template.dbx000644 000765 000024 00000000404 14042362131 022000 0ustar00tangentstaff000000 000000 SECTION TITLE FIRST PARAGRAPH mysql++-3.3.0/doc/userman/load_jpeg.txt000644 000765 000024 00000010717 14042362131 020521 0ustar00tangentstaff000000 000000 #include "cmdline.h" #include "images.h" #include "printdata.h" #include using namespace std; using namespace mysqlpp; // This is just an implementation detail for the example. Skip down to // main() for the concept this example is trying to demonstrate. You // can simply assume that, given a BLOB containing a valid JPEG, it // returns true. static bool is_jpeg(const mysqlpp::sql_blob& img, const char** whynot) { // See http://stackoverflow.com/questions/2253404/ for // justification for the various tests. const unsigned char* idp = reinterpret_cast(img.data()); if (img.size() < 125) { *whynot = "a valid JPEG must be at least 125 bytes"; } else if ((idp[0] != 0xFF) || (idp[1] != 0xD8)) { *whynot = "file does not begin with JPEG sigil bytes"; } else if ((memcmp(idp + 6, "JFIF", 4) != 0) && (memcmp(idp + 6, "Exif", 4) != 0)) { *whynot = "file does not contain JPEG type word"; } else { *whynot = 0; return true; } return false; } // Skip to main() before studying this. This is a little too // low-level to bother with on your first pass thru the code. static bool load_jpeg_file(const mysqlpp::examples::CommandLine& cmdline, images& img, string& img_name) { if (cmdline.extra_args().size() == 0) { // Nothing for us to do here. Caller will insert NULL BLOB. return true; } // Got a file's name on the command line, so open it. img_name = cmdline.extra_args()[0]; ifstream img_file(img_name.c_str(), ios::binary); if (img_file) { // Slurp file contents into RAM with minimum copying. (Idiom // explained here: http://stackoverflow.com/questions/116038/) // // By loading the file into a C++ string (stringstream::str()) // and assigning that directly to a mysqlpp::sql_blob, we avoid // truncating the binary data at the first null character. img.data.data = static_cast( &(stringstream() << img_file.rdbuf()))->str(); // Check JPEG data for sanity. const char* error; if (is_jpeg(img.data.data, &error)) { return true; } else { cerr << '"' << img_name << "\" isn't a JPEG: " << error << '!' << endl; } } cmdline.print_usage("[jpeg_file]"); return false; } int main(int argc, char *argv[]) { // Get database access parameters from command line mysqlpp::examples::CommandLine cmdline(argc, argv); if (!cmdline) { return 1; } try { // Establish the connection to the database server. mysqlpp::Connection con(mysqlpp::examples::db_name, cmdline.server(), cmdline.user(), cmdline.pass()); // Load the file named on the command line images img(mysqlpp::null, mysqlpp::null); string img_name("NULL"); if (load_jpeg_file(cmdline, img, img_name)) { // Insert image data or SQL NULL into the images.data BLOB // column. The key here is that we're holding the raw // binary data in a mysqlpp::sql_blob, which avoids data // conversion problems that can lead to treating BLOB data // as C strings, thus causing null-truncation. The fact // that we're using SSQLS here is a side issue, simply // demonstrating that mysqlpp::Null is // now legal in SSQLS, as of MySQL++ 3.0.7. Query query = con.query(); query.insert(img); SimpleResult res = query.execute(); // Report successful insertion cout << "Inserted \"" << img_name << "\" into images table, " << img.data.data.size() << " bytes, ID " << res.insert_id() << endl; } } catch (const BadQuery& er) { // Handle any query errors cerr << "Query error: " << er.what() << endl; return -1; } catch (const BadConversion& er) { // Handle bad conversions cerr << "Conversion error: " << er.what() << endl << "\tretrieved data size: " << er.retrieved << ", actual size: " << er.actual_size << endl; return -1; } catch (const Exception& er) { // Catch-all for any other MySQL++ exceptions cerr << "Error: " << er.what() << endl; return -1; } return 0; } mysql++-3.3.0/doc/userman/ssqls3.txt000644 000765 000024 00000005252 14042362131 020023 0ustar00tangentstaff000000 000000 #include "cmdline.h" #include "printdata.h" #include "stock.h" #include using namespace std; int main(int argc, char *argv[]) { // Get database access parameters from command line mysqlpp::examples::CommandLine cmdline(argc, argv); if (!cmdline) { return 1; } try { // Establish the connection to the database server. mysqlpp::Connection con(mysqlpp::examples::db_name, cmdline.server(), cmdline.user(), cmdline.pass()); // Build a query to retrieve the stock item that has Unicode // characters encoded in UTF-8 form. mysqlpp::Query query = con.query("select * from stock "); query << "where item = " << mysqlpp::quote << "Nürnberger Brats"; // Retrieve the row, throwing an exception if it fails. mysqlpp::StoreQueryResult res = query.store(); if (res.empty()) { throw mysqlpp::BadQuery("UTF-8 bratwurst item not found in " "table, run resetdb"); } // Because there should only be one row in the result set, // there's no point in storing the result in an STL container. // We can store the first row directly into a stock structure // because one of an SSQLS's constructors takes a Row object. stock row = res[0]; // Create a copy so that the replace query knows what the // original values are. stock orig_row = row; // Change the stock object's item to use only 7-bit ASCII, and // to deliberately be wider than normal column widths printed // by print_stock_table(). row.item = "Nuerenberger Bratwurst"; // Form the query to replace the row in the stock table. query.update(orig_row, row); // Show the query about to be executed. cout << "Query: " << query << endl; // Run the query with execute(), since UPDATE doesn't return a // result set. query.execute(); // Retrieve and print out the new table contents. print_stock_table(query); } catch (const mysqlpp::BadQuery& er) { // Handle any query errors cerr << "Query error: " << er.what() << endl; return -1; } catch (const mysqlpp::BadConversion& er) { // Handle bad conversions cerr << "Conversion error: " << er.what() << endl << "\tretrieved data size: " << er.retrieved << ", actual size: " << er.actual_size << endl; return -1; } catch (const mysqlpp::Exception& er) { // Catch-all for any other MySQL++ exceptions cerr << "Error: " << er.what() << endl; return -1; } return 0; } mysql++-3.3.0/doc/userman/ssqls.dbx000644 000765 000024 00000136063 14042362131 017703 0ustar00tangentstaff000000 000000 Specialized SQL Structures The Specialized SQL Structure (SSQLS) feature lets you easily define C++ structures that match the form of your SQL tables. At the most superficial level, an SSQLS has a member variable corresponding to each field in the SQL table. But, an SSQLS also has several methods, operators, and data members used by MySQL++’s internals to provide neat functionality, which we cover in this chapter. You define SSQLSes using the macros defined in ssqls.h. This is the only MySQL++ header not automatically included for you by mysql++.h. You have to include it in code modules that use the SSQLS feature. sql_create Let’s say you have the following SQL table: CREATE TABLE stock ( item CHAR(30) NOT NULL, num BIGINT NOT NULL, weight DOUBLE NOT NULL, price DECIMAL(6,2) NOT NULL, sdate DATE NOT NULL, description MEDIUMTEXT NULL) You can create a C++ structure corresponding to this table like so: sql_create_6(stock, 1, 6, mysqlpp::sql_char, item, mysqlpp::sql_bigint, num, mysqlpp::sql_double, weight, mysqlpp::sql_decimal, price, mysqlpp::sql_date, sdate, mysqlpp::Null<mysqlpp::sql_mediumtext>, description) This declares the stock structure, which has a data member for each SQL column, using the same names. The structure also has a number of member functions, operators and hidden data members, but we won’t go into that just now. The parameter before each field name in the sql_create_# call is the C++ data type that will be used to hold that value in the SSQLS. While you could use plain old C++ data types for most of these columns (long int instead of mysqlpp::sql_bigint, for example) it’s best to use the MySQL++ typedefs. Sometimes you have no choice but to use special MySQL++ data types to fully express the database schema. Consider the description field. MySQL++’s sql_mediumtext type is just an alias for std::string, since we don’t need anything fancier to hold a SQL MEDIUMTEXT value. It’s the SQL NULL attribute that causes trouble: it has no equivalent in the C++ type system. MySQL++ offers the template, which bridges this difference between the two type systems. The general format of this macro is: sql_create_#(NAME, COMPCOUNT, SETCOUNT, TYPE1, ITEM1, ... TYPE#, ITEM#) where # is the number of member variables, NAME is the name of the structure you wish to create, TYPEx is the type of a member variable, and ITEMx is that variable’s name. The COMPCOUNT and SETCOUNT arguments are described in the next section. SSQLS Comparison and Initialization The sql_create_# macro adds member functions and operators to each SSQLS that allow you to compare one SSQLS instance to another. These functions compare the first COMPCOUNT fields in the structure. In the example above, COMPCOUNT is 1, so only the item field will be checked when comparing two stock structures. This feature works best when your table’s “key” fields are the first ones in the SSQLS and you set COMPCOUNT equal to the number of key fields. That way, a check for equality between two SSQLS structures in your C++ code will give the same results as a check for equality in SQL. COMPCOUNT must be at least 1. The current implementation of sql_create_# cannot create an SSQLS without comparison member functions. Because our stock structure is less-than-comparable, you can use it in STL algorithms and containers that require this, such as STL’s associative containers: std::set<stock> result; query.storein(result); cout << result.lower_bound(stock("Hamburger"))->item << endl; This will print the first item in the result set that begins with “Hamburger.” The third parameter to sql_create_# is SETCOUNT. If this is nonzero, it adds an initialization constructor and a set() member function taking the given number of arguments, for setting the first N fields of the structure. For example, you could change the above example like so: sql_create_6(stock, 1, 2, mysqlpp::sql_char, item, mysqlpp::sql_bigint, num, mysqlpp::sql_double, weight, mysqlpp::sql_decimal, price, mysqlpp::sql_date, sdate, mysqlpp::Null<mysqlpp::sql_mediumtext>, description) stock foo("Hotdog", 52); In addition to this 2-parameter constructor, this version of the stock SSQLS will have a similar 2-parameter set() member function. The COMPCOUNT and SETCOUNT values cannot be equal. If they are, the macro will generate two initialization constructors with identical parameter lists, which is illegal in C++. You might be asking, why does there need to be a constructor for comparison to begin with? It’s often convenient to be able to say something like x == stock("Hotdog"). This requires that there be a constructor taking COMPCOUNT arguments to create the temporary stock instance used in the comparison. This limitation is not a problem in practice. If you want the same number of parameters in the initialization constructor as the number of fields used in comparisons, pass 0 for SETCOUNT. This suppresses the duplicate constructor you’d get if you used the COMPCOUNT value instead. This is most useful in very small SSQLSes, since it’s easier for the number of key fields to equal the number of fields you want to compare on: sql_create_1(stock_item, 1, 0, mysqlpp::sql_char, item) Retrieving data Let’s put SSQLS to use. This is examples/ssqls1.cpp: Here is the stock.h header used by that example, and by several others below: This example produces the same output as simple1.cpp (see ), but it uses higher-level data structures paralleling the database schema instead of MySQL++’s lower-level generic data structures. It also uses MySQL++’s for error handling instead of doing everything inline. For small example programs like these, the overhead of SSQLS and exceptions doesn’t pay off very well, but in a real program, they end up working much better than hand-rolled code. Notice that we are only pulling a single column from the stock table, but we are storing the rows in a std::vector<stock>. It may strike you as inefficient to have five unused fields per record. It’s easily remedied by defining a subset SSQLS: sql_create_1(stock_subset, 1, 0, string, item) vector<stock_subset> res; query.storein(res); // ...etc... MySQL++ is flexible about populating SSQLSes.Programs built against versions of MySQL++ prior to 3.0 would crash at almost any mismatch between the database schema and the SSQLS definition. It’s no longer necessary to keep the data design in lock-step between the client and database server. A mismatch can result in data loss, but not a crash. It works much like the Web, a design that’s enabled the development of the largest distributed system in the world. Just as a browser ignores tags and attributes it doesn’t understand, you can populate an SSQLS from a query result set containing columns that don’t exist in the SSQLS. And as a browser uses sensible defaults when the page doesn’t give explicit values, you can have an SSQLS with more fields defined than are in the query result set, and these SSQLS fields will get default values. (Zero for numeric types, false for bool, and a type-specific default for anything more complex, like mysqlpp::DateTime.) In more concrete terms, the example above is able to populate the stock objects using as much information as it has, and leave the remaining fields at their defaults. Conversely, you could also stuff the results of SELECT * FROM stock into the stock_subset SSQLS declared above; the extra fields would just be ignored. We’re trading run-time efficiency for flexibility here, usually the right thing in a distributed system. Since MySQL is a networked database server, many uses of it will qualify as distributed systems. You can’t count on being able to update both the server(s) and all the clients at the same time, so you have to make them flexible enough to cope with differences while the changes propagate. As long as the new database schema isn’t too grossly different from the old, your programs should continue to run until you get around to updating them to use the new schema. There’s a danger that this quiet coping behavior may mask problems, but considering that the previous behavior was for the program to crash when the database schema got out of synch with the SSQLS definition, it’s likely to be taken as an improvement. Adding data MySQL++ offers several ways to insert data in SSQLS form into a database table. Inserting a Single Row The simplest option is to insert a single row at a time. This is examples/ssqls2.cpp: That’s all there is to it! MySQL++ even takes care of quoting and escaping the data when building queries from SSQLS structures. It’s efficient, too: MySQL++ is smart enough to quote and escape data only for those data types that actually require it. Inserting Many Rows Inserting a single row is useful, to be sure, but you might want to be able to insert many SSQLSes or Row objects at once. MySQL++ knows how to do that, too, sparing you the necessity of writing the loop. Plus, MySQL++ uses an optimized implementation of this algorithm, packing everything into a single SQL query, eliminating the overhead of multiple calls between the client and server. It’s just a different overload of insert(), which accepts a pair of iterators into an STL container, inserting every row in that range: vector<stock> lots_of_stuff; ...populate the vector somehow... query.insert(lots_of_stuff.begin(), lots_of_stuff.end()).execute(); By the way, notice that you can chain Query operations like in the last line above, because its methods return *this where that makes sense. Working Around MySQL’s Packet Size Limit The two-iterator form of insert() has an associated risk: MySQL has a limit on the size of the SQL query it will process. The default limit is 1 MB. You can raise the limit, but the reason the limit is configurable is not to allow huge numbers of inserts in a single query. They made the limit configurable because a single row might be bigger than 1 MB, so the default would prevent you from inserting anything at all. If you raise the limit simply to be able to insert more rows at once, you’re courting disaster with no compensating benefit: the more data you send at a time, the greater the chance and cost of something going wrong. Worse, this is pure risk, because by the time you hit 1 MB, the per-packet overhead is such a small fraction of the data being transferred that increasing the packet size buys you essentially nothing. Let’s say you have a vector containing several megabytes of data; it will get even bigger when expressed in SQL form, so there’s no way you can insert it all in a single query without raising the MySQL packet limit. One way to cope would be to write your own naïve loop, inserting just one row at a time. This is slow, because you’re paying the per-query cost for every row in the container. Then you might realize that you could use the two iterator form of insert(), passing iterators expressing sub-ranges of the container instead of trying to insert the whole container in one go. Now you’ve just got to figure out how to calculate those sub-ranges to get efficient operation without exceeding the packet size limit. MySQL++ already knows how to do that, too, with Query::insertfrom(). We gave it a different name instead of adding yet another insert() overload because it doesn’t merely build the INSERT query, which you then execute(). It’s more like storein(), in that it wraps the entire operation up in a single call. This feature is demonstrated in examples/ssqls6.cpp: Most of the complexity in this example goes to just reading in the data from a file; we have to get our test data from somewhere. There are only two key lines of code: create an insertion policy object, and pass it along with an STL container full of row data to Query::insertfrom(). This policy object is the main thing that differentiates insertfrom() from the two-iterator form of insert(). It controls how insertfrom() builds the query strings, primarily controlling how large each query gets before insertfrom() executes it and starts building a new query. We designed it to use policy objects because there is no single “right” choice for the decisions it makes. MySQL++ ships with three different insertion policy classes, which should cover most situations. MaxPacketInsertPolicy, demonstrated in the example above, does things the most obvious way: when you create it, you pass the maximum packet size, which it uses to prevent queries from going over the size limit. It builds up a query string row by row, checking each time through the loop whether adding another insert statement to the query string would make the packet size go over the limit. When that happens, or it gets to the end of the iteration range, it executes the query and starts over if it’s not yet at the end. This is robust, but it has a downside: it has to build each insert query in advance of knowing that it can append it to the larger query. Any time an insert query would push the packet over the limit, it has to throw it away, causing the library to do more work than is strictly necessary. Imagine you’ve done some benchmarking and have found that the point of diminishing returns is at about 20 KB per query in your environment; beyond that point, the per-query overhead ceases to be an issue. Let’s also say you know for a fact that your largest row will always be less than 1 MB — less 20 KB — when expressed as a SQL insert statement. In that case, you can use the more efficient SizeThresholdInsertPolicy. It differs from MaxPacketInsertPolicy in that it allows insertfrom() to insert rows blindly into the query string until the built query exceeds the threshold, 20 KB in this example. Then it ships the packet off, and if successful, starts a new query. Thus, each query (except possibly the last) will be at least 20 KB, exceeding that only by as much as one row’s worth of data, minus one byte. This is quite appropriate behavior when your rows are relatively small, as is typical for tables not containing BLOB data. It is more efficient than MaxPacketInsertPolicy because it never has to throw away any SQL fragments. The simplest policy object type is RowCountInsertPolicy. This lets you simply say how many rows at a time to insert into the database. This works well when you have a good handle on how big each row will be, so you can calculate in advance how many rows you can insert at once without exceeding some given limit. Say you know your rows can’t be any bigger than about 1 KB. If we stick with that 20 KB target, passing RowCountInsertPolicy<>(20) for the policy object would ensure we never exceed the size threshold. Or, say that maximum size value above is still true, but we also know the average row size is only 200 bytes. You could pass RowCountInsertPolicy<>(100) for the policy, knowing that the average packet size will be around 20 KB, and the worst case packet size 100 KB, still nowhere near the default 1 MB packet size limit. The code for this policy is very simple, so it makes your program a little smaller than if you used either of the above policies. Obviously it’s a bad choice if you aren’t able to predict the size of your rows accurately. If one of the provided insert policy classes doesn’t suit your needs, you can easily create a custom one. Just study the implementation in lib/insertpolicy.*. Interaction with Transactions These policy classes are all templates, taking a parameter that defaults to . This means that, by default, insertfrom() wraps the entire operation in a SQL transaction, so that if any of the insertions fail, the database server rolls them all back. This prevents an error in the middle of the operation from leaving just part of the container’s data inserted in the database, which you usually don’t want any more than you’d want half a single row to be inserted. There are good reasons why you might not want this. Perhaps the best reason is if the insertfrom() call is to be part of a larger transaction. MySQL doesn’t support nested transactions, so the insertfrom() call will fail if it tries to start one of its own. You can pass NoTransactions for the insert policy’s template parameter to make it suppress the transaction code. Modifying data It almost as easy to modify data with SSQLS as to add it. This is examples/ssqls3.cpp: Don’t forget to run resetdb after running the example. Storing SSQLSes in Associative Containers One of the requirements of STL’s associative containers on data stored in them is that the data type has to be less-than comparable. That is, it has to have an operator < defined. SSQLS does optionally give you this, as demonstrated in examples/ssqls4.cpp: The find() call works because of the way the SSQLS was declared. It’s properly covered elsewhere, but suffice it to say, the “1” in the declaration of stock above tells it that only the first field needs to be checked in comparing two SSQLSes. In database terms, this makes it the primary key. Therefore, when searching for a match, our exemplar only had to have its first field populated. Changing the Table Name Another feature you might find a use for is changing the table name MySQL++ uses to build queries involving SSQLSes. By default, the database server table is assumed to have the same name as the SSQLS structure type. But if this is inconvenient, you can globally change the table name used in queries like this: stock::table("MyStockData"); It’s also possible to change the name of a table on a per-instance basis: stock s; s.instance_table("AlternateTable"); This is useful when you have an SSQLS definition that is compatible with multiple tables, so the table name to use for each instance is different. This feature saves you from having to define a separate SSQLS for each table. It is also useful for mapping a class hierarchy onto a set of table definitions. The common SSQLS definition is the “superclass” for a given set of tables. Strictly speaking, you only need to use this feature in multithreaded programs. Changing the static table name before using each instance is safe if all changes happen within a single thread. That said, it may still be convenient to change the name of the table for an SSQLS instance in a single-threaded program if it gets used for many operations over an extended span of code. Using an SSQLS in Multiple Modules It’s convenient to define an SSQLS in a header file so you can use it in multiple modules. You run into a bit of a problem, though, because each SSQLS includes a few static data members to hold information common to all structures of that type. (The table name and the list of field names.) When you #include that header in more than one module, you get a multiply-defined symbol error at link time. The way around this is to define the preprocessor macro MYSQLPP_SSQLS_NO_STATICS in all but one of the modules that use the header definining the SSQLS. When this macro is defined, it suppresses the static data members in any SSQLS defined thereafter. Imagine we have a file my_ssqls.h which includes a sql_create_N macro call to define an SSQLS, and that that SSQLS is used in at least two modules. One we’ll call foo.cpp, and we’ll say it’s just a user of the SSQLS; it doesn’t “own” it. Another of the modules, my_ssqls.cpp uses the SSQLS more heavily, so we’ve called it the owner of the SSQLS. If there aren’t very many modules, this works nicely: // File foo.cpp, which just uses the SSQLS, but doesn’t "own" it: #define MYSQLPP_SSQLS_NO_STATICS #include "my_ssqls.h" // File my_ssqls.cpp, which owns the SSQLS, so we just #include it directly #include "my_ssqls.h" If there are many modules that need the SSQLS, adding all those #defines can be a pain. In that case, it’s easier if you flip the above pattern on its head: // File my_ssqls.h: #if !defined(EXPAND_MY_SSQLS_STATICS) # define MYSQLPP_SSQLS_NO_STATICS #endif sql_create_X(Y, Z....) // the SSQLS definition // File foo.cpp, a mere user of the SSQLS: #include "my_ssqls.h" // File my_ssqls.cpp, which owns the SSQLS: #define EXPAND_MY_SSQLS_STATICS #include "my_ssqls.h" Harnessing SSQLS Internals The sql_create macros define several methods for each SSQLS. These methods are mostly for use within the library, but some of them are useful enough that you might want to harness them for your own ends. Here is some pseudocode showing how the most useful of these methods would be defined for the stock structure used in all the ssqls*.cpp examples: // Basic form template <class Manip> stock_value_list<Manip> value_list(cchar *d = ",", Manip m = mysqlpp::quote) const; template <class Manip> stock_field_list<Manip> field_list(cchar *d = ",", Manip m = mysqlpp::do_nothing) const; template <class Manip> stock_equal_list<Manip> equal_list(cchar *d = ",", cchar *e = " = ", Manip m = mysqlpp::quote) const; // Boolean argument form template <class Manip> stock_cus_value_list<Manip> value_list([cchar *d, [Manip m,] ] bool i1, bool i2 = false, ... , bool i5 = false) const; // List form template <class Manip> stock_cus_value_list<Manip> value_list([cchar *d, [Manip m,] ] stock_enum i1, stock_enum i2 = stock_NULL, ..., stock_enum i5 = stock_NULL) const; // Vector form template <class Manip> stock_cus_value_list<Manip> value_list([cchar *d, [Manip m,] ] vector<bool> *i) const; ...Plus the obvious equivalents for field_list() and equal_list() Rather than try to learn what all of these methods do at once, let’s ease into the subject. Consider this code: stock s("Dinner Rolls", 75, 0.95, 0.97, sql_date("1998-05-25")); cout << "Value list: " << s.value_list() << endl; cout << "Field list: " << s.field_list() << endl; cout << "Equal list: " << s.equal_list() << endl; That would produce something like: Value list: 'Dinner Rolls’,75,0.95,0.97,'1998-05-25' Field list: item,num,weight,price,sdate Equal list: item = 'Dinner Rolls’,num = 75,weight = 0.95, price = 0.97,sdate = '1998-05-25' That is, a “value list” is a list of data member values within a particular SSQLS instance, a “field list” is a list of the fields (columns) within that SSQLS, and an “equal list” is a list in the form of an SQL equals clause. Just knowing that much, it shouldn’t surprise you to learn that Query::insert() is implemented more or less like this: *this << "INSERT INTO " << v.table() << " (" << v.field_list() << ") VALUES (" << v.value_list() << ")"; where ‘v’ is the SSQLS you’re asking the Query object to insert into the database. Now let’s look at a complete example, which uses one of the more complicated forms of equal_list(). This example builds a query with fewer hard-coded strings than the most obvious technique requires, which makes it more robust in the face of change. Here is examples/ssqls5.cpp: This example uses the list form of equal_list(). The arguments stock_weight and stock_price are enum values equal to the position of these columns within the stock table. sql_create_# generates this enum for you automatically. The boolean argument form of that equal_list() call would look like this: query << "select * from stock where " << res[0].equal_list(" and ", false, false, true, true, false); It’s a little more verbose, as you can see. And if you want to get really complicated, use the vector form: vector<bool> v(5, false); v[stock_weight] = true; v[stock_price] = true; query << "select * from stock where " << res[0].equal_list(" and ", v); This form makes the most sense if you are building many other queries, and so can re-use that vector object. Many of these methods accept manipulators and custom delimiters. The defaults are suitable for building SQL queries, but if you’re using these methods in a different context, you may need to override these defaults. For instance, you could use these methods to dump data to a text file using different delimiters and quoting rules than SQL. At this point, we’ve seen all the major aspects of the SSQLS feature. The final sections of this chapter look at some of the peripheral aspects. Having Different Field Names in C++ and SQL There’s a more advanced SSQLS creation macro, which all the others are built on top of. Currently, the only feature it adds over what’s described above is that it lets you name your SSQLS fields differently from the names used by the database server. Perhaps you want to use Hungarian notation in your C++ program without changing the SQL database schema: sql_create_complete_5(stock, 1, 5, mysqlpp::sql_char, m_sItem, "item", mysqlpp::sql_bigint, m_nNum, "num", mysqlpp::sql_double, m_fWeight, "weight", mysqlpp::sql_decimal, m_fPrice, "price", mysqlpp::sql_date, m_Date, "sdate") Note that you don’t have to use this mechanism if the only difference in your SQL and C++ field names is case. SSQLS field name lookups are case-insensitive as of MySQL++ 3.1. You can see this in the examples: some parts of the code deliberately refer to the stock.sdate sample table field as stock.sDate to exercise this feature. Expanding SSQLS Macros If you ever need to see the code that a given SSQLS declaration expands out to, use the utility doc/ssqls-pretty, like so: doc/ssqls-pretty < myprog.cpp | less This Perl script locates the first SSQLS declaration in that file, then uses the C++ preprocessor to expand that macro. (The script assumes that your system’s preprocessor is called cpp, and that its command line interface follows Unix conventions.) If you run it from the top MySQL++ directory, as shown above, it will use the header files in the distribution’s lib subdirectory. Otherwise, it assumes the MySQL++ headers are in their default location, /usr/include/mysql++. If you want to use headers in some other location, you’ll need to change the directory name in the -I flag at the top of the script. Customizing the SSQLS Mechanism The SSQLS header ssqls.h is automatically generated by the Perl script ssqls.pl. Although it is possible to change this script to get additional functionality, most of the time it’s better to just derive a custom class from the generated SSQLS to add functionality to it. (See the next section to see how to do this correctly.) That said, ssqls.pl does have a few configurables you might want to tweak. The first configurable value sets the maximum number of data members allowed in an SSQLS. This is discussed elsewhere, in . Beware the warnings there about increasing this value too much. The second configurable is the default floating point precision used for comparison. As described above () SSQLSes can be compared for equality. The only place this is tricky is with floating-point numbers, since rounding errors can make two “equal” values compare as distinct. This property of floating-point numbers means we almost never want to do exact comparison. MySQL++ lets you specify the precision you want it to use. If the difference between two values is under a given threshold, MySQL++ considers the values equal. The default threshold is 0.00001. This threshold works well for “human” scale values, but because of the way floating-point numbers work, it can be wildly inappropriate for very large or very small quantities like those used in scientific applications. There are actually two ways to change this threshold. If you need a different system-wide default, edit ssqls.pl and change the $fp_min_delta variable at the top of the file, then rebuild ssqls.h as described below. If you need different thresholds per file or per project, it’s better to set the C macro MYSQLPP_FP_MIN_DELTA instead. The Perl variable sets this macro’s default; if you give a different value before #including ssqls.h, it will use that instead. To rebuild ssqls.h after changing ssqls.pl, you’ll need a Perl interpreter. The only modern Unixy system I’m aware of where Perl isn’t installed by default is Cygwin, and it’s just a setup.exe choice away there. You’ll probably only have to download and install a Perl interpreter if you’re on Windows and don’t want to use Cygwin. If you’re on a system that uses autoconf, building MySQL++ automatically updates ssqls.h any time ssqls.pl changes. Otherwise, you’ll need to run the Perl interpreter by hand: c:\mysql++> cd lib c:\lib> perl ssqls.pl Deriving from an SSQLS Specialized SQL Structures make good base classes. They’re simple, and have few requirements on any class that derives from them. There are some gotchas to look out for, however. Consider this: sql_create_2( Base, 1, 2, mysqlpp::sql_varchar, a, mysqlpp::sql_int, b ); class Derived : public Base { public: // constructor Derived(mysqlpp::sql_varchar _a, mysqlpp::sql_int _b) : Base(_a, _b) { } // functionality added to the SSQLS through inheritance bool do_something_interesting(int data); }; We’ve derived a class from an SSQLS in order to add a method to it. Easy, right? Sadly, too easy. The code has a rather large flaw which makes our derived class unusable as an SSQLS. In C++, if a derived class has a function of the same name as one in the base class, the base class versions of that function are all hidden by those in the derived class. This applies to constructors, too: an SSQLS defines several constructors, but our derived class defines only one, causing that one to hide all of the ones in the base class. Many of the MySQL++ mechanisms that use SSQLSes rely on having these contructors, so our Derived above is-not-a Base, and so it isn’t an SSQLS. If you try to use Derived as an SSQLS, you’ll get compiler errors wherever MySQL++ tries to access one of these other constructors. There’s another minor flaw, as well. Our lone constructor above takes its parameters by value, but the corresponding constructor in the SSQLS takes them by const reference. Our derived class has technically hidden a fourth base class constructor this way, but this particular case is more a matter of efficiency than correctness. Code that needs the full-creation constructor will still work with our code above, but passing stringish types like sql_varchar by value instead of by const reference is inefficient. This is the corrected version of the above code: sql_create_2( Base, 1, 2, mysqlpp::sql_varchar, a, mysqlpp::sql_int, b ); class Derived : public Base { public: // default constructorneeded by mechanisms like Query::storein(); anything using an STL container, which usually require default ctors for contained data structures Derived() : Base() { } // for-comparison constructortakes the COMPCOUNT subset of the SSQLS’s data members, used for making comparison exemplars, used with Query::update() and similar mechanisms; see for more on COMPCOUNT Derived(const mysqlpp::sql_varchar& _a) : Base(_a) { } // full creation constructor Derived(const mysqlpp::sql_varchar& _a, const mysqlpp::sql_int& _b) : Base(_a, _b) { } // population constructorused in taking raw row data from a SQL result set and converting it to SSQLS form Derived(const mysqlpp::Row& row) : Base(row) { } // functionality added to the SSQLS through inheritance bool do_something_interesting(int data); }; Now Derived is-an SSQLS. You might wonder if you can use protected inheritance above to redefine the SSQLS’s public interface. For instance, OO purists might object to the public data members in an SSQLS. You could encapsulate these public data members in the derived class by using protected inheritance, exposing access to the base class’s data members with public accessor methods. The problem with this is that each SSQLS has dozens of public member functions. These are needed by MySQL++ internals, so unless you re-exposed all of them as we did with the constructors above, you’d again have an SSQLS derivative that is-not-an SSQLS. Simply put, only public inheritance is practical with SSQLSes. SSQLS and BLOB Columns It takes special care to use SSQLS with BLOB columns. It’s safest to declare the SSQLS field as of type mysqlpp::sql_blob. This is currently a typedef alias for String, which is the form the data is in just before the SSQLS mechanism populates the structure. Thus, when the data is copied from the internal MySQL++ data structures into your SSQLS, you get a direct copy of the String object’s contents, without interference. Because C++ strings handle binary data just fine, you might think you can use std::string instead of sql_blob, but the current design of String converts to std::string via a C string. As a result, the BLOB data is truncated at the first embedded null character during population of the SSQLS. There’s no way to fix that without completely redesigning either String or the SSQLS mechanism. The sql_blob typedef may be changed to alias a different type in the future, so using it instead of String ensures that your code tracks these library changes automatically. Besides, String is only intended to be an internal mechanism within MySQL++. The only reason the layering is so thin here is because it’s the only way to prevent BLOB data from being corrupted while avoiding that looming redesign effort. You can see this technique in action in the cgi_jpeg example: SSQLS and Visual C++ 2003 SSQLS works on all platforms supported by MySQL++ except for Visual C++ 2003. (Because the rest of MySQL++ works just fine with Visual C++ 2003, we haven’t removed this platform from the supported list entirely.) If you do need SSQLS and are currently on Visual C++ 2003, you have these options: The simplest option is to upgrade to a newer version of Visual C++. The compiler limitations that break SSQLS are all fixed in Visual C++ 2005 and newer. Visual C++ Express is free and is apparently here to stay; coupled with the free wxWidgets library, it lacks little compared to Visual C++ Professional. A bonus of using wxWidgets is that it’s cross-platform and better-supported than MFC. If you can’t upgrade your compiler, you may be able to downgrade to MySQL++ v2.x. The SSQLS feature in these older versions worked with Visual C++ 2003, but didn’t let you use a given SSQLS in more than one module in a program. If you can live with that limitation and have a Perl interpreter on your system, you can re-generate lib/ssqls.h to remove the multiple-module SSQLS support. To do this, you run the command perl ssqls.pl -v from within MySQL++’s lib subdirectory before you build and install the library. There’s a plan to replace the current SSQLS mechanism with an entirely new code base. Although this is being done primarily to get new features that are too difficult to add within the current design, it also means we’ll have the chance to test step-by-step along the way that we don’t reintroduce code that Visual C++ 2003 doesn’t support. This may happen without you doing anything, but if there’s someone on the team who cares about this, that will naturally increase the chances that it does happen. mysql++-3.3.0/doc/userman/simple1.txt000644 000765 000024 00000002354 14042362131 020145 0ustar00tangentstaff000000 000000 #include "cmdline.h" #include "printdata.h" #include #include #include using namespace std; int main(int argc, char *argv[]) { // Get database access parameters from command line mysqlpp::examples::CommandLine cmdline(argc, argv); if (!cmdline) { return 1; } // Connect to the sample database. mysqlpp::Connection conn(false); if (conn.connect(mysqlpp::examples::db_name, cmdline.server(), cmdline.user(), cmdline.pass())) { // Retrieve a subset of the sample stock table set up by resetdb // and display it. mysqlpp::Query query = conn.query("select item from stock"); if (mysqlpp::StoreQueryResult res = query.store()) { cout << "We have:" << endl; mysqlpp::StoreQueryResult::const_iterator it; for (it = res.begin(); it != res.end(); ++it) { mysqlpp::Row row = *it; cout << '\t' << row[0] << endl; } } else { cerr << "Failed to get item list: " << query.error() << endl; return 1; } return 0; } else { cerr << "DB connection failed: " << conn.error() << endl; return 1; } } mysql++-3.3.0/doc/userman/Makefile000644 000765 000024 00000003357 14042362131 017476 0ustar00tangentstaff000000 000000 ## ------------------------ ## Input files ## ------------------------ HTML_DIR=../html/userman BASENAME=userman DOCFILE=$(BASENAME).dbx PDFFILE=../pdf/$(BASENAME).pdf FOFILE=$(BASENAME).fo COMMON_SS=common.xsl FO_SS=fo.xsl HTML_SS=html.xsl EX_TXT=cgi_jpeg.txt cpool.txt deadlock.txt fieldinf.txt for_each.txt \ load_jpeg.txt multiquery.txt resetdb.txt simple1.txt \ simple2.txt simple3.txt ssqls1.txt ssqls2.txt ssqls3.txt \ ssqls4.txt ssqls5.txt ssqls6.txt stock.txt store_if.txt \ tquery1.txt transaction.txt ## ------------------------ ## Major output rules ## ------------------------ html: $(EX_TXT) $(HTML_DIR)/index.html pdf: $(EX_TXT) $(PDFFILE) ## ------------------------ ## Standard Makefile targets ## ------------------------ # Notice that this is not the first target in the file, as is standard. # PDF generation takes longer than HTML generation, so to keep the code- # test-debug-rebuild cycle short, we generate only the HTML manual by # default. You can explicitly say "make pdf" or "make all" when you're # sure the DocBook file's contents are correct. all: html pdf clean: @rm -f tags *.fo $(HTML_DIR)/*.html *.log *.out *.pdf $(EX_TXT) $(PDFFILE) ## ------------------------ ## How to make output files ## ------------------------ $(PDFFILE): *.dbx *.in $(FO_SS) $(COMMON_SS) xsltproc --xinclude $(FO_SS) $(DOCFILE) > $(FOFILE) mkdir -p ../pdf ./fo2pdf $(FOFILE) $(PDFFILE) $(HTML_DIR)/index.html: *.dbx *.in *.mod *.txt *.xsl @xmllint --xinclude --nonet --postvalid --noent --noout $(DOCFILE) xsltproc --xinclude --nonet -o $(HTML_DIR)/ $(HTML_SS) $(DOCFILE) ## ------------------------ ## Dependency rules ## ------------------------ $(EX_TXT): @./mktxt $@ userman.dbx: userman.dbx.in ( cd ../.. ; ./config.status ) mysql++-3.3.0/doc/userman/breakages.dbx000644 000765 000024 00000153215 14042362131 020460 0ustar00tangentstaff000000 000000 Incompatible Library Changes This chapter documents those library changes since the epochal 1.7.9 release that break end-user programs. You can dig this stuff out of the ChangeLog.md file, but the change log focuses more on explaining and justifying the facets of each change, while this section focuses on how to migrate your code between these library versions. Since pure additions do not break programs, those changes are still documented only in the change log. API Changes This section documents files, functions, methods and classes that were removed or changed in an incompatible way. If your program uses the changed item, you will have to change something in your program to get it to compile after upgrading to each of these versions. v1.7.10 Removed Row::operator[]() overloads except the one for size_type, and added Row::lookup_by_name() to provide the “subscript by string” functionality. In practical terms, this change means that the row["field"] syntax no longer works; you must use the new lookup_by_name method instead. Renamed the generated library on POSIX systems from libsqlplus to libmysqlpp. v1.7.19 Removed SQLQuery::operator=(), and the same for its Query subclass. Use the copy constructor instead, if you need to copy one query to another query object. v1.7.20 The library used to have two names for many core classes: a short one, such as Row and a longer one, MysqlRow. The library now uses the shorter names exclusively. All symbols within MySQL++ are in the mysqlpp namespace now if you use the new mysql++.h header. If you use the older sqlplus.hh or mysql++.hh headers, these symbols are hoist up into the global namespace. The older headers cause the compiler to emit warnings if you use them, and they will go away someday. v2.0.0 Connection class changes Connection::create_db() and drop_db() return true on success. They returned false in v1.7.x! This change will only affect your code if you have exceptions disabled. Renamed Connection::real_connect() to connect(), made several more of its parameters default, and removed the old connect() method, as it’s now a strict subset of the new one. The only practical consequence is that if your program was using real_connect(), you will have to change it to connect(). Replaced Connection::read_option() with new set_option() mechanism. In addition to changing the name, programs using this function will have to use the new Connection::Option enumerated values, accept a true return value as meaning success instead of 0, and use the proper argument type. Regarding the latter, read_option() took a const char* argument, but because it was just a thin wrapper over the MySQL C API function , the actual value being pointed to could be any of several types. This new mechanism is properly type-safe. Exception-related changes Classes Connection, Query, Result, ResUse, and Row now derive from which gives these classes a common interface for disabling exceptions. In addition, almost all of the per-method exception-disabling flags were removed. The preferred method for disabling exceptions on these objects is to create an instance of the new class on the stack, which disables exceptions on an OptionalExceptions subclass as long as the NoExceptions instance is in scope. You can instead call disable_exceptions() on any of these objects, but if you only want them disabled temporarily, it’s easy to forget to re-enable them later. In the previous version of MySQL++, those classes that supported optional exceptions that could create instances of other such classes were supposed to pass this flag on to their children. That is, if you created a Connection object with exceptions enabled, and then asked it to create a Query object, the Query object also had exceptions disabled. The problem is, this didn’t happen in all cases where it should have in v1.7. This bug is fixed in v2.0. If your program begins crashing due to uncaught exceptions after upgrading to v2.0, this is the most likely cause. The most expeditious fix in this situation is to use the new NoExceptions feature to return these code paths to the v1.7 behavior. A better fix is to rework your program to avoid or deal with the new exceptions. All custom MySQL++ exceptions now derive from the new interface. The practical upshot of this is that the variability between the various exception types has been eliminated. For instance, to get the error string, the BadQuery exception had a string member called error plus a method called what(). Both did the same thing, and the what() method is more common, so the error string was dropped from the interface. None of the example programs had to be changed to work with the new exceptions, so if your program handles MySQL++ exceptions the same way they do, your program won’t need to change, either. Renamed SQLQueryNEParams exception to BadParamCount to match style of other exception names. Added , , , , , , and exception types, to fix overuse of BadQuery. Now the latter is used only for errors on query execution. If your program has a “catch-all” block taking a std::exception for each try block containing MySQL++ statements, you probably won’t need to change your program. Otherwise, the new exceptions will likely show up as program crashes due to unhandled exceptions. Query class changes In previous versions, Connection had a querying interface similar to class Query’s. These methods were intended only for Query’s use; no example ever used this interface directly, so no end-user code is likely to be affected by this change. A more likely problem arising from the above change is code that tests for query success by calling the Connection object’s success() method or by casting it to bool. This will now give misleading results, because queries no longer go through the Connection object. Class Query has the same success-testing interface, so use it instead. Query now derives from std::ostream instead of std::stringstream. Result/ResUse class changes Renamed ResUse::mysql_result() to raw_result() so it’s database server neutral. Removed ResUse::eof(), as it wrapped the deprecated and unnecessary MySQL C API function . See the simple3 and usequery examples to see the proper way to test for the end of a result set. Row class changes Removed “field name” form of Row::field_list(). It was pointless. Row subscripting works more like v1.7.9: one can subscript a Row with a string (e.g. row["myfield"]), or with an integer (e.g. row[5]). lookup_by_name() was removed. Because row[0] is ambiguous (0 could mean the first field, or be a null pointer to const char*), there is now Row::at(), which can look up any field by index. Miscellaneous changes Where possible, all distributed Makefiles only build dynamic libraries. (Shared objects on most Unices, DLLs on Windows, etc.) Unless your program is licensed under the GPL or LGPL, you shouldn’t have been using the static libraries from previous versions anyway. Removed the backwards-compatibility headers sqlplus.hh and mysql++.hh. If you were still using these, you will have to change to mysql++.h, which will put all symbols in namespace mysqlpp. Can no longer use arrow operator (->) on the iterators into the Fields, Result and Row containers. v2.2.0 Code like this will have to change: query << "delete from mytable where myfield=%0:myvalue"; query.parse(); query.def["myvalue"] = some_value; query.execute(); ...to something more like this: query << "delete from mytable where myfield=%0"; query.parse(); query.execute(some_value); The first code snippet abuses the default template query parameter mechanism (Query::def) to fill out the template instead of using one of the overloaded forms of execute(), store() or use() taking one or more SQLString parameters. The purpose of Query::def is to allow for default template parameters over multiple queries. In the first snippet above, there is only one parameter, so in order to justify the use of template queries in the first place, it must be changing with each query. Therefore, it isn’t really a “default” parameter at all. We did not make this change maliciously, but you can understand why we are not in any hurry to restore this “feature”. (Incidentally, this change was made to allow better support for BLOB columns.) v2.3.0 Connection::set_option() calls now set the connection option immediately, instead of waiting until just before the connnection is actually established. Code that relied on the old behavior could see unhandled exceptions, since option setting errors are now thrown from a different part of the code. You want to wrap the actual set_option() call now, not Connection::connect() FieldNames and FieldTypes are no longer exported from the library. If you are using these classes directly from Visual C++ or MinGW, your code won’t be able to dynamically link to a DLL version of the library any more. These are internal classes, however, so no one should be using them directly. v3.0.0 Class name changes Several classes changed names in this release: ColData is now String. NullisBlank is now NullIsBlank. (Note the capital I.) Similar changes for NullisNull and NullisZero. ResNSel is now SimpleResult. Result is now StoreQueryResult. ResUse is now UseQueryResult. SQLString is now SQLTypeAdapter. When first building existing code against this version, you may find it helpful to define the macro MYSQLPP_OLD_CLASS_NAMES in your program’s build options. This will turn on some macros that set up aliases for the new class names matching their corresponding old names. Then, when you’ve fixed up any other issues that may prevent your program from building with the new MySQL++, you can turn it back off and fix up any class name differences. If you were only using ColData in a BLOB context, you should use sql_blob or one of the related typedefs defined in lib/sql_types.h instead, to insulate your code from changes like these. The SQLString change shouldn’t affect you, as this class was not designed to be used by end user code. But, due to the old name and the fact that it used to derive from std::string, some might have been tempted to use it as an enhanced std::string. Such code will undoubtedly break, but can probably be fixed by just changing it to use std::string instead. Connection class changes The option setting mechanism has been redesigned. (Yes, again.) There used to be an enum in Connection with a value for each option we understood, and an overload of Connection::set_option() for each argument type we understood. It was possible to pass any option value to any set_option() overload, and the problem would only be detected at run time. Now each option is represented by a class derived from the new Option abstract base class, and set_option() simply takes a pointer to one of these objects. See examples/multiquery.cpp for the syntax. Since each Option subclass takes only the parameter types it actually understands, it’s now completely type-safe at compile time. The new option setting mechanism also has the virtue of being more powerful so it let us replace several existing things within Connection with new options: Replaced enable_ssl() with SslOption. Replaced the compress parameter to the Connection create-and-connect constructor and Connection::connect() method with CompressOption. Replaced the connect_timeout parameter with ConnectTimeoutOption. Defined Option subclasses for each of the flags you would previously set using the client_flag parameter. There are about a dozen of these, so instead of listing them, look in lib/options.h for something with a similar name. Collapsed Connection’s host, port, and socket_name parameters down into a new combined server parameter which is parsed to determine what kind of connection you mean. These interfaces are still compatible with v2.3 and earlier up through the port parameter. Moved Connection::affected_rows(), info() and insert_id() methods to class Query, as they relate to the most recently-executed query. Changed the return type of Connection::ping() from int to bool. If you were calling ping() in bool context or using its return value in bool context, you will need to reverse the sense of the test because the previous return code used zero to mean success. Now it returns true to indicate success. Renamed several methods: Use client_version() instead of api_version() or client_info(). Use ipc_version() instead of host_info(). Use protocol_version() instead of proto_info(). Use server_version() instead of server_info(). Use status() instead of stat(). Also, removed close() in favor of disconnect(), which has always done the same thing. Date and Time class changes The sql_timestamp typedef is now an alias for DateTime, not Time. There used to be implicit conversion constructors from ColData (now String), std::string and const char* for the Date, DateTime, and Time classes. It’s still possible to do these conversions, but only explicitly. (This had to be done to make Null<T> work in SSQLSes.) The most likely place to run into problems as a result of this change is in code like this: void some_function(const mysqlpp::DateTime& dt); some_function("2007-12-22"); The function call needs to be changed to: some_function(mysqlpp::DateTime("2007-12-22")); Exception changes If an error occurs during the processing of a “use” query (as opposed to the initial execution) we throw the new UseQueryError exception instead of BadQuery. If you pass bad values to the Row ctor so that it can’t initialize itself properly, it throws the ObjectNotInitialized exception instead of BadQuery. Together, these two changes mean that BadQuery is now used solely to indicate a problem executing the actual SQL query statement. Field and Fields class changes Field is now a real C++ class, not just a typedef for the corresponding C API class. Major portability impacts are: It has no public data members. Where sensible, there is a public accessor function of the same name as the corresponding field in the C API structure. The main exception to this is the flags data member. This is a bitfield in the C API data structure and you had to use MySQL-specific constants to break values out of it. MySQL++’s new Field class provides a public member function returning bool for each of these flags. The new class doesn’t include all of the data members from the C API version. We left out those that aren’t used within MySQL++ or its examples, or whose function we couldn’t understand. Basically, if we couldn’t document a reason to use it, we left it out. Fields used to be a std::vector work-alike which worked with the C API to access fields and return them as though they were simply contained directly within the Fields object. Now that we have a real MySQL++ class to hold information about each field without reference to the C API, we were able to replace the Fields class with: typedef std::vector<Field> Fields; If anything, this should give a pure superset of the old functionality, but it’s possible it could break end user code. Query class changes If you were using char as an 8-bit integer in query building, there are several places in MySQL++ v3 where it will now be treated as a single-character string. MySQL++ has had the tiny_int class for many years now specifically to provide a true 8-bit integer without the semantic confusion surrounding the old C char type. Either use tiny_int, or use the SQL type aliases sql_tinyint and sql_tinyint_unsigned instead. The ‘r’ and ‘R’ template query parameter modifiers were removed. They made the library do quoting and both quoting and escaping (respectively) regardless of the data type of the parameter. There are no corresponding Query stream manipulators, so for symmetery we had to decide whether to add such manipulators or remove the tquery modifiers. There should never be a reason to force quoting or escaping other than to work around a MySQL++ bug, and it’s better to just fix the bug than work around it, so removed the tquery modifiers. Query::store_next() and Result::fetch_row() no longer throw the EndOfResults and EndOfResultSets exceptions; these are not exceptional conditions! These methods simply return false when you hit the end of the result set now. Renamed Query::def to Query::template_defaults to make its purpose clearer. Removed Query::preview(). The most direct replacement for this set of overloaded methods is the parallel set of str() methods, which were just aliases before. (Chose str() over preview() because it’s standard C++ nomenclature.) But if you’re just looking to get a copy of a built query string and you aren’t using template queries, you can now insert the Query into a stream and get the same result. For example, a lot of code in the examples that used to say things like: cout << query.preview() << endl; now looks like this: cout << query << endl; Result, ResUse, and ResNSel class changes In addition to the class name changes described above, UseQueryResult is no longer StoreQueryResult’s base class. There is a new abstract class called ResultBase containing much of what used to be in ResUse, and it is the base of both of these concrete result set types. This should only affect your code if you were using ResUse references to refer to Result objects. Removed a bunch of duplicate methods: Use num_fields() instead of columns(). Use field_names() instead of names(). Use num_rows() instead of rows(). Use field_types() instead of types(). Renamed several methods for “grammar” reasons. For example, some methods returned a single object but had a “plural” name, implying that it returned a container of objects. In cases like this, we changed the name to agree with the return value. Some of these also fall into the duplicate method category above: Use field(unsigned int) instead of fields(unsigned int). Use field_num(const std::string&) instead of names(const std::string&). Use field_name(int) instead of names(int). Use field_type(int) instead of types(int). Removed several “smelly” methods: purge(): was an internal implementation detail, not something for end user code to call raw_result(): end user code shouldn’t be digging down to the C API data structures, but if you really need something like this, look at the implementation of Query::storein(). Its workings will probably be educational. reset_names(): no reason to call this, especially now that the field name list is initialized once at startup and then never changed reset_field_names(): just an alias for previous reset_types(): same argument as for reset_names() reset_field_types(): just an alias for previous ResUse::field_num() would unconditionally throw a BadFieldName exception when you asked for a field that doesn’t exist. Now, if exceptions are disabled on the object, it just returns -1. SimpleResult’s member variables are all now private, and have read-only accessor functions of the same name. Code like this used to work: mysqlpp::Row row; mysqlpp::Result::size_type i; for (i = 0; row = res[i]; ++i) { // Do something with row here } That is, indexing past the end of a “store” result set would just return an empty row object, which tests as false in bool context, so it ends the loop. Now that StoreQueryResult is a std::vector derivative, this either crashes your program or causes the standard library to throw an exception, depending on what debugging features your version of STL has. The proper technique is: mysqlpp::Row row; mysqlpp::StoreQueryResult::size_type i; for (i = 0; i < res.num_rows(); ++i) { row = res[i]; // Do something with row here } ...or, in a more C++ish idiom: mysqlpp::Row row; mysqlpp::StoreQueryResult::const_iterator it; for (it = res.begin(); it != res.end(); ++it) { row = *it; // Do something with row here } Row class changes Removed Row::raw_data(), raw_size() and raw_string(). These were useful with BLOB data back when MySQL++ didn’t handle embedded null characters very well, and when copies of ColData objects were expensive. Neither is true now, so they have no value any more. Equivalent calls are: mysqlpp::String s = row[0]; s.data(); // raw_data() equivalent s.length(); // raw_size() equivalent std::string(s.data(), s.length()); // raw_string() equivalent Row::operator[](const char*) would unconditionally throw a BadFieldName exception when you asked for a field that doesn’t exist. Now, if exceptions are disabled on the Row object, it just returns a reference to an empty String object. You can tell when this happens because such an object tests as false in bool context. Specialized SQL Structure (SSQLS) changes Renamed custom* to ssqls*. There is a backwards-compatibility header custom.h which includes ssqls.h for you, but it will go away in a future version of MySQL++. SSQLSes get populated by field name now, not by field order. In v2, it was absolutely required that your SSQLS had its fields declared in exactly the same order as the fields in the database server, and there could be no gaps. An ALTER TABLE command would almost always necessitate redefining the corresponding SSQLS and rebuilding your program. Some alterations actually made using SSQLS impossible. For the most part, this change just gives your program additional flexibility in the face of future changes. However, code that was taking advantage of this low-level fact will break when moving to v3. Before I explain how, let’s go over the high-level functional changes you’ll find in v3’s SSQLS mechanism. Because MySQL++ no longer needs the SSQLS field order to match the SQL field order, the sql_create_c_order_* SSQLS creation macro was dropped in v3. We were also able to drop the ordering parameters from sql_create_complete_*. That in turn means there is no longer a difference between the way it and sql_create_c_names_* work, so the latter was also dropped. Thus, there are now only two groups of SSQLS creation macros left: sql_create_*, which works pretty much as it always has, and sql_create_complete_*, which is the same except for the lack of ordering parameters. In general, you should be using sql_create_* for all SSQLSes unless you need to use different names for data members in C++ than you use for the corresponding columns in SQL. In that case, use sql_create_complete_* instead. In v2, it was possible to have different SQL column names than SSQLS data member names while still using sql_create_* if you only used SSQLS for data retrieval.In MySQL++ v2, data retreival (Query::storein(), SSQLS(const Row& other), etc.) worked fine regardless of whether your SSQLS field names matched those in the corresponding SQL table, because the SSQLS was populated by position, not by field name. Thus, if all you used SSQLS for was data retrieval, you could define your structures with sql_create_* in v2. This was never recommended, because such an SSQLS wouldn’t work with other features of MySQL++ like Query::insert() because they depend on being able to map names from C++ to SQL and back. You needed to use sql_create_c_names_* to make these features work in v2 in the face of a naming scheme difference between C++ and SQL. In v3, you must use sql_create_complete_* for absolutely all uses of SSQLS when you want the C++ field names to differ from the SQL column names. The new Null<T> support in SSQLSes causes an internal compiler error in Visual C++ 2003. (VC++ 2005 and newer have no trobule with it.) A poll on the mailing list says there aren’t many people still stuck on this version, so we just ifdef’d out the SSQLS mechanism and all the examples that use it when built with VC++ 2003. If this affects you, see for suggestions on ways to cope. If you are using types other than MySQL++’s sql_* ones These typedefs have been available since MySQL++ v2.1. in your SSQLSes, code that previously worked may now see TypeLookupFailed exceptions. (This can be thrown even if exceptions are otherwise disabled in MySQL++.) This version of MySQL++ is stricter about mapping SQL to C++ type information, and vice versa. If the library can’t find a suitable mapping from one type system to the other, it throws this exception, because its only other option would be to crash or raise an assertion. This typically happens when building SQL queries, so you can probably handle it the same way as if the subsequent query excecution failed. If you’re catching the generic mysqlpp::Exception, your error handling code might not need to change. If you see this exception, it does mean you need to look into your use of data types, though. The table that controls this is mysql_type_info::types, defined at the top of lib/type_info.cpp. Every data type in lib/sql_types.h has a corresponding record in this table, so if you stick to those types, you’ll be fine. It’s also okay to use types your C++ compiler can convert directly to these predefined types. The _table static member variable for each SSQLS is now private. The recommended way to access this remains unchanged: the table() static member function. table() used to return a modifiable reference to the table name. Now there are two overloads, one which returns an unmodifiable pointer to the table name, and the other which takes const char* so you can override the default table name. So, the code we used to recommend for changing the SSQLS’s table name: my_ssqls_type::table() = "MyTableName"; now needs to be: my_ssqls_type::table("MyTableName"); Miscellaneous changes MySQL++ does quoting and escaping much more selectively now. Basically, if the library can tell you’re not building a SQL query using one of the standard methods, it assumes you’re outputting values for human consumption, so it disables quoting and SQL escaping. If you need to build your own mechanism to replace this, quoting is easy to do, and Query::escape_string() can do SQL escaping for you. Removed success() in Connection, Query and SimpleResult (neé ResNSel) and simply made these classes testable in bool context to get the same information. An additional change in Connection is that it used to be considered “unsuccessful” when the connection was down. Since the sense of this test is now whether the object is in a good state, it only returns false when the connection attempt fails. Call Connection::is_connected() if you just want to test whether the connection is up. The debug mode build of the library now has a "_d" suffix for Visual C++, and Xcode. This lets you have both versions installed without conflict. The release build uses the current naming scheme. If you have an existing program building against MySQL++ on these platforms, you’ll need to change your build options to use the new name in debug mode. Renamed NO_LONG_LONGS to MYSQLPP_NO_LONG_LONGS to avoid a risk of collision in the global macro namespace. v3.0.7 Most MySQL++ classes with at() or operator []() methods now throw the new exception when you pass an out-of-range index. These methods variously either did not check their indices, or threw std::out_of_range when passed a bad index. I say “most” because there is at least one MySQL++ class that doesn’t follow this rule. Fields is just a typedef for a specialization of std::vector, and the Standard has its own rules for index checking. ABI Changes This section documents those library changes that require you to rebuild your program so that it will link with the new library. Most of the items in the previous section are also ABI changes, but this section is only for those items that shouldn’t require any code changes in your program. If you were going to rebuild your program after installing the new library anyway, you can probably ignore this section. v1.7.18 The Query classes now subclass from stringstream instead of the deprecated strstream. v1.7.19 Fixed several const-incorrectnesses in the Query classes. v1.7.22 Removed “reset query” parameters from several Query class members. This is not an API change, because the parameters were given default values, and the library would ignore any value other than the default. So, any program that tried to make them take another value wouldn’t have worked anyway. v1.7.24 Some freestanding functions didn’t get moved into namespace mysqlpp when that namespace was created. This release fixed that. It doesn’t affect the API if your program’s C++ source files say using namespace mysqlpp within them. v2.0.0 Removed Connection::infoo(). (I’d call this an API change if I thought there were any programs out there actually using this...) Collapsed the Connection constructor taking a bool (for setting the throw_exceptions flag) and the default constructor into a single constructor using a default for the parameter. Classes Connection and Query are now derived from the Lockable interface, instead of implementing their own lock/unlock functions. In several instances, functions that took objects by value now take them by const reference, for efficiency. Merged SQLQuery class’s members into class Query. Merged RowTemplate class’s members into class Row. Reordered member variable declarations in some classes. The most common instance is when the private section was declared before the public section; it is now the opposite way. This can change the object’s layout in memory, so a program linking to the library must be rebuilt. Simplified the date and time class hierarchy. used to derive from mysql_date, used to derive from mysql_time, and used to derive from both of those. All three of these classes used to derive from mysql_dt_base. All of the mysql_* classes’ functionality and data has been folded into the leaf classes, and now the only thing shared between them is their dependence on the template. Since the leaf classes’ interface has not changed and end-user code shouldn’t have been using the other classes, this shouldn’t affect the API in any practical way. mysql_type_info now always initializes its private num member. Previously, this would go uninitialized if you used the default constructor. Now there is no default ctor, but the ctor taking one argument (which sets num) has a default. v3.0.0 Removed reset_query parameters from Query member functions. None of these have been honored at least going back to v1.7.9, so this is not an API change. As of this version, Query now automatically detects when it can safely reset itself after executing a query, so it’s not necessary to ask for a reset except when using template queries. Removed overloads of Query::execute(), store(), and use() that take only a const char*. This is not an API change because there was an equivalent call chain for this already. This change just snaps a layer of indirection. Query::error() is now const and returns const char* instead of a std::string by value. Removed Lockable mechanism as it was conceptually flawed. Connection and Query consequently no longer derive from Lockable. Since it was basically useless in prior versions, it can’t be construed as an API change. v3.0.1 Connection::thread_aware(), thread_start() and thread_end() are now static methods, so a program can call them before creating a connection. Ditto for DBDriver methods of the same name. ConnectionPool::release() is now virtual, so a subclass can override it. v3.0.2 ConnectionPool::grab() is now virtual; same reason as above. Query can now be tested in bool context, as was intended for v3.0.0. Had to change the “safe bool” method signature to make it happen, so technically it’s an API change, but it’s still used the same way. v3.1.0 The addition of a few new virtual methods to ConnectionPool inadvertently changed the library ABI. I knew adding fields changed the ABI, but erroneously assumed that the inverse of that truth — that adding methods was always safe — was also true. Adding normal methods is safe, but adding virtual methods breaks the ABI because it changes the class’s vtable size. That left us with two bad choices: either we could come out with a 3.1.1 that removed these methods to restore the prior ABI, or we could just declare this the “new ABI” and move on, resolving not to fall into this trap again. We’ve chosen the latter path. mysql++-3.3.0/doc/userman/simple2.txt000644 000765 000024 00000003321 14042362131 020141 0ustar00tangentstaff000000 000000 #include "cmdline.h" #include "printdata.h" #include #include #include using namespace std; int main(int argc, char *argv[]) { // Get database access parameters from command line mysqlpp::examples::CommandLine cmdline(argc, argv); if (!cmdline) { return 1; } // Connect to the sample database. mysqlpp::Connection conn(false); if (conn.connect(mysqlpp::examples::db_name, cmdline.server(), cmdline.user(), cmdline.pass())) { // Retrieve the sample stock table set up by resetdb mysqlpp::Query query = conn.query("select * from stock"); mysqlpp::StoreQueryResult res = query.store(); // Display results if (res) { // Display header cout.setf(ios::left); cout << setw(31) << "Item" << setw(10) << "Num" << setw(10) << "Weight" << setw(10) << "Price" << "Date" << endl << endl; // Get each row in result set, and print its contents for (size_t i = 0; i < res.num_rows(); ++i) { cout << setw(30) << res[i]["item"] << ' ' << setw(9) << res[i]["num"] << ' ' << setw(9) << res[i]["weight"] << ' ' << setw(9) << res[i]["price"] << ' ' << setw(9) << res[i]["sdate"] << endl; } } else { cerr << "Failed to get stock table: " << query.error() << endl; return 1; } return 0; } else { cerr << "DB connection failed: " << conn.error() << endl; return 1; } } mysql++-3.3.0/doc/userman/simple3.txt000644 000765 000024 00000004217 14042362131 020147 0ustar00tangentstaff000000 000000 #include "cmdline.h" #include "printdata.h" #include #include #include using namespace std; int main(int argc, char *argv[]) { // Get database access parameters from command line mysqlpp::examples::CommandLine cmdline(argc, argv); if (!cmdline) { return 1; } // Connect to the sample database. mysqlpp::Connection conn(false); if (conn.connect(mysqlpp::examples::db_name, cmdline.server(), cmdline.user(), cmdline.pass())) { // Ask for all rows from the sample stock table and display // them. Unlike simple2 example, we retreive each row one at // a time instead of storing the entire result set in memory // and then iterating over it. mysqlpp::Query query = conn.query("select * from stock"); if (mysqlpp::UseQueryResult res = query.use()) { // Display header cout.setf(ios::left); cout << setw(31) << "Item" << setw(10) << "Num" << setw(10) << "Weight" << setw(10) << "Price" << "Date" << endl << endl; // Get each row in result set, and print its contents while (mysqlpp::Row row = res.fetch_row()) { cout << setw(30) << row["item"] << ' ' << setw(9) << row["num"] << ' ' << setw(9) << row["weight"] << ' ' << setw(9) << row["price"] << ' ' << setw(9) << row["sdate"] << endl; } // Check for error: can't distinguish "end of results" and // error cases in return from fetch_row() otherwise. if (conn.errnum()) { cerr << "Error received in fetching a row: " << conn.error() << endl; return 1; } return 0; } else { cerr << "Failed to get stock item: " << query.error() << endl; return 1; } } else { cerr << "DB connection failed: " << conn.error() << endl; return 1; } } mysql++-3.3.0/doc/userman/transaction.txt000644 000765 000024 00000006024 14042362131 021116 0ustar00tangentstaff000000 000000 #include "cmdline.h" #include "printdata.h" #include "stock.h" #include #include using namespace std; int main(int argc, char *argv[]) { // Get database access parameters from command line mysqlpp::examples::CommandLine cmdline(argc, argv); if (!cmdline) { return 1; } try { // Establish the connection to the database server. mysqlpp::Connection con(mysqlpp::examples::db_name, cmdline.server(), cmdline.user(), cmdline.pass()); // Show initial state mysqlpp::Query query = con.query(); cout << "Initial state of stock table:" << endl; print_stock_table(query); // Insert a few rows in a single transaction set { // Use a higher level of transaction isolation than MySQL // offers by default. This trades some speed for more // predictable behavior. We've set it to affect all // transactions started through this DB server connection, // so it affects the next block, too, even if we don't // commit this one. mysqlpp::Transaction trans(con, mysqlpp::Transaction::serializable, mysqlpp::Transaction::session); stock row("Sauerkraut", 42, 1.2, 0.75, mysqlpp::sql_date("2006-03-06"), mysqlpp::null); query.insert(row); query.execute(); cout << "\nRow inserted, but not committed." << endl; cout << "Verify this with another program (e.g. simple1), " "then hit Enter." << endl; getchar(); cout << "\nCommitting transaction gives us:" << endl; trans.commit(); print_stock_table(query); } // Now let's test auto-rollback { // Start a new transaction, keeping the same isolation level // we set above, since it was set to affect the session. mysqlpp::Transaction trans(con); cout << "\nNow adding catsup to the database..." << endl; stock row("Catsup", 3, 3.9, 2.99, mysqlpp::sql_date("2006-03-06"), mysqlpp::null); query.insert(row); query.execute(); } cout << "\nNo, yuck! We don't like catsup. Rolling it back:" << endl; print_stock_table(query); } catch (const mysqlpp::BadQuery& er) { // Handle any query errors cerr << "Query error: " << er.what() << endl; return -1; } catch (const mysqlpp::BadConversion& er) { // Handle bad conversions cerr << "Conversion error: " << er.what() << endl << "\tretrieved data size: " << er.retrieved << ", actual size: " << er.actual_size << endl; return -1; } catch (const mysqlpp::Exception& er) { // Catch-all for any other MySQL++ exceptions cerr << "Error: " << er.what() << endl; return -1; } return 0; } mysql++-3.3.0/doc/userman/common.xsl000644 000765 000024 00000001177 14042362131 020054 0ustar00tangentstaff000000 000000 mysql++-3.3.0/doc/userman/userman.dbx000644 000765 000024 00000003462 14042362153 020210 0ustar00tangentstaff000000 000000 %xinclude; ]>
MySQL++ v3.3.0 User Manual Kevin Atkinson Sinisa Milivojevic Monty Widenius Warren Young 1998-2001, 2005-2019 Kevin Atkinson (original author) MySQL AB Educational Technology Resources
mysql++-3.3.0/doc/userman/README.md000644 000765 000024 00000014744 14042362131 017317 0ustar00tangentstaff000000 000000 # Overview The user manual is written in XML DocBook format, version 4.4. It uses the official DocBook XSL stylesheets, and will build with versions at least as far back as 1.69.1. (Why these versions? They're what comes with CentOS 5, the oldest system I still build this manual on.) To make the HTML version of the user manual, just type `make` or `make html` in this directory. To make the PDF version of the manual, say `make pdf`. To make both versions, say `make all`. The most likely cause of build failures is not having the right processing programs installed. The DocBook processing model looks like this: DocBook --> [XSLT proc.] --+--> HTML ^ | | +--> XSL-FO --> [XSL-FO proc.] --> PDF | [XSL stylesheets] "DocBook" above is a file in DocBook XML format. It's `userman.dbx` in the case of the MySQL++ User Manual. # Interchangeable Elements There are many alternatives for the elements in the square brackets: ## XSLT Processor The first replaceable piece is an XSLT processor, which translates XML into other text formats, such as HTML or other varieties of XML. We use [`xsltproc`][1] from the Gnome project. There are several other widely available XSLT processors, but because we use some nonstandard extensions to XSLT — primarily [XIncludes][2] — not all XSLT processors function as drop-in replacements. We use the XSLT processor to do two transforms. One is directly to HTML. The other is to XSL-FO, an XML-based page layout language. This brings us to... [1]: http://xmlsoft.org/XSLT/ [2]: https://en.wikipedia.org/wiki/XInclude ## XSL-FO Processor The second replaceable piece in the diagram above is an XSL-FO processor, which converts XSL-FO to a more directly useful page layout format, like PDF. The user manual's build system supports several alternatives. The build system relies on a simple script in this directory — `fo2pdf` — to find an XSL-FO formatter and run it. It looks first for [RenderX XEP][3], which comes in a free-as-in-kitten version for personal use. If you're in a commercial environment, RenderX wants you to use their commercial trial version which will format this manual without complaint, but it puts watermarks and blank pages into the output. As of May 2019, they want $400 for the single-user to get clean output. It's the same as the free personal version, just with a different license. You don't need the higher-end versions of XEP; they don't do anything we need here. If `fo2pdf` can't find XEP, it then looks for [Antenna House XSL Formatter][4]. It's pretty much the same deal as XEP: crippled demo version for testing, and a single-user “Lite†version for $400. There is no free version for personal use, however. Failing all that, `fo2pdf` falls back to the only free-as-in-liberty XSL-FO formatter, [Apache FOP][5]. FOP may be available through your OS's package system. For instance, with Debian type OSes, you can just say $ sudo apt install fop and on RHEL/CentOS through version 7: $ sudo yum install fop That command also works in Fedora as of this writing. Since `fop` hasn’t been removed from Fedora, I suspect this package is moving to EPEL for use in EL8, and it just waiting for someone to get around to doing the port. Meanwhile, rebuilding Fedora’s package on your OS should work. If FOP is not in your OS's package system, you can download pre-built binaries from the FOP web site that will run with the version of Java that almost certainly is available with your OS's package system. You might be wondering why `fo2pdf` looks for FOP last, given that MySQL++ is itself free software and relies on a lot of other free software. It's just that it's a good bet that if there's a commercial processor on the system, it was put there quite purposefully by someone who went out of their way to make it available on that system, and so wants it to be used. The commercial vendors can still get money for their products because FOP hasn't caught up with them in several important areas. That said, don't feel that you need to go and buy an XSL-FO processor just to build the manuals. We try to always keep the manual in a state where FOP can generate adequate output. [3]: http://renderx.com/download/personal.html [4]: http://antennahouse.com/ [5]: http://xmlgraphics.apache.org/fop/ ## DocBook XSL Stylesheets The third replaceable piece above is the DocBook XSL stylesheet set. The stylesheets are the XSLT processor's rules, controlling how the input XML gets transformed to the output format. The standard DocBook stylesheet set includes stylesheets for HTML and XSL-FO output. The default behavior of `xsltproc` is look for these first on your local system, and then if it fails to find them, tries to download them on the fly from the Internet. Because this slows processing quite a bit even if you have a fast Internet connection, we've disabled this feature of `xsltproc`, so you must have the DocBook XSL stylesheets locally installed to build the user manual. Most Unixy type systems have pre-built DocBook XSL stylesheet packages available: * **Red Hat/Fedora:** `docbook-style-xsl` RPM package, base OS repository * **macOS:** `docbook-xsl` [Homebrew](http://brew.sh/) package * **Cygwin:** `docbook-xml??` package (?? = DocBook version) * **Ubuntu/Debian:** `docbook-xsl` package, standard APT repository Please send the name of the package for your system to [the forum][for] if it isn't listed above, and I'll add it to the list. If you can't find a package for your system, you can get the DocBook stylesheets from [the source](http://docbook.sourceforge.net/). They're a bit tricky to set up correctly, so it's better to use a pre-built package if you can. If you are still having problems, post the details about it to [the MySQL++ forum][for], and I'll try to help you debug the problem. You might also find the FOP and/or DocBook mailing lists helpful. [for]: https://tangentsoft.com/mysqlpp/forum # Hacking on the Manual If you're looking to hack on the manual, here are some helpful resources for getting up to speed on DocBook: * Mills' [_Installing And Using An XML/SGML DocBook Editing Suite_](http://tinyurl.com/8alb2) article is the best tutorial I've found. * Walsh and Muellner's [_DocBook: The Definitive Guide_ book](https://tdg.docbook.org/) is the official DocBook referece. It is available both online and in dead-tree versions. * [The official DocBook site](https://docbook.org/) mysql++-3.3.0/doc/userman/store_if.txt000644 000765 000024 00000004073 14042362131 020405 0ustar00tangentstaff000000 000000 #include "cmdline.h" #include "printdata.h" #include "stock.h" #include #include #include // Define a functor for testing primality. struct is_prime { bool operator()(const stock& s) { if ((s.num == 2) || (s.num == 3)) { return true; // 2 and 3 are trivial cases } else if ((s.num < 2) || ((s.num % 2) == 0)) { return false; // can't be prime if < 2 or even } else { // The only possibility left is that it's divisible by an // odd number that's less than or equal to its square root. for (int i = 3; i <= sqrt(double(s.num)); i += 2) { if ((s.num % i) == 0) { return false; } } return true; } } }; int main(int argc, char *argv[]) { // Get database access parameters from command line mysqlpp::examples::CommandLine cmdline(argc, argv); if (!cmdline) { return 1; } try { // Establish the connection to the database server. mysqlpp::Connection con(mysqlpp::examples::db_name, cmdline.server(), cmdline.user(), cmdline.pass()); // Collect the stock items with prime quantities std::vector results; mysqlpp::Query query = con.query(); query.store_if(results, stock(), is_prime()); // Show the results print_stock_header(results.size()); std::vector::const_iterator it; for (it = results.begin(); it != results.end(); ++it) { print_stock_row(it->item.c_str(), it->num, it->weight, it->price, it->sDate); } } catch (const mysqlpp::BadQuery& e) { // Something went wrong with the SQL query. std::cerr << "Query failed: " << e.what() << std::endl; return 1; } catch (const mysqlpp::Exception& er) { // Catch-all for any other MySQL++ exceptions std::cerr << "Error: " << er.what() << std::endl; return 1; } return 0; } mysql++-3.3.0/doc/userman/unicode.dbx000644 000765 000024 00000026414 14042362131 020162 0ustar00tangentstaff000000 000000 Using Unicode with MySQL++ A Short History of Unicode ...with a focus on relevance to MySQL++ In the old days, computer operating systems only dealt with 8-bit character sets. That only allows for 256 possible characters, but the modern Western languages have more characters combined than that alone. Add in all the other languages of the world plus the various symbols people use in writing, and you have a real mess! Since no standards body held sway over things like international character encoding in the early days of computing, many different character sets were invented. These character sets weren’t even standardized between operating systems, so heaven help you if you needed to move localized Greek text on a DOS box to a Russian Macintosh! The only way we got any international communication done at all was to build standards on top of the common 7-bit ASCII subset. Either people used approximations like a plain “c” instead of the French “ç”, or they invented things like HTML entities (“&ccedil;” in this case) to encode these additional characters using only 7-bit ASCII. Unicode solves this problem. It encodes every character used for writing in the world, using up to 4 bytes per character. Before emoji became popular, the subset covering the most economically valuable cases fit into the lower 65536 code points, so you could encode most texts using only two bytes per character. Many nominally Unicode-aware programs only support this subset, called the Basic Multilingual Plane, or BMP. Unfortunately, Unicode was invented about two decades too late for Unix and C. Those decades of legacy created an immense inertia preventing a widespread move away from 8-bit characters. MySQL and C++ come out of these older traditions, and so they share the same practical limitations. MySQL++ doesn’t have any code in it for Unicode conversions, and it likely never will; it just passes data along unchanged from the underlying MySQL C API, so you still need to be aware of these underlying issues. During the development of the Plan 9 operating system (a kind of successor to Unix) Ken Thompson invented the UTF-8 encoding. UTF-8 is a superset of 7-bit ASCII and is compatible with C strings, since it doesn’t use 0 bytes anywhere as multi-byte Unicode encodings do. As a result, many programs that deal in text will cope with UTF-8 data even though they have no explicit support for UTF-8. Follow the last link above to see how the design of UTF-8 allows this. Unicode in MySQL Since MySQL comes out of the Unix world, and it predates the widespread use of UTF-8 in Unix, the early versinos of MySQL had no explicit support for Unicode. From the start, you could store raw UTF-8 strings, but it wouldn’t know how to do things like sort a column of UTF-8 strings. MySQL 4.1 added the first explicit support for Unicode. This version of MySQL supported only the BMP, meaning that if you told it to expect strings to be in UTF-8, it could only use up to 3 bytes per character. MySQL 5.5 was the first release to completely support Unicode. Because the BMP-only Unicode support had been in the wild for about 6 years by that point, and changing to the new character set requires a table rebuild, the new one was called “utf8mb4” rather than change the longstanding meaning of “utf8” in MySQL. This release also added a new alias for the old UTF-8 subset character set, “utf8mb3.” Finally, in MySQL 8.0, “utf8mb4” became the default character set. For backwards compatibility, “utf8” remains an alias for “utf8mb3.” As of MySQL++ 3.2.4, we’ve defined the MYSQLPP_UTF8_CS and MYSQLPP_UTF8_COL macros which expand to “utf8mb4” and “utf8mb4_general_ci” when you build MySQL++ against MySQL 5.5 and newer and to “utf8” and “utf8_general_ci” otherwise. We use these macros in our resetdb example; you're welcome to use them in your code as well. Unicode on Unixy Systems Linux and Unix have system-wide UTF-8 support these days. If your operating system is of 2001 or newer vintage, it probably has such support. On such a system, the terminal I/O code understands UTF-8 encoded data, so your program doesn’t require any special code to correctly display a UTF-8 string. If you aren’t sure whether your system supports UTF-8 natively, just run the simple1 example: if the first item has two high-ASCII characters in place of the “ü” in “Nürnberger Brats”, you know it’s not handling UTF-8. If your Unix doesn’t support UTF-8 natively, it likely doesn’t support any form of Unicode at all, for the historical reasons I gave above. Therefore, you will have to convert the UTF-8 data to the local 8-bit character set. The standard Unix function iconv() can help here. If your system doesn’t have the iconv() facility, there is a free implementation available from the GNU Project. Another library you might check out is IBM’s ICU. This is rather heavy-weight, so if you just need basic conversions, iconv() should suffice. Unicode on Windows Each Windows API function that takes a string actually comes in two versions. One version supports only 1-byte “ANSI” characters (a superset of ASCII), so they end in 'A'. Windows also supports the 2-byte subset of Unicode called UCS-2Since Windows XP, Windows actually uses the UTF-16 encoding, not UCS-2. This means that if you use characters beyond the 16-bit BMP range, they get encoded as 4-byte characters. But again, since the most economically valuable subset of Unicode is the BMP if you ignore emoji, many programs ignore this distinction and assume Unicode strings on Windows are always 2 bytes per character.. Some call these “wide” characters, so the other set of functions end in 'W'. The MessageBox() API, for instance, is actually a macro, not a real function. If you define the UNICODE macro when building your program, the MessageBox() macro evaluates to MessageBoxW(); otherwise, to MessageBoxA(). Since MySQL uses the UTF-8 Unicode encoding and Windows uses UCS-2, you must convert data when passing text between MySQL++ and the Windows API. Since there’s no point in trying for portability — no other OS I’m aware of uses UCS-2 — you might as well use platform-specific functions to do this translation. Since version 2.2.2, MySQL++ ships with two Visual C++ specific examples showing how to do this in a GUI program. (In earlier versions of MySQL++, we did Unicode conversion in the console mode programs, but this was unrealistic.) How you handle Unicode data depends on whether you’re using the native Windows API, or the newer .NET API. First, the native case: // Convert a C string in UTF-8 format to UCS-2 format. void ToUCS2(LPTSTR pcOut, int nOutLen, const char* kpcIn) { MultiByteToWideChar(CP_UTF8, 0, kpcIn, -1, pcOut, nOutLen); } // Convert a UCS-2 string to C string in UTF-8 format. void ToUTF8(char* pcOut, int nOutLen, LPCWSTR kpcIn) { WideCharToMultiByte(CP_UTF8, 0, kpcIn, -1, pcOut, nOutLen, 0, 0); } These functions leave out some important error checking, so see examples/vstudio/mfc/mfc_dlg.cpp for the complete version. If you’re building a .NET application (such as, perhaps, because you’re using Windows Forms), it’s better to use the .NET libraries for this: // Convert a C string in UTF-8 format to a .NET String in UCS-2 format. String^ ToUCS2(const char* utf8) { return gcnew String(utf8, 0, strlen(utf8), System::Text::Encoding::UTF8); } // Convert a .NET String in UCS-2 format to a C string in UTF-8 format. System::Void ToUTF8(char* pcOut, int nOutLen, String^ sIn) { array<Byte>^ bytes = System::Text::Encoding::UTF8->GetBytes(sIn); nOutLen = Math::Min(nOutLen - 1, bytes->Length); System::Runtime::InteropServices::Marshal::Copy(bytes, 0, IntPtr(pcOut), nOutLen); pcOut[nOutLen] = '\0'; } Unlike the native API versions, these examples are complete, since the .NET platform handles a lot of things behind the scenes for us. We don’t need any error-checking code for such simple routines. All of this assumes you’re using Windows NT or one of its direct descendants: Windows 2000, Windows XP, Windows Vista, Windows 7, or any “Server” variant of Windows. Windows 95 and its descendants (98, ME, and CE) do not support Unicode. They still have the 'W' APIs for compatibility, but they just smash the data down to 8-bit and call the 'A' version for you. For More Information The Unicode FAQs page has copious information on this complex topic. When it comes to Unix and UTF-8 specific items, the UTF-8 and Unicode FAQ for Unix/Linux is a quicker way to find basic information. mysql++-3.3.0/doc/userman/threads.dbx000644 000765 000024 00000042074 14042362131 020166 0ustar00tangentstaff000000 000000 Using MySQL++ in a Multithreaded Program MySQL++ is not “thread safe” in any meaningful sense. MySQL++ contains very little code that actively prevents trouble with threads, and all of it is optional. We have done some work in MySQL++ to make thread safety achievable, but it doesn’t come for free. The main reason for this is that MySQL++ is generally I/O-bound, not processor-bound. That is, if your program’s bottleneck is MySQL++, the ultimate cause is usually the I/O overhead of using a client-server database. Doubling the number of threads will just let your program get back to waiting for I/O twice as fast. Since threads are evil and generally can’t help MySQL++, the only optional thread awareness features we turn on in the shipping version of MySQL++ are those few that have no practical negative consequences. Everything else is up to you, the programmer, to evaluate and enable as and when you need it. We’re going to assume that you are reading this chapter because you find yourself needing to use threads for some other reason than to speed up MySQL access. Our purpose here is limited to setting down the rules for avoiding problems with MySQL++ in a multi-threaded program. We won’t go into the broader issues of thread safety outside the scope of MySQL++. You will need a grounding in threads in general to get the full value of this advice. Build Issues Before you can safely use MySQL++ with threads, there are several things you must do to get a thread-aware build: Build MySQL++ itself with thread awareness turned on. On Linux, Cygwin and Unix (OS X, *BSD, Solaris...), pass the --enable-thread-check flag to the configure script. Beware, this is only a request to the configure script to look for thread support on your system, not a requirement to do or die: if the script doesn’t find what it needs to do threading, MySQL++ will just get built without thread support. See README-Unix.txt for more details. On Windows, if you use the Visual C++ project files or the MinGW Makefile that comes with the MySQL++ distribution, threading is always turned on, due to the nature of Windows. If you build MySQL++ in some other way, such as with Dev-Cpp (based on MinGW) you’re on your own to enable thread awareness. Link your program to a thread-aware build of the MySQL C API library. If you use a binary distribution of MySQL on Unixy systems (including Cygwin) you usually get two different versions of the MySQL C API library, one with thread support and one without. These are typically called libmysqlclient and libmysqlclient_r, the latter being the thread-safe one. (The “_r” means reentrant.) If you’re using the Windows binary distribution of MySQL, you should have only one version of the C API library, which should be thread-aware. If you have two, you probably just have separate debug and optimized builds. See README-Visual-C++.txt or README-MinGW.txt for details. If you build MySQL from source, you might only get one version of the MySQL C API library, and it can have thread awareness or not, depending on your configuration choices. Enable threading in your program’s build options. This is different for every platform, but it’s usually the case that you don’t get thread-aware builds by default. Depending on the platform, you might need to change compiler options, linker options, or both. See your development environment’s documentation, or study how MySQL++ itself turns on thread-aware build options when requested. Connection Management The MySQL C API underpinning MySQL++ does not allow multiple concurrent queries on a single connection. You can run into this problem in a single-threaded program, too, which is why we cover the details elsewhere, in . It’s a thornier problem when using threads, though. The simple fix is to just create a separarate object for each thread that needs to make database queries. This works well if you have a small number of threads that need to make queries, and each thread uses its connection often enough that the server doesn’t time out waiting for queries. If you have lots of threads or the frequency of queries is low, the connection management overhead will be excessive. To avoid that, we created the class. It manages a pool of Connection objects like library books: a thread checks one out, uses it, and then returns it to the pool as soon as it’s done with it. This keeps the number of active connections low. We suggest that you keep each connection’s use limited to a single variable scope for RAII reasons; we created a little helper called to make that easy. ConnectionPool has three methods that you need to override in a subclass to make it concrete: create(), destroy(), and max_idle_time(). These overrides let the base class delegate operations it can’t successfully do itself to its subclass. The ConnectionPool can’t know how to create() the Connection objects, because that depends on how your program gets login parameters, server information, etc. ConnectionPool also makes the subclass destroy() the Connection objects it created; it could assume that they’re simply allocated on the heap with new, but it can’t be sure, so the base class delegates destruction, too. Finally, the base class can’t know which connection idle timeout policy would make the most sense to the client, so it asks its subclass via the max_idle_time() method. ConnectionPool also allows you to override release(), if needed. For simple uses, it’s not necessary to override this. In designing your ConnectionPool derivative, you might consider making it a Singleton, since there should only be one pool in a program. Another thing you might consider doing is passing a object to Connection::set_option() in your create() override before returning the new Connection pointer. This will cause the underlying MySQL C API to try to reconnect to the database server if a query fails because the connection was dropped by the server. This can happen if the DB server is allowed to restart out from under your application. In many applications, this isn’t allowed, or if it does happen, you might want your code to be able to detect it, so MySQL++ doesn’t set this option for you automatically. Here is an example showing how to use connection pools with threads: The example works with both Windows native threads and with POSIX threads.The file examples/threads.h contains a few macros and such to abstract away the differences between the two threading models. Because thread-enabled builds are only the default on Windows, it’s quite possible for this program to do nothing on other platforms. See above for instructions on enabling a thread-aware build. If you write your code without checks for thread support like you see in the code above and link it to a build of MySQL++ that isn’t thread-aware, it will still try to run. The threading mechanisms fall back to a single-threaded mode when threads aren’t available. A particular danger is that the mutex lock mechanism used to keep the pool’s internal data consistent while multiple threads access it will just quietly become a no-op if MySQL++ is built without thread support. We do it this way because we don’t want to make thread support a MySQL++ prerequisite. And, although it would be of limited value, this lets you use ConnectionPool in single-threaded programs. You might wonder why we don’t just work around this weakness in the C API transparently in MySQL++ instead of suggesting design guidelines to avoid it. We’d like to do just that, but how? If you consider just the threaded case, you could argue for the use of mutexes to protect a connection from trying to execute two queries at once. The cure is worse than the disease: it turns a design error into a performance sap, as the second thread is blocked indefinitely waiting for the connection to free up. Much better to let the program get the “Commands out of sync” error, which will guide you to this section of the manual, which tells you how to avoid the error with a better design. Another option would be to bury ConnectionPool functionality within MySQL++ itself, so the library could create new connections at need. That’s no good because the above example is the most complex in MySQL++, so if it were mandatory to use connection pools, the whole library would be that much more complex to use. The whole point of MySQL++ is to make using the database easier. MySQL++ offers the connection pool mechanism for those that really need it, but an option it must remain. Helper Functions Connection has several thread-related static methods you might care about when using MySQL++ with threads. You can call Connection::thread_aware() to determine whether MySQL++ and the underlying C API library were both built to be thread-aware. I want to stress that thread awareness is not the same thing as thread safety: it’s still up to you to make your code thread-safe. If this method returns true, it just means it’s possible to achieve thread-safety, not that you actually have it. If your program’s connection-management strategy allows a thread to use a Connection object that another thread created, you need to know about Connection::thread_start(). This function sets up per-thread resources needed to make MySQL server calls. You don’t need to call it when you use the simple Connection-per-thread strategy, because this function is implicitly called the first time you create a Connection in a thread. It’s not harmful to call this function from a thread that previously created a Connection, just unnecessary. The only time it’s necessary is when a thread can make calls to the database server on a Connection that another thread created and that thread hasn’t already created a Connection itself. If you use ConnectionPool, you should call thread_start() at the start of each worker thread because you probably can’t reliably predict whether your grab() call will create a new Connection or will return one previously returned to the pool from another thread. It’s possible to conceive of situations where you can guarantee that each pool user always creates a fresh Connection the first time it calls grab(), but thread programming is complex enough that it’s best to take the safe path and always call thread_start() early in each worker thread. Finally, there’s the complementary method, Connection::thread_end(). Strictly speaking, it’s not necessary to call this. The per-thread memory allocated by the C API is small, it doesn’t grow over time, and a typical thread is going to need this memory for its entire run time. Memory debuggers aren’t smart enough to know all this, though, so they will gripe about a memory leak unless you call this from each thread that uses MySQL++ before that thread exits. Although its name suggests otherwise, Connection::thread_id() has nothing to do with anything in this chapter. Sharing MySQL++ Data Structures We’re in the process of making it safer to share MySQL++’s data structures across threads. Although things are getting better, it’s highly doubtful that all problems with this are now fixed. By way of illustration, allow me explain one aspect of this problem and how we solved it in MySQL++ 3.0.0. When you issue a database query that returns rows, you also get information about the columns in each row. Since the column information is the same for each row in the result set, older versions of MySQL++ kept this information in the result set object, and each kept a pointer back to the result set object that created it so it could access this common data at need. This was fine as long as each result set object outlived the Row objects it returned. It required uncommon usage patterns to run into trouble in this area in a single-threaded program, but in a multi-threaded program it was easy. For example, there’s frequently a desire to let one connection do the queries, and other threads process the results. You can see how avoiding lifetime problems here would require a careful locking strategy. We got around this in MySQL++ v3.0 by giving these shared data structures a lifetime independent of the result set object that intitially creates it. These shared data structures stick around until the last object needing them gets destroyed. Although this is now a solved problem, I bring it up because there are likely other similar lifetime and sequencing problems waiting to be discovered inside MySQL++. If you would like to help us find these, by all means, share data between threads willy-nilly. We welcome your crash reports on the MySQL++ mailing list. But if you’d prefer to avoid problems, it’s better to keep all data about a query within a single thread. Between this and the advice in prior sections, you should be able to use threads with MySQL++ without trouble. mysql++-3.3.0/doc/userman/incorporating.dbx000644 000765 000024 00000036321 14042362131 021410 0ustar00tangentstaff000000 000000 Using MySQL++ in Your Own Project Up to now, this manual has only discussed MySQL++ in conjunction with the example programs that come with the library. This chapter covers the steps you need to take to incorporate MySQL++ into your own projects. The first thing you have to do is include mysql++.h in each module that uses MySQL++. In modules that use SSQLS v1, you also need to include ssqls.h.MySQL++ has many header files, but the only one that isn’t intertwined with the rest is ssqls.h. mysql++.h brings in all of the others in the correct order. Some have tried to speed their build times by finding a subset of MySQL++ headers to include, but mysql++.h already does as much of this as is practical. MySQL++’s monolithic nature rules out finding a true subset of the library headers. At this point, your project probably still won’t compile, and it certainly won’t link. The remaining steps are dependent on the operating system and tools you are using. The rest of this chapter is broken up into several sections, one for each major platform type. You can skip over the sections for platforms you don’t use. Visual C++ Using MySQL++ in an MFC Project If you don’t already have a project set up, open Visual Studio, say File | New | Project, then choose Visual C++ | MFC | MFC Application. Go through the wizard setting up the project as you see fit. Once you have your project open, right click on your top-level executable in the Solution Explorer, choose Properties, and make the following changes. (Where it doesn’t specify Debug or Release, make the same change to both configurations.) Append the following to C/C++ | General | Additional Include Directories: C:\Program Files\MySQL\MySQL Connector C 6.1\include, C:\mysql++\include Under C/C++ | Code Generation change “Runtime Library” to “Multi-threaded Debug DLL (/MDd)” for the Debug configuration. For the Release configuration, make it “Multi-threaded DLL (/MD)”. For both Release and Debug builds, append the following to Linker | General | Additional Library Directories: C:\Program Files\MySQL\MySQL Connector C 6.1\lib, C:\mysql++\lib Connector/C does include debug libraries, but you will probably not need to use them. Under Linker | Input add the following to “Additional Dependencies” for the Debug configuration: libmysql.lib wsock32.lib mysqlpp_d.lib ...and then for the Release configuration: libmysql.lib wsock32.lib mysqlpp.lib This difference is because MySQL++’s Debug DLL and import library have a _d suffix so you can have both in the same directory without conflicts. You may want to study examples\vstudio\mfc\mfc.vcproj to see this in action. Note that some of the paths will be different, because it can use relative paths for mysqlpp.dll. Using MySQL++ in a Windows Forms C++/CLI Project Before you start work on getting MySQL++ working with your own program, you need to make some changes to the MySQL++ build settings. Open mysqlpp.sln, then right-click on the mysqlpp target and select Properties. Make the following changes for both the Debug and Release configurations: Under Configuration Properties | General, change “Common Language Runtime support” to the /clr setting. Under C/C++ | Code Generation, change “Enable C++ Exceptions” from “Yes (/EHsc)” to “Yes With SEH Exceptions (/EHa)” If you have already built MySQL++, be sure to perform a complete rebuild after changing these options. The compiler will emit several C4835 warnings after making those changes, which are harmless when using the DLL with a C++/CLI program, but which warn of real problems when using it with unmanaged C++. This is why MySQL++’s Windows installer (install.hta) offers the option to install the CLR version into a separate directory; use it if you need both managed and unmanaged versions installed! For the same reason, you might give some thought about where you install mysqlpp.dll on your end user’s machines when distributing your program. My recommendation is to install it in the same directory as the .exe file that uses it, rather than installing into a system directory where it could conflict with a mysqlpp.dll built with different settings. Once you have MySQL++ built with CLR support, open your program’s project. If you don’t already have a project set up, open Visual Studio, say File | New | Project, then choose Visual C++ | CLR | Windows Forms Application. Go through the wizard setting up the project as you see fit. The configuration process isn’t much different from that for an MFC project, so go through the list above first. Then, make the following changes particular to .NET and C++/CLI: Under Configuration Properties | General change the setting from /clr:pure to /clr. (You need mixed assembly support to allow a C++/CLI program to use a plain C++ library like MySQL++.) For the Linker | Input settings, you don’t need wsock32.lib. The mere fact that you’re using .NET takes care of that dependency for you. In the MFC instructions above, it said that you need to build it using the Multi-threaded DLL version of the C++ Runtime Library. That’s not strictly true for MFC, but it’s an absolute requirement for C++/CLI. See the Remarks in the MSDN article on the /clr switch for details. You may want to study examples\vstudio\wforms\wforms.vcproj to see all this in action. Note that some of the paths will be different, because it can use relative paths for mysqlpp_d.dll and mysqlpp.dll. Unixy Platforms: Linux, *BSD, OS X, Cygwin, Solaris... There are lots of ways to build programs on Unixy platforms. We’ll cover just the most generic way here, Makefiles. We’ll use a very simple example so it’s clear how to translate this to more sophisticated build systems such as GNU Autotools or Bakefile. “Hello, world!” for MySQL++ might look something like this: Here’s a Makefile for building that program: The *FLAGS lines are where all of the assumptions about file and path names are laid out. Probably at least one of these assumptions isn’t true for your system, and so will require changing. The trickiest line is the LDLIBS one. MySQL++ programs need to get built against both the MySQL and MySQL++ libraries, because MySQL++ is built on top of the MySQL C API libraryThe MySQL C API library is most commonly called libmysqlclient on Unixy systems, though it is also known as Connector/C. If you’re building a threaded program, use -lmysqlclient_r instead of -lmysqlclient here. (See for more details on building thread-aware programs.) On some systems, the order of libraries in the LDLIBS line is important: these linkers collect symbols from right to left, so the rightmost library needs to be the most generic. In this example, MySQL++ depends on MySQL, so the MySQL C API library is rightmost. You might need to add more libraries to the LDLIBS line. -lnsl, -lz and -lm are common. If you study how MySQL++ itself gets built on your system, you can see what it uses, and emulate that. You may be wondering why we have used both LDLIBS and LDFLAGS here. Some Makefiles you have seen collect both types of flags in a single variable. That can work if the variable is used in the right place in the link command. However, this particular Makefile is made with GNU make in mind, and uses its standard rules implicitly. Those rules are designed to use these two variables separately like this. If you were writing your own compilation rules, you could write them in such a way that you didn’t have to do this. Beyond that, we have a pretty vanilla Makefile, thanks in large part to the fact that the default make rules are fine for such a simple program. OS X Makefiles The generic Makefile instructions above cover most of what you need to know about using Makefiles on OS X. One thing that may trip you up on OS X is that it uses an uncommon dynamic linkage system. The easiest way to cope with this is to link your executables with the compiler, rather than call ld directly. Another tricky bit on OS X is the concept of Universal binaries. See README-Mac-OS-X.txt for details on building a Universal version of the MySQL++ library, if you need one. By default, you only get a version tuned for the system type you build it on. Xcode I have no information on how to incorporate MySQL++ in an Xcode project. Send a message to the MySQL++ mailing list if you can help out here. MinGW Makefiles The generic Makefile instructions above apply to MinGW’s version of GNU make as well. You will have some differences due to the platform, so here’s the adjusted Makefile: Note that I’ve used del instead of rm in the clean target. In the past, at least, MinGW make had some funny rules about whether commands in target rules would get run with sh.exe or with cmd.exe. I can’t currently get my installation of MinGW to do anything but use sh.exe by default, but that may be because I have Cygwin installed, which provides sh.exe. This explains the first line in the file, which overrides the default shell with cmd.exe, purely to get consistent behavior across platforms. If you knew all your platforms would have a better shell, you’d probably want to use that instead. Note the use of forward slashes in the path to the MySQL Connector/C development files. GNU make uses the backslash as an escape character, so you’d have to double them if you’re unwilling to use forward slashes. Third-Party MinGW IDEs (Dev-C++, Code::Blocks...) I have no information on how to do this. We’ve received reports on the mailing list from people that have made it work, but no specifics on what all needs to be done. The Makefile discussion above should give you some hints. Eclipse As far as I can tell, the simplest way to build a C++ project with Eclipse is to set up a Makefile for it as described above, then add an external run configuration for your local make tool. Get the project building from the command line with make, then go to Run | External Tools | Open External Tools Dialog and add a new launch configuration. For example, on my OS X system I use /usr/bin/gnumake for the program location and pick the project root with the Browse Workspace button to set the working directory. mysql++-3.3.0/doc/userman/fieldinf.txt000644 000765 000024 00000006043 14042362131 020352 0ustar00tangentstaff000000 000000 #include "cmdline.h" #include "printdata.h" #include #include using namespace std; int main(int argc, char *argv[]) { // Get database access parameters from command line mysqlpp::examples::CommandLine cmdline(argc, argv); if (!cmdline) { return 1; } try { // Establish the connection to the database server. mysqlpp::Connection con(mysqlpp::examples::db_name, cmdline.server(), cmdline.user(), cmdline.pass()); // Get contents of main example table mysqlpp::Query query = con.query("select * from stock"); mysqlpp::StoreQueryResult res = query.store(); // Show info about each field in that table char widths[] = { 12, 22, 46 }; cout.setf(ios::left); cout << setw(widths[0]) << "Field" << setw(widths[1]) << "SQL Type" << setw(widths[2]) << "Equivalent C++ Type" << endl; for (size_t i = 0; i < sizeof(widths) / sizeof(widths[0]); ++i) { cout << string(widths[i] - 1, '=') << ' '; } cout << endl; for (size_t i = 0; i < res.field_names()->size(); i++) { // Suppress C++ type name outputs when run under dtest, // as they're system-specific. const char* cname = res.field_type(int(i)).name(); mysqlpp::FieldTypes::value_type ft = res.field_type(int(i)); ostringstream os; os << ft.sql_name() << " (" << ft.id() << ')'; cout << setw(widths[0]) << res.field_name(int(i)).c_str() << setw(widths[1]) << os.str() << setw(widths[2]) << cname << endl; } cout << endl; // Simple type check if (res.field_type(0) == typeid(string)) { cout << "SQL type of 'item' field most closely resembles " "the C++ string type." << endl; } // Tricky type check: the 'if' path shouldn't happen because the // description field has the NULL attribute. We need to dig a // little deeper if we want to ignore this in our type checks. if (res.field_type(5) == typeid(string)) { cout << "Should not happen! Type check failure." << endl; } else if (res.field_type(5) == typeid(mysqlpp::sql_blob_null)) { cout << "SQL type of 'description' field resembles " "a nullable variant of the C++ string type." << endl; } else { cout << "Weird: fifth field's type is now " << res.field_type(5).name() << endl; cout << "Did something recently change in resetdb?" << endl; } } catch (const mysqlpp::BadQuery& er) { // Handle any query errors cerr << "Query error: " << er.what() << endl; return -1; } catch (const mysqlpp::Exception& er) { // Catch-all for any other MySQL++ exceptions cerr << "Error: " << er.what() << endl; return -1; } return 0; } mysql++-3.3.0/doc/userman/cpool.txt000644 000765 000024 00000017050 14042362131 017706 0ustar00tangentstaff000000 000000 #include "cmdline.h" #include "threads.h" #include using namespace std; #if defined(HAVE_THREADS) // Define a concrete ConnectionPool derivative. Takes connection // parameters as inputs to its ctor, which it uses to create the // connections we're called upon to make. Note that we also declare // a global pointer to an object of this type, which we create soon // after startup; this should be a common usage pattern, as what use // are multiple pools? class SimpleConnectionPool : public mysqlpp::ConnectionPool { public: // The object's only constructor SimpleConnectionPool(mysqlpp::examples::CommandLine& cl) : conns_in_use_(0), db_(mysqlpp::examples::db_name), server_(cl.server()), user_(cl.user()), password_(cl.pass()) { } // The destructor. We _must_ call ConnectionPool::clear() here, // because our superclass can't do it for us. ~SimpleConnectionPool() { clear(); } // Do a simple form of in-use connection limiting: wait to return // a connection until there are a reasonably low number in use // already. Can't do this in create() because we're interested in // connections actually in use, not those created. Also note that // we keep our own count; ConnectionPool::size() isn't the same! mysqlpp::Connection* grab() { while (conns_in_use_ > 8) { cout.put('R'); cout.flush(); // indicate waiting for release sleep(1); } ++conns_in_use_; return mysqlpp::ConnectionPool::grab(); } // Other half of in-use conn count limit void release(const mysqlpp::Connection* pc) { mysqlpp::ConnectionPool::release(pc); --conns_in_use_; } protected: // Superclass overrides mysqlpp::Connection* create() { // Create connection using the parameters we were passed upon // creation. This could be something much more complex, but for // the purposes of the example, this suffices. cout.put('C'); cout.flush(); // indicate connection creation return new mysqlpp::Connection( db_.empty() ? 0 : db_.c_str(), server_.empty() ? 0 : server_.c_str(), user_.empty() ? 0 : user_.c_str(), password_.empty() ? "" : password_.c_str()); } void destroy(mysqlpp::Connection* cp) { // Our superclass can't know how we created the Connection, so // it delegates destruction to us, to be safe. cout.put('D'); cout.flush(); // indicate connection destruction delete cp; } unsigned int max_idle_time() { // Set our idle time at an example-friendly 3 seconds. A real // pool would return some fraction of the server's connection // idle timeout instead. return 3; } private: // Number of connections currently in use unsigned int conns_in_use_; // Our connection parameters std::string db_, server_, user_, password_; }; SimpleConnectionPool* poolptr = 0; static thread_return_t CALLBACK_SPECIFIER worker_thread(thread_arg_t running_flag) { // Ask the underlying C API to allocate any per-thread resources it // needs, in case it hasn't happened already. In this particular // program, it's almost guaranteed that the safe_grab() call below // will create a new connection the first time through, and thus // allocate these resources implicitly, but there's a nonzero chance // that this won't happen. Anyway, this is an example program, // meant to show good style, so we take the high road and ensure the // resources are allocated before we do any queries. mysqlpp::Connection::thread_start(); cout.put('S'); cout.flush(); // indicate thread started // Pull data from the sample table a bunch of times, releasing the // connection we use each time. for (size_t i = 0; i < 6; ++i) { // Go get a free connection from the pool, or create a new one // if there are no free conns yet. Uses safe_grab() to get a // connection from the pool that will be automatically returned // to the pool when this loop iteration finishes. mysqlpp::ScopedConnection cp(*poolptr, true); if (!cp) { cerr << "Failed to get a connection from the pool!" << endl; break; } // Pull a copy of the sample stock table and print a dot for // each row in the result set. mysqlpp::Query query(cp->query("select * from stock")); mysqlpp::StoreQueryResult res = query.store(); for (size_t j = 0; j < res.num_rows(); ++j) { cout.put('.'); } // Delay 1-4 seconds before doing it again. Because this can // delay longer than the idle timeout, we'll occasionally force // the creation of a new connection on the next loop. sleep(rand() % 4 + 1); } // Tell main() that this thread is no longer running *reinterpret_cast(running_flag) = false; cout.put('E'); cout.flush(); // indicate thread ended // Release the per-thread resources before we exit mysqlpp::Connection::thread_end(); return 0; } #endif int main(int argc, char *argv[]) { #if defined(HAVE_THREADS) // Get database access parameters from command line mysqlpp::examples::CommandLine cmdline(argc, argv); if (!cmdline) { return 1; } // Create the pool and grab a connection. We do it partly to test // that the parameters are good before we start doing real work, and // partly because we need a Connection object to call thread_aware() // on to check that it's okay to start doing that real work. This // latter check should never fail on Windows, but will fail on most // other systems unless you take positive steps to build with thread // awareness turned on. See README-*.txt for your platform. poolptr = new SimpleConnectionPool(cmdline); try { mysqlpp::ScopedConnection cp(*poolptr, true); if (!cp->thread_aware()) { cerr << "MySQL++ wasn't built with thread awareness! " << argv[0] << " can't run without it." << endl; return 1; } } catch (mysqlpp::Exception& e) { cerr << "Failed to set up initial pooled connection: " << e.what() << endl; return 1; } // Setup complete. Now let's spin some threads... cout << endl << "Pool created and working correctly. Now to do " "some real work..." << endl; srand((unsigned int)time(0)); bool running[] = { true, true, true, true, true, true, true, true, true, true, true, true, true, true }; const size_t num_threads = sizeof(running) / sizeof(running[0]); size_t i; for (i = 0; i < num_threads; ++i) { if (int err = create_thread(worker_thread, running + i)) { cerr << "Failed to create thread " << i << ": error code " << err << endl; return 1; } } // Test the 'running' flags every second until we find that they're // all turned off, indicating that all threads are stopped. cout.put('W'); cout.flush(); // indicate waiting for completion do { sleep(1); i = 0; while (i < num_threads && !running[i]) ++i; } while (i < num_threads); cout << endl << "All threads stopped!" << endl; // Shut it all down... delete poolptr; cout << endl; #else (void)argc; // warning squisher cout << argv[0] << " requires that threads be enabled!" << endl; #endif return 0; } mysql++-3.3.0/doc/userman/Makefile.hello.mingw000755 000765 000024 00000000435 14042362131 021715 0ustar00tangentstaff000000 000000 SHELL := $(COMSPEC) MYSQL_DIR := "c:/Program Files/MySQL/MySQL Connector C 6.1" CXXFLAGS := -I$(MYSQL_DIR)/include -Ic:/MySQL++/include LDFLAGS := -L$(MYSQL_DIR)/lib -Lc:/MySQL++/lib/MinGW LDLIBS := -lmysql -lmysqlpp EXECUTABLE := hello all: $(EXECUTABLE) clean: del $(EXECUTABLE) mysql++-3.3.0/doc/userman/fo2pdf000755 000765 000024 00000001661 14042362131 017140 0ustar00tangentstaff000000 000000 #!/bin/bash AHCMD=/usr/XSLFormatterV42/run.sh FOPCMD=$(type -p fop) XEPCMD=/usr/local/xep/xep FOFILE=$1 PDFFILE=$2 if [ -n "$FOFILE" -a -r "$FOFILE" -a -n "$PDFFILE" ] then if [ -x "$XEPCMD" ] then echo Rendering $FOFILE to $PDFFILE with RenderX XEP... $XEPCMD -quiet -fo $FOFILE -pdf $PDFFILE elif [ -x "$AHCMD" ] then echo Rendering $FOFILE to $PDFFILE with Antenna House XSL Formatter... $AHCMD -silent -d $FOFILE -o $PDFFILE elif [ -x "$FOPCMD" ] then echo "Rendering $FOFILE to $PDFFILE with Apache FOP ($FOPCMD)..." $FOPCMD -q -fo $FOFILE $PDFFILE else echo 'Cannot find a working XSL-FO processor on your system! See' echo 'doc/usrman/README.txt for instructions on installing one.' echo exit 1 fi else if [ -n "$FOFILE" ] then echo "XSL-FO file $FOFILE does not exist." echo fi echo "usage: $0 fofile pdffile" echo echo ' Translates XSL-FO in fofile to PDF output in pdffile.' echo exit 1 fi mysql++-3.3.0/doc/userman/xinclude.mod000644 000765 000024 00000001141 14042362131 020337 0ustar00tangentstaff000000 000000 mysql++-3.3.0/doc/userman/intro.dbx000644 000765 000024 00000014276 14042362131 017672 0ustar00tangentstaff000000 000000 Introduction MySQL++ is a powerful C++ wrapper for MySQL’s C APIThe MySQL C API is also known as Connector/C.. Its purpose is to make working with queries as easy as working with STL containers. The latest version of MySQL++ can be found at the official web site. Support for MySQL++ can be had on the mailing list. That page hosts the mailing list archives, and tells you how you can subscribe. A Brief History of MySQL++ MySQL++ was created in 1998 by Kevin Atkinson. It started out MySQL-specific, but there were early efforts to try and make it database-independent, and call it SQL++. This is where the old library name “sqlplus” came from. This is also why the old versions prefixed some class names with “Mysql” but not others: the others were supposed to be the database-independent parts. All of Kevin’s releases had pre-1.0 version numbers. Then in 1999, MySQL AB took over development of the library. In the beginning, Monty Widenius himself did some of the work, but later gave it over to another MySQL employee, Sinisa Milivojevic. MySQL released versions 1.0 and 1.1, and then Kevin gave over maintenance to Sinisa officially with 1.2, and ceased to have any involvement with the library’s maintenance. Sinisa went on to maintain the library through 1.7.9, released in mid-2001. It seems to be during this time that the dream of multiple-database compatibility died, for obvious reasons. With version 1.7.9, MySQL++ went into a period of stasis, lasting over three years. (Perhaps it was the ennui and retrenchment following the collapse of the bubble that caused them to lose interest.) During this time, Sinisa ran the MySQL++ mailing list and supported its users, but made no new releases. Contributed patches were either ignored or put up on the MySQL++ web site for users to try, without any official blessing. The biggest barrier to using MySQL++ during this period is that the popular C++ compilers of 2001 weren’t all that compatible with the C++ Standard. As a result, MySQL++ used many nonstandard constructs, to allow for compatibility with older compilers. Each new compiler released in the following years increased compliance, either warning about or rejecting code using pre-Standard constructs. In particular, GCC was emerging from the mess following the EGCS fork during this time. The fork was healed officially in 1999, but there’s always a delay of a few years between the release of a new GCC and widespread adoption. The post-EGCS versions of GCC were only beginning to become popular by 2001, when development on MySQL++ halted. As a result, it became increasingly difficult to get MySQL++ to build cleanly as newer compilers came out. Since MySQL++ uses templates heavily, this affected end user programs as well: MySQL++ code got included directly in your program, so any warnings or errors it caused became your program’s problem. As a result, most of the patches contributed to the MySQL++ project during this period were to fix up standards compliance issues. Because no one was bothering to officially test and bless these patches, you ended up with the worst aspects of a bazaar development model: complete freedom of development, but no guiding hand to select from the good stuff and reject the rest. Many of the patches were mutually incompatible. Some would build upon other patches, so you had to apply them in the proper sequence. Others did useful things, but didn’t give a fully functional copy of MySQL++. Figuring out which patch(es) to use was an increasingly frustrating exercise as the years wore on, and newer GCCs became popular. In early August of 2004, Warren Young got fed up with this situation and took over. He released 1.7.10 later that month, which did little more than make the code build with GCC 3.3 without warnings. Since then, with a little help from his friends on the Net, MySQL++ has lost a lot of bugs, gained a lot of features, gained a few more bugs, lost them again... MySQL++ is alive and healthy now. If You Have Questions... If you want to email someone to ask questions about this library, we greatly prefer that you send mail to the MySQL++ mailing list. The mailing list is archived, so if you have questions, do a search to see if the question has been asked before. You may find people’s individual email addresses in various files within the MySQL++ distribution. Please do not send mail to them unless you are sending something that is inherently personal. Not all of the principal developers of MySQL++ are still active in its development; those who have dropped out have no wish to be bugged about MySQL++. Those of us still active in MySQL++ development monitor the mailing list, so you aren’t getting any extra “coverage” by sending messages to additional email addresses. mysql++-3.3.0/doc/userman/tquery.dbx000644 000765 000024 00000021243 14042362131 020060 0ustar00tangentstaff000000 000000 Template Queries Another powerful feature of MySQL++ is being able to set up template queries. These are kind of like C’s printf() facility: you give MySQL++ a string containing the fixed parts of the query and placeholders for the variable parts, and you can later substitute in values into those placeholders. The following program demonstrates how to use this feature. This is examples/tquery1.cpp: The line just before the call to query.parse() sets the template, and the parse call puts it into effect. From that point on, you can re-use this query by calling any of several Query member functions that accept query template parameters. In this example, we’re using Query::execute(). Let’s dig into this feature a little deeper. Setting up Template Queries To set up a template query, you simply insert it into the Query object, using numbered placeholders wherever you want to be able to change the query. Then, you call the parse() function to tell the Query object that the query string is a template query, and it needs to parse it: query << "select (%2:field1, %3:field2) from stock where %1:wheref = %0q:what"; query.parse(); The format of the placeholder is: %###(modifier)(:name)(:) Where “###” is a number up to three digits. It is the order of parameters given to a object, starting from 0. “modifier” can be any one of the following:
% Print an actual “%” "" Don’t quote or escape no matter what. q This will escape the item using the MySQL C API function and add single quotes around it as necessary, depending on the type of the value you use. Q Quote but don’t escape based on the same rules as for “q”. This can save a bit of processing time if you know the strings will never need quoting
“:name” is for an optional name which aids in filling SQLQueryParms. Name can contain any alpha-numeric characters or the underscore. You can have a trailing colon, which will be ignored. If you need to represent an actual colon after the name, follow the name with two colons. The first one will end the name and the second one won’t be processed.
Setting the Parameters at Execution Time To specify the parameters when you want to execute a query simply use Query::store(const SQLString &parm0, [..., const SQLString &parm11]). This type of multiple overload also exists for Query::storein(), Query::use() and Query::execute(). “parm0” corresponds to the first parameter, etc. You may specify up to 25 parameters. For example: StoreQueryResult res = query.store("Dinner Rolls", "item", "item", "price") with the template query provided above would produce: select (item, price) from stock where item = "Dinner Rolls" The reason we didn’t put the template parameters in numeric order... select (%0:field1, %1:field2) from stock where %2:wheref = %3q:what ...will become apparent shortly. Default Parameters The template query mechanism allows you to set default parameter values. You simply assign a value for the parameter to the appropriate position in the Query::template_defaults array. You can refer to the parameters either by position or by name: query.template_defaults[1] = "item"; query.template_defaults["wheref"] = "item"; Both do the same thing. This mechanism works much like C++’s default function parameter mechanism: if you set defaults for the parameters at the end of the list, you can call one of Query’s query execution methods without passing all of the values. If the query takes four parameters and you’ve set defaults for the last three, you can execute the query using as little as just one explicit parameter. Now you can see why we numbered the template query parameters the way we did a few sections earlier. We ordered them so that the ones less likely to change have higher numbers, so we don’t always have to pass them. We can just give them defaults and take those defaults when applicable. This is most useful when some parameters in a template query vary less often than other parameters. For example: query.template_defaults["field1"] = "item"; query.template_defaults["field2"] = "price"; StoreQueryResult res1 = query.store("Hamburger Buns", "item"); StoreQueryResult res2 = query.store(1.25, "price"); This stores the result of the following queries in res1 and res2, respectively: select (item, price) from stock where item = "Hamburger Buns" select (item, price) from stock where price = 1.25 Default parameters are useful in this example because we have two queries to issue, and parameters 2 and 3 remain the same for both, while parameters 0 and 1 vary. Some have been tempted into using this mechanism as a way to set all of the template parameters in a query: query.template_defaults["what"] = "Hamburger Buns"; query.template_defaults["wheref"] = "item"; query.template_defaults["field1"] = "item"; query.template_defaults["field2"] = "price"; StoreQueryResult res1 = query.store(); This can work, but it is not designed to. In fact, it’s known to fail horribly in one common case. You will not get sympathy if you complain on the mailing list about it not working. If your code doesn’t actively reuse at least one of the parameters in subsequent queries, you’re abusing MySQL++, and it is likely to take its revenge on you. Error Handling If for some reason you did not specify all the parameters when executing the query and the remaining parameters do not have their values set via Query::template_defaults, the query object will throw a object. If this happens, you can get an explanation of what happened by calling BadParamCount::what(), like so: query.template_defaults["field1"] = "item"; query.template_defaults["field2"] = "price"; StoreQueryResult res = query.store(1.25); This would throw BadParamCount because the wheref is not specified. In theory, this exception should never be thrown. If the exception is thrown it probably a logic error in your program.
mysql++-3.3.0/doc/userman/resetdb.txt000644 000765 000024 00000015561 14042362131 020227 0ustar00tangentstaff000000 000000 #include "cmdline.h" #include "printdata.h" #include #include #include using namespace std; // Pull in the sample database name from the cmdline module. extern const char* kpcSampleDatabase; // Convert a packed version number in the format used within MySQL++ // to a printable string. static string version_str(int packed) { char buf[9]; snprintf(buf, sizeof(buf), "%d.%d.%d", (packed & 0xFF0000) >> 16, (packed & 0x00FF00) >> 8, (packed & 0x0000FF)); return buf; } int main(int argc, char *argv[]) { // Ensure that we're not mixing library and header file versions. // This is really easy to do if you have MySQL++ on your system and // are trying to build a new version, and run the examples directly // instead of through exrun. if (mysqlpp::get_library_version() != MYSQLPP_HEADER_VERSION) { cerr << "Version mismatch: library is v" << version_str(mysqlpp::get_library_version()) << ", headers are v" << version_str(MYSQLPP_HEADER_VERSION) << ". Are you running this" << endl << "with exrun? See README.examples." << endl; return 1; } // Get connection parameters from command line mysqlpp::examples::CommandLine cmdline(argc, argv); if (!cmdline) { return 1; } // Connect to database server mysqlpp::Connection con; try { if (cmdline.dtest_mode()) { cout << "Connecting to database server..." << endl; } else { const char* u = cmdline.user() ? cmdline.user() : ""; const char* s = cmdline.server() ? cmdline.server() : "localhost"; cout << "Connecting to '" << u << "'@'" << s << "', with" << (cmdline.pass() && cmdline.pass()[0] ? "" : "out") << " password..." << endl; } con.connect(0, cmdline.server(), cmdline.user(), cmdline.pass()); } catch (exception& er) { cerr << "Connection failed: " << er.what() << endl; return 1; } // Create new sample database, or re-create it. We suppress // exceptions, because it's not an error if DB doesn't yet exist. bool new_db = false; { mysqlpp::NoExceptions ne(con); mysqlpp::Query query = con.query(); if (con.select_db(mysqlpp::examples::db_name)) { // Toss old tables, ignoring errors because it would just // mean the table doesn't exist, which doesn't matter. cout << "Dropping existing sample data tables..." << endl; query.exec("drop table stock"); query.exec("drop table images"); query.exec("drop table deadlock_test1"); query.exec("drop table deadlock_test2"); } else { // Database doesn't exist yet, so create and select it. if (con.create_db(mysqlpp::examples::db_name) && con.select_db(mysqlpp::examples::db_name)) { new_db = true; } else { cerr << "Error creating DB: " << con.error() << endl; return 1; } } } // Create sample data table within sample database. try { // Send the query to create the stock table and execute it. cout << "Creating stock table..." << endl; mysqlpp::Query query = con.query(); query << "CREATE TABLE stock (" << " item CHAR(30) NOT NULL, " << " num BIGINT NOT NULL, " << " weight DOUBLE NOT NULL, " << " price DECIMAL(6,2) NULL, " << // NaN & inf. == NULL " sdate DATE NOT NULL, " << " description MEDIUMTEXT NULL) " << "ENGINE = InnoDB" << " CHARACTER SET " MYSQLPP_UTF8_CS " COLLATE " MYSQLPP_UTF8_COL; query.execute(); // Set up the template query to insert the data. The parse() // call tells the query object that this is a template and // not a literal query string. query << "insert into %6:table values " << "(%0q, %1q, %2, %3, %4q, %5q:desc)"; query.parse(); // Set a default for template query parameters "table" and "desc". query.template_defaults["table"] = "stock"; query.template_defaults["desc"] = mysqlpp::null; // Notice that we don't give a sixth parameter in these calls, // so the default value of "stock" is used. Also notice that // the first row is a UTF-8 encoded Unicode string! All you // have to do to store Unicode data in recent versions of MySQL // is use UTF-8 encoding. cout << "Populating stock table..." << flush; query.execute("Nürnberger Brats", 97, 1.5, 8.79, "2005-03-10"); query.execute("Pickle Relish", 87, 1.5, 1.75, "1998-09-04"); query.execute("Hot Mustard", 73, .95, .97, "1998-05-25", "good American yellow mustard, not that European stuff"); query.execute("Hotdog Buns", 65, 1.1, 1.1, "1998-04-23"); // Test that above did what we wanted. cout << "inserted " << con.count_rows("stock") << " rows." << endl; // Now create empty images table, for testing BLOB and auto- // increment column features. cout << "Creating empty images table..." << endl; query.reset(); // forget template query info query << "CREATE TABLE images (" << " id INT UNSIGNED AUTO_INCREMENT, " << " data BLOB, " << " PRIMARY KEY (id)" << ")"; query.execute(); // Create the tables used by examples/deadlock.cpp cout << "Creating deadlock testing tables..." << endl; query.execute("CREATE TABLE deadlock_test1 (x INT) ENGINE=innodb"); query.execute("CREATE TABLE deadlock_test2 (x INT) ENGINE=innodb"); query.execute("INSERT INTO deadlock_test1 VALUES (1);"); query.execute("INSERT INTO deadlock_test2 VALUES (2);"); // Report success cout << (new_db ? "Created" : "Reinitialized") << " sample database successfully." << endl; } catch (const mysqlpp::BadQuery& er) { // Handle any query errors cerr << endl << "Query error: " << er.what() << endl; return 1; } catch (const mysqlpp::BadConversion& er) { // Handle bad conversions cerr << endl << "Conversion error: " << er.what() << endl << "\tretrieved data size: " << er.retrieved << ", actual size: " << er.actual_size << endl; return 1; } catch (const mysqlpp::Exception& er) { // Catch-all for any other MySQL++ exceptions cerr << endl << "Error: " << er.what() << endl; return 1; } return 0; } mysql++-3.3.0/doc/userman/configuration.dbx000644 000765 000024 00000022225 14042362131 021377 0ustar00tangentstaff000000 000000 Configuring MySQL++ The default configuration of MySQL++ is suitable for most purposes, but there are a few things you can change to make it meet special needs. The Location of the MySQL Development Files MySQL++ is built on top of the MySQL C API. (Now called Connector/C.) MySQL++ relies on this low-level library for all communication with the database server. Consequently, the build process for MySQL++ may fail if it can’t find the C API headers and library. On platforms that use AutoconfLinux, Solaris, the BSDs, Mac OS X command line (as opposed to the Xcode IDE), Cygwin... Basically, Unix or anything that works like it., the configure script can usually figure out the location of the C API development files by itselfI don’t say “Connector/C” here because the name change generally hasn’t percolated out to Unixy systems. It’s more commonly used on Windows systems, since the separate Connector/C download lets them avoid installing a MySQL server just to get development headers and libraries. It simply tries a bunch of common installation locations until it finds one that works. If your MySQL server was installed in a nonstandard location, you will have to tell the configure script where these files are with some combination of the --with-mysql, --with-mysql-include, and --with-mysql-lib flags. See README-Unix.txt for details. No other platform allows this sort of auto-discovery, so the build files for these platforms simply hard-code the default installation location for the current GA version of Connector/C at the time that version of MySQL++ was released. For example, the Visual C++ project files currently assume MySQL is in c:\Program Files\MySQL\MySQL Server 5.1. If you’re using some other release of MySQL or you installed it somewhere else, you will have to modify the build files. How you do this, exactly, varies based on platform and what tools you have on hand. See README-Visual-C++.txt, README-MinGW.txt, or README-Mac-OS-X.txt, as appropriate. The Maximum Number of Fields Allowed MySQL++ offers two ways to automatically build SQL queries at run time: and SSQLS. There’s a limit on the number of fields these mechanisms support, defaulting to 25 fields in the official MySQL++ packages.If you’re using a third-party MySQL++ package, its maintainer may have increased these field counts so the resulting headers more closely approach the size limit of the compiler the package was built with. In that case, you can look at the top of each generated header file to find out how many fields each supports. The files embodying these limits are lib/querydef.h and lib/ssqls.h, each generated by Perl scripts of the same name but with a .pl extension. The default querydef.h is small and its size only increases linearly with respect to maximum field count. ssqls.h is a totally different story. The default 25 field limit makes ssqls.pl generate an ssqls.h over 1 MB. Worse, the field limit to file size relation is quadratic.The file size equation, for you amateur mathematicians out there, is Nlines = 18.5f2 + 454.5f + 196.4, where f is the field count. This has a number of bad effects: Generating header files to support more fields than you actually require is a waste of space and bandwidth. Some compilers have arbitrary limits on the size of macros they’re able to parse. Exceeding these limits usually causes the compiler to misbehave badly, rather than fail gracefully. Because it increases the size of two key files used in building MySQL++ itself and programs built on it, it increases compile times significantly. One test I did here showed a tripling of compile time from quadrupling the field limit. More than 25 fields in a table is a good sign of a bad database design, most likely a denormalization problem. The default limits try to mitigate against all of these factors while still being high enough to be useful with most DB designs. If you’re building MySQL++ from source on a platform that uses Autoconf, the easiest way to change these limits is at configuration time: ./configure --with-field-limit=50 That causes the configuration script to pass the -f flag to the two Perl scripts named above, overriding the default of 25 fields. Obviously you need a Perl interpreter on the system for this to work, but Perl is usually installed by default on systems MySQL++ supports via Autoconf. On all other platforms, you’ll have to give the -f flag to these scripts yourself. This may require installing Perl and putting it in the command path first. Having done that, you can do something like this to raise the limits: cd lib perl ssqls.pl -f 50 perl querydef.pl -f 50 Note the need to run these commands within the lib subdirectory of the MySQL++ source tree. (This is done for you automatically on systems where you are able to use the Autoconf method.) Buried MySQL C API Headers It’s common these days on Unixy systems to install the MySQL C API headers in a mysql directory under some common include directory. If the C API headers are in /usr/include/mysql, we say they are “buried” underneath the system’s main include directory, /usr/include. Since the MySQL++ headers depend on these C API headers, it can be useful for MySQL++ to know this fact. When MySQL++ includes one of the C API headers, it normally does so in the obvious way: #include <mysql.h> But, if you define the MYSQLPP_MYSQL_HEADERS_BURIED macro, it switches to this style: #include <mysql/mysql.h> In common situations like the /usr/include/mysql one, this simplifies the include path options you pass to your compiler. Building MySQL++ on Systems Without Complete C99 Support MySQL++ uses the C99 header stdint.h for portable fixed-size integer typedefs where possible. The C99 extensions aren’t yet officially part of the C++ Standard, so there are still some C++ compilers that don’t offer this header. MySQL++ works around the lack of this header where it knows it needs to, but your platform might not be recognized, causing the build to break. If this happens, you can define the MYSQLPP_NO_STDINT_H macro to make MySQL++ use its best guess for suitable integer types instead of relying on stdint.h. MySQL++ also uses C99’s long long data type where available. MySQL++ has workarounds for platforms where this is known not to be available, but if you get errors in common.h about this type, you can define the macro MYSQLPP_NO_LONG_LONGS to make MySQL++ fall back to portable constructs. mysql++-3.3.0/doc/userman/LICENSE.txt000644 000765 000024 00000004062 14042362131 017653 0ustar00tangentstaff000000 000000 MySQL++ User Manual License ~~~~~~~~~~~~~~~~~~~~~~~~~~~ I. COPYRIGHT The copyright to the MySQL++ User Manual is owned by its authors. II. LICENSE The MySQL++ User Manual may be reproduced and distributed in whole or in part, in any medium physical or electronic, provided that this license notice is displayed in the reproduction. Commercial redistribution is permitted and encouraged. Thirty days advance notice via email to the authors of redistribution is appreciated, to give the authors time to provide updated documents. A. REQUIREMENTS OF MODIFIED WORKS All modified documents, including translations, anthologies, and partial documents, must meet the following requirements: 1. The modified version must be labeled as such. 2. The person making the modifications must be identified. 3. Acknowledgement of the original author must be retained. 4. The location of the original unmodified document be identified. 5. The original authors' names may not be used to assert or imply endorsement of the resulting document without the original authors' permission. In addition it is requested that: 1. The modifications (including deletions) be noted. 2. The authors be notified by email of the modification in advance of redistribution, if an email address is provided in the document. Mere aggregation of the MySQL++ User Manual with other documents or programs on the same media shall not cause this license to apply to those other works. All translations, derivative documents, or modified documents that incorporate the MySQL++ User Manual may not have more restrictive license terms than these, except that you may require distributors to make the resulting document available in source format. mysql++-3.3.0/doc/userman/tutorial.dbx000644 000765 000024 00000214677 14042362131 020411 0ustar00tangentstaff000000 000000 Tutorial The previous chapter introduced the major top-level mechanisms in MySQL++. Now we’ll dig down a little deeper and get into real examples. We start off with the basics that every MySQL++ program will have to deal with, then work up to more complex topics that are still widely interesting. You can stop reading the manual after this chapter and still get a lot out of MySQL++, ignoring the more advanced parts we present in later chapters. Running the Examples All of the examples are complete running programs. If you built the library from source, the examples should have been built as well. If you use RPMs instead, the example programs’ source code and a simplified Makefile are in the mysql++-devel package. They are typically installed in /usr/share/doc/mysql++-devel-*/examples, but it can vary on different Linuxes. Before you get started, please read through any of the README*.txt files included with the MySQL++ distribution that are relevant to your platform. We won’t repeat all of that here. Most of the examples require a test database, created by resetdb. You can run it like so: resetdb [-s server_addr] [-u user] [-p password] Actually, there’s a problem with that. It assumes that the MySQL++ library is already installed in a directory that the operating system’s dynamic linker can find. (MySQL++ is almost never built statically.) Unless you’re installing from RPMs, you’ve had to build the library from source, and you should run at least a few of the examples before installing the library to be sure it’s working correctly. Since your operating system’s dynamic linkage system can’t find the MySQL++ libraries without help until they’re installed, we’ve created a few helper scripts to help run the examples. MySQL++ comes with the exrun shell script for Unixy systems, and the exrun.bat batch file for Windows. You pass the example program and its arguments to the exrun helper, which sets up the library search path so that it will use the as-yet uninstalled version of the MySQL++ library in preference to any other on your system: ./exrun resetdb [-s server_addr] [-u user] [-p password] That’s the typical form for a Unixy system. You leave off the ./ bit on Windows. You can leave it off on a Unixy system, too, if you have . in your PATH. (Not a recommendation, just an observation.) All of the program arguments are optional. If you don’t give , the underlying MySQL C API (a.k.a. Connector/C) assumes the server is on the local machine. It chooses one of several different IPC options based on the platform configuration. There are many different forms you can give as server_addr with to override this default behavior: localhost — this is the default; it doesn’t buy you anything On Windows, a simple period tells the underlying MySQL C API to use named pipes, if it’s available. 172.20.0.252:12345 — this would connect to IP address 172.20.0.252 on TCP port 12345. my.server.name:svc_name — this would first look up TCP service name svc_name in your system’s network services database (/etc/services on Unixy systems, and something like c:\windows\system32\drivers\etc\services on modern Windows variants). If it finds an entry for the service, it then tries to connect to that port on the domain name given. For the TCP forms, you can mix names and numbers for the host and port/service parts in any combination. If the server name doesn’t contain a colon, it uses the default port, 3306. If you don’t give , it assumes your user name on the database server is the same as your login name on the local machine. If you don’t give , it will assume the MySQL user doesn’t have a password. (One hopes this isn’t the case...) When running resetdb, the user name needs to be for an account with permission to create the test database. Once the database is created, you can use any account when running the other examples that has DELETE, INSERT, SELECT and UPDATE permissions for the test database. The MySQL root user can do all this, of course, but you might want to set up a separate user, having only the permissions necessary to work with the test database: CREATE USER mysqlpp_test@'%' IDENTIFIED BY ’nunyabinness'; GRANT ALL PRIVILEGES ON mysql_cpp_data.* TO mysqlpp_test@'%'; You could then create the sample database with the following command: ./exrun resetdb -u mysqlpp_test -p nunyabinness (Again, leave off the ./ bit on Windows.) You may have to re-run resetdb after running some of the other examples, as they change the database. See README-examples.txt for more details on running the examples. A Simple Example The following example demonstrates how to open a connection, execute a simple query, and display the results. This is examples/simple1.cpp: This example simply gets the entire "item" column from the example table, and prints those values out. Notice that MySQL++’s derives from std::vector, and provides an interface that makes it a vector work-alike. This means you can access elements with subscript notation, walk through them with iterators, run STL algorithms on them, etc. Row provides a little more in this area than a plain old vector: you can also access fields by name using subscript notation. The only thing that isn’t explicit in the code above is that we delegate command line argument parsing to parse_command_line() in the excommon module. This function exists to give the examples a consistent interface, not to hide important details. You can treat it like a black box: it takes argc and argv as inputs and sends back database connection parameters. A More Complicated Example The simple1 example above was pretty trivial. Let’s get a little deeper. Here is examples/simple2.cpp: The main point of this example is that we’re accessing fields in the row objects by name, instead of index. This is slower, but obviously clearer. We’re also printing out the entire table, not just one column. Exceptions By default, MySQL++ uses exceptions to signal errors. We’ve been suppressing this in all the examples so far by passing false to Connection’s constructor. This kept these early examples simple at the cost of some flexibility and power in error handling. In a real program, we recommend that you leave exceptions enabled. You do this by either using the default Connection constructor, or by using the create-and-connect constructor. All of MySQL++’s custom exceptions derive from a common base class, . That in turn derives from Standard C++’s std::exception class. Since the library can indirectly cause exceptions to come from the Standard C++ Library, it’s possible to catch all exceptions from MySQL++ by just catching std::exception. However, it’s better to have individual catch blocks for each of the concrete exception types that you expect, and add a handler for either Exception or std::exception to act as a “catch-all” for unexpected exceptions. When exceptions are suppressed, MySQL++ signals errors by returning either an error code or an object that tests as false, or by setting an error flag on the object. Classes that allow you to suppress exceptions derive from the interface. When an OptionalExceptions derivative creates another object that also derives from this interface, it passes on its exception flag. Since everything flows from the object, disabling exceptions on it at the start of the program disables all optional exceptions. This is why passing false for the Connection constructor’s “throw exceptions” parameter suppresses all optional exceptions in the simple[1-3] examples. It keeps them, well, simple. This exception suppression mechanism is quite granular. It’s possible to leave exceptions enabled most of the time, but suppress them in sections of the code where they aren’t helpful. To do this, put the section of code that you want to not throw exceptions inside a block, and create a object at the top of that block. When created, it saves the exception flag of the OptionalExceptions derivative you pass to it, and then disables exceptions on it. When the NoExceptions object goes out of scope at the end of the block, it restores the exceptions flag to its previous state: mysqlpp::Connection con; // default ctor, so exceptions enabled { mysqlpp::NoExceptions ne(con); if (!con.select_db("a_db_that_might_not_exist_yet")) { // Our DB doesn’t exist yet, so create and select it here; no need // to push handling of this case way off in an exception handler. } } When one OptionalExceptions derivative passes its exceptions flag to another such object, it is only passing a copy; the two objects’ flags operate independently. There’s no way to globally enable or disable this flag on existing objects in a single call. If you’re using the NoExceptions feature and you’re still seeing optional exceptions thrown, you disabled exceptions on the wrong object. The exception thrower could be unrelated to the object you disabled exceptions on, it could be its parent, or it could be a child created before you disabled optional exceptions. MySQL++ throws some exceptions unconditionally: MySQL++ checks array indices, always. For instance, if your code said “row[21]” on a row containing only 5 fields, you’d get a BadIndex exception. If you say “row["fred"]” on a row without a “fred” field, you get a BadFieldName exception. In the past, MySQL++ delegated some of its index checking to the STL containers underpinning it, so you could get std::range_error instead. As of MySQL++ v3.0.7, this should no longer happen, but there may be instances where it still does. will always throw when you ask it to do an improper type conversion. For example, you’ll get an exception if you try to convert “1.25” to int, but not when you convert “1.00” to int. In the latter case, MySQL++ knows that it can safely throw away the fractional part. If you use template queries and don’t pass enough parameters when instantiating the template, Query will throw a exception. If you use a C++ data type in a query that MySQL++ doesn’t know to convert to SQL, MySQL++ will throw a exception. It typically happens with , especially when using data types other than the ones defined in lib/sql_types.h. It’s educational to modify the examples to force exceptions. For instance, misspell a field name, use an out-of-range index, or change a type to force a String conversion error. Quoting and Escaping SQL syntax often requires certain data to be quoted. Consider this query: SELECT * FROM stock WHERE item = 'Hotdog Buns' Because the string “Hotdog Buns” contains a space, it must be quoted. With MySQL++, you don’t have to add these quote marks manually: string s = "Hotdog Buns"; query << "SELECT * FROM stock WHERE item = " << quote_only << s; That code produces the same query string as in the previous example. We used the MySQL++ quote_only manipulator, which causes single quotes to be added around the next item inserted into the stream. This works for any type of data that can be converted to MySQL++’s SQLTypeAdapter type, plus the template. SSQLS also uses these manipulators internally. Quoting is pretty simple, but SQL syntax also often requires that certain characters be “escaped”. Imagine if the string in the previous example was “Frank’s Brand Hotdog Buns” instead. The resulting query would be: SELECT * FROM stock WHERE item = 'Frank's Brand Hotdog Buns' That’s not valid SQL syntax. The correct syntax is: SELECT * FROM stock WHERE item = 'Frank''s Brand Hotdog Buns' As you might expect, MySQL++ provides that feature, too, through its escape manipulator. But here, we want both quoting and escaping. That brings us to the most widely useful manipulator: string s = "Frank’s Brand Hotdog Buns"; query << "SELECT * FROM stock WHERE item = " << quote << s; The quote manipulator both quotes strings and escapes any characters that are special in SQL. MySQL++ provides other manipulators as well. See the manip.h page in the reference manual. It’s important to realize that MySQL++’s quoting and escaping mechanism is type-aware. Manipulators have no effect unless you insert the manipulator into a Query or SQLQueryParms stream. SQLQueryParms is used as a stream only as an implementation detail within the library. End user code simply sees it as a std::vector derivative. Also, values are only quoted and/or escaped if they are of a data type that may need it. For example, Date must be quoted but never needs to be escaped, and integer types need neither quoting nor escaping. Manipulators are suggestions to the library, not commands: MySQL++ will ignore these suggestions if it knows it won’t result in syntactically-incorrect SQL. It’s also important to realize that quoting and escaping in Query streams and template queries is never implicit.By contrast, the Query methods that take an SSQLS do add quotes and escape strings implicitly. It can do this because SSQLS knows all the SQL code and data types, so it never has to guess whether quoting or escaping is appropriate. You must use manipulators and template query flags as necessary to tell MySQL++ where quoting and escaping is necessary. It would be nice if MySQL++ could do quoting and escaping implicitly based on data type, but this isn’t possible in all cases.Unless you’re smarter than I am, you don’t immediately see why explicit manipulators are necessary. We can tell when quoting and escaping is not appropriate based on type, so doesn’t that mean we know when it is appropriate? Alas, no. For most data types, it is possible to know, or at least make an awfully good guess, but it’s a complete toss-up for C strings, const char*. A C string could be either a literal string of SQL code, or it can be a value used in a query. Since there’s no easy way to know and it would damage the library’s usability to mandate that C strings only be used for one purpose or the other, the library requires you to be explicit. Since MySQL++ can’t reliably guess when quoting and escaping is appropriate, and the programmer doesn’t need toOne hopes the programmer knows., MySQL++ makes you tell it. C++ vs. SQL Data Types The C++ and SQL data type systems have several differences that can cause problems when using MySQL++, or any other SQL based system, for that matter. Most of the data types you can store in a SQL database are either numbers or text strings. If you’re only looking at the data going between the database server and your application, there aren’t even numbers: SQL is a textual language, so numbers and everything else gets transferred between the client and the database server in text string form.Yes, we’re aware that there is a feature in MySQL that lets you transfer row data in a binary form, but we don’t support this yet. We may, someday, probably as an extension to SSQLS. The only real reason to do so is to shave off some of the data translation overhead, which is typically neglibible in practice, swamped by the far greater disk and network I/O overheads inherent in use of a client-server database system like MySQL. Consequently, MySQL++ has a lot of special support for text strings, and can translate to several C++ numeric data types transparently. Some people worry that this translation via an intermediate string form will cause data loss. Obviously the text string data types are immune from problems in this regard. We’re also confident that MySQL++ translates BLOB and integer data types losslessly. The biggest worry is with floating-point numbers. (The FLOAT and DOUBLE SQL data types.) We did have a problem with this in older versions of MySQL++, but we believe we fixed it completely in v3.0.2. No one has since proven data loss via this path. There is still a known problem SQL’s DECIMAL data type is a configurable-precision fixed-point number format. MySQL++ currently translates these to double, a floating-point data format, the closest thing available in the C++ type system. Since the main reason to use DECIMAL is to get away from the weird roundoff behavior of floating-point numbers, this could be viewed as a serious problem. The thing is, though, in all the years MySQL++ has been around, I don’t remember anyone actually complaining about it. Apparently there’s either no one using DECIMAL with MySQL++, or they’re ignoring any roundoff errors they get as a result. Until this wheel squeaks, it’s not likely to be greased. To fix this, we’ll have to create a new custom data type to hold such column values, which will be a lot of work for apparently little return. with the SQL DECIMAL type, which is somewhat related to the floating-point issue, but it’s apparently rarely encountered, which is why it hasn’t been fixed yet. The best way to avoid problems with data translation is to always use the special MySQL++ data types defined in lib/sql_types.h corresponding to your SQL schema. These typedefs begin with sql_ and end with a lowercase version of the standard SQL type name, with spaces replaced by underscores. There are variants ending in _null that wrap these base types so they’re compatible with SQL null. For instance, the SQL type TINYINT UNSIGNED NOT NULL is represented in MySQL++ by mysqlpp::sql_tinyint_unsigned. If you drop the NOT NULL part, the corresponding C++ type is mysqlpp::sql_tinyint_unsigned_null. MySQL++ doesn’t force you to use these typedefs. It tries to be flexible with regard to data conversions, so you could probably use int anywhere you use mysqlpp::sql_tinyint_unsigned, for example. That said, the MySQL++ typedefs give several advantages: Space efficiency: the MySQL++ types are no larger than necessary to hold the MySQL data. Portability: if your program has to run on multiple different system types (even just 32- and 64-bit versions of the same operating system and processor type) using the MySQL++ typedefs insulates your code from platform changes. Clarity: using C++ types named similarly to the SQL types reduces the risk of confusion when working with code in both languages at the same time. Compatibility: using the MySQL++ types ensures that data conversions between SQL and C++ forms are compatible. Naïve use of plain old C++ types can result in data truncation, exceptions, and worse. Type compatibility is important not just at the time you write your program, it also helps forward compatibility: we occasionally change the definitions of the MySQL++ typedefs to reduce the differences between the C++ and SQL type systems. We’ll be fixing the DECIMAL issue brought up above this way, for instance; if your program uses sql_decimal instead of the current underlying type, double, your program will pick up this improvement automatically with just a recompile. Most of these typedefs use standard C++ data types, but a few are aliases for a MySQL++ specific type. For instance, the SQL type DATETIME is mirrored in MySQL++ by mysqlpp::DateTime. For consistency, sql_types.h includes a typedef alias for DateTime called mysqlpp::sql_datetime. MySQL++ doesn’t have typedefs for the most exotic data types, like those for the geospatial types. Patches to correct this will be thoughtfully considered. Handling SQL Nulls Both C++ and SQL have things in them called NULL, but they differ in several ways. Consequently, MySQL++ has to provide special support for this, rather than just wrap native C++ facilities as it can with most data type issues. SQL NULL is a type modifier The primary distinction is one of type. In SQL, “NULL” is a type modifier, which affects whether you can legally store a null value in that column. There’s simply nothing like it in C++. To emulate SQL NULL, MySQL++ provides the Null template to allow the creation of distinct “nullable” versions of existing C++ types. So for example, if you have a TINYINT UNSIGNED column that can have nulls, the proper declaration for MySQL++ would be: mysqlpp::Null<mysqlpp::sql_tinyint_unsigned> myfield; As of MySQL++ 3.1, we also provide shorter aliases for such types: mysqlpp::sql_tinyint_unsigned_null myfield; These types are declared in lib/sql_types.h. You might want to scan through that to see what all is available. Template instantiations are first-class types in the C++ language, so there’s no possible confusion between this feature of MySQL++ and C++’s native NULL concept. SQL NULL is a unique value There’s a secondary distinction between SQL null and anything available in the standard C++ type system: SQL null is a distinct value, equal to nothing else. We can’t use C++’s NULL for this because it is ambiguous, being equal to 0 in integer context. MySQL++ provides the global null object, which you can assign to a Null template instance to make it equal to SQL null: myfield = mysqlpp::null; If you insert a MySQL++ field holding a SQL null into a C++ IOstream, you get “(NULL)”, something fairly unlikely to be in a normal output string, thus reasonably preserving the uniqueness of the SQL null value. MySQL++ also tries to enforce the uniqueness of the SQL null value at compile time in assignments and data conversions. If you try to store a SQL null in a field type that isn’t wrapped by Null or try to assign a Null-wrapped field value to a variable of the inner non-wrapped type, the compiler will emit some ugly error message, yelling about CannotConvertNullToAnyOtherDataType. (The exact message is compiler-dependent.) If you don’t like these behaviors, you can change them by passing a different value for the second parameter to template Null. By default, this parameter is , meaning that we should enforce the uniqueness of SQL null. To relax the distinctions, you can instantiate the Null template with a different behavior type: or . Consider this code: mysqlpp::Null<unsigned char, mysqlpp::NullIsZero> myfield(mysqlpp::null); cout << myfield << endl; cout << int(myfield) << endl; This will print “0” twice. If you had used the default for the second Null template parameter, the first output statement would have printed “(NULL)”, and the second wouldn’t even compile. MySQL++’s Special String Types MySQL++ has two classes that work like std::string to some degree: and . These classes exist to provide functionality that std::string doesn’t provide, but they are neither derivatives of nor complete supersets of std::string. As a result, end-user code generally doesn’t deal with these classes directly, because std::string is a better general-purpose string type. In fact, MySQL++ itself uses std::string most of the time, too. But, the places these specialized stringish types do get used are so important to the way MySQL++ works that it’s well worth taking the time to understand them. SQLTypeAdapter The simpler of the two is SQLTypeAdapter, or STA for short.In version 2 of MySQL++ and earlier, SQLTypeAdapter was called SQLString, but it was confusing because its name and the fact that it derived from std::string suggested that it was a general-purpose string type. MySQL++ even used it this way in a few places internally. In v3, we made it a simple base class and renamed it to reflect its proper limited function. As its name suggests, its only purpose is to adapt other data types to be used with SQL. It has a whole bunch of conversion constructors, one for all data types we expect to be used with MySQL++ for values in queries. SQL queries are strings, so constructors that take stringish types just make a copy of that string, and all the others “stringize” the value in the format needed by SQL.SQLTypeAdapter doesn’t do itself. That happens elsewhere, right at the point that the STA gets used to build a query. The conversion constructors preserve type information, so this stringization process doesn’t throw away any essential information. STA is used anywhere MySQL++ needs to be able to accept any of several data types for use in a SQL query. Major users are Query’s template query mechanism and the Query stream quoting and escaping mechanism. You care about STA because any time you pass a data value to MySQL++ to be used in building a SQL query, it goes through STA. STA is one of the key pieces in MySQL++ that makes it easy to generate syntactically-correct SQL queries. String If MySQL++ can be said to have its own generic string type, it’s String, but it’s not really functional enough for general use. It’s possible that in future versions of MySQL++ we’ll expand its interface to include everything std::string does, so that’s why it’s called that.If you used MySQL++ before v3, String used to be called ColData. It was renamed because starting in v2.3, we began using it for holding more than just column data. I considered renaming it SQLString instead, but that would have confused old MySQL++ users to no end. Instead, I followed the example of Set, MySQL++’s specialized std::set variant. The key thing String provides over std::string is conversion of strings in SQL value formats to their plain old C++ data types. For example, if you initialize it with the string “2007-11-19”, you can assign the String to a Date, not because Date knows how to initialize itself from String, but the reverse: String has a bunch of implicit conversion operators defined for it, so you can use it in any type context that makes sense in your application. Because Row::operator[] returns String, you can say things like this: int x = row["x"]; In a very real sense, String is the inverse of STA: String converts SQL value strings to C++ data types, and STA converts C++ data types to SQL value strings.During the development of MySQL++ v3.0, I tried merging SQLTypeAdapter and String into a single class to take advantage of this. The resulting class gave the C++ compiler the freedom to tie itself up in knots, because it was then allowed to convert almost any data type to almost any other. You’d get a tangle of ambiguous data type conversion errors from the most innocent code. String has two main uses. By far the most common use is as the field value type of Row, as exemplified above. It’s not just the return type of Row::operator[], though: it’s actually the value type used within Row’s internal array. As a result, any time MySQL++ pulls data from the database, it goes through String when converting it from the string form used in SQL result sets to the C++ data type you actually want the data in. It’s the core of the structure population mechanism in the SSQLS feature, for example. Because String is the last pristine form of data in a result set before it gets out of MySQL++’s internals where end-user code can see it, MySQL++’s sql_blob and related typedefs are aliases for String. Using anything else would require copies; while the whole “networked database server” thing means most of MySQL++ can be quite inefficient and still not affect benchmark results meaningfully, BLOBs tend to be big, so making unnecessary copies can really make a difference. Which brings us to... Reference Counting To avoid unnecessary buffer copies, both STA and String are implemented in terms of a reference-counted copy-on-write buffer scheme. Both classes share the same underlying mechanism, and so are interoperable. This means that if you construct one of these objects from another, it doesn’t actually copy the string data, it only copies a pointer to the data buffer, and increments its reference count. If the object has new data assigned to it or it’s otherwise modified, it decrements its reference count and creates its own copy of the buffer. This has a lot of practical import, such as the fact that even though Row::operator[] returns Strings by value, it’s still efficient. Dealing with Binary Data Historically, there was no way to hold arbitrary-sized blocks of raw binary data in an SQL database. There was resistance to adding such a feature to SQL for a long time because it’s better, where possible, to decompose blocks of raw binary data into a series of numbers and text strings that can be stored in the database. This lets you query, address and manipulate elements of the data block individually. A classic SQL newbie mistake is trying to treat the database server as a file system. Some embedded platforms use a database engine as a file system, but MySQL doesn’t typically live in that world. When your platform already has a perfectly good file system, you should use it for big, nondecomposable blocks of binary data in most cases. A common example people use when discussing this is images in database-backed web applications. If you store the image in the database, you have to write code to retrieve the image from the database and send it to the client; there’s more overhead, and less efficient use of the system’s I/O caching system. If you store the image in the filesystem, all you have to do is point the web server to the directory where the images live, and put a URL for that image in your generated HTML. Because you’re giving the web server a direct path to a file on disk, operation is far more efficient. Web servers are very good at slurping whole files off of disk and sending them out to the network, and operating systems are very good at caching file accesses. Plus, you avoid the overhead of pushing the data through the high-level language your web app is written in, which is typically an interpreted language, not C++. Some people still hold out on this, claiming that database engines have superior security features, but I call bunk on that, too. Operating systems and web servers are capable of building access control systems every bit as granular and secure as a database system. Occasionally you really do need to store a nondecomposable block of binary data in the database. For such cases, modern SQL database servers support BLOB data types, for Binary Large OBject. This is often just called binary data, though of course all data in a modern computer is binary at some level. The tricky part about dealing with binary data in MySQL++ is to ensure that you don’t ever treat the data as a C string, which is really easy to do accidentally. C strings treat zero bytes as special end-of-string characters, but they’re not special at all in binary data. We’ve made a lot of improvements to the way MySQL++ handles string data to avoid this problem, but it’s still possible to bypass these features, wrecking your BLOBs. These examples demonstrate correct techniques. Loading a binary file into a BLOB column Above, I opined that it’s usually incorrect to store image data in a database, particularly with web apps, of which CGI is a primitive form. Still, it makes a nice, simple example. Instead of a single example program, we have here a matched pair. The first example takes the name of a JPEG file on the command line along with all the other common example program parameters, loads that file into memory, and stores it in a BLOB column in the database. This example also demonstrates how to retrieve the value assigned to an auto-increment column in the previous insertion. This example uses that feature in the typical way, to create unique IDs for rows as they’re inserted. Here is examples/load_jpeg.cpp: Notice that we used the escape manipulator when building the INSERT query above. This is because mysqlpp::sql_blob is just an alias for one of the special MySQL++ string types, which don’t do automatic quoting and escaping. They can’t, because MySQL++ also uses these data types to hold raw SQL query strings, which would break due to doubled quoting and/or escaping if it were automatic. Serving images from BLOB column via CGI The other example in this pair is rather short, considering how much it does. It parses a CGI query string giving the image ID, uses that to retreive data loaded into the database by load_jpeg, and writes it out in the form a web server wants when processing a CGI call, all with adequate real-world error handling. This is examples/cgi_jpeg.cpp: While you can run it by hand, it’s best to install this in a web server’s CGI program directory, then call it with a URL like http://my.server.com/cgi-bin/cgi_jpeg?id=1. That retrieves the JPEG with ID 1 from the database and returns it to the web server, which will send it on to the browser. We’ve included an image with MySQL++ that you can use with this example pair, examples/logo.jpg. Using Transactions The class makes it easier to use SQL transactions in an exception-safe manner. Normally you create the Transaction object on the stack before you issue the queries in your transaction set. Then, when all the queries in the transaction set have been issued, you call Transaction::commit(), which commits the transaction set. If the Transaction object goes out of scope before you call commit(), the transaction set is rolled back. This ensures that if some code throws an exception after the transaction is started but before it is committed, the transaction isn’t left unresolved. examples/transaction.cpp illustrates this: One of the downsides of transactions is that the locking it requires in the database server is prone to deadlocks. The classic case where this happens is when two programs both want access to the same two rows within a single transaction each, but they modify them in opposite orders. If the timing is such that the programs interleave their lock acquisitions, the two come to an impasse: neither can get access to the other row they want to modify until the other program commits its transaction and thus release the row locks, but neither can finish the transaction because they’re waiting on row locks the database server is holding on behalf of the other program. The MySQL server is smart enough to detect this condition, but the best it can do is abort the second transaction. This breaks the impasse, allowing the first program to complete its transaction. The second program now has to deal with the fact that its transaction just got aborted. There’s a subtlety in detecting this situation when using MySQL++. By default, MySQL++ signals errors like these with exceptions. In the exception handler, you might expect to get ER_LOCK_DEADLOCK from Query::errnum() (or Connection::errnum(), same thing), but what you’ll almost certainly get instead is 0, meaning “no error.” Why? It’s because you’re probably using a Transaction object to get automatic roll-backs in the face of exceptions. In this case, the roll-back happens before your exception handler is called by issuing a ROLLBACK query to the database server. Thus, Query::errnum() returns the error code associated with this roll-back query, not the deadlocked transaction that caused the exception. To avoid this problem, a few of the exception objects as of MySQL++ v3.0 include this last error number in the exception object itself. It’s populated at the point of the exception, so it can differ from the value you would get from Query::errnum() later on when the exception handler runs. The example examples/deadlock.cpp demonstrates the problem: This example works a little differently than the others. You run one copy of the example, then when it pauses waiting for you to press Enter, you run another copy. Then, depending on which one you press Enter in, one of the two will abort with the deadlock exception. You can see from the error message you get that it matters which method you call to get the error number. What you do about it is up to you as it depends on your program’s design and system architecture. Which Query Type to Use? There are three major ways to execute a query in MySQL++: Query::execute(), Query::store(), and Query::use(). Which should you use, and why? execute() is for queries that do not return data per se. For instance, CREATE INDEX. You do get back some information from the MySQL server, which execute() returns to its caller in a object. In addition to the obvious — a flag stating whether the query succeeded or not — this object also contains things like the number of rows that the query affected. If you only need the success status, it’s a little more efficient to call Query::exec() instead, as it simply returns bool. If your query does pull data from the database, the simplest option is store(). (All of the examples up to this point have used this method.) This returns a object, which contains the entire result set. It’s especially convenient because StoreQueryResult derives from std::vector<mysqlpp::Row>, so it opens the whole panoply of STL operations for accessing the rows in the result set. Access rows randomly with subscript notation, iterate forwards and backwards over the result set, run STL algorithms on the set...it all works naturally. If you like the idea of storing your results in an STL container but don’t want to use std::vector, you can call Query::storein() instead. It lets you store the results in any standard STL container (yes, both sequential and set-associative types) instead of using StoreQueryResult. You do miss out on some of the additional database information held by StoreQueryResult’s other base class, , however. store*() queries are convenient, but the cost of keeping the entire result set in main memory can sometimes be too high. It can be surprisingly costly, in fact. A MySQL database server stores data compactly on disk, but it returns query data to the client in a textual form. This results in a kind of data bloat that affects numeric and BLOB types the most. MySQL++ and the underlying C API library also have their own memory overheads in addition to this. So, if you happen to know that the database server stores every record of a particular table in 1 KB, pulling a million records from that table could easily take several GB of memory with a store() query, depending on what’s actually stored in that table. For these large result sets, the superior option is a use() query. This returns a object, which is similar to StoreQueryResult, but without all of the random-access features. This is because a “use” query tells the database server to send the results back one row at a time, to be processed linearly. It’s analogous to a C++ stream’s input iterator, as opposed to a random-access iterator that a container like vector offers. By accepting this limitation, you can process arbitrarily large result sets. This technique is demonstrated in examples/simple3.cpp: This example does the same thing as simple2, only with a “use” query instead of a “store” query. Valuable as use() queries are, they should not be the first resort in solving problems of excessive memory use. It’s better if you can find a way to simply not pull as much data from the database in the first place. Maybe you’re saying SELECT * even though you don’t immedidately need all the columns from the table. Or, maybe you’re filtering the result set with C++ code after you get it from the database server. If you can do that filtering with a more restrictive WHERE clause on the SELECT, it’ll not only save memory, it’ll save bandwidth between the database server and client, and can even save CPU time. If the filtering criteria can’t be expressed in a WHERE clause, however, read on to the next section. Conditional Result Row Handling Sometimes you must pull more data from the database server than you actually need and filter it in memory. SQL’s WHERE clause is powerful, but not as powerful as C++. Instead of storing the full result set and then picking over it to find the rows you want to keep, use Query::store_if(). This is examples/store_if.cpp: I doubt anyone really needs to select rows from a table that have a prime number in a given field. This example is meant to be just barely more complex than SQL can manage, to avoid obscuring the point. That point being, the Query::store_if() call here gives you a container full of results meeting a criterion that you probably can’t express in SQL. You will no doubt have much more useful criteria in your own programs. If you need a more complex query than the one store_if() knows how to build when given an SSQLS examplar, there are two overloads that let you use your own query string. One overload takes the query string directly, and the other uses the query string built with Query’s stream interface. Executing Code for Each Row In a Result Set SQL is more than just a database query language. Modern database engines can actually do some calculations on the data on the server side. But, this isn’t always the best way to get something done. When you need to mix code and a query, MySQL++’s Query::for_each() facility might be just what you need. This is examples/for_each.cpp: You only need to read the main() function to get a good idea of what the program does. The key line of code passes an SSQLS examplar and a functor to Query::for_each(). for_each() uses the SSQLS instance to build a select * from TABLE query, stock in this case. It runs that query internally, calling gather_stock_stats on each row. This is a pretty contrived example; you could actually do this in SQL, but we’re trying to prevent the complexity of the code from getting in the way of the demonstration here. Just as with store_if(), described above, there are two other overloads for for_each() that let you use your own query string. Connection Options MySQL has a large number of options that control how it makes the connection to the database server, and how that connection behaves. The defaults are sufficient for most programs, so only one of the MySQL++ example programs make any connection option changes. Here is examples/multiquery.cpp: This is a fairly complex example demonstrating the multi-query and stored procedure features in newer versions of MySQL. Because these are new features, and they change the communication between the client and server, you have to enable these features in a connection option. The key line is right up at the top of main(), where it creates a object and passes it to Connection::set_option(). That method will take a pointer to any derivative of : you just create such an object on the heap and pass it in, which gives Connection the data values it needs to set the option. You don’t need to worry about releasing the memory used by the Option objects; it’s done automatically. The only tricky thing about setting options is that only a few of them can be set after the connection is up. Most need to be set just as shown in the example above: create an unconnected Connection object, set your connection options, and only then establish the connection. The option setting mechanism takes care of applying the options at the correct time in the connection establishment sequence. If you’re familiar with setting connection options in the MySQL C API, you’ll have to get your head around the fact that MySQL++’s connection option mechanism is a much simpler, higher-level design that doesn’t resemble the C API in any way. The C API has something like half a dozen different mechanisms for setting options that control the connection. The flexibility of the C++ type system allows us to wrap all of these up into a single high-level mechanism while actually getting greater type safety than the C API allows. Dealing with Connection Timeouts By default, current MySQL servers have an 8 hour idle timeout on connections. This is not a problem if your program never has to run for more than 8 hours or reliably queries the database more often than that. And, it’s a good thing for the database server, because even an idle connection takes up server resources. Many programs must run continually, however, and may experience long idle periods, such as nights and weekends when no one is around to make the program issue database queries. It’s therefore common for people writing such programs to get a bug report from the field complaining that the program died overnight or over a long weekend, usually with some error message about the database server going away. They then check the DB server, find that it’s still running and never did restart and scratch their heads wondering what happened. What happened is that the server’s connection idle timeout expired, so it closed the connection to the client. You cannot detect this condition by calling Connection::connected(). When that returns true, it just means that either the connect-on-create constructor or the connect() call succeeded and that we haven’t observed the connection to be down since then. When the database server closes an idle connection, you won’t know it until after you try to issue a query. This is simply due to the nature of network programming. One way around this problem is to configure MySQL to have a longer idle timeout. This timeout is in seconds, so the default of 8 hours is 28,800 seconds. You would want to figure out the longest possible time that your program could be left idle, then pick a value somewhat longer than that. For instance, you might decide that the longest reasonable idle time is a long 4-day weekend — 345,600 seconds — which you could round up to 350,000 or 400,000 to allow for a little bit of additional idle time on either end of that period. Another way around this, on a per-connection basis from the client side, would be to set the connection option. This will cause MySQL++ to reconnect to the server automatically if it drops the connection. Beware that unless you’re using MySQL 5.1.6 or higher, you have to set this only after the connection is established, or it won’t take effect. This means there’s a potential race condition: it’s possible the connection could drop shortly enough after being established that you don’t have time to apply the option, so it won’t come back up automatically. MySQL 5.1.6+ fixes this by allowing this option to be set before the connection is established. A completely different way to tackle this, if your program doesn’t block forever waiting on I/O while idle, is to periodically call Connection::ping(). Don’t ping the server too often! It takes a tiny amount of processing capability to handle a ping, which can add up to a significant amount if done often enough by a client, or even just rarely by enough clients. Also, a lower ping frequency can let your program ride through some types of network faults — a switch reboot, for instance — without needing a reconnect. I like to ping the DB server no more often than half the connection timeout. With the default of 8 hours, then, I’d ping between every 4 and 7 hours. This sends the smallest possible amount of data to the database server, which will reset its idle timer and cause it to respond, so ping() returns true. If it returns false instead, you know you need to reconnect to the server. Periodic pinging is easiest to do if your program uses asynchronous I/O, threads, or some kind of event loop to ensure that you can call something periodically even while the rest of the program has nothing to do. An interesting variant on this strategy is to ping the server before each query, or, better, before each group of queries within a larger operation. It has an advantage over pinging during idle time in that the client is about to use far more server resources to handle the query than it will take to handle the ping, so the ping time gets lost in the overhead. On the other hand, if the client issues queries frequently when not idle, it can result in a lot more pings than would happen if you just pinged every N hours while idle. Finally, some programmers prefer to wrap the querying mechanism in an error handler that catches the “server has gone away” error and tries to reestablish the connection and reissue the query. This adds some complexity, but it makes your program more robust without taking up unnecessary resources. If you did this, you could even change the server to drop idle connections more often, thus tying up fewer TCP/IP stack resources. Concurrent Queries on a Connection An important limitation of the MySQL C API library — which MySQL++ is built atop, so it shares this limitation — is that you can only have one query in progress on each connection to the database server. If you try to issue a second query while one is still in progress, you get an obscure error message about “Commands out of sync” from the underlying C API library. (You normally get this message in a MySQL++ exception unless you have exceptions disabled, in which case you get a failure code and Connection::error() returns this message.) There are lots of ways to run into this limitation: The easiest way is to try to use a single object in a multithreaded program, with more than one thread attempting to use it to issue queries. Unless you put in a lot of work to synchronize access, this is almost guaranteed to fail at some point, giving the dread “Commands out of sync” error. You might then think to give each thread that issues queries its own Connection object. You can still run into trouble if you pass the data you get from queries around to other threads. What can happen is that one of these child objects indirectly calls back to the Connection at a time where it’s involved with another query. This is properly covered elsewhere, in .) One way to run into this problem without using threads is with “use” queries, discussed above. If you don’t consume all rows from a query before you issue another on that connection, you are effectively trying to have multiple concurrent queries on a single connection. Here’s a recipie for this particular disaster: UseQueryResult r1 = query.use("select garbage from plink where foobie='tamagotchi'"); UseQueryResult r2 = query.use("select blah from bonk where bletch='smurf'"); The second use() call fails because the first result set hasn’t been consumed yet. Still another way to run into this limitation is if you use MySQL’s multi-query feature. This lets you give multiple queries in a single call, separated by semicolons, and get back the results for each query separately. If you issue three queries using Query::store(), you only get back the first query’s results with that call, and then have to call store_next() to get the subsequent query results. MySQL++ provides Query::more_results() so you know whether you’re done, or need to call store_next() again. Until you reach the last result set, you can’t issue another query on that connection. Finally, there’s a way to run into this that surprises almost everyone sooner or later: stored procedures. MySQL normally returns at least two result sets for a stored procedure call. The simple case is that the stored procedure contains a single SQL query, and it succeeds: you get two results, first the results of the embedded SQL query, and then the result of the call itself. If there are multiple SQL queries within the stored procedure, you get more than two result sets. Until you consume them all, you can’t start a new query on the connection. As above, you want to have a loop calling more_results() and store_next() to work your way through all of the result sets produced by the stored procedure call. Getting Field Meta-Information The following example demonstrates how to get information about the fields in a result set, such as the name of the field and the SQL type. This is examples/fieldinf.cpp: mysql++-3.3.0/doc/userman/deadlock.txt000644 000765 000024 00000006137 14042362131 020344 0ustar00tangentstaff000000 000000 #include "cmdline.h" #include #include #include using namespace std; // Bring in global holding the value given to the -m switch extern int run_mode; int main(int argc, char *argv[]) { // Get database access parameters from command line mysqlpp::examples::CommandLine cmdline(argc, argv); if (!cmdline) { return 1; } // Check that the mode parameter was also given and it makes sense const int run_mode = cmdline.run_mode(); if ((run_mode != 1) && (run_mode != 2)) { cerr << argv[0] << " must be run with -m1 or -m2 as one of " "its command-line arguments." << endl; return 1; } mysqlpp::Connection con; try { // Establish the connection to the database server mysqlpp::Connection con(mysqlpp::examples::db_name, cmdline.server(), cmdline.user(), cmdline.pass()); // Start a transaction set. Transactions create mutex locks on // modified rows, so if two programs both touch the same pair of // rows but in opposite orders at the wrong time, one of the two // programs will deadlock. The MySQL server knows how to detect // this situation, and its error return causes MySQL++ to throw // a BadQuery exception. The point of this example is that if // you want to detect this problem, you would check the value of // BadQuery::errnum(), not Connection::errnum(), because the // transaction rollback process executes a query which succeeds, // setting the MySQL C API's "last error number" value to 0. // The exception object carries its own copy of the error number // at the point the exception was thrown for this very reason. mysqlpp::Query query = con.query(); mysqlpp::Transaction trans(con); // Build and run the queries, with the order depending on the -m // flag, so that a second copy of the program will deadlock if // run while the first is waiting for Enter. char dummy[100]; for (int i = 0; i < 2; ++i) { int lock = run_mode + (run_mode == 1 ? i : -i); cout << "Trying lock " << lock << "..." << endl; query << "select * from deadlock_test" << lock << " where x = " << lock << " for update"; query.store(); cout << "Acquired lock " << lock << ". Press Enter to "; cout << (i == 0 ? "try next lock" : "exit"); cout << ": " << flush; cin.getline(dummy, sizeof(dummy)); } } catch (mysqlpp::BadQuery e) { if (e.errnum() == ER_LOCK_DEADLOCK) { cerr << "Transaction deadlock detected!" << endl; cerr << "Connection::errnum = " << con.errnum() << ", BadQuery::errnum = " << e.errnum() << endl; } else { cerr << "Unexpected query error: " << e.what() << endl; } return 1; } catch (mysqlpp::Exception e) { cerr << "General error: " << e.what() << endl; return 1; } return 0; } mysql++-3.3.0/doc/userman/hello.txt000644 000765 000024 00000000212 14042362131 017665 0ustar00tangentstaff000000 000000 #include int main() { mysqlpp::String greeting("Hello, world!"); std::cout << greeting << std::endl; return 0; } mysql++-3.3.0/doc/userman/userman.dbx.in000644 000765 000024 00000003565 14042362131 020615 0ustar00tangentstaff000000 000000 %xinclude; ]>
MySQL++ v@MYSQLPP_VERSION_MAJOR@.@MYSQLPP_VERSION_MINOR@.@MYSQLPP_VERSION_BUGFIX@ User Manual Kevin Atkinson Sinisa Milivojevic Monty Widenius Warren Young 1998-2001, 2005-2019 Kevin Atkinson (original author) MySQL AB Educational Technology Resources
mysql++-3.3.0/doc/userman/tquery1.txt000644 000765 000024 00000004136 14042362131 020205 0ustar00tangentstaff000000 000000 #include "cmdline.h" #include "printdata.h" #include using namespace std; int main(int argc, char *argv[]) { // Get database access parameters from command line mysqlpp::examples::CommandLine cmdline(argc, argv); if (!cmdline) { return 1; } try { // Establish the connection to the database server. mysqlpp::Connection con(mysqlpp::examples::db_name, cmdline.server(), cmdline.user(), cmdline.pass()); // Build a template query to retrieve a stock item given by // item name. mysqlpp::Query query = con.query( "select * from stock where item = %0q"); query.parse(); // Retrieve an item added by resetdb; it won't be there if // tquery* or ssqls3 is run since resetdb. mysqlpp::StoreQueryResult res1 = query.store("Nürnberger Brats"); if (res1.empty()) { throw mysqlpp::BadQuery("UTF-8 bratwurst item not found in " "table, run resetdb"); } // Replace the proper German name with a 7-bit ASCII // approximation using a different template query. query.reset(); // forget previous template query data query << "update stock set item = %0q where item = %1q"; query.parse(); mysqlpp::SimpleResult res2 = query.execute("Nuerenberger Bratwurst", res1[0][0].c_str()); // Print the new table contents. print_stock_table(query); } catch (const mysqlpp::BadQuery& er) { // Handle any query errors cerr << "Query error: " << er.what() << endl; return -1; } catch (const mysqlpp::BadConversion& er) { // Handle bad conversions cerr << "Conversion error: " << er.what() << endl << "\tretrieved data size: " << er.retrieved << ", actual size: " << er.actual_size << endl; return -1; } catch (const mysqlpp::Exception& er) { // Catch-all for any other MySQL++ exceptions cerr << "Error: " << er.what() << endl; return -1; } return 0; } mysql++-3.3.0/doc/userman/for_each.txt000644 000765 000024 00000003701 14042362131 020336 0ustar00tangentstaff000000 000000 #include "cmdline.h" #include "printdata.h" #include "stock.h" #include #include #include // Define a functor to collect statistics about the stock table class gather_stock_stats { public: gather_stock_stats() : items_(0), weight_(0), cost_(0) { } void operator()(const stock& s) { items_ += s.num; weight_ += (s.num * s.weight); cost_ += (s.num * s.price.data); } private: mysqlpp::sql_bigint items_; mysqlpp::sql_double weight_, cost_; friend std::ostream& operator<<(std::ostream& os, const gather_stock_stats& ss); }; // Dump the contents of gather_stock_stats to a stream in human-readable // form. std::ostream& operator<<(std::ostream& os, const gather_stock_stats& ss) { os << ss.items_ << " items " << "weighing " << ss.weight_ << " stone and " << "costing " << ss.cost_ << " cowrie shells"; return os; } int main(int argc, char *argv[]) { // Get database access parameters from command line mysqlpp::examples::CommandLine cmdline(argc, argv); if (!cmdline) { return 1; } try { // Establish the connection to the database server. mysqlpp::Connection con(mysqlpp::examples::db_name, cmdline.server(), cmdline.user(), cmdline.pass()); // Gather and display the stats for the entire stock table mysqlpp::Query query = con.query(); std::cout << "There are " << query.for_each(stock(), gather_stock_stats()) << '.' << std::endl; } catch (const mysqlpp::BadQuery& e) { // Something went wrong with the SQL query. std::cerr << "Query failed: " << e.what() << std::endl; return 1; } catch (const mysqlpp::Exception& er) { // Catch-all for any other MySQL++ exceptions std::cerr << "Error: " << er.what() << std::endl; return 1; } return 0; } mysql++-3.3.0/doc/userman/overview.dbx000644 000765 000024 00000022560 14042362131 020400 0ustar00tangentstaff000000 000000 Overview MySQL++ has a lot of complexity and power to cope with the variety of ways people use databases, but at bottom it doesn’t work all that differently than other database access APIs. The usage pattern looks like this: Open the connection Form and execute the query If successful, iterate through the result set Else, deal with errors Each of these steps corresponds to a MySQL++ class or class hierarchy. An overview of each follows. The Connection Object A object manages the connection to the MySQL server. You need at least one of these objects to do anything. Because the other MySQL++ objects your program will use often depend (at least indirectly) on the Connection instance, the Connection object needs to live at least as long as all other MySQL++ objects in your program. MySQL supports many different types of data connection between the client and the server: TCP/IP, Unix domain sockets, and Windows named pipes. The generic Connection class supports all of these, figuring out which one you mean based on the parameters you pass to Connection::connect(). But if you know in advance that your program only needs one particular connection type, there are subclasses with simpler interfaces. For example, there’s if you know your program will always use a networked database server. The Query Object Most often, you create SQL queries using a object created by the Connection object. Query acts as a standard C++ output stream, so you can write data to it like you would to std::cout or std::ostringstream. This is the most C++ish way MySQL++ provides for building up a query string. The library includes stream manipulators that are type-aware so it’s easy to build up syntactically-correct SQL. Query also has a feature called which work something like C’s printf() function: you set up a fixed query string with tags inside that indicate where to insert the variable parts. If you have multiple queries that are structurally similar, you simply set up one template query, and use that in the various locations of your program. A third method for building queries is to use Query with SSQLS. This feature lets you create C++ structures that mirror your database schemas. These in turn give Query the information it needs to build many common SQL queries for you. It can INSERT, REPLACE and UPDATE rows in a table given the data in SSQLS form. It can also generate SELECT * FROM SomeTable queries and store the results as an STL collection of SSQLSes. Result Sets The field data in a result set are stored in a special std::string-like class called . This class has conversion operators that let you automatically convert these objects to any of the basic C data types. Additionally, MySQL++ defines classes like , which you can initialize from a MySQL DATETIME string. These automatic conversions are protected against bad conversions, and can either set a warning flag or throw an exception, depending on how you set the library up. As for the result sets as a whole, MySQL++ has a number of different ways of representing them: Queries That Do Not Return Data Not all SQL queries return data. An example is CREATE TABLE. For these types of queries, there is a special result type () that simply reports the state resulting from the query: whether the query was successful, how many rows it impacted (if any), etc. Queries That Return Data: MySQL++ Data Structures The most direct way to retrieve a result set is to use Query::store(). This returns a object, which derives from std::vector<mysqlpp::Row>, making it a random-access container of s. In turn, each Row object is like a std::vector of String objects, one for each field in the result set. Therefore, you can treat StoreQueryResult as a two-dimensional array: you can get the 5th field on the 2nd row by simply saying result[1][4]. You can also access row elements by field name, like this: result[2]["price"]. A less direct way of working with query results is to use Query::use(), which returns a object. This class acts like an STL input iterator rather than a std::vector: you walk through your result set processing one row at a time, always going forward. You can’t seek around in the result set, and you can’t know how many results are in the set until you find the end. In payment for that inconvenience, you get better memory efficiency, because the entire result set doesn’t need to be stored in RAM. This is very useful when you need large result sets. Queries That Return Data: Specialized SQL Structures Accessing results through MySQL++’s data structures is a pretty low level of abstraction. It’s better than using the MySQL C API, but not by much. You can elevate things a little closer to the level of the problem space by using the SSQLS feature. This lets you define C++ structures that match the table structures in your database schema. In addition, it’s easy to use SSQLSes with regular STL containers (and thus, algorithms) so you don’t have to deal with the quirks of MySQL++’s data structures. The advantage of this method is that your program will require very little embedded SQL code. You can simply execute a query, and receive your results as C++ data structures, which can be accessed just as you would any other structure. The results can be accessed through the Row object, or you can ask the library to dump the results into an STL container — sequential or set-associative, it doesn’t matter — for you. Consider this: vector<stock> v; query << "SELECT * FROM stock"; query.storein(v); for (vector<stock>::iterator it = v.begin(); it != v.end(); ++it) { cout << "Price: " << it->price << endl; } Isn’t that slick? If you don’t want to create SSQLSes to match your table structures, as of MySQL++ v3 you can now use Row here instead: vector<mysqlpp::Row> v; query << "SELECT * FROM stock"; query.storein(v); for (vector<mysqlpp::Row>::iterator it = v.begin(); it != v.end(); ++it) { cout << "Price: " << it->at("price") << endl; } It lacks a certain syntactic elegance, but it has its uses. Exceptions By default, the library throws whenever it encounters an error. You can ask the library to set an error flag instead, if you like, but the exceptions carry more information. Not only do they include a string member telling you why the exception was thrown, there are several exception types, so you can distinguish between different error types within a single try block. mysql++-3.3.0/doc/html/userman/000755 000765 000024 00000000000 14042362131 016772 5ustar00tangentstaff000000 000000 mysql++-3.3.0/doc/html/refman/000755 000765 000024 00000000000 14042362133 016572 5ustar00tangentstaff000000 000000 mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SelfTestFailed__coll__graph.png000644 000765 000024 00000017573 14042362133 027757 0ustar00tangentstaff000000 000000 ‰PNG  IHDR’”x"p“sRGB®Îé5IDATxí] œNe?f†[Bö=)Ù÷$¾/¤…¡¨)²FJI‹òµŠl ‰P(5²%KDöɾ$ëŒÆ0žïüϸ¯;ïÜwæ]ç]æ9¿ßûÞ{Ÿû,ç9ÏyÎ9Ͻ÷9'‡b šžQ`v˜gåuiMT hFÒœà hFò u%fœ?ž¶lÙbNÒçNR Q£F”+W.'s[gÛ´i]¼xÑúf€¤ÞyçT¬X±tؤa¤sçÎQùòåå—.§NpHÍ›7ÓåË—=f¤«W¯RÆ )**Êa[þ¼qìØ1ºpá‚%#iÕæÏ‘ ¡¶5#…Ð`ú³+š‘üIýjÛ§Œô÷ßÓºuëŠ\‰‰‰P8ù ™ï¿ÿž’““}U}šz½ÂH[·n¥ž={¦©;vì 1cƤK÷GÂ3ÏkÓè›}ß|ó %%%Ù'ûäÚeF‚”‰ŽŽ¦"EŠÐý÷ßOgΜ¡.]ºÐìÙ³iôèÑtôèQjÞ¼9Ýzë­4qâDÒC‡¥/¿üR®[µjEûöí#þøãÒw·û‰wmüùçŸ*>>Þ¸´<¾õÖ[ªGêôéÓªk×®Š^1ç« ¨„„Õ»woÕ©S'ÅÏDÔ=÷Ü£þóŸÿH=LÅ'ç#GŽT¼”T&LP?ü°âUÜy)wéÒ%Å  &Mš¤øQ„š7ožb†S̸jûöíjáÂ…ªjÕªŠ $iË–-S ,P Tüñ‡zå•WTÑ¢EÕ®]»3®bFQÿüójÒ¤‰Ô…¶˜ùàüöÛo«_ýUò­\¹R}ðÁŠK±ôn¿ývK:˜ÑW^›“Ü:_¿~½àê¨0«e•/_>Å“P­^½Z7sßöîÝ‹÷¦êùçŸW‡:?~\h‹¾îß¿_ñ¤WO=õ”4Á ¤x‚©~øA.\X½óÎ;Žš–tjÏž=VybÓ}úиqãćt?~¼´…û0ìÙ6æƒQ÷=ݺuólÙ²)„× j søðá‚CݺuE½Bœ0»Qò@äca%Þ U(…üü‡Å¤=ú‹þ`QbœÃt@œÁyPƉmX10ñ ݳåÄ*$ScùaTïܹSqã¶â¬B/5å†ð¡C‡l÷2;‘#;3àwbd›ó={V¢“'OÊCK<—òBŽ‘Œ•ž'DÉNe­¾-r§ÿ.Ûî4¢Ë„>ÒH$èY|!‰ç6Áqq‡Í{ï-ëwtaky °[øé¶ËÕ\»œƒNÌÈMÅþû…çõí¦ {ÛØ@6 #Á˜eëݸðÇ•+ð»°Õüüª ?Óz àñÍ A,é]… ‡/Ó’§÷RâÉdjÔðÊ]8ͺZÛùƒZµÝsO%~bEÓ¦­á'ÛÑ¥KYóÉ„ÛÔörÁ#k/ÐüÎPâ_Éus„ߘÝ jFªU«,¿ÖHaºL6à'ÞøéùY/W`V·eÊ Z>h?]ýç)~KR´Z^¿"ÔŒT¢D~Yœúr2)é ?Ñ>CÍš½ÁßÅû•¨¾l<%IÑòþhëÔ“„s@Dd•n˜ñ{M_℺ƒš‘ÐêÕKã ’rß&Q§NRlì#9dŽ '’i^§ttúš”bëWXN~åQ]K$AÜ9dH%£<¤ÓÈ‘ Ø_`$ýñÔöK4/úJ8–LW/§}ã5éÝR9õK u4è%R:åø›œ¯g BÂðÆŠ.T`ÅÀtíÊ5º–’~y_ \åðÏbÍFÞ g$Ü@fˆŒÌIùóGѤI]ÌÉA}Þ~NeªØªØCæŽàM~©zùÍI~9zF*P 7¿´Mµ@Ô\¹"¨I“Jü-Ò(jß¾ž_ˆê‹F£ FPÓ˜rÔdxYŠÈF9s§]N>/^7õC<_´ëlAÏHèhíÚe˜Âù»šâ´pa?þ`ë/Ú¸1ôVn×®(Ú<ùµxåVªýd Šˆ £äÄ*VÓ¿†¶0[Ú/N‚óŠWjjæÌµ6äúi·ºë®±ü}Ô[Z(œlž|\±­dëJÂñdµûëÓ¶k?žÄæ@ãΊ¯`Ê÷ÔSÓEB½øb«`BÛ!®xòu÷ÝÔþ‹;)O‘ô‹ ‡³æFèzl‹‰yHVm‡ý5¤ôq+?;Dµ{•D&’ž‡¬DBï>üpoQÚÏ {ùx˜}[=Dž‹¿L¥ïöÿêÌAOCW"¡ÃO>Ù”`ìÓ¿÷Þ{ù‰ý‡âtÌð#eøNÀ¾85âîyYñãFYâ>Û1F½GÆ<»/Ò¢E[½ÆÞ¨¨l“›øãµοŒ:áz†2»RF‚Ç5¤9ø‡‚Ó1¶“Dú°·›Ã0Wý(9jÃ>=[2RXXzýõh~¾´0(öÂA"A5A•áfpÄHø¸ÃàÆØu o¨NXÝÁãdvÚºtéR{>ðø:¤_ÚfFþýg³û¿¼¼Q ]fYƒî>g™à^Œ¯tpŸéWˆ°ŸìîmÜ€ÙÙš‘ΜIdUñ»*|Ž|¦øãAƒ¢<»Á£=T®\Ù2`}>‹ëìÍH YI_½…Ýö± ï“°Í("*ª”ê€Õ÷-ú¤…ÐþŒÄ’uíz7ÇHKb×È›œÉîÕäß1ç5ì¼ÃV—Éâš‘®¼`Á<4lXþ¥ú÷å8ìüò45掸ÄínkF2‘î¿ÿmÈŸä^å(NM©Þ?m8 Uhq#Ì…÷[Èú5#Ùц÷+¯,æpYçÌ®ù ½ÔŒd7t5j”æÈL5øÊ8*vYô¥4#YeèÐ60p+GÀôÿ'¬èd’f$‹a‡“—_ndž÷—wÝKÂç³ð÷ª ÉÁÈvìXŸ?½ ±ê¹ Áí³NQܘƒq݃&ƒ:Y3RÃÃ{üø¥ü…á?äÊø$ÑÖ©'¨ñ0ÿ;•ÏSÏîjFÊ€~Uª”ä°¤µ8ôê7äÊøÖº7Sõ®E)é\g ò»š‘2À!CZÓŠ;hûö#™äLûÐêótf_ÕèúŸ¨hFJ?þiRòå‹äï»Ûrä/mŸ«¦Éàà>°7L|ø°×úáQEö븬¸f„3lfÿþýªyóæê¡‡ReË–U¯½öšâýïŠgž8—:yò¤â¯¥žwÞyGÅÄĨ_~ùE±·U¤HõÜsÏɽ#Gލ¦M›ªòåË«=zˆ£ª}ûö)öà!÷9 ±ø*Z´¨jß¾½ÔÉT·nÝ;br‹-’¼sæÌQ/½ôRºsv£x@%Ýøã­Ñêî»ïV¼Ï^±´R­[·§YÈǨÅéUçÎo§VçÎ?GÅŠSmÚ´QèÀ ·*Uª(öB¢F¥¬¾ýö[•œœ,ý*T¨Â}v"!åy ¶øC‚¥fÍš©³gÏJº£?8àžn@`úG‚ÃÌî–-[²£‡Ñü]Ð0j×®,Mßxã âA'¸pY¹r¥L¢Y³f"T;–ºwïÎñm7ÈÞö={öÐ[o½EÌŒRf/ü™á·ß~ãýÿ%L=öÄÃÁ‰'ˆˆæÎ+Θy¤HÉ’% Ûšæs\8zõêeûñ`3#õë×O¼‚@B±g5ý5I\Ò ÝS§Nqž…âØûóÑgø0zþùçQ%Yá†þCm4ˆþüóObæ:@Uÿøã$º3¿Ò.åÑìõ‹‹#lÓ^¶l™¤ûäÏ îó¸w$Ã:à¦.þü2[Ù‚bçP2ë ¤ì¸q㜂Äá0óâ…ì…^Wwo¿ý¶b"K¾jÕª)vØ)ç±±±âéÌ,‘˜!Õñã©nö¦M›&^ÏàbžÏ €4;xð q™î‰‰w{Æ/))I±#Õ°aCÁ™ZÊA’“€™KðlÒ¤‰¸÷ƒ;¿!C†ˆÆ}+ÜØùƒ‚¤tìØQÍž=[õíÛW1ƒJþ Ùx2(HÙøøxImÆ/çŽþ<‘HklCŠ@ê0ãpHö|âµ ³Ö€:«,‘DðT/d¬e¶³*"Hx6ƒ‚G@dd¤Q<Íñæ›Swt°Šàþ/È=# H‡´NŽà‰'ž°4®£¢8º#ïæÅ‘#¯ ¨‡' G ¿*8V­ZU<«Ác»ç³5càaÆÍvóú ¤,<‰€:áÚ@K´ï+Zc»R¥JĶ0Ott´Ð~ðƒá ŸBéìkQD>2ªÐž˜«V­’Užìb@pV…Á€ûa¨øbéÇßqïûæs$€ÉÍ?”ýì³Ïˆ¥¨!v"*å€Ï|9‡F›l‰;0?¼¯­]»VîãÏ 7ó„BžV­ZIX9B=²MDY¾’s$æ|™Î}ϰz¨6Pɵ €j —sü±M$Î9¡F0º¡æà´“J)–.ŠíÅvÔǾlªQÊ@UÂó+K-1®Ïœ9£ Úxé®*V¬(õAåØÞ’€ý9ÏútïßFŽ)¸}÷ÝwŠ7ˆqÏ.ûÔºuëT­Zµ¤~, `(³-$ø¢=–@‚3Ú°Â †xáÂ…ê7ThÄ *}`ɬ |A7–¤¨J±MåSÕ–ñˆ ÞÿËŒ‘œm«9è~3€Ðöö ‹z±GØØF2燂Ádõ`K#1B¼Ã^¼xÑ–îÍ6~ÓU·wï^vÝ|É–n…n_còØ2ó úà ¾!i#Adgl`ò—‹+äg·=°QUÀ3ì(ó}žùæK¯žóR=]}†SQó +ÜàåÖ ¬ú`•Ïi~ñØã“'GýaÉC쀜À$Îl ,‡YýÙŠÀå0ê1òàJØŸ`…›/ñ1Þþãè"ÌØU[fá%nfYÒÝÇL632Ø3ÒüÍ@À`…[êÀûÚU[à‘2{cä7‰õ ž‡Õô~TpãW0÷‹¿t }¿0’§ö‘[=õQ¡’%ûó«Úì¿›ZŽjµjó`œ6m:È»KrñƒÎ,‘<[w›š‘Ü&.h¦€f$35ô¹ÛÐŒä6étA34#™©áƹ^þ§M3’Ìc.¢—ÿš‘Ìü Ï=¤€–HPO¥€f$Í ^¡€f$¯QW¢Ió€W( ÉC2êå*5#yÈHzù¯ÉCÒÅÍÐÉL 7ΡÚàÂ8»ƒ¦€‡ÕfÄýð°ª .®)¨‡/€çå5à`,ébrpWC:-g΢%},’Pï·ãä:óĦ÷„à“sÀâ@+ôÌ3ÏxP‹.èxüñÇÉ>*Vm>jA‚Ÿf¤ ¨@GS3R PàçU)ú̺ á;½" !@9z7q|4ª_¿~º 8æ>#\iBB‚Dƒä¸ipáFQ‡= .WŸ?!²ý£"hbÑ£å AœwíÚE5kÖ´GÁòv.G·¼—QbÈI$©N›7oΨÏNßã Êôä“OÒîÝ» ŠˆÙLG†›7ožÜF¹GÔhÙ˜™>þøc9GÜ8{†pT'z–ؼ¸ÏQ#%¼*úgüÀàV€¨HPŒbDævÕÜÈr‰„˜«kÖ¬‘ø°˜©ÃŽåè;tèP[ Y¬þ¶ýÙgŸ%óóÏ?—x­“…|ˆi‹Aûâ‹/$h1â¶õîÝÛFÄÛ¶m{VÛÇnŒ… 5jD=›î¸ã ç^£F ÀÅŸ|ò {]»î»ï>‰AË‘)ÏR¥JQÏž=¥Þûï¿_˜•>aÂÂÌç¢Ô§O[ÛrTB±oÚ´I³ãBÊ#.bÛò’™¦N*!ááÙ«T©"×5[¤‚-#ßòåËiýúõ‚êéÒ¥‹Hœ¦úôÓO%€3¤ Óœ;wNp3bô"¯Î`há*¤^½zN3¸Ñ¶qÌr‰‘࿈‰N‚è$YNˆŽÁDdH„èЈL br¬V <þ|ö{‘¦OŸ.1î~øa!„yvrlZQI£F’Ç“'O–:ÁXˆ¨!´Áaè‰Ã  ã5oÞ\è&5âÌáÁÀø-^¼Xªÿàƒ4˜2eŠà²}ûv‰Ø Uk+œ9ü»HÜ1cÆH¤r¼òq²œ‘€$$AõêÕ úGãœã¼ŠrìØ1™]`8„d‡TQÀtp0˜¬ZµjRGãÆ-C¥ƒ9‘up€b™¡h¡ÞT @4nàÀs0¤¤Œ9|øpš9s¦H ´fCHxD´6¢o£<Âþ}dȈŽG^„ˆSs@fš8q"¡ÿè+BÐ#X!ß`Ø<è~F`@¨.H–¹sçÒÙ³gågß.&™Κè;ˆ– c_ÎÙë,Wm@ Ā؈soâF~˜¥ÔI“&I¸uºnݺbКã×ZÅy5bÞ£~¨N ÀHGšvTnØýÁ®áˆÝÂp`:!×Qª?¨ÊråÊ CØUayyêÔ) ¡ • èÖ­›„„ýõ׉£rK¸y0ìŒ3Ò•oÛ¶­~¸ õ‡‰š6hÐ@&]ºBœ€¾[á¼téR™Œ(¦6ÖªŽŒÒü"‘2B÷ A`,XP'öl ˜˜™Y f4bÝÃNýa[·n•™ cÒju…rFåË——´øøx‘z¸@½``t¨OHJiÅ‹‰††Í‰ãÖYÀDM×¹sgvdÚ\ì 04úöè£Ê¤ÁÀª à€T?Ô!hÕ æ²G8£ &,è£UYûº¬®ý"‘¬Aš1Ð9 ô> N:b“üúë¯Òa¢Q©¡vô8wîÜ’F=ˆÇ{LìØdH¡`S€Q z† "å`3¡¨=¤½÷Þ{Ô²eKaÚ®]»¤Ô‡aõb࢜PÅFÛrÃÁúÉ&<þ<õèÑCÔ#&8ba€¸½`~ØR°­ê õF<Ì,@ZµjeËnàd…3ú´jÕ*iÚ}q¼ê«+¯ž¾kƒºÀl…ñ¢ÐaÌ<ØKæÎb ÀDXeY`( °*c ¿Áh-Z´A„ÍcVRÈÁž AbØç‡¤€$NT®¸†4Ê=zTܬòѾ¡Žµº`ÓAÒ&æ:ÍeጅúçL?`C.[¶Œ*W®lTxÛ!šÇŽK­[·¶1°E+T¨` n;:"˜‘Áê>f¨=Sù­ŽD«ÄвL™2VEœJƒÁm`J{°jÛ>¹.«>ùá Õç ”jCG`´BMàé´+€•‹!uP.::Ú²ø‚ dÖZÞÔ‰nS à «/W™½·Ÿµ0®­ £Ùj•_§9G×»sõê\Ù¼Šñðª%¤¿†dÞÐý»N6îÍ|ëÕU[v›„º¿6 è 66Rè( m$ȧ ÐŒdPB=¢Àÿ2rñ.‚°%ÅIEND®B`‚mysql++-3.3.0/doc/html/refman/insertpolicy_8h_source.html000644 000765 000024 00000054234 14042362131 024171 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: insertpolicy.h Source File
MySQL++  3.3.0
insertpolicy.h
Go to the documentation of this file.
1 
32 /***********************************************************************
33  Copyright © 2008-2009 by AboveNet, Inc., and © 2009 by Educational
34  Technology Resources, Inc. Others may also hold copyrights on code
35  in this file. See the CREDITS file in the top directory of the
36  distribution for details.
37 
38  This file is part of MySQL++.
39 
40  MySQL++ is free software; you can redistribute it and/or modify it
41  under the terms of the GNU Lesser General Public License as published
42  by the Free Software Foundation; either version 2.1 of the License, or
43  (at your option) any later version.
44 
45  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
46  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
47  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
48  License for more details.
49 
50  You should have received a copy of the GNU Lesser General Public
51  License along with MySQL++; if not, write to the Free Software
52  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
53  USA
54 ***********************************************************************/
55 
56 #if !defined(MYSQLPP_INSERTPOLICY_H)
57 #define MYSQLPP_INSERTPOLICY_H
58 
59 // Only allow these templates to be defined if they're being bodily
60 // included into class Query's definition. They're in this separate
61 // file only for claity, so they don't get lost among the other
62 // definitions in class Query. Without this, Doxygen will pick them
63 // up and treat them as a) outside namespace mysqlpp; and b) not member
64 // templates of class Query. We also don't want end-users of the
65 // library to #include this file in their own code; these templates
66 // should only be used as mysqlpp::Query::*.
67 #if defined(MYSQLPP_DEFINE_INSERT_POLICY_TEMPLATES)
68 
69 
76 template <class AccessController = Transaction>
77 class MYSQLPP_EXPORT RowCountInsertPolicy
78 {
79 public:
81  RowCountInsertPolicy(unsigned int rows) :
82  cur_rows_(0),
83  max_rows_(rows)
84  {
85  }
86 
88  ~RowCountInsertPolicy() { }
89 
94  template <class RowT>
95  bool can_add(int, const RowT&)
96  {
97  if (++cur_rows_ > max_rows_) {
98  cur_rows_ = 0;
99  return false;
100  }
101  else {
102  return true;
103  }
104  }
105 
107  typedef AccessController access_controller;
108 
109 private:
110  unsigned int cur_rows_;
111  unsigned const int max_rows_;
112 };
113 
114 
122 template <class AccessController = Transaction>
123 class MYSQLPP_EXPORT SizeThresholdInsertPolicy
124 {
125 public:
127  SizeThresholdInsertPolicy(int size) :
128  size_(size)
129  {
130  }
131 
133  ~SizeThresholdInsertPolicy() { }
134 
142  template <class RowT>
143  bool can_add(int size, const RowT& object) const
144  {
145  (void)object; // we don't use this, but other policies do
146  return (size < size_);
147  }
148 
150  typedef AccessController access_controller;
151 
152 private:
153  int size_;
154 };
155 
156 
164 template <class AccessController = Transaction>
165 class MYSQLPP_EXPORT MaxPacketInsertPolicy
166 {
167 public:
173  MaxPacketInsertPolicy(Connection* con, int size) :
174  conn_(con), size_(size)
175  {
176  }
177 
186  MaxPacketInsertPolicy(int size) :
187  conn_(0), size_(size)
188  {
189  }
190 
192  ~MaxPacketInsertPolicy() { }
193 
201  template <class RowT>
202  bool can_add(int size, const RowT& object) const
203  {
204  if (size < size_) {
205  // Haven't hit size threshold yet, so see if this next
206  // item pushes it over the line.
207  SQLStream s(conn_);
208  s << ",(" << object.value_list() << ")";
209  return (size_ - size) >= static_cast<int>(s.str().size());
210  }
211  else {
212  // Already too much in query buffer!
213  return false;
214  }
215  }
216 
218  typedef AccessController access_controller;
219 
220 private:
221  Connection* conn_;
222  int size_;
223 };
224 
225 #endif // defined(MYSQLPP_DEFINE_INSERT_POLICY_TEMPLATES)
226 
227 #endif // !defined(MYSQLPP_INSERTPOLICY_H)
228 
mysql++-3.3.0/doc/html/refman/dbdriver_8h_source.html000644 000765 000024 00000235451 14042362131 023250 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: dbdriver.h Source File
MySQL++  3.3.0
dbdriver.h
Go to the documentation of this file.
1 
4 /***********************************************************************
5  Copyright (c) 1998 by Kevin Atkinson, (c) 1999-2001 by MySQL AB, and
6  (c) 2004-2009 by Educational Technology Resources, Inc. Others may
7  also hold copyrights on code in this file. See the CREDITS.txt file
8  in the top directory of the distribution for details.
9 
10  This file is part of MySQL++.
11 
12  MySQL++ is free software; you can redistribute it and/or modify it
13  under the terms of the GNU Lesser General Public License as published
14  by the Free Software Foundation; either version 2.1 of the License, or
15  (at your option) any later version.
16 
17  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
18  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
20  License for more details.
21 
22  You should have received a copy of the GNU Lesser General Public
23  License along with MySQL++; if not, write to the Free Software
24  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
25  USA
26 ***********************************************************************/
27 
28 #if !defined(MYSQLPP_DBDRIVER_H)
29 #define MYSQLPP_DBDRIVER_H
30 
31 #include "common.h"
32 
33 #include "options.h"
34 
35 #include <typeinfo>
36 
37 #include <limits.h>
38 
39 namespace mysqlpp {
40 
56 
57 class MYSQLPP_EXPORT DBDriver
58 {
59 public:
61  enum nr_code {
65  nr_not_supported
66  };
67 
69  DBDriver();
70 
77  DBDriver(const DBDriver& other);
78 
80  virtual ~DBDriver();
81 
85  ulonglong affected_rows()
86  {
87  error_message_.clear();
88  return mysql_affected_rows(&mysql_);
89  }
90 
94  std::string client_version() const
95  {
96  error_message_.clear();
97  return mysql_get_client_info();
98  }
99 
104  bool connect(const MYSQL& mysql);
105 
111  virtual bool connect(const char* host, const char* socket_name,
112  unsigned int port, const char* db, const char* user,
113  const char* password);
114 
122  bool connected() const { return is_connected_; }
123 
127  void copy(const DBDriver& other);
128 
134  bool create_db(const char* db) const;
135 
139  void data_seek(MYSQL_RES* res, ulonglong offset) const
140  {
141  error_message_.clear();
142  mysql_data_seek(res, offset);
143  }
144 
150  void disconnect();
151 
157  bool drop_db(const std::string& db) const;
158 
174  bool enable_ssl(const char* key = 0, const char* cert = 0,
175  const char* ca = 0, const char* capath = 0,
176  const char* cipher = 0);
177 
183  const char* error()
184  {
185  return error_message_.length() ? error_message_.c_str() : mysql_error(&mysql_);
186  }
187 
192  int errnum() { return mysql_errno(&mysql_); }
193 
211  size_t escape_string(char* to, const char* from, size_t length)
212  {
213  error_message_.clear();
214  return mysql_real_escape_string(&mysql_, to, from,
215  static_cast<unsigned long>(length));
216  }
217 
257  size_t escape_string(std::string* ps, const char* original,
258  size_t length);
259 
266  static size_t escape_string_no_conn(char* to, const char* from,
267  size_t length)
268  {
269  return mysql_escape_string(to, from,
270  static_cast<unsigned long>(length));
271  }
272 
278  static size_t escape_string_no_conn(std::string* ps,
279  const char* original = 0, size_t length = 0);
280 
284  bool execute(const char* qstr, size_t length)
285  {
286  error_message_.clear();
287  return !mysql_real_query(&mysql_, qstr,
288  static_cast<unsigned long>(length));
289  }
290 
298  MYSQL_ROW fetch_row(MYSQL_RES* res) const
299  {
300  error_message_.clear();
301  return mysql_fetch_row(res);
302  }
303 
308  const unsigned long* fetch_lengths(MYSQL_RES* res) const
309  {
310  error_message_.clear();
311  return mysql_fetch_lengths(res);
312  }
313 
327  MYSQL_FIELD* fetch_field(MYSQL_RES* res, size_t i = UINT_MAX) const
328  {
329  error_message_.clear();
330  return i == UINT_MAX ? mysql_fetch_field(res) :
331  mysql_fetch_field_direct(res,
332  static_cast<unsigned int>(i));
333  }
334 
338  void field_seek(MYSQL_RES* res, size_t field) const
339  {
340  error_message_.clear();
341  mysql_field_seek(res, MYSQL_FIELD_OFFSET(field));
342  }
343 
347  void free_result(MYSQL_RES* res) const
348  {
349  error_message_.clear();
350  mysql_free_result(res);
351  }
352 
354  st_mysql_options get_options() const { return mysql_.options; }
355 
363  std::string ipc_info()
364  {
365  error_message_.clear();
366  return mysql_get_host_info(&mysql_);
367  }
368 
379  ulonglong insert_id()
380  {
381  error_message_.clear();
382  return mysql_insert_id(&mysql_);
383  }
384 
392  bool kill(unsigned long tid)
393  {
394  error_message_.clear();
395  return !mysql_kill(&mysql_, tid);
396  }
397 
403  {
404  error_message_.clear();
405  #if MYSQL_VERSION_ID > 41000 // only in MySQL v4.1 +
406  return mysql_more_results(&mysql_);
407  #else
408  return false;
409  #endif
410  }
411 
422  {
423  error_message_.clear();
424  #if MYSQL_VERSION_ID > 41000 // only in MySQL v4.1 +
425  switch (mysql_next_result(&mysql_)) {
426  case 0: return nr_more_results;
427  case -1: return nr_last_result;
428  default: return nr_error;
429  }
430  #else
431  return nr_not_supported;
432  #endif
433  }
434 
438  int num_fields(MYSQL_RES* res) const
439  {
440  error_message_.clear();
441  return mysql_num_fields(res);
442  }
443 
447  ulonglong num_rows(MYSQL_RES* res) const
448  {
449  error_message_.clear();
450  return mysql_num_rows(res);
451  }
452 
463  bool ping()
464  {
465  error_message_.clear();
466  return !mysql_ping(&mysql_);
467  }
468 
474  {
475  error_message_.clear();
476  return mysql_get_proto_info(&mysql_);
477  }
478 
482  std::string query_info();
483 
492  bool refresh(unsigned options)
493  {
494  error_message_.clear();
495  return !mysql_refresh(&mysql_, options);
496  }
497 
503  {
504  error_message_.clear();
505  return mysql_field_count(&mysql_) == 0;
506  }
507 
509  bool select_db(const char* db)
510  {
511  error_message_.clear();
512  return !mysql_select_db(&mysql_, db);
513  }
514 
518  std::string server_version()
519  {
520  error_message_.clear();
521  return mysql_get_server_info(&mysql_);
522  }
523 
532  bool set_option(Option* o);
533 
537  bool set_option(mysql_option moption, const void* arg = 0)
538  {
539  error_message_.clear();
540  return !mysql_options(&mysql_, moption,
541  static_cast<const char*>(arg));
542  }
543 
544  #if MYSQL_VERSION_ID >= 40101
548  bool set_option(enum_mysql_set_option msoption)
549  {
550  error_message_.clear();
551  return !mysql_set_server_option(&mysql_, msoption);
552  }
553  #endif
554 
560  bool set_option(unsigned int option, bool arg);
561 
565  {
566  const std::type_info& ti = typeid(o);
567  for (OptionList::const_iterator it = applied_options_.begin();
568  it != applied_options_.end();
569  ++it) {
570  if (typeid(*it) == ti) {
571  delete o;
572  return ""; // option of this type already set
573  }
574  }
575 
576  return set_option(o);
577  }
578 
584  bool shutdown();
585 
594  std::string server_status()
595  {
596  error_message_.clear();
597  return mysql_stat(&mysql_);
598  }
599 
607  MYSQL_RES* store_result()
608  {
609  error_message_.clear();
610  return mysql_store_result(&mysql_);
611  }
612 
623  static bool thread_aware();
624 
630  static void thread_end()
631  {
632  #if MYSQL_VERSION_ID > 40000 // only in MySQL v4.0 +
633  mysql_thread_end();
634  #endif
635  }
636 
641  unsigned long thread_id()
642  {
643  error_message_.clear();
644  return mysql_thread_id(&mysql_);
645  }
646 
665  static bool thread_start()
666  {
667  #if MYSQL_VERSION_ID > 40000 // only in MySQL v4.0 +
668  return !mysql_thread_init();
669  #else
670  return false;
671  #endif
672  }
673 
681  MYSQL_RES* use_result()
682  {
683  error_message_.clear();
684  return mysql_use_result(&mysql_);
685  }
686 
687 protected:
690  bool connect_prepare();
691 
694  bool set_option_impl(Option* o);
695 
696 private:
698  typedef std::deque<Option*> OptionList;
699 
701  typedef OptionList::iterator OptionListIt;
702 
705  DBDriver& operator=(const DBDriver&);
706 
707  MYSQL mysql_;
708  bool is_connected_;
709  OptionList applied_options_;
710  OptionList pending_options_;
711  mutable std::string error_message_;
712 };
713 
714 
715 } // end namespace mysqlpp
716 
717 #endif // !defined(MYSQLPP_DBDRIVER_H)
718 
Provides a thin abstraction layer over the underlying database client library.
Definition: dbdriver.h:58
nr_code
Result code returned by next_result()
Definition: dbdriver.h:61
@ nr_more_results
success, with more results to come
Definition: dbdriver.h:62
@ nr_error
problem retrieving next result
Definition: dbdriver.h:64
@ nr_last_result
success, last result received
Definition: dbdriver.h:63
st_mysql_options get_options() const
Return the connection options object.
Definition: dbdriver.h:354
void free_result(MYSQL_RES *res) const
Releases memory used by a result set.
Definition: dbdriver.h:347
static size_t escape_string_no_conn(char *to, const char *from, size_t length)
SQL-escapes the given string without reference to the character set of a database server.
Definition: dbdriver.h:266
MYSQL_RES * store_result()
Saves the results of the query just execute()d in memory and returns a pointer to the MySQL C API dat...
Definition: dbdriver.h:607
std::string server_version()
Get the database server's version number.
Definition: dbdriver.h:518
void field_seek(MYSQL_RES *res, size_t field) const
Jumps to the given field within the result set.
Definition: dbdriver.h:338
ulonglong num_rows(MYSQL_RES *res) const
Returns the number of rows in the given result set.
Definition: dbdriver.h:447
int num_fields(MYSQL_RES *res) const
Returns the number of fields in the given result set.
Definition: dbdriver.h:438
const char * error()
Return error message for last MySQL error associated with this connection.
Definition: dbdriver.h:183
ulonglong insert_id()
Get ID generated for an AUTO_INCREMENT column in the previous INSERT query.
Definition: dbdriver.h:379
size_t escape_string(char *to, const char *from, size_t length)
Return a SQL-escaped version of the given character buffer.
Definition: dbdriver.h:211
void data_seek(MYSQL_RES *res, ulonglong offset) const
Seeks to a particualr row within the result set.
Definition: dbdriver.h:139
int protocol_version()
Returns version number of MySQL protocol this connection is using.
Definition: dbdriver.h:473
bool connected() const
Return true if we have an active connection to the database server.
Definition: dbdriver.h:122
bool more_results()
Returns true if there are unconsumed results from the most recent query.
Definition: dbdriver.h:402
bool drop_db(const std::string &db) const
Drop a database.
static void thread_end()
Tells the underlying MySQL C API library that this thread is done using the library.
Definition: dbdriver.h:630
bool create_db(const char *db) const
Ask the database server to create a database.
bool select_db(const char *db)
Asks the database server to switch to a different database.
Definition: dbdriver.h:509
unsigned long thread_id()
Returns the MySQL server thread ID for this connection.
Definition: dbdriver.h:641
bool execute(const char *qstr, size_t length)
Executes the given query string.
Definition: dbdriver.h:284
std::string ipc_info()
Get information about the IPC connection to the database server.
Definition: dbdriver.h:363
int errnum()
Return last MySQL error number associated with this connection.
Definition: dbdriver.h:192
bool set_option(mysql_option moption, const void *arg=0)
Set MySQL C API connection option.
Definition: dbdriver.h:537
const unsigned long * fetch_lengths(MYSQL_RES *res) const
Returns the lengths of the fields in the current row from a "use" query.
Definition: dbdriver.h:308
bool set_option_default(Option *o)
Same as set_option(), except that it won't override a previously-set option.
Definition: dbdriver.h:564
MYSQL_ROW fetch_row(MYSQL_RES *res) const
Returns the next raw C API row structure from the given result set.
Definition: dbdriver.h:298
nr_code next_result()
Moves to the next result set from a multi-query.
Definition: dbdriver.h:421
bool kill(unsigned long tid)
Kill a MySQL server thread.
Definition: dbdriver.h:392
MYSQL_RES * use_result()
Returns a result set from the last-executed query which we can walk through in linear fashion,...
Definition: dbdriver.h:681
MYSQL_FIELD * fetch_field(MYSQL_RES *res, size_t i=UINT_MAX) const
Returns information about a particular field in a result set.
Definition: dbdriver.h:327
std::string client_version() const
Get database client library version.
Definition: dbdriver.h:94
ulonglong affected_rows()
Return the number of rows affected by the last query.
Definition: dbdriver.h:85
std::string server_status()
Returns the database server's status.
Definition: dbdriver.h:594
bool refresh(unsigned options)
Asks the database server to refresh certain internal data structures.
Definition: dbdriver.h:492
bool result_empty()
Returns true if the most recent result set was empty.
Definition: dbdriver.h:502
bool ping()
"Pings" the MySQL database
Definition: dbdriver.h:463
static bool thread_start()
Tells the underlying C API library that the current thread will be using the library's services.
Definition: dbdriver.h:665
Define abstract interface for all *Option subclasses.
Definition: options.h:58
This file includes top-level definitions for use both internal to the library, and outside it....
Declares the Option class hierarchy, used to implement connection options in Connection and DBDriver ...
std::deque< Option * > OptionList
The data type of the list of connection options.
Definition: options.h:490
OptionList::const_iterator OptionListIt
Primary iterator type into List.
Definition: options.h:493
mysql++-3.3.0/doc/html/refman/structmysqlpp_1_1RefCountedPointerDestroyer-members.html000644 000765 000024 00000007641 14042362131 031751 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::RefCountedPointerDestroyer< T > Member List

This is the complete list of members for mysqlpp::RefCountedPointerDestroyer< T >, including all inherited members.

operator()(T *doomed) constmysqlpp::RefCountedPointerDestroyer< T >inline
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Comparable__inherit__graph.png000644 000765 000024 00000042143 14042362133 027666 0ustar00tangentstaff000000 000000 ‰PNG  IHDRȓXsRGB®Îé@IDATxí˜EÓÇ 8rFT@%(sĈP1'Ä„>sÓ«¾&Ìèk3˜³˜#(APAPPAAEAÒ!i¾úõÙÇìÞìÞîÝÞÝî]ÕóÌî„îžžÿÌtÅ®©(‰‘!`†€!`ä 5s¦§ÖQCÀ0 CÀpó¶Á0 CÀÈ1ŒyçØ ³î†€!`y!`ä3gΔ¶mÛæ^Ç­ÇÅXµj•Ô¬izT1`lGRŒy'…ÇÙ‰ÀŒ3d÷Ýw—?þ8;;h½J Úµk‹1ï” ²Bq˜¸ˆm†€!`ÙŽ€1ïl¿CÖ?CÀ0 C cÞq€Ø¦!`†€!íóÎö;dý3²Y³fɤI“2Ú»O?ýTî¹çùàƒœ/8£—±±~øAXâéÃ?”‚‚‚øÝ9»]¿~}©Q£†-Y†AŸ>}bž)cÞ1p؆!`¤ŠÀÈ‘#å®»îJµxÒrm~øárÙe—Éܹså­·Þ’vØA¾ýöÛ¤õ*òàsÏ='Ç/vʾ}ûº>;£;V®\)Ë—/’oÚ’Œ3F~ýõט'ʘw ¶aT~úé'Ù{ï½åÐC•6mÚÈÍ7ß,û쳬¿þúN»}ã7äè£.ºàc=VÞ~ûm:t¨l¾ùæ®Îã?îŽÕÞ©S'éÒ¥‹«óÈ#Õûúë¯åC‘ýöÛOÖ]w]4h;vÆgHÿþý];Ûo¿½L›6Íí‡AÃ!¿þÄOÓß>ÿüs¹öÚkåÖ[o•|°ˆyßÿý²á†JëÖ­åÞ{ïuu/¸à9õÔSeÓM7•½öÚËÕ¡ÌÎ;ï,ýõ—ÐÇO=PvСCwŽm¶Ù&¸ûî»5“Ê ‚‡~8Pæ|öÙgšYƒ—_~9˜q÷FÝ+îJtž‰dçW7ŒÐÏÐ1ÇãÖÙ&¸ò«¯¾JÔlÆ÷óÎ8¤Ö !ý aCêŸõ;S3L7Ú »ú‘UÛëí̳:æq´'ßAihÐ0Eä ¢³©sÛm·‰ú“Ý>˜›ú®cÖ9ï“O>é6ë“0†™šà9´oæ6Ûl3a0¦‰ˆ>ù~Áì9?zW^y¥ xCãÆÌN€íù:œ?ª Ç*`л\tÑEE]àÁyX)ÀàôÓOwn†¢)¬¬”7ßüFÂÕÊÀ/Èøñ3Õb°J5ùú)´PqE¸~\+Ü'®w Ö™~ýú9W òŸþqÑn%*CpŸêQUÜ>ª”É$<>—WG1šôï?4h×îâ }ûË4 ï¼bKÇŽ—#GN W-·õTÖ”ʨ©t<þøã] žº \°#„jmq}$˜P]3A¯^½e¼2·@ã‚ï¿ÿ>P×Bp '¸}7ªÐäê«äêÒe¼.è‘M"4xÍ5׸zª êúqëʃ?þøÃ­óóã?´Ëý L¤¯*ˆùùùIƒufDжmÛ¢v Uá#PÆŒ/%a (ÔJ\ýõ?ú0dÈ¢v¢V,`-%qÆ Õ´eÌÉ:°Æ\ô&›l³Í>ód„™%žÐÎÒ!¦{E–ÒPT½pŸ¢ŽsžDeж’šwªT·n{ÎV8ínõjÆü5ññm ð¸,[¶<~wÒmb0óÇS¢ý”«];±U#ÜšçvÛmW4å Á˜½8â75ë ‚.†@9gA›Õ™ Î:ƒBg8ÍSµŸš>üÉÄ*¼ùæ›Â³ˆˆµm"À‘%аñÌ' LÄ2@leJ„˜,Pë?Ó8 %nK¼Õ!ªïá}°FÃÖ j†€Ns¦»t.³#ƒ¿'’©0‡:>0è©§žrfE_.Ý|ìQÜȉLç«jÉ(ScÉÎQÖcÓdذá:ï}œóiçåÕ’üüe‘ÍÒWMý#ergíÚ…óèKj3Y° &nLä0oC&¦e¢ñaˆ¸N¦L™ââ(¼°–(ˆÌpHÜä÷±îƒ!aÞ©qªí& Lôíð –&1Y (ÁœG‚kwPº´æ L·¦•7 œGŸ[º„F‚ÏÑì ¦ñAh>ãÇ÷ÅŠý—¤¦Î¢` |ß1èdW15Ž%»iµ !dÈeêÔ›4cݱêî¤Ì.O5¿âQýÙ}-kzÇtCâ)`Øháü,/¢ur/‰-P;ŽfE+’Y0R(>‘5s»`IŽë 9X-"5G»Eu¥¸iÉýŒŒL!úŽ‚…‚8ŒË/¿ÜÅQüüóÏþpêÿQöuÛgÙ€x%&i)¯+PM'P­:øïÿs ub|‹$B!q ôþûï:?:PaÁùÙG‚ü¥ø),Xà’®`¼o[͘Î5§šójd¼ó]jfµ€uÕte.) I\H(•Ô.>Jü£•E‰ü˪}#FŒ zö´is‘óg›Ï[5H›2"ççeCÍè.é ëøtuú^°lÙ26ƒ;ï¼3hÚ´i –—\Gµè€ç˜d7Ê”Õçß®Èç­ÌßÕQ O Zi Ú¹{–ˆ7Àç­.@Íç®=5»»²*(*Dºuvèž 6x.Y4¨ÐC-G® ?÷ܹ‹ƒW_ÞU®ë©ô)• LwÞy1Ey†4 nÌ>ÇÔOîž'ÖÂäûB£§dˆ¾L:ÿQ‰¨^è ­t‚S=7ç hO­ %V‰bÞf6×·ßÈ0# Ú«›ÄT-¦Â4D€ &ÏdDàT8«™ja1Aø²1‘2m(Õ9Ò>0ˆìk>ƒSÀš‚ð¯&k—üèLí!Ÿ:Ó¼”‘Ë7Þ˜ì²*üXË–Ôoœ[ ZÎ>ûlQa¨X¢‚Áâ}ÓŽ…“ßÄL|…÷‹‡hXRe¸|¢uéäƒ X ûà B »Šµ•Î~ÎÁ4ÆpüH:õy§ƒ–•5ª!DÙNR Ò‘¦BñAdKcÆO©ú‘vv²¨À pÛ©´Ëà‰/–kc€Æ'kT6jd.s<£NÖ*~p¨0á—öŒÕï'_qu'cÞÕý °ë7J@m”d|uŒd-DÆòÍmù_&L0Zeѯ’Žºä’K“!qÌ< _~ùeü%ÙvšT%žé–Ôš(Ö˜0…Óâúý¹ˆè{[~ÿ6U¬ü°µ–3ˆª«¸1•‘Á)þEOçt̵D3Œ'Údú‘Ò˜} @#e. Ÿí䳜D’Õ9ºaÂDM¶1M^!š|Ãeã8&v"‚aìÝ»f5C›W¿¸hÀš+§I?䡇rÑ·Ì. ш¬gÉÚ%S™x¾0×¹‚@ <å¹ÒYëgõE€ŸO‚ïB“ßÍŽ/f%"HP.J Í%);!LuLAÙrË-Y—öñòq‰l%†@*ªÏhä>z’êù˜¾ƒo“ûþø™’ƒ/ÜûIèÁôµLûµ›î5¤z­©–CÛDä?[ì5X+[ºcýøÓÄ|CæmddDRkö¦˜.iÂ7½ÂïdÚߢ&í!Ñ¢:ÇØMÉ ZU?phÞe7=„me.M&ÓKHÕÈ÷˜Ã¤þN÷]i¿éG¤ÌÜe—]\?˜Þ¤\0`ÀwýŒ¥k³¤vùæµæH.—ï5WF´¹ÇÇþ3‡€¦Î\‹ÖRuAÀ|Þ&×eHú>ú¨ †â:(i¿ðÃ’B§Z8 “'ëhv>ø (ãtQœ¤[ļ«9‘]’Ã;LXÐöY½ÐÑÀ1¡“…Lç,»$DC³M„rIí¢ÉóQLÈD0ûÏd&:¯í7 C UŒy§Š”•+7tî°›¢Ãç ar˜8ý¨’Ÿ4S…ÈâD¤ê}÷Ýç*Ÿ–d?~OòPã[%Ê_-¦pL¶:×4YÓEÇ’åo.©]2Ža¶'3Ì„ü̉½ŠN¿²ZóYÏ#òÃ="cb¿º_Ô¶ C z `Ì»zÜ笾J¦æÀl>úh—20•yøOYðU-Œ€ß?w<1]?+SžXðs¾T(YþæTÛeŠ׆&N VÊÌ{â¥"#·y¾Y!Ó^¨é׎þØB*×be C ê `Ì»êÜËœ½’qãÆ¹èe¾Á‹9œ9œÉ4c4k4Ø>}ú¸ˆð‘#GÊ-·ÜâB5¬>¯",03]ˆ€ ý”¥c¢˜ÀSeÞE E¬”Ô.‚Â]wÝå¾C͹ûöíë¦\…¿V%Ëæè‡¤Ö|;æ44ú¹Û"‡Í9`‚ÈvCDÚïŠ`Š'74Ö[ræ¢*cžÛ0"0æŠíªX`>L%ÒïèºÌZžáÆ÷í­œyÆÌÿdZ#gá‹E˜¦ño£óE#L×´Í9ø” S̘î䣛ý98žù>'kWƒæÜ$2M}õÕWrÊIÇKýÅjþžr«Ègú±†WÚˆ¼®_Zögô©7 Òj‘Zk>â "ä ¤Ø’û¤biò÷Ýþ €MóHØV!î‚ÁHÞÀ¯æÏŸï¾rÅ—ˆ„ó)I4Â÷¦} ÄL]p¢v‹]Ãè¾"ùÓ5£šÂýÒ(õo?gª¿ÖŽ!`ä>ƼsÿÚdKf•ÍÓì\Í»ªyû¸â½ V‰Ô(Ì¡\ü í1 C u,ÃZêXYIC ùê‡þæªB¦]S“l8mz‡ÄAeƸcñ³-CÀ(5¦y—:«X-X] ¦îŸEšt*~¹LßZ:»i×o]ü¸í1 C œ0æ]NÀZ³9ŠÀ¢)ÿš¿•1Ü™žµñI"ÛÞ—£dÝ6 ªˆ€1ïªxWíšJ‡~ëöYL†¼…ú¯kÖ+]{VË0 rBÀ˜w9kÍf+óEþ÷¯V­ÿ»Žˆè )Smöd0¶Ë0²  X˲bÝÉ0d)ûíB¿uó.…ZõF‡'8‰1îÀØnCÀÈ2ŒygÙ ±î”üŸDj7©»vñÊͶis´H³-uš–=îŲ=†€!‹˜Ù<ïZuîóª%"~²&¨l®Î«&Ùžo‹4í\‘±k7 j„€1ïjt³«Ä¥Ž;[dÑÔ5Ae­t^u½õªÄ¥ÙE†€!*ƼSEÊÊ•3,Sfz ænr{†€!`CÀœ€Å ±ŠÀ‚¯E¾º@öXÕ ×Y£Q·îY¡Ý°“†€!K˜æKw+Wûºr±Èâi…9¿ã¯aá$‘f)ÓVówæñGmÛ0 C cÞ Ø®2"0ÿ+ɼ |ÉLÍR¦_ÔÚöþ26lÕ CÀ0@À˜·=™E`Ùš¥lßBMš e­tiº…MÓÊ,ÊÖš!`TsŒyW§`õrMXòºÈ}JwÕs×hÓ|úr÷—"R‡ÚvÒµoµ CÀ0RBÀÖR‚© šó¾Èh5]¯Ð4¡;ëç+[÷Jý¢&^"òËó"ËÿÖ\ßÛjÓíψ`Ü4iŒ;u`K_ræÌ™Ò¶mÛÒ7`5³U«VIÍš–Ý/knHŽtĘwŽÜ¨Rwséo"ctÊÌ{å?Êpu˜;:Žyë4­…S4`¬©Hý ŠŸj­]E69E¤q=f̹8@¿gÆŒ²ûî»ËÇ\ñ'·3f Úµk‹1ïŒÁY­2æ]Uow°RäûÁ"__#¬Y­ ´Zõïï¨OzÛ5AeW¦½®~¬ã¹hæÝºwa]û5 CÀÈ ŒygÅmÈp'æ~.2ê‘eЬRm;žæëÜêSó·NÏê|y¡)ܦiÅ£dÛ†€!`d-Ƽ³öÖ”¢c0êÑ'‰Ì~M™öÒÄ Ôª+Òõ5ƒ·O\ÆŽ†€!`d-1ÌÿY÷îݳ¶³Ö±ä¼}™HýxÖBåÛ¸¶ÔÑovD¸¨å/‘³ì O~–¼½¨£Ç{¬<õÔSQ‡²b߇~(Ë–-+Ö—uÖYGÖ[o=·;h;J…À¬Y³dÁ‚²Å:0Côé§ŸÊĉ¥sçβÇ{H­Zµ2ÔrÙ›ùá‡\#:û±†xævÞyg©[W…âjDcÇŽ•í·ß¾]qù\ê/¿ü"n¸aÚÇ0ï>úHúöí+'¤Ú›QÎ!äËè`©Ô[ù{á²êwi¸b†Ô_5Kê­úKòV/–U5êJ“zË䦋‘S®?7­küæ›oä™gžI«NEþâ‹/dÑ¢E2jÔ(™?¾tÐA® l°l·ÝvƼ3xCFŽ)àý¿ÿý¯Ì­´uÔQGÉï¿ÿ.ûì³¼õÖ[rÉ%—Èc=&[n©iÐsÏ=§!#«åª«®Šé c&8´nÝ:fUß3fŒœyæ™rß}÷UõK-·ëÛe—]¤´ÌÛæ'”Ûm©ø†WÖh$5×’…u¶’9 zÈÌÆý仃düZËçë¾"Ÿ¬ÿ®ŒÓõ‰-o“Ÿ›ô¯øføŒÿý·ü÷¿ÿ•×^S7Á¿tùå—ËM7Ý$=zônݺ¹u¶yA`æÏ>û¬`=€‘£1Þ{ï½²ùæ›Ë¦›n*Ÿ®±J/¼ð‚tìØQÚ·o_Œ1ýôÓOrþùçË?þøï³÷¾î½÷Þr衇J›6mäæ›ovŒqýõ×—{î¹GÞxã 9ú裋.\Þ~ûm:t¨Ã„:?þ¸;ŽU®S§NÒ¥KWç‘G)ª÷õ×_Ë!‡"ûí·Ÿ¬»îº2hÐ wìŒ3Îþýû»s£¡M›6Íí¿ì²ËFùõ'žxB˜þÆ=¸öÚkåÖ[o•|P¾ýö[WîþûïwÚ ’{]pÁrê©§º{·×^{¹:h0hÁýõ—ÐÇO}úÈ!CdåÊ•ӹ뮻œ`p饗ÊÔ©S‹šlÕª•›Ú³í¶ÛJïÞ½å½÷Þ+:–m+Ž ÁTa¨6ôFˆÐ³ãŽ;Ê+¯¼"AàòòË/ËV[m%ÿ÷ÿçî‘o¼Ñ]ËYgå\&0ò¹s5aÏ¿”ŸŸï0å8Löa\Ó§OˆÑ£GËn»íæ0¥Êf›m&áuLå0Ý0!|!P`I¡?üðÃr÷ÝwËþóᜳgÏ–¯¾úJžþyWæÉ'Ÿt;Ó¯¸Çüñ‡FFŒáûW\ᚇéÓW,I˜é?ûì3Y¾|¹fè×É'Ÿìƒø2Tþî»ïäé§ŸvV+¯¼2Ü]÷­X±ÂaаaC9÷Üô,[1Ù†!PƼKÈg ¶˜TaFø¯§L™â48´ätˆùј«ˆï€©øõß~ûM>ùäiРӬÙFÓƒùxjÒ¤‰c hjx äñÏÂø²‘7n,§vš³Dp]&àǵµlÙÒÍÇDÆ\±8`…ñbE‹Eø™q­ñ„uðÁ;WíAhÆ0ÄsÎ9GÞ|óM·mÌ!¿Žo{éÒè Ëwß}×Ý'¬)‡v˜«KŸ!,Xºvíê´f¬);ì°ƒ»>Žcuàù8üðÃÃǃ¹ó÷í·ß.sæÌ)Ò›7oîö¡‘'*ƒFÐ>óæÍsÎ!0 u££éãº12Ê Ÿwy$v1G6kÖÌ ,éÔKT‰í )|›m¶q&¯De+cÿ¤I“d£6˜‚'4&´=Ì}¥!´žŸþ¹XUfÎU¾¤óÈç|¨óÅU³j²YFO…Ù­†À íµ·tO‚Ù"«U‹-bªÃ”ëÔ©#˜@¡cŽ9Æi£1…t£Q£F‚¶ŽÖŠvÊ@é8Ûˆû——箕>£•¢z‚©½þúëR£F ÇàøÇœŽ¹ ú†np®þ|°¨À,ÞYO¼s0|ÈïïóåÂÿ¸-`¦a6l˜`šFÈÂâá Æ‹…Jv/9îÏÏ:}àÝ@³¦ÞþûïïŽA3AȾûîY†wÈ8PÖÏ Ïï3ÖŠLмyùêN˜®BS—L4W¥Ú@ _k­µÊËòÏ?ÿD&ÜiƒH¼>x„‹BúGªÂoÆ` ÓÅ'†¯3¾*üs0'^¢‹/¾Ø ¶˜9ý:A0˜Ó0zâeÆHø5ÙFûBJFÓÅ߇T΋‡y M„saŠÃÿyçw½¼˜Ùè_`"/½ô’ÓNÐÈŒh³#Öú6_†~á“»æškdíµ×v/>š’';(æ=̽#ñÓg¸œŸÁ ‰À"ˆ¶Ñ1ç… ¿ûh3|¾p™×Mùi˜.¦^]½T3¸­*¬Vw­«—¦}¾úê«N\3¾k„£ÊJÜkîÑññÂbJæ9ð„¿S¯Áyžs‘¸V­‹Z$L4vþy¿ \ƒ™ƒóòäÛA+!(w!‹:ï7Ï<ŒÆÁÜ`¾ø„Ãëø¬ñgóâƒG@ÂLÍó‰öÍ3½xñbgu¡o‰ˆ>ù~ñn`Òçá}g|@ãf\€iÓ.ïþ}_‹NT°@¨€A#ã÷D]žÁ~ýúÉC=äÊ¥ëJ)(X©ÂâwòÄ£ÔUó£jzµÔÔ_àNѤInƨ ŒáNÀjƒdŒÇ¢ïÀ²‚àÈ;DÇy×à<ÔÅâB%Ï(÷ï¶Ûnsc7¤°ÀLp¢g¶õj¢Jå°ŸçŠgŒ%JóöÁIþÔ0‘xÂôñ_³@¼Äj¼¨ñnÈ÷ß_4ÐÇ·™MÛ†¡åB=€¾ï0f`~ª8N½[g-˜zD­C§œrŠ[x8ÌÌÂŒ•AA™çß ŒžÂë<×,høœ3¿'Þtbß~øžlèé–[nq«¸3x7±  œøöФxÏ}Ÿ`È.~7••á¹B°àZüûF!˜>cãcHýú©0ÜšÊt~бdœâ7YÇKö2×Þòå…®·‘£?>@”qñžQ¬Y0;îÌsРAŽ1²!«|‚qíÑGuc& A‹‚´‰‚D=O>8Î îc÷‚±knø L54ÉøŠU&ñÁ¼±!„ð~àºó’ðžc”?fQ0û…˜ o)ôî¦Dí—vÚÌ›¡ñ2÷’ÁëHÜ03˜ />/˜<Ì’™m=¾€ç…'¸„`ˆ ‘x¢,ƒ' uýàƒIŽA‰ s„ç¦ûu@Cû"ê1XÃÄXx( ˜ƒ4Z ƒIÛ¶mtÅKaCÊâ:ÐØaÎ0~, z`áÍ,hìžÙ&*C{œ¦ÍCç™7m0 %œÅ`Ã¤Ê ÈƒŽ©­=µÂußýðÀ²0`¡! ˜ìºë®Î\œìA~ãuiLšZ¨i¯i®øŒýéBí.æ`·;E:ž³ËmL¸PdÊÅ÷§P>æ!N¡|ÌI”oöÓuÒlªö5Žju¬ý?7n¯n¦Ûÿ¯.‰h_Rl¸MónÅû‘æ´eî7]˜6Ùd“ð¦[÷̯Øw <{:\&êÝ_O”°Â[âË—´U/ܧ¨ã´™¨ ‚E2Âdž*Õ­Û^ŒÂiw«WZmMÊBPR{©¯¡8ŽG0 "±½ÏØïO÷paŠøe½‰û? &ä Æ ã&¨„›ÇÍZ`¸He”÷Ì‹Yš›6»ûö¢þ¹D¦À Ù¡%„ ó9B€o?|,j†IÖ'"´u„ÃõqÃè“7uÇ›Ÿ“•¡n”¦Bh-ìÂæÊpÿ¸F–DÇÃeYGˆò}?–hŸ>¹Í±X$&DžóÑ¿ó¼;%.fGÊ„Zf9þ³x ^CÐäYÁºÃ|ñð€KŸ±ö`QòþGÞO,TŠÂô V‚#Ü{*m1ȉN€'‚+H˜,ý³O|³@€bÂ"F€R6šJ@¼…"ÜWæy5]ã ãƒÂÇ*sÝ›Íù/ ¡ˆ¡ð0¾ø1±’ûˆ2f€Œ“Œ×Xwy¾pÙ@(/ÄÅ'2_ŸÈòø É²ô·¤º¸ ±§bÉÅ…Á'-*©íðñXN>RÊu$^"µ‘f<ã¦)^,nP<Á°’QÔq¤““ÕõÇ(ŸÈ<˜N;¾=þãÍË\Ÿo !^H N²2á$” m•¤Q{é/\/ÙzºŒ;Y[±ÇÔ³Î^±»l«Ú Àì'.þJ‚Xã…ØTÀ(K`Œš~ ‰1mËûL‰X.µ•)•N—S™–-eãÎÔ¥âEbæ‚?i›±’„7ñ”lœ¤l"†>Œo3ÓÛ‰xM¦Ï“qæM@Qºæ*¤°öË‚(ÂR~Œ'ꌱû°NDEÔÆ–²-C z"€ -ŽÛ¬4Œä2Ä€À4"¦r¢Xä"ó®ÊO–V¬GñÊPI×L UØ’“(81*h²¤¶såxÆÖ0ÿ¤Ë¸‹fÊ0È(&¥‰W$Øô3J«®È>”ö\5d•~*t¶4//µ‚ÄQú¥mßêLÿÁTΔ L•˜¹É©I*)07ƒ6Ó‚0ÍÃÄ(²1}m&qÉŶp‰¦Ë¸¹NxLxNœ˜È™‹XÅ÷9ãšwü l»âà{Þµb¾çý›4\9C¬˜%uWó=ï|÷=ï¼`™ÌjxˆLo1_¹âºkgª¢0“U¦e¢ñâŸ&¹Ÿ-¾lÜ=©’w •„©œ %bhÐþÃ|ªç²r†@¶#°†ù¢{÷îÙÞgë_ÞÒÀûý·Y¨©ê2’:u¾V„me±?ã1‘§>OÐP’Ýø§2ª\²9`-™tƒ)ãë'ÚN„æ+ ;•€µD×_Ùû™âÊÌ"£²!ÀÔ·’bš¢Î£yÁÇ‹f”£¬RSøè“¤éì×4œ\9tjܸ¡<ùÖy²qû%l·!9¼Æœ¹ [J”+Œ;ÓxTt{äÊ0~QѨ¯9_ ó^³ÛÖrZšÍj×á"sU¥u¼f@ûKç™E$X¥)cIÏÙR¥f¿ÔIžò1—ðÀÇêSÝ£@:ßÊŽ•È%ü¬¯†€!ýDU³¿ÓÖÃhµ‹H¯éš„~ÚÍ•¡×¬[¡ùÖ"›œTÈØ¿»E¿×ØF¿ÄÐAó±NŒ-—£[$žáÃ5dÀc0Ì›íd„ÁÜw#CÀ0rcÞ¹p—JÓGR•vºHÓ˜NYO¿P«~a+5ô–¯ßC¿ºÐ§03ÚÞú-Ü#4gün/‰Ôm}¦Ù¯Š,Ò‘Hv¹THÞÁ§Mù¤c<‘YÄ .‘ž—D> /ÑÊ$!=Yü˜Lö?r,c$w7>(²â‘‚7La‘„s†€!PYó®,ä+ê¼õ×ÙC™o÷×5‚­µæ o(Òj§¸³ëcÐT"Ôß nÿ¿›}&òÑA"Ï5ù`_‘o®™ýJtÙ ØKV<‘SÍ:ü™¨ÓSŽé(ä¶'ý,É‚XçDE“V–¤¤6ä[¾þ³~|Ò…lOž8©eÛ¶më²:Áü+ƒ8?B‰÷'ۜĂàºðÙÊx–윹‰€1ïܼoé÷š¬g½Ùi¨jÞ=Ó«ßå¿…"9Xëw:_“ «~ÚƒúE±ÂïÇ6V~Ú9_YëׯŸËsL„&ßü%)S‡J"æ“’V‘¼ÚdÜ"¥#ŒÚ§Ç…ù‘O¢uÇÖÏ·Oæ@´q¾‚D*aæ2ó%6rùW$!ø(nû/L œ«8 8é"`OMºˆårùššSsyi©NKeüŠl9H5ù7Õ—^¯xKËæˆ¼¹¥È—§ègC•ÁãGV/WŠ=äÁ‡¹n³Í6.gµÿ|IM‘&“…t‹|ðàºë®sé;ñsÇSø³~œ/ÑgýèÙ»ÐÄùFE3ïø~Û¶!`T/ŒyW¯û]þWËw¼w¦QìÊç}©ßM=®ÐÜ>îÌ2Ÿm“¹½Ì5ç1ä°æ‹UÉ'š5šqŸ>}Ünø¨ ~kÒ)•޶æ ?vIÙ»`è¤ÿå+GÆ‘AŒ>Udîdß_û7 ê‹@L’–ê ƒ]y¹"°r±Èâi"Í»?ÍÂI"ÿÌ*œ²V§EñãIöøhr>‚1tèТ’$"‰‰7…÷èÑÃ} ‚icø·ñ“cBGç³°$›àëu¤XÄŽpÀŽügýø$¡'¾‚Ã'{×Î;ïìwÛ¿!`Š€1ï …ÛNV _Î9Ÿ7V¤ÞÚÊÄw(däªy¿Á†ÅŠGíH7£Af0j>šÁ·ÜÉ“Ì41>)ƒ‡ªBö®(¬lŸ!`T ŒyWûX®BÍ×LGÃÔ>oŒ~y@ó¼n:  \—]‚!`™GÀ˜wæ1µËqg+“ŸR¨£¥·Ò¥ÞzåyFkÛ0 ¬CÀ˜wÖÝëPRViº×??-ÔÎÑÒçêRK£Þ÷|[çªo‘´ª4 C ª `Ì»ªÜÉê|K~.L>SW}æñ4ã)eꛚákX*ÿxxlÛ0rÍró¾Y¯Ã4lÞŠ]_ðÈw7‹äÿ¨ÑîÛšÛ[í(²ÑQ±ålË0 BÀ4ïºYÖÕ2 €¹ˆv‚áþ/²ËðˆÆHƒj©"€±]†€!eóβbÝ©D–Ìyo ‚ãS©ÇçR[tÎ$W‰Ý´S†€!`ÌÛžC Œ€›®¦Ú¹Ÿ²¶p²ÈÆýD¶½?\ÊÖ CÀ¨TŒyW*üvò¬G`uúË5 ®I§â]Å¿”ìpª¥××/¶†€!PAó®  í4Uùôó¨Wjé5õKk˜ÙYÚ«ÙáÚTÁ ¶K2 lAÀ˜w¶Ü ëGn#€¿Mœ?yeàñ¬Òϩ֊ßkÛ†€!`¤€1ï´!³ †@)Ý·ð-hçd†ã¿Ñ¦¥l̪†@uFÀ˜wu¾ûví‹þsGf8´ôúŵºÞ¸}ÅöÅÎf9€1}ÖùœG`ÙœÂô®µ›¿”ihf¸-Õ ßMËÔ9>sæLiÛ¶mÌ>ÛÈMø¢]Íš–_ 7ï^åõÚ2¬UövfC@?ª²Nb–Ìùy¨È‚oU3ïXhf_{W ˆ;Af̘!»ï¾»ûnyâìH¶#P»vm÷9ZcÞÙ~§²¯Ƽ³ïžX BºhZWhõr‘ù Íì}î˜wáû5 ꊀ1ïêzçíºsšuÖLCË^[O C 0GK9‚kM†€!`å€1ïò@ÕÚ4ª³fÍ’I“&eôJ?ýôS¹çž{äƒ>p¾àŒ6^ÆÆ~øáa‰§?üP t&A5£åË—K5l);ì SFKIƼK œU3ª;#GŽ”»îº+#0q}øá‡Ëe—]&sçΕ·ÞzKؾýVƒõ²„ž{î9>|x±ÞôíÛ×õ¹Ø*¾¥Q£F-¥À`úôéeznŒyWñÌ.¯ú"ðÓO?ÉÞ{ï-‡z¨´iÓFn¾ùfÙgŸ}dýõ×wÚío¼!G}t@Ç{¬¼ýöÛ2tèPÙ|óÍ]ÇÜÿøã¥S§NÒ¥KWç‘G)ª÷õ×_Ë!‡"ûí·Ÿ¬»îº2hÐ wìŒ3Îþýû»v¶ß~{™6mšÛƒ†B~ý‰'ž¦¿}þùçríµ×Ê­·Þ*>ø`ó¾ÿþûeà 7”Ö­[˽÷Þëê^pÁrꩧʦ›n*{íµ—«C™wÞYþúë/¡'žx¢l½õÖÒ®];yíµ×\=´úvÚI6Ø`0`€Û÷믿JÏž=åÈ#”ë®»Îiþñe(ˆ–½ñÆ»iz/¾ø¢«ë.\(Gu”À¶þüóOÈþ Ì# R“‘!`ä}ôQ SÅ’öú»ï¾ tÄ”ñ>ú¨[WM9x饗e\j¸A½zõ‚yóæÿýwP¿~ý`öìÙjSjš°ƒ:¸sl³Í6ÁÝwߨ™ Ô|¼üòËÁäÉ“ƒµÖZ+˜3gN ‚B ÂƒkSmpÖYg¹¶T8puØðëçž{npÎ9ç¸ãñ?ʃµ×^;PÁ"xþùçƒõÖ[/X¼xq Œ6 _&LºuëlµÕVjêúvà 7¸zS§N TX¶Øb ×´2ó@…wÝ*¤¸ëäzÁŠ~(#¢ÊÐÞ:묌=:¸ï¾ûf\{`©.„@Ž@%‡}SÁ(þRŠmçååj~.¶?v,Z´È=+¹Ð×lì#Ïœ ‚¥îšE›g^² ¬A qãÆrÚi§9-°Aƒ‚6¼bÅ ùí·ß¤eË–n®8&jæï±Ç¢ŒQÚ·o/gžy¦wÜq2f̧Å2¯\™¯+×»wïb×§L^>ø`·ÿ ƒr<hÆhúʘeÏ=÷tÇц=ùu´XeÈ~wÌÿ»ï¾+»í¶›ôèÑÃíöÙgY ,Xºvíê4|eÐÎÜÎõqMX:vìè–‹/¾X~ùåÁÜÏrûí·‹ ®»yóæn_­Zµ"Ëp>4êwÜÑ-XhÏÓ«¯¾*œíMÿ™gžñ‡ìßÈ8f6Ï8¤Ö !=l´ÑF¢Úcdø'I &ü̯¿þº3)³NætÌИª·Ûn;Á¤¬§kƒºuëÖ 7áÖ›5kV´@&ÌÖßÞWT0´‚ésv˜† æd«V­Š­^½ZV®\é¶1aC0ê-Z¸õð??ûè¦ì}÷ÝW0±#¨xB˜q«*”° LÞ8PÖ8±ù¼I“&rþùçûCeúŸ7/_^}UçùC`éÒ¥òÉ'ŸÛ_šj}rB!Â,î£ï¿ÿ>æþ–¦Íò¬cÌ»<ѵ¶ ,G_õ;ï¼ãÖÑXñÛ^xá…Îÿ ³ƒ©1Hœ`šø¿ãIMôŽ1¸Ԍî‚Ï(ƒ ½òÊ+®]Ö‰PWó<«Eëhíœë…^pûÕ”ï|Ø't’Ó¸iGÍ´B„û_|á|ù®` ?ôf?nÜ8iذ¡³,Ð×§Ÿ~Z8à™8qb±ú÷ß—De°ÐÞØ±cE]NÛ÷]Àâ€Æ}ÅW8?ü¨Q£ü¡´ÿóó dĈ±Ò«×`éÖmúæ‡é=šœv;U½Ïë)§œ’‘Ëüæ›oä„NpÏ=ïëd1ô‚hÔIx~2uþ¨ö“í3æ ;fTQа!õO‹ú©&‰[ý˂Ʈ~dÁDN°Ì³:æq´'ßN:u„ 44h˜"u ¢³©sÛm·‰ú“Ý>˜›ú®cÖ9ï“O>é6ë“0†™šà¹îÝ»»€¹Í6ÛL<ð@×G×@Ä}òý‚Ùs~õ®¼òJð¶ÿþû;3;v´Kpäëpþ¨2G¨€Aïºë®rÑEcçaÒƒÓO?ݹŠ ¤°RP°RÞ|ó9æ˜!j~(¾ ãÇÏT‹Á*ÕäcsÛ§Ð\V))hMcäŸþqýPÆ‘ðxø@^^ÅhRпÿР]»‹ƒöí/Ó€¼óŠ-;^Œ9)\µÒ×S X+)h’‹ èP-3îz!UÀr•*,¹ºÿ)#v’s¤È3@°c|ТšÚIáêù Iµî!ºúC4VÃ=Cá6 Êd羪Ðäçç§°hkNþ±CÀ( h˘“u°Œ©¾É&›Äl³Ï<aFf‰'´èt_ta( EÕ ÷)ê8çIT†À¶d„æ*Õ­Û^§³N»[½ÿùŠ„Uûõ{8á1ß?fý’(•rñe°.(?‹i:/¯øsS@7’MRöˆ#Žp1Xz”¡¹xúœµmVg18K. e´NóÆTí§1†Ï‡u‡éŠ'Ÿ|²Z1ޞ㨠E Y 4©±Ûÿ`Q¢ÿÄS࿎y~¡Ù7mÚÔÅ‘ðUtÀb^¸£¶nÕ 6æLÉé\õUW]U¼F=’©ø9Ôáv0áEyÂ4J”vT œ/SšÿLŒ•æÜ©Ö)(˜&Æ ×yïãœO;/¯–äç/‹¬>tè©:—¾sä±ÊØÉì\ %QTÐ$3bÄW†¶T[w}Ñé“Á–[néb?ˆÁP·KpõÕWšiÐç\*̺þºÊ ~ÊêóFz02 C Û™7™Ø4ú:ÐùΚE]ÀPâxæýã?02‚È¢²›¥ÄÀ¬Ñîn }ì±ÇŠBøüÙ²žˆy‡û7wîb~&„weÅz*k©vTµîà¼ó΋)cÔ”¹1ûx>tzX nǼÃ=–»AWá hÞïƒJÂDÊ´¡øùÔä‰rÂÇX'ÈÎûÅÃÇJ,)à2\>j=Ü6ÉŽHıöÁ°v+Eµ•‰}Ƽ3¢µa>>‚‘ùá¤.M% ‰ŠÔá"ª¸$Ìnæ!&0ˆrDü&ÊdÆ@‹Ïô˜cŽq)¾S£ìD€H’â¤DÆUàG0 Éu`îa"hñòË/ïª2ëÆ¼«Ì­´ 1*‚{`®hGhà ²¤"%(Š`£é|l—ð"Yv³Tƒ~þùg¹ä’K3 àˆ„_~ùeÔém_ @R•x¦[R·Ðv±Æ„)œB×ïÏ EßÛôþmªXzxYiCÀ(LÚÀã¢ÈaÜdÍâÝd å˜;ܶm[—ŠÒ÷ÙÍ`ìÝ»f@cÊúÅEÖ\;ýúõ“‡zÈe[Æ/Û¶m“¡C‡JÕªUeñâÅqëî¹çdÈ!šñþøã¸eS&ƒHiÕ«W÷Ì®-Ó[R¦}ûö^™2e¼¶mÛzíÚµóJ–,éµhÑÂÛ³g× AƒHsçÎõ6lèbx7ö;ì0¯~ýúÞæÍ›=3Ó½V­Zy¥J•òZ·níU©REï{ÔQGy?üðƒÖÛ¦M¯lÙ²^µjÕ¼¯¾úÊ[¸p¡×¨Q#¯^½zÞGáõèÑC¯Y±b…Þ—“±cÇzݺuÓ¶”.]Ú›ø`P±œÎŸž”é믿–;vÈĉeôèѲ}ûva9â|ÕªUR±bE™0a‚NVÞ95j”tÐA²|ùr1dÒ²o¿ý¶bÈÌ™35<¿}óÍ7Zßüùó¥fÍš2pà@½×o¼!:twß}W=ÇO?ý$x œuÖYz¹!Þsýúõ²nÝ:©[·®¿Z9ÿüóeÉ’%1ë*V¬˜R ^ÑUËíÞ½[ïmˆ+ ,âŋ˰aÃtù6mš\yå•Úß_|Q¸gRZNS3¨¾0 ïóÑGiUǼ÷Áè1^cöìÙÞ¼yó¼ *hÚ 'œà}øá‡Þ¤I“¼%J¨§øøã5¯cÇŽ^¿~ýôØ ¸W¸pa=¶ ðÊ+¯hÚêÕ«½òåËë½N<ñDMã¥eË–ž!iäÜ`ž‰yæáªzú«¯¾ê•+W.n]½zõòî¿ÿ~½„¾rx'Ÿ|²g–CM3$ô*Uªä὎9æ˜HÕxT‹K$1êÀy¤¨ivì±ÇjJ¾|ùÄ$Cî9眣 ÏçÂS˜åH½×† ÄDÆŒ#ßÿ½Ò赆Dê°'xŒ€— ³iûÓ9÷›Yz¥P¡Bêñüé<ÄKbaê2\жâI1³|ËŸþ©ÇxYk Ї¸ö<™Þ“ri ˆX®¾újéÔ©“˜¸H?néÒ¥‹.%#FŒîÝ»ë²db¥ÈSÞ3fĬ–%3qŽ4iÒD'–³_~ùEŒ7Ô{°¼rŒ™øE–.]*ùóç×%Š%qëÖ­š·lÙ27nœ˜¸NÏcÕEË™5úcb*miÆ£é²góSá½@*4ÒßF@Ç®¹æ4h4mÚTÏñHüõïß_•˜©\¹rê¥Ì²!ýõW†ÙlëaЉ½ØqA6Þ÷ßõrlã!¬Y^ä³Ï>“Ë.»L¶lÙ¢;4>æáºG}TÌò'Ä7&¨W¯öðÃk[ÌF f]§Ÿ~º4oÞ\j×®­mç¥sçÎJ¾>}úè.ŽÝ`,³íŽ•—«iQKì^? #…i„ #»0[Þx +ØÙùy6F²yÄH&÷Ì虥D“‰ÇjÔ¨á™%ÓûñÇmÑÀwC0Ïx)ÏxšHÙÌê2$Ü3r90ÝmúÓ²rœ[1RÊy$fËWß¾}Õûøg!;«“N:ÉŸ¤Çì²2{Vcã(ÿ…ÄTñâ*9{L,ä‡l:ï±ê*R¤ˆ¿Häø¸ãŽ‹§ÒAJ‰exƈÎ`|û§ÑÑÊÃÅ)S¦ø‹eû8'ëÊv#taJéCÉÿüÁ¨«òüiš#R ,_¾^6lø{ {úéwå´ÓŽ’5NÐ’•*•’’%³÷¡qŒ[í+Ii ÿ¬-«X±”ñJ¥´©¯¿þ‰ùŽS)óŸ!'¦BÓs­.FÊ5è÷­;"Œg¾|ÿ–S@±<Ÿíˆ@‚m÷‰L¶#R0F®D‘@bÛŸ´ÿÐöDf;" Í²æ–¶L¶#R0F®D‘B€äŠ#àˆŒ‘+G¤ ¹"Á8"cäJ„@À)$÷d; ôlG¤œÜ“퀑ÂäJ…CÀy¤p8¹R8"ä>" (=Û)'÷I@ŽHár¥Â!àtoG¤}h0s³+ŽH¹‰þ>tï¤ÿ5„ôŒL¨BŽŽš‘ÀRÕÆ¬Žçw^¶®u/#¤l~p®üþûï‚\­ZµBÿ#%í¨П}Å’Þ#!ޏžÑr5¿u&F×VFŽ™eüsR¢‰/£ô-FKWŒœtíÚUŒZ¶*XÆkØ>)ÑîëlÒ‰¶^pÁÒ³gO%3Ùluµ C† ‘£>ÚÈ<”‘§žzJÓø¼å–[ÄÈ¡Kåʕň)kº}A^‰®#|¸ ÉŽ í]êX´h‘yu•å´›kî»ï>ùßÿþ'o¾ù¦|ñÅ*EŠB7JÛ¨1¡Ô )Q‡¤(k£Jyë­·j[’ý%%ˆôú믫tç%—\"Ï?ÿ¼´iÓF%C¾½0Ó‘$e@ÑEšÝ¨l«° 2¥FÍ:Ã<ûì³:ˆH±#xÛm·ÉæÍ›¥G*‰Ž†× ÈÀâ ©óÌ3ÏTâ|þùçJ*dGý–'%Ú}$}ŒD[d»ÎR⑟þYÕ#¯¿þz3.¾øbíÎØ±cõ™覛n’SN9EÿðTFR4Òe”¹‰iˆ™Œ<»¹vUñÆÃp-ޯްöíÛ  ±A<ê×±Ô(¹‡yŒ„¼jÚrý¥—^ªZ¹1e[†¼·ÞzKïOy&ŵ×^+ô )–bŒ¾#XM\ÍL¢—”ðH§žzªܺukÁ£L:U—¿Ÿ•8ÿî»ïÄŸÎÀ“gAá!dA@‡y(j#ùŽ"6¹_‚ÔªTZ©t¤B/^l~crƒ­Rßó¢D»€” ’m0 Øx“™ŽW! ùt_â <DãhY¾ˆSü³™ëðDݺu“ *h¼ +K$oÙbÙ¹çžk~_²¢ôîÝ;BPäÕ‰mPÛÆòŠD»v6ý%é—6¾ÆAÀŠëgi`‡ ¦A1q ç¿þú«\wÝuæ×fKÊUW]%“&MR²°Ü<óÌ3‘þRWÛ¶muÀI'6¢,$êÒ¥‹œqÆF¤€.‰?þxä:{ÀõÕÄQ,CÉx,HÇ2EplT²•Œx8¿Üû>)ÑnáÝ€kf¼‡g>kûO÷ß´iSLYu³Äy†`që6ŸóyÆóDòó¸Ûµk—g–¾H^¼³Lz+W®Ìífyöú÷ >™žôÉOúXÇlóc23–5¿áiì5 4ýÙ1cɼۂyA¢Ýö•÷”Š‘ü OÖã¼$ÑîG$?9pœ—$Úýp9"ùÑpÇÙF Wc$û 1Û­OÀ…©"×n?6J$1oáDmbÂòw¢Ùù8¹öLðñe9¹vÿ:tríÿ‚$n‚‹‘âB#âäÚ3'*Ë) {êäÚ-áÞ‘âàääÚã'Ù)0N®=0q’‘bãäÚc€äˆ '×”€$G¤9¹ö $¹’Q9¹ö(@Â:¹öX89¹öX¨dšæäÚcÁãäÚc¡’yš‹‘2ÇÇå†DÀ)(÷«¶¥g;"àä~Õ6 G¤p¹Ráp)'÷«¶¥g;"àÄ—Ûøs–9ŽH™ããrC"àˆ(W,s‘2ÇÇå†DÀ)$P®Xæ8"eŽË ‰€#RPîÉv@éÙŽH8¹'Û9"…È• ‡€óHápr¥pD È}DPz¶#RNî#’€‘ÂäJ…CÀy¤œÜö? ôlG¤œÜö? G¤p¹Ráp)'·k (=Û)'·k È)@®THÌŒ‹Ø¬Y³’^–Üt+¡mL¹öDãbUÒÉ“ñ—ÿ ‘TÞ©U«V!ièŠåEиCeÊ*%€‹‘ò"öBŸ‘ö¨y±JG¤¼8ê{¡ÏIG$#[¥:j9ÑWÔ$Q{ô¢|¨Gffäù/Y°`ìܹ3nQT$io"Œ˜„6Mœ8Q.\úívìØ¡‚Í{»IG$"Q³Î CѺsçβtéÒHuO?ý´ŠóE¢¦L™"Ý»w£§JÚè㢣ËNF­roÛË/¿,÷Þ{¯*SÒ.D ‘P…$ñì‰'žPuoÔ0?ùä“xÅr,=ËZ$È{Î;Wå?@ž\~ùåªÂˆvl×®]µÑ£°ÈlFnœN½ôÒK* Z´hQ-‡ JŒãÆ“²e˪:d»ví"³²æ(2¢Ä!ЛEŠYõ9sæ¨ò#2èh£¡yûí·«t»=¦²ªU«J¿~ýT å"k´wàÀ‚ i‰%t`N;í4mc5TÒ² žçàƒ–(¹h;‰Ñ>T)·lÙ"7ß|³Ô¯__Õ¾ŸzÚzÏ=÷è ÓŽ"EŠˆTñäO?ýTV¯^-Íš5SåK&ªá7n$O‘‹_³fŒ=ZÆŒ£ôzSóBÞ„ TÅAg?Nȳ¦¥¥©©Z¸ Ö¸qc•:…°#FŒP’Q}aÐ_xáí#}ÀV¬X!:uÒÇ&xŒIQ4H>xð`•ˆGê½Zµj*…Jû™Ò¶mÈ!Ür0ðÕíhÃ*Uª(AbáT§Nmc‡¤P¡BÂQ?$Ð,ñ,‘Œ ã´…oÛ½ /Y&u£‹:±²è£ PëÖ­ÓYáj×®­^‚Yéð>A6ëð±ÔkÖ¬©å©7ne×l”´4h ¥MÌ$ ¶ÿ˜<<±q†5ˆ ¨H±7oÞ\Ö®]«3²zõêJpcÑ¢EêeT–±zõêé=Roذ¡Ve1@_×¶—ƒ83Û¥õ€ÐëÀˆnÔ¨‘zLpÃ{ì1\?~¼z8¼"Ïxþh#ÏzØhœÈC“ Çg…“ÏŠì<‹•¯ŽAh´éŠãÙ±l©téÒz/ä;‘<÷*Õ¸åùóçë$`€™•,x–ˆ…˜±µXÒŸV*2ÌpÀÀl:iÄAÆ 2ÛXnÌ“X-`,³Ö0êCeî&Mš¨êö 7Ü “'OÖA`ÉÆhkñâÅõ¸L™2úŽp³¿nŽY’YÊ< ñdʤ²D òL0\l½`ÍÒ§áM˜”˜Åƒc?Nœ[oð·Æýè3F[04! /Ù"RPý‡˜°döìÙ2mÚ4!B-o„ 5®›Î0“‘\6ÀÚ³g.,,›3ëð*åÊ•Ó4ê²Á§ÿX3Í K±Ã²eË4 ¯Ù©‡ö@6ï@Àowk§<^‰ò‹å'ž1‘ðDþ/Y²$^ÑH:÷% Жp›¥™'ÈÄI`ñ Äúõë5ã<Nʾ۷o×e޾ÑwâÇœ²¢Ï¨ÑºQ€`Ð< ôáÇkPÇ@0Û™Mt®E‹?ØYAy[³ˆe‡í81é€ËZi˜aìf0Þ ¤uÚcÍHa¶ñhŸ€#Ø$6hÚ´©.#wÝu—¦sNýÄ@x }úèêEé/¶Ý,{}ûöÕmïÝ»·¿Ø¿Ž¹Ž¥ÜX†é#K&&%“?ê'ò©òc±pbÒ=òÈ#B°q–-[ ýd ?üp%ÒÌ™35ß¾Ø>Øó°ï~g›Æ®ZµJã°Ä*ãf­]˜MÌ8f(ËŸ5€²ØbÌ@bâ!Ê[¢Õ­[W¦OŸ®®Þ¿4Úú²úÎ!mýözÒY–üËyLèåÜ^ýNÜA ^Xƒâƒù%o÷îÝbC ꌇyx èöƒ)Þå;»¤aBï[¥[Îÿ<2.™Y@ kIÄÍXÊ—/ooy÷IôÄÊ€œ ·‰WO¼ô°$¢nçpÖðÖ¢ûîϳeì{tYÒ£ID“’e7§-G—6ÇV•ç3ÅŠËR[Ù±ø½‚ P£+áÙ ³ÕÙßÄÃ)Ñøä8‘ØÑd•Dt:zö\DzX3/V¹¼’§D÷¯ìÚÝ w¿$@Àì"f¶• ýö¡é¾»_Šbý É »¶$àµkBj"àäÚSsÜ’¯Õ.FJ¾1IÉ9"¥ä°%_£ÿsœÕ .¢óIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadFieldName-members.html000644 000765 000024 00000014541 14042362131 026462 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::BadFieldName Member List

This is the complete list of members for mysqlpp::BadFieldName, including all inherited members.

BadFieldName(const char *bad_field)mysqlpp::BadFieldNameinlineexplicit
Exception(const Exception &e) MAY_THROW()mysqlpp::Exceptioninline
Exception(const char *w="")mysqlpp::Exceptioninlineprotected
Exception(const std::string &w)mysqlpp::Exceptioninlineprotected
operator=(const Exception &rhs)mysqlpp::Exceptioninline
what() constmysqlpp::Exceptioninlinevirtual
what_mysqlpp::Exceptionprotected
~BadFieldName()mysqlpp::BadFieldNameinline
~Exception()mysqlpp::Exceptioninline
mysql++-3.3.0/doc/html/refman/structmysqlpp_1_1equal__list__ba.html000644 000765 000024 00000027702 14042362131 026123 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::equal_list_ba< Seq1, Seq2, Manip > Struct Template Reference
MySQL++  3.3.0
mysqlpp::equal_list_ba< Seq1, Seq2, Manip > Struct Template Reference

Holds two lists of items, typically used to construct a SQL "equals clause". More...

#include <vallist.h>

Public Member Functions

 equal_list_ba (const Seq1 &s1, const Seq2 &s2, const char *d, const char *e, Manip m)
 Create object. More...
 

Public Attributes

const Seq1 * list1
 the list of objects on the left-hand side of the equals sign
 
const Seq2 * list2
 the list of objects on the right-hand side of the equals sign
 
const char * delim
 delimiter to use between each pair of elements
 
const char * equl
 "equal" sign to use between each item in each equal pair; doesn't have to actually be " = "
 
Manip manip
 manipulator to use when inserting the equal_list into a C++ stream
 

Detailed Description

template<class Seq1, class Seq2, class Manip>
struct mysqlpp::equal_list_ba< Seq1, Seq2, Manip >

Holds two lists of items, typically used to construct a SQL "equals clause".

The WHERE clause in a SQL SELECT statment is an example of an equals clause.

Imagine an object of this type contains the lists (a, b) (c, d), and that the object's delimiter and equals symbols are set to ", " and " = " respectively. When you insert that object into a C++ stream, you would get "a = c, b = d".

This class is never instantiated by hand. The equal_list() functions build instances of this structure template to do their work. MySQL++'s SSQLS mechanism calls those functions when building SQL queries; you can call them yourself to do similar work. The "Harnessing SSQLS Internals" section of the user manual has some examples of this.

See also
equal_list_b

Constructor & Destructor Documentation

◆ equal_list_ba()

template<class Seq1 , class Seq2 , class Manip >
mysqlpp::equal_list_ba< Seq1, Seq2, Manip >::equal_list_ba ( const Seq1 &  s1,
const Seq2 &  s2,
const char *  d,
const char *  e,
Manip  m 
)
inline

Create object.

Parameters
s1list of objects on left-hand side of equal sign
s2list of objects on right-hand side of equal sign
dwhat delimiter to use between each group in the list when inserting the list into a C++ stream
ethe "equals" sign between each pair of items in the equal list; doesn't actually have to be " = "!
mmanipulator to use when inserting the list into a C++ stream

The documentation for this struct was generated from the following file:
mysql++-3.3.0/doc/html/refman/functions_m.html000644 000765 000024 00000012406 14042362131 022005 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
MySQL++  3.3.0
Here is a list of all documented class members with links to the class documentation for each member:

- m -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1TCPConnection__inherit__graph.png000644 000765 000024 00000015505 14042362133 030271 0ustar00tangentstaff000000 000000 ‰PNG  IHDR™‰?Šš!sRGB®ÎéÿIDATxíœTÕõÇÏ‚BÁHB4V4(j¬Ä‚QØb¢ITÄB°‚Xc‰ £ì-j”(å£4ƒ àÒDQP@¬T ¶%.½¼ÿù¼û¿3ûfgÞòf…åžÏgfÞ»ýžû»çœûfv%‘Š (ž–Ö)^Û¡å õ H(ºÈŠ®âГ9?~<ñYxl&Nœè Ågy†%SÉM7ÝðÂ+è Z¸úê«EA–a¾3@–‘n‚RÒ@YJŠ ÍäÖ@YnÝ„œ”4°EJí¤Ö̬Y³¤iÓ¦òãÿ8•6W¬X!ÄšsçΕvØAZ·nmŸ…4þæ›oÊvÛm—ÊXܼ6lX)fa,Gu”lµÕV… «Úe^|ñE›½zõªÝFu*nt–ìž{î‘qãÆUg.•ê,X°@?üp¹ÿþû¥¬¬L†.?ÿùÏå©§žªTÖ%¬óÎ;Ïn'Ož, .tYôéæõÎ;ïÈgœasdžîµ|ùò j?Wå>}úHÏž=-»´´TØt5.þYó–[n‰ôté'Uºþç?ÿ~úéÑÁýô§?þþ÷¿G{ï½wô“Ÿü$zõÕW­þ}÷Ýgõ–-[í¿ÿþÑ_|]yå•‘Z»Ÿ>}ºå?ðÀÑN;ísÌ1Ñ 'œénÎ:ë¬hàÀ‘*'úãÿhå›5k)@¬ÎÏ~ö³¨K—.Ñ~ô£¨]»vÑÒ¥K-ýøãÞ}÷ÝŒë:DW\q…¥¹· &D5ŠTÙQ\[ûì³OÔ Aƒèæ›oŽ®¹æšhôèÑѪU«¢Î;GMš4‰Èùå—­¹#Ž8ÂÚß~ûí£_üâÑ×_mé=ôP´çž{š^t-ÍÍëõ×_7]¹ñ¸O·ÍuÑ¢EÑÇtÐAч~©ŽöÚk¯h—]v‰n¿ýv+>gΜH7éóÒK/V¯^Qÿw¿û]tÜqÇEj}müo¿ývôÃþ0úÁ~)À¢£>ÚÖâ“O>‰Ž=öØh›m¶±4ú{ÿý÷m N>ùdÓm×®]­¯©S§FmÚ´‰Ô»Dô•OôtÝ}÷Ý~±ÌG… \iAbV#kïÞ½åÔSO•G}TtáDAbMaž1Í:Y9r¤¨r¤S§N¢‹ ´Ó½{w+{É%—Ș1cDAY1„Ï>ûLtåé§Ÿ¬À 7Ü`y3gΔm·ÝVf̘!Ÿþ¹µKF«V­Wä_O›6MT™–æÞ¶›ÿóŸÿH\[ª Ùo¿ýäÏþ³` ç /¼ ÑÝ`Ò­[7k«Ä˜¸òå—_ʨQ£ìS*C† ‘ýë_V6Ûz,^¼XÎ?ÿüŠ—nn9à€D7«(°E7¤0NÝ\vÏc¥çŸ^~øaQZÚ¯ýk:t¨õÝ·o_)//·u¹øâ‹Í:b½¾ÿýï[ºYEÁ'³gϤ<øàƒ(€L—¬ÛÊ•+Mß§œrнÿþÖW=lͦL™"¯¼òŠ0ç¤R­˜L‘mJøè£Dw›]/Y²DÔ‚É/ùK騱£èn‘çž{N~ÿûßKóæÍEw‹-“Ða A‘Ä"È{ìQiì”mÑ¢…½Xt€\~ùå¢ÖCÎ=÷\}X'îzÍš5•Ü`@Ñ..Én‹6·ÜrË ÀÒ&„tÀÇ‹Åþïÿ+%%%rÝu×ÔJ˜kUk'jÑmñ‰ÃЋ¿yh¾•µ6vÉÆU«%[o½µÅê èÁµ®[·Î>Õú Ù}÷ÝeÒ¤I²ï¾ûŠZOQkfeO<ñD;v¬Í£nݺó%“ù¨G²òèª}ûöæÂwÝuWëA¨ Jî½÷^› ¦LR©VLÆÄ:uêJõ¥~ýúrÒI'ÀˆA<ŠÇ±ÓÔÛvÞy犪ÔËv¢uYf¹¸wé¤ýïÿsE*}¢ í V‹§nÚ’ i p; P ð²Ø€@¶Øb {x‰•:ôÐCÍzÿ}ï{ß³|ÿ>Ùhîå@DèrM¿®}ê«Û3‹Å&!†À¶ˆº8kÞÍ…__–ùí›ú1Ó½›ó`>ˆß—›ÏwÜ!W]u•Yq6ÀµîI¥Z Ë× ÀbpœÌXh\ÇO¶˜o¼ñ†£eË–ÖõK/½$k×®•#FˆÆ…–ˆ5>˸Æú<ûì³æ&Èøæ›oÌÚ^pÁÂîFâÚb}Á:³aèk‚ÍuúėZHX°b,¬/ÜÓ‡ÿ"ŸÅÄiüe–ùÀ4Pnàr E-Ö0àúë¯7÷Œ7A(Èú`>X__eذa–ÇzàJs y¼(õd“&•j¹Ë\0}õÕWB¬…08b â @EÇ®@‰H[<àï"×.€Û Ž Çbƒ`üq냅˜7ä®O;í4s;€Páø;ï¼Óêĵłh,ÄUNˆ7q»í¶›¹É^½z¹¬ŠOÆÆ‹ÁµÓ'Ö÷JL‰¸2|ðA†û"ï‘G±bþüù,”l¬Ì‡±þá0wõ—¿üÅ\õ ¯‡k+ÊfÓC‘•Õ„…/.,¡Îe—]&^x¡ÜvÛm^Ö%N/í°iX/¬#!Lbñ·pºôËçºÖÝk'[*Ѝˆ4ð´S]E¢^èÂ[Úa‡é#ƒŠ¬[o½5ºñÆí4¤¨"]ÎN{jý*Òò]¨k±¾˜Esµ¥Ê¬4N*Ò§?–ŒÆ¼æêÆG[jY¼Üä—œ„³ÇN» Ȉ¾µ\Ñ‘G1W_ïäq×ÍÍe†¼÷Þ{¦ËŒÄ˜ÚÓø;&§rRÜé2UKÂyÎÄs ž5éc† Ðk8×V‘¨.6ðÓükâl¡-?žËÎϾg·ÇõM¹¸¶üã¤Ð>ý6i+W{q}Ä¥¯fǬ´‰•ÏæÊË—\y e  )Ÿ]&uáþˆKxjŸDx\á»L}¾[#¼‹§b $HL³­Ý¥¨z;l¥ñ l4uì&sðOFÜçÚ}ù,u •4Û*´Ïb•#þËÖa±úJÚnQN—IÊ×r ø¡ÛøðËXž5ä|•”lmµÕþQIIÝœeªª¿¹äeÿ2¶Õò}”ÚôÆŽ#gŸÝW¿`ï*GYùŠÔ:ª] …?‰K²žƒM¶âƒOIRm³/b²!°|ù*=5ϳ§÷£FÍÒ§èk ¬ŠˆÑ£gëüõ_Eñeܸ¹Ö ÅÈ ÄÀ€“ôëš•Vº¼|… ôZ5C±²0PV¶L¦Mû(£ä„ ü–lUFZ¸‰×@Y¼^2RKKgêWC™ªªW¯®þÈï­Œrá&^™š‹/³Ù§öë7±’Õ*/_)ýûOÜìuSˆÈòhiÑ¢%òÞ{‹cK͘±Pžýÿ?-%€,&Mz×\eãÆ „×Ö[×·O®W¯^#“'¿Ÿ§…žø€ñãç[©µk×éUôÑ?~él÷uê”H›6•nS@“›S‘¥©ÿ £6j¯mÛ6­5kÖéïÏJÄÝׯ¹cNÁ]C«¡Í e¨£êýÉ»Y²ªK…Ül ek¤Š{~¯²n]øÑJ*ŠÍ ‹UKHLSd ´ÜeeyEÈ?€,^/!5M øÿ˜8­ke^ãiR­{) LÔ°aËZ7/·VJõ“üvÊ‹òäqA®'PMCps<¸(ƒ î²(j ú 󵮋¢²¢¨54êk Ö‚ ²TxµÓÈJŸ|òIyì±ÇŒ›;­v«Ûl|m RkA—6d¬i€U.I3fLY,¤¤5- ŠGD¹A湦ÇPþ¾3]yå•rþùçKóæÍ’xØmá“„·†]N¦P#¹ÿæ7¿1F[Øka¡ûÕ¯~e Ó.4Ð;ì°ƒ@û S­/ðwîÜÙXlaµ…ávæÌ™ÆÛ M2TÏJ&[Q*h%5ºjw:>çœsäþûï—~ýú%3”ÓpE*Ù¨|úé§ÆÖ C ÅŸ|ò‰ÀÌËø`¹…"û¢‹.²ö™3¬¹p¸ï½÷Þ2}útK§=(Ÿ!—ïÝ»·¥Á’  àû„ šqŸyæ™FPÏx¡„þúë¯ú¹K—.VNOGß̦ ?‹ÑoYYYÅkúâ;‹’9:CV?pà@5j”>Üèˆá.Gø„ž˜E†sÞ¼yFÆúïÿÛê°Ã_xáK#Ïâ¿öÚkÒºuk£™†Zš>.¾øbãïÙ³§qwS¯U«VÆwÞ°aC#¬gq”µVŽ8â¿Y£€@ÐVó9uêT£«~ôÑGÍMÃß È{ÿþý͵1ç)S¦ØXáÇõB—ÍF 8Ú¯½öZ›ß‹/¾(sæÌ1þtʺ|覡Ÿ†p1ï×_݈èO?ýtéÖ­›“ÇHðŸº/¿üÒô”1¼ùÎ@Æ;tè`<äðu·oß^öÝw_ë€Åzî¹çL|ÂŽõX}àk;}ìØ±¶Ã!sÅJÄ KGþÈ‘#­¬·ÊSïÄOÔ—>ÚÒ»wïn»Çw4 ç\•v9®ikïºë®3]꺱뮻 .pb¡.\hõ–Œù‘àö„÷œyÓ/‚ ×±cGËM7ÝdÖx›m¶±MÈpÂ|°ä€Oé´Íâaaág\ô%sý»z5ùù‚ e#Ð)7iÒ$cÞXPñ‰« Ï>ûÌ\Öåí´ÓNV7›Ù5èÈFqA¸bÄ¥qí§sïK£FŒæzܸqÉú8Û BÿŽœ2z,â³CxJ?Ý¥Q"Zå)·Öby,UãÆ­ùXË8Q®óŠþɧƸ1¸¾,ñ;xûNAVÕ|Ù‰íÚµ“K/½Ô¬÷¸ \]ß¾}mײð'œp‚ÑQÓV-NÜ‘aÆÉi§f×o¿ý¶¹H—ØK‰p­ÄðÖ‹ ±(ÿøÇ?Ì­S¦W¯^æR9ä!®£]ä™gž±øÌn |#v£¿K.¹Dþô§? nÐÓ.ÖL‰ì­o¬B ê 1dii©•CĘÄa“åk¥ ™ `â…àRzè!aw#X2^÷ÝwŸ²ÄhÍš53놫eAœÅ ¼kç©§žâ7b?€È'ÖëÈfÜB°ÿÊ+¯X[6ˆ{ô;=¹êª«,8§ –6\0'ÍÛn»MV¬X!Ï?ÿ¼¥g¿¹±øé¤A"[ÅmSÿ¨£Ž²¸+O[Œ w 9àV“SO=U†*»í¶›DØÙB?qýg—+Ú½ÿMfZ׺;#ýîrƒ›ÓØ$:ðÀ3ÚQK©ŠÔ%d¤kP‘§.3#]Of‘Ç‘º¥H]‰å©…Šôô©Ž4~É(_Õ‚ ÒS]¥¾©£ŒH-PUÕ«ÌS0GzÀ¨TFƒöŒ4ú`Ù¢n3úæ›o²“ ¾W+éf+¸|‚‚Åù‚<K¼óÎ;ÍjùíôrüÏ{,A.qq›ŸO —+Žó˹ëúõë›åt÷þ'‡’ bD?NtmeǪ[n¹¥ËÊøäñÏÆ*»tŠÂU?¹àÕ¥Wõ `¤}á îÆN°îä꧇ëâh`£™;Y%¶;é¹zû³…˜*Îjd— ÷éh`£=]¦3½ÐÊÆ ¢X2tò€³¶IIÉÒ Á>úÜnŽžbk¹jMsíWmŽ;GÎ>»¯>¾èª_˜ï‘ æf]tip— ÖРÉVzðà) j…¢db`ùòUúÍÂ<{Ø;jÔ,}ò^ûÜeªH\,€¬@•=[Ÿô×µÒ|i>nÜÜk†bdb`À€IúÔú_Ú–—¯Aƒ^+°f(@VÊÊ–É´ie”œ0ßk­ÊH 7ñ ‹×KFjiéLã!÷ëÕ««¿A{ËO ×94@–C1~r¿~+Y­òò•ú‹×‰~±pCd9ã’-Z¢¿ù_ìn3>gÌX¨?Z–‘n*k €¬²N2R&Mz×\eãÆ ô—ª ô ûúöÉõêÕkô¯†ÞÏ(n*k <ñ¯¬“J)ãÇÏ·´µk×I§N}ô^:Û}:%Ҧ͞•ʇ„ ,-Êw—]Ô‚›¶m[Ø,Ö¬YgD÷î¾L­F¦Üe¨yóî$€,ÁúëOåÍ’%¨ŠªÈÀ ü;ÏÊòŠyÊ—ÅÑ@Y½w™@Y^Ñ2Où.ƒ»Ì§¡øü²x½„Ô5@–¢2CSñ ‹×KHMQd)*34¯²x½„Ô5@–@™áFeyEÈ?€,^/!5E ¥¨ÌÐT¼Èâõ›JLÆ+H2 %Ð1¯ É4@–L_¡t54@–@iáFeyEÈ?€,^/!5E %Pfp— ”å ó”‘ï2¸Ë|ŠÏ ‹×KHMS ˜%"åÿá)ÑfûR꘨aÖ›íüÝÚ+ÏSØ$c$™?¾ÜqÇÆý“&ÐC[›Ž^~ùe™1cF¢w™H]¡pu4@V­…:‰4@–H]¡pu4°ÉýWâÝá«ÜY¼x±‘Åg·!é.»ìb<—Ó¦M3o(žášD-Z$°å:}eÛm·u·9ëU¨á 8ØŸ woÝmr–ìöÛo7å UÖW_}%3gδ×õ×_/“&M²k¨§2ŒÁÐ?+‡¤‘ÌÃ{ŽÀ™ýìÙ³­<<ßÐ&"UÕ³5ô°î¾ûnëÍ1×PױݤnÉyäÛýo¾ù¦±ÒBû÷ì³ÏÚ5ì¶œNÏ:ë,#fg¡ d„ì,"uZ´haÔÏÐÂÐ;uêT;Ír²íÓ§OÅ$(×6@`§BŸ ßåOY!´ÉÐ;#Ð/;Õ8RV+¤opœ+›¯@7í Às§ä3è›üq9øàƒóÖc|ԇ˼Q£F2|øp›¤uëÖò׿þÕÚS¦^A‡sçε¹³éàæt€ õc=f:™>}º,X°ÀÆé§K—.½4|¡Xfæ„ëŸ7ožú˜cŽ©Ø°ðƒDh¸¡ÍFïiKê c€G}´4oÞÜv|Û¶m›…EÜãš>á܆u—kˆâ!œ‡aî7Þ¥v–fÍšG¸UÈz£ü–ðpOž¼ž÷[¥~¶z­Zµ2KHµsÎ9Çâ’¦M›VX·¬æì¶Nõ*Añ¹€9R^zé%³vW_}µþß²ªë1¾3Î8CÖ•„l·ÝvYý~ûí';+"p­£ôC®MB߀ycýÅqÇgsƒËë-›šë„þáW|;v´v°Ìp“3.˜:è Šþ]½4>×k&–¼6P‚â³ÉQ±(Ê£m‡…|€—ä!”Çú}þùç \A¾cõÅ”••YY—ÆŸn™¼á¦!\õ8êãm9óÌ3ÍÕÑDË–-º÷×¾}{[ÔªêaA˜#x¥=,â:òüt—ÐÎÒ¥Kí…50X*(³\«±Äoߨïú'‰þsõå×Kãº( «j`ìbÌ3»”{\®îšk®±]† 8ôÐCm÷ÒV-NpÃXO׋ÄE¼õÖ[Öé\Ó/®«’ã?^† f‹I9Ü`ÀuU%¹êóàR_}õU«>~üx»¯ª­ìw/÷9¥Õ$‚È£:êYG üW„x‹¯ bâD,Úñ W¯^ÅÞ½{ŸE,A@ª««'´MØyÿúë/œ8qâ©$ÃápÔã„ׇ?¥ O«ÕŠ•+Wúµ‰šW±ñ "!^AÄ"Ä+ˆXØ"…þùÛ·oÇ®]» ×ëŸØ<¥¥¥ÈÌÌĦM›íUUUˆŠŠ x¨ðñÝwßáÞ½{~mZ­åååa‹õIÓ×ׇo¾ùß~û-¦NúÌâˆøwhhy¢óTVV¢¤¤ׯ_W´Ÿ?.\:^’$x½^x½^\¼xÕÕÕò³×ë}Ra‡çŸ €‘‘´´´@’¤gSXw^ǃÑÑQyÇãAlllÈ>$IBOORRR&ØHb``qqqAý¸Ýn Ã`0LʦÆsÏ=‡7¢¹¹ZmàÔ‘„ÝnÇôéÓå\”––Êö-[¶àöíÛØ¿¿ßñÃÃÃNøûï¿‘F3¡¯×ëÅàà âããíjyTó)Iººº`6›íN§n·––†+W®]s(q>½óÞ¹s:eeeHMMEbb">ÿüslÛ¶ F£qqqøðÃï¾û.6lØ õx6ÇO?ýD?Íioo'®]»–½½½¤ÛíæîÝ»9oÞ<’dWWu:+**èv»ùóÏ?S«ÕrëÖ­t8Àþþ~666KJJ822Âû÷ï3==;vìPµ‘d}}=ËËËåuÖjµlhh`uu5cccÙÙÙI’\·nß{ï=’¤Ãá ^¯g]]IÊsTTT(röñÇ3??_Ñæ[G^^ëëëér¹øòË/óøñã”$‰÷ïßç´iÓØÒÒ"ç|ÅŠâÍ›7™œœÌüQ5$ú´ÛíÔëõ¬ªª’ׯÑhxçÎ’dJJ ëëë¯ùàà êšÕâ =ZÃ&Þ»wï’$N'ðìÙ³rŸèèh655ÑårÑ`0ÈIذaׯ_O’üóÏ?ò²2vuuQ’$“$÷îÝË””ż ,(ÞÞÞ^¹_YY_{í5U[(øÄK’………|ûí·I*Å[^^N‹Å¢÷å—_ráÂ…Š65ñ^¾|™$éõzÙÖÖFI’ØÝÝ͆†&%%ñرcrÎ}¿@$ùÎ;ïpÛ¶mªyTóY^^ιsç*b:yò$ív;ÉÀâU[³Zœ¡¢&Þ°Ø|µ•¯ÌÌÌ”m^¯:Ë—/lj'àñxPSSƒââb@FFŽ9«ÕŠ´´4¼øâ‹8sæ  ³³óæÍSÌ7{öl¿qÄÅÅ!))I~6›Íèëë j› À¥K—ärÇGgg'rssm‹<Ù÷ /¼ˆŠŠBmm-, rss±oß>L™2EÑwúôéòÏz½n·[5j>;;;‘““£ð¿lÙ2Ìœ9S5ÞPÖì/Îp6ñFEvÅ1Ÿ4*..†ÍfÃ…  ×ë±páBÀƒ0þ|ܸqÝÝÝX¹r%6mÚ—Ë…ÄÄDôôô(|ºv”ëX¸víš,t5Ûd0›Íعs'6oÞ¬¨ß’’’ÐÖÖ¦èûË/¿`Ö¬Y“žãÖ­[øê«¯PWW‡ŽŽØl¶ ß±9÷åX-j>“’’ÐÞÞ®ðàÀ8Õ8CY³¿8ÃÁS¿*ËÏχN§Cii)Ö¬Y#/¬¥¥………p:0™Lx뭷䫘E‹¡¹¹·nÝ477ãêÕ«~ýK’„ƒþøãœ:u ‹/j»víªªªd?ãŸÇSRR³Ù ›Í&·-Y²¿ýöêêê<:¡Ÿ>}EEE“ÎÓ½{÷`4‘••¨©©ÁÝ»wƒ¾øjyTó¹téR´¶¶¢¶¶V¶íÙ³Gþ‹í÷ Î5OšIÔ~ñÕ5¾ºj``€ØÞÞ.÷‰ŽŽ–k9’üì³Ï€¿ÿþ»Üæñx˜——ǘ˜¾òÊ+œ3g:$ÛwîÜɘ˜fdd0==yyy~kÞØØX¾ù曜5kõz=W¯^MÇ£j#Õi999ò|ãŸÇÖ¼>~ýõWjµZ¹æ%ÕÑZ­–sæÌ¡Á`àÆ9::ª§Vóö÷÷“$GGG™ŸŸO“ÉD‹ÅÂU«Vñý÷ßgjj*›šš9'ÉU«VqëÖ­ªyTóép8XYYÉèèh&''3;;›6›Mö¿eËêõz=zTQóª­y¼6ÆÆ*OôÀö_Ø¿?_ýõ í’$±µµ•·oߦ$IìN§“mmmôz½\»ví„$4662..Ž$i·Ûét:C²…›þþ~Þ¸qƒ}}}í«££C4ùè4ï/7c –G5Ÿÿþû/;::üúíïïŸð‹8Ö®5EM¼Oõíᇢµµ•••òâX4 ²³³Ž70!Í¥vÐvy\âããñꫯ†Å—ÅbQ<Ϙ1#è˜`yTó©×ë'Ø}¨½ÁÎ5‡ÊS¯ÝnÇæÍ›ñÁ   à±|edd !!AÑ6mÚ´€ T³ " ©<øþsâ»Hÿ¨èQ|éˆ râD,B¼‚ˆEˆW±¼m°Z­O3À/ÞITÄìc-Á³fÂU™@!ˆ«2Aä"Ä+ˆX„x‹¯ bùáz@¬$>IEND®B`‚mysql++-3.3.0/doc/html/refman/inherit_graph_29.png000644 000765 000024 00000006106 14042362133 022440 0ustar00tangentstaff000000 000000 ‰PNG  IHDR˜%¾– ŠsRGB®Îé IDATxíœ °ÎÕÇK %‰vE‘-5%J¨®’lÉÎÔ´"…ÊR£² Ã4QƘÒb+eZ•u,¡hQY*²Gµ$²;ÿçóüÿçýÿÞ÷þ^÷¾×Ëuù=3ïýßYŸsÎ÷<ÛùÍÍç”$¢hŽÍ ¬ÈlúzVà¿+,BÂ1]`Çty£ÎÌÓœ9s°Ç¢_´9ÆÀÒ¥K=œx.“` 0éÓ§ ‹~ѤŒV­Z‰,NlÇ,®$z‰V +, ‹u‘|"€%_›¨$ +P0 }¤µ‹%K–ÈùçŸ/_|ñQ÷»~ýzùùçŸcý-ZTªT©"gžyf,/1±ÿ~™6mšÜrË-rî¹çÊòåËeÞ¼yrÎ9çH£F䬳ÎJlr\ÞW¬X!  .¸@¾üòËØ˜W\q…T¨P!öž˜Ø½{·,Z´Hn½õÖÄ¢ãò~ÂI°!C†È¬Y³Ò2ùO?ýTºwïn¦Œ9RÊ–-+¿ýö[Òþyä=z´:tH^zé%¹çž{ä§Ÿ~’_~ùE4h o¿ývÒ¶©T«VÍÆÉN»÷Þ{O>øàùõ×_cšùÌŸ?_žyæ¹ýöÛåðááÝìܹS¦OŸZFæ?þ(=ôPÒò£.ú”/¼ð‚S/2˜•)ýî»ïºÖ­[»ªU«º«¯¾Ú½úê«®bÅŠ®L™2N'líuc¬Ý¿ÿþ뮽öZ·mÛ6×­[7wÉ%—Øû÷ßoåC‡u%K–twÜq‡«W¯žSéåÚµkçÆçFåî»ï>«_ºti§`±67ÜpƒS8=ÉîÞ{ïuzB-¿nݺnåÊ•qéW^yŵlÙÒòüŸË.»Ì}òÉ'N7Ä=÷Üs6>}.X°ÀM˜0Á©¤r¥J•r3gÎtgŸ}¶Û¼y³oêþüóO7`À{W©fó/V¬˜Ó rpcÇŽuýúõ³ò-[¶¸ŒŒ K׬YÓuíÚÕ]tÑE®víÚþr=ö˜…˜w/4œ={¶qÍ5×X_ƒ rß~û­cžöíÛçT"»~øÁýþûï®N:N%µSй7º5kÖ¸&MšXõ0>*Uªä *äžþy·cÇ×¢E wá…º† ÆæÏ={ö´}ôQÑC&ÇSõôõᇠüwêÔIPýzeذa¢ào¾ùÆxEbïݻפ/Œ„ñ1xð`QËÓO?mûßhL'žx"Æ¿[úöíkï©üÉ‘ŠDŸëi=¡f«øôü!wÝu—¬^½Zô4Ùæ5kÖÌÔ’ž&›öÂk¯½f“ Ým·Ý&zÂ䪫®ÊÄ7ê©|ùòB»v튩6&®ÒP|ðÁÀ«·Û‚ixúì³ÏŒ•fW)RĉJS5ØWl¼J+9ãŒ3lÃ8{öìÉÄàªTTÇŽmÃC+kf¾|ùD%€Íu¶aÃò-6‘—… ?`Ö[%]¬{ìª7ÞxÃÔ5¼õÕWVã”+WÎ/ R€ó´ÓN3@Á‡JYa°í袇û5UÊ‘‘ÏɆ8çw^ܘlÆ0’åÔ²ñØ ãÇ·§*Q*W®l‹êÓ.‘0²=a|³±Ï'ãH„”UÕgU‘ª?Á‘`“1šÿþûo+#À̦{ÂVCq0T[6 ºé¦›lnÃÒæàÁƒþÕžH³ ©ºµ×‚ Z3XÆ Rеe!€à 'èóÏ?÷¯öT½ds*Q¢„½‡ñDAV|¨Ùckp9@žp.rB9’`Y „ÄAÍ ®Õ6³ÓqŒ8F¬#‚9‘€ŽÁèF|'j‡…úî»ïì„ùÄ Ãg‘Yˆ¾8Ù‰iËøßŸâÅ‹?¨gµ1ìäöèÑÃŒfTh`HNŒpxfóOm6QûÓò&&RŽƒtçw%uQÙ!TR/H÷þùÇ"〠sãH„”Q;TÔ¾´j¬30-KvéÒEÔé’Ë/¿Üìá‡~8±JìÝ÷ÅúbÒ0V‡LÚ.¼iì;OÉÆôåIŸA“?;^d°~²´ž8óD‚˜.¼[¶l™S£3®™ª=ËSÕãtãceýû÷7/TOr,_UŒSÕèTêÅòŽ&§ÅG"ʃsñu™ ^š‚ÞgÙo3;¤’#nna¼àÙeÅ_âXzÐló“½³žÁ}ÁgS¥0/2G6XR´jq•6mÚ˜Dêm$‚WgÁöÞfæÓHŽD¢/ŒâtÐ¥—^še7a<Щ‚$M¤ }–X|Ç Jî0^‚¶W°í‘ÒHåT#?HH°tQÚ†ÊÃvÂM…I;h`ú~PØJY¿Iئøú'òÃ^%z&Q‡Ø' ¥ÕcQpïSí°8Ñž .,ü‚D| w™(6FlFF†´oß>ÔÖ ¶KL_"V”›D¼ ›Ÿ÷ºIcWžTÔ³é²Á‚}¦3M´YcN±.±}4~æ4Þ“4 ­†ºÝ4¨áëô È©7ë¸ 'úMĺyóæNcg.,:_¿~}ËgP¶S0$¼«`7ª63Ù@ú­S`Çx&T;u ‚Y–&rÏÍ 6R^ 0,íìxž><¢ö|äÆmBb÷þñÇ7–œ^óˆ^Ypôå—_6•L¨Ãmâóx»>`É“w.‘ Á[¼[‚ËÔá–NýÍ7ß4oùHYõa§¯Ò¥Kï>x<×øhÇÊÓcò¨d™OŒBãêsC ÷~¢Þž©E¾¤  Æ3Å çRƒ]¥H¦è¼J7c(b|a‘w¡‚ÆÛµ A].¨6ö£¿z±ŠÙøCƒ ãÂ?¶·Y—³Ñõq«’ç†ÝB< £YÕH\!¡¸ž1b„H‘4AÂC$¢OÌ-èýQ 0’`* âyã7ÆÝp ÞxÏ™€'ÀçËâc>";»é믿ÞúA¢}üñÇÀ²»pGSõ׫W/×7aQhî!Q‰þ“ýÂÁ€Ä¸>zíy¤aÑy@Êe8ªéÅ{Xä=x @ŸÜ>pIÍg6H2xõRΙÕ~¸ÀF-àåâ5쯮²j"”ç9 ÆH$›ˆÍƒ·…ƶB¢Ù&jŽêòi¾ê ` žêädŠÎS†šä:ËßL„EÞý-@°?êqÄ• €˜©ª/5¸QÐOœ,¶ˆÚÏSôNNt/2Èk²tXšÈ¶‚)® ßd…QXtžoÅTÂeªyÏT)Aä>Jµ~*}‹ºa^äÿOyêX$g6, Ùö_d$ö”ç³¾ÝÂH¤Tƒ¼Á8_b_aï©Öë#·óN:€¥{AQØqÁ[†tq2÷,‹Ý廨ˆr¾yÎÈÏùT£–¹²Acë e"úEkc $þoŠ|,W z*¬@ôèN…]ÎÍ9F6Xn®þ)0v°S`“ssŠÿëæÍLΤVIEND®B`‚mysql++-3.3.0/doc/html/refman/wnp__connection_8h_source.html000644 000765 000024 00000043656 14042362131 024635 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: wnp_connection.h Source File
MySQL++  3.3.0
wnp_connection.h
Go to the documentation of this file.
1 
4 /***********************************************************************
5  Copyright (c) 2007-2008 by Educational Technology Resources, Inc.
6  Others may also hold copyrights on code in this file. See the
7  CREDITS.txt file in the top directory of the distribution for details.
8 
9  This file is part of MySQL++.
10 
11  MySQL++ is free software; you can redistribute it and/or modify it
12  under the terms of the GNU Lesser General Public License as published
13  by the Free Software Foundation; either version 2.1 of the License, or
14  (at your option) any later version.
15 
16  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
19  License for more details.
20 
21  You should have received a copy of the GNU Lesser General Public
22  License along with MySQL++; if not, write to the Free Software
23  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
24  USA
25 ***********************************************************************/
26 
27 #if !defined(MYSQLPP_WNP_CONNECTION_H)
28 #define MYSQLPP_WNP_CONNECTION_H
29 
30 #include "connection.h"
31 
32 namespace mysqlpp {
33 
38 
39 class MYSQLPP_EXPORT WindowsNamedPipeConnection : public Connection
40 {
41 public:
44  Connection()
45  {
46  }
47 
55  WindowsNamedPipeConnection(const char* db, const char* user = 0,
56  const char* password = 0) :
57  Connection()
58  {
59  connect(db, user, password);
60  }
61 
67  Connection(other)
68  {
69  }
70 
73 
82  bool connect(const char* db = 0, const char* user = 0,
83  const char* password = 0);
84 
92  static bool is_wnp(const char* server);
93 
94 private:
99  WindowsNamedPipeConnection(const char*, const char*, const char*,
100  const char*, unsigned int) { }
101 
104  bool connect(const char*, const char*, const char*, const char*,
105  unsigned int) { return false; }
106 };
107 
108 
109 } // end namespace mysqlpp
110 
111 #endif // !defined(MYSQLPP_WNP_CONNECTION_H)
112 
Manages the connection to the database server.
Definition: connection.h:60
Specialization of Connection for Windows named pipes.
Definition: wnp_connection.h:40
WindowsNamedPipeConnection()
Create object without connecting it to the MySQL server.
Definition: wnp_connection.h:43
~WindowsNamedPipeConnection()
Destroy object.
Definition: wnp_connection.h:72
WindowsNamedPipeConnection(const char *db, const char *user=0, const char *password=0)
Create object and connect to database server over Windows named pipes in one step.
Definition: wnp_connection.h:55
WindowsNamedPipeConnection(const WindowsNamedPipeConnection &other)
Establish a new connection using the same parameters as an existing connection.
Definition: wnp_connection.h:66
Declares the Connection class.
mysql++-3.3.0/doc/html/refman/splitbar.png000644 000765 000024 00000000472 14042362133 021123 0ustar00tangentstaff000000 000000 ‰PNG  IHDRM¸¿IDATxíÝ¡JCa‡ñç(˜ ëƒ%±Ø4 b±È˜Í¶3˜v^Á±˜…ãó–ŽELƒõ…¥•³ ,ÿb;íç{Ã/¼ðÞÀaYÕ¯åóøq:¼º¹›\òIIIIIIIIIIIIIIIIII-Òçl¹›«õ抢è_t/Ï»ã£ÑíYQVõðêäíã÷´×ùY¬Úÿµ§¦ivók¾_íåýÛ£I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$ýC[Vì=ü[„fÆIEND®B`‚mysql++-3.3.0/doc/html/refman/field_8h_source.html000644 000765 000024 00000101126 14042362131 022521 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: field.h Source File
MySQL++  3.3.0
field.h
Go to the documentation of this file.
1 
4 /***********************************************************************
5  Copyright (c) 2007 by Educational Technology Resources, Inc.
6  Others may also hold copyrights on code in this file. See the
7  CREDITS.txt file in the top directory of the distribution for details.
8 
9  This file is part of MySQL++.
10 
11  MySQL++ is free software; you can redistribute it and/or modify it
12  under the terms of the GNU Lesser General Public License as published
13  by the Free Software Foundation; either version 2.1 of the License, or
14  (at your option) any later version.
15 
16  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
19  License for more details.
20 
21  You should have received a copy of the GNU Lesser General Public
22  License along with MySQL++; if not, write to the Free Software
23  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
24  USA
25 ***********************************************************************/
26 
27 #if !defined(MYSQLPP_FIELD_H)
28 #define MYSQLPP_FIELD_H
29 
30 #include "common.h"
31 #include "type_info.h"
32 
33 #include <vector>
34 
35 namespace mysqlpp {
36 
45 
46 class Field
47 {
48 public:
50  Field() :
51  length_(0),
52  max_length_(0),
53  flags_(0)
54  {
55  }
56 
58  Field(const MYSQL_FIELD* pf) :
59  name_(pf->name),
60  table_(pf->table),
61 #if MYSQL_VERSION_ID > 40000 // only in 4.0 +
62  db_(pf->db),
63 #endif
64  type_(pf->type, (pf->flags & UNSIGNED_FLAG) != 0,
65  (pf->flags & NOT_NULL_FLAG) == 0),
66  length_(pf->length),
67  max_length_(pf->max_length),
68  flags_(pf->flags)
69  {
70  }
71 
73  Field(const Field& other) :
74  name_(other.name_),
75  table_(other.table_),
76  db_(other.db_),
77  type_(other.type_),
78  length_(other.length_),
79  max_length_(other.max_length_),
80  flags_(other.flags_)
81  {
82  }
83 
85  bool auto_increment() const { return flags_ & AUTO_INCREMENT_FLAG; }
86 
88  bool binary_type() const { return flags_ & BINARY_FLAG; }
89 
91  bool blob_type() const { return flags_ & BLOB_FLAG; }
92 
94  const char* db() const { return db_.c_str(); }
95 
97  bool enumeration() const { return flags_ & ENUM_FLAG; }
98 
103  size_t length() const { return length_; }
104 
107  size_t max_length() const { return max_length_; }
108 
110  bool multiple_key() const { return flags_ & MULTIPLE_KEY_FLAG; }
111 
113  const char* name() const { return name_.c_str(); }
114 
115 #if defined(NO_DEFAULT_VALUE_FLAG)
117  bool no_default() const { return flags_ & NO_DEFAULT_VALUE_FLAG; }
118 #endif
119 
121  bool primary_key() const { return flags_ & PRI_KEY_FLAG; }
122 
124  bool set_type() const { return flags_ & SET_FLAG; }
125 
127  const char* table() const { return table_.c_str(); }
128 
130  bool timestamp() const { return flags_ & TIMESTAMP_FLAG; }
131 
133  const mysql_type_info& type() const { return type_; }
134 
136  bool unique_key() const { return flags_ & UNIQUE_KEY_FLAG; }
137 
139  bool zerofill() const { return flags_ & ZEROFILL_FLAG; }
140 
141 private:
142  std::string name_;
143  std::string table_;
144  std::string db_;
145  mysql_type_info type_;
146  size_t length_;
147  size_t max_length_;
148  unsigned int flags_;
149 };
150 
151 
153 typedef std::vector<Field> Fields;
154 
155 } // end namespace mysqlpp
156 
157 #endif // !defined(MYSQLPP_FIELD_H)
Class to hold information about a SQL field.
Definition: field.h:47
bool primary_key() const
Returns true if field is part of a primary key.
Definition: field.h:121
size_t length() const
Return the creation size of the field.
Definition: field.h:103
bool binary_type() const
Returns true if field is of some binary type.
Definition: field.h:88
bool timestamp() const
Returns true if field's type is timestamp.
Definition: field.h:130
Field(const Field &other)
Create object as a copy of another Field.
Definition: field.h:73
bool auto_increment() const
Returns true if field auto-increments.
Definition: field.h:85
bool set_type() const
Returns true if field is of some 'set' type.
Definition: field.h:124
bool enumeration() const
Returns true if field is of an enumerated value type.
Definition: field.h:97
Field(const MYSQL_FIELD *pf)
Create object from C API field structure.
Definition: field.h:58
const char * table() const
Return the name of the table the field comes from.
Definition: field.h:127
bool multiple_key() const
Returns true if field is part of a key.
Definition: field.h:110
bool blob_type() const
Returns true if field is of some BLOB type.
Definition: field.h:91
const char * name() const
Return the field's name.
Definition: field.h:113
bool unique_key() const
Returns true if field is part of a unique key.
Definition: field.h:136
const char * db() const
Return the name of the database the field comes from.
Definition: field.h:94
const mysql_type_info & type() const
Return information about the field's type.
Definition: field.h:133
bool zerofill() const
Returns true if field has the zerofill attribute.
Definition: field.h:139
Field()
Create empty object.
Definition: field.h:50
size_t max_length() const
Return the maximum number of bytes stored in this field in any of the rows in the result set we were ...
Definition: field.h:107
SQL field type information.
Definition: type_info.h:159
This file includes top-level definitions for use both internal to the library, and outside it....
std::vector< Field > Fields
The list-of-Fields type.
Definition: field.h:153
Declares classes that provide an interface between the SQL and C++ type systems.
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1mysql__type__info-members.html000644 000765 000024 00000020455 14042362131 027747 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::mysql_type_info Member List

This is the complete list of members for mysqlpp::mysql_type_info, including all inherited members.

base_type() constmysqlpp::mysql_type_infoinline
before(mysql_type_info &b)mysqlpp::mysql_type_infoinline
c_type() constmysqlpp::mysql_type_infoinline
escape_q() constmysqlpp::mysql_type_info
id() constmysqlpp::mysql_type_infoinline
mysql_type_info()mysqlpp::mysql_type_infoinline
mysql_type_info(enum_field_types t, bool _unsigned=false, bool _null=false)mysqlpp::mysql_type_infoinline
mysql_type_info(const mysql_type_info &t)mysqlpp::mysql_type_infoinline
mysql_type_info(const std::type_info &t)mysqlpp::mysql_type_infoinline
name() constmysqlpp::mysql_type_infoinline
operator=(const mysql_type_info &t)mysqlpp::mysql_type_infoinline
operator=(const std::type_info &t)mysqlpp::mysql_type_infoinline
quote_q() constmysqlpp::mysql_type_info
sql_name() constmysqlpp::mysql_type_infoinline
string_typemysqlpp::mysql_type_infostatic
mysql++-3.3.0/doc/html/refman/ssx/000755 000765 000024 00000000000 14042362131 017405 5ustar00tangentstaff000000 000000 mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1NamedPipeOption.html000644 000765 000024 00000021720 14042362131 025627 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::NamedPipeOption Class Reference
MySQL++  3.3.0
mysqlpp::NamedPipeOption Class Reference

Suggest use of named pipes. More...

#include <options.h>

Inheritance diagram for mysqlpp::NamedPipeOption:
Collaboration diagram for mysqlpp::NamedPipeOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 

Detailed Description

Suggest use of named pipes.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SQLQueryParms.html000644 000765 000024 00000064702 14042362131 025273 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::SQLQueryParms Class Reference
MySQL++  3.3.0
mysqlpp::SQLQueryParms Class Reference

This class holds the parameter values for filling template queries.
More...

#include <qparms.h>

Inheritance diagram for mysqlpp::SQLQueryParms:
Collaboration diagram for mysqlpp::SQLQueryParms:

Public Types

typedef const SQLTypeAdaptersta
 Abbreviation so some of the declarations below don't span many lines.
 

Public Member Functions

 SQLQueryParms ()
 Default constructor.
 
 SQLQueryParms (Query *p)
 Create object. More...
 
bool bound ()
 Returns true if we are bound to a query object. More...
 
void clear ()
 Clears the list.
 
size_t escape_string (std::string *ps, const char *original=0, size_t length=0) const
 Indirect access to Query::escape_string()
 
size_t escape_string (char *escaped, const char *original, size_t length) const
 Indirect access to Query::escape_string() More...
 
SQLTypeAdapteroperator[] (size_type n)
 Access element number n.
 
const SQLTypeAdapteroperator[] (size_type n) const
 Access element number n.
 
SQLTypeAdapteroperator[] (const char *str)
 Access the value of the element with a key of str.
 
const SQLTypeAdapteroperator[] (const char *str) const
 Access the value of the element with a key of str.
 
SQLQueryParmsoperator<< (const SQLTypeAdapter &str)
 Adds an element to the list.
 
SQLQueryParmsoperator+= (const SQLTypeAdapter &str)
 Adds an element to the list.
 
SQLQueryParms operator+ (const SQLQueryParms &other) const
 Build a composite of two parameter lists. More...
 
void set (sta a, sta b, sta c, sta d, sta e, sta f, sta g, sta h, sta i, sta j, sta k, sta l)
 Set the template query parameters. More...
 

Friends

class Query
 

Detailed Description

This class holds the parameter values for filling template queries.

Constructor & Destructor Documentation

◆ SQLQueryParms()

mysqlpp::SQLQueryParms::SQLQueryParms ( Query p)
inline

Create object.

Parameters
ppointer to the query object these parameters are tied to

Member Function Documentation

◆ bound()

bool mysqlpp::SQLQueryParms::bound ( )
inline

Returns true if we are bound to a query object.

Basically, this tells you which of the two ctors were called.

◆ escape_string()

size_t mysqlpp::SQLQueryParms::escape_string ( char *  escaped,
const char *  original,
size_t  length 
) const

Indirect access to Query::escape_string()

See also
escape_string(std::string*, const char*, size_t)
Query::escape_string(const char*, const char*, size_t)

◆ operator+()

SQLQueryParms mysqlpp::SQLQueryParms::operator+ ( const SQLQueryParms other) const

Build a composite of two parameter lists.

If this list is (a, b) and other is (c, d, e, f, g), then the returned list will be (a, b, e, f, g). That is, all of this list's parameters are in the returned list, plus any from the other list that are in positions beyond what exist in this list.

If the two lists are the same length or this list is longer than the other list, a copy of this list is returned.

◆ set()

void mysqlpp::SQLQueryParms::set ( sta  a,
sta  b,
sta  c,
sta  d,
sta  e,
sta  f,
sta  g,
sta  h,
sta  i,
sta  j,
sta  k,
sta  l 
)
inline

Set the template query parameters.

Sets parameter 0 to a, parameter 1 to b, etc. There are overloaded versions of this function that take anywhere from one to a dozen parameters.


The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1AutoFlag-members.html000644 000765 000024 00000010060 14042362131 025721 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::AutoFlag< T > Member List

This is the complete list of members for mysqlpp::AutoFlag< T >, including all inherited members.

AutoFlag(T &ref)mysqlpp::AutoFlag< T >inline
~AutoFlag()mysqlpp::AutoFlag< T >inline
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ObjectNotInitialized__coll__graph.png000644 000765 000024 00000020453 14042362133 031165 0ustar00tangentstaff000000 000000 ‰PNG  IHDR”‰)+sRGB®Îé åIDATxí]˜TE.–…]rΰ$1’säIŠ(pÀ$gT”Œ‡"'’D’ ˆ€äŒÉ9‡•–…¥¯þÂ7¼ÙÝÉ;]ß7óúõëP]]]]ýÂßIiÒð ‚tZé?~L*T ÐÐPŸ”àåË—éöíÛN+ž^}²{7SZéwÿúdë´Òùd·$n¦Üªtýõm۶ͧ$xïÞ=Ú¸q£Oñä.f~ýõWŠŒŒtWñ .×%J·oß>j×®] &:D#FŒˆïˆ>ø€vîÜ)ŽðªU«¼Á‚Ûê4Úf]ÁO?ýDÖÑ^?·ÒÁz5kÖŒ²dÉBuëÖ¥ëׯSË–-iîܹ4lØ0ºtéÕ¬Y“ (@'N´4°_¿~ôÃ?Èy:uèäÉ“„[4o½õeÏž4h@×®]£ÿýïÔ°aCÂÓ¹eË–QíÚµ)**Š>ÿüsÊ™3'•(QBâQÐÂ… é…^ B… ÑÔ©S¥ìo¾ù†Z·nMÅ‹§üùóKÚ3fÐÌ™3©iÓ¦ÂhóæÍT´hQʘ1#µoßž°zœ7ož  2eÊPîܹiÚ´i’ÖWþ¦OŸN… ¦¼yóJ›ÌmÃà‡›7o.ƒ}ÿþýôèÑ#êÙ³'uíÚUú·<°ÚmذAÚ¶þóŸÿ”¶{¤xöjÐÙ³gÕ™3gŒS›ÇqãÆ©6mÚ¨?ÿüS½û•DñˆRåÊ•SwïÞUï¿ÿ¾zûí·ßsR•+WV¯½öš”ÃÂRÜÉ2dˆâå·3fŒzóÍ7+bAI¾û÷ï+V5iÒ$Å·oÔ‚ +§b%WPK–,QEŠQ,L‰ûùçŸÕ¢E‹T† Ô‘#GÔǬ²fͪŽ=ªXÉ+•zðàªZµª”…ºXQ…ð<~üxõÛo¿Iº5k֨ɓ'+VBÅVQxxþùçmÊÁ‰¶ò­sT‚ÂÛ·o^íef×@¥NZñ€U›6mRàÍܶ'Nà9ºêÖ­›ºpá‚ÈáÊ•+"[´õÔ©SŠ „êСƒTÁʦx0ªµkתL™2© &Ø«ZâÙ ¨ãÇǚƑ‹ÑîÓ9¢å ¤O>ùD¬7Ž0J`1’%KF©R¥"î8š?>•,YR, Xƒ†.Á¥K—ÊH[·nX%XË)RЗ_~IõêՋפIb¥¢jÕªIZX¦9rÐúõë)eʔĂ”²råÊeñY‘Å öîÝ[,(nܦK—Ž’$I"éÿøãâAF=zôs,RÊýõשlÙ²ÄJ}úô‘ë¾ðÙÀªÿûßÿ–Ùîîé™ÛƃØ0PÒ¤I£±Œ)³f©¯¿þZd‚Yê½÷Þ“t˜QOQ¼•–ƒ§Q‚ï4hÐ bÓ,¼Âw "øk‹/–΂€ :xð øS8‡eÄ*²~ýúbá @Ï=÷mݺUîìwìØQFëêÕ«iåÊ•â×ñt"‹ø)µjÕetîÜ™ºwïNæ•|tO›b}K•*%l€GƒàBYy&ž¢N÷?þñã²OñD>p¯^½hË–-b­0x@æ¶9·¸"¤°ì!³ãÇÓXœ ¤Ç‚áðáʵdçiLñò\ÎáäŸ?Þr-®`, â"~6, sº7n¨sçÎY¢°` , ~xn‰Gi­ <Ÿ>}:Z[¬ÓÄuî©…„Á¬`Æ©mµ-Z«ôÑØ±ce!ÙW¯^]ñÌb•*ú©× X0`ém&,$ ˆɓ'qç–ÌÂBÀš`áÌ>œqÝ–b+]HHˆLñF>8bj´&[m³Nc>Gñ`'^ÕŠ›ÛKUªT1'q[ØCöÔmüÇ(ØXŒÄ¸ #bH`Ê”)tõêU¹Œû~ž¢D§tÆŠ×Sô÷zœ}7.!í÷B"!•èùé§îüåWf#Z½$Doé ׬YÓ2 @m¿z |ï]:º8î•7P ðå¿?Q@(:¤mÛ*Ü97iÅŠý>ß?÷®>¢Õ½NS®²q¯VùJà8i`Ø€âuò—»Ø®àsûöSªT©aŒ&éŠâÜVƪž§ž>€•Æ0zóõÅ_¨ÿüç?ÆPŠ¡14££NÒâ Äø3 2dΜY ÁíæMÐM@QçγÕ'Ÿ,óÙ6ŸÛxS}ßèŠzô²ƒnƒF ¿Œ#Øy8î#ŠŠÒ1¤b€"ÅÀ†Š1aRx}ˆ€a`JÅ£+Þ~À«í˜éÕ˜R†}ƒ¾ûn»¼`ÄùÊ/cnùìUFAÁOqôÈ K1¥@`0ø£ i0 B)àBÀÕc A2®Ø" lö¹>F7C„y£í§t™3§f¨­:Œæ´Ðò޵ÎË»îR¹®¹(‡Õ«J€Fƒòwä•W^á'-_ @¤ãg`Áà»Y6a!†´<¥ò-£J>·JÀ)z½M›*l5îÐÒ¥ûbUO_ «š–_Ô|ÔhÔ83,NW”Hšˆ³GÀç@$ûubÕ•Éî_;{u8J”„>û¬ ¶Ä/¾•…¥Ãôˆé?(Ž=¥Ã‹¬wà8À Œ?^z™°Ê$ïT_±b…3:ãtÞ€¸9lOJ=zÌeØTüOC{Iü6 ‡P<@¶AI6 ]X=ÀáÂß³&XR@†¹›Zé®_¿ÇÓÕ§ WÛ…¤ÛÙÏÝåÊòØ 8^kzñÅÞlκL[ç­t¿qL?þ¸—¡i;Ù’ÛãðiaphÊXè)¸·Û+ô Ò§3ËýÝw+ò« ç¿Ûí‘0V«¿ö?MéòøæV›îBÀ+ïQ£šñ3Kà¡»ä£\|d³ù“óT¥_%eKHðJ‡ÎÆ·³µk¡Ñ£=·ªÛ÷íUžRC)OÿÁ qÕÀÐJ÷·$û÷oÀ Š=|çÿŠ«dk·|dshÞ5ªÔÇq0p»…ùá­twZ† )©ÿúü{º×…;ûòðRþhÚß¿êJ¨Œ~õj-¸ºu'ÈkPÍš•µ¾¤Ï]$m鬉EÅÇ/ã-¡|oŸT+VýöT+U×+–›w`,ÆÉžíkf•DŸ:)­t6د_}Þœx:ä_¯ÛhŠOFi¥³Ñ-@‚<¸!/*~°q5aQxøÀšùw¯Îtpóæeùu âm⇑=0ûmqŽ‚ÿ†÷r†¯ÄW[ºXz‹ŠQ£Vð›·bIû%X¸}Ó©Jïo°;§ž»ª•.Y.œ“·V/ÁÛÇÿKªØ/m{^~7+¥É<ö„tU+]Ý·o=Z½ú8p1Ž”1/Ÿßt‹®ŸŒ b­絩˜Rˆ£•.¦L¢Å¤NÂßS4 >}~°¼ò-ìñ°câ%zeH^ËG6v’\´~"á`—7nü5n\šð*”&ç$ •ÎAùáE€fÍ&Ó† ýø??Ãøu°Kæ¯n¹q€œõ»_HHšÏïøŽ¬{öìév•ðÚ–ø>S“oI`ùòåÁ:Ñ ßê÷€àF+]@t³o5R+oõG@pã5ŸÎ›ÒŇǻvíˆWðÁèIõl+L”‰¯êsç~¶-¨+ê±.ƒaÁä;Õ9rX_òéó€´t@®l×®Ë:¦qãÆüíì´víZËÏ]è˜P4ƒ÷íÛ·Ó… \Öäöõ± ¸q6bŸE:uJÕ¬YS5jÔH………©O?ýT1ž‡â-@€W¯^UlIÔ½{÷$Ó„ ÔðáÃÕÎ;£©,Y²¨.]ºÈµ‹/ªjÕª©|ùò©6mÚ¨àÉ“'#ÉõÒ¥K ¦[Ö¬YU“&M¤L«Q­ZµR B#ù–.]*içÍ›§ #Ì\Š;_â?†oP+VTŒ¢Ø ªzõê À!ÒU¯^] [´h¡òAݼySpæ²e˦êׯ¯Ð>-Þ .¬­I :TõéÓG­\¹REFFJ»2f̨pt$?ÃDðíjÔ¨¡nܸ!ñöþ–>ÝM>ié«Q»vm¹Æïµõ§† Êr~ôèÑŒ!œ•‹µfÍœ³gÏ&î ú裨uëÖ´cÇÁê8~ü87ŽXq¥¤©S§Ž”‰4¦höáȧW´öL­;ãYN±é•;_Ò`êÃ4Âôš4iR ã}8~ÆT‚S-¡P±ÕRìç(öä<Æ^³L¯¬´’Ó5ÈÙÊÂáúõë Ó+ßîP ”ò0í‚Ø?”Åu˜­IŒç±C† Þ~ùåÅ·hdá°­jÛ¶mªD‰R>=X°ï&ü¢>¶lÂ3ê°Å™2eR(ߘ^!#Vfi[|eð ¹±…FQŠ}@Ÿ™^cï}a×õq)£5bU _ÅLèkÿ‹§ñŸØ‘¥3§‡ß„Žç)Ê ¥4h ”ß¹sÇïÊ;ö1Š;qâo7pßo‹7\¿Æ@³$æÚà ¿ïÓaÚˆØyæ7zWËÏœ+[kbë(Ó Vƒ¶~£á÷™¯³E1Ÿº4Ì·7b”gV›/Øâ hë¶ÈVl¥óvœWÞ§ƒcÍÓ©¶³E#ÞŒƒ PŽ|!ÜBà)Ø’0ù(ÇLHü½7ÉoîäÇxËGw’Ï®^ãj4߈+IŒë°f…Ck…Cœ·• <€lñöôŠÿûíêÕ¿ÅØÜ{ÍÒaŠM ”4iJvñí•g÷ý¹]üæ°ÛÙ÷ŠÒ9ëϹ]*ñ¨ gÎüx«$ïbÓ*¹;©ž^èÿÝ»ÏQŠÉù¦óa¶tÎ-Œœ`Ãï²j¥s¢ËæÍÛÁÈó£º$üôã˜%VV­t ìoX¶%Köðã³'‚Ê>gÎö–xÙ´Ò%°Ï7m:.ò‘>êêÕ‡yÿ®Ç ,-°²i¥K`Ï»îÝ{¶ïD²dIÙ·{ú2@‹ ˜lZéÐÕ°h«VŠöTåîÝš={[J ¼,ZéÐç¿þz˜ßO‹ùømÛ¶S²åSŠ ¨,ZéÐݰh°lÖ”·’€Wø[ñàW§ðã êÇo*Ǽ¯ŽÀuöîîWmò4³Zé ñõëÑÉ“W%'óæÍDÏ?Ÿ]ÎkÔx‰ Ì’€R'‹V:'ûºsçÙT³æK‚]çdQ“]ûtÓÕ¾ÓP­tNöÞ–I,oÌ8) ‡³k¥sXT¶bñ˜Þš±ÝJׯj¥s­\6èÈÐJC$:Âíà‘j—°ù-3 ±È Y²¬¼_Y̽Á´Üžé 6U6SL“šßºuKvÔã=EM±:¨%à¸x¿Yâ}f£eÐÓk4qèOH@+'¤¬ëˆ&­tÑÄ¡O¿±Ó·­ëöâ|^é°ýäèÑ£íñ¯xìm?xð`úüóÏ [w?~\Î'Ož,å`ûst²5mÙ²E¶J·Ží¼cÇŽ¢hGŽ¡~ýúÑ÷ßoI¾råJâ¯-çÖl}¹dɉÆÖð±¥å]ÀéÚµk ÒxÒ"'#κ\ã|Þ¼y´gÏŠ+‘ÞÞ²š1c†½Ëvãc]½ÚÍeºpùòe;v¬lWÉ;3ó>YoˆeC-[¶”Í}±0oÿ-¹x tÙsž·-'¬Šy‡fjÛ¶­ÄíÛ·ÆÏЪÉ),,ŒJ—.M¼õ¸äƒPy›pIúôijذ!µiÓ†ÐAû÷ï¡óvëÔµkWªT©’ìetíÛ·§ÿþ÷¿Œ”ù¼X1(Û×_m÷º{÷.µhÑ‚ªU«&õÌŸ?Ÿ†JجxÀ€Œ²™W1**JŽcÆŒ…å­Ð©S§N²ßì‚ ¤-2d¶ìܹSºÿþôæ›o22gAZºt©Ô‘+W.“ôH”ë»ï¾ä'È«T©RÂ/™·…œ'Nœ(²uAý=zô ÞJ]î0`à ¾1;dÏž]”ž·˜§íÛ·Küûï¿OÅŠ³Ôoä5koG°Æ_£F jݺ5M›60@°!r·nݨpáÂÄÛ³ÓÈ‘#)<<œlmŠl)$–€Ó–÷îÝ»—Ê–-+J0uêTétJF7oÞ,Î[}K¸@bmÀƒ¬6lØ@¼e½(8Œž¼@A1¸†NpBN[:Tš"E ãP‚±v˜Êàk`SßâÅ‹‹_ƒg”C°¹sç–‘ûꫯò‚_I (ÒU®\9F{°]x•*U$e¡# Xø¡,X3ŒhcT¿öÚk’>\dd¤„Íà;8ø©(Ð9ùòå“Î3”ia=0%Ai1eæÈ‘Cü™ôéÓK› ¤ø¡m¡¡¡¢tiÒ¤±TS§NZ¶l™X#ò·ß~Ë•+'Qk×®%ÄAžØ±ÛzÛtX>”‚ÅÄ´jm@^ƒ*V¬HiÓ¦+ÀvÚ"(x…‚AiÁ¬\–,YèÀ2‹Ý¾}[ä ÿvذa2PëÕ«GëÖ­³Ud¬qN[:”a@HP4Úè@£fL]u[·n•)–æ³Ï>£’%K|˜}7ž[ eA°A©‘f/ÞHksæÌ)jœãˆ2β+`XEL% Lñ|]ÂøƒÕEP>X¨^xAJªT©,é`aÍ–Ô¸€8LQ°–ßh³y§mÔ‹jÌ y›ù³•3 Vƒ=6š2eŠ(9\xCh+~­Zµ’Á„™ ”ÐÀ]¢tÂA,°NÁø!ŒÅÌ3FÕ¤I“¤0"a…ÐXÞÖŠÊÑ !b~¦b˜þcÇŽ‰`à¿Á÷0V¦8âS|#X:mæÌ™â›À a mÚ´I|J9á?øJPLø™ð½0òáÁ­€O‰ŽÁª°W¯^F–+^ð_ „¼°@È þàØÃ’‚ àñ%ëü_(Xß¾}e`É…¿ÿÚµkGëׯ—3LãX(ÁŠÜ¿_:åÁAOqY'C.( íÀ€Â Ü Zµj‰ÿ‡[6˜`¥àƒÌyá§aañB`ð`ÕŒ+ö¡Í7–ÇZXü`V¿ñ¥X!ýÏŸ?/uų×>}úÈŠÓðÉÀ(œVø°rA¡`éæÌ™#Óé;ï¼#—`Ùà7NÂh, …‚PÌSQ¦õVucZ6Ê1§%Æà0¦xø«2â`M`5àS®òÂú¢nÃR  àË~ЩàÉÌ Võ¨ß(ÏÌŸ½0xC9ƒA'\ |„Qžùº‘ÎÞé cthüuXÿ¸³ ž½=zÔ’Ô­–Ψ>œkŒ 3Yß>Àµ¸: °%4³PÌuØ CY°(±GðË ‚ÅE2ʇ¿j+¯Ù¯D^tn\m1ê0Ê6Îq„¼âKÖ¾4òƒƒãŸr±˜°&´Í…³Îgœ{ÄÒa´ØbÞ`ÂÖ£ÊÕ0£ qÖ ‹JH'IÆ8þ`Á¬ëŒ#‹¾l’€×,]|<[JŒ.[ï.e3äf«Nãš>&LY½&Œ5+ÑJ€W‰v‰ï'áF•þi8¥Õ­ÞŽÕ§K´#M7Ì«ÐÓ«WŘ•k¥ Ì~÷j«µÒyUüYùÿàPÄäB mIEND®B`‚mysql++-3.3.0/doc/html/refman/namespacemembers_vars.html000644 000765 000024 00000006117 14042362131 024025 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Namespace Members
MySQL++  3.3.0
 
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1StoreQueryResult.html000644 000765 000024 00000114371 14042362131 026122 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::StoreQueryResult Class Reference
MySQL++  3.3.0
mysqlpp::StoreQueryResult Class Reference

StoreQueryResult set type for "store" queries. More...

#include <result.h>

Inheritance diagram for mysqlpp::StoreQueryResult:
Collaboration diagram for mysqlpp::StoreQueryResult:

Public Types

typedef std::vector< Rowlist_type
 type of vector base class
 

Public Member Functions

 StoreQueryResult ()
 Default constructor.
 
 StoreQueryResult (MYSQL_RES *result, DBDriver *dbd, bool te=true)
 Fully initialize object.
 
 StoreQueryResult (const StoreQueryResult &other)
 Initialize object as a copy of another StoreQueryResult object.
 
 ~StoreQueryResult ()
 Destroy result set.
 
list_type::size_type num_rows () const
 Returns the number of rows in this result set.
 
StoreQueryResultoperator= (const StoreQueryResult &rhs)
 Copy another StoreQueryResult object's data into this object.
 
 operator private_bool_type () const
 Test whether the query that created this result succeeded. More...
 
- Public Member Functions inherited from mysqlpp::ResultBase
virtual ~ResultBase ()
 Destroy object.
 
const Fieldfetch_field () const
 Returns the next field in this result set.
 
const Fieldfetch_field (Fields::size_type i) const
 Returns the given field in this result set.
 
const Fieldfield (unsigned int i) const
 Get the underlying Field structure given its index.
 
const Fieldsfields () const
 Get the underlying Fields structure.
 
const std::string & field_name (int i) const
 Get the name of the field at the given index.
 
const RefCountedPointer< FieldNames > & field_names () const
 Get the names of the fields within this result set.
 
int field_num (const std::string &) const
 Get the index of the named field. More...
 
const FieldTypes::value_type & field_type (int i) const
 Get the type of a particular field within this result set.
 
const RefCountedPointer< FieldTypes > & field_types () const
 Get a list of the types of the fields within this result set.
 
size_t num_fields () const
 Returns the number of fields in this result set.
 
const char * table () const
 Return the name of the table the result set comes from.
 
- Public Member Functions inherited from mysqlpp::OptionalExceptions
 OptionalExceptions (bool e=true)
 Default constructor. More...
 
virtual ~OptionalExceptions ()
 Destroy object.
 
void enable_exceptions () const
 Enable exceptions from the object.
 
void disable_exceptions () const
 Disable exceptions from the object.
 
bool throw_exceptions () const
 Returns true if exceptions are enabled.
 

Additional Inherited Members

- Protected Member Functions inherited from mysqlpp::ResultBase
 ResultBase ()
 Create empty object.
 
 ResultBase (MYSQL_RES *result, DBDriver *dbd, bool te=true)
 Create the object, fully initialized.
 
 ResultBase (const ResultBase &other)
 Create object as a copy of another ResultBase.
 
ResultBasecopy (const ResultBase &other)
 Copy another ResultBase object's contents into this one.
 
- Protected Member Functions inherited from mysqlpp::OptionalExceptions
void set_exceptions (bool e) const
 Sets the exception state to a particular value. More...
 
- Protected Attributes inherited from mysqlpp::ResultBase
DBDriverdriver_
 Access to DB driver; fully initted if nonzero.
 
Fields fields_
 list of fields in result
 
RefCountedPointer< FieldNamesnames_
 list of field names in result
 
RefCountedPointer< FieldTypestypes_
 list of field types in result
 
Fields::size_type current_field_
 Default field index used by fetch_field() More...
 

Detailed Description

StoreQueryResult set type for "store" queries.

This is the obvious C++ implementation of a class to hold results from a SQL query that returns rows: a specialization of std::vector holding Row objects in memory so you get random-access semantics. MySQL++ also supports UseQueryResult which is less friendly, but has better memory performance. See the user manual for more details on the distinction and the usage patterns required.

Member Function Documentation

◆ operator private_bool_type()

mysqlpp::StoreQueryResult::operator private_bool_type ( ) const
inline

Test whether the query that created this result succeeded.

If you test this object in bool context and it's false, it's a signal that the query this was created from failed in some way. Call Query::error() or Query::errnum() to find out what exactly happened.


The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SetClientIpOption__inherit__graph.png000644 000765 000024 00000013054 14042362133 031174 0ustar00tangentstaff000000 000000 ‰PNG  IHDR‘‰,]ÚÕsRGB®ÎéæIDATxí] ÔMU~?D J£T†SõgHa¥A¬”Fs(‘¨…´Vµ´2ôKš,S¦ÊZ(%¥B2}”Y‘O“†¯T2}TûŸWû®ssî¾—ûÝÿ^÷ÝkùÎ9{ï³ÏÞÏ~öû¾ûÜë>9†iRŽ"Gq¯ÞªJ"%ÂQ# $:jµb©„ààÁƒT¼xñT>2+ŸõÝwßÑYg•²±§œD%K–¤½{÷¦l€Ùö ºuëRªI¤î,ÛXVãU¨ÙÖ¤’(Ûf¼Æ›u$Ú·o-Z´(©P~ùå—4~üx=z4-\¸â}»gÏž¤÷%©‹³±¬#ÑŽ;¨sçÎqÂã®6dÈjÑ¢-[¶Œ¾ÿþ{êß¿?5iÒ„vïÞzó}÷ÝG+V¬ ]»vÑüùóCëeL>öHUâ•gxwóq_}õ•áI0­Zµ2+V4ƒ6M›65gœq†9r¤ùé§ŸL5 ÚB1b„yòÉ' OŠiذ¡9õÔSMÏž=¥Œw)¦Q£F¦R¥J¦C‡¦k×®fëÖ­¦råÊR~ùå—›nݺ™ÓN;ÍÜrË-Òæ«¯¾jÚµkgjÖ¬)÷Í™3GêNŸ>Ý<úè£rÞ¯_?óú믛7šN8Á01%ßþAÿŸ~úiÔÖ„ L©R¥Ì9çœcV®\)ãÄ}‹/6—\r‰9餓 “Üðë3mÚ4Ó©S'ƒ~ò–ÝŒ7Î>"ôX§NÄ-/Œ‚´³Dôá‡RóæÍé‰'ž PË–-i̘14lØ0â §bÅŠÑ| õµ×^#™ DíÛ·§åË—OÁÅ >œ˜ˆÒÞ·ß~Kß|óMÔâ^³f ñ¤ÑgŸ}FùùùôÎ;ïÐ?þHóæÍ#& =óÌ3ÄÄ‘{Î<óLºð åü¢‹."\ã>œ3Á£Úmܸ1­_¿>°­¶mÛJ™üÄd¢M›6ɽ}ûö ùþûïËàûí7š5k;V,ÜСC£ž“6…Á̰6ã±DXÝeÊ”‘•ÈîAVíÄJ)RDšÆ*ïÒ¥‹¥)W®œaâ™Þ½{žPóì³ÏšíÛ·K½êÕ«›ÜÜ\9Ÿ:uª¹îºë¢,“ÑüðÃR ѱcGóÔSO‰u’Lþ+öõ×_Û˨ãĉÅ*FeòE=Äò…µËÊdKV­Z5óóÏ?‹5´í¼ð æþûï7¼p / Éþý÷ßVÕý»´`=`m˜4Ä;EצMš;w.½õÖ[tÓM7É[pv{„ÕüñÇ‹Å`"¬» ¹·D‰QmØ‹Ob¤Ç{LÊ'½ùæ›b)qaq'õêÕKb« *„¶…ñÛÎ;¥Ú‚ã?<ïüóϧ_ýUbB)ôü±ýöd¥Ç©8Üý‰'&Š·+ص!ò&ìÜüñ »Ù=½ûî»yë#&B¼Åw$q “ÅüòË/æÏ?ÿŒä»NØuì,½)V[4{«Êùþýû [1Ãä>¬,ÞŒÿGL”Ò`“µlxàÂ.ÿ¼ ;7*Z´¨ìž° Jˆ»lÜä-?å”S¼—Îó³Ï>;´NP[ÞXÉÞˆ¸ V1ÓRžªNãÓûòåËõ§ølq¤$Þ„ÏçÝ\ä¶6ÒN$ƒOì7 °ý>ڔ̶âí >Åç÷i„cªRFZ"o$vx^á^ÚŸ’AÛf2Û²m¦ã1£ëtPûįR ¬¶°i»Ëð‘“S„J–¼„öïÿ‚·ð|¥é{+>+Œ^§ÔDÁ2åßڵ߰ lJ3f,ɘ>ÛT~5¤L)‰ cf›3f¬à7ÅEhòä%…ù˜Œo[Ic gÎÌåþ¡5k¾åƒ{bÔÌî"%QÈü/_¾ ô·”âs«9s> ©©ÙJ¢LºŒßú|kïÞš4éÓšš­$ à\ØÜ¹k"ª¢J^^>èú[@mÍRp`áÂÍT´¨šBŒ¤épüH^# s¦LYÆß(ˆyAÁA‚‹Ót8J"&ûöä¯vl üX~þnÚ²å'ßz™Ò7Ö™wnnüEeË–”îâ;GEŠà{L9²ÝŸ?=U©rè»B™0žTô1¥Ÿâ§b@ÉxÆÒ¥_ ‘ÐV÷î“hèÐ[ùÍõ!R5hP™¿®ÿ·’ÑŸtoC-QÀ Õ¯A$·xñ¢â”/è»Î‘=‰  1Q =9R”Däy¾Úí¨ÅJ"Ǽó×y§æ¨”åÅJ¢,'@2†¯$r Wvh‹ï¨˜ÅÅJ"ÇäÕÁ¥i G@Iޖĉ€’(N ´Z8J¢pl´$N”Dq¥ÕÂP…c£%q" $r¥o¬q±’È‘¾±v¤$r¤5ܨ%rc¤5(‰ácý?6HJ¢ØøÈ'øú)~l”D±ñÑÒ8P9@Ò-¾ .V90Ò-¾ %‘ ­áF@-‘#ug€¸XIäÀHÝ™ %‘ ­áF í,QŸ>}ä‡Añã éðoÛ¶Ù,urZôxÔªUË=«)®‘v$‚NÔƒÒåÇAwïÆïH‹þ°ä„h ¥˜#ÎÇ¥‰œ=Ö i‡€’(í¦$ó:¤$ʼ9K»g쯂°¬“h˜A„z±A:^´,X@W_}µ¨4zó]çxÔ¡Õ =3´c< š³,wEVŒ/ž{2±NFZ"ÈNA qÕªUüÓkˆU¨#ÒàW\q…()ú'j† D"  PWd]Yb Vþâ9tå•Wò/ìψٌíW¯^³î1QÈ» ´J7ÜpƒáÝYÌ>Aœµ_#uXöR$Æ!¾Ë“"âx¬ˆ(bÃ<¡†Õ­E&Bx=ôHž³®˜aVÃD”vžþysî¹çʽ7ÿâ‹/Ìí·ß.õ#â“E‹‰Ð1î‚$ѽ}€ì9„óFmXsð3£F’¼°¾HaÀB =ݶ®i•â!¤¡GIg=Ãä2†]»v(VCÝšô¬%b^|ñEƒ|ÔåéÛn»M›¡’x×]w™®]»¨ ¢|ÅŠRDd¹rÃZ³†‹£ða½Xi—_E(7öïßß@5›­¡aýWy–íÔ¤»uëfXßUÚG?An–@UÇ ¾D=Ìw‘®$ÊHwvúé§‹/ô]¡cß²eKâO,…./­²s‹-ˆ'Qò½nÚ°ÐZ…Ž,«!2|ýõ×ÜêÛ˜ŠÐ~}Vð/^\š|ðÁ¥~§NDûÕßT‚B$b)èÕB«¶AƒÄr¢r¿¿/’™a2’DC† !Ä+;võgÈ›óª? ú 9OTòË„oÙ²…Ž?þøÈý'Ÿ|²œC²Ü/ÊîLª­”•áôJ¢Gú÷¶7ðljf’d¹<þëŒ$d;9."vk2vW¢ mç• ·y±ŽÕªUEiì¤ WÎñT‡u™9s¦ä!åǧ{ï½—,ýÐI¢£®·°@¨‡~BézÙ²e"»ŽzÇBÊÈ-þ=÷ÜC,‹ì8D€¡kÿÒK/É|@.®éî»ï׿š$|uóÍ7Ëîd‚•*]º4KT£¶mÛÊÖ;AŽc(??ŸÚ´iC°„HVÒêp¡ãÇ—|ÛŽyäúâ‹/¦ÆòBDØùó¸ÃEÑ—ŒL¾Øíÿ~O`m;‰€Ø+GŽ|¶ I‘ãž¼¼<3yòd‘7ç˰ë1¬‰"I8g e˜,6KŽA’è(ëv‡]?Ò¤u!,1Ä#~9rXóÄûH(ÂM5iÒ„*W®LpcÞ çxa åOA’èa}€´yò·™i×éÎ’ 2dEyKO[·n·¤côLÄd66 *Ï–<%‘g¦a…IÞW"÷ku3rwv¬MB¦'í,QÕªU‰?ÒH \ÓQÒ¼fÍši·*ãEÃw¾~ý÷ü ÿÒÈ‘wñÖþ?¾R½´¨;³HUÒ<”€,%Q(6K%Í-±J¢|TÒ<˜€l%Q(ÈRIó`²•D ¨¤y(1²”Dਤy(1²”Dਤy(1²”D>pTÒÜH—i÷Æ:Ž>j•4O^}c€™Jš€#K-Q8*iJŒ,‰b€£Eñ! $rà¤?·çˆ‹•DŒôçö)‰Üi 7j‰áñÀ¥i G@IŽ”¨¤¹ .V¹1Ò”D€´Ø€’È‘Öp  $r¤Ån”DnŒ´†%‘ ÞÞgêu8†–´b%‘J}c툋•DnŒ´†%‘ -v# $r`„xHc¢Ø )‰b㣒æ|P¬$Š$­%Ql|ä|ug±ARÅÆ‡!ÖˆKsTËêb%QVOr¯$rà¨ß±vÄÅJ"FêÎ)‰Üi8ðþº;+ Š^ߦÇ1(]º¦ÉÉ9NñðpbàÀ^Ú˜¨ÿ ™ÊvíÚ‰zOüÓ*YˆÀÂ… S“Ô˜( ‰ì!+‰’h¶§$ÊÂIOö£b¢d7~$í±6+A=(^‘×3 ˆÈÚ®"à yÎråʹn‰”ãÞ•+WŠD襗^*’Ÿ(„î4ÎJ•*ETgQâÈ=‰ž¬[·Ž*V¬³_P†ê6kÛk×®M%K–ŒëQ‰ŠÞÄÕ¨¯RÚY¢éÓ§¸ùú÷%„J"”AÎ^½z )Â@ýaÆI1k“Q=DוõÎhÖ¬Yr?ÎAJåGH&š ‘¾iÓ&¹ ç±Ú‰¡ åÆ={öÐìÙ³E§réaÉ;Ž7 ùÂê&#?aKÅÃ%K–ˆ %V*D|04MY™™rssE ªƒÄߢ+?eÊQK„%@=Vz–‰€ÆGŒ!‚¸þ„Ø/ •jÈvâ9Õ«W·ó&ÇFɘm&K•‹k kcüä“OdÂî¼óNš6mšóAVÎëZƒÆ åkü™½ î,//`±PZµj% ‹™Õ(£Æ1Ãõ®ZµŠ6oÞLÏ=÷œèÏb!AD9r¤hÔZ<½Ïs'L"4 P£F ñÍ8Ús qÇŽ;\ Àà Žá`u@: “@®ºê*ñõþÎBõѳ«:¬Ðƒe(/”©meϱâàvÚ·o/–„e™N‰/@8Ö³'¸-´µaÃ!'ToÀbÜxâ• öp/¬'´_›5k&nRèéÃBðk¾†ß›@ô Ê“À¯R¥JT¯^=YxhÛŽÃÞœ ‹E ]ŒÄE@pÄZˆûw%šŽˆDV7@—-[6ê™ fxéÒ¥òÀäŽ5Jôé±`@*¯”%€õ'¯ 'Ì1,’ÍGÛ°4uêT±> Ô«!ŒÕ  2Ü$þ5mÚ44Û¶@|X1o‚kûõ§XíÙîš_óúoº¶ãB&Æ| ¬ˆ7}þù粸ç¿Çbä­sôÑkù`=m飿]\‰‚òæ8ˆ ÐŒÉ€–ü¼yó$æÁd թS‡°3Á``a õíO ŠÏŒ±Òá0¹¸« + mÁZyÏ1 p™°H òêÖ­+qÜ(¬úƒIC²ÇæÍ›‹+‚›CBàšïO±Úó×µ×ö9öGÿxaÁ¬û‡KBBh€ ñÒöíÛÅ…¡{$ûðXØÀ ã…•¶–[n8Š? Ö±žeÍ3 xL|:â™b¸)ÈeÂÕ@CÞ®Ô·íÀZÁô"ö@ †|¬ž1cÆaÊ”)CýúõÃ-r„_G›ÈÃ9&€AÞV„ìÓ§eBá*`"ŽÂ*†+†49\"ú‰Àu0IˆÍ°0lq޼ öWy“½‹aðàÁ4cDo /â4XP`‰IG»té". ¤¥B¿°€@ Ñ%J”ˆŒÃ¶ß°aCYØDÀöíÛ×EŽèŸíc$3Ž“¨Ÿ †•@”&!–@gLjUË—gag¢`2‘»`ò`)Pß’ ®ç½÷Þîu‡¶½ #·ç¯|X§ *Dnà F_mAZ ul©ì; jÏW%r‰º^W6^{ê#~C dÅ‹A"ìð ¤qX‚ãÿ8l;pkX|O›ï»;,L¼j°)©–bõa›ˆ Î;(¸‘ —r^?m;å=•cµø á½ÇŽÉòN˜-Ê÷ÏñãIAí…ÝÔÔ /òcµ Â[Ò£.’‡r)!Üì=®cÒ-\VÞ:'’°Ò°:ì*³Û}»m·mÁr…mëdâ1l¼±Æ‚Ðn,Œ±î=Ò²”X"øèD „ùð“ÇúX$Æ6^;î #œ· z…W(»³Âî´¶ŸfpàIë7õŒžo02Uñð³1*&J3~kw2ug2QéÜM%Q:ÏN†ôMI”!•ÎÝüEWºáOÁþIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1OptionalExceptions__inherit__graph.png000644 000765 000024 00000063215 14042362133 031453 0ustar00tangentstaff000000 000000 ‰PNG  IHDRæÃW…²þsRGB®Îé@IDATxí˜EÓÇ[²("*AAAI ˜³bBñ3çœsÄœ^sÎYyŠ€ ‚‰,Q‚ä$` ç8_ýêÞ>ç–Ù»½»½»ÝÛªçÙÙžžžîÿÌNu…®Ú*rF†€!`†€!”I‰^X' CÀ0 C@0Æl‚!`†€!BcN¡›a]1 CÀ0ʆ€!`ÉC`РAîÐCM^ƒÖRZ"°×^{¹qãÆ¨ï&16;É0 h`Ì÷ÜsïÖ>™‰Áœ9sÜ’%K¢J1'’U1 CÀ0Š cÌÅ…´]Ç0 CÀHcÌ €dU CÀ0 âBÀœ¿Š i»Ž!`Å„NG5kÖtµjÕ*ÔW¯^í~øá‡-ÚØn»íÜþûïïÖ­[ç¾ùæ7kÖ,uxÃá Z¾|¹ûå—_²ÏkРkÒ¤IöïxçeW(ælÂ+V¬pÍš5+æ+G_Î$æh\¬Ô0 ´EàñÇwßÿ}¡û¿fÍ÷ã?êçÊ+¯t/¼ð‚î3ÆÍŸ?ßí·ß~î7Þp+W®Ôc|°[µj•›2eŠ;ýôÓ•9ÿüóÏîæ›ov;vt›7oÎõ¼Bw8Ÿ ì»ï¾nÓ¦MnÆŒnÔ¨Qù<»«’ÓÈ0 C 9ˆGvÀ'7ú裂3Î8#ØgŸ}‘Ò‚çž{.hÚ´iаaÃ@Yp÷ÝwO<ñ„6!Rk°÷Þ{ÿüóOpà 7µk×ÖßÂHôøÓO?Ô­[78ì°Ã‚£>:i98û쳃÷ß?xýõ׃sÏ=Wëׯ_?øòË/õœ6mÚ—]vY°ãŽ;§œrJ ÌTË<òÈ`êÔ©[ìSpÄGo¿ý¶ãë¼óÎ ºuë–ý›O>ù$&rP©R¥`ôèѹž·~ýúàÒK/ ¶ß~û`Ï=÷ DZ×68à€ k×®ÁÎ;ïÈR´@<ž0¼ð ÆR§N@&Zw„ L§k®¹&ذaƒ–ƒ“h‚-Z(2Ñ µböñÇ<ð€Ö“ɇâ Î܈kÓ–HþHþÁ¯¿þªåñ¾D×6âÏ«Ü$æ"œôXÓ†€!`D!ÀRa’N˜…ª„o¼ñF÷Úk¯¹Î;»—_~Ù ³qÂXõÔ¸ *¸‰'º>}ú8aûì3'ÌÚ]uÕUõ·L0\nçõïßß Sw,9“‰‹»ãŽ;´}$pÚCz_´h‘ëÛ·¯Žý‹/¾p/½ô’»õÖ[Ý£>ªu‘Î=öXÇ1ê#Ñ£ZðÁÝ·ß~ëÀë¶Ûns<òˆ+S¦Œ{÷ÝwLzÜܹsµÇeB£ø>ôÐCª øã?ܰaÃýãÞ¼òÊ+z­¢ú2sQ!k톀! ¨}al³gÏv3gÎÔýeË–9‘”ÝQGåÎ9çCøê«¯ ¯Q£FnÞ¼ynr'Ÿ|² N™;mrÈ!z¥Ýwß}‹+R·qãÆúá\ì©Ðu×]çDu"u*cæ0%Oá}_Þ–-[Ö¡êŽG¨´aŠöe‘¤•ævúƒ­šÏóÏ?ïþüóO·ÕV[)ó©_Uâ0Ñ*Uª¸ã?Þ¡ŽÞc=T]óF…/Ú7|øp·Ûn»éu±·ƒQóæÍõƒí í2AñôÝwß¹ƒ:Hñ§¬G: `ÿŠ+®ÐöºtébŒ@Œ CÀ(mÀ4 ¤6QÝæ^ÅŠ]§N”)÷îÝ[%?˜ öÚ>ø@%P˜ŒFTÆÙçr^,U«V-»HTÅ*!SàË)C¢Ì/1Q€ žyæ™Ù§ÂTq ‚  ¿þúëìc~'·ó˜4„¥ð7ª]šs·Ýv[m¢\¹r¸%ª é_T×:a`Ò ¦'&øT­ZUÏçKTßÊ”³ þ·ÃõwØa‡ìblâôŠº~vÅ$ï˜*;É€Zs†€!`$$؇~Øí´ÓNNlϪ¯{ì±ÇT= S›²2k˜L•o,áU ƒ9r¤J‰­[·Ö*TÇ'˜§÷F†ñ#éBá}-ˆùB¢ïÕ«—›øà=$}aÝZ°*†À¿cþ Û3 C !–-[#Yˆ&K¤I²¤Z‡¾§ÚŠÛ·ßÍUª”xÌè„.h•2 cÌu»m°†€!PPðž†0QI,PµtÇŽM]ÇŽ{Š'õ¿9 Ú¾gxŒ1{$lk†@uë6гÖI³ø›ëߢĠ®¨Lø°Ãšêr¦òå-Öt.ÛM"Ƙ“¦5eéŽZß}7Q™1KšöÞ»®;ê¨æ’y/ÉÄ´}zÎzŸ6cN›[e5 ¢@`öìE®oßq®_¿ßÜäÉ \‡MÜ‘G6s‡¶§­). À­Í<0Æœ'DVÁ0J'Îw}úŒ†<ÞýóÏ •ˆ;®…®-.WÎrû”¶ûnã1ÆœnwÌúkB`äÈYʈ¿þz¬#9ıÇîíŽ9f/·Ï>õ ÔždƘ‹ Yk×0J Üðá3]ïÞcõS½zew -Åf¼—kÚ´V‰öÍ.n䆀1æÜбc†€!VÀŒ‰A 3FU½ÓNU]§N-åÓÂí¶[Í´‹u6s0Æœ¹÷ÞFn” `ÆC‡Îp_~9Z™qíÚÕ•ÃŒëÕ«Q*ÆhƒÈ,Œ1gÖý¶Ñ¥ÔÔ_}5FòÎ;oçŽ?¾¥;é¤Ö®n]‹E]jnr†Äs†Þx¶!Ž“ú‹/F¹^½F»êÕ·Q›ñ‰'¶rõëïŽÃ±>‘cބŠC U ñçŸÒK™:wn# ¹•kÔhÇëâÕW_í^xá…»¾]8ýX¾|¹«R%:åg¹ôžÀ0Jóæ-qŸ}ö«JÇË—¯Qõë¯_àš7¯“C6mš,½ê+ëŸN‰þX'Ò :uê8cÌéuϬ·†@F"°xñ*UQÉƅóÖ#tqmÛ6ÈHºtÙ×Ýgñ®®\”—-µm8Pb{ïï*V¬Xè1Ž1ÂÕ®][òJgÙð7nÜ(Y¶¾“(iG¹2e¶Œ¾jÕ*÷믿ºƒ>8òÚÆ s‹/ÖcÛn»­déÚ[‚lY·0…yõƒ¶³‚Î v&L´Åi°Q¾.¹bÅ ÷Ûo¿¹ýöÛ/_ç¦ò–ˆ¦5;×02!C¦»ƒzØmܸ9î˜qâzúéoÝ>䮼ò=·ýöÛH®bK¾Ö}ö~Æ”ã"—÷sÏ=Wpü“wÅjÜqÇ’sºvÍ•+WJ,ñcݺuë²ËÂ;8.}ûí·á¢û·Ür‹{íµ×Ü/¿üâžþyeÌüN6åÕÆÑªU+™öt .t_|±»óÎ;óÕ™3gºn¸!¡s^ýu÷â‹/&T7·JƘsCÇŽ†@$={ŽpgõŠ[°`©JÁáJ+V¬u|0Ô|òs’$âIa+åå|¶¼¤ow]»™1yy™ÃÐÔüqû.*åþý÷ßÊø~þùg…nðàÁ åx·hÑ"Ñ$tq5kÖìŽQ©sÆ î /T‰ö’K.QFÆûŠ+®p—^z©D9«'ŽrmÝÔ©SÝØ±cÅ“ý$±ÙévÞyg×½{÷ìS‚ñ*Ÿ2eŠö!û@œÆqíµ×JHÓÝ$ÆxS7jÔ(·víZ•@¹N‹-”éýñÇ®uëÖnÖ¬YÚÒÿýßÿ¹xÀý÷¿ÿu?þø£¶ñ矺ùóç»#Ž8ÂU«VMRkæ8oÆŒºòÉ'ë8yäwøá‡ë˜Ÿ{î9mïûï¿W©µnݺîòË/×2ßÎ/Îßi§dx¥§¯0ä|ÐÝ}÷ÝêI_£F •¢Á¾yóæ2YÜ^ïZè™gžÑë¶lÙRØ|¥eþ ÆË}bÂòé§ŸºÆ»Ýwß]'!“&Mr·Ýv›^ç믿ö§hkŒ¹@°ÙI†@æ"нûî–[zÊËyƒÃyëÍ7tØ ˜(/Ìw%[Ó½î‡~——cGa÷É˹³kÙr׌ †c@ZC²{ÿý÷•1”/_^¢•}éš4i"KÂ>S\ØòûwÞq¨~'OžìvØa±Ã®çŒ3F%ZÊ8&˜,ŒiÈ!¢Á8H ’"׸ꪫ )þÒÓÚ·oï¶ÙfýÀÈó"Æj‰ºM›6î•W^QÆ #‚)ìo¾ùf•*8à öR‹&™40Ùøý÷ßµ0ÏáNjƤº{ùå—•ÑÑO&L"`p'œp‚öû±ÇÓö˜ 0žqãÆ¹Ÿ~úÉÁXaÌôFÙ¯_?eÌ`ùî»ïʤqªÚ™ ¡¦?묳Ü'Ÿ|â˜È]¬[·n.R•=ãûá‡ô>ÁÄÑÜ{ï½Ú?î#eÏ>û¬+[¶¬¶§h6oÞ¬ MÂP¹Âœlç†@æ ¾ðÂ7Ä{z–[³f}öÀ§LùS^Ðw»† wT»ñcæªV­”}<“wN?ýt™”´TIæ„„Ö®];•‘Œy‰?ùä“*™ÁL¼t#¹îºëd’³»æšk”©ì¹çž*u>ýôÓ[@ŠdÎ9H¶‡z¨;ãŒ3Ü{ìáN<ñD­{ÜqÇ)ãâz0O^’.W®œJ‘¾Üoa@Ì ‰™>ØÃD˜T0¡€IÆ£ *h@>}ú¸>úHûG_N;í4wæ™gê14L *W®¬×D[€„ }óÍ7úyâ‰'’7õ~=/ãƒbçÎëjÕª¥˜6×íÚµ«2m®dÏo †¾lÙ2YpˆÞ'îçÃp™PÀØ_zé%× AìÐÇéÓ§ëùØæ™h0á3ÆZ2‰¹0èÙ¹†@† ðÇKDÕø¸¦Q„AÇqª½Ýؘò¿èÀÌ ¨P™† ÉuÍš5*Ù²Ez…‘¾÷Þ{Ê Qå"eÃ`PßB•*EOxP Cëׯw¨É!_Æ~¸œß±³™={vv1R2ÌÆ3˜.ÅÀ)c|Ôe?ŠæÍ›çø0¹`õÔSU½zÓM79ÔÐo¼ñ†:)¡Þ%ºjVOé(ÂC‚aÛ…&Nœ¨R%Œµ/×€ØÇ›™ë°!ÂôV¯^­¿ßzë--Óy|¡fBc Kãþ4$[lä;wVrÔÕôBµœˆÚµ4ãùðÃÕ–Œjf¡Eè.ªqêC˜ fÍš)CÅ,À¤¨wïÞÚú†šœz¨Ì±Càƒ­fŒ*{6šõúë¯3ÎüP&^XŠžÞ¶U;ß0Jß}7A$…7åeßóš®ZµVT†ÓÅ9§a©wQ†ÌB5Ì‹‰ ‚ÁñA]»téRµ9ׯ__¥h˜Ã¦M›r0$ßVØ£a(0o¶0¤pT½ÞÖ0Ú‘iÉ’%jkEÕ #ã<Ô´ñ¼®ý5i‹ ¶lT½8®¡z?ûì³9äPã3.$SÎ^}õU-GÝŽê[.6âx×ÑÊòÅõèœË`È:tPg:&ñˆóöÝw_µ»£ÞÇ Ž‰Ç­·Þªjt6Z p@;SFZ†é¸!öh‡’üSO=¥NuŒµ9Æ€ú KÄÎ9çý Î%KbQPäì¼´@ÕUÆÆ, z³jÕº^Ô,™Ùð?†°Y¶›ä7Û¬s›ôŵdIyÉ­,襶8I/¬VÜ¢B À$” +µ*öÛÑ£GgF:gεÛ‹”VYçuÔá~ŒLÂ6æÜÎE•šxSœÆÀµ¾L~Âå`€½8žjÞ_ ¼˜1O0Ö–{û¼/o½Mšm™Ä…Š••øó3+ާ,5-eÁŽ˜ÊŒ9p£®fYÒq˜`x:ÇR#ÒY<òvèðqlÒñìÒáz~»tØ6íË‹b[ sxŒ‰2eúŽg¸X‚b_¥Dƒ¡Dá…¶¡°d6æÂ"hç†@‰ 0mÚ_b÷ Rzîjöé\E¤Ì² D &‹ãQ˜XÆ ÏïØ5¸ásØÇ¾JÐÔàHé%Ma;mI÷¥¤¯oŒ¹¤ï€]ß0F`ÆMÒs´Øÿ£¢Š““Q%ÜX WDMö$N´;Þ£Ù×Gº‹U£‚ÍMòEJ'a*Yâ„=ôí·ßöMÛ6) ¬Ü4ÅÖ©¸©²Sà&X C wæÌY$L~–ˆbCÔ¸re–J·jÕ­EÚ‹™{‹[Å©håÊuú¡ÍÕ«ÿݧœ2ÿY±"kùЖ­¤~ æŸØzÛ3k¦Y£ á©s¶W<© ‚TŽ9ˆH_¬µ¾ï¾ûÔÓúÀT3Ö£~dz› Q±n¿ýv]EðÖ'cÆ1ЏӨŠ"Âܱiãí×-ŸwÞyŽøÝ4a}7¶`‚‹ 1 JÎlÉ}™ªwËsªÞëW©A€N"xÕ&‹ðªe Þ£x„ææh’¬kÆk5hn â—W9*ê¾}ÇË x€¼Ìÿ—Ÿ2eÒS}nãÇ×`!ž)S†ç4Œò±PŸþùºT Ïí/¾øBƒ”%ëÑGUÆLXOžkBn²«oß¾êiŽC '5¢k‘Ì/ÁúàƒÔ£™åO¬ †é¨YRc&š– FŸ˜€„ !DF»ñÆÕËû®»îRG0ít)û2Æ\Ên¨ 'õ bÞ·ÉâÏÒÖ©²®§6^„H$¼ôöÚk¯bñêkú&˜7“’ À° ¤/CRùAQIâýgܨ‰8ŲlHıý‘e>\@]‰ÃDÔ#ò=Íx衇DM¼23& L6`ðyÓ¹æq¢¢~P0¾NÖ )ZâäTN%\þÆ›UMíÛ6oXïŒäˤFÈä†Tˆ0PÊ™œÅFÄÊ»ÕkDEÅâ™b’Êä†ì30qÌxA"ƒùóKËÖ$æÒr'm…BÉ’Ì8ÌêÉ¿Ê>/(¼WY/ÉqTq0#lº9@ª%½Áí `ïÕ€0fêE-ƒ‰J,@Çc“PÆËË“uˆÚÄíQ„ ;Ò òàìŠJB¥d‚‚Ú’ˆN¬ïDõà ìÓæ%Štå'HÅØ‘î!$e0ƒ¢Ô z ¯¦MkÉ$¥–LŽ&¿Z& Õ3û—_¦ª]æb”8<›˜>°ß¢¡A3Ä=÷Q®ÐâÄFÄb¢&î},QÆ­JTT,&¼<‡L؈!Nò L >R–o/ÑÈ`Q}ðm¤ûÖsºßAëRÈ-ÙÀ±…Ù>/ט?#ê[òΈxÑñâƒPÇRx /ÄØ„á²Øsù26 êv¼a!&žP_£ „¼0¬ôe÷å¨}aÔŽhPsz$u‰VõR$Z•WAR/J é¯Ãñ‚Põê•Å#wýà6|øLQÁîV¦2úî1Z ¢g!1‡Á0Åœ/N_áˆX0TOLÊ|Lm?ñã˜OÏÈ>æ R!†£b¡õaÝ6š'ŸÐƒ¬W¨Ôù¯ø¶0Ã์2OaSŽ/+M[Se—¦»ic)2H:Ïìžû¼´pƒ•ð‡>6j˜LÑ'w*^b¨$¼ˆPCC>ñq”¹ËQ ^¬H:\pJªLxÑ¢Šæ‡dŸâE‰¤Œ4Å$€¥)ñûÓnX ‰¤Ì8xó²Å1Ì'ÈO­[¶lÍ]¦Ì–Ò[¢mdz=´Aa¦ìñð±¢&`¾N^[&¡áP•¾¾gÊþ7ŽbQ« ˆ »>ÛŸSÚ·&1—ö;lã+þÅD’÷V­ZéÌÞ‡ä…Æ‹‡-jkTÃ0jÔ¾—VÙ÷íÄK,›„€s`Ž06ì¼>ñ‰éIˆ:76oêã„…J™%-0V¤Ÿ4€¶Âäû.cŸr¿–8¦O{¨9£ûcÛ¦_~=)ý;tè Nh¨ÛIbõÒwýØþØoC cûŒ‘!Pj 7{YRÆ'a Œ*G[â¸ËQ&L)†ˆ*/'©ìc"õ!©:Æ™]NÿÄŽˆ¤ˆ¤]ž×ލŽ®KñÊcëåö[¼vQWæ¨"ÞéHÈÙeìG]_&9Æ—}B>vÄ[8`©J< b?OÕîY¿Rqê D«·—&1gì”ÌžHŸ‡m '¦0EâÛnÃuý~¼Ä~銯—×–DQ¯<ªn¼2ÔØ±Ø{qÔX½F!ö|ûm‰!`Œ91œ¬V†#@®Ûx)ÚâACd"ïF¿N4¶>뎓‘‘&¶]û]t0qA½od°CelƘc±ß†@ùeÊ4„&$̰W¶?+‰úòLÙ’˜¢|ù²i5\–¢ñ12ŠcÌEªµiâüˆCÚ ‰¶LBˆ.ÓíüùKÝŒÿˆWûbù½\œ×VéZä±cïs5kV1Ô C@0ÆlA©F02ŠÓ¸lÙª¢šn.ñk‹gsÏRonƒ«Uëz‰,Å:jJ³¬Ü‡-%ã Ø(ë¿·Ó(Táö2]“ÆÂö3 ­p ˬ!Ûh ä#@hȾ}ǹ?ª™:wn#k‹tõëïü‹¥I‹½{•%ÉZçM]Ê3ç-;ß®]C÷ùçWoyÀJ EÀs†Þxvr˜:õO‰‹=T"oýªa#Ï<³½¬íÝ;íl¦ÉAcËV/^%±Ç{H°•)’ dý*T('±¿ÉúéC$Ns͵E%+02 cÌvÃm¸…GӫבއH„«%¬­ÄËÞO2õT/|㥴…'K@”÷³óûaV©²µ;ùäÖnÚ´?%¿ô‰¡\S¼×º¶m(îQc[_Õ¶†@Æ `Œ9cnµ ´°À8>üp˜d¢­Lé¸cǦ²$ÊBB&‚íêÕë%ûT/÷É'#Ôá‹sðÆž6íQÝb7n®6l†ÄÀž!™²fJŒî­…Iï¦ñ°Ù6lX3‘KYC ­0ƜַÏ:_Ô,]ºZòTÛñÚµ$üå~’§­$k0I® Ø=Gr^¿#1¿W(£íßÿ¦¸MM™²PUÀ¬ù ­ iEûöYRuóæumb=;®cN×;gý.RH)ˆíøûï'IÙf¢ªn¯Ì H/šA#wëÖCÒ]")*ë$õÔ}m™LžÈY…‚"0mÚ_b§žþ?©zºCCƒ4چݼy} Ú¾—ÙcÎìûŸ¶£ÇÛvРßÅ‘kˆ#H§N-UUݦM½´“u<}` <ŒÚÛªgÏ^$OêeKÔûí×ÐuúÞÞbï¹1æb‡Ü.XHñÑGÃ\ÃÜÎ;o§ËœN:©•e%* ¨vnž¼øâ‹îª«®Ê³ž¯P¦LEÍÇ]¡BÙÖ‘äãä3ɶ­!òÅoÞLîò,2Æì‘°mÊ"@>_lÆ0ãqãæI4®6Ê7Þ9eûl+]\tÑE¢ªÞß±52’Œ- §r~Ƕ†@ª!àsúéH·çžµu™Ó[o],HÙTëªõÇ0 ¤!`Œ9iPZCÉ@`Íš ’ëx´xVÿ›ë¸OŸ®n—]¶OFóÖ†!`)€1政E™ÑÁ¬\ÇC%2×8õj½öÚ#,×qfÜz¥!`Ä `Œ9ûY|Äæ:&yÄ?ÞêjÔ°\ÇÅwìJé‚À¸qã\Íš5%)Gáb{ÏŸ?ßMŸ>ÝtÐA:ôyóæéïC9DûãõêÕs+V¬pÍš5Ë¢E‹IÄ´)’Õk¿<ë&Ráï¿ÿ– /#%åê¡/‹MÑ>¶ØÝwß=‘& T'<Žo¿ýÖmÚ´IÛ©V­š í$÷w7gΜ„q)P'ä$‹IXPäì¼#ðóÏSÝ•W¾'ùpcÇÎu=tŠm¸Ã]}õaÆ” ŒªXÚxüñÇ%?ø÷…æ‚ ÜÑGí6lØ m=öØc®C‡nÙ²eúû•W^qO=õ”›1c†5jTB×›0a‚»ï¾ûª›H¥áÇ»c=Ö=ñÄÙÕß~ûm÷î»ïfÿ.Šð8:wîìz÷î-Ë1Ñë6hÐÀ1‰É.í£1æ‚"gçå Öy>ûleÆ÷Ý×KÃ~·{î¹³¤¬a¾Ú²Ê†@*"pà 7¸‹/¾Ø5jÔHÌ0Œt—]vQon$@ÍÏ?ÿ¬]æ˜cÜâÅ‹•a^xá…®víÚî’K.q­ZµÊ1Ü7ÞxÃwÞy®E‹’­ûꫯôø>ûìã.¿ür·ÓN;¹SO=U–g­Öò£Ž:ÊM›6M%Zú@{+VÌfºýúõsÔéß¿¿Öÿé§ŸÜa‡æè3Ò!Œˆ¾|òÉÚö•W^©õþøãçn»íæž~úi-ã‹¥eŒ»N:îùçŸ×rð€é-]ºT9÷”ÕãtœmÚ´qLb1ख-[º—_~Y¥ym$ôõÜsÏIÞíÆÚÖK/½¤Gzôè!«5Δ /ûJ€—æzm®Åý€¹BŸ~ú©ž‡ÔýÚk¯iY¼qp°[·nîp\ƒvzöì™ËرcÝI'äŽ<òHYº¹³ëÞ½»¶Ççÿþïÿ´¬S§N’$å/-ÏÏ—1æü euó…¡ ûõûÍ{îë2#ÄÍŸ¿Ô½úêù’ÿøFwþùJXCK /@­rJ#À  “—÷òåË%qÊû®oß¾’©ª¼ûòË/]“&M$~ûg:¶ü~çwܶÛnë&OžìvØaI´ò¹ž3fÌe””q,L .”ÿU?÷ñÇ+ó¿ýöÛõ0Œ¢zõênôèÑÊ<úôé£åíÛ·—uþÛè§mÛ¶ªŽ=ôÐCu’€J›þ{î¹z]¤èaÆ)cþçŸÜܹsݺuëôz0fúÔ 3…a1 `¼žù0î{ï½×½þúë2V´aIT´•ʤ˜” :ÔMš4ILV?*V•*U’¸mG}|Ï=÷¸Ë.»LÇῘÌPN_¸öwÜáÖ®]+1ñ—(ÎLXÚvã7*óEò…ÁoܸÑ]qÅî™gžqh n¹åÅ6jþZàÌu|ðAeî0a ãâ¾²¾Mp€áƒ#eà~Ýu×ùæÞš9a¨¬b¢ë˜5Ç|6ÜQ׿úêy–ë8Q­^Ú"púé§«¤×ºuk‡É Û$v[¤Bà“O>©R. &ËKé˜8Rï5×\#KÏRiðÚk¯Í!z``’HŒ|nºé&•l9FHoHÜ0f$g¥'/Õ!÷ÝwòŸ¬ä?üpeÄ·Þz«2K˜;“†úÓt,ôBÚ„a#a39@g}7û´‰í BŠerÂ5`ÆL^2ÑÀL)oذá|ýõ×z>šW_}U'0Z _Ûo¿½N*hÉ Õk>ø`wÀ¸Ù³g»™3gê>ÇQ‰S¿råÊÙ8ý!C"Çá¯õÉ'Ÿè9L/ø?üà»=öØÃxâ‰úû¸ãŽÓ Ìšû~h4˜xä—LbÎ/bV?röÙ¯î”S^?Þ³Å&Ùÿ5Rvµ¼öI¦üÖ[o©ƒ N&öI.Hb¥PëB8 Á@„äºfÍ•²Ø"½òRï½÷”Aä²azuëÖÕSaœQ„4éiýúõ*!óÛ—S†ôP-#ÁÂ4q°BòÝn»íT²„iÇR½'œ±pŠbR±ãŽYÉ;ªVÍʶ…ê&æ‰hVHª´‰´ #dÀ>*sÆ…?Ÿÿ êð›o¾9{ŒH¥`7qâD•ŒÃå†?¸V¨PA9ÌúŒ3ÎP5}ÌLÐlxà¾8{ëñ¦Àß®C°®.]»vÍ®ŸèŽ1æD‘²z‘L˜0_TIŸÉ¬ÕÒ¯bc;Øýúkw)ëävÛ­fä9©\ˆÓ *)þXöIH~¼Œ3™`2§œrŠJÄH²üFÚE% ¸óÎ;Uý‰c–—Ê@£ˆã0=<—Q—"¡CHi0M˜‰÷¦†¯ZµJ¯ãmÜHÄØ™¿ùæɾ–å “ÄÁ*Š1Çö‰R1ªwþ'^Â¥Œ>0)ÀQŠ{N{hè/jl40,ì¾LV¢0_±êqˆ±ï½÷Þª*‡Ñ"-Ó‡¼;98\}õÕîúë¯w ÐICÔ8òjËgrÀD& ¶ÜW$g$eL Ø¥Ñä—L•_Ĭ¾,X+ÈQ³zÑ¢2ól/ùͲŒÃrÛãaÄ"à5/”£ÎÆöŠ´!-òAÕŠc’YýúõUŠF “ 3Ú‚`z¨Q±wb3¥Ƈ³Œu4Ú‡/¤SÚÂá [,„ÔŒcW•*Uô7Œûl"Œ™ë1Ùºà‚ ÜÃ?¬ês¤nT½:tPU8K­Pí{©šëýùçŸz-ÔÝ\ûvؑĵ2„„3‡a#½ïµ×^jk‡ùÇ#úK?PÇÓGÔèLH˜Dƒv<ÖñÚ¤œ‰Ò; ŸÉ}¸ôÒKŇæ|UÁ3Ž/¾ø"·&"Y¬ìHX¬0 Ÿëø›o~“?_wöÙû‰z§èÖFõ¡¨Ëpa6ÎÖ(y`ûDÍXG˜äõ¢à-%+V6$ÏZžx©£FŠ 3ìÒ¨—Q £úö„MƂԇÔëÕÌ09¤GT³xE¡¦Æ,öz0$&ž)çÕ—xÄ;Iöj®‹£øxuz¼s|9 $ú]wÝÕ©ä5Žì ;Hü¨åÑjÐ^ìXñ„ÇŽ½õÖ[Gœ³ˆûž€™ÄœûƒÀâÅ«Üÿ;\BdÍÎuܽûI–ë8'ûiä…êêGy$ÇÚ\ÎAÝ´iÓ-NÇ! jÔ¨±Å!ṮLr‹JI,@bº^Tßr»l< â'>‰vá°m˜óâ#‘6±q‡íÜþÔØ%cÌE®ŸÇÌmàÀÉÊŒž&k÷×™š_¶;e†–¬O~@¬GÅ.‡T†ú“¥2¼ŠÔجoõn"Wç…3Q˜â9!ñ•-[6\5×}–a¡âFÒd½mI?Ø|Qq£NÂVî×'»¿æü•lDÓ¸=r?þx?Y²qŸ,éøF^àMÅ‘ë™áŸnL¹ïk²"<Ñe ²¦“À Øü”À’œñãÇãˆìR ÌSö¨…½œ)cÉŸXŠ­{<ü›6K®úCvè·Åñ«¸ ‡.œ-!¢lå¦!(î¾åu=¤ìXÉ;¯s=nŒ9Q¤Ji½ 6Éb¬8£¼,’ñ“â8²V$åˤìzYKÙ^ì#é1{-ÎÛ“.žÐ|àœC”$ÖR”ïY¢#|ØÃ'œpB6t¼œ‘ª9ï®»îR%LÜ{Sã¼sÛm·©ó vx¿v‡¡d†cÌîí éÞ½»jQ¸wìã „M»Ç3–{É ;2둱³ó<°”ëÍ7ßÔº,!âÿ@ünžì·PT„-ÖÐÖï›gÉ!ÏÓÝwß­Ï¥F?pð‚éሆ-9^ô1½X)ü2Æ\ oj"C"×q÷î½Ä³±»¬"Þ“ít™Ó½÷ž$A vN¤‰Œ­“.žPmò’óËaü ãåøÛo¿©t ÏÎ*¬Åüõ×_Õ5ž¦|p¶‘1Â=úè£j“ó!Y{KhE£ô@†ˆ#^ØY /nA Ïn˜0NM¬=Ç ‚'7Ì O<Ï4‚wàðźèx¶˜ Âð‰PÆ#–Áøñ”†óLâÈ…—9Þ,]¤_DíŠ},=Ï/1ç³´=cõêõºÄéøãŸ[×K" ——è@]e6|¹,Yh%¶ÄíSi B’:ŽðtÚi§é 'áÉ۞ز¶‘èFD"êžÉþÅŽðÕ5á‰6XƒD ÑÎA>ÂeDxBrÁ)ˆ$Þžœ&¼ess–¡Ÿ8ôàuŠú•.‘”h 5;ËT°—26&)0t^¬Févè°—w¸×ø#Ìš5Kƒb0Ù"ö6!)!–Z‡úœsÎɶ{óLÀ¨‰†ÄŒ=<a‹‰¡°Ó¦=ž[‚ªøP¡¨åÃve"–Ñ&þ<Óþú,E‚‰ÙËG ÷½4í›óWiº›qÆ2zôeÈ_}5Zìd™Åj?.S&kMdœÓ¬8r‹0á‰/#T|¬%š/1M(Ê«“ˇmX>²P¸<·O¼yáDâì³ÏÖå+S§NÕ'k?c‰ ýâåMÐU£_ëê¥,& Hâ¼¼ya‡_¬z’}¥,x ó ZöÆ`ÆÞ™ )Õš&x·c[ /í‰-çùáyðÏk¶yÞ˜Üù%M¬&*,÷œ5ÇHÌLĸ¿˜AxÞÐ 1YƒQÆRø9ðÇ(ãÃóæ#lÄ­Z$IH™„ˆe˜€H€ÁÿÁg¢-"qaæ\ìËØ¡£(ªQõÒ±Ì"¥É]c=ñyç½.Î9›D-Ù^²±œ’Ýsr“É飆ɟ ²H9må…»¨¢àgŸh;[ ¬È_©á oYT„õë×W§/zæ!Ž…UæìǨØã‹ X!Ÿzê)JÜ­EþŠ M‰€ñFEèÂÙ û0ÏKA`T„-‹ö&œàç1&~±k°ñ‡9çæQ¢à%ñâ`ž˜›9‰àUS=z ÉžòBÍRù|üñ‘°N’€÷“4Ȉ3Dúj­¹Ž÷Þ;++MQõ%Yí®ZµNdIaÉj3‘vPñÿñÇRù,Ñ9¢çÍ[ü¿ßK¥OåEJL¤¥øuR1ÂŒ×3_ÔÒž)3 _;"lÔñˆDxíÆK²ï<+O-âMº`”hd Cág.ÜN˜)Sµ&›r46™JƘSüÎ?ðÀW²fð§l¦Lw™]pÂÓò@WL»\Ç„ø|öÙïdñƒÚ¼6L^ªM›6Ë,ÿ_¦ &hŠgÂlË•+#^¢Õ³?uëV—,‘Ù…t}¿ÿþ»&#CR¯=ýôÓšGu„ Ú.ã$ýÛK/½¤¡“ùÅÈ0 C èȷļbÅ ç%ÏfÍšéK›t^tûòË/õEïÛ# ’Кôb€q"Ždñ´óÎ;ïh*»“O>Ù1B™Š*H†®éð`b¤ƒ``0?~“½dذaZ¾çž{f«‚ýþ”)S4‘»Vøß)ö˜P Gµã'ݱŽaФµC ƒ‚qvØa’çøuml=0ÌgŸ}Ö-_¾\ûB.S‚TÜwß}îÞ{ïÕº±Rê’%K”Ã\ù€ ÉËIÃGš3‚ÐO&,?"w)õ`ödƒ¡Œ4jL"˜h0‰!&R ÂÈ‘’™ ‘[—´mûì³2o˜>ø3Á€á’Ѐûcæpéû·ß~«×z÷ÝwõžQ—k1f#CÀ0 ¢C ߌ™®`§Ük¯½\Ë–-uë÷a$Ú&]Øßÿ­ üCQ)–ß¼ÜIã#‡iÃ|héµnÝ-³"Á$¨O0$DˆÌ8؉IÈ Ã‡X{ímÁ~&Ëa ”3a€bÛ‚éslë­·Öã|q rݰI@áñÀøQk#CD{ãw<êÖ­›ðÁõšŒÏÈ0 C èÈ·óWn]á¥ÁtaØŽ¡Ö­[«]鿆ýæãÁ~Š}3,­ùvìPc·EÍK9L ÃB¿å–[ôl±õÒ¦ßÇù û6ja)7Ì EµCØV0²3Î8CÌ*–è˜vb® ó'Ù8nŒôˆ#ŽÈÑÄu×]§6â÷Þ{O±ÃÖMúгâ˜cw&89ŽiLl`ÚHë`Ã8© =ô:«ù žrÊ)ªÿý÷•áÿç?ÿñ‡rlé/í\tÑEz¿¸O˜Œ CÀ0ŠI,xÙã¹[ØXÙH‰01¼¢‘š! L :¬Þ…é”ñ¨†ùâ¸Á ±Sß3nÔ¾ß|óÚxêp=)Îí`†Qùv¨¯-˜3ý ÷“ú¨´™ „Û <–8ÏgúG[à#VA‰þ3¡ _—vaðà‰I ùÕW_•‹O¨ŠÛãÎ5±qô½–À÷L°+#ÙçFHáô!‘¼8¦1Ã3ÞÈ0 C ÿäþFÎ{êé̲!ÔÈaæó@zŒ%oëŒ-÷¿£Ž#É%Ê”iumŽEµQ%zMÆêëÒV¼ö¸~";AàÚŒrÄ¢nl}ÌQSO„Â÷1‘ú‰Ô™5ëÑ ¬GÂ,Ç·Dα:†€!`dI—˜Qwâ”Dô®üvQ$B/ÕyOæX¦‚„Ŭós-_7™mù6Kj‹D ;ìV}‰’˜7lØ$K­æ‰#ÞLYË>Iìô³ÕŒ°zõzY~õ„Üó"qu(‰áÛ5 CÀ(4I—˜Q™æ—)3ŠX†ËýH“Å”i/™mùþ•Ô– M,†%Õ—5k6Ë:è â07M³JM›ö—Lº*ˆJƒ|þu¬ÛvÛŠÆ”Kê&Ùu C eH:cNÙ‘¦iÇÈÈDò‡t¢—_^èÞ~û±Kc«ÏÊüaC–Ç|x5kV ÿ´}CÀ0 A ‡*›“Äó×(u¨UëzQûn–ñÉòüÎêgÖ[ œ'v庲>ù-q6[VâïÙó‰<6[¼Ì§J6ɇ¾oIuêT“hg;H“êòÙN·µjý»Ý~û‚;Ìù«õêÕK£¡ùß¶MXšHàžT'œJ}ð£Tï«õ¯d ”wpέ'9$f–ÆÄ®¹Ííd;Vô<úh‰˜6P¥ÏxWƒ)o»m%ñ<_’½$+^Ýâ*—Ynúô¿%!HQkÿ¦’3¶æ0í·_#Y:×V–§-óeÁì׿ÿDù½D¯Y³^"›U†]M·0ò:uª‹w=Ì;«ŒœÏ¹ËÜHJb^⹡”zÇX¢—.Œß–b–&ÓXê=éß#V‘)ߌ9ý‡^úFpË-ÇJ˜Ó’¼ãqîڠ˸bG‰óÔ‰'¶J¦ìû×°aMY¿~žNžx¢Ÿ„(Íʆ¹\¹²®iÓÚPew_}‹-ã]°`éÿwÖö·ßþår¿e—­]»A™tݺÛËr®ªºÓöŒ[| CÀH+rHÌiÕó êlÇŽM%ƒÕM"]¾,*³e².9'·©X±¼HÌ%éÄJ ¤òoÓT)÷É'Ïp·ÝÖI‚Àô—¨pCd]u•‚sëãÖ[——(j5õ¯Ì‰{áÂ¥2€y/‘5ÝYÌ)üï¿7J@–xg[¹!`©‡€1æÔ»'‘=Úu×nàÀ›%Õä²$áEÿÍ« “û矕"}ákIùØJÂŽî-Þñ¹«y#/T„…5kV‘T–'»nÝŽr}4ÔuêÔ¢ÐWƒy#™ó‰"SaG¡be†€!ÊcNå»Ó·J•ÊKºËó%•äfók‘œ×ër£ÎÛ¸',§8ûV\×ÂÆMÊVB'‹H™ûý÷ßk? 'ãù ÷öISKÌ ²ÙÑw²8\¯°ûýû÷×Ï´CûM›6Õôº…m—ó“ù¿ŽíOáÿͱ-Úï"Gàâ‹–dWˆ³ÉÖ¢.ëºtÙW¯Y±b9aÂ{I¬îsݘ1÷J8Ó}$yÈxñl½G¬¾!žÒ£sHÚEÞQ»€"@.m^rÉ rpž—ÚO?ý¤ÉRˆ Ÿ §MBÝw"q Ak¸ñ×É{Ž#ñï [’4aÂ|ÉÓþ…8ÑÜ!ÚžsGýDIv§Ä¯Mlœå’Ed‘»óÎ;5/ÙýóER¡d\ç‘Gáx7|øp1=Í×\;vÔä;Ƀo‡¼ ¬Ìà98p ;üðÃÝ]wÝåjëÿ×ÉÂ%Ggäm”¦ˆm5xþùþyö~åʵAÏž#‚³Ï~5Øc[ƒK/};èÝ{L ^Ïyž›î$÷w ^Ù¹£k×®¼pÉÈKHëK~ð@Ò—=¸ûA®mH†²@ò‘ =¸á†I-ª¿EªÔãò" 8Wâ°G}t ³jÁýì@†¯¿þz /=­_¿~ýàË/¿Ôs$SX IK ãH‚‘@¤-?òÈ#ƒ©S§’]-ÜãZ&©BÉk®û|MŸ>…âHºú9í´Ó‰iHµ@¤]­' Y‘IHÖ2-k×®] 9ÅuŸñõìÙSûwñÅW^y¥¶Iÿ?ýôÓ@–Pj=¾$;[°ûî»ëï¹sçzWûM]°‚¢p¡}ÉHR•@bºk½Ü¾.¼ðBí¯#!\ƒÇï´nÝ]îÓÍ2–n,%Ôe%I’úV±Ï­’5. N ùÿ]\~ù力$ñ DˆÔ˜}ß%-n y a\H’h[‚k®¹F›­F «gžŸóÏ?_Ûš6mšâJ…¨g)Þs~®zôèÜ~ûíÏwåÊ•Éåž=Έ7q у{î¹'8û0¹@<Ñaªýš3gŽ>w]ºtÑþËÒ ýñ¡ÿ2¯ä¼$AQvûìІ$Û $GB !õÏ“ö¢Úâ™ây•Id ‰}"ÿ£’ 0¼õÙ×b,²OGµÉØçœd"‘ÝÿEÉûý¿ã’])b‡ÿö'Ÿ|qdË"“˜sLSÒëk~¯º*+—sn=GÕwÊ)ûHbKd–z·Ì€›º÷ßâZ¶¼G¤Ÿ÷5J×úõ9—2åÖ^i;F2ÔµòG×Ì^dÝêÛ·¯&þæ©é.)ƒ  ±ÈYöЧOYâ5A3¤!Å’ìƒD0ÔEªD ç GMúSR2Û–¡¶I*Mâ‘£¦&£íBíÛ·×ä'$@A…ì é•k$檫®‰ñh]ªóÚk¯©ÚéœsÈXÆõå¥è¾úê+MÅJúNU"1D2úî ‰Õå»ï¾«EŒ•Œf,÷¦¬d $þ=iYQÓŽ)>® u#³tìo“'Oö—‹»]µj£$f$Í–göQ÷ ÔKÿŠØ¥wqI‘2ÁÒ¹Ÿþ¹&è!1¿Ù'ö=jWˆ{KZWr}û ®Ü3’Ô™{,#'Ì0Ç£ž¥xÏ]ø¹"w}“&M4,²LôÙã¹zòÉ'Ť“Þ_îjgü6¸—$µAêåÙ%£‰n¾þúkYQÛÉÄÊÝ|óÍš3á‹/¾Ðô»<¯<ã\g‡vÈÑo¤òß~ûM“yS áÁ Šj ³ éq‘âÉÍûõ&þÃã?Êx¢ãµõüšäNžd"¤cõ¿Ã¸ø²ÂnÍÆ\XÓì|Ôß§ŸÞV?‹¯r½{•ê y‰ ¶èNh)/Â=2.Tæé§Ÿ.•–jS«W¯žÚYEªTU›H¼Ê˜`à08é4±Éò’B½ óã@>mâ@"YnñtP·qãÆúá\ÿb…‰¨‚ŒkÀä=uïÞÝïªm »"/BÔh¨!®}˜> ó£>Ò-ý€¡žuÖYú"Ín(ÎÔ°Çùä%¼àDJÐLi+Vt0dúûðÃëDã…^p"aiHØ(\ȉ.R˜¬kŸ®WÄ.N~s^йÑ#L–ófäi~a½{íÚ]ã6Å$ƒŒoñ¨°Ç+Th¯éåLN0ˆFEsÓ³ž•gu®H™úlÁyñ“òF ÖÄô‡¹ñ\~÷ÝwUïm½¿0$?y _(öYM>£±Ï Þ?W¤såqÍ“N:I'–0\&LX§MÈe:Ï(Ï—hAô9M ^Ÿ&dÔcò@?˜79ꬿ±+Ç“DÚŽ"&—Qma—æ¹$E.×cþú¶ø?Ðw&@0XƯÍN8a‹ÿµHܾ©Èm—È (4Æ\ÐJË)DÖ:÷Üýõó÷ß+äÅ0Ff”߈ö¾zuãݽÿþÒ.$hAî/ˆ—´¨¿r43Bj€)÷îÝ[gÿHˆØ\?øà•ZyÁÿ8/–Âqäa¬HÈ/§Œ\æ¹¹¾‘j ¤r˜8)?yy6kÖL_ä¢.t¢¢W‹à œ<æØ¨c¥UQiçv9•ŒÎ<óL­ÃÍNÔÜŠ †Eá ŸŒg0ˆ”°bÐýܾn½µ‰«T©‰H˜ƒåe‰D䈵îÏ%ûĉYš_Vœ[^̉PnÏ÷ Œ™‰x1ñá™bÂ…vÁ=öÏXÔóE?¢ž%_ÆqÿÜÁ b íùãż¡Œ¦ üðócˆâUûá¥^&=hE &qÄíç¹FâeÉ2¯Èº‡–Éém“7¤Þ0ùç2^[÷Yü¢þ£¾-1 dOo»í6ËþûïÙ¿¨ç÷Úk¯õMéÖ÷+Ga’˜*;É€¦ks,eºðƒä%pÌÊoÔµÃ>Ø[–_Ý-/…OeÖ;3]‡–”~óâäE‰ú ä³Ï>SÉ5–ØtFêfÍK IÕc,ö–ÙÈ‘#Uò w5Ĭ©& s…h é‚™>ûQ„Š›ã\SìÊ*IñGrEBACu×­[7e¦äGÒ‡™ð¢çÜ¡C‡F5­/®ðú‡ê"Ò.“‚G}T'¨[yaGá‚TÃ8Pï“wsÌ!/Úf›r¢6?DÔ¸·¹Aƒn‘óÆ_M¢”/_6¯ÓÓê8Z <÷yÆž!¤f>8/1ñƒyñŒ 4H{Õ·þ}E=KQÏ]ø¹â™€aŠíZÕÒLB¹Ÿ¨q¹WLX!˜-ÚñÐ~QÆóO?ÃÄä g+˜á¢E‹ÜÌ™3ømh9&ž'$ï-Z¨Š› 'Ï%êkŽ¡€âµ¾û±ÿÑØãüæÿ‚Ù&^›QÏ/}ÂÜÃÄUÒµ'ßO$7®´#ð/f¤5&#^íŽê6˜Lð‚F’Å…ëâé .¼è‘ ±Ÿç‡êÕ«!­¼²?þx¸\o„LÖhÐü´•ju=æ0d¤»£Ž:J»(ÎBªY`sÄ Cãûî»OÕ±0?È·õ,¡)‰zî˜8úç ¿ž5&^x-cšáC{˜t¸LÈ0Gˆó—>ôË=åîû´Ã3‘-‰Ï¾”ó¬3Ñå¿‚†?¹8€©ºŸÉ “(ª-&~ÜÔ‰ýRKhð™X±bEd›HÞ±Ï/˜‹Ó¥š¦è/O\Ÿÿ³Ç%l~òu ´• ! éÅó±ŸxŠ>,ž÷<ðU0~ü¼„Î-©J‰xe'Ò7±I©·³÷tæa˜8¬òbÊÑ„¨Þ´ Ïga˜ÙÇDÈ2õè–Cv¹¨òyñªWkva!vð䦿aÂsW˜u¸(‰€^7Gáÿ~ˆ„ûU‡2?j?ªÍxÿëÜžÝX\¢®•Ÿ²iós¢Õ5<ãÆÍ{ÓeÔ,Í‚Aó!ÎuIžÏ¼ÜØ”d6¬ö¥0J¤-T07˜„'(„‡r˜PkçÅÌÃõ3aŸI:lS°AâSÀ¶ D„5ž˜n¢„]“g*|ݨg)Þs—èuÒ¡^Aÿ£Å96là8O²Í‹LbÎ !;ž'{kØÂv›Íñ²lf¶2èΟ[LU±aa“n%Ò`NOç<M¡ Ø¿òË”é~ì ;–!û!Svêm½dÉ*MééqɤmØn™è¸‘ÒÂL™ó¢ž¥xÏ]¢×I‡zý¦êØŒ1§êIÓ~µiSO–|Ô“µ'I`„â€4JœˆžRÆ ƒFåM`£ÌA`Ӧ͚ùŒì_ä ç#‘¼dMéß²lf±8®Ð¸ïb†ïóÛSBÓ’9wÇFšŠ˜*;ïJ)ë“øÉR©"I‘åãÄ»q'aÐ-Ušf™VQKM–`TrHèL¹øfñðeI žîåäµRs³$èxQü1cæüÏ&=FXø4•õêÕÈthlü¹ °fÍdzƒCŽe|¶ÞºB¶Éš8ðeËZXÑ\`´Cq0Æ+Î<ˆðì&âXíÚÕÔ³•w:Õ3 q¾ % ÚÛªgÏþGý¼ú»mÛ’£»r¾Ûµ2cÌ™wÏmÄy ÀzXBöê5F¢ŽÓüÀHÒ|vÚ©jgÛaC Šb£ÎZª•e¯®QcÛTÝÀ|ìa‰DÀs$,Vhd!°iÓf÷óÏSÕ&ýÍ7¿¹&Mj©$Ý©S ÇKÖÈÈS¦,Ì–¨q.Ã#¼U«zÙ¶j¤kze6Ƙ3ûþÛèó È|…ªû»ï&hp 4M¶Ûnë|´dU ,+ ƒÎ²UÏvcÇÎqµjUS©ÚÇ7§ÄÌ{ZŒ1gÞ=·'uë6ºï¿Ÿ¤’ôÀ“öÃOÌòî¶e4I8C›ÀŒBjÌ,õwV´²åË׈T½köR-"–Ù3VºcÌ¥ûþÚè ‰@åʕݚ5krm¥L™ò®bÅÝÄ+w·~ý·råÈ\ëgÊÁ#<Ò}óÍ7™2\çÞ{ïíÆŸÔ1—-[YqmɦVK?ëÖÍv+V Kê5¬±¢C`úôéâ§²[¾.P._µ­²!alܸѭ[·N^ˆ2lä…î¸qãÜÙgŸ]¸FÒðì¥K—ºÙ³g»]wÝ5 {o]N6Gq„+c¶EvɾÖž!`†€!PŒ1<;Õ0 CÀH6Ƙ“¨µg†€!`³1<;Õ(jp<1b„;øàƒ“r©þýû» 6h[[mµ•¸hêêÕ«—”¶­‘Ô@`àÀnÿý÷‡ÄŠ…îÎ{‡rˆÄ”ÏZ[ý×_©Ít¿ýöËwÛC† oó_•mÛ¶uÍ›7Ïw‰œP”Ï8¾5kÖ”%mµéJë˜Ä\`èìDC è˜?¾»è¢‹’v¡ÿû¿ÿ“ˆf½Ü/¿üâx~øáî®»îJZûÖPÉ#pî¹çºþù')9þøã%ÊŸÙm <Ø]ýõÙ¿Ùa"عsg×µkW7wî\eÎüîÖ­["§ç»NQ>ã?þ¸,“üÞ½þúëîÅ_Ìwß>AÖ͆@Ê—/ˆWvœ£YÅp@pÅWuêÔ .½ôÒàòË/vÜqÇà¼óÎ .\ìµ×^ÁªU«´òSO=Ü{ï½ÁðáÑ‚™}×\s›7o^ ÒIP¿~ýàüóÏ×¶¦M›4jÔH·iÓ&¸ì²Ë´íSN9EÛ”D /â@–éèy_~ù¥Öýý÷߃cŽ9F÷{ôèÜ~ûíº¿ýöÛ“&MÒ}¾8¿U«Vúû§Ÿ~ š5kT¯^=É@ /ÔàÐC ~ûí·`É’%H×Áرcƒõë×­[·Îê1îL£]vÙ%¯ì\‡]”Ï ®[·nÀ³õ¼Œ3&8ñÄñvÚi§àž{îѾÆ{^xþgÍš¥uøúüóÏ‘võ÷[o½¥Ï„x ï¼óŽ–M˜0!i:¨]»¶>×ùä“õZ2ë׉ ]¤w×½{w½téB÷ùB…-3}'3y7cÆ ÀèE2Ru#ÆðÙgŸ©ªÛ *Ì“N:I·L$P’|^xÖDjÖgô¸ãŽÓ‰]¼ç…I¥ˆt9Z¶lY ¦³µÛ}÷ÝÝ•W^©Ïh€ÌšI%LžßÕà¹!€hŒr´ÁM›6Ià”ò[”S¯-މ&ȉæHŸ{Öó¿b‚Àóï)ê×&ÿE9“Tþ_y™ŽÊ”)£cÄV^T“ScÌþNÚÖ(>²ZQ¥åh‰Æ×_­/lvü™~øa•P ¤Ò,L)YT¡zn<ÇjÕªéqQ'gK¾Œ”Ãds#Q§;Qo+sÆ^øá‡ªÔ‚4îióæÍúB=ì°ÃTZ†9ßzë­ºoŒÙ£Tðmºùßű5Æ\(Û52$ <9aÆHÏ*0>8bÁüP‹}K’d Òã^õ­?B_HH¼Å¬GP9ÃHGŽ©3yT„¨,QAC¨ Ŷ¦û±_xÇò’lÙ²¥¾LQçñbåEGÿðئm^¦íÚµsU«VUÇ1±Æ6e¿“„@Q?/'NTõ5Ì“gÄkZ¢ž<§=£Z»v­ûè£Ô›M&Ì8¢G’FKs»í¶ÛœØjÝÌ™35Ì•7Äÿ€vaÜhgPkó|Aþ¹ç¹‹jK+…¾è;퉽Ü1ˆ"ÿŒÇkó¦›nÒÿ j÷;ï¼S¥~ú„úšÿ¦(bâPTT®¨¶v CÀ©d0dfñGu”Â"Î[Ž¸ÊØ~‘rQGóâ@…|ß}÷©*„tÁ yÂt‘nÅùF¥/êIc±õY5€s˜ðÚÇË[&xábýM9Ï$Æ@Ô˺Ïs/`ºþŠ×–¯#vcõ.ÏÏX¢Ú”‰i “–-ž{aúþR[lYiA¿s#™ÔÈ+Û$æ¤Ou¬AC 'ÌæQ‡ÅªÄ¼­,\u ^Ÿx`G’†·C‡{oÔpYAö±mcW4*9ŠãyAšõAC)’cE©Ñ¦ Á‰%žÝp¹7ëPç¾J•*±§¨f&|N¸‚,ýrgžy¦:kEý—ÂuÃûQýÃa`;±ö»ˆ=†óWQ‘¥},*d­ÝRj?Ô¼…ñ¾DeÇ2 ^>‰ö+¼H±uyBUM;a¢T”/‰ðõÝ÷Ù¥Øf¡ÚÅV[˜ìREù¼à!ÍóvL×ûƒ ;9þ©Jøi°D‹m~È$æü eu  €cJ~‰Y}˜)s~,S¦,Õ2}2*Eù¼°ü©40ef²œÊL¹0Oye=;×0 CÀH2&1'Pk®t!€„oMqéiòG㽺“ßr궈4Š—³‘!àxå•WünÂ[³1' •U4 CÀ0ŠSe=ÆvCÀ0 C aŒ1' •U4 CÀ0ŠcÌE±]Á0 CÀHÿä5¢­ÿc­ IEND®B`‚mysql++-3.3.0/doc/html/refman/functions_func_p.html000644 000765 000024 00000012176 14042362131 023027 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
MySQL++  3.3.0
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1InitCommandOption-members.html000644 000765 000024 00000015344 14042362131 027624 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::InitCommandOption Member List

This is the complete list of members for mysqlpp::InitCommandOption, including all inherited members.

arg_mysqlpp::DataOption< T >protected
ArgType typedefmysqlpp::DataOption< T >
DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1TypeLookupFailed__inherit__graph.png000644 000765 000024 00000014155 14042362133 031043 0ustar00tangentstaff000000 000000 ‰PNG  IHDR•‰%¶z¯sRGB®Îé'IDATxí ¼MÕÇwJ¢$Sƒ$"¡’¡”‘Ê” BD“Œ•¤!ñ§A*¢¨T”ÌC¯" É…¼T$ÃCQ$¢áü×wéÜνïÞ÷Î{÷>÷¾÷öú|î»ûì½Ï>{¯ýÛk­}Îy÷wŒ#b¬X ÄNƒŽ][¶%«#° ²Hˆ¹,¨b®RÛ`ÞDQÁ?ÿüc.\˜(ÝÉVý8÷ÜsÍi§–0}NPýý÷ß&þü¦víÚ £œìБ;v˜½{÷&TW­ûK¨éȱ Êó˜P£° J¨éÈÉÑ š5kVÂÍÒêÕ«MJJJÂõ+–Ê ªQ£†!Е[n¹%4+.ÇcÇŽ5/¾ø¢^{éÒ¥fË–-qéÇѺh¶U=Ìé§Ÿn.¸à³jÕ*óÀ˜+V˜Æ›Ã‡›öíÛ›3Ï<Ó´k×.´I“&™Þ½{«N½é÷Þ{ÏT¨PÁ”/_ÞŒ3ÆÙÔ¯_ßlÛ¶Mûwùå—›îÝ»›R¥J™zõê™_ýõha!f×ÉV úôÓOÍœ9s̺uëL›6mÌðáÃÍàÁƒÍ±Çk^ýu3uêT@8þøã5Mq§bÅŠª47 0î»ï>3lØ0óÔSO™ž={šÍ›7›Ö­[›Î;kÛL|³fÍ̈#LåÊ•4€gÚ´i Â?ÿüÓÌŸ?ß,XÐtéÒÅìß¿ß̘1CN>Ö ÐÜ}÷ÝÚ. úá‡T\·D‰fÙ²e¦H‘"fÔ¨QÚ¿ 6˜è=»Ý»wží„ʉ beœÅ‹§Ù™dçÄOtd’Yõç yòäqd‚5èСš·qãFG€¥épæÍ›çœuÖYÎÈ‘#õ# q^}õUG,”sÉ%—8Tgùòåzj•*Uœµk×jš>0œ:uê8J=Wé”.]ÚY´h‘#–/p¹¶mÛ:¯½öš3`ÀG,¥æ‹KvÞ~ûm‡ë­Y³Fóh»R¥Jš.^¼¸#ÖLÓ]»vu† ¢éH$>s’““#Ç#`¶²T¸™8]Ù¸=,W€qQHáÂ…Í1Çã-J×p³•‡|n»í6SµjU=+ǹ|ˬ¨£=¤P¡B椓NÒ¸ˆ2Î¥¬[·nZŽerwüÓO?¹‡oÎãú§žzªæáj±œ®ÈÂÑdÞ¼yõún~vùÎV š2eŠ?~¼º«wß}W]«h\Q£F ;>&ˆo&!&ÂezÓ×^{­ùý÷ßM§NŒX#–Kc²qãÆéîìá‡6;vÔsp[îN·KlD¼uöÙg›Ç{Ì”+WÎ,Y²Dë~ýõ× ØX7Ýt“æÓ?W,q×ôéÓ5‹±p#¢ø„?îO‚VçœsÎQW!Ï»œ^xAû^³fM§nݺ® ·$MÝ‹X-öÙg  S¥}ôQG‚~§hÑ¢N‹-±*Î)§œâ$%%9´;祗^r>ûì3ç /tÎ8ã çŠ+®P·+A¹sÑEiÄ:9 ,P÷G[¸U±BÎ=÷Ü£×@:7©ËvݟćÎùçŸïȦÂëêȦCëâþè"ÀΖîÕœâTtTnh|óÇúM<õÛo¿މy¨çGd'æH€î§ª#sªzß~û­#µæSÉîM¹sçΠºb± Ay|÷ÝwØ0U¡ŒDŒ©æ²_ÓÏNOVxPub7¡@,EPyZÄ@Þ8(­ºbÅRãúB…XŒWN8áïa -–7Î)‰lS%ºÒkÕªefΜ™èÝÌòþYPÅPÅXL¿V/†—M¸¦,¨nJ²‡&¦’˜º¥—]TÂiu÷îƒæ›oöÈ#œÓ®otˆ7?IŽaƒ‘HJľôï?ÝŒ½À$'ÿOntà‰Øß8÷Éþ‹–Ÿ ˜G‡ÿm’’ÖÊkÅ¡w\3yòŠ@=›H­ ªÔ:Ñœyó¾6yóæIUÊN f%²æŽzä.Ƨd„%j¥ . p$mä÷#o’¦¤ì57þdÊ–=ò–i|z˜¸WµwÔ#Ì;}îQ!ÉÉ)fÒ¤e¦oßfz\¤È òßeÝŸ%yªXPy”)iÝ_$̈́Ϸ  ¯›…,¨¢Pž=5¼,¨ÂëÅæF¡ ª(”gO ¯ ªðz±¹QhÀ‚ʇòx;ÁÞQ÷¡¨«XPùÐ/êÙ;ê>eAå_I¶fÆ4`-UÆôekûЀ•%ÙÇ4>”ä©bAåQF¤¤}LI3áó-¨ÂëÅæF¡ *ʳîχ’”gï¨ûP’§Š•G‘’öŽz$̈́Ϸ  ¯›$Íyå•Wøe‹ñÉ“çD§@ 9b,îœ@É’E20ËþCYhÍ”ï.”é*š`Ï„FN ™`Ë ±î/+´šËÛ´ ÊåÈŠá[Pe…Vsy›YS%‚^¿úê+e*…Ñ4ZY¹r¥’CzÛ‚ð¬ˆ.¹¶ð fåebÚv޶TO?ýt{i4šëÛ·¯¾emÒm>°f•Ô¨QCÙê÷íÛg>øàƒ¬ºL–´WPuïÞ]™ÐáÌ«W¯žÂÔ)0µ•{øºë®SÊXFl“&M è7ß|³Z (k÷ìÙc ’m×®²ºwèÐÁch²äö†²ÃcU ¨uéÓªW¯nî½÷^e]‡––uäšk®1Bîh`^§®À³LÝÇcÇŽ5M›6Õ×i[!°Ty,™0š® ½w›òåË+[<í²;†VŽBaX5BJ©lñ+V¬076B– ê…=ý›ªœó'NœhÚ·oo‹0§!';®WPmÛ¶M~­î ùaÖɆ9aÂ3wî\“/_>3cÆ S±bEo2Â7Çž®„‘Âp®ÄÖS§NÕsV¯^m>úè#Í£Ì+;vì0ï¿ÿ¾yçwð#BY«$ßB5« ž3gŽæ Û»)X° ~˜hWÆŒ£‹@Øæõ›óî¸ã#líF¨wMçÎPÜ*7óÀÕÂôïßßôêÕKyаaÔZâåú’¼ÂLo„R×U¯–|¸4hÙ¿¿fUùm÷iFhyÐ÷a‡w»·ï¸‚ŠQßzë­ºš«U«f„_ØT®\Ù@Æ(|Èj‘\«Â7Ö&O7tèPÓ¥K]¥~ø¡Nn¥J•tbÃió†nP+ALÆ?þ¨Õh‹‚¥sAÅä‡aúõëhk‚µs?Üç)P €êÁT¶øo¼QÁ}å•WêXš5k¦Öv0ØI¿ÿþ{m$Ò@I`”çuá]\›1:¬(׸ì²Ët1Q Ž»¼óÎ;•E>pRœqÔË–-«Cge†ÒÉb1„ [AÄ7Ve¿ñÆWrõÕW«زe‹îbm'”fÖÕ«—ÜQøšÕ2Qææ“‡µLKpm­ZµJU`!.¥­p8 ÛVá@=Dü•?~½éH®³jÕªæ­·Þ êƒrÎó&XBöÈúG~ÙV{Ä¥ú…ÄRî’êÄ+wK•ÖÀ«+€…áXÐÕÒ'=þøã07jÔÈ|òÉ'Ú+:œPÎD«àÚ°ŒÈǬ1ÐìÙ³ÜÌB°­. ‹FÚb%â7÷Ãñ¡C‡Ôå £¼áÚ¸YÀ'lî Rv õë×7Äìä:uêdºvíjæÍ›§ü†nøž>}ºiÙ²¥{9½Ž{€…¢¯ëÖ­féÒ¥Ú®[žHßq·Tá”xø åĬlw‡I”çWc•)SF­®“‰ö®V·&²ÅŸþYãòY=¤¸šqãÆé5ÎmáZˆ[¨ß¶m[ýh%ùPp;ÅŠ3ݺu3¸Câ&b Ê\qû%J˜Ö­[\4Á7îKŒLš4ÉwQ\|ñźI 8G8¯nݺW ³½† Å‹×2ïw¼Þ¼£žÎ¢‡ŠŽìªQHÔÍKÜáÈ*¨± ޏG@”/¿C™¸À ü'Ÿ|Ò«æ ™@™¸ GÜž#®%ËmŪ5)u6oÞÈîÈÃîˆ; äsž·¯ncعs§{˜©oÙAõ!SD>)ë(ÇbuàâØ a•¼‚û:ï¼ó¼Yš&ØÅ D’¢E‹¦*"–c›žî-1œÇy¯Éí¯¹±’7?ܼå‰NH÷ç*×GŒN¹nÐouw¯àšÂIJJŠn-žÂí7Àg?byí„•w•‘A{wIœiÒBëe䱪ΚŪíxµ“л¿x)Å^7J DŽ·¢+ÉYo~’7?+Ú7?ýAb %<ò±(û÷ŸnF^ Uþ'75÷qF®®2Ⱥ?ó?yòry“O ¯öQÛV± JгAyðàŸrƒuI:µm1° J'.S@Q-9y»¼¨—öóÁtšËÅTiL3ÿD:mÚò¸FhIE¸§Å±•´5`A•†~-ú6¨ôàÁÃòŽÓ‘×U‚ ìA,¨‚Ô|÷‡‚2·mûÅüðÃÏAyö XTÁú>ü·PÜ®Urî@¦&ySuEp–= Ò€U:þ;˜7ïk“7oêç‚ì±`V"k ¡ŸýEîvÖ—L˜°D­Tá¼ÕéHZ¶Êò#ýHJÊ^³qãO¦lÙbzlÿkÀÞQÖGàhß¾?äŸ26ëqrrмH·ÌôíÛL‹9AÞSÏš×eȾ‰AÖRE˜<ÇÔ­[AK¹›ž”´&pá›ý¯lLe¡s XPùP)ï}'Ä»ß>úšU,¨|Ì‚¼ñôÏ>NÉÕU,¨rõôgÍà-¨|èÕº?JòT± ò(#RÒº¿Hš ŸoA^/67 XPE¡<{jx XP…׋ÍBTQ(Ïž^Táõbs£Ð€•åYÂ#JòT± ò(#RÒEÒLø| ªðz±¹QhÀ‚* åÙSÃkÀ‚*¼^‚rícš u¤{`A•®Šäebû–‚-ýWÅ‚ê?]ØTŒ4`AåC‘ÖýùP’§Š•G‘’ÖýEÒLø| ªðz±¹QhÀ‚ʇòìuJòT± ò(#RÒÞQ¤™ðùTáõbs£Ñ€¡¦§õc©¢—˜Œ'Ožå‡d+Ĥ­Xõ)‘Úñ2U˜‚ ƒ?宻öÜ\¤ (‡—äÀº¿\€£5T ª£¥é\t ª\4ÙGk¨ ÷«/ÐÁÂ2-[lZp$‡ \ðfVà„ˆž?¸2#p:CD {×òåË•¯Ð{}HÀ;î8o–¦!‡Ï~Cˆ1!'OOöîÝ«d•.gazõ½å™ÓŠ·…§a/‡¬;Z1Pñyî¹ç”¼š4 ŽF Å…›ïÌÊâÅ‹üÇ™m£OŸ>fáÂ…ª+ôÅ'-T»»ví2Ë–-St?ׄ²ôÌH†-Õüùó JéÅ6mÚT' >_”íÒÉB²ÍÄÞÿýJ¢ýæ›o*5-¬QÔ+_¾¼VÎÒ¥KëÏI ñd` ÐÏB  ‰…´ºvíÚJ-[¡Be…ƒ&uèØ Á…F¾b7ݱcGmoÆ Ê -.죰¾{û.iL Ì댩­°²ªáŒ\ó‘GÑk:éI0~˜Ü¡Õ… :8¼×¬Y£ã‡õŠ+®0Ý»wœ%Ûoâxi¦y8½2eÊe9ÅŠ¶hÑBY\¡ +Y²¤·šöæx¬¬¯7V^iXäéG¹rå‚êgä Ö ªÕ%K–(0¦êú‡zH™Èaa‡RÖ¥leõ@†(LœÊù;~üxe+‡T›vX ½{÷60±cν+mÏž=º²úöí«²cÆŒÑq2øÿ8FùŸþ¹æCë’r{Ó¡Ê×?¶Ã,”æÍ›+¦M›¦·°À,OÛ#FŒm.p¼råJùñþdœÉL]-ô¹Ï<óŒ’s¯^ýÉÈ‘#•užÛ8PÝ2f„k ˪¦#——_~Ù@¥ËgæÌ™JúÍ¢yâ‰' Œõô…HX ®à±Þ,&òèÑ£µžã&9ÝfV2 *.„…¨R¥ŠÁ‡óí¦wïÞ­±ÆöíÛõ€®`¬,櫱 mÀÔÊÌÉuêÔ©£õi¶w¡y%[Iºáꃧ‚j„{knæMk¡ç±Phÿ(&¾¡eÊ”Qnc\@Ãê¬ZµÊ”*Uʬ[·ÎÓRp’~Øë±6€bÓ¦M:¡abé°€p3#xcU°~°À§%’‡Ž—úX)ôɇr,ÀÇ:ÂÉŒ…÷.T÷X^ }Ä‚r.cca`µXxŒ%³’)P¹&Jôˆ‚.½ôR#ÜÇúL6ƒ-T¨®dV óKçË—/Õ¼Œ¤¬^wõ¸ùä8p Õyie„ëõÝ6I»×"ÁE19QŽHB]/!$Ö€ cÌ®ÐùzCO„¡‚÷ŠÛ·Ðñâ²`nåC[ˆC N<Ä‚VúŠa\|°¬,&,¥KʼnxÓÛ¯HéL*Rcn>@BY˜R¬%+S‹iÅJÕ¬YSWJÆ£… ®ŸÿÍ7ßèÊb!XÎÃ:  „Õ‰5 MkFÈŸÐþQÌD0)¸ Ú¢……jÕª•ŽcíÚµ–˜`÷C_°€,$ÒŒ W½zumOˆ¿5¾¤œ<„ø•ñ±+EœO\ê•pãõ–»i,–’øÐÓäP©U«–Z0¬ ýEÏÌÉ¢E‹ôׄžëç8ÃzZº?aHçˆè4R­Z5õÛ( ¥±²0ÙƒmÚ´Ñíuü´ôqÛÁšáJØÞvêÔI"%§ ¬@Ïž=õ$¾‡®mzÓ¡mrÚ?ò°”¬rÚP¶XˆÁgÍš¥}Öxªª4iÒÄMjÞ¥KÜàìÑ£‡ö—€Ÿ4ã.V¬˜‚ŠÆ±ÔlðYlÄ¢XCB ‘Ƹ¸'`Ge:tè n°ò ×e±7lØP7#Ä\l(ˆC ì‡ ¢EA½ÌHÐO^30v?Ñ>ûc… \ØÚÝŽ±ر\^³ `«à08„ ‘³’¨ï‚S””¤¦Úë>32øÐþa™zÙéáÜ>»m{w„»äÖq¿q-€Ýí/ùŒƒx º Æ­úëóºÌŒŽ=ãvÑ –”±bà V™ñ–(Q"P øé«_Ýòì6ßçÜ{I.¹$—äy>Ÿ½ÛÛò›ÙyêÌUòBÎÈ0 CÀ0²œÊÙP «ƒ!`†€!`¬AÀ³CÀ0 C ‹0ÆœEaU1 CÀ0ª†€!`™A`ùòå®F™ÉÌr)ÓŒ7Îm±Å…jƒ1æBÁf†€!°60æu×]×-Z´hí›v¥Â pÌ1Ǹ¢0f3eW˜¡b 5 CÀ( c. ½du4 CÀ¨0c®0]m 5 CÀ( ˜¹,ô’ÕÑ0 "ðÏ?ÿ¸/¿üÒuéÒ¥€O¤N6lØ0·téÒµì·ß~®råÊn„ îÓO?uuêÔq|°ú×IÜ·mÛVñîÓ§ÂתUËo¶Ùf^¬ Ú$MÞË'_·n]/Â_±b…§¿ößMŽÂÐ5ϼ>Ž>úhž…¤…¦1¿ìc%†€!@`Ù²enèСnß}÷u7ÜpƒëÝ»·;äC\ÿþýÝwÜádòwU«Vu}ô‘>óì³Ï:a2îæ›ov'Ÿ|²3fŒš'Nœ¨Z«0wÍoÆŒî×_M”ÃÉwß}ç„ɸo¾ùÆÍž=Û½ûî»î?þP-V¯»óÎ;0c}F˜¡æ¥çíÚµsüNEh¸Í›7׺†4”òâæì×^{MÛ…&M{1_ï²Ë.áý¦mǼj®"€8œ(N¨.;†ëÞxã ÷ðë¦}ûí·ës´É’%ªÅÏ;WµoÊ|ùå—U;AÄq³v—_~¹»îºëT3~ðÁÕÌO¹"ô8aЪñ“é%—\¢Ö†?üPq1b„£¿Ðú±ОAƒ¹ßÿ]ëP\æc..d-_CÀ0R P»vmwÆg¨Æ€YU´3‡:ꨣ”¹ÀûleÄçwžk±2èõV­ZiYbáÐßÅñasq jy†€!h¹hÅP‰IØ %ü°ï¼óŽ2g˜LDLުщYV5[˜ÌF¥Úq &±ù þT(\ãœë0¥tHLånÒ¤INLé‰Ç¨Ï&›l¢ùqñ /Ô6 e²áíå9¬Qzú駘¹U8Øpà ·ÐtW®\©¿Á"1ë9É×Á¡á…-yÁ‚‰t“߯˜3‰¦åe†@@+_²2c´g­™cðàÁN|ÒjÂß§ƒQCÁô­?"DV¬£[Db¢…ñˆW#©·Ýv[eLrAìZ5kÖ¬H.¹OÑ´Ñ`1½Ã(É_|»ª•"D¤"0ÑÚ¯¾úª&A£Åœ~Ê)§¨¦L]`’žÑÎtH|Û*ä ™{ì±î™gžQÓ9;±ýôÓOaŽBüøš-VŠ@[o½µ2s"ͱ¼ýöÛŠw¸_’߯˜Km+Ë0 <À<† C ¦]LÁ°åvÚi'5yãóÄNô–[n©~ÐðlÈæ‹ßS÷´iÓT‹% Œ³ðÞ{ïí®¾új5çâs†¹BøŠ_yå=û@Ó—@.÷Ë/¿¨–ŒŠÆ C„BùÉÏâ·Æg3æ\½ÜÎ;ï¬K­Ú·oïöØcµàã&Ê{2ÅåÍ5¾1׃Ñé,Ó"ªœüh3ÖLÓ0hLö´¦EðÜ âóüç øÅ㈴ÅI•ˆ+Î,oCÀ0* 0Rü¹™Ø+f‚fG€R ´MÖc „¶Êu½î»ï¾„_–û˜È "à+˜¼%ÂZóÀÔŒù;˜ƒC~é~ÃÀ¨CÍ+/ÌÎ˜Ž“Ë/l~ѲÐökÖ¬©fëp .Lãìe3wÔ¬ÏuÒáëo&¾ëÂ2`L÷Gq„šðCYi|çXðWhYRCÀ0JކâˆRóçJ Œ9ŽÐnSŽÞGËÍ6Ÿ¸:QŸÂæm‹,«ŠþÔs„d?|2S&!i°0”&™Æ\šè[Ù†€!P®Ȕƌ¦L T:;bá/E;&Ò8›xDª¸Nˆhp£âAÀ4æâÁÕr5 C Ô º9]ÂleÊ<ŸÌ”¹f ²›,ø+»ûÇjg†€!PÁ0Svëpk®!`¬ Nöcf¢4‚ªVÝHÖ3oªÇêÕKeiÏšÁ2‘¿å‘yXr–§¥™{Ž1æ4³ä†€!`7+W®–í+•µ¼Sô;vºD=ב¥R-äOš»=÷l'Íæ#.î~(¥ü1—ðV¬!` –-[é¾þú7zôdÙ£yªì3ý‹ì’µ±0âæÂˆ[(C6Fœ€«¼Ÿc.ï=lí3 ìC`É’åò—ƒÓ„ Of+Cu1Æ\†:˪j¥„>b0ÇÈ‘üñ|Õˆ1Mst츙ü·rñþãP)5ÝŠ-yŒ1—<æV¢!`d;DMãþì³IÊŒ§N`Ä»îÚJ·Œg{/–Ùúc.³]g7 Œ!°té ]¾„iúÓO'º ~×­Ývk¥1QÓÆˆ3·e”7ƘóÆÇî†@yD`ÕªÕº‰fi´âï¾ûÕuèÐØí¶[ë#¶¨éòØóe¢MƘËD7Y% C ÈŒ7K˜ðDш'¹¯¾š&ÿ¹»‘0âVz°»–­#.2Ä–Af0Æœ-CÀÈ6¦M›£fi4b4ã 7\O5âÀŒk×®™mU¶ú `ŒÙÆ!`”þüsaB#F3†:wný¯VÜÚm²IòÑPkEyGÀsyïakŸ!P^K˜ÖB+ž=;Ç1ݹ3æéÖbªÞ°¼6ÝÚU¾0Æ\¾û×Zg”–/_%[ÓÝ'Ÿü¬&êŸþÃuê´¹jÅ]º´‘ÿ¾mT~k-©Èc®È½om7J ´Ù6ªvql¡s|ùå4צMƒ#fËËjÕl¿é´Aµ²cÌÙÞCV?C ,#à½w=4Ôõéó¶ü£Rß|ÿʵ†Ÿ ZñDÝî²^½u•ã+ÆLm…X–GƒÕ½€c. P–Ì0ÒD€ý£O?ýIùg¥Ù®R¥Jœ»»£Žê”+— –èÎZÇÿ¬&jvÜÚ}÷6‰£0Zv®ŠáÇÔ©S]‹-Š!g˲¢ ðòË/»#<2Ussª¦ºc× CÀ(,ƒr7Þ8Ø-_¾Ò±™ôÞ{?¸ÃÛVvØšªñˆ?;¶ºd¯i´áÓOïìZ·nPØ"Kì9s×®]ÝG}TbeZAå~ýúÉò½‘y1fgŒ¹üô·µÄ(uX²töÙO»~˜éþùgy®ú`¢n×î*99‚µn¼ñ0ýbû;Ä\0ÙCÀ³CÀÈ ƒã.½ôEÕ’W¬XµV¦•*Uv/¾ØK˜qÓµîÙCÀøÓ˜ÿÃÂÎ C ,[¶Òzên̘©q*Zµj•DVO5Æœ »nü‹@®ò1b„i¨a‡aPØ10jÔ¨¬yÁÞxã ËÅü>o°A{7lØaÊËœ÷+åXîV¯æX&ã`¥k|Ì0ðk¯P þèܹsÖŒ¡l¬ÈÌ™3ݸqã2Rµ H$üð\y?ÞýüóϹ®E|ûí·î÷ß^JœÏ›7Ï 2D÷Þ{Oó!:¿8èã? Mja2'Nœèyä‰møBÆäš±˜N]ˆ%(®ú§ªG.™Î¹îºëÄ÷scªôvÝÈË.»LvÙe—<Ó•ÔÍÏ>ûÌuÖYîØc-©"+\9Ë–­r5jTq+V¬v99ËÜ¢E+ÜâÅ+ô<'g¹ž/X°ÌÍ›÷kÞ¼½;ä3òÄè—_~q·ÜrKži*úÍ÷ß_þ/ús÷øãŠŸ~úÉrÊ)nÚ´i‰¼}ôQéÓîöÛoO\‹žPö¶Ûnë6l½¬çßÿ½;餓$ÖàlÖ–È®lŸi^¯½öš¬eßh­ôE¹ðöÛoË&3\õêÕc³éÑ£‡[ºt©ü…ç6îÞ{ïu³fÍR!¥£ tôÑG«ùu›*Uж¾>—Æœ_¡vß0 d`ÊPµj•]½zë¸&MêH€W}·Ã$z¹™0âV®G-Ý…vÒóäçËãï^xÁüñÊ4¶ÜrK÷àƒºöíÛ»–-[ªàúÎ;ïäI‹v9pà@M×´iS7hÐ …KfÛ¶mÝÖ[o­Ï<ñÄ Ⱦûî;‰t?Ìí»ï¾®Aƒî†nÐ{½zõrgžy¦#ŸvØÁMš4I¯_y啎¥:Ð~ûíç&Ož¬ç©>hÇi§æ¶ß~{׸qc÷ä“OjR˜øüù󵌠ȡԑ?F¸ºçž{TSmÓ¦MBØêß¿¿Ûl³Íܦ›nª¸þâ‹/–¨üÓŸ½öÚËÝyçšöìÙÙ¿JËâ™wÞY6œù”ÇBÀŠ+ôùÿýï"ø5—±×Î}ýõ×|ø{õÕWµN½{÷vÿ÷ÿ'ã°‡ûã?ôöúõëËŽq[È*O4?°æyp»í¶ÛôZø;v¬b9eʇ0Cݨå®\¹Ò{î¹ò¯e_¹ƒ>8baY¤š,Ìô•W^Ñ4Ï>û¬šÂ«U«¦íL÷0G… p ÆŒ&P¡!˜ë1‡rÈ!z5ì¤;ðÀ˜:ÂRß¾}]åÊ•U½–Ë”]Ї,!`†@ÞtéÒEÖgïê0Í£arþ÷ß»»ï¾[55îã‹e2ß}÷Ý•a´jÕÊsÎ9î„NPMm&ã%Ì!™Z·ní=ôP½|ÐA©æÍ4P˜0Ýž{î©÷O>ùdýæ#0·3fÄúPƒ9¶[·nªùS )J:tpçwžÃÜ‹vŒ¦5‰‡´˜šk×®í>üðCÐÖ!4r0€p7aÀDN>XvÜqG÷Ûo¿9êv‹Ö;lØ0>ô¡ÈBóQG¥Œ™[wÝu—Z0ýãg¾ùæ›í}÷Ýw%`ñTGý9°h ƒ5ŒBЩY³¦ú¥aì¬]‡±cžç¿ñ[S&q5hà˜ÈëÖ­«Ïå#ë4fLAJ)Jóø0±¨ûÅ_ÔN÷òûÎ+À!¿g“ï‡v!1†Àˆè7]ÜT@‰â®ùógC†üàØõ©"¦¯¹sçf¬©h1Hühd™Ì·°ÄZõ˜0áwÝC»°õ.î瘰!j½zõÖ*ŽŸð‘¢ rÎ¤Ž‰S.š/þJ˜È&›l¢yAœŸsƒ 6HäM Ì ×£× #'›o¾¹Î¹Ñ *4ÐPÿõÖ[OSW­Z5–£™BµjÕÒï¸4}˜î¯¿þ*ÿ‹ýß¿~Œ… åÅá…ÖÃ%P &Ž’ëIðŒ‹fu~ÃìaîÉõ `ò ÚF}`Ö¯¿þºlˆ3UñEKÇTŽ …™wB&)ë3¾¤‘LÒþ$9:”‰ “ :ÁŒ1•@8ñé¬LPh&üI´1zÐÉÅA˜ŒxÉ!&•Ò ¢Ùÿ¸W¯Aâ/ë-?)~¡J£*%^&ZfºLÐ7ß|£æNÌp999j¢d|—4ÁŒ1aBh˜OK‚Øæ³_¿„iÝ$Ú˽î˜c¦x"~‹»=Læ˜L98G3<æ˜cÜ%—\¢~h0…9070Á<`pÉð‡Ih¶zD³„0™“/„é¦ ‘vñâÅꆉß3ïp †‰åG&LÐùmÿ2þÛ(QgòÅDݽ{wõkS/"Ë™cÑ<ó#0Bý馛T#/H”t³fÍTKFð!=sÂŒùß5ó0þù}öÙGÍêàIZLâþù§V ·BÏž=%NâBÕæñ™ï½÷Þß5BiÔJÓ.*¥mÊf’ÁLÀ€!òމŸ?ýôÓ:ÈÖ_}uÆsû> Ç—À³HK8%‡ßSÄ—^t…ÍÛ=Œ’NÄIé„éIˆ $5€~衇4x œ_{íµj‰N\ `îáEÀ´”œ&$@&8ú#M4房©m·ÝvÓ`€çŸ^ˆ:d€?ðÀjÁ„&ÙïÂË£ŽAHʘ\,´•ü0ƒ…èF¾ ÌTÜc°Ó¾üÑ]ýõjfA;'-/#锘†B D0 1¹3øÀpÙ²ej.ÃtƒY†|éWÒàcù¦&ú!úæ›_¥ßÇH­aL,© iÍšÕÒɪØÒ2n°X0Ö6Þxc5Ÿ4Â9/$c _æ:pÂÔæøüÛŒw&%ÌŒ¿&Mšhd&ýmˆ>€©1!bbDPÄÆ;ÀØÄÏHŸÑD¸3 U`jÿÇqÁ¨Àòå½ÂWI:VÐ 0;’A8ŒA‚‡°˜0Ð"0Á¨‚6ϳDåâ3C˜el2!1Æ1¡’/'&rÚˆÏ Ë ï“0ï4Ì ‘t[mµ•¾—Œiü¼ç×\sÖ/Ô?¿ï¹s sùFÆé(ók,Ë–­™üÒ‰®Í¯œ’ºêLß0¢3'@àÉØá³5ý£ÆÔ ÑB>˜‰ ðbLñÞò Ä8dì2bB†®ºê*e„Œ!ú›1G10_p›~gîFŒR(3\cì2¾øf|0^ó0l éiãc=¦c›çöØc–Ì)´5ñ<+i±2‚c>”Šx\áÔì0ƘG g~g¬S?ꋟ\H‹†°$?ëÿX`É—ùâ] Áç<„¢TõË÷ºLÚ ’‚½DÖ%~ÇÈdíe’òÒ þŒ3ÎðÒx=—IÄŸxâ‰^¤3/¡Š¤â…ñy©´—‰Á‹ ΋Å‹äá/¶x/’™—Áã¥á^¤'ÍCÿ^^|/楃½H\^¤7ÍSÌ)^&A/RŸ—‰Cïqƒz ÃÑ4á\@ô2êµð!„—ÉÁ‹æêãò)ÊË ÷àx/L׋?BÛ$“ª—IÍ CÖìäÅò2 5/™P½˜H¼fh»D2õÂ,õ\|¢]Âè¼øZ¼hå‰Cªæ'/†—eZ®zº/8ˆ¿HÛ(‚…ÖC&W//•iUû e°i¹Ô <ÀJ&H/“§â)Ú‹ŸÈ‹âe÷ò"{™(½0{Ô/•æEó¼^„$/&/¦(}F+–âC˜¸ïÝ»ôß›¾C‡k|Ë–WøÆ/ö ^¸Ö!ÚsŠ\2wY&5í#yQ|ªC& ©gK/KO¼04/&5/ѧž>¥=ŒEî󼘚FáÍ3ÆEðò" z™(¼˜Â¼01íð¦ïE²ö2áy‘ø½nŠ1ïZ³fÍ4O™¼L<:–)“{”%ˆFï_zé%/>6-‹<)‡ûɇL\Z–L²únð>’FíÇgžyFÛF˪ãP„L/‚ôQcM+“±Ö“ëä¢cG&+/ACZÊ¡VqàæÝ?™¨<éÀ‰ñB[yg)Ÿû¤AFë'~:½Î½¸Cwɧ­ÎtP?ß´é%RïË×?Œ©F.ò²wæLr&çEË+@Êü“0nxg£$‚›-,zÉ ÓùóŠ+®PœÃMæaæ#æa0á²â,î/š¶)q=¯æFQ¸¼©y%ËÈ=æÉh} ’)s²X4)xˆV[Ç4 ss`2‰I[±^'_ÊÊDÕù܉·V~á^ø¡^ß¿ð;æ{aÚ3œI:UPÚ*kØ0—ß K0[ ~øá*½ íG‘D’‰´h<‹_BÚCBÇ´ÓMdà~8G‚Ç$%ÌhÀaÝ[r^ä‰TVŒ @ÊBŠBS’ Vµ]ÌMh HŽHPhG˜—’ýÇ””(ø\Xg‡fƒŸ •èK4˜h0’ZZràf§ä ¤dÚæÚK™´-Ÿô`…ä‡yéi¢?hˆX5h&iò£ÿ)òSÁ>o“x/k~Ùåºæ2s]ãÒnT› š5«$’zø•úkã”vãÓC’&‚•ñ‚‰ ‹šÖÆ,Ë$øõË Ñ¶lLO?àKƒX^’L¤EâçàYÆÄfìpÀjÞ£ ´Ø@˜ÑÂ8BC%&™0 ²dkéé[Ü2`FÿòΠ½`"ÅÊ„¶Îx£ž˜"yW0¹|Ãø#zK c ÐêX\¨ >Çà_¤.”¶€¯m Í"8‰@$Úż-YÒU"e_“rؤZ{‹O®2Dðã4–R çu/6³ÈÅÖ­ 5uFrpªåò~b‹RÜ?WE}ŸÑ´á­#™âÆ`ršðäÃÄÆÄ…I-…ëLj00“äSO=Å#¹BPÁ hxaë84 „üP\^01b¤ „Æ(î…oêÆÃìN™¼4H¢!Ð+¤aFMËäÁËVÊ„V̤Š&D]“ƒâЮÉæ Át‰kƈ # M˜/é—8¢¾“ hÐ_há¸Ò¡m¶i"æÓ&ÒŽ#…iLúçÂÐÆ©Ÿ©;rŠ#mè/òWUh?ýË&L,Œ5˜¦@Ö\2Ž¢(yAŒAúá‰÷ƒëjÚÁ„1Q‹QÓò€Ç8% á¼IKp«ôAilÎ@_á‚H¦h›¢÷BýÈAb<ñÞQ?‚ ¾Á²Å¸ÁªÀÞ?Ò3¹#àzaIïi…²âîÅ]«_=±@uÖcæÌù`÷•I£¥ŒÅ"ø.{Ä®å–/\7Ññ†ëy§ ®¦X$ \%›ˆi”!Æ6»Ž¡¤»…aIb,¼È9ˆ<vÊâ¹àªd|£Ø…qO}Ø ÞÁ;ÀDHŠZM-³·*ÉK'^š5Ä áÅ ×Óýf‚Á¬GGÓùÂ$™¸¢fk˜.“ŒƒŽÃ4¦A”éãF D e DMáyÕæ³mÖ¬™Jœ!mª¼˜T©o´ž<ƒ a Ô%ä“üͳøØ©yG²y4ù™¼~#¸0(ƒ…´äKô8xbÚ¿‰¿›p'-xÑ&ñ( Ì$•dÒ¢…ƒ!ió#„Êæ;-_¾J"„ÙÒ®¥Höë¤J–‘ëkLÙ‹”©%Cú†ƒ–Á€èg"ãÑ|¢‚L™±Ë¤‚ð Ið•2L„CÒÆàŠYa6ÚoúPŠ/é±J%3:Æ× CŒ54eÚ5›2®¢ã˜t`m;å1^x§CûÒ­˜õ°™±ŽyöìññÇûóz¶(÷Ö˜²ûª£(ù”Ö³(DsAȌַ»`á‚Ã:¸$r›q‰‚‚°Åøe®ÁõA„= ‹ ® >±ô!¼„1„Ë\…µ”y‡2°® í3—#ÀàY™CœQâ(_¸ü°¦+1]ÌîÄÆGÁ\Hže‘Xá€Âw Ê)Ü››"7.cª#Ð £“ ÌÎÑǃ¯3z-zg #¯‚2eòÂdW6÷âòJŨ Zf4OòJ•å„`ªÉBy3h4ÚÊ¥T¾¦¸ “èsá<ÚáZQ¾«W¯"ANÿù"‹’WI<Ëò&$|,)S.ýŒšLÁÏ›|=üŽ»sMg˜!¦ç8*Œ‰4š =n¬G™2éS1þtÚ-7Ýó¶mŠ%gí?QH7ŸŠ–e!ŽÒ tEø"p s4sQØ Ëq)¸ y?`¦3(_\çÀseÜGß) $qB,DX€âvöÒåð#ãŒíkôÒ!¤®¨&ÊÈ8B’OÖüâÒäZ&ó*HyÅ™&UHq–YQò& kNœ/// þ£Z#ë"㈌Lé¸üíš!E h®(P0%£¼ É4ЕgÜŒ¯XÉ ËÂs9ÚnT°CxL¶ôåG•5,2Xf ¸²ôF9üÈx$’|ºL\™ô¢8Z^œ¦í´¢öG&ó*j]Šú<Ø¥Ë8ŠZfEyëDa°e"‰2Ü8kÆiÐ[kgÉ#@fj6øcbh¸žN kªš³š2¾l„ÌÚ-bÇ‚‹÷M Ür(M›téì ž//ß×˜Ë 0ÖCÀÈeËV‰¹²˜FWi Ö’%,÷"®b¥!.×o®±l®{÷¶âÖɸ.%-E.XΊ¯˜obGð³ZD:®¹2•A&𫧬£g7-Yaú˜¯Y£\ŠÄ’>ì”vÑÂâºÇùï ÊJ®Cyù+ø 4 EA€@4Öpg1)ĹdCÝÊCd÷-m†÷¬™f»HbI½˜5+ÉÄË-¶edíôjaï#˜ÊÅ|‰ínѰ²‘ÊzðWÀÓ3+Dâ@ èòŠû&6“uÔƒyßr°Žb¦F8fê Õ%¯Ê-‰ï´ƒ¿pÎ?AITÐÊ0ŠöD·1]|(ÿýLYoÜ_&×qþߺæ5Lù¿rqqÍ›7A&éµ7]ù/••$h©@ã‚ÿÒ­fìdJvÛÀ “™2ÏÄý&çUž›]©<÷®µÍ(f:vl,Ë^® I ‰ ©ž²´öíSN‰ŽÝ0r#`Œ97öË0ÒD nÝZò·ì€v¸0ßê¹Ö>“UÕT£îÖí>ýËÆï¿Ÿ‘f –ܨXXðWÅêok­!PlœpÂNòW¨­$ðg€,{™'_kvåªR¥’üIÆÉºÈСãeÓˆçd×®%ÏÒVv j'ßm$ê½V±ÕË26ʹ‚¿ÊZå­¾†€!}ð‡%·ß>Ä 0B5åzõÖ•ýêoÉUÑß~[ »¿Á¨GŽœ,…4P& £îØq³\i³íS©|³ÙVW«Ov"À°ƒZ Ê1Æœ»lEC`ìØ_dg¨{eûÇÃÜYgý·W{r®+V¬’½¸§Év²?Ê–ã%Hl±üãQ;Ó¦“²ßcÌ¥§­†@i °xñ2 KgÝé¬Y „Aÿ¤Lmš•B“îÚ5ûµéÒÀØÊ,wc.w]j 2ÊhÓcÆLU&6=wî"Ó¦ËQÿZSb0Æ ‹]4 ¬D •6F½ÕVÙí›ÎJ@­RÙˆ€1ælì«“!`ä@²6=gNŽjÓ{ïÝ^þÉÈ"½óGÐRd)Ƙ³´c¬Z†€!&Dzcî6l¼lç9)á›6m:M -yi#`Œ¹´{ÀÊ7 Ì#¬MG}ÓhÓlŠbdd)Ƙ³´c¬Z†€!A¢¾éQ£X7ÝPÌÞk68ÉöuÓ„Á²*c.ýdµ4 L!€6ýÅSÝG­Y’eë¦3…¬å“!Œ1gHËÆ0Ê(Qm:ºnÚ|Óe´CË~µ1—ý>´†@¦ÈË7m{zg eË'Œ1çÝ6 Œ@òžÞa2Ó¦+ð (þ¦c.~Œ­CÀ($kÓ¶nº<ôjV¶ÁsVv‹UÊ0²°nzøð î“O&Úºé¬ï±2SAcÌe¦«¬¢†€!µ$kÓ¶n:k»ª,TÌsYè%«£!`”-¢‘Þ¬›nݺc«PÖNÛºé²Õ—¥P[cÌ¥ºi¨6ýñÇ?%þoFÝ¥Kk·Á¶ Yiª1æ‚ di CÀÈA›6l‚ûì³ÿöô¶ÿ›ÎÂe>cÌe¾ ­†€!P¬Ì™3Çm´ÑFÅRF¥JU\õ꛺5šé1gÎÿ9ïWKY–iö"0räH·Ë.»„ æT göm†€!°6³gÏ–½µÛºñãǯ}3ãWžÎxŽ–av#p饗ºQ£FE³«œÝU¶Ú†€!` cÌ«¿­µ†€!`YŽ€1æ,ï «ž!`†@ÅBÀsÅêok­!`”AfΜ鯗‘š1Âýñlj¼† æ~ûí·Äïpÿã?vË—/O\Ïë„ॠä•$­{ø\£>}ï½2dHZy&qhÇ´iÓ´<Êäøë¯¿Ù¥ƒKâ¡4OŒ1§ ˜%7 C ¤xÿý÷Ý}÷Ý—‘bïºë.÷ä“Oj^Dœïµ×^®_¿~ú{éÒ¥nß}÷UFôöÛo;~„®½öZ÷óÏ?$iÒ\pÁn÷ÝwO0û+V¸<ЭZµª@Ï6QhÇ«¯¾ê.¿ür£FP9è ƒÜ5×\£Ù¦ƒKaëaŒ¹°ÈÙs†€!`ü‹ÀÔ©S]×®]Ýá‡îš6mêúöí+;}íí5jäxà÷Î;ï¸c=6×ñÇïÞ{ï=7pà@×¾}{}fРAzF@øÖ[o­Ï<ñĉç¾ûî;wØa‡)ólР»á†ôiN>ùd·ÕV[¹Í7ßܽõÖ[zýÅ_tW_}µž_yå•îå—_Öz~úé§zíƒ>pûí·ŸÖ… _|ñ…[ýõ]‡Ü÷ßï`ˆ_|±ûßÿþçš7oîÚµkç¾þúk}öÞ{ïÕ²`ìAãæ{Ÿ}ö‘MS6ÐrfÍšå(—vB‡z¨0`€žSß1cÆÄb@‚m·ÝV™£&Ž|`=€Qn²É&î€pDÍç‡?ÿý÷ßî˜cŽqàvðÁ'´à¸v~›m¶q·Ür‹öå=÷Üãzè!.'péÕ«—;óÌ3µïvØa7iÒ$½SoÓ¦kÕª•{üñÇõZÚb"02 CÀHÀO?ýä…Q¦¸»æ2idòõýû÷÷¢ê¹h¸þõ×_÷7ö¢™úš5kú¹sçúyóæùuÖYÇ Óòë­·žŸùä/ _Ï…9êóÂp½0_/Ú§?ñÄýK/½ä…‰ø3fø[o½Õ óÒôä÷ûï¿û£>Ú ãñS¦Lñ'œp‚f¤×ëÔ©ãE{ôO=õ”¶÷óÏ?÷¢ejÑž}÷îݽh™þÑGõ"”øœœ­;×…áûzõêy1Çb°ýöÛ{±xap^¿lÙ2-cåÊ•^´iî¹çúùóçûSN9Åß|óÍ>?üiÐwÞéEpRÜhu¢}qí m—.]¼0YÅoÏ=÷ôGuT.\Dðò"Œi?Šð¢u¢]ô‰˜¿ýk¯½æëÖ­ëÅ$¯Ï¥ú¸ä’K´n‘û msÚ¢Œ=`†ÀÚÔ®]Ûqƪ‰ÕªUË¡Q¡q¢EÖ¯__¶ßì¢þÊÊ•+«™¶aƪUsÎ9Nžj«hÓ§OwÂxé9äµ ®š'7ÐѼ!´u45ŽË.»Ìýú믮sçÎzp  ›™Ôphß}ô‘CcD»'aüš&Œ|Ð4faNN­ÃϺÇ{hù$»þúë5õ»ï¾ëžþyÙ¼µ»ñÆ0@ÕÞûôé£íëÖ­›jÉß~û­áÁm¸á†kaŠ¥ŽÔí¬³ÎÒgÃõÛn»MëŠ;vìX'ÂÞÊ ¼ùæ›Z&>u¬ Ô3U;H/“Ã!‚jاžz*—s‘KjÁ¢ ÌÛqÄ޾!FÓmºé¦nôèÑjÉõ`>?Ì”@vÛ0 ‚ ФIWµjUe¨0‹jÕªåzìÈ#tø'13s΄‰S°hÚ®S§NN´V5Ñ”!˜S2a&DpÌJu=¤ ß” ­ÜÁ80ÃS‚®`Òɘ탱‹¦™k74Ìß\§þ0[hõêÕN4\eè”)¤2rvQÃlO9qð\ ý÷ß_™šhòá’š·oºé&ÅÌå‡?u£Ž˜´EKv]tQl;B~ú s~ß&\ ý@Õ«W×2(ç¸ãŽ“?-é’øÛs¡²„†€!`|Ãøt98G“Æç)¦L 2"ò&ùÏ?ÿ(ƒƒ©áoN&1ÛªVÎĆ “‡H Sûꫯܺ뮫>Zü±bòÖûDuãó…`:bÚN0a„4J1/«6©‰òø€aRž˜“Ì”“%plðàÁú$þlüÍLßò®»îª–´n®Åa@£D`Zðïr@¸Ûo¿]+>j˜mAëšòUW]åZ¶l©BH\; ’WHƒö ÑfúŸ÷âÅ‹Ýyçç.¼ðBÕÈ ÙòäÛLÙQ4ìÜ0 #ÂÐ (B †CâÇuhz|c¶&p FMD2ÕC>hdÁÄ_«Ï†† ™Hk"¸I/þcG —øº•!Á‰xæ Ú±øB•‘p–‘/fèÝvÛMÍÐX`x\Ǥ{öÙg;4\"ºB ÊCc&Ð óºø¥ÕB€žŒxD©Y³fª%_wÝuz“2¦ë-¶ØBÚ0ã§¢€Z={öt=ö˜_¿?}Êv„gRå®\¶ .t~ø¡¶¥GÚNÚO?î´ÓN!y¿+‰´Q0q£ÀYZBCÀ0ʬ§Åw]W[ØÖ¡¡á¯%:9þH#Új E‹©˜ènî]qÅz‹å;D9Ã`05(0B´40=ëÍbüÀ¤9W‚Ùr•B›`°Éæü\‰"?â0ˆÜ^ëó=¾\,híÔ¡ Ìß1&ühSµc­‚#°Ðøô‰¨R¥Jâ.kºéŸd!#‘ rÂ^ÙDŠóý/ÙŸX$ìÛ0 âD-FBT”Z´hý©çù1V‰ðvÉ4ñäëÅõ†GqmŠK®¥›ëC —t3v2¥jGrº¸ßu¿Öe…à^ëf.˜)» YCÀ0ŠŠ&O4µtˆ /B Ïí¸ãމ5ÊÑ|dJ‡dù‘új§K8`¬[.M"‚\–S©iº4ë‘NÙ¯¼òŠjíéÙ8M ³.GAˆ€«wÞY—a2'°Š¥\ø¬Kšˆªf7/6 —”t [‘è5Õ§[†1æt³ô†€!`”aˆJ& ›HbÎyä Ú ;}±n“8U²A‰¶”@/– aòåY|¨/¼ð‚;í´Óœlâ0ç†m>Sí°E@;¡`Æ’1ÖjAÎ.\øŒÑš!–Žm¶Ùfj]xðÁõZªÝÇôf9ü0Æ\;Õšd†@*ØÜƒeKQbÉZ4Ž|ùå—nøðáº7lç9qâD·dÉeÔD4óÇ]ÙüðÃkK˜ ¶¡dc•¡C‡ªÆO8P¨¥ÍÆ#½{÷Ö­.1Ó³¦™HrÖ“Žû,­b5“ Õ³Ì‹¥QÔo»í¶ÓMN¢õ/oçæc.o=jí1 C ˆf­t±sK‘ð9s ±Ê–ŸñL2K—Иa¢,W" s4Ë´øÓ(n‡-*K‡XfÅæ™žHêhðÑæ,§bÿn­!JÞ}L/–ÓÓ˜ËiÇZ³ CÀˆC€¨d´Ù(ÁŒï¾ûn5'‡»¸Ï&'a-uˆ»q?îZÜ[™±ÛV üíqË›0gG˧lêÅ•ò+o߯˜Ë[Z{ CÀÈ“N:IýËò‡šŠý¦1IsM•-( È‚y³¾6Ý¥Dq;l±#`ªÆ—68¡˜½Q>»i‘Ž Sä1r¥ éÊû·™²Ë{[û CÀˆ @°»‹ñÍîTr¡-³Y ©À¤ÙÉ 6»d%šnœ¶®¥Úa‹í* (ƒäß›4üÅüÏ2v±3ŽÁß^²|Š¿Ê ›¨h‚?BYÑkåéÜvþ*O½im1 Œ#É¿2^¹"dȦ,SŠÛ¡ s4¾ß`>.L1q;l±os8„™á ¹ÌÐÚã˜raê’ÍÏØÎ_ÙÜ;V7CÀ0J´ÎT;n±\©¨·Ãk£ƒNfÊÜ/éÌ¢uʆsó1gC/X CÀ0 0ÆlCÁ0 CÀÈ"Œ1gQgXU CÀ0 ‹Ê¶1`†@ðOF,-*ï‘Ày@`·ŠþÎ3J•EÃÎ CÀ0 ÒE ÇLÙ¥ÛVº!`†€! c̹à°†€!`†@é"`Œ¹tñ·Ò CÀ0 \ü? 0,•Á†IEND®B`‚mysql++-3.3.0/doc/html/refman/options_8h.html000644 000765 000024 00000056324 14042362131 021562 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: options.h File Reference
MySQL++  3.3.0
options.h File Reference

Declares the Option class hierarchy, used to implement connection options in Connection and DBDriver classes. More...

#include "common.h"
#include <deque>
#include <string>

Go to the source code of this file.

Classes

class  mysqlpp::Option
 Define abstract interface for all *Option subclasses. More...
 
class  mysqlpp::DataOption< T >
 Define abstract interface for all *Options that take a lone scalar as an argument. More...
 
class  mysqlpp::CompressOption
 Enable data compression on the connection. More...
 
class  mysqlpp::ConnectTimeoutOption
 Change Connection::connect() default timeout. More...
 
class  mysqlpp::FoundRowsOption
 Make Query::affected_rows() return number of matched rows. More...
 
class  mysqlpp::GuessConnectionOption
 Allow C API to guess what kind of connection to use. More...
 
class  mysqlpp::IgnoreSpaceOption
 Allow spaces after function names in queries. More...
 
class  mysqlpp::InitCommandOption
 Give SQL executed on connect. More...
 
class  mysqlpp::InteractiveOption
 Assert that this is an interactive program. More...
 
class  mysqlpp::LocalFilesOption
 Enable LOAD DATA LOCAL statement. More...
 
class  mysqlpp::LocalInfileOption
 Enable LOAD LOCAL INFILE statement. More...
 
class  mysqlpp::MultiResultsOption
 Enable multiple result sets in a reply. More...
 
class  mysqlpp::MultiStatementsOption
 Enable multiple queries in a request to the server. More...
 
class  mysqlpp::NamedPipeOption
 Suggest use of named pipes. More...
 
class  mysqlpp::NoSchemaOption
 Disable db.tbl.col syntax in queries. More...
 
class  mysqlpp::ReadDefaultFileOption
 Override use of my.cnf. More...
 
class  mysqlpp::ReadDefaultGroupOption
 Override use of my.cnf. More...
 
class  mysqlpp::ReadTimeoutOption
 Set timeout for IPC data reads. More...
 
class  mysqlpp::ReconnectOption
 Enable automatic reconnection to server. More...
 
class  mysqlpp::ReportDataTruncationOption
 Set reporting of data truncation errors. More...
 
class  mysqlpp::SecureAuthOption
 Enforce use of secure authentication, refusing connection if not available. More...
 
class  mysqlpp::SetCharsetDirOption
 Give path to charset definition files. More...
 
class  mysqlpp::SetCharsetNameOption
 Give name of default charset. More...
 
class  mysqlpp::SetClientIpOption
 Fake client IP address when connecting to embedded server. More...
 
class  mysqlpp::SharedMemoryBaseNameOption
 Set name of shmem segment for IPC. More...
 
class  mysqlpp::SslOption
 Specialized option for handling SSL parameters. More...
 
class  mysqlpp::UseEmbeddedConnectionOption
 Connect to embedded server in preference to remote server. More...
 
class  mysqlpp::UseRemoteConnectionOption
 Connect to remote server in preference to embedded server. More...
 
class  mysqlpp::WriteTimeoutOption
 Set timeout for IPC data reads. More...
 

Typedefs

typedef DataOption< unsigned > mysqlpp::IntegerOption
 Option w/ int argument.
 
typedef DataOption< bool > mysqlpp::BooleanOption
 Option w/ bool argument.
 
typedef DataOption< std::string > mysqlpp::StringOption
 Option w/ string argument.
 
typedef std::deque< Option * > mysqlpp::OptionList
 The data type of the list of connection options.
 
typedef OptionList::const_iterator mysqlpp::OptionListIt
 Primary iterator type into List.
 

Detailed Description

Declares the Option class hierarchy, used to implement connection options in Connection and DBDriver classes.

This is tied closely enough to DBDriver that there's a pure-OO argument that it should be declared as protected or private members within DBDriver. We do it outside DBDriver because there's so much of it. It'd overwhelm everything else that's going on in that class totally out of proprortion to the importance of options.

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SetClientIpOption-members.html000644 000765 000024 00000015344 14042362131 027605 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::SetClientIpOption Member List

This is the complete list of members for mysqlpp::SetClientIpOption, including all inherited members.

arg_mysqlpp::DataOption< T >protected
ArgType typedefmysqlpp::DataOption< T >
DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SetClientIpOption__coll__graph.png000644 000765 000024 00000013054 14042362133 030463 0ustar00tangentstaff000000 000000 ‰PNG  IHDR‘‰,]ÚÕsRGB®ÎéæIDATxí] ÔMU~?D J£T†SõgHa¥A¬”Fs(‘¨…´Vµ´2ôKš,S¦ÊZ(%¥B2}”Y‘O“†¯T2}TûŸWû®ssî¾—ûÝÿ^÷ÝkùÎ9{ï³ÏÞÏ~öû¾ûÜë>9†iRŽ"Gq¯ÞªJ"%ÂQ# $:jµb©„ààÁƒT¼xñT>2+ŸõÝwßÑYg•²±§œD%K–¤½{÷¦l€Ùö ºuëRªI¤î,ÛXVãU¨ÙÖ¤’(Ûf¼Æ›u$Ú·o-Z´(©P~ùå—4~üx=z4-\¸â}»gÏž¤÷%©‹³±¬#ÑŽ;¨sçÎqÂã®6dÈjÑ¢-[¶Œ¾ÿþ{êß¿?5iÒ„vïÞzó}÷ÝG+V¬ ]»vÑüùóCëeL>öHUâ•gxwóq_}õ•áI0­Zµ2+V4ƒ6M›65gœq†9r¤ùé§ŸL5 ÚB1b„yòÉ' OŠiذ¡9õÔSMÏž=¥Œw)¦Q£F¦R¥J¦C‡¦k×®fëÖ­¦råÊR~ùå—›nݺ™ÓN;ÍÜrË-Òæ«¯¾jÚµkgjÖ¬)÷Í™3GêNŸ>Ý<úè£rÞ¯_?óú믛7šN8Á01%ßþAÿŸ~úiÔÖ„ L©R¥Ì9çœcV®\)ãÄ}‹/6—\r‰9餓 “Üðë3mÚ4Ó©S'ƒ~ò–ÝŒ7Î>"ôX§NÄ-/Œ‚´³Dôá‡RóæÍé‰'ž PË–-i̘14lØ0â §bÅŠÑ| õµ×^#™ DíÛ·§åË—OÁÅ >œ˜ˆÒÞ·ß~Kß|óMÔâ^³f ñ¤ÑgŸ}FùùùôÎ;ïÐ?þHóæÍ#& =óÌ3ÄÄ‘{Î<óLºð åü¢‹."\ã>œ3Á£Úmܸ1­_¿>°­¶mÛJ™üÄd¢M›6ɽ}ûö ùþûïËàûí7š5k;V,ÜСC£ž“6…Á̰6ã±DXÝeÊ”‘•ÈîAVíÄJ)RDšÆ*ïÒ¥‹¥)W®œaâ™Þ½{žPóì³ÏšíÛ·K½êÕ«›ÜÜ\9Ÿ:uª¹îºë¢,“ÑüðÃR ѱcGóÔSO‰u’Lþ+öõ×_Û˨ãĉÅ*FeòE=Äò…µËÊdKV­Z5óóÏ?‹5´í¼ð æþûï7¼p / Éþý÷ßVÕý»´`=`m˜4Ä;EצMš;w.½õÖ[tÓM7É[pv{„ÕüñÇ‹Å`"¬» ¹·D‰QmØ‹Ob¤Ç{LÊ'½ùæ›b)qaq'õêÕKb« *„¶…ñÛÎ;¥Ú‚ã?<ïüóϧ_ýUbB)ôü±ýöd¥Ç©8Üý‰'&Š·+ص!ò&ìÜüñ »Ù=½ûî»yë#&B¼Åw$q “ÅüòË/æÏ?ÿŒä»NØuì,½)V[4{«Êùþýû [1Ãä>¬,ÞŒÿGL”Ò`“µlxàÂ.ÿ¼ ;7*Z´¨ìž° Jˆ»lÜä-?å”S¼—Îó³Ï>;´NP[ÞXÉÞˆ¸ V1ÓRžªNãÓûòåËõ§ølq¤$Þ„ÏçÝ\ä¶6ÒN$ƒOì7 °ý>ڔ̶âí >Åç÷i„cªRFZ"o$vx^á^ÚŸ’AÛf2Û²m¦ã1£ëtPûįR ¬¶°i»Ëð‘“S„J–¼„öïÿ‚·ð|¥é{+>+Œ^§ÔDÁ2åßڵ߰ lJ3f,ɘ>ÛT~5¤L)‰ cf›3f¬à7ÅEhòä%…ù˜Œo[Ic gÎÌåþ¡5k¾åƒ{bÔÌî"%QÈü/_¾ ô·”âs«9s> ©©ÙJ¢LºŒßú|kïÞš4éÓšš­$ à\ØÜ¹k"ª¢J^^>èú[@mÍRp`áÂÍT´¨šBŒ¤épüH^# s¦LYÆß(ˆyAÁA‚‹Ót8J"&ûöä¯vl üX~þnÚ²å'ßz™Ò7Ö™wnnüEeË–”îâ;GEŠà{L9²ÝŸ?=U©rè»B™0žTô1¥Ÿâ§b@ÉxÆÒ¥_ ‘ÐV÷î“hèÐ[ùÍõ!R5hP™¿®ÿ·’ÑŸtoC-QÀ Õ¯A$·xñ¢â”/è»Î‘=‰  1Q =9R”Däy¾Úí¨ÅJ"Ǽó×y§æ¨”åÅJ¢,'@2†¯$r Wvh‹ï¨˜ÅÅJ"ÇäÕÁ¥i G@Iޖĉ€’(N ´Z8J¢pl´$N”Dq¥ÕÂP…c£%q" $r¥o¬q±’È‘¾±v¤$r¤5ܨ%rc¤5(‰ácý?6HJ¢ØøÈ'øú)~l”D±ñÑÒ8P9@Ò-¾ .V90Ò-¾ %‘ ­áF@-‘#ug€¸XIäÀHÝ™ %‘ ­áF í,QŸ>}ä‡Añã éðoÛ¶Ù,urZôxÔªUË=«)®‘v$‚NÔƒÒåÇAwïÆïH‹þ°ä„h ¥˜#ÎÇ¥‰œ=Ö i‡€’(í¦$ó:¤$ʼ9K»g쯂°¬“h˜A„z±A:^´,X@W_}µ¨4zó]çxÔ¡Õ =3´c< š³,wEVŒ/ž{2±NFZ"ÈNA qÕªUüÓkˆU¨#ÒàW\q…()ú'j† D"  PWd]Yb Vþâ9tå•Wò/ìψٌíW¯^³î1QÈ» ´J7ÜpƒáÝYÌ>Aœµ_#uXöR$Æ!¾Ë“"âx¬ˆ(bÃ<¡†Õ­E&Bx=ôHž³®˜aVÃD”vžþysî¹çʽ7ÿâ‹/Ìí·ß.õ#â“E‹‰Ð1î‚$ѽ}€ì9„óFmXsð3£F’¼°¾HaÀB =ݶ®i•â!¤¡GIg=Ãä2†]»v(VCÝšô¬%b^|ñEƒ|ÔåéÛn»M›¡’x×]w™®]»¨ ¢|ÅŠRDd¹rÃZ³†‹£ða½Xi—_E(7öïßß@5›­¡aýWy–íÔ¤»uëfXßUÚG?An–@UÇ ¾D=Ìw‘®$ÊHwvúé§‹/ô]¡cß²eKâO,…./­²s‹-ˆ'Qò½nÚ°ÐZ…Ž,«!2|ýõ×ÜêÛ˜ŠÐ~}Vð/^\š|ðÁ¥~§NDûÕßT‚B$b)èÕB«¶AƒÄr¢r¿¿/’™a2’DC† !Ä+;võgÈ›óª? ú 9OTòË„oÙ²…Ž?þøÈý'Ÿ|²œC²Ü/ÊîLª­”•áôJ¢Gú÷¶7ðljf’d¹<þëŒ$d;9."vk2vW¢ mç• ·y±ŽÕªUEiì¤ WÎñT‡u™9s¦ä!åǧ{ï½—,ýÐI¢£®·°@¨‡~BézÙ²e"»ŽzÇBÊÈ-þ=÷ÜC,‹ì8D€¡kÿÒK/É|@.®éî»ï׿š$|uóÍ7Ëîd‚•*]º4KT£¶mÛÊÖ;AŽc(??ŸÚ´iC°„HVÒêp¡ãÇ—|ÛŽyäúâ‹/¦ÆòBDØùó¸ÃEÑ—ŒL¾Øíÿ~O`m;‰€Ø+GŽ|¶ I‘ãž¼¼<3yòd‘7ç˰ë1¬‰"I8g e˜,6KŽA’è(ëv‡]?Ò¤u!,1Ä#~9rXóÄûH(ÂM5iÒ„*W®LpcÞ çxa åOA’èa}€´yò·™i×éÎ’ 2dEyKO[·n·¤côLÄd66 *Ï–<%‘g¦a…IÞW"÷ku3rwv¬MB¦'í,QÕªU‰?ÒH \ÓQÒ¼fÍši·*ãEÃw¾~ý÷ü ÿÒÈ‘wñÖþ?¾R½´¨;³HUÒ<”€,%Q(6K%Í-±J¢|TÒ<˜€l%Q(ÈRIó`²•D ¨¤y(1²”Dਤy(1²”Dਤy(1²”D>pTÒÜH—i÷Æ:Ž>j•4O^}c€™Jš€#K-Q8*iJŒ,‰b€£Eñ! $rà¤?·çˆ‹•DŒôçö)‰Üi 7j‰áñÀ¥i G@IŽ”¨¤¹ .V¹1Ò”D€´Ø€’È‘Öp  $r¤Ån”DnŒ´†%‘ ÞÞgêu8†–´b%‘J}c툋•DnŒ´†%‘ -v# $r`„xHc¢Ø )‰b㣒æ|P¬$Š$­%Ql|ä|ug±ARÅÆ‡!ÖˆKsTËêb%QVOr¯$rà¨ß±vÄÅJ"FêÎ)‰Üi8ðþº;+ Š^ߦÇ1(]º¦ÉÉ9NñðpbàÀ^Ú˜¨ÿ ™ÊvíÚ‰zOüÓ*YˆÀÂ… S“Ô˜( ‰ì!+‰’h¶§$ÊÂIOö£b¢d7~$í±6+A=(^‘×3 ˆÈÚ®"à yÎråʹn‰”ãÞ•+WŠD襗^*’Ÿ(„î4ÎJ•*ETgQâÈ=‰ž¬[·Ž*V¬³_P†ê6kÛk×®M%K–ŒëQ‰ŠÞÄÕ¨¯RÚY¢éÓ§¸ùú÷%„J"”AÎ^½z )Â@ýaÆI1k“Q=DוõÎhÖ¬Yr?ÎAJåGH&š ‘¾iÓ&¹ ç±Ú‰¡ åÆ={öÐìÙ³E§réaÉ;Ž7 ùÂê&#?aKÅÃ%K–ˆ %V*D|04MY™™rssE ªƒÄߢ+?eÊQK„%@=Vz–‰€ÆGŒ!‚¸þ„Ø/ •jÈvâ9Õ«W·ó&ÇFɘm&K•‹k kcüä“OdÂî¼óNš6mšóAVÎëZƒÆ åkü™½ î,//`±PZµj% ‹™Õ(£Æ1Ãõ®ZµŠ6oÞLÏ=÷œèÏb!AD9r¤hÔZ<½Ïs'L"4 P£F ñÍ8Ús qÇŽ;\ Àà Žá`u@: “@®ºê*ñõþÎBõѳ«:¬Ðƒe(/”©meϱâàvÚ·o/–„e™N‰/@8Ö³'¸-´µaÃ!'ToÀbÜxâ• öp/¬'´_›5k&nRèéÃBðk¾†ß›@ô Ê“À¯R¥JT¯^=YxhÛŽÃÞœ ‹E ]ŒÄE@pÄZˆûw%šŽˆDV7@—-[6ê™ fxéÒ¥òÀäŽ5Jôé±`@*¯”%€õ'¯ 'Ì1,’ÍGÛ°4uêT±> Ô«!ŒÕ  2Ü$þ5mÚ44Û¶@|X1o‚kûõ§XíÙîš_óúoº¶ãB&Æ| ¬ˆ7}þù粸ç¿Çbä­sôÑkù`=m飿]\‰‚òæ8ˆ ÐŒÉ€–ü¼yó$æÁd թS‡°3Á``a õíO ŠÏŒ±Òá0¹¸« + mÁZyÏ1 p™°H òêÖ­+qÜ(¬úƒIC²ÇæÍ›‹+‚›CBàšïO±Úó×µ×ö9öGÿxaÁ¬û‡KBBh€ ñÒöíÛÅ…¡{$ûðXØÀ ã…•¶–[n8Š? Ö±žeÍ3 xL|:â™b¸)ÈeÂÕ@CÞ®Ô·íÀZÁô"ö@ †|¬ž1cÆaÊ”)CýúõÃ-r„_G›ÈÃ9&€AÞV„ìÓ§eBá*`"ŽÂ*†+†49\"ú‰Àu0IˆÍ°0lq޼ öWy“½‹aðàÁ4cDo /â4XP`‰IG»té". ¤¥B¿°€@ Ñ%J”ˆŒÃ¶ß°aCYØDÀöíÛ×EŽèŸíc$3Ž“¨Ÿ †•@”&!–@gLjUË—gag¢`2‘»`ò`)Pß’ ®ç½÷Þîu‡¶½ #·ç¯|X§ *Dnà F_mAZ ul©ì; jÏW%r‰º^W6^{ê#~C dÅ‹A"ìð ¤qX‚ãÿ8l;pkX|O›ï»;,L¼j°)©–bõa›ˆ Î;(¸‘ —r^?m;å=•cµø á½ÇŽÉòN˜-Ê÷ÏñãIAí…ÝÔÔ /òcµ Â[Ò£.’‡r)!Üì=®cÒ-\VÞ:'’°Ò°:ì*³Û}»m·mÁr…mëdâ1l¼±Æ‚Ðn,Œ±î=Ò²”X"øèD „ùð“ÇúX$Æ6^;î #œ· z…W(»³Âî´¶ŸfpàIë7õŒžo02Uñð³1*&J3~kw2ug2QéÜM%Q:ÏN†ôMI”!•ÎÝüEWºáOÁþIEND®B`‚mysql++-3.3.0/doc/html/refman/functions_func_e.html000644 000765 000024 00000016405 14042362131 023013 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
MySQL++  3.3.0
mysql++-3.3.0/doc/html/refman/type__info_8h.html000644 000765 000024 00000022650 14042362131 022215 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: type_info.h File Reference
MySQL++  3.3.0
type_info.h File Reference

Declares classes that provide an interface between the SQL and C++ type systems. More...

#include "common.h"
#include "exceptions.h"
#include <map>
#include <sstream>
#include <typeinfo>

Go to the source code of this file.

Classes

class  mysqlpp::mysql_type_info
 SQL field type information. More...
 

Functions

bool mysqlpp::operator== (const mysql_type_info &a, const mysql_type_info &b)
 Returns true if two mysql_type_info objects are equal.
 
bool mysqlpp::operator!= (const mysql_type_info &a, const mysql_type_info &b)
 Returns true if two mysql_type_info objects are not equal.
 
bool mysqlpp::operator== (const std::type_info &a, const mysql_type_info &b)
 Returns true if a given mysql_type_info object is equal to a given C++ type_info object.
 
bool mysqlpp::operator!= (const std::type_info &a, const mysql_type_info &b)
 Returns true if a given mysql_type_info object is not equal to a given C++ type_info object.
 
bool mysqlpp::operator== (const mysql_type_info &a, const std::type_info &b)
 Returns true if a given mysql_type_info object is equal to a given C++ type_info object.
 
bool mysqlpp::operator!= (const mysql_type_info &a, const std::type_info &b)
 Returns true if a given mysql_type_info object is not equal to a given C++ type_info object.
 

Detailed Description

Declares classes that provide an interface between the SQL and C++ type systems.

These classes are mostly used internal to the library.

mysql++-3.3.0/doc/html/refman/inherit_graph_28.png000644 000765 000024 00000007534 14042362133 022445 0ustar00tangentstaff000000 000000 ‰PNG  IHDR˜%¾– ŠsRGB®ÎéIDATxíœ ÔVSÇwƒÌ B†Ò©”™Dƒ³H©%cÖJæ*•4«–i- K¨4¡(C¦È‘™"S™ÇŒÒùöoÎužÛ}Þž)ú¾u÷ZÏûÜ{îöÝgÿ½Ï³Þ NIRJ%°n$°¤âº™75•À%*Xª ëT©‚­Sñ¦“ ÌÓ¼yóÀcé'•AÁ:ðúë¯{uâ{q†S“ té'•AÞ:püñÇ‹*X†ÛÎP°Œ'éM*H U°1"»RË.›ôI $P¹s”tŠ×^{M¶Új+ÙvÛm‹ž÷£>’·Þz+š§Zµj²÷Þ{ËFmµÅ/~ÿýwyøá‡¥U«VR½zuY¼x±ÌŸ?_ªV­*Gu”lºé¦ñ!ÿÈý’%K¤R¥J²õÖ[Ë3Ï<­Y¯^=iÔ¨Qt¿øùçŸå¥—^’<0þè¹_ï<ØÕW_-?þxI^þ¾ûî“Þ½{Û†°)7Ýt“Ô¯__–-[–uþ3Ï}úH»vídõêÕ‰ÓüðÃ2wîÜÄg4¾òÊ+rÚi§e}^ôƒ0§4hÓ,2lZãú®»îr'œp‚Ûwß}]“&MÜõ×_ïvÙe·ÓN;9}a¯cã~ùå·ûî»»¯¿þÚ]tÑEn»í¶³ûE‹Ùók®¹ÆÕ®]ÛtÐAîðÃwê½ÜÉ'Ÿì&Nœèn¹å×­[7ë_VVæTYlÌ>ûìãT œZ²ëܹ³S µöC=Ô½ûî»××]wëÚµ«µù?uêÔq³fÍrº!®ÿþ¶>s>÷ÜsnÊ”)N=•«[·®{ì±ÇÜf›mæ¾øâ ?Ô}ûí·nèСv¯^ÍÞ¿FN7ÈýñÇîÎ;ïtW]u•=ÿòË/]›6mìºE‹î /tÛl³kÛ¶­ûî»ïÜ9çœc¥Þ;‰>ñĶÆn»ífs1Â-\¸Ðñž~ûí7§Ù½üòËî“O>q|°SOíTéÜÇìÞÿ}×±cGëžÄGãÆÝÆoìèV¬XáŽ;î8W«V-×¾}ûèÝáù²Ë.³6¿nÒ·*¾›ø ¨²HÅŠåŽ;îHä>Ï>ûlQ#“n¸!#Ô3×=÷Ü#ðî¹ç ¡_ Y®½öZQå^xÁxÅcÿúë¯æ}a$‰Q£F‰*°\rÉ%¶ðM \pÁÿªØ2xð`»ÏçOA!’x®Ö j¡†Uüõ§Ÿ~*‡v˜¼÷Þ{¢Öd›×¥K KjMöà…ñãÇÛK0®uëÖ¢&;ï¼ó|ž6l(ÌñÓO?E¡Wo(Ý»w eõ¸-¼†§Ù³g/ê Wm¾ùæf$ê ,Ô€¯ØxõV²á†Ú†a+W®\ƒ'PlW½’`Pgu–mxbgm¬P¡‚¨°w$œ-_¾\àv”ƒó²`ÁãFÞêé¢éÁU·Þz«…kxöÙgMY16ÖiР/JR(çl` êe9í˜bF~Í— ùX6„n±Åk²A€a<‹Õ²ñà…I“&™ÅiH”]wÝÕ„ê3.N€lO€o6òí´1Ê#¼¬†>ë‚iø 6Ðüý÷ßÛ3 Ìlº'°ÃÐ0nÍ(U³fÍìÝP Ox›U«Vù[ûÆ›…¤áÖn+W®lÌðY/x)d‹Œ!ÁIМ9sü­}k\²wÚrË-í>‰'¬…=&òDrQäÁÖ¶‡0ƒ»VlfÖ 8ÆãÖqÁX$JÇÆºqßq"ì ¨_|Ñ,Ì[GÈb.,;~m ý©Y³¦ñCxVŒa–{饗h&„† †ç„Ã3›ÇzŠÙDñ§µ£˜d˜x9 éC1%@)éKèÌ…II¼àÝüñG«Œ£lÀò/£8T_Z7ä O¹<@ðç``Þƒå2G¶>%U0^By°`6ÂcáÑP†“N:Ép¡rÏ=÷™f½eÑßσ÷ÀÝ+p•~ýúY; þA|ðôêÕ‹!–á-]ºtkkþàý?ðÈ:ø<zQ<Çm·Ý&”:0”†B2N"ã oŽgdsáåÂãÝ{ï½kx*Ø`¬?Â+™i/ ¼E·(ÀÖ€7?Ö^Ë.Ï?ÿ|ѤKvØaÃÃ=zôˆw‰îý\ÈHÃZgœq†y{”‹l|ç)ÛšþyÖïòç’E†ý³]«ÅY&f`*x÷Æo8Ã4ìY›†§=2dˆeyd jÉQ»†§¡Ñ©×‹Úй Óbòˆçá»ø¾¼ Yš*½o²o²Í\H=GÆ»%ñBf·6þâk©¡™ŒâíÙî‘g¸/dãìa¾””E„Á²j«> ®râ‰'šGã6Á‡³p¼Ç a[xçˆsŠKAÛo¿ýZ§IâAx¡ „°v,Œ´7î«ÆI•iªô¤â„g¬qæÌ™Ò8“ÃpOíB¤ ÝÎÉ *8ó&¤ãÔ³+ñ:aúš¯ÂsHÁ×ëàiɆñD”_˜‡b(¸0Ï(ðþ„3¼ !4$<ˆ&=aSÎ×ÈŽÓÞ‘L,Ôc5dŠ<ýGö„Œ”b0²£¯*¾Õ*}aš…‰ „käÔ¡CyôÑGsæ§¼Ž%W0*àÔ“ØdB)0+èyŸ•FmŠ€2€ÙÀ"ôe,XÎW“*Ón6“ãpÇ8BópLBZïk8„0RnÂ%„“Š›„Š÷yAqtDqlE ‚2†'”‹ÃpxWŸqÁû±ñl6’‚3†Æ;BCb3ãà:|^Þ5ЄÚu@Âu˜ð`0{ì±Gôñ‰2§–†q„D™(ä‰Â*GxÈCÕ³cKÊxÏbèoÐSÌ,ÁX€,õ-eã}¥œšÅ7 ”c züJ!NdŸxæð˜+¬LSÈEÀl×hŠ…=ù D/ç3YŽùÀ!x$”11§†aõ¡÷òýQTæÅ y«êÁ³èa±)…f6—MDüHòÍKà1@Î ¡ÓO?Ý<c™~9~ƒÈÔ"صÿÃO}ðÄœVð3$¢F î¥öǹ2²S8`†ŠAJ%ó`X*a‹ÀsPY瀙b(ÖCè! òaC(À"hÈW“ý‹ <Ù*Ó¼0‰×ÿPy'Á¸üòËÍëQ…ÄOoð0´Ó—ì3à°×«ç]r!B#Í'þ /EòÃ5›†A±¹ðlðÄûûkçJd´(1ò‡0D?ß´—••™×¢Øá’P°ñ¬ù`x7¼7iàM1T´‚«`”šÐÈ‘#Í’ðTX8›ˆµSY¦‚`ÃxÎ5¡AöÅ/2ü/#P.([ešcÀQ¾FuÅW˜÷ TBè@PŸ‹k<Ƹqã,l3ž>á}}ø$Åç¸È·1G6¢Þ¯†÷äþ€›MB`æÅË¢xyB>x:>xÏ\ 8‚üQøäôÁÏÃ7¡½A>x6䃱'ì'J+`c¼?Fˆœ õ°~N¾+1ø~…€ð]*hcͼ'ý­”YQئ™Ž ‚è8ãèbÀ* ú˜cމºc± ·Î¨SpÁ«óÉ¥o0¬ÜK<µ1~WLdA˜.S‚NÞâ„×ñôá3Þ Ã,†0(ÖGùBÂk"‡8ÏaŸµ]Høþ‹–”ƒù™ý7–É'$‹Â¶¤š—¯LÀPü~+$"f®„0‹hÒ:l\6BYày’”‹9á)î~°øëÛòýÎÆ[’aç;wRÿu®`I‹ÛÆA²ÏŽŠk}ÏfÇËë#Ÿ¹ðT4Ëe‘R÷ùV®RËêßžïRÁþm¡¥ëç!@¾§yéÿ¦°c_ú]  âÿ›"#‹ÌC/Ó®©r‘@úèr‘RÚ§p ¤¬pÙ¥#s@ª`9)íR¸þ{“`„àIEND®B`‚mysql++-3.3.0/doc/html/refman/query_8h_source.html000644 000765 000024 00000377715 14042362131 022626 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: query.h Source File
MySQL++  3.3.0
query.h
Go to the documentation of this file.
1 
4 /***********************************************************************
5  Copyright (c) 1998 by Kevin Atkinson, (c) 1999-2001 by MySQL AB, and
6  (c) 2004-2011 by Educational Technology Resources, Inc. Others may
7  also hold copyrights on code in this file. See the CREDITS.txt file
8  in the top directory of the distribution for details.
9 
10  This file is part of MySQL++.
11 
12  MySQL++ is free software; you can redistribute it and/or modify it
13  under the terms of the GNU Lesser General Public License as published
14  by the Free Software Foundation; either version 2.1 of the License, or
15  (at your option) any later version.
16 
17  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
18  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
20  License for more details.
21 
22  You should have received a copy of the GNU Lesser General Public
23  License along with MySQL++; if not, write to the Free Software
24  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
25  USA
26 ***********************************************************************/
27 
28 #if !defined(MYSQLPP_QUERY_H)
29 #define MYSQLPP_QUERY_H
30 
31 #include "common.h"
32 
33 #include "exceptions.h"
34 #include "noexceptions.h"
35 #include "qparms.h"
36 #include "querydef.h"
37 #include "result.h"
38 #include "row.h"
39 #include "sqlstream.h"
40 #include "stadapter.h"
41 #include "transaction.h"
42 
43 #include <deque>
44 #include <iomanip>
45 #include <list>
46 #include <map>
47 #include <set>
48 #include <vector>
49 
50 #ifdef HAVE_EXT_SLIST
51 # include <ext/slist>
52 #else
53 # if defined(HAVE_STD_SLIST) || defined(HAVE_GLOBAL_SLIST)
54 # include <slist>
55 # endif
56 #endif
57 
58 namespace mysqlpp {
59 
60 #if !defined(DOXYGEN_IGNORE)
61 // Make Doxygen ignore this
62 class MYSQLPP_EXPORT Connection;
63 class MYSQLPP_EXPORT Transaction;
64 #endif
65 
120 
121 class MYSQLPP_EXPORT Query :
122  public std::ostream,
123  public OptionalExceptions
124 {
125 public:
126  // Bring in InsertPolicy template as part of this class's interface,
127  // separate only in the sense that it's a self-contained concept.
128  #define MYSQLPP_DEFINE_INSERT_POLICY_TEMPLATES
129  #include "insertpolicy.h"
130  #undef MYSQLPP_DEFINE_INSERT_POLICY_TEMPLATES
131 
139  Query(Connection* c, bool te = true, const char* qstr = 0);
140 
148  Query(const Query& q);
149 
151  ulonglong affected_rows();
152 
167  size_t escape_string(std::string* ps, const char* original = 0,
168  size_t length = 0) const;
169 
191  size_t escape_string(char* escaped, const char* original,
192  size_t length) const;
193 
198  int errnum() const;
199 
204  const char* error() const;
205 
208  std::string info();
209 
220  ulonglong insert_id();
221 
226  Query& operator=(const Query& rhs);
227 
246  operator void*() const;
247 
255  bool operator !() const { return !operator void*(); }
256 
264  void parse();
265 
275  void reset();
276 
280  bool result_empty();
281 
283  std::string str() { return str(template_defaults); }
284 
298  std::string str(const SQLTypeAdapter& arg0)
299  { return str(SQLQueryParms() << arg0); }
300 
305  std::string str(SQLQueryParms& p);
306 
317  bool exec() { return exec(str(template_defaults)); }
318 
330  bool exec(const std::string& str);
331 
348  SimpleResult execute();
349 
358  SimpleResult execute(SQLQueryParms& p);
359 
376  SimpleResult execute(const SQLTypeAdapter& str);
377 
382  SimpleResult execute(const char* str, size_t len);
383 
409  UseQueryResult use();
410 
421 
439  UseQueryResult use(const SQLTypeAdapter& str);
440 
450  UseQueryResult use(const char* str, size_t len);
451 
473  StoreQueryResult store();
474 
484 
502  StoreQueryResult store(const SQLTypeAdapter& str);
503 
513  StoreQueryResult store(const char* str, size_t len);
514 
525  template <typename Function>
526  Function for_each(const SQLTypeAdapter& query, Function fn)
527  {
528  mysqlpp::UseQueryResult res = use(query);
529  if (res) {
530  mysqlpp::NoExceptions ne(res);
531  while (mysqlpp::Row row = res.fetch_row()) {
532  fn(row);
533  }
534  }
535 
536  return fn;
537  }
538 
546  template <typename Function>
547  Function for_each(Function fn)
548  {
549  mysqlpp::UseQueryResult res = use();
550  if (res) {
551  mysqlpp::NoExceptions ne(res);
552  while (mysqlpp::Row row = res.fetch_row()) {
553  fn(row);
554  }
555  }
556 
557  return fn;
558  }
559 
570  template <class SSQLS, typename Function>
571  Function for_each(const SSQLS& ssqls, Function fn)
572  {
573  std::string query("select * from `");
574  query += ssqls.table();
575  query += '`';
576  mysqlpp::UseQueryResult res = use(query);
577  if (res) {
578  mysqlpp::NoExceptions ne(res);
579  while (mysqlpp::Row row = res.fetch_row()) {
580  fn(row);
581  }
582  }
583 
584  return fn;
585  }
586 
606  template <class Sequence, typename Function>
607  Function store_if(Sequence& con, const SQLTypeAdapter& query, Function fn)
608  {
609  mysqlpp::UseQueryResult res = use(query);
610  if (res) {
611  mysqlpp::NoExceptions ne(res);
612  while (mysqlpp::Row row = res.fetch_row()) {
613  if (fn(row)) {
614  con.push_back(row);
615  }
616  }
617  }
618 
619  return fn;
620  }
621 
633  template <class Sequence, class SSQLS, typename Function>
634  Function store_if(Sequence& con, const SSQLS& ssqls, Function fn)
635  {
636  std::string query("select * from `");
637  query += ssqls.table();
638  query += '`';
639  mysqlpp::UseQueryResult res = use(query);
640  if (res) {
641  mysqlpp::NoExceptions ne(res);
642  while (mysqlpp::Row row = res.fetch_row()) {
643  if (fn(row)) {
644  con.push_back(row);
645  }
646  }
647  }
648 
649  return fn;
650  }
651 
661  template <class Sequence, typename Function>
662  Function store_if(Sequence& con, Function fn)
663  {
664  mysqlpp::UseQueryResult res = use();
665  if (res) {
666  mysqlpp::NoExceptions ne(res);
667  while (mysqlpp::Row row = res.fetch_row()) {
668  if (fn(row)) {
669  con.push_back(row);
670  }
671  }
672  }
673 
674  return fn;
675  }
676 
703  StoreQueryResult store_next();
704 
716  bool more_results();
717 
734  template <class Sequence>
735  void storein_sequence(Sequence& con)
736  {
737  storein_sequence(con, str(template_defaults));
738  }
739 
753  template <class Sequence>
754  void storein_sequence(Sequence& con, const SQLTypeAdapter& s)
755  {
756  if (UseQueryResult result = use(s)) {
757  while (1) {
758  MYSQL_ROW d = result.fetch_raw_row();
759  if (!d) break;
760  Row row(d, &result, result.fetch_lengths(),
761  throw_exceptions());
762  if (!row) break;
763  con.push_back(typename Sequence::value_type(row));
764  }
765  }
766  else if (!result_empty()) {
767  // Underlying MySQL C API returned an empty result for this
768  // query, but it also says it should have returned
769  // something. Reasons it can do that are given here:
770  // http://dev.mysql.com/doc/refman/5.5/en/null-mysql-store-result.html
771  // Regardless, it means the C library barfed, so we can't
772  // just return an empty result set.
773  copacetic_ = false;
774  if (throw_exceptions()) {
775  throw UseQueryError("Bogus empty result");
776  }
777  }
778  // else, it was *supposed* to return nothing, because query was
779  // an INSERT, CREATE, etc. sort. So, leave con untouched.
780  }
781 
792  template <class Seq>
793  void storein_sequence(Seq& con, SQLQueryParms& p)
794  {
795  storein_sequence(con, str(p));
796  }
797 
805  template <class Set>
806  void storein_set(Set& con)
807  {
808  storein_set(con, str(template_defaults));
809  }
810 
824  template <class Set>
825  void storein_set(Set& con, const SQLTypeAdapter& s)
826  {
827  if (UseQueryResult result = use(s)) {
828  while (1) {
829  MYSQL_ROW d = result.fetch_raw_row();
830  if (!d) break;
831  Row row(d, &result, result.fetch_lengths(),
832  throw_exceptions());
833  if (!row) break;
834  con.insert(typename Set::value_type(row));
835  }
836  }
837  else if (!result_empty()) {
838  // Underlying MySQL C API returned an empty result for this
839  // query, but it also says it should have returned
840  // something. Reasons it can do that are given here:
841  // http://dev.mysql.com/doc/refman/5.5/en/null-mysql-store-result.html
842  // Regardless, it means the C library barfed, so we can't
843  // just return an empty result set.
844  copacetic_ = false;
845  if (throw_exceptions()) {
846  throw UseQueryError("Bogus empty result");
847  }
848  }
849  // else, it was *supposed* to return nothing, because query was
850  // an INSERT, CREATE, etc. sort. So, leave con untouched.
851  }
852 
863  template <class Set>
865  {
866  storein_set(con, str(p));
867  }
868 
887  template <class Container>
888  void storein(Container& con)
889  {
890  storein(con, str(template_defaults));
891  }
892 
899  template <class T>
900  void storein(T& con, SQLQueryParms& p)
901  {
902  storein(con, str(p));
903  }
904 
906  template <class T>
907  void storein(std::vector<T>& con, const SQLTypeAdapter& s)
908  {
909  storein_sequence(con, s);
910  }
911 
913  template <class T>
914  void storein(std::deque<T>& con, const SQLTypeAdapter& s)
915  {
916  storein_sequence(con, s);
917  }
918 
920  template <class T>
921  void storein(std::list<T>& con, const SQLTypeAdapter& s)
922  {
923  storein_sequence(con, s);
924  }
925 
926 #if defined(HAVE_EXT_SLIST)
929  template <class T>
930  void storein(__gnu_cxx::slist<T>& con, const SQLTypeAdapter& s)
931  {
932  storein_sequence(con, s);
933  }
934 #elif defined(HAVE_GLOBAL_SLIST)
941  template <class T>
942  void storein(slist<T>& con, const SQLTypeAdapter& s)
943  {
944  storein_sequence(con, s);
945  }
946 #elif defined(HAVE_STD_SLIST)
952  template <class T>
953  void storein(std::slist<T>& con, const SQLTypeAdapter& s)
954  {
955  storein_sequence(con, s);
956  }
957 #endif
958 
960  template <class T>
961  void storein(std::set<T>& con, const SQLTypeAdapter& s)
962  {
963  storein_set(con, s);
964  }
965 
967  template <class T>
968  void storein(std::multiset<T>& con, const SQLTypeAdapter& s)
969  {
970  storein_set(con, s);
971  }
972 
983  template <class T>
984  Query& update(const T& o, const T& n)
985  {
986  reset();
987 
988  // Cast required for VC++ 2003 due to error in overloaded operator
989  // lookup logic. For an explanation of the problem, see:
990  // http://groups-beta.google.com/group/microsoft.public.vc.stl/browse_thread/thread/9a68d84644e64f15
991  MYSQLPP_QUERY_THISPTR << std::setprecision(16) <<
992  "UPDATE `" << o.table() << "` SET " << n.equal_list() <<
993  " WHERE " << o.equal_list(" AND ", sql_use_compare);
994  return *this;
995  }
996 
1005  template <class T>
1006  Query& insert(const T& v)
1007  {
1008  reset();
1009 
1010  MYSQLPP_QUERY_THISPTR << std::setprecision(16) <<
1011  "INSERT INTO `" << v.table() << "` (" <<
1012  v.field_list() << ") VALUES (" <<
1013  v.value_list() << ')';
1014  return *this;
1015  }
1016 
1030  template <class Iter>
1031  Query& insert(Iter first, Iter last)
1032  {
1033  reset();
1034 
1035  if (first != last) {
1036  // Build SQL for first item in the container. It's special
1037  // because we need the table name and field list.
1038  MYSQLPP_QUERY_THISPTR << std::setprecision(16) <<
1039  "INSERT INTO `" << first->table() << "` (" <<
1040  first->field_list() << ") VALUES (" <<
1041  first->value_list() << ')';
1042 
1043  // Now insert any remaining container elements. Be careful
1044  // hacking on the iterator use here: we want it to work
1045  // with containers providing only a forward iterator.
1046  Iter it = first;
1047  while (++it != last) {
1048  MYSQLPP_QUERY_THISPTR << ",(" << it->value_list() << ')';
1049  }
1050  }
1051 
1052  return *this;
1053  }
1054 
1067  template <class Iter, class InsertPolicy>
1068  Query& insertfrom(Iter first, Iter last, InsertPolicy& policy)
1069  {
1070  bool success = true;
1071  bool empty = true;
1072 
1073  reset();
1074 
1075  if (first == last) {
1076  return *this; // empty set!
1077  }
1078 
1079  typename InsertPolicy::access_controller ac(*conn_);
1080 
1081  for (Iter it = first; it != last; ++it) {
1082  if (policy.can_add(int(tellp()), *it)) {
1083  if (empty) {
1084  MYSQLPP_QUERY_THISPTR << std::setprecision(16) <<
1085  "INSERT INTO `" << it->table() << "` (" <<
1086  it->field_list() << ") VALUES (";
1087  }
1088  else {
1089  MYSQLPP_QUERY_THISPTR << ",(";
1090  }
1091 
1092  MYSQLPP_QUERY_THISPTR << it->value_list() << ')';
1093 
1094  empty = false;
1095  }
1096  else {
1097  // Execute what we've built up already, if there is anything
1098  if (!empty) {
1099  if (!exec()) {
1100  success = false;
1101  break;
1102  }
1103 
1104  empty = true;
1105  }
1106 
1107  // If we _still_ can't add, the policy is too strict
1108  if (policy.can_add(int(tellp()), *it)) {
1109  MYSQLPP_QUERY_THISPTR << std::setprecision(16) <<
1110  "INSERT INTO `" << it->table() << "` (" <<
1111  it->field_list() << ") VALUES (" <<
1112  it->value_list() << ')';
1113 
1114  empty = false;
1115  }
1116  else {
1117  // At this point all we can do is give up
1118  if (throw_exceptions()) {
1119  throw BadInsertPolicy("Insert policy is too strict");
1120  }
1121 
1122  success = false;
1123  break;
1124  }
1125  }
1126  }
1127 
1128  // We might need to execute the last query here.
1129  if (success && !empty && !exec()) {
1130  success = false;
1131  }
1132 
1133  if (success) {
1134  ac.commit();
1135  }
1136  else {
1137  ac.rollback();
1138  }
1139 
1140  return *this;
1141  }
1142 
1155  template <class Iter, class InsertPolicy>
1156  Query& replacefrom(Iter first, Iter last, InsertPolicy& policy)
1157  {
1158  bool success = true;
1159  bool empty = true;
1160 
1161  reset();
1162 
1163  if (first == last) {
1164  return *this; // empty set!
1165  }
1166 
1167  typename InsertPolicy::access_controller ac(*conn_);
1168 
1169  for (Iter it = first; it != last; ++it) {
1170  if (policy.can_add(int(tellp()), *it)) {
1171  if (empty) {
1172  MYSQLPP_QUERY_THISPTR << std::setprecision(16) <<
1173  "REPLACE INTO `" << it->table() << "` (" <<
1174  it->field_list() << ") VALUES (";
1175  }
1176  else {
1177  MYSQLPP_QUERY_THISPTR << ",(";
1178  }
1179 
1180  MYSQLPP_QUERY_THISPTR << it->value_list() << ')';
1181 
1182  empty = false;
1183  }
1184  else {
1185  // Execute what we've built up already, if there is anything
1186  if (!empty) {
1187  if (!exec()) {
1188  success = false;
1189  break;
1190  }
1191 
1192  empty = true;
1193  }
1194 
1195  // If we _still_ can't add, the policy is too strict
1196  if (policy.can_add(int(tellp()), *it)) {
1197  MYSQLPP_QUERY_THISPTR << std::setprecision(16) <<
1198  "REPLACE INTO `" << it->table() << "` (" <<
1199  it->field_list() << ") VALUES (" <<
1200  it->value_list() << ')';
1201 
1202  empty = false;
1203  }
1204  else {
1205  // At this point all we can do is give up
1206  if (throw_exceptions()) {
1207  throw BadInsertPolicy("Insert policy is too strict");
1208  }
1209 
1210  success = false;
1211  break;
1212  }
1213  }
1214  }
1215 
1216  // We might need to execute the last query here.
1217  if (success && !empty && !exec()) {
1218  success = false;
1219  }
1220 
1221  if (success) {
1222  ac.commit();
1223  }
1224  else {
1225  ac.rollback();
1226  }
1227 
1228  return *this;
1229  }
1230 
1240  template <class T>
1241  Query& replace(const T& v)
1242  {
1243  reset();
1244 
1245  MYSQLPP_QUERY_THISPTR << std::setprecision(16) <<
1246  "REPLACE INTO `" << v.table() << "` (" <<
1247  v.field_list() << ") VALUES (" << v.value_list() << ')';
1248  return *this;
1249  }
1250 
1265  template <class Iter>
1266  Query& replace(Iter first, Iter last)
1267  {
1268  reset();
1269  if (first != last) {
1270  // Build SQL for first item in the container. It's special
1271  // because we need the table name and field list.
1272  MYSQLPP_QUERY_THISPTR << std::setprecision(16) <<
1273  "REPLACE INTO " << first->table() << " (" <<
1274  first->field_list() << ") VALUES (" <<
1275  first->value_list() << ')';
1276 
1277  // Now insert any remaining container elements. Be careful
1278  // hacking on the iterator use here: we want it to work
1279  // with containers providing only a forward iterator.
1280  Iter it = first;
1281  while (++it != last) {
1282  MYSQLPP_QUERY_THISPTR << ",(" << it->value_list() << ')';
1283  }
1284  }
1285 
1286  return *this;
1287  }
1288 
1289 #if !defined(DOXYGEN_IGNORE)
1290  // Declare the remaining overloads. These are hidden down here partly
1291  // to keep the above code clear, but also so that we may hide them
1292  // from Doxygen, which gets confused by macro instantiations that look
1293  // like method declarations.
1294  mysql_query_define0(std::string, str)
1295  mysql_query_define0(SimpleResult, execute)
1296  mysql_query_define0(StoreQueryResult, store)
1297  mysql_query_define0(UseQueryResult, use)
1298  mysql_query_define1(storein_sequence)
1299  mysql_query_define1(storein_set)
1300  mysql_query_define1(storein)
1301 #endif // !defined(DOXYGEN_IGNORE)
1302 
1307 
1308 private:
1309  friend class SQLQueryParms;
1310 
1312  Connection* conn_;
1313 
1315  bool copacetic_;
1316 
1318  std::vector<SQLParseElement> parse_elems_;
1319 
1322  std::vector<std::string> parsed_names_;
1323 
1325  std::map<std::string, short int> parsed_nums_;
1326 
1328  std::stringbuf sbuffer_;
1329 
1331  void proc(SQLQueryParms& p);
1332 
1333  SQLTypeAdapter* pprepare(char option, SQLTypeAdapter& S, bool replace = true);
1334 };
1335 
1336 
1340 inline std::ostream& operator <<(std::ostream& os, Query& q)
1341 {
1342  return os << q.str();
1343 }
1344 
1345 
1346 } // end namespace mysqlpp
1347 
1348 #endif // !defined(MYSQLPP_QUERY_H)
1349 
Exception thrown when an insert policy is too strict to create a valid INSERT statement.
Definition: exceptions.h:457
Manages the connection to the database server.
Definition: connection.h:60
Disable exceptions in an object derived from OptionalExceptions.
Definition: noexceptions.h:120
Interface allowing a class to have optional exceptions.
Definition: noexceptions.h:72
A class for building and executing SQL queries.
Definition: query.h:124
void storein(std::deque< T > &con, const SQLTypeAdapter &s)
Specialization of storein_sequence() for std::deque.
Definition: query.h:914
Function for_each(Function fn)
Execute the query, and call a functor for each returned row.
Definition: query.h:547
std::string str()
Get built query as a C++ string.
Definition: query.h:283
void storein_sequence(Seq &con, SQLQueryParms &p)
Execute template query using given parameters, storing the results in a sequence type container.
Definition: query.h:793
bool exec()
Execute a built-up query.
Definition: query.h:317
Function for_each(const SQLTypeAdapter &query, Function fn)
Execute a query, and call a functor for each returned row.
Definition: query.h:526
Query & insert(Iter first, Iter last)
Insert multiple new rows.
Definition: query.h:1031
void storein_sequence(Sequence &con, const SQLTypeAdapter &s)
Executes a query, storing the result rows in an STL sequence container.
Definition: query.h:754
void storein(T &con, SQLQueryParms &p)
Store template query results into a container.
Definition: query.h:900
SQLQueryParms template_defaults
The default template parameters.
Definition: query.h:1306
Query & update(const T &o, const T &n)
Replace an existing row's data with new data.
Definition: query.h:984
Function store_if(Sequence &con, Function fn)
Execute the query, conditionally storing each row in a container.
Definition: query.h:662
Function store_if(Sequence &con, const SSQLS &ssqls, Function fn)
Pulls every row in a table, conditionally storing each one in a container.
Definition: query.h:634
std::string str(const SQLTypeAdapter &arg0)
Get built query as a C++ string with template query parameter substitution.
Definition: query.h:298
Query & replacefrom(Iter first, Iter last, InsertPolicy &policy)
Replace multiple new rows using an insert policy to control how the REPLACE statements are created us...
Definition: query.h:1156
void storein(std::list< T > &con, const SQLTypeAdapter &s)
Specialization of storein_sequence() for std::list.
Definition: query.h:921
void storein(Container &con)
Execute a query, and store the entire result set in an STL container.
Definition: query.h:888
Query & insertfrom(Iter first, Iter last, InsertPolicy &policy)
Insert multiple new rows using an insert policy to control how the INSERT statements are created usin...
Definition: query.h:1068
void storein_sequence(Sequence &con)
Execute a query, storing the result set in an STL sequence container.
Definition: query.h:735
Query & replace(const T &v)
Insert new row unless there is an existing row that matches on a unique index, in which case we repla...
Definition: query.h:1241
Query & insert(const T &v)
Insert a new row.
Definition: query.h:1006
Query & replace(Iter first, Iter last)
Insert multiple new rows, or replace existing ones if there are existing rows that match on key field...
Definition: query.h:1266
void storein(std::multiset< T > &con, const SQLTypeAdapter &s)
Specialization of storein_set() for std::multiset.
Definition: query.h:968
Function for_each(const SSQLS &ssqls, Function fn)
Run a functor for every row in a table.
Definition: query.h:571
Function store_if(Sequence &con, const SQLTypeAdapter &query, Function fn)
Execute a query, conditionally storing each row in a container.
Definition: query.h:607
void storein(std::vector< T > &con, const SQLTypeAdapter &s)
Specialization of storein_sequence() for std::vector.
Definition: query.h:907
void storein_set(Set &con)
Execute a query, storing the result set in an STL associative container.
Definition: query.h:806
void storein_set(Set &con, SQLQueryParms &p)
Execute template query using given parameters, storing the results in a set type container.
Definition: query.h:864
void storein(std::set< T > &con, const SQLTypeAdapter &s)
Specialization of storein_set() for std::set.
Definition: query.h:961
void storein_set(Set &con, const SQLTypeAdapter &s)
Executes a query, storing the result rows in an STL set-associative container.
Definition: query.h:825
Manages rows from a result set.
Definition: row.h:64
This class holds the parameter values for filling template queries.
Definition: qparms.h:49
Converts many different data types to strings suitable for use in SQL queries.
Definition: stadapter.h:74
A special std::set derivative for holding MySQL data sets.
Definition: myset.h:72
Holds information about the result of queries that don't return rows.
Definition: result.h:49
StoreQueryResult set type for "store" queries.
Definition: result.h:212
Exception thrown when something goes wrong in processing a "use" query.
Definition: exceptions.h:255
StoreQueryResult set type for "use" queries.
Definition: result.h:299
Row fetch_row() const
Returns the next row in a "use" query's result set.
Definition: result.cpp:172
This file includes top-level definitions for use both internal to the library, and outside it....
Declares the MySQL++-specific exception classes.
Declares the InsertPolicy classes.
Declares interface that allows exceptions to be optional.
Declares the template query parameter-related stuff.
Declares classes for holding information about SQL query results.
Declares the classes for holding row data from a result set.
Defines a class for building quoted and escaped SQL text.
Declares the SQLTypeAdapter class.
Declares the Transaction class.
mysql++-3.3.0/doc/html/refman/inherit_graph_14.png000644 000765 000024 00000004500 14042362133 022426 0ustar00tangentstaff000000 000000 ‰PNG  IHDR¬%P앟bKGDÿÿÿ ½§“õIDATxœíœYLSÏǧ¤Å^KKYŠ–¥¸Å”È1‰(WP1!¢AŒB\‚5"&øð ÙBQ$$DŰXã ¬-‹Ò"­@Kéü&ÿ›Ú–‚ âÿ÷»Ÿ§™sgÎýÎɹ3çÞHB@ðïÆdµ¬>DI@@$€¬ÝijjÊÈÈX-)Œ¸¸¸;wâÝv±X\^^þÇ%üQÊËËÅb±¶…¬?¨¬¬ìOé!XH$’Ž…¨ ˆ$ ’€I@ †«Ë·oßnݺu÷î] ÃVî->>ÞÙÙ9::·›˜˜/4%%%ebbBÇxûömƒ±r=F˜˜˜HII¹ÿþš5k~ëôùëv…B‘™™©T*‰·¬¬¬˜˜˜––ÜRWWW__odJ^^žP(üþ#¿ïg¶M›6544”Je[[›F£ùM72ÂòwµZ=77‡žW¥R©V«i4šñ)fllŒÍfk!„SSSfff ÍR©T³³³t:}Q£A6nÜ% Éd‹…ŠD"+++í'<<üܹs‹zÆÑh4###GÇ>99I§ÓML~xÒt”K¥R•J°µµ}ûö­qa€ùùy¹\®½-ŒêOñÓ;Aoo/•Jåóù666,ëÚµkIIIL&ÓÌÌìâÅ‹€cÇŽEFF¢ÁjµÚÆÆ¦¢¢œœìèèèêêjkkÛØØˆTUUYZZ²Ùlooïëׯã7jiiqvv¾rå ‡Ã177 ™™™1hðùü={ö ‰ÚmÀ;wÆÆÆ33ÓÓÓÃd2'''U*Õ½{÷<==!„###T*533S¥R=þœL&'$$ d2ZRLLŒR©vttLNN6h„ÖÖÖ¦¥¥!…Úm2™ÜÐÐPVVF£Ñ „gÏž… aV]] !D®233!„\.700ðŽ¥¥¥BµZíááqäÈ‘ááaƒQTT„V Ê‹‹Ñ}I$Roo¯\.·±±¹yóæ÷ïßsssRÎf³kkkñÀÊårƒÂÐÕãÇ+Š÷ïß[[[?yòÄ`TPRRòƒeyIÐ××!”J¥€—/_¢K åÝ»w333t:-,22òÌ™3Â/_¾˜ššòùü‘‘F3;; !ÌÈÈ`³Ù¸gý$GWù|þŽ; ¨EI! 7lØ s333 Ôæp8¨h7h\”œœœ×¯_£ƒ 100àááwFGGQûôéÓÿÑ"&&Ù]\\‚‚‚º»»ñck``ÀÍÍ wrøða;;»¾¾>…B±eËÇãñ ЗÚ%*7"ÌÊÊ 50 S©T£º –™:Åþ¯„ õõõ†ùúúFGG½½½[[[%IpppttôÌÌ ‹Åçê8”ËåèÈ477£,1h\‡“šš‹ŽR€……EWW> ££ÃÞÞÞ¸“¦¦¦ÊÊJOOϸ¸8´X ôŒ"rrr†††¬¬¬ÌÍÍE"‘X,‹Åmmm=Zºr#Âð°£»ŒêR¢¡ÃoyEܵk•J?uêÒÝÖÖ(•J---ýýýÑ‹ÐÞ½{…Ba{{;@(655éøÑh4¹¹¹€ÏŸ?WUUùùù-dlnn...F³´ÛÚÄÄÄp8@€ºøôéSuu5@*•ÖÔÔ„„„ Kccc½?¢T*§§§ÃÃÃããã+**:::²²²AAAÏž=TVV¦§§³Ùì}ûöÉd2¼hð÷÷úôéBÊ) ž—‹ ÓÁ`T—ƒöÙ°ôš?H}OOºD¡PÞ¼yƒÚW¯^tww£®Z­öòò255uwwçr¹?FöÔÔTSSS'''GGG///š€F£íß¿ßÞÞð“'OªÕjƒFtpº¹¹á‡(ÞÆkÄÇÉd2ª „|>ŸL&s¹\:577!är¹úQjmm=þ¼««+ZxAA†a¬¬, …bmmÍãñò\TTD£Ñììì(JDD„R©\HùåË—1 +,,ÄkƒÂ´Ã!|¸{÷nm‹F£éììüðáƒF£Ñ¶K¥Ò®®®ùùù°°°„„ÜÞØØhff!‰DR©Ôˆq%Èd²ÖÖÖ‰‰‰•8™žžîïï×1¢2^,£®å2™ åß2„-U#è'Á¯ÿl<99ÙÙÙ™••…¿4#H$ÇÓÏd2™L¦‡vvvK4.ƒ±}ûö:Á0ÌÁÁAÇH£ÑÜÝÝõë+7øAz‰ÂŠêOñë“@$ÅÆÆ^¸p! à§&:99™››ãÝuëÖéGÁ ñÿ‚¿Z¹ö¶ð ‚¿ð«¾ü“ ’€€H" €Á·ƒÒÒÒ?¯ƒ`1FþôŠà ÿŸà_QI@@$ ’€ð_ˆ|Œ:•Þ¸IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1FieldNames.html000644 000765 000024 00000030524 14042362131 024605 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::FieldNames Class Reference
MySQL++  3.3.0
mysqlpp::FieldNames Class Reference

Holds a list of SQL field names. More...

#include <field_names.h>

Inheritance diagram for mysqlpp::FieldNames:
Collaboration diagram for mysqlpp::FieldNames:

Public Member Functions

 FieldNames ()
 Default constructor.
 
 FieldNames (const FieldNames &other)
 Copy constructor.
 
 FieldNames (const ResultBase *res)
 Create field name list from a result set.
 
 FieldNames (int i)
 Create empty field name list, reserving space for a fixed number of field names.
 
FieldNamesoperator= (const ResultBase *res)
 Initializes the field list from a result set.
 
FieldNamesoperator= (int i)
 Insert i empty field names at beginning of list.
 
std::string & operator[] (int i)
 Get the name of a field given its index.
 
const std::string & operator[] (int i) const
 Get the name of a field given its index, in const context.
 
std::string & operator[] (size_type i)
 Get the name of a field given its index.
 
const std::string & operator[] (size_type i) const
 Get the name of a field given its index, in const context.
 
unsigned int operator[] (const std::string &s) const
 Get the index number of a field given its name.
 

Detailed Description

Holds a list of SQL field names.


The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/namespacemysqlpp_1_1examples.html000644 000765 000024 00000012111 14042362131 025233 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::examples Namespace Reference
MySQL++  3.3.0
mysqlpp::examples Namespace Reference

Stuff related to MySQL++ examples specifically. More...

Classes

class  CommandLine
 Command line parsing mechanism for ../examples/*.cpp. More...
 

Variables

const char * db_name = "mysql_cpp_data"
 Name of examples' DB.
 

Detailed Description

Stuff related to MySQL++ examples specifically.

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SharedMemoryBaseNameOption.html000644 000765 000024 00000031472 14042362131 027765 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::SharedMemoryBaseNameOption Class Reference
MySQL++  3.3.0
mysqlpp::SharedMemoryBaseNameOption Class Reference

Set name of shmem segment for IPC. More...

#include <options.h>

Inheritance diagram for mysqlpp::SharedMemoryBaseNameOption:
Collaboration diagram for mysqlpp::SharedMemoryBaseNameOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::DataOption< T >
typedef T ArgType
 Alias for template param.
 
- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 
- Protected Member Functions inherited from mysqlpp::DataOption< T >
 DataOption (const T &arg)
 Construct object.
 
- Protected Attributes inherited from mysqlpp::DataOption< T >
arg_
 The argument value.
 

Detailed Description

Set name of shmem segment for IPC.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadIndex.html000644 000765 000024 00000036733 14042362131 024264 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::BadIndex Class Reference
MySQL++  3.3.0
mysqlpp::BadIndex Class Reference

Exception thrown when an object with operator [] or an at() method gets called with a bad index. More...

#include <exceptions.h>

Inheritance diagram for mysqlpp::BadIndex:
Collaboration diagram for mysqlpp::BadIndex:

Public Member Functions

 BadIndex (const char *what, int bad_index, int max_index)
 Create exception object. More...
 
 ~BadIndex () throw ()
 Destroy exception.
 
- Public Member Functions inherited from mysqlpp::Exception
 Exception (const Exception &e) MAY_THROW()
 Create exception object as copy of another.
 
Exceptionoperator= (const Exception &rhs) throw ()
 Assign another exception object's contents to this one.
 
 ~Exception () throw ()
 Destroy exception object.
 
virtual const char * what () const throw ()
 Returns explanation of why exception was thrown.
 

Additional Inherited Members

- Protected Member Functions inherited from mysqlpp::Exception
 Exception (const char *w="") throw ()
 Create exception object.
 
 Exception (const std::string &w) throw ()
 Create exception object.
 
- Protected Attributes inherited from mysqlpp::Exception
std::string what_
 explanation of why exception was thrown
 

Detailed Description

Exception thrown when an object with operator [] or an at() method gets called with a bad index.

Constructor & Destructor Documentation

◆ BadIndex()

mysqlpp::BadIndex::BadIndex ( const char *  what,
int  bad_index,
int  max_index 
)
inlineexplicit

Create exception object.

Parameters
whattype of object bad index tried on
bad_indexindex value the container didn't like
max_indexlargest legal index value for container

The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ReadDefaultFileOption-members.html000644 000765 000024 00000015370 14042362131 030401 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::ReadDefaultFileOption Member List

This is the complete list of members for mysqlpp::ReadDefaultFileOption, including all inherited members.

arg_mysqlpp::DataOption< T >protected
ArgType typedefmysqlpp::DataOption< T >
DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/structmysqlpp_1_1value__list__b.html000644 000765 000024 00000025355 14042362131 025771 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::value_list_b< Seq, Manip > Struct Template Reference
MySQL++  3.3.0
mysqlpp::value_list_b< Seq, Manip > Struct Template Reference

Same as value_list_ba, plus the option to have some elements of the list suppressed. More...

#include <vallist.h>

Public Member Functions

 value_list_b (const Seq &s, const std::vector< bool > &f, const char *d, Manip m)
 Create object. More...
 

Public Attributes

const Seq * list
 set of objects in the value list
 
const std::vector< bool > fields
 delimiter to use between each value in the list when inserting it into a C++ stream
 
const char * delim
 delimiter to use between each value in the list when inserting it into a C++ stream
 
Manip manip
 manipulator to use when inserting the list into a C++ stream
 

Detailed Description

template<class Seq, class Manip>
struct mysqlpp::value_list_b< Seq, Manip >

Same as value_list_ba, plus the option to have some elements of the list suppressed.

Imagine an object of this type contains the list (a, b, c), that the object's 'fields' list is (true, false, true), and that the object's delimiter is set to ":". When you insert that object into a C++ stream, you would get "a:c".

See value_list_ba's documentation for more details.

Constructor & Destructor Documentation

◆ value_list_b()

template<class Seq , class Manip >
mysqlpp::value_list_b< Seq, Manip >::value_list_b ( const Seq &  s,
const std::vector< bool > &  f,
const char *  d,
Manip  m 
)
inline

Create object.

Parameters
sset of objects in the value list
ffor each true item in the list, the list item in that position will be inserted into a C++ stream
dwhat delimiter to use between each value in the list when inserting the list into a C++ stream
mmanipulator to use when inserting the list into a C++ stream

The documentation for this struct was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1FieldNames__coll__graph.png000644 000765 000024 00000007740 14042362133 027123 0ustar00tangentstaff000000 000000 ‰PNG  IHDRƒRwÿgìsRGB®ÎéšIDATxípUÇ‘’DÄÞÁ†»¢bc°÷^°½÷^°;ŽØÐ±7,h‰]Áѱ¢@€˜XÐÁBQĨ "‚îw~‡ïîÛ¼¼ä¥Y^|ñEËçoâĉrñÅË?þå59Á³ O“'Ov:0šñx÷Ýw»“N:ÉMŸ>Ýüñî‰'žpo½õ–ëÕ«—ûçŸÜYgåŽ9æWZZêvÚi'·Ï>ûX;Ê÷é§ŸZúúë¯wÓ¦Ms=zôpÇ·<¨¥ï¼óNw衇:µ*N™eméý§Âç¾úê+÷Úk¯9]p÷÷ß»¼¼<§Â↠æ¶Új+÷å—_º[n¹Åí¼óÎÖ&ãÓ­²{ýõ×íüßÿuO>ù¤Ûb‹-\÷îÝ «åó7gÎ×¹sg§‹êFŒá6ÜpCGù]vÙÅ»… º6ÚÈ 0Àéâ¸UVYÅÝ~ûíVßÏgêÔ©î†nÈÚÖ÷ßÏó wá…:µ6OU&;ÂG]X§ æÎ8ã kÞ¨pº>øÀ©À»Z>ðæüóÏwË-·œ;ðÀÝ{ï½]«/ÁúÀà “؉kˆ0°+¬°‚»æškÜØ±c­:Ìcá¡õ×_ß©D[zРA‘0XFÚßu×]çTÃ!,¶j¯1_Í©{àÜ•W^éºvíêÔ;ÕΨvII‰S÷à–Zj)«sÞyç9µ,ÑõUW]ÕUTT˜°ÞsÏ=–¯VÇP5ׄ—úqb±¨½öÚË©EpzÏÅ.ï¾ûîÆ`mùå—·~¹pâ‰'FÂo‡t¶¶8Úª®®¶ª½†§žzÊòà³Z^÷Ûo¿9µ²–Ç_¿~ýjƒ¿0{öl÷ðûÍ6ÛÌ©us¯¾úª¿”ñ˜Ií&>ø`}œnËÜž{îéÖ^{m§ZäˆO b†çŸÞÒñ?|².ºÅñ|µNN…ÈbŠN8Á.]qů›<øàƒæ³qC¸âÈÏÓ‹ï†êk 7·ÁX9þânBƒlË'ÃM@¸Lbøoã.Q•ÌÚ"Žð®Í*eùËä&Ðàˆ" &Püæ›oÌ7úÊ•••nÞ¼yvŠïWÓí/5éH¥X£.“¥mO¤ñ•žè3~îóë:ÆÛòeðçºcò§vÔH?:g Ï ¡lm5¤ Æx×]wY0 ?þxHÜAŒÒXÊ$ íhÄ›Ì&§*…>+[t‡fʸP\E~~~³FƶU­“ÅQÿohx§–Íj=T^lxä‘GDw¢–×âÅÕQ†ÅÅÙ·«qJŽ[¬Ý\£wµ›9m…5,ƒFÂö¦ûÔ¤ÐìÙ•RZZ!}útMÊ”£yvêÔ)J“¨@Ö¸’“AƒFèý’WôéjõÇ™oè$„áUùÁƒGê¾öR\<6!k^÷43L:SïØÍÊÊj)**©›K ¹’ha(.g÷UXëY³æÊøñӲ왧™ha(*¥ïSTgªªÈK/ÉÌ¥„ä&V&L¨ÐsæDËŒ0 šì¸!±Â€¨ªZô˜ÛKDuõB))™èOwL¬0 2V…a‘‹ð«>wî|}¥,¹d"…¡´tŠÆ 5߉D ô៾Q®ïEÔ´^XÚú1‘ÂðÆe¶‹èÒ¥@ß Ê—Î;é‘t¾@R)åå-ÿ¦rK^"ï@ΛW%£G/Š **fÉ€ÃdàÀ~ÆÿÂÂŽÒ«W÷–X‹–î3™°óó;賈ÆüÉ“§KAAê¼¥W¤%ûO¤›hI†·æ¾/ ¼Éœ——zÓº5/Öâ[â…×üØE’ðŸ )$Þ27„!â@p+‚›H±"¤ï&‚¤8„!ŋħ‚0$^R ÂâEâS‰†°µLé@â…!l-ƒ0¤8Ro"N„D¸éDÌÀ/PxPe¯¿7 Âd ÆÄÇ ak™’†Ä CØZaHq ¤"$Þ27ÉBØZ7„!ÅJq@5£^â³ùZºÍþòòò]aaÏ6;?ÖŽO77€†ÕøÚ[JDR)ÀDôà#Üþ{àãë ‡Ð '>€l—R(CBº!Ó ÂÐ.%¤LÖ˜¡5ð°0€=ø¢zs €PâÒ `h€ŠÔÕˆ0|A7 àwÜQ@Ãá«ï 5­0 jN}¨5QáVøOX 4,'ì]”<>±ï¸’ŠqQg ÆQ>@ìƒ@ÝyøFO V’3ìKßæâ<æÄ2ãRXXh ÇJÁ-„oPsDfˆ"ÕØ\aΠ„€ATTûtþ)§œbyÀü)Șá2)X™l³Í6ÑüÌC€äSû@øtÐA¢HzV<)P3¸$E­1ˆ"ÊvÚiòØc‰"çØXÀsc2NÀòè@Eå3Œ*3ØA_VÁ@ôí/ ã8VœÃ‡ÇÜð¶|,›¢þ ÐB`<¹„•QÔ9ƒ-Oj‡v°÷*€_Ú~ûíEÁÚ †ˆzŠÎ#Šô'ŠŠcóC ø%,p´™ ʉe€AeeeòÅâÀŒÞ½{Ø‹ V$ØMlsÀy" î%X•·Ýv›-ž>C›9ä¹öÚkõs:åfzýDZÐ𣸎À(›áA²ýE³© æ¤Ä ‚8zÏ8ÀÅò?ߋ΋ÍBúñ裚 ðc`±XTÀ[q/ñcØ‚³hÌ9Nàb¡½1p9!¬Hõ(Ç»ï¾+̾éÃÚ¾Æ\ûŒ.0¨P °¹ü\ãý55a ó‚‚Ó PßøZ9ÖM V,Iý¬^‰¡Ç’†)h/@¨L\aøD! %ŽÅÆw+æLÇš;†Çi·Ýv3\lL"i4JABE¿ Ê-Ý3ïá;tèoÂÒê´‚|~<Ï.døÃTç Äyb Œ@“HyX1O¸6LÁþA 65¾–í!AœÏÃÇÞzë­Ç`ªÙúù¶¬PÚcÁµû ˜¸4bâêíºë®ÖãDxÑötÂB2‡‹.ºÈ. Î$÷G€J`ZÑxÙXO0;Ù¶2°>‰cP*eÊeýô>™H?Ï&ˆ†ñ‹XOøfL^ÜD²ÐL´¨¨ÈÌ?f°+ ÂÆt²pÀ¤”Á‡b¦3!ÉZÁFüayè£.l(pAÓõ.-[ÓX>b)‚ ·VŸPÆÛƒGÄC9† HƒX‹L¯ëŸMxw¿––^rŸþì˜aâÄ„Ò †ÕG0 ÂrE,–C2µé-R¦k™ò|œÁµxÀš©lz^:ÀºnŽ¥×mÌù³ øëÆ.‚‰{ÀZ—¾Hh1‚–´6†mµl«´ 'ÝB`þÓr™òÈÔ8,±ÝDã†J·²º ‚núïr€{¬cžU²4.·(ö³–ÍŸIˆšÏÃ6ÓB†6³”ÍŸÈÿùä:°¹ÉýIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1LocalInfileOption.html000644 000765 000024 00000030704 14042362131 026150 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::LocalInfileOption Class Reference
MySQL++  3.3.0
mysqlpp::LocalInfileOption Class Reference

Enable LOAD LOCAL INFILE statement. More...

#include <options.h>

Inheritance diagram for mysqlpp::LocalInfileOption:
Collaboration diagram for mysqlpp::LocalInfileOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::DataOption< T >
typedef T ArgType
 Alias for template param.
 
- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 
- Protected Member Functions inherited from mysqlpp::DataOption< T >
 DataOption (const T &arg)
 Construct object.
 
- Protected Attributes inherited from mysqlpp::DataOption< T >
arg_
 The argument value.
 

Detailed Description

Enable LOAD LOCAL INFILE statement.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1LocalInfileOption__inherit__graph.png000644 000765 000024 00000012532 14042362133 031172 0ustar00tangentstaff000000 000000 ‰PNG  IHDR‰Ï»³sRGB®ÎéIDATxí ´UÓÇwdЍ(IhP*CE!ó°ˆ…•2e ­¢ËPdJ†¥ÈÊ¿‘Ò`ÊL½•$*$ %¤áü÷çǾ{ÞÙ÷ÝWïÝwï{¿ßZ÷söÞgŸ}¾û»û·Ï¹ï~ËÖŒš"PÊ¢¬U%¡Ð(i ™ž°m¦ ¨P¡‚ùçŸ2u¹2y¯¾úÊì·ß~Å~ï#ÍÆÍúõëͶÛfì’Å^6]à„N0_ýuFH£ÓS6õ|Ž´EI“#•MÍTÒdSoäH[Ê iþúë/3mÚ´"í–/¾øÂ :Ô<öØcæÝwß5é>']»vm‘·¥Ho¬€ÊÊ i–/_n.½ôÒàH?ûž{î1't’™>}ºùþûïM¯^½LÛ¶mÍüá­äª«®23fÌ0«W¯6o¼ñ†·\Ögð!¶Í6Ûvõ”òRGuT` öÚk¯ K—.Á•W^ì±ÇA§N‚+V7ì(•:ÜqÇí„ uëÖAµjÕ‚®]»JÞ²eË‚6mÚuêÔ :wî,uÙåhP¯^=É?ôÐCƒ+®¸Bê>û쳥Χžz*¸è¢‹‚&MšÈy&L²‹- ,9däÈ‘AïÞ½ƒÏ>û,¨R¥J`‰(éî%Mp÷Ýwqu=ûì³AåÊ•ƒZµj3gÎ Î<óL9í½÷Þ 5jìºë®%µ`4bĈà’K. h'X<ýôÓîÞíñǼþúëÞü¢ÌÈ*Oóå—_¦‘qãÆ™aÆɨ}çwä˜ÌrýÍ7ß”8|øpcA5}ûö5–T&//ÏØ0L 0µk×6o¿ý¶ùî»ïÌ·ß~›4xçÍ›gl'™9s星þÙ¼òÊ+Æ’Ò¼öÚkfôèÑæþûï7–rÎ;ì`š7o.û5kÖ4õë×—ó4h`jÔ¨‘Tï1Çc>ýôÓØºÎ;ï$°#ZHõÏ:ë,¹Ö9çœ#„…lv¤›Ûo¿lÓªU+Ó±cG³aÃó÷ßKZøÏ?þh¶ß~{IŠÖõÓO?IÞÎ;ïlÊ•+'e ìÒ¥KM·nÝ„PÜïK/½$y§všàÀõ ~6YÖ‘¦nݺ‚OùòåMÕªU“°¢3'Ož,ÄT:¨ÿþ†Ñ:uêTñt Ûi@ÎåItœí²Ë.’ÌSjb Ì¥±O:g^O„¥S—FÅã¹:6mÚ$„äØN’ŒwµS‹+’Û¬#M*Tößcc! ^ÃÛðyùå—M»vídUrâ‰' ‰ÈwÓûacÚã)5$´1…dÑétܬY³ ÓR³fÍÄã¼ÿþû’O'/X°ÀqÄBŽ~ýúIy2ÇŒc/^ll %eãê"ƒ§âΚ6mj~ÿýwóùçŸË´®‡‡]¹r¥áu@Ô\»£é%v\”QuªºÒY=¥:ßåÙé(°ìekc‰à›o¾IJ³q‡¬n^}õÕÀzž¤<ëò;ý6fI¤[¯XB¿üòK°fÍšDzA;v* ì;Ÿ¤b©ê²AnRYl|X/X2çËK7!“«§œz{xíµ×JK 6»,ʾ%©¬nX)ÅÞÂÅ=áüÝvÛ-|Xà>»Ïâê Ç:î<â.¼^®X9˜œ‰Æбâ`»¥Æêd÷Ýw7"]#†øóÏ? «gÖ›H=î˜-e0–Ã[kEYWºmaZëÑ£Gìô–né–ÛòL÷ EXÎÅ …©r»í¶K" çB¼¨Y\EY—«3›¶9ghe½-›žré›{¬V*Ujh§ÓÅvIýWÎp$Sßܢ§Y·n<¤"„ÊöÏ’%?Û)íx3dÈëYßÖ0–™øª'#(c¤É™áj:vìLû´y[ûþëÃ\jvÆÚª¤‰úÿ˳¯6Ø+Ͳe¿Æ”(ÛIJšHÿ/X°Ü>ÚÿwùÍÈ1cfFJè¡’&ÂH²~ýI]·n½1bz¤„*i"=z†%ͦDêªUkÍ¢E+Ǻ£pòòÛ¯&l& ™"©mF@=Íf,ÌÈ‘yöuBò2U¥qM&]r;06nÜd&Mš›ø~ŒKgKl3{ö7á¤2½¯žæ¿îŸ;÷;³ví?f§*ɧJ• v[Qöy€6aœ2M”ðÍgì5Bø¢Ùº?cÆ’ÄôÔ­ÛÓ³çɦzõߎ·lY×T¬¸]¶6=£íÊ©·ÜÅLóæ›¿ÓR¹òö¦E‹ºö{.ù߈w;²½~ž²½‡²°}JO§”/_Î~GØ“YÆ“•4دëÚ7ÜžÌ2ž¬¤)ãØ’ÛWÒxPÓéÉŒMVÒx°ÑéÉŒ’ÆŒæøPOãÇFs<(i<Àh²%Íñ  ¤ñ£É~”4ltÉíÆ&+i<Øè’ÛŒ’ÆŒæøPOãÇFs<(i<Àð†[ßrǃ£¤‰ÇEÞpë[îxp”4ñ¸hj ”4p˜šXv«åG@I“IajbÙ­–%M~L4¥”4€ô‰°›¬¤ñ`£O„=À(iüÀhŽýK~Ö=îçYýÍÍ\NåÊÙjüÊÃùÕV2׊ø+}ôÑGò³þñ¹ÅŸZ¢ÿaÉ@£E`…¸ŠÿNKÉù)iÒhLSJÈ”ÉÛPÒdíRr-%M)éÈLÞFN‘.‚æ’²-•R¦½o½õ–¨Ô•TÛ‹ãº9AD¿>þøcïý“tqqØ–H)[µ\3hÐ ijqqz—ÅÑÖŒÕiå©ÄÌÊðvõTàõ­B\`u¬ƒ8éá°t± ¬â›Ô‰œò!C¤nûûÁe—]&òÆÈ6·µRȘ• ¬´``•áDž hΧ¬_ ¬P{J)å¹sçgœqF€@—Uˆ ¬šÈ/ÛÇÕz ,aäZYíîÀ*ÈVBHÒF\ 3ä–‘’¶ä—v¥úƒ@Úƒ>˜ªH±çå„§q#(Nz8,]Œ^çá‡6÷ÝwŸý%«ž¢‰pºÕÒ6V·Z„EgÏž-UÞtÓMæä“O¥ÝiÓ¦«m~ûí7óÜsωÊ.—©¤”‘E´úÝæšk®9g¼ m°¤3Vã[ô(‘\FsŠ6!=„GDÞùñÇ·¿å·Nä‘PD%÷ùçŸ7?üðƒ»Ý¬Ýæi@1*=\±bÅ„t1ºÜh-Ù,z–È#óL½m+/¸ñÆ¥3òB·S: É?üW ÁŠ·+önÐŠŠ›ZÂRÊ!¥¼Ï>ûÁ¬½AØ5Û䔬ȟœ#M*éa§£P åsþùç‹(*"ñ ã 4§È'ã§ìa‡fì4!eœ¼aQI)ÛùBÈàž~s}´½1w?ìg£œ2íŠZΑ&zîà!Ö®]kкD×­\ƒ' ¥³P¹E¿’N:Jµ7ß|³¬Î–Xåܰ¥#¥Ì´‡P;Äc•‡v8F{œ¡…\ 2ÐrÌÈB窕èk„­ÍI;éb4³‰%6DàëoÓ¦MyGƒ8© €E•)Ëwë­·šsÏ=Wš'"®™8qb"ßI)S†X¯€×`ª!>A” ÏÖ¼ys!+rÏñC1;v”ë»{D‚™6Üu×]Ò6â¬8sm‹ËËš´bµS\ ÝÕSŠ*YaéböÃ’ËVX=àƒ¬²o?$Î#;û lЛH‹Û‰“R¶ž%8úè£;ÅÈ<‡Íz¼™ç¨Y¢I;¢éégÃê)§=Mxä…¥‹Ùãì2ۣ̜9ÓþœýÈÄ©»³Y*)e¼”‹™\=>ñÓL©¿¹vǶÔ&8Ä.V¸]Þ¦£]©R¥TÅÓÎkÑ¢…LgiŸPJ – ÒÐWhyë¥±Ú {´¢¬;›ë*5«§l¹´µ­D= Ï-x˜m+Ú“ÍË<°,I+QOcßÏd¥„q¶K,·lÙ²$9£ÿ‡¾J,Ç¡²9­D=ÍæfdמJ,§î%M•XŽs¨¤‰€¢Ë@b•4PTb9HÌ¡’&ŠJ,‡ÀH±«¤ £Ë!0Rì*iþG%–S°$’¥¤ù•XŽ0#Åa‰þ@Šv•H–J,§{‰¾{J¯‰™+¥Ëéa­ÓSz8i©Jšá]ýù´0ÉûJšd<Gúói (òí(iòA¢ ! ¤ñ ¤Ó“›¬¤ñ`£Ó“%Íñ# žÆæxPÒx€Ñd?J?6šãA@IãF“ý(i<Øè’ÛŒMVÒx°Ñ%·%Íñ# žÆæxPÒx€AÃ’Z~”4ù1‘4,ù¨åG@I“M)% ¦&–ÝjùPÒäÇDR˜šXv«åG@I“M)% }"ìÆ&+i<Øèa0J?0š“ð/eO:•ÈO?+±”/_Q±°X i¶¤ÿ°´¤m‹/¾8Í4«,!°páBóä“O&ݲÆ4IpèA:(iÒAIË$! ¤I‚CÒA )¦Iç„â.ƒ” zü0õÖ"XíÚµ·¶ªÄùèNZÉ!sðÁ›¥K—ŠæB­ZµùÑ+x**vVð4¡"‡ö%Â>³rBÆŠª+?$84iÒDñ|åÃéhP¡‘Yø…ë ïg§AV'•œr¸ñíOž[±b…ƒA~ÎQSô2Q·óç\}õÕfôèцóÐÕD)½MŸA„^1§tç+[é…ö44þƒ>0V"XDÊO?ýtQ›E“aÏY³f‰˜(jlŒJ°’Àæ…^gÄQ‘OÀ5j”xTRP^sF‡òÉ'¢Þ†Ä ÊlGy¤’"ŃÈ)#)A´–4E‚å8·ïêŠnÇ/í±ËHsá…ÔjÑ´Dõm‰•$DϲwïÞfÕªUfÀ€"ùC{I‹³åË—›‡zHTæP·kݺµéÖ­›Aà PÌub¨áó­p™AÙDô6O=õTce¡E™^gàfVÌtíÚUdÃ÷߯_?!$Ú›\¯zõꢑ‰B/רZµª´ïÈùõëשFTðúöí›ð€îzm íiÖ¬Y“`£FÌàÁƒM=L«V­DnÁ­)S¦ÈuñÈÛàf§OŸn¬†¶iß¾½yñÅ õ eܧOé4Ä»ÂÊ´t£Òj]‹l²[ö1ªä9ä¼¼<¹²t ù裚wÜQ˜ÏƒDNʘ ŒZX~˜éÏ‚¹tÒÐ×.ŒS¤3¦(êt2F's ×ñJÜ.=•…;Œ©–zSí £ñ||ðt0ØBì°9‚U«VM’Ó¹ÿè}B:×&×ÖtÚn‡Ûß"Ò¸“}[ˆB CϨC…AuÜ0ó<^†‘>þ|At1RÔXA0ß[aR•NkrΜ9r£©N:ruá°ð¾ÓÀ†|ð„œOGA\G¦â§£Ô¿ÙgÊÁõ3²)ç@—‹lå¤ ™Ž‰§¨LhÞ¼ˆ­0A1Bñt2wÿœ6î“û,ÔM\ãÝsëÜkß{Öûû{ö^{íµ×~Ö³Þõ®µ÷=O1Ϙ8sä‚@ñ\Ž»ÃEÀÅ!)Q’‚ÉeÊw¢Ì™3GŠ+æ>ùˆÁ 'œïL.¢têÔIˆ™Ý'õ,]ºTV¯^]ø‰’ïwà.P ä»G)»pÉwQòâ¢q’Eã6¶?ýô“¬Y³FªU«¶ýŒIݸq£LŸ>],X x œrÊ)úÌéË–-“¿ÿþ[Ž=öØd²G&OZx”)S¦È#<’пÿþ{©W¯ž 8PÉ÷Ê+¯Hýúõe„ Ëÿâ‹/¤sçÎz|É’%òùçŸ'ÌÕ‘ Êøñãå’K.‘:uêh¯2dˆsÌ1R¥JùðÃåÎ;ï 6H5dÕªUróÍ7ËA¤ûLÃ1qÈ!‡Èi§&gu–|õÕWšÎŸ‘#GJÇŽ5¥J•äÕW_ÕcW]u•\qÅrØa‡IݺueÑ¢Eš~Ûm·ÉóÏ?¯ÛÍš5“Å‹K¯^½¤I“&2uêT¹ë®»dܸq2fÌéÚµ«lÚ´Ij×®-ݺu“ýöÛOZ·n-ëׯ—víÚɳÏ>+}úô‘•+W ^%++K®¼òJÙk¯½Ô»¼ÿþûzîÝ»Ëõ×_/•+W–£>:2¤ŠQþøã¡g4H{g=dĈrÁÈOûì3%¡&fÿiР0A€¹sçJ… âB êøÀHõêÕ¥gÏžòûï¿Ë?þ(o¿ý¶Ìš5K‡°¶mÛJïÞ½µ´ŸþYfΜ©Ç¹ïaÆù/õ¯mG‚(Ü}Æ À7n¬e·—/_.ôæï¾ûN/@OÅÛ{þQG%Ç—wÞyGËhÔ¨‘´lÙRŽ8âˆÀžþùRµjU-cíÚµÚ¸dêÒ¥‹’‚ÞLãbxêAÀ8@6oÞ¬¤ÐÄì?x7<Æn¸á-ëòË/ײöØcÉÈÈP¢eŸ¢é‡@wÜq‡z±_ýUãáð(mÚ´QRÙsþÍïÈ`°âŋ˞{î‡IéÒ¥¥E‹J’×^{M™Fûàƒ´÷^sÍ5¸ôT†kœ´òåËÇ’233µ×“`Óýi±Œ¾Ã?\Þzë-_ŠÃÞæàƒÖtYýõW\^»ƒ÷Ù{ï½í®ðŸþÑý]wÝU¿K–,©‹”±LÿâFdˆ’x‘~ýúéØOc½øâ‹2jÔ(uëÄx“3Ïê¾ÿþû«Çòç‰Òvä§Ç<' KÕÄØ©§ž*·Ür‹•ƒ¸†!¨fÍšXÚžI~[ÃÕ‘G©±±ˆMgÖòÒK/ Àz b®ÃPÒ¼ys™1c†’ˆi1ë‡@âþýûs%!A6ñÊSO=¥ÃC'A9„Àˆ¿&Mš$Õ 9 afëv¬@Óxq)?ÍÌ4<ó¬g§/a‚RÏÌ$<j¬,Ó=Ó³=HÆÒØ0§i'žx¢÷É'ŸÄŽõíÛ×3ñ€gJÏx‚Xº™!y&¸ôÌÐåÒÅÒ··af_zmCˆ¸lf¸ðÌðå—NZ°žd Ÿ¿.q'%±cžõxf¶–DÎËyB¯a‚é3kûî»o¬#Ï„-\ùÇþXfßSÒ0³1Fر`Ú.»ìzmòQ/¬DÁl˜ó…å‰BZ¡ k*Äûì³Ož0c*ì~nºé¦Ðó'Nœ(eË– =–×Ä_~ùEl¬’×s£œ¿P…ig^Ièvöa ˜¾¦Êróf©ºNA—Shf= Œ»^ qr?Û<×à-ÿBó)Yrw¯L™ª…¦¾`{üñÇçÞ;™£ç¸“Ö»wÜñ¢üï3ÌLßä\°KWpÜÐhù—^úܶ¥Ìû—#é½ëˆâkÿO?]*™™›ÍƒÄL=úCß·éˆâãÀøñŸ˜×¶.µýõOæU†µ¾£é½éˆ’Ýþ[¶üc:ÎÕ%x’X yùå­ï¸¤7E¶Þ½#J6 Þ¡YQÝF‰ ~>Ú–æ[>hÒ‰±c?6O‚3ã@X¶l•yç帴tÝqD1-¿qc–yÔ¿Àlů°pðüó³Ò•q÷íˆbàxë­yæí´­ï’øÑÙ´)˼ëú‰?)m· ųžünb‚ÙÝw/c.噀–'À[߃aèa:ôÐð'Îù]·¨”ïVfMK¬Y³Þ¼Êð£¶ÉüùËÍl³å?ÿ9W÷÷ܳ¬wܶ×+£Òp]çQ âåË—•Æ«*ö Aï¼3?¶_Ð Õë¹%ª-±z9¢„wTyCÍY<‘x<ôß#ì¿M¥õ®#JZ7ò7ïˆÀÊ =@²wQ¸ð—z ˜]G”œ˜¸”QB@qI9pDɉ‰K AÀ%—”G”œ˜¸”Q ¸éqì]G”.nzÄ%—Ž€ó(ḸÔŽ(@ˆQø8‹GÀ%˜H 9íwQÒžÉàˆÀÉM€dï:¢pqÓã Ž(းÔpœG à↞ Ù»Ž(\ÜÐÄ%—šÓƒ Ìø•iSHJ”ØÍüØß‘‘®#šŸ^/°vãB:ô ­ƒ´ˆ¹nd?›7ÿe~šëÛÈÖì«B{¨ ­@‰R7殕ZQR‹g‘-Í¥È6mjo,r¿f€v_Å1ÈDjÛƒâË/¿ÔßÏGS'¶3¶¨ƒ F™ªº¤â~òZFä< ª¤È¾!Àˆê€VÌ)/7‡¸$ÊZ©°•°5šA‘ÑÜa<˜ú”•-ÏÌz¶{9#Ãæ5nÜ8–Ç(ŠzFDR÷ø¤‡“QÃðš6mê5/M:t¨g´v<£(ê=ú裚־}{Ϩ•zæ¿þT̉ãFõÓ3J¤zܨzFyÔ3r¸ž‘•Õ4£Òå¥1ÏWzFÈ3„Õô‹/¾Ø3.ºmÿAo·ÝvS±&Ê¥ ÎiÕª•g$å<#c¦Ùe<£úå¥2ÏHÂ¨à“‘ÍõŒf¢7Ò2Ze_wÝužQ󌊙g”PíeB¿Í¬Ç3:E¡Çò+1rÆ#UÛ¡C•`»úê«U“˜t¤ÝpáŸ~ú©Ê°!u‹´ ¢O>ù¤ i{ß}÷©Lù1ägÑDÝÔ4¢~ø—Qô…­dˆBï…¼?x14 G-èï쬄- ©ÝÂ&a»Á­#IbÄ­Ï=÷\9ãŒ3䡇R]>df­FrИèÿ!y˜#D@~ö7ÞˆÝ#zʨl1¤í¾ûî*¬ýÃ?¨&2„A8’¸è·ß~ÓsɾôÒKµäpQ>MW Ûˆf#’DÁk Gƒ!Þȃ:z²_1ÌÊɦ«„­ÅïHÅV©W”C׬Y£òóxäf1†O‚|,C ¤Ž(‹Z;ûì³UÏïÖ[okȘ1cthbx{æ™gÔs1+1c»=%ÇwºJØúˆÜôï1}úôØÏcÑ㑬G•ónݺɽ÷Þ«jæS§NUéZüª”-ÄÁ TR2¸Äxäîûô飲¤#I A8ŸYÞ+h”òÎHØÚ2 „­­8ßù%‡•›Ì¬'ì¼`ÚâÅ‹uáOG¢Ö/uë?Æ63$òøÍ/_<æÏg·£"aûoÌz"çQü$N´wZn‹rfh¢½„ï¯hAl÷±YÞߤ—bèY²deA\¶P\Ãy”ìfB{ÆŒ…±F3±œLœ8;¶ŸîŽ(Ù xã/®à¶Ø~Ó¦ÍNOÐ×;Q²Á@WpíÚ>hÄÈÛn4/6ý—–®;Ž(¦åW¯^'sç.ËÁÌÌ-2aÂÌéé˜àˆbZýµ×æšÙNN9ÛÍ›·è4™x%ÝÍÅ0àÝwȆ Y£dd”4/:•Ðmb–?ÿÜ ?ü°*Ýy"NÎÖPÍãuë2• 3g.‘¡C§™—ºê~FFq)S¦TÚe[˜ŸÆP”(Qܼx½‹"P®\)]t³ûi KÜ­»¡'ó±QPçõGgñ8¢ÄãaÞâßú“ä´ßuDI{ $€#Jr8¥}.G”ˆOœ’z³ëˆÀ„Å5þÛÐY<Ž(ñx¸½8¢$Æ%Ç#àˆ‡ÛK€€#J`\r<Ž(ñx¸½8¢€qKø@²wQ¸¸%ü Ž(းÔpœG àâVf€dï:¢pq+³@QÂq©á8ÀÅ =@²wQ¸¸¡'ˆ#J8 .5çQÂqq©Q€¸%Hö®#J£qD Ä¥&@Àô ˜™ŸüÜ™ÛÈ×:+–á!i›ß׉zù1^°÷Ÿ‚ü=Š:uJ@+—œ V …ß\ŒâGÃm'DÀ%!4î€G?n;!‘#Š€T9·„5ÎÃ$áÐôº( "—ÈæÌ™#™™[ÃæAW0++Kw9†"(‹¥ƒEŽ(ãÇÓ=Þ™F@- å¯o¾ù&V Ú‚è~ôÑG±´à–`òäÉæW¬'éa£nªä1ZAÒµkWùöÛoR#65kÖ,Í3pà@€ –g÷ýåÙ´üüέ>y¹vܬ'™ÑldÙèYD&ú~4ÀìÙ³¥\¹rrá…ªê'*£TxܸqªCl¤h5:~'N4¿‘6A=ôPÕýCÝË ¢ JÃyXmúõë‹‘•ªU«ª²èqÇ'½zõRž={Ê7Þ(èòØmÊB”š:™X-šm+TpåŠ+T9:ÔÁ ¤ù¸¿áÇë6‡K–,Ñ{äÞ¹FçÎõ"™CÝE2¤ê8ë sÇ¿§¢üU³f͸ò¨ªcx¶† ªb*Ûm–-[V-Z$çwž*¤¢rÚ®];-‡íàyFWq‡¸«W¯ÖY+×õ×Y<êäÇ_o É?yö(ȱÑ­æ·íüqéÑ£‡*…¢Š‚( €¡ˆŽ€#CŽ5J5¶±ùÅÅ¿åé§Ÿ–Þ½{«|,½µrkÜ0Ã†Ñ VÁì#Fè!ˆƒ@$û4.Ãft†•0ÁmÈe4Šõ7ø!ÜÂ… ¥zõêz:„\ƒèFWY·ùc4”=Bt k×®-K—.5¿Ì´EÎ9çahB’y]ˆ†Ô\Ó¦MõÞ‘ÈÅ»ûî»cR»È×ùË6l˜ÝeéÛ·¯v:CeשSG.»ì2½Gêot‘ÍO™>«å†– …äC´“¼þú„ᯅåáOž‰BÙôdÀ¦—ðm·W­Z¥7¹|ùrY¹r¥ªQ£FÚÙ‡Txˆ‰ªU«¦eœ|òÉqj\¶þÈÔ’Ÿ2ŒL[,®hݺµª•Ò›! ÆÚUñòoW¨PAõ¼š‚I#$óOèä1×J>³ød«$FÜZ=aÇŽ•dAËR¥J©È%$¦×¡nášx lyŽûGQ ­B¼Ë¼yóôäiÑ¢…âXºtiõ*léH‰ÎƒPxMÖ?æõ×¥³ þ±Jrc‡ˆBoÃ-a¿QÁzõê c:™8£<®®ýá‡ÖŠ[‘HÎ÷7†-Ï/-Kǃ`6´õë×Ûì ¿©n5S¶ÃŒ^™ŒáÂñ"íåþýûÇâ{>bØF…]&è `â7XC"†R: Æ0‡ü®%*ÙÚö΃`çš…T{Š~‡á—!‰"JnåÒÄ$ôfÆs\?c81àÒ+êÖ­«=ŽÞÅØLL4dfùeGzÆ{æ<¼IÅŠ5Þ‹×ÁüÛìã™ A-ʤֈ¥¸.e[… ê7!“ŽÑФY#ÿܹs¥råÊWÑÐÂ6ÇQ\ÅSÖªUKc†@äær³9ë…áŸÛµ‚Ç·Ñ5xdöyDAnézŒÆal¥1häaªJ•*‚ ·nY3›?¶Üe‡tBLD:€?öØcJ <³ŒïÁƒk™v›ü|rãzxB¥¡ˆ§Ú´i£CŸmLÊã<êÇ ¨F$©³@ôöíÛ«l.DîÞ½»ƒÈýúõ“!C†¨t.³#zx¥J•4hgˆ¶åq_t C¼f‰Œú`açA¿Ù¼¶>C‡Í¿?2Ûq?JʼnàwöY=¨mÛ¶2räHõ*T@ ªð0~WÌ4·ÉŒ2”bŒû̪ˆGÈo]+â×S¦LÑøÀ?téI;ø‡aÒ…qÃ" î·µk×ê°¬é Ü/:˧Wƒ Ì_éx0ñ{%ÿu¶órž¿>aø‡•Og&ÖᬥԣP(³’{î¹Gš7o# éAÏ ßö,ì8=&Ø@Û+#·c‰HÂy yal¬ä?nÓ¸_[G¼˜õdþòHC<¯–—óüõ Ã?Ùk§Ü£0Œ0n—/_>Ù:h>˜×°=×N•ýÀ’FžD#$f`&@ôÏLÍz§DçØtVc™á…Ú6OQüó(Û¢°Ý1 æ•$\æ[’°A‚$!=/$am†Ù³ÈËJ- v ¯‰Ì¿zjWcåM§ô”=QÀôþûï×E¨ Ī5zôh]Ï0£Ì ž â°ÂܤI“¸ÕSÒ‰ˆ5R™} ²Œçd—ø‰5VWYð*ª–r ˜¾òñO‡©C«¬L¥YŽoÙ²¥>bà1Á¦õԮƲ’ÌB †Ä3¬@C<SoV`Y.·Sæ¨`ÊzY¢0ÎbÁ§À,†ÙÀ’@’…®Š+êr:1 ñ Cž?.a½†¥qò_f–Ög̘¡e³8Ö¬Y3]™fæBTT­È…µ›Æ÷‹x¬©`vFÀ6CŒ]ùeßCë966bß’Ð_ù×aìùEå»È…†£·3l0£ÂXG °%ÁXbÇÃpœÕ\»¼i¬1çY Ý°éæ½böÓÍŠl0KC°ò,†bžwà1ºté¢Ã ÄÀã0+"^$,‘‡­Æ¶jÕJ㘱cÇêPÆ«afWDÃŽö´”¯£D<3b ;‡(¼72`À:ó\ÊšõÔ¦ñÍkÄ%6Æñ+JÛaë(E򣯮#ñÇ#6o¦·þG ¤…­ßNÀš®Vdc”Ü”gJ¬8K´% CP"/“té•+m‰’^Íœ‚»5sÿ˜™©_ÚÿÏ­Ôa`003Â/؈›õ¤€w®ˆ"Š€zŠhæú¶QRh-Ï¥ˆ6lªoëÿØYÁ§CµIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ReconnectOption.html000644 000765 000024 00000030670 14042362131 025711 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::ReconnectOption Class Reference
MySQL++  3.3.0
mysqlpp::ReconnectOption Class Reference

Enable automatic reconnection to server. More...

#include <options.h>

Inheritance diagram for mysqlpp::ReconnectOption:
Collaboration diagram for mysqlpp::ReconnectOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::DataOption< T >
typedef T ArgType
 Alias for template param.
 
- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 
- Protected Member Functions inherited from mysqlpp::DataOption< T >
 DataOption (const T &arg)
 Construct object.
 
- Protected Attributes inherited from mysqlpp::DataOption< T >
arg_
 The argument value.
 

Detailed Description

Enable automatic reconnection to server.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1DBSelectionFailed__inherit__graph.png000644 000765 000024 00000014207 14042362133 031061 0ustar00tangentstaff000000 000000 ‰PNG  IHDR•‰%¶z¯sRGB®ÎéAIDATxí ¸MÕÆ—±2•&d,B%åÉ’ÍšJ¨T¤A“) žQž(e M$C nQ†Ò@„&t3“Zÿï÷iŸÿ>ǹç®{ÝÛ=çZßógïµ×Z{íw½ëû¾½ÏvßVÌxóä s°/ß•G@ð¤òDÈq<©rRßaád‚`Ù²efãÆÉ4¤”K‰%LíÚµ“f¬IEª]»v™3Î8Ã/^«í9ÿ!C´¬G:– *˜ªU«¦&ùí/YláÂ…vË–-gëÖ­VžÉX!‡;w®­R¥ŠÝ¾}»mР}ýõ×­È–*UÊNž<ÙŽ9’ß4­L¶ö'Ñã?üðƒíÓ§–þù¶ÿþV¼œ=å”Sì°aì<+³Åг¯¾úª=øàƒíš5kì”)Sl:u´ýÝwßm…$–±žxâ‰Vnçí#õˆS§N5×^{­¶Ç{áÍ&Mš¤^†¼Mˆl~ÿýw³víZ=_·nÝŒÌ\ýõFiJ–,i (`J—.ÏŒ3Œ,ƒ½ôÒKM½zõ çÁ猧M›6æûï¿´I•”"óî»ïjh#t§üóÏ?¬þùgsÄGDö!ZFF¨ü믿Œx:#^CCØE]¤Õ!/&K¿Å[)qØÀ„6&»P¡BÚ–ö ò`‡rˆ~6ÅKévì?„ÀÃ?ùäc`x(êA:®œìœsÎ §ôwRýL“’„ÉC4¬ñ}Áèöé§ŸnÚ·o¯$ª_¿¾†H&œ„œK¦“ݺuk%‰6a#ŒÎ™3GCέ·Þj$ïQòuïÞÝ <ؼ÷Þ{JD¼×Ûo¿­¡…Š+šß~ûÍR8àõœòî$·Óþ#cÎÇÍ¡ú¤“N2’K)1¹¦X Æ[žÔûÿu—è|™%êA[uÉa‚]ýïÙ'a—»®È~¢ QV;h’¨ÇbÏI‰¿ŠM5uú”ðé·x)MÄ£ e‡¶6lˆ-vÞOÆD=¥ü90a„4}Þ5nÜ|‡Ú¾Š'U&ؽûùih™þ\2wîJùÍpW&-üaOªL80kÖWòܘŠ-,?×,ˤ…?ìI• ÆO“Ÿ\vj­-[vÈo|>f™ñ¤J€Ðöí»ÌìÙ_G½)°dÉ:ù¿‰[´ò‡<©p`Ú´/L‘"Ñ7È… 2“'/MÐÊò¤JÀ—^š/¡oGT õ1cæE•ùh<©¢ñˆì¥§o“÷Ê÷¼É)üwcÕª_åý÷äú_:±cÌË}Oª ÐOK[-o†î–7>ÒO‰D¶¹œ;wE-}q^Üñ0ÄGâð Ö¾ýp3|øõ‘Ÿi5:1~#_j¢³PH üÿ=«‚ ˜³Ï®"owzÈ¢@гãÃ_P|Ѿ!àIåˆos¦äûâŽ×—“Õ<©Ñä¿PùôÓ ,O*7œ|­, àIå–Ž@I5O*G¬|øsÊ“Ê(_Óï©Ü±ò5ð¤rÊWsGÀ“Ê+_ÓO*G |5w<©±ò’jžTŽXùG Ž@yR¹åkº#à=•;V¾¦#žTŽ@ñ†‚KÁ ,O*7œô ÿ–‚XžTn8ùZY@À“Ê,ÿHÁ(©æI刕¤à”'•;P¾¦;ÞS9båß#PRÍ“Ê+þò¤rÊ×ÌüåÜ0ÑÒSi4J¾ø.^ü4[ @Á|q-̉YæÆ´kŸ¹þh¼ä’K" ål)½½eËg¢;ówJ_C0HÆå¦:j®‘* ÎÒWÍgxRå³ M†Ëñ¤J†YÈgcÈ×ÂqÆôôtS½ú¾ÿAý@`2<ÿh6nÜ8\”+Û|ðJ㢈‘ –¯I5}útUü>|ø>ÏÅĉUUEÑÀÓÍ-R½ð ª2^´«´oª*OÃßË/¿l®¾új o2dȃbg¥J•TιX¤d£®¨£›Q£Fi=$kQŹEåóÔSOÕ6/¾øbÐÌ,]ºÔ ŒlíQG¥*¢D‘mú…u³råJm#jíFTÚu‰h¥nSçñÇ|½¥oQŠ7ÈâŠÂ»©U«–As™ñT­ZUû~ôÑGµ=wÄuëÖUqðÛn»M5“'ªªô’ê;ï¼c¾úê+ƒ/ºÌ` ôª÷ŒÜï¹çž«ÍHãr¾Õ«W›-Z˜‹/¾Xµ!až[n=¬xýõ×­{ôèa»víª} iµ ;2±¥S!“ž«cÇŽ6øŒ?^ë‹®³5x+R¶V”âµLh9.šÌVdzµQ¡·ýû÷·¢.o…DVtšíC=dEæVë ‘­,.+ÝVˆmo¿ýv»sçN=.:‚öî»ï¶mÛ¶U%UQˆ·Bj<=z´Ž<o"“G ŠM¢:ûr,ÏÃ_Æ M½zõÌÚµkUL›mÔÓŸ|òIƒj'ǧNjøííì³ÏVÕÑÊ•+V¤ld‚ Êíx!…ÖC[9ÖP½ð µX&W=;B:ƒ63ž#exŽÀúõël”Iñ(ª¤ƒ R/‰š^MeÆsÕUWiÕ™3gª¶2ßxÆ\¡B3þ|UEÅË ÎG”z !‡ŠQ†CÞ”)SÌ„ ´ ãBï§m×®ž lP¢ÏŠ:kp=9õç¤\ ÒÄ““½ì²Ë4§àU^¶ù&$öÄÓYé†0Z¦L탾ÈŽµ°®h+©”‡ËbÛû(·#ÚkHÙ2~À6a4,—Æâýe aÛ·o7|j×®­á‘Œ~3‡x%K RÉo‘âÑt(ásq~êæ¥åiNåráäB(­óa›¼BÂAQ}Þ¼yæ—_~QÆD±Bš|&Ö˜<êâ%Ü*A©3kÖ,­Š‚;ýbBÕ[°MÝ­[÷(<0‘"°ù“ÊXð‚eË–5xò:ÔÞ9§g”Þ¹SÄIÈÕ| ’qG‰1^ú^´h‘ÁC‘—aœ+09!ãÄÈùȯ’ÑòÜSe b’ÿÉ—Ôû"Ö’ƒèòM¨Ãý3±„GŒ ,è/B¢ A$Ñ6Ôyå•WÌ›o¾i6mÚdf̘¡Íî»ï> Sݺu3-[¶”?o=W=äÈ‘# ŸÀ$ÇS¯9iÒ$#Šñêð@’Éé´-ciÓ¦ž¯W¯^²hÉæÌ™#ñx¸áÑá™°9xð`=×,yZäšhCˆ¾ñÆÍÃ?¬de¡Å³àšãûOÊö%!KÔÖ%QOÔ>|LîÀ4É—‘¨ËjÙÍ›7Û?þøÃöìÙSõà 7õë×·âÍ4AÊIÔßÿ}+N“ã <§¾ÅKYñXQÝIxÓDûoù[Ú‰: ·JÇ®, vúÉ®åûD=³•ƒw!$´nÝ:ªjÅŠ£öÙ ç{”¼ŸX;î¸ãb‹rdŸÜ.6¿+R¤ˆz¥Ø^8\^¬X±ðnd;ÞµG&ÁFÒ†¿BSp—”eöM˜!q¬N:úü'ؾśšŒ&.¨“ÛßòØ ·OñŸ÷Ÿô¤Ê*¡@Ï6îˆÂwXÁ1žˆçµå5©sãúÿ¿œs£wßçþ‰@v“½ÌÚOzU›êŸ ÙbÅjÊ›Ÿ…SþZ‚¹ÈÍ7?½à‘ƒ/Y°`•<†bFŒèhš7ß÷7N™ÒU|øs˜¾ ÒôÙѸq^?Ù.ÿ_´2i÷îäç2ýécîÜ•eRo‰ðž*1>ò3ÎWò{Þ˜Š-,?n/ˤ…?ìI• ÆO“ßñvj-ô”ÇŽõ!0È|øKÐöí»ÌìÙ_Gýê¿dÉ:³q㞘µÝŸyO•`ö§MûÂ)ý|¸páBò*ÎÒ­ü!Oªxé¥ùúvDÕ Q3f^T™ß‰FÀ“*È^zú6y¿imd?¼±jÕ¯ò^Wz¸Èo‡ð¤ ÞLK[-/Éí6¥J¤Ÿ%ˆls7ˆ¼·øø'êñqÑRˆ#¯=évûöÃå…ºëå•áBºß¨Ñ‰ Zî߇¢³Ðý‹½®¾Aƒ*‘²‚ È[˜Uäý(Y” 6|øË_œ}<©±ã¥¿<÷Ûq¬y]Í“Êqø òºcíý»š'Õþ=ÿ¹rõžTްúðç”Tó¤rÄʇ?G <©Üò5ÝðžÊ+_ÓO*G |5w<©Ü±ò5ð¤rÊWsGÀ“Ê+ÿHÁ(©æI刕¤à”'•;P¾¦;ÞS¹cåk:"àIåo(ø·ÜÀò¤rÃIßPðo)¸åI冓¯•<©Áò’jžTŽXùG Ž@yR¹åkº#à=•#V>ü9%Õ<©±òáÏ(O*w |Í, þƒ°³gÏÎ7(U ÈÑk)^ü4ùC²s´Ïœc^õ'‚SaÙ¨ÿöŽX¢„×]w]hé«îÏ p@¾)Z‹|NÂoäžT9…¤ï'‚€'U ¿‘S$ÝŸ0Yµj•êÈÄS•ÊêE#\–†> "èb¢ÉâfQï°V b“ÈÑ2$ncÕ°hؾŒñË+VDÉèý&úMe³nݺ¨*¨–ÆSØ ŸcñâÅ…Õ°ŒnT'¡Ï?ÿ\ÅÂ3S' 5ÑͤóTH׊ÄEì8³µ($jê(Ê­éÞ½»*µó¶eO=õ”jÊ[8b(®£äލ#ʤ¢§$ÌhÙóÀõÜÛ¶ñûeÔu†åP:T±/>èPdzð9yäUgW/¶lĈ{7¶N¼ý,{*Ä¥‘™Å ÷‹2¨¨¨«Ì¬(”G$[¥rÐÀqãÆÚâ ¨‡€4w(ƒâA *¤ª›Á ÑI^¶l™ÁDUE•³nݺ¦K—.*‹ZhÍš5U: ?­! ª[Á6}áD]»…L¨}BLTáM‡tÒ‰:¼n3NŒÈß2éëׯWg¤i©ÇÃP„·[µj¥mø‡þ™ˆiÓ¦i]”M«U«f–,YbÀ<À hZZšõ÷ˆì-ä¦dF\è͆  ÂßxQª×ò@Î 5Ó›nº)r~6)GÔ¥T0Fe•y ¤uƒÊÈñRoéÒ¥Š§(ɛҥKëœ0/{#É›˲§õO ·Ür‹ºQVËwÞi4h`}åBÙXVa‡€£F2¢2j&NœhèGdïÍý÷ßoP;_¸p¡J¸AxB½OŸ> ²°$óŸžžn>þøc-gòÈð¶ü÷^²ãM0Æ…t,çÀkB•€6L Œ§C0œv¢&ªõçFvö¹çž‹ZÉ„1H÷è£êä÷îÝ[ÉG=äüq•Ö%œ‚êô„Õ Œ!4޼îO<¡úËe°ß|PÉL6$£Ïàf,R1vìX%/^Rçø •éEƒÛ3Ï<£Þ9_ó„&uv,ˤâ$xˆ5j¨5ßÁ6{Æg¨x6+†œ]c¼û¯ !\õêÕµ¼B}°j1&ü¡E‹JVÊx¶äaámŽ… eÐ@c¯T©RI< ãfBº^½zJø&MšèJÆÓá5YÕL¹Þ„10±áÁÉÙð8œ]f”ßñrçœsŽ^ “È¢`|o“²@¨‡Þ2Þx4¼1†’=“ Î`‰À8†®!øúìÔ©“ {#¾ ÉEþWëÆþÃXY,äXëøôÓOu>Î:ë,vjnШΎe‹TÇsŒž‹‡^LLØpÓ jÁ‚úL6+¡dÉ’êÊñ ,V«V-Í?Hx™@V. É5È«1è‡ÕKbÍí=9å¬.r&Š•x¾ñ*ôlsnr >xB‰1¥/¼VãÆ©¦^Ò ç ÷cµâûöí«‹¤Y³f¦ƒ$÷ä)äF†ú㺧OŸnÚ¶m«c¦ç‚HÜœ°@5j¤^BîÅx0ÚSÿŽ;îPŒ£Š0kÔÍÈÈÉ{ì1ų|ùòšã‘F„öÜ` 0@Ô+&ëXEu^€Dcq@ºDç ÷ÞΕßþXiL I.Þ PcVEø „PܹA& #ÑdâXqÔHGÈaâpÕáð©røB¡!·A÷x¼¹ND _˜Ë`—Ô%qŒgo¼ñ†ºæxÇ|Yr ã¤"wÉ*¡€"vÕ’‹Ä³xž+^=_–wäÊÝ_Þ]Ž?sR wS›íßüôovfãÙ„o~&Ëý RþR~ “ï<©’oNR~DžT)?…ÉwÿºíâõÝ‹ãIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ResultBase__coll__graph.png000644 000765 000024 00000063711 14042362133 027165 0ustar00tangentstaff000000 000000 ‰PNG  IHDRyžNײsRGB®Îé@IDATxíxÕúÆ?½KQEA,èµbï].ؽW½vÿö.¶k÷ÚëUñZ°÷^Qņ4AE@Az‡Âü¿ß 'L&³›Ýd“l’ï{žÍîN9sÎ;“wÞ¯œZš˜†€!`†€!`T+jW«ÑØ` CÀ0 CÀ0FòìB0 CÀ0 C "`$¯žT’!`†€!`u CÀ0ªŸ}ö™ì¶ÛnU¡«ÖÇ,F`øðáò·¿ý-‹{h]32‡€)y™ÃÒZ2 rD’wÕUW ¹bö2 Js \tÑEòå—_–ãUjMÙ…€‘¼ì:ÖCÀ0 CÀ02‚€‘¼ŒÀh†€!`†€!]ÉË®óa½1 CÀ0 C #XâEF`´F C & 0fÌiÓ¦tèÐ!#Ã]¹r¥ 6L&L˜ ;v”wÞÙ½§Òø?þ(íÚµËH_ü¸7n³¶ë®»J£FRéV©·ùøãÝøëÕ«Wê6lGCÀ(Š€)yEñ°o†€!`$Dà¶Ûn“O>ù$áútVL:UvØa¹óÎ;eáÂ…òÆoÈŽ;î(Ï?ÿ|Âf vÿøÇ?Üú¯¿þZ¦M›–pÛtVøqýòË/2hÐ 7FÆé_+V¬H§¹”·ýïÿ+<ð€Ûþ­·ÞH¯™!`d#y™ÃÒZ2 JFà¹çžs$eÛm·•-¶ØBî»ï>éÙ³§l²É&N¡ºæšk©¢›—­¶ÚJæÍ›'\p¬¿þúîû¨Q£Ü(î¾ûnÙ`ƒ dÏ=÷”ýöÛOÆŽ[8ºÇ{LN8á·ýFm$o¾ù¦[·Í6ÛÈ¿þõ/§°y䑲|ùr·|Ÿ}ö‘I“&ù|Ùe—Éî»ï.|ð\{íµòÌ3ÏÈSO=%§œrŠäææJ\[ÇsŒ :T,S¦L‘ ȪU«ä´ÓN“V­ZÉæ›o.Ÿþ¹;ÎN;í$矾Súú÷ïïˆ$+î½÷^éÞ½»ÃåÁtÛ†ÿФ/üš>}ºë¬Y³dÆŒ²õÖ[ $•Œç=zHçÎ妛nrÍüôÓOެ‚ç9çœ#«W¯–Ñ£GË¡‡*{ï½·´oßÞõõ ®¾újyûí·5‘±üù矲×^{I‹-d=öpÇ›ˆì»ï¾ëÞ!º¯¼òмôÒKnÛ¨z6{ölùç?ÿYø‚PB†!s_|±#Žô³K—.î;$ ¢ ¡ž9s¦[¶ÿþûËk¯½æŽ !^ºt©;/gžy¦SQï qçøãw¤nܸqŽäA®qCóÍ7KΤ¼!yôýÿûŸ;Öõ×_ïÎÙÈ‘#å‹/¾Ælfë°˜¼uXØ'CÀ¨ì²Ë.®Øíï¿ÿîÔ.É¢E‹äŽ;îµãŽ;ΩC¨o¨m¨|(U'HÄÙgŸí û¡aݺu+† Û¢ˆñb_ˆvî¹ç:µêä“Ov$c@½ùÏ(\Q‚CÍòqiѶh³nݺ…„‘6!¨,‡üñ‚lýõ×_R«V-¹ôÒKCÉõ۲eK¡0Äå \¼ÚèûDZ!uÞZ·ní>Bœ7Ûl3iÒ¤‰‹!œ;w®#šK ×îš5kÜ; $­k×®2bħªnºé¦rÈ!‡¸m8àùðÃÝ8rrr ÇËJƃZÉö`uôÑG;uµBˆq>ÏÆo,·ß~»¤’mÌ C`¦ä­ÃÂ>†@5@bÕ®]Û‘šðêׯ/x s¯#‰âƒj†Òtúé§;«ÖûE %Ê[^^žSîøî—³lñâÅ~“bïˆNØ _(~:ur‹Si ré‰;A![„ «S§Ž+ J·ÝvÛ9õ’ø¿ ¸õá?¢ë_žÄјBùÌq}ûì›Å’Š+‰Ë7-æÇÂç0^|÷FcÈ›ã`¶Ö0 C š"0nÜ yûmß²jU¾|p}õvµùªémX5 #y5ì„Ûp CÀ0Š#0aÂL§ð½úê÷® dïÐC·–îÝÛߨ–U#yUäDY7 CÀ0*1c¦ËoŒ’×_%×W²×Ǿ.]ZWLì(†@†0’—! ­CÀ0 ê‡À÷ßÿ®dï§òµk×\?¼¯vØÖÒºu“ê7XQµCÀH^µ;¥6 CÀ0 ò@à‹/~Ñé×¾—wßëêðqD_-ÍÒK5ªW‡³6 2#`$¯ÌZ†€!`5 ÜÜÕòÁãäå—¿wsëî±G§ð1¯nNNíš…5Ë0’—å'Ⱥg†€!½,X°Üeç¢ðýöÛl—¡‹ÂÇŒf†@e#`$¯²Ï€ß0 C Z 0}úçÎ}ùåï$//_ {ÄðuíÚ¦ZŒÏQõ0’WõΙõب±´oß^þúë¯;~xÙèÖ­›üòË/ek$Žǎîܹ¯½öƒ¬¿þzrÔQÛ¸ Ý-¥Ø‚mf”#yeÇÐZ0 B yóæòÇïf†@:Ìš5Kz÷î-¼W¤A _~9I†ýZ>þx‚ì²Kw0`[Ù}÷R»¶N¹af”#FòÊ\kÚ02‹€‘¼ÌâY“Z«,’ÆxÉ’•®öÞ /|#¿ÿ>OŽÛÙ0*#y‰võ:V¶‘<.îÜÏ?ÿž>úIvÝu3sçzpì½ÌÉ+3„Ö€!`T•MòV¬X!ß~û­ÆUí’‘!ôÑG²jÕ*×V­Zµ¤GÒ¹sòÒ¿ýö›L›6MvÛm7ÉÍÍ•÷ß_¦Nª1^»Ë–[n™‘~•¦‘·ÞzK<ð@ùþûïeöìÙ®‰ºuëÊßþö7iØ0±:õã?J»ví¤C‡¥9lÊûd+É  Î;pàö²É&mÛÙgC e¬jcÊPÙ††€!PÓøóÏ?åÿøGÆ`0`€Æh½®ù_ʧŸ~*{î¹§\uÕU Û‡Ìm»í¶²hÑ"¡/;ì°ƒ<öØc²téR¹ÿþûù\¶lYÂýÓYñßÿþWxà”w9úè£Ý¶×\së czï½÷ñ|óÍ7¶óõ×_;ÒšhƒÓO?]¾ùæ›D««Õò¦MȱÇî óæž+¯¾z¶Ô­[[Ž>ú­½w·&nŒ”åËóªÕxm0€€JÅf†€!`T š5k,\¸0i_U9 ”믿~pê©§ÿú׿‚¶mÛ'œpB jN jW DȵñŸÿü'¸öÚk%ªsA›6m‚³Ï>Û­›>}z°ë®»]ºt N<ñD×Ö¤I“‚M6ÙÄ­ïÛ·opÚi§¹¶8âצ£àøãzõêåö{ã7ܶ?ÿüs°ß~û¹ÏÏ=÷\pùå—»Ï-[¶ &L˜à>ó‡ýûôéã¾?>PtìØÑõI¿`»í¶ êׯ\tÑEn<\pAá¾|xñŃ#Fyyy®¿´ß³gÏà³Ï>sÛm¿ýöÁüùóÝ端¾:x饗Uƒ}÷Ý78ôÐCÝXÀî§Ÿ~ Z·n´jÕ*P….ˆë‹ªˆÁÉ'ŸtêÔ)8餓‚zõê¹v8à€@‰§ûÌŸë®».8äCÜw%¢n{Ætï½÷ºe_|q d0:t¨k\9w´1dÈ Q£FÁl¨:ÛÆðÏþ3Pò|òÉ'®Í¸?3gÎ T1Œ[•õË>üp¼bóXнûeÁùç ¾ývJÖ÷Ù:˜˜’WDÚa‡À¯¿þ*¸U_}õUyê©§œÊ…JÆw¯:uênRìé§Ÿ%rýõ׋’@9r¤|ñÅ®–ÚwÜ!n¸¡(qpJ¥[Â6zôhYo½õdÔ¨Q2gÎyçw\yÔ«^xAn»í6Q2çviܸ±(AsŸ•àÈf›mVØ”A×{î¹Gî¼óNÇàÖ)ù‘ý÷ß_^{í5ÙúÜ)v·Ür‹sé¢öáæÄ¶#<Ò©{Œ·ò°aÃdàÀrÅW¸Í¨—ŸŸï>+é‘ 8—/}>ì°Ã´ï+ò¿ÿýOš6m*JœD «ìµ×^×ðüî»ï´ÜËÒ A-²îv‚Ë–¶P•¨ÉÞ{ï-‹/%Ô‚BÈXÿýï»ó:I?x1Ö|P.½ôRa¬`ÁùQ2.J:cû¡¤_ž|òI§°n³Í6a8ªÍç=÷ì©çÿdU|/W×m;Q¢§±{7ËÓùó3£ÜV°l EX÷_Yd±}1 C ê"€‹·¦ªL¢Jž¨š%Ý»ww.ΣŽ:J§¡zSf̘!ªÌ9³ñÆËí·ßîHDcÓM7•?üPÎ=÷\Ùh£ºhYiSEË‘<ƒ,q,¤r¨Ê” <غóÎ;ËqÇç>óJ<Û| “'OvÄrùòåŽ\BqUvíÚUT¡sõ‰sƒ„åää82[ØPè„“>£wå•W Ä7Yiâ!tF ã æØª¢ÉêÕ«cû‘T…Ó‘WUCGG”q#³ dNU‡'cßgŸ}t&ˆ#ܱÞ}÷Ý"ûtÐAî¼q‡GUݸ!îî(&4 *©¨ªêp)Ò`5ûÒªU9ýôÝ•ô_¦×ë=¯)©¿Añ}R ýÏÕl´6œL P'X†€!`d" uI]–EºùR7¬Sˆ ˆ›nºI¶Øb …zéoêBu$CÝ„n_u‘iÃiÑ¢…û¨îQ§TñÅ/ã3ËQùP*•Wö.»ì2yöÙgeÇwt ^(T$e„MÝÆŽô 4¨p1ÄnóÍ7wÄ2¬òAÔÖ¬YS¸Ôm[ø½I“&…ŸQ:ÕÑTøþ“í $1u£ ‰#ÞÎ;ïn[0àø`Š%ëG*ûWçm7®¯ç|GMr9_]ãÿTÅv±ô﫪¬©z:^¯Åu„½:ã`c‹GÀ”¼x\l©!`TC¼Ú¹CAƒx`¸5YÂ)j¨o¸\!7¸z5q@³—;ÒŶ¾ ”(M|p„‰Ø¼'žxÂÅ A`p÷Î;Wî¾ûn·=±p¨†8âõˆû#¦-j¨€šô K–,qY¶>c·%qy¸˜½Q®„ãó¾råJ!68BT­Ã?Ü>\͸iyä·±u´‰»õ-‘1FMq„µŽÀh_ Œ•R4Ä«ŸhÛ¸Ì)û‚jÉøþþ÷¿'Uà|;Ää/ 1Žë®w¿mô˜5íûæ›wÔ‡—#åê«ÑÑrï½i|ãK2hP?÷êÐÁÔ½švMX¼švÆm¼i#ÀM›(î¼²*¥%ÂÆ œ˜0n|¸Úâl̘1N}ŠÖCAá&O¼DûôPU¦'V©:Y¦êäÝ|óÍŽü@ô¼QÛ ²v­BdXN’„-CFläúkÞ­{ã7º6pWBz¼ûÑ#Ýw,<\³áĆp;œkËGŸÂF\×E¸”XÁEÝ6¼ŸÿÌøñ‰úòûï¿»ñ'êŸoË¿£J‚k:.Vþÿ¼îM\‘Ùl¸üp‰¦Jð Xq…$a‚Ǻÿû¿ÿs1táíŸI^Àíš CFY ¿ˆyC©Kv ®‡qãÆëÿ+(fÄøEÕfrPà̪. ÔU—û¶®Ðò³ÏžæJ¯»wòÉkì©eæVÝ3›¼çFò’ãck³âq(‘@Œõ¿ˆyòFœY‘wÝu—ËJ¼ð 9".顇’~ýú¹u¢¯ÅEü•½udñ™gžŒ›ô™gž),ƒðWå`uŽÃz‚Ù©ñ¡ ¤é«¯¾JD ø`¸N!MÑÏÜ,©Aæ_þ8(y(oFÚ€Ì^rÉ%…õ´“¬6ÙùçŸïnîÑ<¥AÀM òºàû‡~ØÕFc Ô/ƒ¬ÜðÁ»1q\ ‚‰kÌ—­ \Žòœ⤨w6Î ª#„Í´[ÙfL¡%g%õ×&*bØÂ™¢~9%Gx%²LΘj çüøn{ÈåXÓ ùk4¼ ä—k„›vÚÉ]Ï~=×uù̪ݺµÓß¼Ãu ºkœë–ÌÜí·¿^?¶º{ÕãŽÂH^!ö!  … 2B<™¨c(]ac.Q\žvC´ügnª…³Å@rÚB);ãŒ3A£ ×T-Ì ‰#6Ò5HŒVïw êía6Ý9çœSX/ äËX„?CP ý‹˜)o4Hó“Òw3È£·dµÉpÏBt!ÃarEy”(¦½ Ï+Jðý)§œâ’8&äœ9.¡EÅC‚$B PGQ‚¨‹Fÿ}@¿ïdÂKÑ[”/ÔMO ý6Ùò¥\ Šª·’ÎL©Â²((ŸNʺàv‡`q­ ’‚¹ŸìùçŸ/,hVˆãTa\È>{Å’r,\G\›Ñ’%\/‡Þé×ê4… å˜å´Ç”j^µ…ò¿D]B®?®%Æuâ‰'º¬ÛDª0Q5ÝbÈ\CÑ>øõö^v6¬ç2ÈÌ}ôÑõ÷o®þ~Þ¤¿OiaðÉe?€µPéÉ«ôS`H†®O”..W¯ŒE÷IVm¹‰’¤ÀM“ÏsÃææ†"GLJ7&@iŠ7Uo¾ßýòð2¿]ô¬FÔFÿBUôFŠç¦È‹Ù ÂëqRþ‹Ö&cq{¯0±Â…K†(ãaœÞpWRŒñ˜ ħ/õÓŽ…Ê 9¦Ä2ÌÍä2j(#l ñì@1Ô. BC»7C_ò"üÙ­Lð‡˜9bªH Cóã?vI~óTj“‘1Šjç ÷7kHÓv•TÏÌï‡R‰ÊÃÔ\(x(y`ú‚KEB62A!HSÔMQÅ1³Áˆ7CY‚,ÿˆÛ™1iØ’)œ™T…9fª3f„gÉHU†Dq~âfˆàØ\[(ßœgp‰Æ(rÍ@q {#6“å( \ëü/xƒð'še$Næ ª¦û¶xgJ7b!–EÔ{âPqG›•MšÔW¿³þþ]ª³•¡ç`²þk5täE ™Y~¶–Ë#yå«5šIpêdêêJ˜ê\A<Ý?þøã)— @ý¢î—NÐîÈÊ%¸±¡X ¢ì@úpçâ–…Èyóí ²‘\鱆;}ˆãÆAŽ :áÏ´ãÛr+"èª .,ú†Bˆz„±¤‚Ê:ާ6¢|„0¸1ò")…%ä E0‘ùþá–Ã]ÆXqÁ¡ÜA²¹éâÎ&Ó52l`‰„رÊ·Þ®ÈçåÓD&=,2^ã"8Od„fº·ÈØÁE6+ëÎ'dƒë•‘äš8Ûd g¦TaŽV€=yñËX_’2œLFùÂÕɃ cÇ=ÌŽ·°*̲hÌ!ª6±š\þÁ€bËÔ„0¶djzœ*ÌuUÓ£³rÐ>ç eã{œÂÇ®ìϸ« Uàaïø`$1ñ?Çÿ3sòblGxÿWlK¸‰T¨§œ3°&>’eœ3ˆ.F,2¿MüFàz¯Ûa‡5®ùx} ½\½(-4ÞöQ½†îÕØàôÚZ—ôU}±c”½ Ì *‡€Þ¼Òî³¾ ô&Qd?MšÔåUd™Ö« 4A#Ф‡@³N שrèy 7Í@ Ì.W…1ÐX¹@od*€…ËËòãkI”„M(á 4>*áúè U\Mq‹5%Лit“„ßÕ¨*T¸žãª2¨[°p™ÿàÎËòéAðó½A0æê øöô øâÈ øh× øáB¿YÑ÷ÙŸÁÈSƒ`ôåA0ñ?A0åé ˜ù~,+>~%5Þ@‹îŸÆ7Æñßÿþ7P‚¨¢hâH ¨°Uj%°î»’ @o¨î³ª«º¡Ýg°Ô©ÒUõMÌ T­ Ti ;ç_ÉRÀùÑ€@C·\]îîZâzÓ›»kG‰d j¢ÛGã<} n¸á†@I½;·zSTérçŠk ̱±cǰ^‰€[þÔX¸EŒE ·kCÉE Å’Ýø•d¸vè ׃*en|J(%î&ã¸ý“’+¦Lp׸ÆpJüÜ:Uî}ppŸÁI Šû̱é¦Ê^ q¦> ªºeú@(QŒÅ-|Ísžõ.Ї§@‰žëwø:t¥ñ‡ó©Ä5é¹KV3F.Æ??'X“ú¿W ‘>ªzœkU:ݵ¡a î¼iŒdÀg~;´¨´ϨQ£}ÀtÛsN•4»1r^Áõ:ïo ¤îzÐbÚÆlºsÅõ«îõ¤c)•ün¼óΘ`À€õº¸J¯é·õ<.(CY›BÀf¼(%9¶Ý*”–t õ ·³„"ÄQ Ž®ã;Å‹yE óLjNXщ¶ëÄèòDß}ëɉ¶/ߤSc‘©ªBäjLÔÊ9R[ß7çór%Üö¡ð¦N“E3DOT 4v°¹n«ï|nºI‘m ¿´ÙY„W.BbÉxá¦ÇI|.è’Ì+’^FEÅ}‹¡® òU…YV¨|;,C9&k›s’lÆŒð,(Ä(ª¨G¾-ŽgÉfˆ@Ù¥ \¦Äcâš¶Çÿ¡ a( ¨j$11^Ô@ÔÑdF›¨¸„IÔ!ŽE.¬¦{ÜhÓ‰zŸs¸ reÚV¯\#s'¬9?-“™ß-‘9ã—ËÊE«¥Nƒ ò×H“õdÛ¥tXÆHBLUÑQçP.™3™’©H CMÅ…Ž!J2Yèü/s.ð2 ÒûâÒ\Ÿ(µàÅ2~«PïiüÒý Hi %lÄ8÷ÛoK÷šK2Q 9Ú3Îkº ¸¡‰A#ÓÚÑ5nîÞ¸^hŸ:„¬£$Ž7®núå9cÇR5.é¬5®iûþ%zçÿ‚~Cv㈠ˆÛŸrCü†‡û–æ¼ÄÓ/ç3v,gv‰#vËç®RBW[òó}­ñ›¹÷zsäÿu—]Š?ÌÙpí\Ûd4SV‡ÌsÞ!µ3B%xÈ$äòÇuƒË·?ÙÕdR³Œ âA‰?䜄Ýád>)í©&¶˜äHeeÛŠ«Ül?þ…ž³|Gö¨ÇÇœºf•@9„@sqÍ Ò" n‡ŒLÿUÚã'Ú/]‚G;(aƒD 룱Lá}*ä3Dí×µJÛZµÍ‘¶ÆEv‰QYViàzžÆ AÐZ¨ç‰[£u*J‘~7×ìÓ­ï,²¨:}I—àeRæ!‚Ø«¨y…0º¼4ß!aÄ‹&2âÈÒ1þ/üÿFIªw´]âТ§¦³Mºç%ÚnÜ÷Îõ6—)Ÿ,ZµkI°&¼¥ñqe«TåkÚ±l$…û)™ñÔ’D‰…£L–d$Â<ùä“îï(¾$žAòP¡I€A!Ì’×°a]Ïíç^”]yâ‰ágø®Zï«wg%ºú@hVi!yÆ sî>-¾Òze®’àÊÉV’W¥Í[ 2QIU˜°ñ¹ÞŒ÷ø¤øPòW¨?0¯ÀÚz‡u¤­a岩ºTzß\¼[’¤N÷¡·)„.l¨5Ñ¢Ìd@›•Cçß(†O•¯ïš.³~X*ù«Ö(Ù+~¼œzµåÙýÆJ³Nõ¥éúõÝ{³ êI»^M¤yçää—&/Ê¡êá’…°’8®É=ªß•˜x ¿càØo_QïL9DüOr¤Ö{C–÷Óùeáw2á(ÎÔ ¯/÷Ï«i/+¹»Vù¦Š ‚ÕÑ ÜWÎT¢Ô¹l‡_³R‰b‚ì·oN6u‘æëöG/‹?f³ÍT]Û¹€´ù,Râ,G] ›·Æ–•3¸ÜÌ ò@ m¯ÆrÈ“Ýû¶í–úUZSOmãvuÝ+QíÑBµª+‹gäÊ®…CE §º Ü!|ÌqzÒI'¹Ôøð>¥ýÌ@T3_ǵnj ”) >5–˜ó‘L-ÆG&®vÓÕáI·ODò~üñGW•‰Ñ3j«kÆçC"?ÝªŠ˜ªv«–®k¾–º,(Û%yìS‡'蘧ßoNY1£(qCiƒ´Å©s-·‰Ä´ég½‚šfë:²önÖMÏ*¶Ø†@ÍC L/E¸µÖº„{¦²2ñ•¹2öÙÙR§~í¸?’BzÑ:)™L±;•²®Üƒîí^Þ•»Ýv×éŒ[ êžeåfæ´ÄÜM“7Ì4Gƒ rsRÀ‘B™LÙBj< ^ßygA¹‚L©D1GRÀ‰1à»Vòv¹ûî»]L©áL‡Df¦7Hs4²=jS$aLóBm!êQgÈ—ÔÙ „LXø3ÙH7Üpƒ{‘±‚Ø@¢SÇ@¤˜›ó»ï¾s“‡“ÕD<Óhñ™”«Ä(rÉø©‰Å5Ôtzúé§ÝqXÏô4»ï¾;]ÁÑè”7LÅqPãúÂ~Õr ÆàçFe9Š$cbz¦Íúꫯ\±MúFF„2Hà.AºÔoÂâ¦ÞL:ÔzoÌ»Ê4bôËÏKIqO¦7bYIÖX”¼}{†ÈËkz—«îÎ0Á£}Ò•±×L]õ®º<_S×çsê¦xUßW -vœ¶»ˆtû—Hß{Dú$r˜ž‡ªÌÅå+'˜ž%=¬ºÝH›äétK®#ć*äÌ]ùè£:µì¡‡ró€Bv0&Àf®O\¦LÙ€¸Q7ˆvÈâe[&cÇEê ûâ–yï½÷\}!Ô=ª¼c£GvEE!Š)ÚŘßÓ»Rßuz!wŒ§žzʇl'È.Læð„<’šÎ‹ÙvØa¹é¦›\ÿ˜‹1èJ1SßH+õŠ>üðC7O'dP§rý¦?dRétP|t|36êAx©OqT'Ä3®/ô“™Ìc ‘»i 2Jÿ!‹>ˆ ¤òûÍ7ß8Œ8<Šf&êÍ“ÚOª?ç‘~ûIÍý¬LPμ‰×]wk'ÑŸn-çÈÁÁ¹Z8÷Ñ·l"¶F]¸»Šô¸POÜãÊÊ¿VEN•¾£¼’s„.ªìvT’Ùj{‘&º/™©f†€!`Ô H!d“ýÖ“>§´—VÝã³TQ MËuÉ ^8YžÜu´<»ï8Y¬ËR1¶Ñ•;ñe]*ê‚wá…ûªhq£¼þú=z¯>¶RúQQã-ãàm [ð—T?ãú#M›˜·)S¦¸Ï¨@¸7QÑŽ;î8§"A PÛPùH÷†HPÛW#®TÚð£q±lËäμØw+ù@m¢’8$c„˾„?£n½õÖ[®4 $•‹ªâŸÌ¤ðÔ1\ظD!M:?§KwÃr yô5­P!]ô3Î8‘Ñ)oèË!ŽLbí n\ú‰† âÂöFœw¯‡û™mÀUŽÂ§` s$:ÕÕï׈:_d0A9D5D=¥-Œý ÚLžÌf-m&ßÕ:Q¶i7S¥Ì/tÓÚš©¦.ÕüÈK ß›ti¿w²æl!`†@)èÒ¿…fõ†ÜÁk“Aê7‹I<Óö_4‘¤âW°&,VÌæ›n)÷=¬ž³*ƒâ\$l¥"y(\Ä"<…Ë I¸õ x+Ô+’(poR­å W"d"œþ7-„Ì +Ì/g1gÉ ƒ‹CEc¾?’;˜^†X8È)¦“ƒ;òç¾èˆ)JäÔÏI ±c~AÆ9ó†ê†»6l¨zaó•á)Š­z×Ô:°c âéÄ”·ß~Ûuï´I;L§ƒÅõ‰å%õC'4w˜hâI,û…M¾ÇÙ’¼úò«ì-Ûì>PWë/ÆÂÑ*É~¨‰¯‰ÌÿN/˜ _¾¿JÍ CÀ0Ê ‘!$‘ôø¦²h*5õ¥É ³FR¿V’OÈ–W8 "ÇEYÃå‰ëªÝ0Ë!C†®A\Œ¸Q¦ ~#:\‚Qà Y!v ¥‰ÌX ¥ ¥ ¢)Áh …+úÙ-Xû‡”súƒ«˜©bP°˜K’Dܹ¨kÞPåHŒ Ï(Žwå•WºB¿,‡’yKÜ!d–X8ˆÄmqã¦b¸Gãú‚ÊIqŠ>\ßÉ µmï½÷V‰ûu·8Ó§TŒ>`ô—4$…°ô¦¿*-zkêE"{}Y ±»ºÖ7¿LŸ” ¯×§ôMÛž†€!`C€9|[mÖÐ%ƒluB;érBmY,ÈXûÖPå!Q’ÑÀ p(Y~æ”;Ô/þ¸ q3öîÝÛ%mP®Ä+LìïÛAEÃõHbÆW\á–Cúˆ‡ƒŒà*>ï¼óØEößÿÂÄ‹ðg·2ôW(}ä8>âÙˆ¯ «‰(hO<ñ„sICV!ˆ(yBö#ƒ~¡j¢B°øÁCùc꣨bG7Ø×¯oß¾®ßq}¡I,$op úæ÷õû‡†å>žsÎ9ÎõKæ0ñx$„$2ßø2A8ÇblTOYƨ®ÞÓ¯/ñ½–ŠÆ­ÿ&²åµZ{NUNbìÌ CÀ0 C Ü(—iÍP· a¸E½›rF"L¦˜›Ø<p‡bdŽ’4‰c{OQßP¶HÌ»{K‹PÜÔ1Ѷ q7?¿>77×eÛvéÒ¥¸±¥0ìÎõÛGßQ1£[\_P Ù.<µM´èwHD/Õêê(yœ^ÈR&¢™ŽÙ´fé eÛ†€!àHL÷Ã?\i$<‹ò`p‰²œ>â{#\$Õ)æü~qïð¼zTñ_Àéû©ûòËÊãÝÇä}ñ1ñ–Q%&)O‚B…2&E(c(yžH¬=¾‹!‹.óëx‡Üxä—ÓV&í~IŠõá±ø~Ðo.À¨Ê• Á£ âóÂc‹ë .à’úçûãßQ'S%xìöásÀÅŸ.ÁóǶwCÀ0 C ¬P%‚a™°™3g:oÕ¸qã„eÇH彬†PEXFù8Ä,BÇH¶ä3 ŸT® a²YÑVªÄ‹d¤f±t$¤c”K žpиNV¸x0ªÇ‹䈤‹¨Q¾ÄÄ0ÁñëìÝ0 CÀ0â rÅí·ß.Ì•K,ú!‡âÊÖDX —Ħ“Ôˆ]ýõ®ú¡\TnÀ‹E… *r A(¹† ¡Èž¥!ÓÏö“'OÖâÉ» Øå½Vˆ™G-#æŸíWzä‘G\ÈmÒOÄ'o .”~øÁ•MƒC0ñíá‘"yuŽÉ¨"B­X¡(ÿF™5âò}}Z_?ÃÄ„ƒQi;ñÄÝ;c>ꨣœ2ÉÿóŸÿ¸íà Tç dŒý£¸€%•-¨´AUB¨ÂüÇ5^ŸŒ+y ]‚G‰•CÙòÆ ‰›hÙgúí`Ædðò:ãŒ3äþûïwŸ¹hâŒx=NÛ“`¸œ”tŒ¶ÃK:ûÚ¶†€!`†@UG€0܃È j  dÁ‡„H*`DÈgâË Ëú÷¿ÿíH™¯©Ë}ûÐCu±÷Ü_}Õ 0âO©3ÖC옔€(›}Ø—ûøË/¿ì …#@ê0Þ½' ·*¤“õiq§’€kÒEi7.j’AÙ Ñó9p!#,a¨u¨xÞ ‚ĸCļ˜°3È-q»í¶sÜrH>”dÇ'Ÿ|ÒØ8\è u™ü€>D«jøc'{_Ǫ’m•Eëxb ®Éþ’É‹QT¶LÁåd†ŒJ2ÆEF’1†ýÃÜ)ŽÌÅÅÆ‰6l˜›mƒ20<¥p’pSHÎþ·Ür‹“géOÌA\ IH+E¤¹è‘nItà ‚Y<üqá"¤2Û¡0ú' .jžfè›/“l|¶®ü ³›²L¨¿\¯~Vßc®'æ)æÇ‡¦¨ñƒÇ“ktš:?·1etxâ?V¾Ot}7 C 4Öƒ’éâ75râØñ¦§6räH÷ÛÃgj÷Aî‹(5bì!qüFQY"jÜk™ÄƒôàÊÅ I:¦.…\r_…ðñÂHjÄPö ¥Þ=KÿøN¹w3Ÿ=¤£=\¬;vfÁ‚ÌA²¨Í›Ìø½&ô ¤á"Ç€LúOîã(@¦"…${좸ð;ŽÒHUܾ(£ô %3˸’—ÎÁSÝPß8¡€Æ…­Ï—j[Ñí¸aCî`ó_|±Ëv…T¡ôQp–ÍICºåä“5ž%‚ ”mPö|bd_d]žV l(”œP R‰7»uÿ`ê\\ÈØÞ(çÂÅI‚$nV90Iøé­,½ £™§7Ü þÅ“)%yâˆÇÂE§"ócÄ“,\»Ì¨B&8Ÿyq}›†€!IKprO†ð…½q‡„Jî]”ãâ3ä‡ß& ëSî …]Ü­þ!4.ž<ʉ例ùåáenE̶E8áÅï.5sù½äøô2Ç‹j (Žˆ0ˆ4(‹üîCDÆ:Y’Ad)e†Ò yEÍä5xð`çºõÉq¸@þâý‚x¢[ÒqÃ볞äqãBö…€ÁôQ*x ð'7<˜Ò|†}Sƒ ¹Ñò™§N2&I ̪ÇS7XØ?"ÛbÌ»‹Èƒƒj‚ÈI%u‘2<)Àä9é´É“Ÿ]ÂפãbÇŸÎÄéÑ£‡»0Š+œ‹’-|¯É† Š‹>lü° ü8'b~ˆø'ãaw=ÿd˜3•Ouœ#°å\?ÁSDÂ}Ê)§›íƒvùà‡…™'B®QÎ ç–dŒ7ú™ïüˆsá_¸>å9>*rÜ\®!ý3LÕe_žZ¹Ž0Ôc”d®A&øÌ.Ÿ½›ÿ¦¨‹mð?Ç ³Ðð0‚¡ò#M ®‡°ñPDlŽÿá ¯³Ï†€!Psà÷·(/>ó€ÌlLü®á‘ã7U ²ÅÃ(¿£Q#6 ÒC¶-µcù-ÂPÂ0ܹ¸K1\ªxÚ0Þý$ nAèeÜhሇjfØ¢Æ/êäŠRmxÙp¹òûI¿¸çãéÃðÄÄûF{5}á~Áo)÷î/<Ôs_ŠÃÒ‹·’cã=ÄÈöéZÖ“ó?>jŸ7\¶œp.:ˆ¤bɘ8¹‹‹Ü'š g' ¬„¸€ò87ucM3þqmSc‘9ú #aƒlqQ\9oüƒß‘ìùÇöÓ¾ðÎ÷8µrÎ ,ç%7l`O{<¥Bìy2äXwb2x`xàÜ×,D æ;µqÃóâGãk1Níu¬ýI‹›Û8¼ Ÿ¹>ãÔä¸1p½Ò.ãA±F dìÄ•ë…ôüpñrSš£ˆÛwC f#àÝ•„ñ°ˆP8Âo)B·<„ãIã˜ïˆ(Ç{¬S­ÎŠðâÑÌ Ÿ,GX‚H"ê @Âø‡œÓÇ}8L}?ñæñ`ígâ¢Î-/âÿá?ˆ4LAÊo>í"*nÅq‚ `H1É ˆH©NpoÖÇä¡jþ}÷Ýçnè¸l¹‰r¢“„ 9ÕψÝ‚3'#õ†ÍÍ "‡šBÌÌ›9sùÎEÃ…ÊÍÎM8j¨'!æóâ¤sÀM•ˆ“ÏÓ Æ8`é(”/¼ð‚K‡Æ7^ÔL!1(HD¡Çí“ÕËòWLkÖ¤kZÝD}ÿtÅ?œ—øÃ ñcÀ9ƒãà–s‹«Åb„2 é&¸ÏÓª?4´O.?(ì‹r…ú5þIÙ‡õü#óÈ?9ç˜xMŽçU=ÊäøÏlCœD‹>À$šK˜m)žhncÖGÍ«É<z5™1EÇ@l !ÔZÄè/DEµŽ‡®Eþ_¼y¥™>LÌ #ónfÔ$×A™ŠzªüðŠ>Ń4F|[x†&D ŸÊzH ^-êãú~wø=GÉ{öÙgÙÌý~òŠrǽ.€Û2äû3ë8¾G Œ¼0B¦¼ù‡{ÿ‘À÷ÔAƒ¹ö}¼>â ¿eœK¿ ¢6D3}ñüñ;éÍ‹?WîEÈfœáªfŒ´ F” ïÀ(.¨“Ä_£àñ[w¿‹;FxYÖ“<:K0:Y&$6pQÁÜQƸ¡FÍ3j$E£'–í!Gl×EcÜ`Êœ`쪫®*¼8¸P‰eB±à¦ÍæãïpåúY"¸·–Ã['wIDATÀü1!»í¶›»iC0aû^åã&KDã˜WnЏ ¹qb¾-÷eí¶áI嬳Îrjf4î!¼mV~^©± sÔEú×':—­N϶D D 1bUÖ®•“r—‰áà‡\!ã‰.xÎÆúhì&A»üSA xGasT?Ü”´Ë$ÚÇ?p-Ä™O‚áGÀ?Õùel^·?Ë Ç_†·£<¤DÕ^¶˜26OÉÉŒ,žL!y^Mf{ß_ßWމÒÌ11ˆ+î`Þ!làÆS)q¡üÿ„Í+ÍôÿSȤ‘¼0Bö¹º#Àÿ¢"îGTp?w:$‚>„$!E¨CJćïqj-ä ™Ÿky>ÎxRc;È'ÛaÈÿü¸sž‰ýãZÀ‹ëÒþ×fxY2µ—Œ+$xÊEeãÉ9Ù —ITMæXÑ1ð4 ‰ã‚kBˆJ‰›€'®užÊyò$¯"•fÐP0Í Ò ÀÿAÜoliÚŠÛáu•U‡NÜqüÎð O$þŸˆ'ãá ×ÿKÌ7ŽwP~£páñ;Åo÷þ÷’ýÇõ§²—ALÓ%a/þá•þ#žà‹Š`¢ðè¶5ù{•"yþDñÃ+™q3¥TJº†ï?ªâFÃ%6¶Kd¾._Ï Ó×çñËü;d²$«JÊÝÀ`È»ú´Å\µùõ„Üøòs‹³A»¢ßSøÆ9‡Tñ"ŽLˆPª (þšAU%û™X ¥6ªÖò£‹º‡a?øvPWyÇ5Ïùå'MÔAž¼ù¡†€Bæ!KsƒñŸ};‰†žLíåGÐÏmÌõÛ¸¤ö¢j2ÇŽn$ü°ÿˆú‡¢ÀXx0áAÕøXo©4£¾òðV’réûfG…™XÞò4T« ÒÆÿ+ÿK^9',„T|H*8j ¸0ñîð°)å /RžýÏtÛé<Žïß°ŒSÇâ–ù}ì}å2wíºæí <pÊÅZ ÒtÆÁdç&oŠà¢]µ4ñpui·»þGwÔW‡‚÷Fú¹å¶ªú—ä5„Š”. &V’¸=Ÿ™EÛ²¨ZËrâø|À0ÃOâdeÃ@b—ÎÊ“Ú3Ö“N ûÈñœ&Ó–ÿ’ÉC¤ÜVm×ÞµµzCõ”!¿Ny¿š¾á‰'žX#yEà°/C Ã~š:ª¯9Ÿ½ù£”£)Y"–²–ºº[ï ²Ñ ©®qg‘Å?‰Ì©*á_k_³EöüTÓR7*Þ΄ÛTÔãÔ×9”èkí;.KŸ&_|§ø%6ÂÆÄÙÑà[2¾‰©ÉF#©ˆ²(a59n ÙØwë“!P• {’¸2ܳÔÇä;1º^m'–›rI„ØO’êŠñµ”Õ¨=Äþ–”HDf?üVà»oêÔ©.AE¨²Œ™ZHÊ O×y¡4D4Î*ÜG ðvöPžVQîZÆ@áqˆUÄâK+ ëéO4k’•õ{\SŽ‹¦«§ÝV&wøõýeVµ.wž¾tÒiÿ¾*‡qýüú$]®u’êëf½–¯úúÞñíUvüHfžli«²I7\nÚÔ«Ì„q3G]&f²G< %‚ÈJŒ3șը?Ô‚„TAP‘‰U$»›@ÿhÍŸ¶JZ–n½7”mÈ‹¯‰F’¡d•JÂQœQ[”1ù‚áÑm HdÒ'ZÝ>Ñ÷TIäbù¼UQ°è3ç‚ìwKÉ—°ªž¨ÏÑå?ÿU&›*+®v/T·Vݹä(_¹}Æ=;[~ÿ|‘4íP_št¨'M;¼Zuo$ugqÂ=üûg ¥Ý–M¤aks,FÏwF¾kÖ ™!`¤‹Àï/Á/÷ÁØkƒàûsƒ`ÄqA0ì€ X“ßÒ»}ƒà£Ý‚àóÂàë“ƒà‡ ‚`ÜñÛ²4Eâu5xfš’UŽ%–& 4x=Ð2;º»o ôF¨Úh¢kCÉG ¥Í\ 4è=ÐlÀ@ËV¸uÿ¨Ë-ÐLë@ã\\[šhŒ¤[¯5-“áÚÖìcצ£@³“ÍDvûi]A·­–ô<û¬uÓ-Sã>«:¨2ã>ó‡ýÕ½ç¾ëdäNfh\¨ë“’À@IC 7ó@Ëþ¸ñ¨Û¯p_>hŽ`Ĉf@»þÒ¾fJê¥qÛ) 4€ß}Öºlºì%®×@ãÇÜXÀNÉb Ä3P¨BÄõEUÄ@³Cé ”„šYîÚÕx²@c_Ýgþhó@U,÷]‹™»í“ƨ¹eZ>ТáÁСC]{àʹ£!C†J%²&þÄöƒ1hÙ’@Io ñk®Í¸?3gÎ T1Œ[å–-úceðÅ¿lý}0d—n—Î ®¡¨iMÍè¢@I[°`òŠ`áï+‹­cÁ/oÎ †ìücðøßFÏ:>xëÔ_‚O¯œL±8vûl_˜»xu0úÉ¿‚g÷¼qòÏÁªùÙÞå*Û?£Î¡ÊÖHC`ãÒr?M(É›¯¯¡WÁ$ÛÅÒÇÛ[èâ@¤®¾×[û"®p×·ŠoNaé?ßÑí´ 2õëò®/ö“ìyj/ÞñòY‚ÊFé 2‰‹¢ü îJ˜\ÁsEp“ãD¥zêm¡œ) t.O\_”ºAa" ÕŒù‹Q`ÂWï µˆYN¨#Hè5Q°Ps¼E2eh¼Q`šdO’Íèk¡11]Pçø$ QžZ¡ÄXRH—2:a£ö#†š‡[yذa®ŽãW\Q8%0%=NÄåKŸ ü'ÀŸãÑo_ï,l0‰ö…ÄúMq%c…JmãVd=x°Ž4²µÁšØ3âѨG8ê$å…x¡úѦÏc¬`̸)9‚Ú‰¢í瓾“Ø@‘átmúˆÅ2ê±Y2÷§å²fmýÕ`µþï•ÁÖèþ+¬–uЇ†0Ž_/‘oŠájY1•Ôm”ãbázÑFãáôÿ@“TÖä*!\¨¥hôåÞ'ØQIá¤Gt;-:½J·á=O_¿£ô=j$À|súZB)äÕ´ qƒ’Ý¥ª}ÇÅ—lj;dÂS¼Aú¢Ó¶Q ‚B<¥/ 'Q‹Ö;#pž‚”ÖáE¡mܨE‚é1È/oPÜÐê?²-nO²*)»A}4ŠêªBçˆ"d“’¸ûÂe}|{¼S{lÄèñb…dE¤‰ôä‚Lé ˆ)Ç DN\_¨ Iƒ¼R 2ì7\ˆ‡hS4œqûY˜ 261çZ¥\âÓ8ø0Ö¸~Pv„"ÞNÕV-[#?¿6OF?9KV­Ì¾‡mUîºï¶Ü…ù²rñj©¥ÿš-ºŸgÖ¨¥2òînT%w«uÿ†-êºø·¾§5l±QÙéò •ØÕuäŽx¸dV¿YN²ÕUfÝô¯Kã6uåèW{JƒõŒ~Tĉ3”+e;†!P˜%Ä—‹I¶?ÙÊ»¾™l‹¢ë(TÝv—µ„PIáJÍR&IRGò ™/·ÖĵdBXG_Ô:ÜéÅ¢mó¹‰ZËH…ta¾¸zgLµ‰ÃÝH½3j²}x:»^xÁ9b£† H†,3"wÁÄp[çG‰ od±ëÆ;ÙšÌRB‘oT-bè |¸šqÓ2õ† ”6q÷¢¾%2ú®÷×bû *%YÂ^íôøDÛfª<ʾ@Hä0™çÛÁ­N¼¤&Äb‚ëÝo=fôûÿæ]%“~üC¦}µX¦|´@fŽZâîUܲÞjëåžS¿vJÏïS“ßóWòë»óe‹s$oY¾ô<ª¼,¹ ¬„J–œë†!`”Œª n¿tÔ›¸V£S¼±MÜ´m–“a Ç­wvã7:Â…»ÒãÝq}He  ®Y_‚#º šå‹&‡àr¦ÆZ¸LáGœ[tÛh»|g|ŒƒØ¼D}a†ÜÚ‰úm—yYÁ5Á‹îõnðDýˆîýWB…sÆé”†ÃÉÔOÊ¢?r¹“ü@ö¾k鸭>°˜%E`æ÷Kåà &K‡¾M¹[¿Ÿ†r˜e ¦äeÍ©°Ž†@E hŠ·8Ò¹ÁÍ É‹3ˆÛ ¯³ /O÷3D U0™¡b‘ðgq}Ã…œª…guIÔÏt¬4Øx‚Çqõ#>ømI¤hÛ«±{ms†f=/Íw™¯Ó”ôµé©áf%"S¯–ñBiÜÖÜÕ%‚U ˜’W  Û! C tdBÉÃ}I.UC=BÕ +ˆ¸cÉ´Å6X˜¹1ÆŒãb31ÓCx– (²jéc²Ù$ˆ)$ÉûZÙ¥ ÷2c Ë6j$ÓXÕ,NÉ+ï1«è‹Cûc¡D㮎‹ÉôÛdãû¢ßs¥ygM3«R˜’W¥N—uÖ0ÊŠ¤']C= <ö<–¥BîØ»í¶Û\âÃ1ÇS°  ©—G¦*ÄÎýƒü‘ø‘ˆHR6…->ìws±o$¥œ¨åQH!Ƹ7ÊÒ`d.WE’W8À ü@ü£'þþ°¸Öq£W’·zåaÙ‰¯Î“e³òdà;[øaØ{A@Åj3CÀ0j6P>çœs\¼ŸGâüóÏw‰‡ëß¿¿#e¸?Q¾(çAQÞáǻͩaG7T0’: AÔn£¼* åD(‚LQcÂF) ¶Új+—(¡ÂPÌHü€”RöÅ“²Tuæ §¶Ño ˆ£‘•K<E†‰Û#y‚þÓ.Ä.l$t0FÜ]wÝåV 0Àe CîˆëƒøQˆ™ñù¾°-‰)l£³‹¸L\2„ý´oJ&a…ŒæG}Ôµ‡‘ï ˆc0}\U4JæPSœ9ç¾ðô¥—^ê’dÀ—"Ô¨yÔPôÙÝ$Îp] ¼Æaޟ멼ùn‡ßø‡<»ï8U\$½Oj'ß6‚WÞ¸—GûFòÊUkÓ0²ˆÏ| : —›û•ø:&÷ñ¡ ŠN›åJ~0;‰¨zÌRA–(sÍb¼ó™Hr˜8q¢SúÈ e1ʰ ®±.l~– 2U!hÌ6¹5j”#•8ÆúõëçJ³„gÑ`9ň™¥‚Y·ØÔ©³I èé”gN‘#“˜W¸nÞ 7ÜàÈ$c%Ñ$‘·èg a0ñE¥!h_}õ•+xL’ Ê"äÏ·Þz«\rÉ%nìqùãÄ"ÊŒ$‰J×øí³íóíg!#Ú'£p-q@ŠI"AÉ7Êö`Ìm‹ËœØÃ8ÌÂûsý•·M|u®4]¿¾õrO•¢«l¸³–©I^¯¹¼»dí—#y¥Îv3 ª‹j %=()¢s¶º›.7àp*££ÌGï޽˥Œ‚É:ÿ«‹UCÑòªï¨m$@@ï¼óN7ª3gà’åx¨…qægÉ  jê¡ô`̨ˆ*äISƒá~ÅÅêgÑ`[–A4y¡>†>¡.}ùå—®t jY±Þ S`k—>'3?nˆŠ"51È%}eŒô•’/¸¯Qåˆí£¿À8Œüñ(ërÏ=÷¸óJ‰šŠ[“r0UÁÀ77j&J]ØÀâê åwܸqŽT3¾&ÄŒ}¢ûûvÊòNIË8# e«ÛY”8pªØ2#yUì„Yw C ìà^EMÄA°eœ&›9EÙ( P¼sc?äCä©§žrs¶RÈ¥‹ãt꤅ÕPwâ,œ=êgÉ`;¿<<£FÜþ,£81…‘y¡…>hBf^W_}µ«•Ç6(z¨‰>»8Yý<¶‡ˆ¾ýöÛŽàBT(Ç‚…ûŠ;›c²ÎÓ«W¯XŒ\¡?mjýq~P#9_UÁpÅúxÅè, _?®9\ú$g€'‰0cŸèþ¾Ò¼ÿõã2çŽ}ÿ¼I¥ÙÝö©BÉ«B'˺j™A€¢Á¨JĬ3FÂÈ‘#ÓjœÒ%¸=Ï>ûlG|øŽzƒGœÝ•W^馃|1놪g~– \}ÜüQÔ0²_q_B| >q€Ôºã8>&0®Íð2\Ò¸ùp™Bœ ¢DÆp)燫6ÇJfáCPõ¼ÑWŒ9j‰çƒÀÐOJÖP7—$d5#ßc=Ö)’¨Äâî­ ægÁUÊ, ;b¹Qba–‰±/ù3O¾{`¦EòóÖÈ^wtuuí¶:¡4ha6Růªnguòªê™³~5LÔÉKä‹—–O´]x9*¤Žäo¨W?bãÂ7vnþôŸäÜ»ÞÍ’òF+®Tâé2aÄÑá2Ž+HŒú„»1•cEg !. P¯H…k’hÀ\µo‰0Bµÿ0n~Ÿ²¾Wd¼tg‰Ž-3¶á=÷ÜsÑÍ] &[µlÔmlúM1jè£ñ5ôÄÛ° C (‹tÈ.YȮ߰áníÑ£Gx‘ûLR¥2Yñ‚ð¤Bºµ]®‡]GÖl*ÇJ4cíùØÃpÛ(x>^Ï/O„Q˜úm«â{º³€DLJÛp}Æ£úkšÈø¡sdòÇ ¤Õ¦ eÇ‹3óPí—}¯z˜’WõΙõب±”§’—.¨¨S°hFnIíDgÊð5碅”£Û•ÔnE­›1„ä ú_å=J;ΊTòJÛÇtöËÏ düssdŠ»ÅÓr¥ó®-d£=[È;6S6˜NK¶muFÀ”¼ê|vml†€!Pn””…šèÀ¸kÃ%w~]t;¿¼²ßãf ‰ÎRÙ}¬ ÇŸ7q¹,žž+ÛžÙQ:ôm*µRŸ¥¯&Àcc\‹€‘<» CÀ0 ,D€:v³~\*íû4‘Z‘0»¶½ /3C Fò’¡cë C «hذa±ø®¬ê u&« üK¶‰ÓF,’ß?[$Ó¾\,Í´ÔÉ¡ÿëžíݶþe)“—¥'ƺe†€!P³øî?eœ&PtèÛD:ïÒ\_-¤akÓbjÖUÙÑÉË,žÖš!`†€!J%Æ$GÌ»LZuk$9 bV&oÑֱɋ…ņ€!`™C`ÅÜÕÎ ûÇðÅJäJŸSÚg®qkÉH€€éÀ €±Å†€!`†@Y ¾îÇ!³d𻥳ò¤S¿fZꤹl´G‹²4kû)#`$/e¨lCCÀ0 C uÏÈuŒwºli³Eãb²©·d[¥CÀܵ¥ÃÍö2 CÀ¨á¬^±Fþün©üùíéwþú5 ~6"`J^6žë“!`†@V"°`òJù}ØB™þÕ™;a¹´Ý²‘Î2Ñ<+ûj2LɳkÀ0 CÀH.ž"MÚדN;4•[7•œú– ›"t¶Y% `$¯@·C†€!`d'+æ­vîWˆ\»Þ6£Dvž%ëUª˜»6U¤l;CÀ0 j‡ÀšÕüñÅbG숭[>w•tܦ‰l£sšUSòªú´þ†€!`”‰¯Î“©Ÿ,”ŽÛ6ÕWi½Y£ØBÅ¥>€íhT"Fò*|;´!`†@ù"°jù™5j©«S×ãˆÖÅ–`ö‰âÚC ê!`îÚªwάdž€!`ÔPÙ4Ï‘.ýÓ+ŒûuæKd¦–7Y8e¥Ë€ív@«xÌ,o"[Z-0’W-N£ Â0 êƒÀ²¿VÉg×L•Yc–IzµÓ"yÌ21nèléз‰ìpA'-BÜHj×1&W}®I:˜»6´l[CÀ0 òC@]§ã†Î‘oïŸ!$DðÊ©_[¼º¹4nW×wÙ¬U2sÔ™õÃRé{zGiØÒ´Šò;!ÖrUGÀþ;ªú´þ†€!P ˜?i…||éÄ­^¹¦pD9z—úéùÙ²tö*[—Ÿh}º&Ò¾OiÐÌna…@ÙC Sòb@±E†€!`ƒ@~n ßÜ÷§Lxy¶¬YH°Žß¹ÔªU˹\{ÞÚ»fÔ¯˜ŽÙQ j€€=Uƒ“hC0 C *"À´`ïŸó›ä-ÏÈ^œA +篖MN8·“-3 ‡@mÃÁ0 šŽÀ¥—^*(FöªX ^=v¢,¿R–,[,+ò—Éê`U쥸ô¯<¡Š™!`¤‡€)yéáe[†@5D`„ òÚk¯É!‡R G—½CB½[¹pµ,›'dÔòþý§ãeæÏódãv›ËŠyy’·4ß%`,•'ëum½ƒ±žYˆ€‘¼,<)Ö%CÀ0j9õk¹¬Y—9»eÁˆÇç|*£¿"—>dÁõâæ.ΗúZ/ÏÌ0ÒCÀܵéáe[†€!`T$ZâÎ^EnǪNÉ«NgÓÆb†€!`†ÀZÌ]k—‚!`Y€À§Ÿ~*;ԯ_ö!#GŽ”ùóç»Q5iÒDzõê%Í›7w߉?œ:uªû\¯^=Ùi§ ùî»ïºåüiÛ¶­l±Å…ë Wè‡?þøC–,Y"›o¾yx±}6 ,CÀ”¼,;!ÖCÀ¨™üñ2wîÜŒ þ’K.‘G}T¾üòK¹ï¾ûÉã;öàƒÊ-·Ü"Á>ø@¶Ýv[2dˆ[·ÿþû»eŸþ¹\~ùån¿¯¿þÚ­ ÿ™|¸ëøˆ#ä ƒ’yóæÉQG%mÚ´‘ýöÛÏ©k«V­’“O>Y:vì(§œrŠôéÓ§È`O?ýt9õÔS¥sçβÝvÛɯ¿þ*£G–C=TöÞ{oiß¾½ <¸pŸ}öÙG&Mš$¿üò‹ëƒ_1`À¹á†äùçŸHÛ9çœ#ýõ—[½ûî»»6 {;ï¼³Ð_o”“¹é¦›äý÷ß—«®ºJN;í4·Š1_vÙerà ãEͻ袋äÞ{ïuëW®\éÆQ}ùå—¥{÷îÒ­[7G6Ù€v/¸àéÚµ«€™!`”?FòÊc;‚!`Tf̘áÔ«—^zI/^,O?ý´àÞ¬[·®¼ñƲÙf›É+¯¼âFÊ;ߟ|òIÁ]:qâDiݺµ¼úê«nŸüQ>úè#·Œuaƒ°¡”}õÕWŽ€Ý}÷ݲtéRwŒ3ÏùäyàdöìÙn·~ýúIãÆÝ RgFˆæÏ?ÿìVCÂŽ;î8G üqG6ãöÃ}üÓO?I~~¾#‘ß~û­\wÝuNqœ6mšôíÛWžyæ·ëÇì\»-Z´ˆ*ý¾õÖ[U‘1‚¸Üu×]³¸ãÙ2CÀÈ,Fò2‹§µfÕ¿ÿýïÒ»woÙzë­åè£v1kÛo¿½üùçŸN±{óÍ7Ýèy?òÈ#eã7väìÎ;ï”sÏ=Wþñȇ~(ÇsŒôìÙÓ©kqp¡¢ô¡¾½óÎ;n“M7ÝÔÕñc¿8@Þ{ï=·üÚk¯•:Èúë¯_Dá‹¶Kü]Ó¦MÝb6”ÅÃ?\¶Új+¹ù曣›»ïìÌÉÉq…¢Q/»7ÔÊqãÆ9ÂIÁ:Õ°Q£FòÛo¿9\è„c<|°ßÝÞ C œ°Ä‹rØš7 ꃮF¬víÚÒ²eË"CQ[±b…#u¼£ª1ƒÆSO=åÜ—{î¹§‹C#ÙkÐ ¾¸/j–——ç\£|öË¢Ëù^’MŸ>]xùD 1 ävƒ¤n³Í6’››[¬™Ï>ûÌ‘@¿‚dŒ°A!‹o½õ–¼ýöÛNå#Îr¸hÑ"·)Äã¡@F÷·eŸ C ó˜’—yL­ECÀ¨@èŽ8â9û쳊ÇwbÖpµ>öØcrå•W:¢³ï¾û ä CÕ‹32m±×_]ˆ­Ãp›â¢…<û‡RˆñyÙ²eî8>&ЭXû‡}ˆDµƒ|… ·ósÏ=çÇpV/óÅâR¦Ï¨ŽÉ E.1x(Š>úsÖYgÉyç'¸q!«f†€!PñÉ«xÌ툆€!PðóÝ2$’,HH@½Â˜&ø4Ô2²[I¨ ‚D Ê“\sÍ5¡òF[ɸgo¿ývçæe uĈqv >ñ÷©7\Ë(Ž=zôp±<òˆ[Å1HÜ`]«V­œòøÐCùÝ\bîYH!q{ôÙ›ïŸÿÎ;®c’-ü˜QëÈÆ­¼á†:•‹Ûß­°?†€!P.ÔÒ˜u¿0årkÔ0 ìF2†ÚUÖ¹k)7©5jTá€Qµ ~$b„Iq|Ô®#!÷®·½öÚËe¢ze ÂE)²SQþPߪ‚ÛsáÂ…®¯½t ‚K‚ïf†€!P6,&¯løÙÞ†€!`8pÉ’ÀpÇwA„¸5Ô´¨‘XAÙ‘DÖ©S§b«ˆáKÇWlãJ^@ a8ް’»c‡7j$Fòjäi·A†@¦ÀUKü%SR5‰a£D Ù©aÃÝë3wÃËí³!`É0’— [g†@Š4kÖ,Å-‹n†»6l~ú±ð²:uê˜*Ä>†@JXâEJ0ÙF†€!`†€!`T-LÉ«ZçËzkå€1sd½šeLÇffeGÀ²kËŽ¡µ`†€!`†@Ö!`îÚ¬;%Ö!CÀ0 CÀ0ÊŽ€‘¼²ch-†€!`†€!uÉ˺Sb2 CÀ0 C ìü?ã’чGòRIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ObjectNotInitialized__inherit__graph.png000644 000765 000024 00000014450 14042362133 031676 0ustar00tangentstaff000000 000000 ‰PNG  IHDR™‰?Šš!sRGB®ÎéâIDATxí ¸UÓÆW³!óH†TR(¥Ñ9cBB†¨(ÊPÒ¿zÊð 2<Æ¢Q†]"•¨ Š(©¤Iƒ& Öÿû}YǾ»}ï9;çºçÔúžçܽ÷Úk¯½ö»Þõ}ßÚçÔ[ÄŠo‚C`uÑ‚kÛ·ìØŠ€'™gB#àIVàûÏD¾øâ ³fÍšLìZF÷i=ö05kÖ̸>f$É6oÞlêÕ«gJ•*•q€ej‡Ö®]kf̘‘‘Ýóá2#‡eÇê”'ÙŽ5žù4žd9,;V§v ’}òÉ'fåÊ•5r_ýµY´hQFõ© :³C‘¬]»væ³Ï>Û«=z˜™3gnSþ_@¬k¯½Vo;eÊ3þüÿº …r¿¬%Ù AƒÌÑGm*Uªd† b¬Û‹/¾Ø,]ºÔôïßßzè¡æä“O6¿þú«‚;kÖ,sÖYgéþË/¿lºwï®û¬Êêׯo<ð@Ó±cGÃê¶mÛ¶¦wïÞzþÿûŸéÚµ«Ù¸q£’dÏ=÷4§žzªùñÇ ßÊAâŠ+šã?Þ@Œýo¼Ñì»ï¾†>­[·Î´jÕÊŒ1ÂôêÕËüôÓOfÅŠfÓ¦Mæ†n0´Y­Z5óÑGéõ;wÖ¾T®\ÙT­ZÕ|ùå—Zž•øî2ÓlòäÉvÆ yvK–ë¶\¹rvöìÙvâĉöˆ#ްëׯ· 6´#GŽ´B*[¾|y›““c_xá¾›µ2øvÁ‚¶gÏžÚ® ¦rêþÙgŸmûôécÅ ZyÏdŸ~úi;mÚ4[¦LûÊ+¯ØÝvÛÍþüóÏöwÞ±uëÖÕöï¸ãÛ¡CûùçŸÛ#<Ò~õÕWöÞ{ïµp€Ý²e‹-^¼¸bÚ… ÚFÙW_}UûS§N+ïí%—\b…pÚf­Zµô~ô¡AƒÚ'ÎSwΜ9VÈi…ôZž×Ú¤ÿh«²Ò“•.]Ú~øá¦}ûöfîܹ"wÙeS²dI#„0~ø¡iÒ¤‰ò˜«¯¾Ú|ðÁêðTxLiZ·n­†úeË–Õvð“&M25jÔ07Ýt“‘Á6BLõ˜cÆŒÑkö߃wÃÛ½õÖ[êÅÈû„ØfùòåfÞ¼yzN:!¹æškŒTûV¢D ½—V?”sžûÝ}÷Ýê/^¬§ ÿô§E‹YZ³’dEŠ1o¿ý¶†Â'Ÿ|Òœp 毿þr㦠õÞ{ï8†xy¡•%žÐ¬ZµJÃÜù矯Õ!3&M·âÍ”H@hB!yU±bÅôZ®‡|»îº«Öß}÷ÝuK˜]½zµî‡ÿüòË/f¯½öJªÝ³ˆ·ÖrñŠ–•²l'+IFŽÕ²eKÓ¥KƒY²d‰‘P¨ÐC˜3Î8ÃL˜0AsrŸï¾ûNÏñUÕǬûÔ§œœNÂæXݺuSOÄ5?üðƒyøá‡„NÍÇ~ûí7Ó¬Y3ƒ7“phžzê)õÙ6oÞ\÷;î8sÕUW)y$·Ñ XàýHüÏ=÷\%ŸäZFò93jÔ(MÜ ‹a—ä›uóÍ7kR1o¹åó裚±cÇ*1ñno¾ù¦†J‡v˜Y¶l™†c¾Ã1 6ß)Jn¨“KïÃý /4o¼ñ†ö‘0ùì³ÏºS¹¶ô?k-E›,ñw}&ñ—ÈêVVl‰c²ªKç·#!ÍÊkMÚó«Ç¹ð=)cQ!$cWÄŸ6%º"ÝRµ¨¡Þü‘«nœƒLNü³Ò“¹÷›Ëƒ(vðx²J 7y\¡B…mÊYT„­hÑ¢êé‚åÜ'Êx²£ZVædÙ0¼ÍgAàÍO²bApÅX@·Èšf=ɲf¨²·£™“ñ^H’ÿŒCuãÆ-²òœoš6­$¡0óV{¬b3ÑŠ°‚ÉÄŽebŸÆŽýN¾A`FŽì ßuVÉÄ.fbŸü?‰‹3*ÇOÒ÷m#F|ç²¾®ÏÉR¤Àúõå[„YúõΘ1ÓäÅê–¯ôÕ<ÉRäÀ˜1Óå룭),ï¿Æû!Å+}5O²90tè$³ví­½fÍ3|xæ-LR|”ÿ¼š'Y ¯X±Î|õÕÖŸï¸ê&Ì”_nlt‡~›ždù€ãNåä|mŠÏýö¾dÉâò‹Œé®Šß惀'Y>à¸SC†L’7æöZ„ÌaÃ|Ètå·õ$Ë9·hÑ*3{öÖ_ª†«N:OþÔºp±?!àI$|8qâ,YU“_Ä–ÖO¹r¥û›6m–o&æ„/ñÇ!üÿ Q‡ãÇoýçt›7o1mÚ ”_¿¶ÕjE‹1¥öó ¨vw’²ÕùÝe¦ß¤É‘Ú%^ÀB,wœiýÌÔþøp™©#³õË“,Æ`ò;{<™·xx’ÅÀ‹¬üõ—ÿÑJ È´ª'Y\Ä|ýØx’ŀ̇Ë`ªz’ÀH¶ëÃe2„¢Ï{’EãâKÓˆ€'YÁôME#àI‹/M#ždiÓ7€'Y4.¾4x’ÅӿˆV ª'YŒd»þF2„¢Ï{’EãâKÓˆ€'YÁôME#àIKd)9oñð$‹9oñð$‹‡—¯½x’ÅͿˆV ª'YŒd»þF2„¢Ï{’EãâKÓˆ€'Y 0}¸ŒV ª'YŒd»>\&C(ú¼'Y4.¾4ø?îEHT¤öÒØåÂkŠpY¦L­ê…,úR膤¸'HùÏ|¯Ö—˜îef¶nÑKZ³fêñ,ŒÁE]d”-h+p’ôøö3O²Ì£¬ï¡'YÖaæ?@'þ™ª+W®4Õ«Wÿ×Ýq‚«Á†ÐÈlÚ´i°(íû¢»n¦N*ÿUU£´·]Ð îžì½÷ÞSAÔt€ùÚk¯©J/*»îƒzpA:ä"`¯òÒºf£eÉ^zé%sùå—«–8Þæ‰'žÐeu•*UTþ¡y¤š1´ÂkÖ¬©2Î(ã¢3É1«X u]´#O=õTsæ™gšéÓÿùσ¨Ê¾ÔGÍwôèÑz ‰h=RÑuêÔQ±yNtíÚÕ¼úê«ZgqÕ}ê<øàƒ‰õß|óöé… šÚµk4Ë‘©®Zµª¶}ß}÷éõ¬èêׯ¯}ïØ±£Aw<ªoƒ6¨_|ñÅÚ¦“¹FIœÐݼîºëôú¹sçêó^pÁªÞ¾}{½WFü‘¥lÚóÏ?oåF¾÷±z[¶lY+àÙ믿ފ¼²îß~ûíöŠ+®°"Ãlå]›¶!İǼ g{ÔQGY”zûõë§÷øý÷ß­ˆXÙñãÇ[‘}¶ò^ËN™2Å0ÀÊ`ؾ}ûZ‘“¶¢/n…øÀ qù¡›bjŸÁ“þægò CqȯNέʘœŒ\㤓N2óæÍ3ä=ì¯ZµÊ ^DOg3Þ‡™—#×"f/záo½õ–^׸qcÀ‡~ø6™ºÛóáZ‘eÖ:x´Íñ,.¿BÏÜYï޽ݮz¼¡3§ÚÛ¿#Ä7åÊ•3ßÿ½j’ãÍ.»ì2­Jxå][!µ†ÁÊ•+›I“&©jp¸oK–,1%K–4»í¶[âðÒ¥KÕCÞzë­Úæ7Þh^ýu#¤Voyå•Wj9Ï>þüXêÅîyҽ͒6†¤LX~áøsÎ9GÃ[NNŽ Ñ#ýLØ>|¸Ï£ƒF Ê,s]Ø‚òÑ¢n4Ì•ËÂ׺ãjÕª)©Ý±Û"¡Hÿ!û?þø£ÎßsÏ=5ÌoÚ´IÃ>¡_¼²†SB¨ëõóê+(9i ·ävÆýÅ ¹ÃBÝfDN– x/rš}÷Ý× =Îì•pfxàÍ›ðgœq†ÐñP³fÍÚ¦ir$FB‘¢¹•Ƨu%4 {ºÿí·ßª÷äB³Âø¢¸drÄóÎ;Ï|ðÁÏwì±ÇÊ7kô­ºˆÛ›ãŽ;ΰÅ‹’3vëÖMI‡çÆòê÷qF›xx ¿JT&Ýi§æNgä6c¹nÝ:+^Ì.^¼8Q]@¶âm¬x‰D;µ¬nÝºšø»“$þ²´B0ûǸbKâOò,9ŒÂ&ÊÓµCÿÄ£åjN¡BZžË«oœcq6Ú”¥ò†O¥|¼Ó%þùÍ0~ÉÁ+YÑY&ª’ÿ…-™È<¹Q”tÐAQÅÿºŒÜ0œ–(QB=j¸ñ¨¾s5WŸöx “ –ñá ä+{ï½w,Lß}÷Ý\!Ó­ÈÂÈ+ù O™pñzœWßþÓNÐͲ‚d¬Ö⠼ /"ñŠ °-¯¾v¿Òqÿ¬Y]¦ãa}…„@ÊYâvV”¯{xY³C|Š)nË”9F¾I(¶C<ãÂ7 l«¼€WŒÉ=vìwò+ßfäÈòÝc•WîÔUWûpcü‡Ÿ¤ï©FŒø4ÆU¾ª'YŠ@o|„YúU͘1Óämÿ–¯ôÕ<ÉRäzã%Jl]Œó~nܸR¼ÒWó$K‘C‡N’ï.7hmôLJŸœâ•¾š'Y X±bü(r^®š&Ì”/¨7æ*óÑx’Eã’«4'çkùéN±\e%K7„PoÉð$KŽ‘üz’Y·.·×"dæCf ðO²$(-Z´J~Û¿8²ÖÔ©óä_A­‹<ç ÿAÀ“ì,"÷&Nœ%«Êb¦|ùÒú)W®TbÓ¦Ífòä9‘×ùÂðoüÿÁ"Ͻñãgê¹Í›·˜6mš¡CÛê1zä‘çuþ„"°:+~…Q؃դɑÚ^ÀB,w\ØýÊ–ûûp™-#•Åýô$‹1xüfOæ-žd1ð’ŸÄÈ¿TâW>Þâ àI-_w»ð$‹›—1À Tõ$ €‘lׇËdEŸ÷$‹ÆÅ—¦O²4‚雊FÀ“,_šF<ÉÒ¦o*O²h\|ið$‹¦…¬@UO²Évý+ŒdEŸ÷$‹ÆÅ—¦O²4‚雊FÀ“,—ÈRr2>Þâ!àI/r2>Þâ!àI/_{;ð$‹š…¬@UO²Évý+ŒdEŸ÷$‹ÆÅ—¦O²`úp¬@UO²Év}¸L†PôyO²h\|i:Ù™0$ü¤mÿÉ —"™XÛã“>Ž;¢z—à”ìä–"’¤ìÚ´i“Nû¶v"D»S¥ëÕ«—xj.Pø‚BÀ“¬ õí&ð$K@áw Œ#Ùœ9sT/2]Œ®h}'„Wѹt†,sØDêÐüüóÏáâ”bEâÚ™$¾æÓOSÿÿ§OŸ®¢©îúðvêÔ©*æ,*sçÑýüæ›oô0¿z®~~[ú†Hl\Ë8’½ôÒKæË/¿Œû‘õûí7Ó¾}{óÊ+¯(8 ­nT~1ÄIÃ&b÷‘Š¿ázÁcUßxã -züñÇ "¬n0|íÚµ«A5/»á†çEÀ^e¥óª;yòd•ŽÞÓ•E]äBÝ˯^Ôµá2Ñ.Mh¶‡Ïåwûÿ'c€>ùäU™ÅK4oÞ\v`:Ùe”i™E 2À¡ε(²:BìH¢˜‹œr±bÅ ¢íÎqÚ´iò_iÎVYfèëׯoä•QÑ=æ˜cTbõ[Dëo¹åU²uû4µjÕRr×.mrÿ èÀöéÓÇ|þùçÚV÷îÝU¹×y;ä  rЈգƒŽfù=÷ÜctF·U«VæÙgŸÕæ‘®ÆPße•…špÐh‰kÔ}©ƒ<4¸ c;#×€XâÙQ,fÅz°©ê½ƒ÷¤ üé[¿~ý´}ðEy8h®žËMœbŒÐ åZ¼ø¢ŠŒÖ9cÄÍ÷åË—'®‰³Û“‰â­.Qñtì©§žR06l¨òÈ€çä•ñH®>¦L™¢šá§Ÿ~ºyíµ× í <Ø0°\p4:ÝΖ0׳gOÓ®];•Oæ¤CÐ9å•+W&Bš˜ sû òÊA«^½ºz‚%K–h1r…ýû÷×b¦£ïÍ`áyyä´‡üÏ<óŒÎb´Ï3…ÀÜŸg;ûì³ ÍC2»0¥…ò‡ç®P¡‚b¶ë®»*^mÛ¶ÕB† >螣ƒ‰ ìˆ#´È ™ƒ÷¤Œþ2a!ÃСC ⬣Gv·N\K=ÆŽÉÅXˆ*°©\¹²Ê[CT8â‘d°ñÌÔ 3WÃIb“Œöð 5jÔP!w¶n¦Ÿp æ×_Õ"<5nÜX½ !ñZÌpÈ€£ŽW‰RÍ…¸Ô§õë×ò% Ñ{ÔyÏ<óL%/eÌt§zëöo´Õ«Wë€@~ìÒK/UÑ8Ç£9ƒ €MøÄq?QTSRã½9†U«V5hS5^Œ-‰gŠÔ3Ñ LÅŠEìjõÆè\ò(¤ žû¨£ŽR!{7)¨ƒ×ß“ò믿ÞÔ®][õÊ™`(ÊöÛo?ƒ†(© ^ -Q¢@Tý”¨<+9ãÃ;/ð ª&Gµ›WÙv‘ì€Ðö)_¾|®¶é<Â+ð >3 ñxHì´ `cx,gÌ2<æÊ)mrWe›-ý$äÍ‘`,'¼J¿IÒ1¨qíÚµú9å”SÔƒAô²eËj5âúâ®sÛ:uêè6l˜Ñ6Ïì\9fäg £ŸÁ¾åu !šèÀ³@μ Üz÷îmÎ=÷\C?1ž—{ð¼<ÞOæð¡Ž{nöãØv‘,Ù ¹1ýÀ4}ô‘Aª™°ÃÃáÅx8V+ÍÀ-X°`›fÑ!wÍ1ð„bŒÙÆux†C9DËh o‡¹}rîM8Á $‹B GÌV@gBCkݺu á›PŽç¤ÏÔ'$R#¿rû´6¼Ù¨Q£´oŵ„@l¼|»âÂ+ÇQ×SžŸ…¯Á“³Òß3fäILÈȤ¾æškÍãµW\q…Ž«dƈ1 t/Z´h»WÝ[cFâVÿn 1:GXb€0\89 ^…jÙ²¥Îò*Uª˜«®ºJCŠ›µÔwí0ó[·n­yF9³íÉ'ŸTBáï¼óN.Ñíc=fh“2ö›6mª9aoŠ'daMg%ˆG>ñÄ+O&yÖÕÖ¹5kÖÔ\¾“·à¡ð”܃Á½÷Þ{µŽ6ü÷ ò좋.J\K›=ô–3yè3^>/s˜¸óš+a ß4êØ¹ywŽÄ3Êx…ê`F]Ÿ_D2dˆ&¿zþ\<ÒN2BFpE’jw«4fi”¹ÕYÔ¹[FßùxK/²ºLo}kY€$¾ “eµÿÕg’_}Ê€{Œ’` /ᜒU¹V—Y?cüd"é_]fâSú>.>'+\üwŠ»{’íÃ\¸ù;׃stæÏIEND®B`‚mysql++-3.3.0/doc/html/refman/inherit_graph_16.png000644 000765 000024 00000006232 14042362133 022434 0ustar00tangentstaff000000 000000 ‰PNG  IHDR4W­§bKGDÿÿÿ ½§“ OIDATxœíœ{PSGÀ70™ÔðH á‡(bÕÎt¨HFK*¦v«”–VP§¶´–B*èÐZK£T@Z©m§¥PˆàcÛa¨£¶F^Vh…Ê3 ˆ%1@ˆ äî÷Ç~ßÛ$D^"_&¿¿öžìãìž»{öîÙ BlXv[›]­›]­›]­2ñáúõë………K !88øý÷ßÇÿ5_år¹X,^r•l,‰Drýúu¢„lš©ººz©ô±±8ÄÅÅIlþÕ:±ÙÕ:±ÙÕ:±ÙÕ:1³oz¼Œ8pàðáÃT*uáµeffúùùíÞ½—TTTØÙÙ%$$Xn}zzzöj|þùçR©ÔHH&“9²å²›¯¦¨¨hjjjQj+..Þ³gÏ7pÉÏ?ÿÜÐÐðÐÖ礆aƒÁ`0\¾|¹ººÚð?¡óeþóU¯×ët:ô:OMMéõzf¹†a###l6›(„ªÕjGGÇ™JMOOONNÒéô‡ ͲvíÚ]»vµ´´ÉjqÊÌÌD‰½{÷Þ¼y³¤¤ä¡EÌê?66F§Óíìa²Í¹ŠÞÞ^ …"‰ÜÝÝ Ƈ~¸ÿ~gggGGÇwÞy—žžŽ2ëõzww÷3gÎòóó¹\®¿¿¿§§çµk×P†óçÏ»ºº²ÙìÐÐÐÄÄÄ}ûöá ݸqÃÏÏïƒ>ðòòrqqILLÔjµf…‘H´yófT˜|ôÑG###ÇŽ3êHgg'…BÁg$ŸÏ/..~h÷ÇÆÆJKKÓÒÒf3V¦Cñé§ŸšÕ¿­­mݺu #77wáÁÓù¼SSS'Nœ(((èè訯¯?~ü¸R©Œ¯©©Ñét€ÆÆÆþùgÛ¶m½½½ÇŽkooW*•B¡0<<œ——§V«÷íÛwæÌâÚ¥×ë{zz&''e2YSSÓ‘#GÌ 6lˆŽŽF‰i€““SqqñÁƒ\ „¸ÌNOO[^9¯\¹’’’âååuöìY>Ÿ?›2Š   Sý5 ŸÏU*•·nÝ*//?yòälê·$ðã?ILéééôõõAU* ¾¾ýdooÿ믿jµZ:~éÒ%azzúo¼!ìîîvpp‰DwïÞÅ0lrrBXXXÈf³ñšÃ²²²£££hN+ ô«H$Ú¸q£Y¡mÉdò/¿ü!ܾ};ŸÏ‡¦¦¦¦¥¥AÿüóOÒBøÂ /â­ã‰{÷î<õÔS>>>ùùùR©ÔBsï½÷^xx8þh:fõÿþûï Æèè¨F£Ñh4999<ϲŒà_ŸßÛ€|$òX~~~HH"‘ …Bb±xóæÍµµµè]ñõõ=}útaaavvöÓO?ŸŸ300ðüóÏãu>ùä“F­8::2™L”öòòR*•3 JiiéÚµk‘G0 šU¦ðx<¹\~òäɘ˜‰4›¶pÌ…©þ}}}fýúõxÁuëÖÍ©!Sæé¢Íúvø?¯ðꫯž={¶¡¡J¥FDD†‡‡CCC›ššþþûï„„„Ý»wkµZƒ122‚7ýT˜˜˜@î ‘HáÍ Š——סC‡222Ôj5’ #ákooo¯Ù‚%%%QQQ©©©qqquuusÝåš…©þnnn...2™L.—ËåòÖÖÖ/¾øbN­˜òH¾sÂÃÃ)Jfffrr2zZ[[·oß®R©\]]£££1 lÙ²¥¥¥¥­­ ÐÒÒb‘`VVV¸sçÎùóçy<ÞLB‰DRQQJÓDöìÙƒ¼#zär¹d2¹ªª P]]-—ËÍö%,,¬¢¢¢¿¿?44T(r8¡PØÕÕ5ï¡0Õ?**jtt´¼¼B(“É¢££+++§OŸnnnžeCÆåÙûWä–лßÓÓƒ~²··¿rå Jgggþúë/ô¨×ëCBB}||¾úê+$?t胃ƒ¯¯/—Ë 1ò¯4mëÖ­«W¯¦R©¯¼òŠ^¯7+„æää :‰iÜ¿"nݺE&“‘… …B‰Äd2_|ñEgÖ¿uÿ·ß~{óÍ7#""ÌŽ‘5Š™ô///§ÑhÇÞÞ>55ujj BèééyðàAËæ@˜ú×9Ûu–”””DFF%†uvvÞ¼yÃ0¢\¥Ruuu †”””¬¬,\~íÚ5GGG¡L&S©T„ all ßÅÌN7ûÌÄ¡° ¿F£inn–Ë帤±±ñ»ï¾›M‹¶o²ÀØØXgggqqñÑ£G‰r‰´fÍÓüÎÎÎÎÎÎ*äp8³Î ç!˜åÇLCÌéO£Ñ‰’úúzâýÜ4œ_1 Èd²ŒŒŒ·ß~û¥—^šSA___üqÕªUÏ=÷œQ³Âe‹éPÌIÿÏ>ûlÞM“ áh£ªª*!!ÚnŠÿ¿îK/º,»s‹Â²‹Ó0 #^­c0aaaèãÏ, …"77÷øñãó;ÙW*•üqAAÁÊ•+çQ|y²ç+†aEEE÷ïßâ‰'¨Tj{{{ddä‰'fʯV«ËÊÊæ›ššjmmEŸÔVÃrœ¯ˆ;vàs466öÛo¿%†Ç͆´ôz½Z­&n¾÷ïßwqq±pèééyõêUü}„¸¹¹EÔ''' eþ]ZB–ã|5E§Óáç…3…´>ùä‹Åd2ÃÃÃ'&&?ýôÓš5küýýY,ZØ£¢¢P0`08ŽX,îïïwrrÒh4€ºº:‹äääôî»ï †»wïR(”S§Nyzz^¾|W)55õË/¿_Âa˜ ÄÙE<—Xè>999''G(¾üòË,«½½B811áîîž——÷àÁ©TÊårËÊÊÐXrrò½{÷ÚÛÛ=<<ЙܳÏ>[YY‰aØÐÐЪU«Z[[¿ùæ6›m0 „ NNNZ­Ÿ˜˜¤R©.\€ q¹Ü¢¢"tðréÒ%­V‹+)‹###i4Ú믿~õêÕÇ4TÿÅô\bùÎW¤‰DB4_ý5àܹsÓÓÓ{÷î…2Œ¤¤¤šš”???ŸÅb­_¿>00ðöíÛ†ýðÃñññ …âÎ;+W®ìêêããã(XVYY™˜˜H\W+++Y,Š­zxx$%%ÕÖÖ¢Ÿ>Ìãñˆ™cccÿøã.—›’’pôèQ…B±dãc™åë_ÓÓÓqÿÚÝÝm!¤åîîŽ ezzÚÎÎîܹs¥¥¥vvvÏ<óÌŠ+t:=&&F,×ÔÔÔ××[ ½½½ñ¸±E"ÞÞÞÈËË«®®Þ¹sgUUñ.ÕcdùÚ•ˆ›› ¯¯i¡}ÐÈÈȃÐVÖhÕÖÖ–››ÛÜܼaÀ’¿öÚk;v숊Šb³Ù7n$a2™Ä Ôï¿ÿ¾zõjËŠéõú‹/ž:uª¡¡Ïç¿õÖ[‹ÐÛÅ`ù®Ã …bhhhhhèâÅ‹qqql6;$$d¦–)R©ÔÙÙÙßßP[[‹.x¶lÙ‚a˜P(LMM5*²mÛ¶ŽŽŽ .T*U]]]bbâLêݾ}]SÚ¿DD„T*­¨¨ [¬î/¢³]Vû&&“¹uëÖîînô«iH‹:„ÆÇÇgeeétºððpWWWoo襤¤;wº»»B³²²V¬X1<<Œòãû&¡H$"“É>>>t:}×®]:n¦€]HHHZZšD"Y¢A±ÈÒÅé)¦!­™èïïÇM244d"4ËèèhSS“R©´œmN¡ºGÍRÄé–ÓÖLx{{ãiÙqrršMÈåÑÝF^–¯µ±lvµNlvµNlvµNlvµNlvµNÌlÖMÿ\ÄÆ2G"‘lÚ´‰(ù×|åp8`iU²±lÚ´)88˜(ù×}DVƒÍ¿Z'6»Z'6»Z'6»Z'ÿF-c^JRNIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1CompressOption-members.html000644 000765 000024 00000013427 14042362132 027216 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::CompressOption Member List

This is the complete list of members for mysqlpp::CompressOption, including all inherited members.

err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SQLQueryParms-members.html000644 000765 000024 00000020726 14042362132 026722 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::SQLQueryParms Member List

This is the complete list of members for mysqlpp::SQLQueryParms, including all inherited members.

bound()mysqlpp::SQLQueryParmsinline
clear()mysqlpp::SQLQueryParmsinline
escape_string(std::string *ps, const char *original=0, size_t length=0) constmysqlpp::SQLQueryParms
escape_string(char *escaped, const char *original, size_t length) constmysqlpp::SQLQueryParms
operator+(const SQLQueryParms &other) constmysqlpp::SQLQueryParms
operator+=(const SQLTypeAdapter &str)mysqlpp::SQLQueryParmsinline
operator<<(const SQLTypeAdapter &str)mysqlpp::SQLQueryParmsinline
operator[](size_type n)mysqlpp::SQLQueryParmsinline
operator[](size_type n) constmysqlpp::SQLQueryParmsinline
operator[](const char *str)mysqlpp::SQLQueryParms
operator[](const char *str) constmysqlpp::SQLQueryParms
Query (defined in mysqlpp::SQLQueryParms)mysqlpp::SQLQueryParmsfriend
set(sta a, sta b, sta c, sta d, sta e, sta f, sta g, sta h, sta i, sta j, sta k, sta l)mysqlpp::SQLQueryParmsinline
SQLQueryParms()mysqlpp::SQLQueryParmsinline
SQLQueryParms(Query *p)mysqlpp::SQLQueryParmsinline
sta typedefmysqlpp::SQLQueryParms
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SelfTestFailed__inherit__graph.png000644 000765 000024 00000012614 14042362133 030457 0ustar00tangentstaff000000 000000 ‰PNG  IHDR‚‰àÄà>sRGB®ÎéFIDATxí˜E† ž"?bBõL`%˜E0¡À„Œ˜PÃc(Š€ P@ ¢`Š€™ `Àœ#¨ hÿõÖÙëÜÞܱ——›®ç™ÛÙÞ™ž_Wׄ›·šS“`Io!«%½BýóZ !(ÁZ !ÁZ FE´ÃâÅ‹eîܹq¨*wŒÝvÛMjÖ¬Yîõª!üòË/²ÕV[IÆ ˽BUé³fÍ’¿þú«B„¦†ª¤œRÔ%¡W•v B¨J½YŠº¬’BX°`|ôÑG¥¨vÙïúÛo¿ÉË/¿\öWPŽY-„ûî»Oî¾ûîM1zôh;vlôÊH8óÌ3… î×_•gŸ}¶2ŠP&ÇÌ!¼þúë²×^{Él =zô÷ß_.½ôR¹òÊ+å©§ž’_|Qš4i"Íš5“^x!UùÞ½{Ëc=fß÷ßóœ¥}ôѲá†JÇŽeÑ¢E‚¨9äáŠúĉe¿ýö“¿ÿþ[  o¼±4oÞÜÒÉ‘5nÜX¶Þzk¹÷Þ{-o:üôÓO—Í6ÛLZ·n-~ø¡<ðÀ2bÄ9âˆ#䫯¾’yóæÙ¶¯¼òŠ•uuÖ‘SO=UV¬X!<òˆœrÊ)Ò²eK;{6l˜m›5¸×PÞ¦nÜ}ñÅEæàƒvC‡u .tÚ)î½÷ÞsÚÉî‚ .pË—/wÛl³»ùæ›ÝK/½äT,®OŸ>–ßý÷ßï´ám]Eã¾þúk×·o_שS'§ãŽ:ê(×¥K÷ûï¿»Í7ßÜÝqÇ.77×3Æ©`Üúë¯ïæÌ™ãÆï¶ß~{§§k–6yòd7nÜ8W¯^=§¢tûì³kß¾½Ów={ötgŸ}¶ûã?Ü{ìayq,•C…âúõëçÞxã §âuS¦LqêÙœ é÷°24jÔ¨ÈöàÇ™3g:rVº]l0¸B®#d¢ú-·ÜRn½õVa4k§ØÈ«]»¶T¯^ÝFôwß}'½zõ’ÕV[M8à€T–'tRjýšk®±õ'žxÂF$žC;_~øaYc5ä®»î’<Ð<Ãá‡.ÚÑæ…ð4,m´‘yž5×\S>þøcË«AƒòÚk¯Ù:£ïÇÚ{ï½åÎ;ï”ZµjIݺu¥Zµj¶Í÷ß/Ÿ~ú©¨€í{÷îÝí8ä¯b—V­Z‰Š@.¾øbû=[þdÍÔpÓM7É…^h¡£ßÓ7Ò·ß~+¸YD€ÑðE™z›Õÿþ÷¿T§ ŒŽÆè0~÷F§ùå—Ö¹ìËrÌ1ÇØtÄ6k¯½¶múçŸ gì¯^$õÓ?ÿücS k­µ–¥×¨QÃÊ—Ú( V²Fû°L˜0AÔ§"p®¬í¸ã޲dÉQ.êâeêÔ©©¦ãÒ5ó3ÆÜLô~ÐA™'¸ì²ËìŠæôéÓE§9ãŒ3ä¶Ûn“çž{Nž~úi‹¦M›fÞìÙ³í¸:t°<Î9ç9ÿüóíXt<æcÊH â2z#Ö@@óçÏ:äÉ'Ÿ´zùß³ö³ æ—•f‘IŒpûí·;é®M›6®E‹N£p§hs´‹Nݺ[wÝu]ýúõíwâŒØ¢ÿþ¶^§N÷Î;ï¸wß}×¶ÑéÆé(vh:â½nït„: -N`ŽW7ïôÒ·-:…X>Ä&êìx;w¶}ˆ4Pt@ZT8¶­ºx‹)ˆS|Œ0hÐ Û_ƒU·ÓN;Y,BŒ@\-]ºÔ©w²õ¢þTdŒ€‹*wËDBã÷ÙgŸå+Á’FÝ–öóÏ?;½•ï÷¢¾hdoAbQÛðù$Fí§Ÿ~ÊW„@ÐGÐëËã·gÛt[¶l™¾¯¤V‘BÈš`—É©cºùùœô•Åéûr£+‹Ë—xÀÇÑ<ânœÅm·úê«ÛôÝ7›×³JÙÜPzº™ 2³¹œ%-[B†-ç52Üu•Ø,kÎV‰ÖªÂ…¬Àhâ4/Ûnѯ3g~-¹¹u¥~ýÚYÙÍñt¯FD›•-P…Z¾|…t齂V2pà±pĬ=D²gŸ2ežÔ®½ºLž<[o@ý“µ½TKtŒ0räkzq¹^º®&Ó¦}PíµÇH¬–,Y&3fäÝXb}Ô¨YÛIQ°Ä aÒ¤Ùzs©zª§N§÷#V¤¾'m%±B1bº,]º<ÕßµjÕЛQy–¤´’H!,^¼TŸ&Ê»céû:oz˜î¿&î3‘B?þ-}à¥`ÕgÌX¨·»—%NT¸`k$ FŽœ®Ï ä=c­nÍšÕõùÈÙѤĬ'N‹ýªž~§O&å貆>5”#uêä­simèЗÓùÑŠ&òÊâܹ_ qÖ·ïd}2i[} *×¾7kÖP‹ËÎËÍVÀòù3¤Bî5”OÙKžk“& R;>Mš6m(mÛ6N¥%q%qSC;9“:'^<†Î%æ¤[â…ÀÍW}¬0é:Hæécâ{=¦ï˜ü)Å´Ob’/¦…?›“zâ…j‰„¯!$\¾úA¾%þ„pøê!ø–Høgâ…NóF@â…Nƒ>ä¯~â=BþæHî·Ä ËËásBŸYŒŽ{./‡KÌAQM$z=L áÁ‰Bx0%Ï&^‰ž"•O¼•Åà¬•Š„ˆc «Å~ó*¯Ì×f«2KNÎV®FºU¦>7ÜpƒÆ¿Å¶â¿¦Ÿ—[ó–q^’,»Z8ˆƒ’XâƒÅ’4ZUÜ'¡*öj ê„P‚F«Š»¬’ÿ Øž{îYê>ÎöꫯÈÐXôÍð6(ƒeKè_ëB¨ ²+U«¤GP€—ÓJUówþàƒäØc•çŸ>ß‚ØÊÃè|hoØŒ3ìPVXqO4 «èYC‘»)˵k×ÎvØanÓM7uÊk2BšÂ³ÜÀ ÐÑ´iÓÁ z‹‚¹Œ€¦£Üˆ(çž{®CING§Wºvíê¹ç(‹Á~‡¢ˆ#¿)°Ëò„Ðrâ‰':EÚ~ û²m5ªvŠ÷±õK.¹Ä=úè£N=‹ƒô’nPávÙe7iÒ$§X@§P0£¹îhÛ¶­[o½õœòž øøštÅYý Ézè¡NñD–~ÕUWÙ!¶Ûn;£·ðú‹"…œ¢‚¬^Pàø’qÊ$…‰¹8@ˆmøï4ŠŠ&eº>¸\<§˜Œ0ØŠW_}µña.ó¼å–[ ÐàJ‰(6F%Ú¡rÝu× Ô6%—è›P§ £“ŠÉòcô|þùçùb{ ¦õöÛopK;N€ÁlÒŽÖ7¢ôØN„6ÀaضÛnkßY‡ ÁÍ/”˜ŠÉˆn*^Á iÇŠâÇqÙÓ5Øp¨3dºóÎ;O_Ý·T Í)¾ÇÒ©;ÛSrÑE\L;×Ú©N‘C»üòË)–Õ†„Ù~øA_<ÙÒËåO¦’ñÛeâ`6ÂW'QçZS=X%µYV7Þx£Ó†wŒx}{»±¦å´ƒŒ™¨6Ûn"üD졇rŠúËçTPî›o¾±ßa@vëÖÍ]ýõæ%,Qÿä*ç1äÃ#ÀŠÂSù…ã``xvÞyg+3Ûax2}Ó¼­Ã˜¤œ°êÿçð4xÁ(ã‰ñf u*pé¤áEÅ 3$ižEÅl^î“O>±4ÚÆs¬,!æOi.@ñºù( z*ž"üDðIŒbh°xM6ÙÄxœ8ó(hl˜OcÝãù(Sœ±­NE~â¶œœ{”Om{QA¥*vCùQF…‡Ý-ŠŒ+Ã[lQà8x9RécÁb…,—©!U£"VÀí*…Õ:ÿÈ#´-ãÀ>q™˜ŸJìKä>ð¾ ƒéLçYkLõ&æ®AÂdôØÞ(&F¤Ñ…<†.êm̃Æ(#?ŒiŒcÆáù]=£Màÿ@"~,: øʘ<©Ó (c`¤j1¦È¤L§ðºn„/ÆÔ dW[çÆ†É…ˆ†Å!ÿT†&?¾~j»‡1Õ0¨×°àðÇ´©„A ÓS¦ñ†°¬{L ÓŽ6xEßV¶gžyÆÐ¿§÷ÜsS*¬!‹ÉŸÀ–@//ÈÔÀ”"À’€ƒdG:øA?5ÐF•ÔA=cª¼´›‚Fm?)Êuj(öM§L„`%ÏàgÌ}Q‹Cþ×c>†×Œ¢FŒ@g¨{M%#\qņÔ{"©ô²\Ñà­@vQ¼ BØ}÷ÝMDÔ)j”׋?šNJSÞ¬ŒVæÖ ­Bde‰Zò>4®’H=ΈC|ý]G^ôk™®ƒ(N·8¼ ±KÔ ÃóÄÕ!º_¹®G™ÉzYy¢âtæÊŽÏHâœ=jÞuFÓ˜‚X*Ó4XéyY—o•ô\Z-®1’Ò±{:ÿȦ¼/ 8`LgLѳ†˜M²*©ÒβªBa¤Ø×8—çªYUù7±œœ­õZÀ÷ºü\%ä O(•¨Å~tn+ÑÁ²m§€ûû¯G=5Ü_‚µ@Àý!²'àþ‚$àþþk‰î/Á0>÷„ OÜ_~$tj¸¿t$P÷WP¤Ü_Àý¡ƒ€û ¸?tÀ©!¯Úáoz $ö:‚oî¢òúœ¤[â…ÀT^Ÿ“tK¼’._ÿÄ !¼U-O ‰Bx«Z‚÷ŠáS[ ñ!¨ ¯‚‚¬‚‚‚‚þkÄ{„pú˜'†Ä !œ>!üçÃZ8} ÁZ€»Uåÿ8K#êÄÇÜ}¬*ÿË„PšûZ $Þ#„SòFBâ…L B“B¤ï•Åà¬•Š„ˆc «ùÞ¼ÊënµIµT5Ü_¦ýÇû2#–÷Ç˯atëÖ- ‘*ÜúhÃ5òvyo‰}C$ý3!é ø·þAAÖÅ~áfy·›‚ÁìÆeõfu}‘·Ìš5KôµøÒªU«ïrŽÖG_ðmo•U.„(‚ÈQ\y$t#/Þ _ƒÛäÉ,~¿æÍ›K™F_í/ðœàPÍŸ?_vØa¿K‘ŸÊ“…’¹MÜÅ«I\eœßø­·Þ*“\•'§vš,X°@X=ŒYXæf̘1ëÞ½»‰ xå<ÉàÁƒmïéZXžýúõ3$¿+¬Ã@]ÔÏ/4Î Ç(ÿAß÷´Ø€`qÛÄ¥&+‰Û#€š˜ ‡‘½ Ò¢Þ½{‹Gç™B{;묳„ÆxðÁ SÃÛÕÙ”>zôh£¸Ád ñ½È™={¶Ð™úÊ}ëÄ]wÝU”„"76 œâüŒ jšB@¤Aƒ©uÊÉwÏYìСƒ,\¸ÐêG±€Ö¡Ší“Ž;úC‹¢­ìà~|™ ÑQg>x‰aÆInT7ÅôÙw}U¾yŸ“O>Ù¶SŒñ‡ bùwÜq)ºœ?à¸qãäñÇ7Ó¹sg£É)Ž@ð MĶqe ¤äxË–-3¨?¶ÿ,¶G€?}út¼A!o#½zõ%”«Q£F)ªçuõ±€]*RÇøEcÇŽµÓ¥ž h»N:YE¢£C‘<æÒ•(JP3¤…F¯@ìÑX 1:Â2ü:Ð00€]ºt‘ØHWf£±“h<€^t4#=ŠDl€À8•Ž30„t 02h´ŒtÜ8ÇPz(=FN»ví„öùçñ!Ëĉ ;êÚk¯5"N(¦*oðžâÊ Çþ¼'»¤Ù[Œ‘»ùO¿›¹F"•@0Ü•|G440ÂA$ÝÈC‘7¢Œ$_çÔ'âb{ò€ÌÊÁ€dÁi`„#0Œk>®ðëŒV¼ÎI áBXˆnäÈ‘æÞ q®—¼<ô‹¼`7"à¸xÀdsæÌ±mô⌉’:ôïßßêO]é×ws>ubá¸Pá`I’^ï”c:Š+ó›o¾)ÐàX"ø’Z‰„@e0‚%*5*O°BÐÂB'ÒAT– 4ÊFQlOÞÆ£îÈŸ©€ùtÒ‰…ó:0Pƒ»ïÓ§Mc€8éh¥}ûö‡á+,_ög*óûã9ù·hÑB&L˜`ž&.Ž` RZ«-´P<žò#m`Ð~qVX™¸„ \/¸¸<ŠJ+‘ŠÊßè|b‚zõê™7€d ™7L‡à Z·nm£—ÇHgþM78Ê4&®Ñ€›Åp÷ì‡7ÈÍ͵4F”ç9ûu„Êôƒ§Âè8ÒÚ´ic£Ž) ïByU¦F"b Ü?q‚¤nt2¢G´Þµ•7#È"Nâ*bt+¬Ì´#Žöà3nßô¼â¾;XŒËħy5R8Ü% Á\d&¤À4®n›€¯7Ÿ y 'Ø|ILB:¯K§ãa”¼j»ñ º—<ý:Hb:ùøã7zöìiå·®]»Ú|Ì©q£ÒÛ—%î“ú)Pü˜ËÉøÂ'Hæ“À\â%– >Š3¼AƒÙÙ ââÔ•:Š:¢LäWf‘p/9.Þ¹0wìhZ¾×ë¡h¢êÒÞk@ÕŒ–¡C‡Z8 @ÐH¼-, ‰ˆøél:c.'hbIJ½ nœNÀ%F§Û©?g±éÛ“Ž—ˆ6z!YÄ&#TÊæA6"î@ Ñ)“ãøé,.#Ú†X…òá=h?¦š8+¬ÌLìŸÉµ Dƒ·õS¼§ì_¯GTì[éê)P! ˆÚÓ-Úˆé¿ñ=îwFHz§ÆíëÓ脸Ž(,Ýï·²OÆtCèéwìè6´¯ÓKaVX™ñ ¥±ÂXÂ\•|j§Q>€É4(ê~ԳǧïÏ97.4XÙ¶@™ 迸" J飯_H¯nœ‡Hß&|/~ ”ËYCñ‹ö¨ôÐ( MySQL++ Reference Manual MySQL++: mysqlpp::BadFieldName Class Reference
MySQL++  3.3.0
mysqlpp::BadFieldName Class Reference

Exception thrown when a requested named field doesn't exist. More...

#include <exceptions.h>

Inheritance diagram for mysqlpp::BadFieldName:
Collaboration diagram for mysqlpp::BadFieldName:

Public Member Functions

 BadFieldName (const char *bad_field)
 Create exception object. More...
 
 ~BadFieldName () throw ()
 Destroy exception.
 
- Public Member Functions inherited from mysqlpp::Exception
 Exception (const Exception &e) MAY_THROW()
 Create exception object as copy of another.
 
Exceptionoperator= (const Exception &rhs) throw ()
 Assign another exception object's contents to this one.
 
 ~Exception () throw ()
 Destroy exception object.
 
virtual const char * what () const throw ()
 Returns explanation of why exception was thrown.
 

Additional Inherited Members

- Protected Member Functions inherited from mysqlpp::Exception
 Exception (const char *w="") throw ()
 Create exception object.
 
 Exception (const std::string &w) throw ()
 Create exception object.
 
- Protected Attributes inherited from mysqlpp::Exception
std::string what_
 explanation of why exception was thrown
 

Detailed Description

Exception thrown when a requested named field doesn't exist.

Thrown by Row::lookup_by_name() when you pass a field name that isn't in the result set.

Constructor & Destructor Documentation

◆ BadFieldName()

mysqlpp::BadFieldName::BadFieldName ( const char *  bad_field)
inlineexplicit

Create exception object.

Parameters
bad_fieldname of field the database server didn't like

The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadConversion__inherit__graph.png000644 000765 000024 00000012643 14042362133 030357 0ustar00tangentstaff000000 000000 ‰PNG  IHDR‡‰í+zsRGB®Îé]IDATxí ¼UÓÇ÷{%‘1ÑßL†"¡O É”dÎ<PÆÌ"2%Sʇ>†R!dæ)êQ !S"2E¦4hØÿõ]ìûö9Ýûæwß¹ïîõù¼î÷Þç·×^{sO÷[`ÅL° @ Ól ›‚ª@pŽàΑQš°£~¶%˜1c†ùé§Ÿ²]mÎ×·òÊ+›víÚeõ:²î‹-2­[·6k¬±FV/4—+[ºt©)..Îú%„i%ë’çN…Á9r§¯²ÞÒàY—þøãDµ©2Éç8묳̻ᄏÂ5>ñÄfôèÑ+l¯ »ì²‹Y¶l™ùꫯÌÔ©Sk£ ÕZg"㡇2Ûn»­ÙxãÍ#ÿüsÓ¥KÝþÉ'Ÿ˜öíÛ› 7ÜÐôìÙÓùwïÞÝ\{íµºÿꫯ6—]v™ùçŸÌi§fÖ^{m³Ï>û˜/¾øÂðÍBŸ>}LóæÍÍÎ;cÀQ)ƒöíºë®zì9çœc¦L™bºvíªm$z`÷Þ{¯žOýwß}·nëÕ«—¶e³Í63Ûl³Mr‰ïV²i2¢ìï¿ÿž±Ê¿ÿþÛ®¶ÚjV¦ ;a»ÕV[Ù… ÚÝwßÝŽ5Ê._¾Ü¶hÑÂöïßß¾ùæ›v½õÖ³7ß|³–'m¿ÿþ{ûÝwßÙk®¹F·xà¶_¿~V¢ŽÝa‡ì!Cì‡~h6lhGŽiå–Ú~ýõ×vܸq¶mÛ¶zþ%—\b¥³íäÉ“íÖ[om§M›fo¼ñFÛ¬Y3+‘ÁŠóؽ÷ÞÛΙ3ÇJGë±þù§-,,´?ÿü³‡°=zô°üñ‡¶ïÅ_Ô¶o°Áö¯¿þ²Gu”§²3gδǼG˨;–,Y¢Z”zP ìL\äXuÕUÍ–[niÎ>ûl ÏL%«¬²ŠiР>‘чh½{÷6{챇éܹ³ŽFþ!Hh”èÛ·¯Y°`yýõ×M£FtJb¤Nœ8Ñ´lÙÒœ{î¹F:Ɉixá…̉'ž¨çMˆ cÇŽÕQÿöÛo›Æ›_ýÕ|óÍ7Zßé§ŸnÄY4ˆc™ÕW_ݘ&Mš¤ÚóÊ+¯qjCD;âˆ#Ìn»íf¨#úО#<Ò|ûí·©s’´8ç@àçŸÞtêÔIC2ó¸D‹”f?þø£Yk­µŒŒRÝVÚÃ4¦ uF"‘Q¬SᇪçᄘDý”è¡À ޏþúëk§Õ«WOÏå|œ'ÀÖ\sMýd:¢žtÆÔ²Î:ë¤vqLk˜DGý¬_¿¾N_º’°ç2-˜£>Ú\tÑE†+aÚÈ4¡²ÑÑ;í´“‘Ðl¦OŸ®‘áµ×^KIúÖ[o™–Ìüùó Ëä2-hqùå—ëÈŸ5k–ùôÓOÍí·ßndŠÑ|‡Ûo¿ýtT“P<Ø\uÕUF¦$³ÒJ+™K/½ÔsÌ1fذa)çp¹Î3Ï<£íu Îˆ'SŽ^O9e:r»ÿ™õÇçe)B¨–<ÂüïÿÓσ>X—Û´icN>ùd½Ed*Øk¯½ £Žã‰6I¨ä)zÇpÐA™ß~ûMJ¦ŒéiüøñÊÏ;ï<#y:Ñ\`h^~ùeu(¢ N"JB¼ùæ››_~ùÅ0UñÆ]ÒSO=¥ÏôÑFÚàê#©îر£‘IãÚâæÚß^ëë5Ç”ZdY ©;™„Tæx·ªŸÒÙ©u’Zé°Ôzi ú­<Ñd²´ãد“m$¸~]$¤¯¾úª•\ÁÊ4Á!j$Ž$œqã\ù²1¾¹Üë”KržmK\äp£…Ñ77ϳ½´\#~SƒÜõÄ7§]'Ÿ‰·¡él£6Šl&’¹\ÂßÁíq.Zb#ÉbÊ-u*‘Mr;«Ú¶à•P°"Q«Å'æ”ÄÝ­$F™Ð“õÈÁƒ˜mæÍû;§;µºœC”,.ž)ŽñïìÊ³Š±c“—UW‡W¤œà¢ÖˆïÈ÷4‹U7>‡ ›T ëì±yïK—.7ãÆ} ßü–äå³fýlæÌù½Îvzy/,èSMD}Á¬-0cÆLñ7åårÞ;LjÅòÿ¿SŠó€Å‹—˜áÃÃÔ’×αpáyßbFÚ—mæÎ/ï†æ÷ÛLÞ£@7|³ð9yò,³xñRyìß·ÂxS«°wC ä­åò~ÇGòÊâúYhI2«Èû'¤“&ÍT¡{zôxØ pTÊY:tØR^(Êßàš×‘‡h׮佑 êÉKÀ[ÈOø÷ýNöç³åï°Èç^/çµçð„"ßHìûœ^;³µœÃSšaáKêA‚s”h–b çð ÓŠ'†,çðôÓŠ'Fpލa-ª@ˆQ=š§@pOŒ°U 8GT°æ)œÃ#,FÎáéne=1d18‡§G¸•õÄÎ#¬E‘#ªGXóÎá‰Á7²á[ÙA‚s”h¡ßȆoeK ÎQ¢EXŠ)œÃ$ÜÊzbÈbpOp+뉜#*FX‹*"‡§G˜V<1d18‡§G˜V<1‚sDÅk1øM°ÊH)®Îü5j´ƒ-(¨_g®gÒ¤I•íZ=¯JÓŠ8‡þè¼””z€”ËËóç¿/¿Ó±¤N\ ¿ç.Î [­’sT¬ªpt®)œ#×z,‹í ΑE±s­ªœÿ_ö€z¯¡@ÀªŠ4PÜöÜsÏÿ!| B ¿ D%ÅrÞ9^zé%¥6ÞÿýUÖªäqÇgà·ùÒá¾üíU]~à”J Ïî¹çž3 Ë’ä5>­<þøã*8î|&£-¶ØBG)<7FÎè¡)š8>”ýBƒTêÑŽ;î¨ç :Ô&?.ûߎ«iÓ¦JUbg:Ì'ÛÁ…>ùä“,* Ï‹a£ 0 òGt²¤÷€”L8Úú\ØM7ݤe¥C•¦kÛŒ3 h1¸qh ÄJåÑ1Ûwß}•!ò‹úàÔpÀæ°ÃSöΔ«Ê°`¯£YZ`4…Îh…¹fÏ8ã +?ð®Ë_|±=á„”€$?–¯„¤yóæYó)’3Ž¥ŽÖ­[ÛAƒÙ>úÈŠ(2TFŸ•‘®eÊ‹:öé§Ÿ¶Bƒ¶ë®»®Ò‘Òa>)KœOÏaÙ!GA… àÏ _6õ'È0±Â³BTì§%uøÏ#FXaÆ)Vli:T)×oÇŠƒÚ /¼Ð.^¼X£?üðƒ[ N²”%­°æ¬8œ>{¾®¶=9¿4“[Y+»Ò)s_V¦Ÿ`3ÁnÎËÐo»í6…ü²¤&ÄGæwðŸ*B)ö#£¸/ÇÁ~‹4¦C9D7ï#a>æ6/Ι3J ëD gŽîxçwjÔ‚ÄĨ‡ùF{Ž=öX=D)¿)Æ'#ä©C•1ãmƒ Òú¤?•€!}ì±ÇôxÚ/ŽhJt:餓´.´7ŠN5iYqDÂèÔt˜,HÓ̹¼¢Ç2Ÿ„Zà{¯¿þzÃôÎÓ!CÓ!&|Ì—ôtÛým™DåXà€qãg¯©›Ždbµìb:‚; T)P¬™v0×–3µC†²vºsÈt¨QΧ~Ž­i«ñœ£<@®™‘?–™wãøPÄGpF lVæû¸1߃%*ÅѰt˜O™št>g?Ç‚ÅöÿØÊ”¨µ’MÞ¢”:-Z¤dHX2éP¥œŸ©mÔãŒAAΙ#'"ÿ¨-ËJäÈtqˆI~`$ŸP,§ƒåÅñ¡„U:ˆicT9så0ª¹³ £!@s–óyÅWhø?ÿüóSÈQÊ!ùóÃ<çßsÏ=J§–<@£Aò%#˜t=—¶@–¦¾>}ú¤Ð¡UJ”I×6® ¶»&êêÙ³§9óÌ3Í 7Ü NÇ€IgîšÓí«¶mef%¥ /3!-åôÈ.ôj2éoL‡Í BT@À)†=çôuèÐA¹÷>¦3æÓ¯§*Ë5¬DHqTi¦¶q’8r?ê âÚ)§²–3 iYžÌh'9ì[:|¨?ÏûǺeF+q‹c>ãû+»NîÏ2¡JÓµ-Óó“t×^Ù6Vö¼ZV\£!;gb·ºc⟄o—œ²¯mÛ¶æÙgŸf’€ùÌÔ¶›° ‰pŽŠ:i|#ƒ÷ïܾ$`>3µÍµ1©Ÿ‰¸[Iª8yß®Ê&<œW—Þ+((´ ¶´…… x€P'þªú&XÞÿ0¾‹ê”(ù ÓÊZth‰S¸¥àÿ)СÎ%J>ƒsˆZâþRpQ# C}—(YÎ{çèÐgˆ/å½sthÜ%JÖóÞ9:´ÄâKyíw‡èz"¾[‰6){kZºÖyÿ„4 C3;H^Gd èÐÌΑ×9GfYÂÎáùAøÙ'OŒàQ1ÂÏ>Eõ‘#ªGXóÎወԞ!爈¦•ˆ!!ÊÖ|´â«–# çˆÈV|‚søj„åˆÁ9"r„_àžá ©'†,çðô·²žÁ9¢b„µ¨!rDõkžÁ9<1øµœ¬übŽWg’ƒsx½#ÿ7<+?ÄæU™èÅà‰îžÚm\pOÿp+ë‰!‹Á9<=­¬'Fpލa-ª@ˆžaZñÄÅàžaZñÄÎ#¬Åð0®¨¨¨NüPš\b¥®£®¡C+ªhß"ÿãMœC± §žzjÌ…Âj]W€¾ä[È9|5ÂrDà9Н@p_°Q ’sDöÔÒ t~ÃÜqWªÒ °a@û0~¼eË–+°TJ+Üw»víôÁx˜÷Þ{Ï,X°@1dÕѾÒê.kÀÂ&MšT‹N™êJ\ä×5uêÔLí­ÐvˆGðÒ`²M™2E!7ŽûVž‚úöí«‡M›6MÑ^4Â{14×+O5vŒ#?ÕXRp…#€;À¼à4a•â"£¢µÀqÒ  × õЀ¹DÈáÇ+ŠÇ±wE 4 <EÎN“y ‚QûöíM=•5aÂÓªU+ÅoÂ1Ú¤¢9Ü2eÛ:å”S´X0`à»:wîlÆŒc@y€å8üðÃÑRëŽ;î084&Gƒêß¿¿è䢅áÄB³ÔcÀ†Bqò”rBgR¥p(PHʬc;õ95‘;`B‡Ôói—M7ÝTq!ƒV€b§NT !I*"¤Î Ö ~žÐ&`§®E‹˜1©~ýúE˜t*HÿT8r0r&NœhŸi¶Ûn;C£{÷î­4å±cǪ@1"áœð^\\¬¬X!2™Ñ£G릹òÊ+•—J‡ÀJs†ðÝ©lXÆYò°‰úwÞÑS`Õ:¿<~üxEb ÙÉ@^ìÚµ«2à|ðAsÝu×)¯ÍÁq8:™ít /þÀqòÓ ÄkX¸t×Â':vTq_8×aš²@qèa0½ÿþûÚ^`É´“A@3€hÿ]wÝ¥Î^€»té¢ Dt£ø³pî˜.iS KÕ¡Rr-Ç08µªNètÒåü§ÂÎA¹ŒXæoF%Ÿn:"pa~ >q"øeðTXçâˆ8ŽR“2¿eÒ‘”—ã)ƒQO'aŒ6„Ä‹ˆÏf\à/S.0F/ cáÀšÆk'LŸ>]£‘ ÇDh¢ DGBvÀ„NgÔÚ³yóæ¡p0 ’%Š6\?`ÂŽ;ò´àZÚ´i£QçbêJ¤Á“áß5kÖL#, BH™ÔåŒúq œðâÀŸ2°plÚÅõÃ’£þŠZ¥œƒÆb‡Ð¾1⿈ÀK§1"Y„[B&ùsÆÈŠ›ìbt)0·m$ˆ¥¢ çÍÀ™Å)iB!<\X”6cˆê€>൘O¶ÑyÎxc Þ-#–ëpÀ¶/[¶Lx²;\§LöÁ´¥~:ge*¥-ìÃA© †®ìǺwï®Ó4Q¶¬K²ÙÇù®~Ö©Ÿò0×ÊqÛtG9ÿ©”s”U6AŽA6ͨ!´“’S€Ý$jÀucär1Œ"r˜¸!ó>¡žËœŽÑQœÇ¨Ùd“Mte]0Y7È?ˆO¾„c“Ìá4ä1L{DÄ£Mteóéu8OÊÀÀ…!ú¨æ·Þz«nÿ㮉è`™©#AÊ6®“isdzÌ`„º¶­˜nÝtJÂ9Ix¹ÝÆ‘âFY~yñý™Ö#?5ɨ†«ZÕïV‰4vèС=¨œ@bÊèp¢³Ap î4p’4lذa*6ùÇ;ç!é"™c ð§%=©ÿÐã”ÁôD›7ްÍv—o¸bI(©—|".6s=Û‰D•1Î'Š“&]Yt<õSG:cza°8ÒSÚ6¢‰;8g•»wvšOî&¸m"IbZq†ÐŒÐ¸ùóe|ëéöÓ1Uq Ê¥=® :ÔïÔ¦M›rÈ †“fÚ‡ÓWÅÊ:ß×2]=îZÒí«ì¶jwïv‰]yvË-·D¼Þ%fñóy>àµø¾°^½ T»sp×QQÇà’܈»<÷Ì­»Ït‘Äí ŸÕ«@Ü­ToCiµ¦€dÿ)“¤¤RoPIãÃyu@ƒø›`‘»•ZóÐPq"ÓJ"»% ΑŒ~Hd+‚s$²[’ѨÿЬ ÇRpIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1LocalInfileOption-members.html000644 000765 000024 00000015344 14042362132 027604 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::LocalInfileOption Member List

This is the complete list of members for mysqlpp::LocalInfileOption, including all inherited members.

arg_mysqlpp::DataOption< T >protected
ArgType typedefmysqlpp::DataOption< T >
DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SelfTestFailed-members.html000644 000765 000024 00000014072 14042362132 027065 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::SelfTestFailed Member List

This is the complete list of members for mysqlpp::SelfTestFailed, including all inherited members.

Exception(const Exception &e) MAY_THROW()mysqlpp::Exceptioninline
Exception(const char *w="")mysqlpp::Exceptioninlineprotected
Exception(const std::string &w)mysqlpp::Exceptioninlineprotected
operator=(const Exception &rhs)mysqlpp::Exceptioninline
SelfTestFailed(const std::string &w)mysqlpp::SelfTestFailedinlineexplicit
what() constmysqlpp::Exceptioninlinevirtual
what_mysqlpp::Exceptionprotected
~Exception()mysqlpp::Exceptioninline
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadParamCount__inherit__graph.png000644 000765 000024 00000013010 14042362133 030270 0ustar00tangentstaff000000 000000 ‰PNG  IHDR‰Ï»³sRGB®ÎéÂIDATxí ¸MÕÆ—+C4©hB¥9šSš5SyRñ”ФA’4¨4h@C¥(2¦IWÑ<‰ÌÑ@Q*EEB2¶ÿë÷¹ëØw[çÜsÜáœs}ßóœ»×^{í5¼ë]ßúö9çž·L`ͨ)É#0>'ù²ZR؈€’F™2Jš”!Ó¶I'ü±ùï¿ÿÒÙ…¬l{Ï=÷4µk×N[ßÓJbðSO=5mƒÏƆ—.]j.\˜Ö®ëö”Vø³³q%MvÎ[Z{­¤I+üÙÙx©"ÍgŸ}f–-[–Q31cÆ óÛo¿eTŸ Û™¬$Í 7Ü`¾øâ‹ÍÆ~ï½÷š9sæl–_Òåꫯ–f'Nœh~þùç’îB±¶—ñ¤4h9øàƒMÍš5Í‹/¾h^xá9^|ñÅæ?þ0={ö4{ï½·iРùõ×_¬¹s皆 JzĈ¦S§N’=z´9à€Ì~ûígú÷ïoþý÷_S¿~}óÖ[oÉ££F e~ùåsÚi§™]vÙÅ\vÙefýúõæï¿ÿ6Íš53Õ«W7çwžùý÷ߥΣ>Ú\ýõ¦Zµj†>­ZµÊ4oÞÜ 6ÌtîÜÙüðÃ毿þ2ëÖ­3×]w©Zµª9äC o7`'žx¢éСƒÙm·Ýd ™æ)¥“‘?M&ছn2cÆŒ1/½ô’éÒ¥‹LÜQGezôè!“yÿý÷›§žzÊ´lÙ2æe¶Ýv[sì±ÇÊPwß}wsàJYâŠ+®05jÔ€÷ØcY圜tÒI¦E‹2)•*U2óæÍrPæóÏ?—Õ¿óÎ;›[o½Uˆ±Í6ÛÈÄá= ÜàÁƒÍ1ÇcÞxã ñ2|ðx¶ &Ä&Qöª«®2†¾•+WNÈå ‘ÏuÈtÏ=÷˜ï¾ûÎ,^¼Ø”)SÆÜyç2N¼e6leMÍÍͷݧO™¼ð;Șl!Θ¬xÆd@6¶^¬öºuëʤADÚâÈŽx í¶ÛNªªR¥Š€û¹Æ½\»å–[bMí°Ã’^»v­Y¾|y,?œøé§Ÿ ätÆ–çÆR¹reɆ°Ù𥃌& 1 q^€'#ââ Œ­âœsÎ1}ô‘¸b‡¯¾úJ®­\¹Ò|úé§’¦<ùçž{®ùçŸLÛ¶mMûöíÍ{ï½g˜äÊÓ [ɵ×^+÷œyæ™æÍ7ß”t«V­„¸x3b§»ï¾[ÞÂ{¼Ï† ¤ñ FÿÂvöÙgK”c‹#6"ŽÉFKëdžËßu×]eÛáxÁHš˜†É„ ’¶lL*ƒ8áüóÏ29Ò|òÉ'æÕW_•ø… zõêÕæ”SN‘ûj ZO>ùdÙ:úöíkn»í6CüÓµkW³Ï>û˜¦M›Ê5¶À~ýúIìAœƒá- 5D%¶„†mxËY“&M ÷ÐG¶%ê‰}ç•ñfÝaÚÌ…Iµýý÷ß6HÌWÖ>‘ÄέG l0;O”à>»ý$*»m“ 6É×–ÝRë±»ýÄî#Až%g¾]ÎÉÉ1{íµW¾²x>ŸEËùÊdz^FÇ4™ý#/[¶l6tµÈú¨¤)$”á'¢BV•5·+i²fª2§£iixR°Áp树ד•+ך)SÙ/ˆm|³0Ó:È7÷Òie¯ÓÙLl{àÀOíÛü£Í„ L­Z›ÞËľ¦¡Oú/,>Ї ùܾïSÖŒ9Ùwy«ÏÓ˜&B… ÿ²Ÿsýnß Û`†Ÿ¹ª§  ¤‰ð`ôè)6g㻲˗ÿkfÏNï—¸#ÝˈS%Md†hÖ¬Ùø¹ÑÚµë͈›Ù+rËVwª¤ Mùܹ‹ìwbVÆrÖ¯ÿÏ~) Ï£F@IBcÔ¨ÉöËZB9FÎ'MšŸ/ok?QÒ„@àK¶U«Ö¶,µM(iò°˜6meÖoB&/ÅWrsgZ£ÿ>ìÀQÒä!1fÌ ûݘÀ~+¯¢}U0•+—ÏKW´ßá]kfÌøÉa¶Õõá< ¬^½ÎLœ¸1vY¼x¹éÖ-×þ§Ã¥rµbÅr¦^½}¶z²ä0>­Ÿ=eÒ,T¨PÎ~Öt€tiÁ‚%¢¸óLêg&ôE·§L˜…,냒Æ3a99|W×sA³%‡ÄúÙ¿˜¼,%M|lôJ”4`ؚآÔü(i<¸°5±E©ùPÒøqÑÜ(i€£—ü(iü¸hn”4 ÀÑK~”4~\47J8úÈí%”¥¤ á’úÈíð•4~\47Jšàè%?J.Ä4ú)·˜¼,%bý”ÛŒ’&>(z%1êi<øè#·”P–’&†Kê#·CÂTÒøqÑÜ(i<àèöä%”¥¤ á’º=9$üG%ÍM„@Qý¤5¿>nÛ)¯œœòA¥J‡–б¸9±‚ E5ÕãŠÌÓ l²¿û˜í¯ V[ñYY?7õêÕ‹ ‘$r É^+2Ò$Û –Ë~”4Ù?‡%>%M‰Cžý –ª_°’6¢4—Š*K¼)DtìÛo¿Íwå9Q‹Ó2›:uªèOg;…©»TyšG}TTÛ ˆ»Õ\ÄQQs/ÔíŠËœl4r†ãÇ/®fФÞ%ÍðáÃE²!QÔhQ¹Eé %&%¶'žxB†üña‡&*n(·!TÊ9ª´ª·h'qÆ"58kÖ,ÉçÏ€DyŽò(¹¡¶‹ùäÉG*Ð ‘‘Ì—Fq"º‚¥Ï=÷œ(ÜñdB½gu–HÒ”ð?üðX{QIgê÷õ-,½pᘬ"’Šà„îÔ5×\#Š¿`ˆæ7cA#áù矧ڒ5;ø"±x °Ü ë²â¥•',AëÖ­ƒòåËKÚêG—_~yðúë¯Gq„Ôa'$°ÀVz8°ÉŠp?þx`%ƒ¥K—Vú/à½!+3XaŽÀЦKC† ~øáÀÊv{ FXà¥NTà¬2m`'&°òƒr ÷Ýw_€:]8m‰ì¿ÿþ ØkèС¢*g‰Xæ V­ZÁË/¿X1ÔÀ °–¸• ¬Že`% %Ïj~¯¼òŠô÷›o¾ñöÍ.ÀªúJ]Vb1°ÚáÒKÚÀ.¢`Ê”)2+Ó€¡%Q`Åì¥ô± ³ÜU.¨X²×K^Y­ÈN8Ai‰H£@k !«9dV«qt¼â¥“^xá…¢ÓÜ1÷¡C‰¡a5Ê"Ü΋{Q«ÅCFtÔÉ!Ó†%|ìöpšŽ·r†·Cöùé§Ÿ±x45/ºè"cI!}Á+ð"¦B]ÆI:s¿“t&í‚®N6ÚiX"T¦·SåEò™v¨}N¼µ%Œ¹ãŽ;¨²D­Äa„D1$ü¢rÖó„H! jµœ3¸iÄÜo¼ñFsúé§ paY?î‹ZXrU\&sùäÅ“Cvu¡|‹˜|Ô )0&×I2sA¾þú똤3yNÒ`×òÃ}ãÜ !UgüÊ(²ÌXº%™K4¦q$:²ò»uëfªU«fЮdu 4ÈtïÞÝØ­F‚R¤•! âAPÇïP´uí"ª~ä‘GJŸ2uñÔ‚…ÓÜò­{ÑÞš5kDÏøÎ;ß~[ây!!Op;ž¤3mÄëí8#6ÂóG|Ç"Bú9¬Ä=M¼A;· !lÌ"úÙ”epÁf} œh̘1CÉy¤D¼Ýñ[Å.cA¢£U«V —´Oy³B[˜ç‰ñK8†q×}}ó•#^ãmƒL²ŒÙž…í†ý÷ŸŠW„·(÷Ä­#äãõ-Ú×L>Ï(ÒðØ™*a7ºBÝSMø‚•’¤G•WpÁ‚fÑ¢Erfe{L:uDí-Ùz¬î£9þøãÍœ9sŒ•å‰Õƒ$ OÍ.ÙzS)‡è¢¬µjÕiIJe˦r{±”Í8Oƒì´iÓŠd°VHÕ 6LD¼P˜CÅ–d ‘. e;+hj¬æ”±‚£¢9a¹V\C=¸_¿~¢07iÒ$Ó¦McµŸŠ¤ÉÜÜ\Ó–T–²§A£9dÔÑÐ_Dü@Q}³J´1ù¿¦M›ŠêE6E4îE‰rˆ•Z¥Y3bÄS£F à bR1(·Ê l×®©_¿¾H"fŠü_ݺuÍ]wÝeYGñ­}ûö¢ÀæÒÔ…¬ŸUØ•j‘õcâQ¯Cæ7ôŸš4ib7n,²ƒ=zô0“'O c”èœY5[QãÜ*þš±cÇJ|õ0ÑàA!œUÖ5VÄL4¬#ýF=Oȇâ q”·‚^¢ŽÔ!^²oß¾® âñ ÷9˜ÚgaÓ¼ysSíÝ»·xFDQñ’à‡HjÏž=ÅÃZ%^‰g¼ôCošŠ¥ìiV¬X!mÛ¶­w=óÌ3"¨¨Ø"È€1<ÛÛ  ØèUSzÔ:u’3QÈö9C’UÍjCò¯ÿþr W¶çl¬@ ­(ÈM#žÚ¥K™&aU´!‘|ðÁE)­m“ÆVD>2Ba©?t2©‹ÉÂ[¡‹¯DV) FŒ U`&©Q£F2fúÈ¢CJñ¡‡©E aé⨌“m0l,tÈYD`Çâ€|VVZt.i×*óÉ-”AŠ]LúÀü0.d‘U¤/È2ŽT-eOC¬â+hÞ"M'GŽ)Ò¿]»vuZV2Èè/2 Fça:Þ PðÂäQ£,^ˆ÷Ò†8*J»ˆ‹BFÚ¿·NS/«— ‚¨V[[ˆÂêg%CÑw;uêTñBtÄUVS;Ö%ʲòË•+'Âê´‰—òÕÃMH/#Í6ƒ’®ÕÔ!z+9«ï†'WxlâT€—,Y"u;ÄnÈK°Õ2ˆÍcxp·xòŠä;àMX¬sAýïÎxRµ”=  tZXZ˜òÈ#â4h €C_=ÔåêA}—ØhåÊ•ù4¾)“G&wúôé‹ÏLÿÃÒ‡lQ3l,gNšsˆBùÂØ‘¦ ! û-ºÒ WÍ€ÙÏKgÛb•Ìš5K‹Á]G MKâ ¶ ¶¶> 0 /ÃêĨ MK†ýƒ7aE2QhfC&â$¶O¼@Ò'HEÝ wæÌ™Þz\›ÙðˆˆÇã• ªÓÝ‹—‚”È3bl…ÄÔEÌŒ‰ÅÇx&Ö"Àðš‹nKl‹¶§x ¹• øhT£t1 :Ü*Ò¬Y3Ùrj×®mZµj%ûnx5¸z¤E‹ñù€Þ§O!ž«cÇŽÒGAêtiʳ÷óÂ+²ÍuèÐA&úÙgŸ5­[·–•‡°(–‚n7A<Ôy iÀó‡xÀWE݈&–`û`›À›±5'2îE:¯Ââc\xt¹ñâx ¶u>òÁÓâùX ê±Ç“ OÄx}FýàD¬4x*–ï'añDçᘠ•Ê\YV.Š÷ ˆ©Øã1Xxžðd°‚ O>ƒ€©àðÞìz>ú®³R Cê§?®¶(^ΪW¯î’Õãnf²Ý„»£»–ÌÑõ3ZÖ‡ H†0Ôåž6£õt¾ ©‚J&y½fÍš¦W¯^±@0ÉÛL÷îÝcÀrÏ%—\⽕÷E­ ïMšY¤9ipwîÉ!•žº'"wO¼Uà[]î=– oÚ%Óm%›°O#1û°É$Û9Øâoîé½ù±‹~s/ßÓS6‘]ûš6Tb9mÐgqÃÓdñ䥫ëJšt!ŸÅíþçxá,vkçIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Query_1_1SizeThresholdInsertPolicy.html000644 000765 000024 00000022722 14042362132 031422 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::Query::SizeThresholdInsertPolicy< AccessController > Class Template Reference
MySQL++  3.2.5
mysqlpp::Query::SizeThresholdInsertPolicy< AccessController > Class Template Reference

An insert policy object that triggers a new INSERT statement after a size threshold for the length of the INSERT statement is exceeded. More...

#include <query.h>

Public Types

typedef AccessController access_controller
 Alias for our access controller type.
 

Public Member Functions

 SizeThresholdInsertPolicy (int size)
 Constructor.
 
 ~SizeThresholdInsertPolicy ()
 Destructor.
 
template<class RowT >
bool can_add (int size, const RowT &object) const
 Can we add another object to the query? More...
 

Detailed Description

template<class AccessController = Transaction>
class mysqlpp::Query::SizeThresholdInsertPolicy< AccessController >

An insert policy object that triggers a new INSERT statement after a size threshold for the length of the INSERT statement is exceeded.

Although this insert policy isn't completely deterministic, it avoids building the VALUES expression for the SSQLS object passed in.

Member Function Documentation

◆ can_add()

template<class AccessController = Transaction>
template<class RowT >
bool mysqlpp::Query::SizeThresholdInsertPolicy< AccessController >::can_add ( int  size,
const RowT &  object 
) const
inline

Can we add another object to the query?

Parameters
sizecurrent length of the INSERT statement
objectthe SSQLS object to be added
Return values
trueif the object is allowed to be added to the INSERT statement

The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/functions_func_i.html000644 000765 000024 00000013303 14042362132 023012 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
MySQL++  3.3.0
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ReadTimeoutOption.html000644 000765 000024 00000031236 14042362132 026213 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::ReadTimeoutOption Class Reference
MySQL++  3.3.0
mysqlpp::ReadTimeoutOption Class Reference

Set timeout for IPC data reads. More...

#include <options.h>

Inheritance diagram for mysqlpp::ReadTimeoutOption:
Collaboration diagram for mysqlpp::ReadTimeoutOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::DataOption< T >
typedef T ArgType
 Alias for template param.
 
- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 
- Protected Member Functions inherited from mysqlpp::DataOption< T >
 DataOption (const T &arg)
 Construct object.
 
- Protected Attributes inherited from mysqlpp::DataOption< T >
arg_
 The argument value.
 

Detailed Description

Set timeout for IPC data reads.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/structmysqlpp_1_1NullIsZero.html000644 000765 000024 00000010071 14042362132 025057 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::NullIsZero Struct Reference
MySQL++  3.3.0
mysqlpp::NullIsZero Struct Reference

Class for objects that define SQL null as 0. More...

#include <null.h>

Detailed Description

Class for objects that define SQL null as 0.

Returns 0 when you ask what null is, and is zero when you insert it into a C++ stream.

Used for the behavior parameter for template Null


The documentation for this struct was generated from the following file:
mysql++-3.3.0/doc/html/refman/structmysqlpp_1_1RefCountedPointerDestroyer.html000644 000765 000024 00000013066 14042362132 030320 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::RefCountedPointerDestroyer< T > Struct Template Reference
MySQL++  3.3.0
mysqlpp::RefCountedPointerDestroyer< T > Struct Template Reference

Functor to call delete on the pointer you pass to it. More...

#include <refcounted.h>

Public Member Functions

void operator() (T *doomed) const
 Functor implementation.
 

Detailed Description

template<class T>
struct mysqlpp::RefCountedPointerDestroyer< T >

Functor to call delete on the pointer you pass to it.

The default "destroyer" for RefCountedPointer. You won't use this directly, you'll pass a functor of your own devising for the second parameter to the RefCountedPointer template to override this. Or simpler, just specialize this template for your type if possible: see ResUse::result_.


The documentation for this struct was generated from the following file:
mysql++-3.3.0/doc/html/refman/structmysqlpp_1_1SQLParseElement.html000644 000765 000024 00000024511 14042362132 025761 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::SQLParseElement Struct Reference
MySQL++  3.3.0
mysqlpp::SQLParseElement Struct Reference

Used within Query to hold elements for parameterized queries. More...

#include <qparms.h>

Collaboration diagram for mysqlpp::SQLParseElement:

Public Member Functions

 SQLParseElement (std::string b, char o, signed char n)
 Create object. More...
 

Public Attributes

std::string before
 string inserted before the parameter
 
char option
 the parameter option, or blank if none
 
signed char num
 the parameter position to use
 

Detailed Description

Used within Query to hold elements for parameterized queries.

Each element has three parts:

The concept behind the before variable needs a little explaining. When a template query is parsed, each parameter is parsed into one of these SQLParseElement objects, but the non-parameter parts of the template also have to be stored somewhere. MySQL++ chooses to attach the text leading up to a parameter to that parameter. So, the before string is simply the text copied literally into the finished query before we insert a value for the parameter.

The option character is currently one of 'q', 'Q', 'r', 'R' or ' '. See the "Template Queries" chapter in the user manual for details.

The position value (num) allows a template query to have its parameters in a different order than in the Query method call. An example of how this can be helpful is in the "Template Queries" chapter of the user manual.

Constructor & Destructor Documentation

◆ SQLParseElement()

mysqlpp::SQLParseElement::SQLParseElement ( std::string  b,
char  o,
signed char  n 
)
inline

Create object.

Parameters
bthe 'before' value
othe 'option' value
nthe 'num' value

The documentation for this struct was generated from the following file:
mysql++-3.3.0/doc/html/refman/exceptions_8h_source.html000644 000765 000024 00000221156 14042362132 023626 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: exceptions.h Source File
MySQL++  3.3.0
exceptions.h
Go to the documentation of this file.
1 
7 /***********************************************************************
8  Copyright © 1998 by Kevin Atkinson, © 1999-2001 by MySQL AB, and
9  © 2004-2010, 2018 by Educational Technology Resources, Inc. Others may
10  also hold copyrights on code in this file. See the CREDITS.txt file
11  in the top directory of the distribution for details.
12 
13  This file is part of MySQL++.
14 
15  MySQL++ is free software; you can redistribute it and/or modify it
16  under the terms of the GNU Lesser General Public License as published
17  by the Free Software Foundation; either version 2.1 of the License, or
18  (at your option) any later version.
19 
20  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
21  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
22  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
23  License for more details.
24 
25  You should have received a copy of the GNU Lesser General Public
26  License along with MySQL++; if not, write to the Free Software
27  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
28  USA
29 ***********************************************************************/
30 
31 #if !defined(MYSQLPP_EXCEPTIONS_H)
32 #define MYSQLPP_EXCEPTIONS_H
33 
34 #include "options.h"
35 
36 #include <exception>
37 #include <string>
38 #include <sstream>
39 #include <typeinfo>
40 
41 namespace mysqlpp {
42 
44 
45 class MYSQLPP_EXPORT Exception : public std::exception
46 {
47 public:
49  Exception(const Exception& e) MAY_THROW() :
50  std::exception(e),
51  what_(e.what_)
52  {
53  }
54 
56  Exception& operator=(const Exception& rhs) throw()
57  {
58  what_ = rhs.what_;
59  return *this;
60  }
61 
63  ~Exception() throw() { }
64 
66  virtual const char* what() const throw()
67  {
68  return what_.c_str();
69  }
70 
71 protected:
73  Exception(const char* w = "") throw() :
74  what_(w)
75  {
76  }
77 
79  Exception(const std::string& w) throw() :
80  what_(w)
81  {
82  }
83 
85  std::string what_;
86 };
87 
88 
90 
91 class MYSQLPP_EXPORT BadConversion : public Exception
92 {
93 public:
94  const char* type_name;
95  std::string data;
96  size_t retrieved;
97  size_t actual_size;
98 
106  BadConversion(const char* tn, const char* d,
107  size_t r, size_t a) :
108  Exception("Bad type conversion: \""),
109  type_name(tn),
110  data(d),
111  retrieved(r),
112  actual_size(a)
113  {
114  what_ += d ? d : "<NULL>";
115  what_ += "\" incompatible with \"";
116  what_ += tn;
117  what_ += "\" type";
118  }
119 
127  BadConversion(const std::string& w, const char* tn,
128  const char* d, size_t r, size_t a) :
129  Exception(w),
130  type_name(tn),
131  data(d),
132  retrieved(r),
133  actual_size(a)
134  {
135  }
136 
142  explicit BadConversion(const char* w = "") :
143  Exception(w),
144  type_name("unknown"),
145  data(""),
146  retrieved(0),
147  actual_size(0)
148  {
149  }
150 
152  ~BadConversion() throw() { }
153 };
154 
155 
160 
161 class MYSQLPP_EXPORT BadFieldName : public Exception
162 {
163 public:
167  explicit BadFieldName(const char* bad_field) :
168  Exception(std::string("Unknown field name: ") + bad_field)
169  {
170  }
171 
173  ~BadFieldName() throw() { }
174 };
175 
176 
179 
180 class MYSQLPP_EXPORT BadIndex : public Exception
181 {
182 public:
188  explicit BadIndex(const char* what, int bad_index, int max_index) :
189  Exception()
190  {
191  std::ostringstream outs;
192  outs << "Index " << bad_index << " on " << what <<
193  " out of range, max legal index is " << max_index;
194  what_ = outs.str();
195  }
196 
198  ~BadIndex() throw() { }
199 };
200 
201 
204 
205 class MYSQLPP_EXPORT BadOption : public Exception
206 {
207 public:
209  explicit BadOption(const char* w, const std::type_info& ti) :
210  Exception(w),
211  ti_(ti)
212  {
213  }
214 
216  explicit BadOption(const std::string& w, const std::type_info& ti) :
217  Exception(w),
218  ti_(ti)
219  {
220  }
221 
226  const std::type_info& what_option() const { return ti_; }
227 
228 private:
229  const std::type_info& ti_;
230 };
231 
232 
237 
238 class MYSQLPP_EXPORT BadParamCount : public Exception
239 {
240 public:
242  explicit BadParamCount(const char* w = "") :
243  Exception(w)
244  {
245  }
246 
248  ~BadParamCount() throw() { }
249 };
250 
253 
254 class MYSQLPP_EXPORT UseQueryError : public Exception
255 {
256 public:
258  explicit UseQueryError(const char* w = "") :
259  Exception(w)
260  {
261  }
262 };
263 
264 
284 
285 class MYSQLPP_EXPORT BadQuery : public Exception
286 {
287 public:
292  explicit BadQuery(const char* w = "", int e = 0) :
293  Exception(w),
294  errnum_(e)
295  {
296  }
297 
302  explicit BadQuery(const std::string& w, int e = 0) :
303  Exception(w),
304  errnum_(e)
305  {
306  }
307 
314  int errnum() const { return errnum_; }
315 
316 private:
317  int errnum_;
318 };
319 
320 
327 
328 class MYSQLPP_EXPORT ConnectionFailed : public Exception
329 {
330 public:
335  explicit ConnectionFailed(const char* w = "", int e = 0) :
336  Exception(w),
337  errnum_(e)
338  {
339  }
340 
349  int errnum() const { return errnum_; }
350 
351 private:
352  int errnum_;
353 };
354 
355 
358 
359 class MYSQLPP_EXPORT DBSelectionFailed : public Exception
360 {
361 public:
366  explicit DBSelectionFailed(const char* w = "", int e = 0) :
367  Exception(w),
368  errnum_(e)
369  {
370  }
371 
380  int errnum() const { return errnum_; }
381 
382 private:
383  int errnum_;
384 };
385 
386 
388 
389 class MYSQLPP_EXPORT MutexFailed : public Exception
390 {
391 public:
393  explicit MutexFailed(const char* w = "lock failed") :
394  Exception(w)
395  {
396  }
397 };
398 
399 
402 
403 class MYSQLPP_EXPORT ObjectNotInitialized : public Exception
404 {
405 public:
407  explicit ObjectNotInitialized(const char* w = "") :
408  Exception(w)
409  {
410  }
411 };
412 
413 
415 
416 class MYSQLPP_EXPORT SelfTestFailed : public Exception
417 {
418 public:
420  explicit SelfTestFailed(const std::string& w) :
421  Exception(w)
422  {
423  }
424 };
425 
426 
437 
438 class MYSQLPP_EXPORT TypeLookupFailed : public Exception
439 {
440 public:
442  explicit TypeLookupFailed(const std::string& w) :
443  Exception(w)
444  {
445  }
446 };
447 
448 
455 
456 class MYSQLPP_EXPORT BadInsertPolicy : public Exception
457 {
458 public:
460  explicit BadInsertPolicy(const std::string& w) :
461  Exception(w)
462  {
463  }
464 };
465 
466 
467 } // end namespace mysqlpp
468 
469 #endif // !defined(MYSQLPP_EXCEPTIONS_H)
Exception thrown when a bad type conversion is attempted.
Definition: exceptions.h:92
BadConversion(const char *w="")
Create exception object, with error string only.
Definition: exceptions.h:142
std::string data
string form of data we tried to convert
Definition: exceptions.h:95
size_t actual_size
documentation needed!
Definition: exceptions.h:97
~BadConversion()
Destroy exception.
Definition: exceptions.h:152
BadConversion(const char *tn, const char *d, size_t r, size_t a)
Create exception object, building error string dynamically.
Definition: exceptions.h:106
const char * type_name
name of type we tried to convert to
Definition: exceptions.h:94
BadConversion(const std::string &w, const char *tn, const char *d, size_t r, size_t a)
Create exception object, given completed error string.
Definition: exceptions.h:127
size_t retrieved
documentation needed!
Definition: exceptions.h:96
Exception thrown when a requested named field doesn't exist.
Definition: exceptions.h:162
~BadFieldName()
Destroy exception.
Definition: exceptions.h:173
BadFieldName(const char *bad_field)
Create exception object.
Definition: exceptions.h:167
Exception thrown when an object with operator [] or an at() method gets called with a bad index.
Definition: exceptions.h:181
BadIndex(const char *what, int bad_index, int max_index)
Create exception object.
Definition: exceptions.h:188
~BadIndex()
Destroy exception.
Definition: exceptions.h:198
Exception thrown when an insert policy is too strict to create a valid INSERT statement.
Definition: exceptions.h:457
BadInsertPolicy(const std::string &w)
Create exception object.
Definition: exceptions.h:460
Exception thrown when you pass an unrecognized option to Connection::set_option().
Definition: exceptions.h:206
BadOption(const std::string &w, const std::type_info &ti)
Create exception object, taking C++ string.
Definition: exceptions.h:216
const std::type_info & what_option() const
Return type information about the option that failed.
Definition: exceptions.h:226
BadOption(const char *w, const std::type_info &ti)
Create exception object, taking C string.
Definition: exceptions.h:209
Exception thrown when not enough query parameters are provided.
Definition: exceptions.h:239
~BadParamCount()
Destroy exception.
Definition: exceptions.h:248
BadParamCount(const char *w="")
Create exception object.
Definition: exceptions.h:242
Exception thrown when the database server encounters a problem while processing your query.
Definition: exceptions.h:286
BadQuery(const std::string &w, int e=0)
Create exception object.
Definition: exceptions.h:302
BadQuery(const char *w="", int e=0)
Create exception object.
Definition: exceptions.h:292
int errnum() const
Return the error number corresponding to the error message returned by what()
Definition: exceptions.h:314
Exception thrown when there is a problem related to the database server connection.
Definition: exceptions.h:329
int errnum() const
Return the error number corresponding to the error message returned by what(), if any.
Definition: exceptions.h:349
ConnectionFailed(const char *w="", int e=0)
Create exception object.
Definition: exceptions.h:335
Exception thrown when the program tries to select a new database and the database server refuses for ...
Definition: exceptions.h:360
int errnum() const
Return the error number corresponding to the error message returned by what(), if any.
Definition: exceptions.h:380
DBSelectionFailed(const char *w="", int e=0)
Create exception object.
Definition: exceptions.h:366
Base class for all MySQL++ custom exceptions.
Definition: exceptions.h:46
Exception & operator=(const Exception &rhs)
Assign another exception object's contents to this one.
Definition: exceptions.h:56
~Exception()
Destroy exception object.
Definition: exceptions.h:63
std::string what_
explanation of why exception was thrown
Definition: exceptions.h:85
Exception(const std::string &w)
Create exception object.
Definition: exceptions.h:79
Exception(const Exception &e) MAY_THROW()
Create exception object as copy of another.
Definition: exceptions.h:49
Exception(const char *w="")
Create exception object.
Definition: exceptions.h:73
virtual const char * what() const
Returns explanation of why exception was thrown.
Definition: exceptions.h:66
Exception thrown when a BeecryptMutex object fails.
Definition: exceptions.h:390
MutexFailed(const char *w="lock failed")
Create exception object.
Definition: exceptions.h:393
Exception thrown when you try to use an object that isn't completely initialized.
Definition: exceptions.h:404
ObjectNotInitialized(const char *w="")
Create exception object.
Definition: exceptions.h:407
Used within MySQL++'s test harness only.
Definition: exceptions.h:417
SelfTestFailed(const std::string &w)
Create exception object.
Definition: exceptions.h:420
Thrown from the C++ to SQL data type conversion routine when it can't figure out how to map the type.
Definition: exceptions.h:439
TypeLookupFailed(const std::string &w)
Create exception object.
Definition: exceptions.h:442
Exception thrown when something goes wrong in processing a "use" query.
Definition: exceptions.h:255
UseQueryError(const char *w="")
Create exception object.
Definition: exceptions.h:258
Declares the Option class hierarchy, used to implement connection options in Connection and DBDriver ...
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ReportDataTruncationOption-members.html000644 000765 000024 00000015421 14042362132 031533 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::ReportDataTruncationOption Member List

This is the complete list of members for mysqlpp::ReportDataTruncationOption, including all inherited members.

arg_mysqlpp::DataOption< T >protected
ArgType typedefmysqlpp::DataOption< T >
DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/datetime_8h_source.html000644 000765 000024 00000217237 14042362132 023246 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: datetime.h Source File
MySQL++  3.3.0
datetime.h
Go to the documentation of this file.
1 
5 /***********************************************************************
6  Copyright (c) 1998 by Kevin Atkinson, (c) 1999-2001 by MySQL AB, and
7  (c) 2004-2008 by Educational Technology Resources, Inc. Others may
8  also hold copyrights on code in this file. See the CREDITS.txt file
9  in the top directory of the distribution for details.
10 
11  This file is part of MySQL++.
12 
13  MySQL++ is free software; you can redistribute it and/or modify it
14  under the terms of the GNU Lesser General Public License as published
15  by the Free Software Foundation; either version 2.1 of the License, or
16  (at your option) any later version.
17 
18  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
21  License for more details.
22 
23  You should have received a copy of the GNU Lesser General Public
24  License along with MySQL++; if not, write to the Free Software
25  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
26  USA
27 ***********************************************************************/
28 
29 #if !defined(MYSQLPP_DATETIME_H)
30 #define MYSQLPP_DATETIME_H
31 
32 #include "common.h"
33 
34 #include "comparable.h"
35 
36 #include <string>
37 #include <iostream>
38 
39 namespace mysqlpp {
40 
47 
48 class MYSQLPP_EXPORT DateTime : public Comparable<DateTime>
49 {
50 public:
54  year_(0),
55  month_(0),
56  day_(0),
57  hour_(0),
58  minute_(0),
59  second_(0),
60  now_(true)
61  {
62  }
63 
72  DateTime(unsigned short y, unsigned char mon, unsigned char d,
73  unsigned char h, unsigned char min, unsigned char s) :
75  year_(y),
76  month_(mon),
77  day_(d),
78  hour_(h),
79  minute_(min),
80  second_(s),
81  now_(false)
82  {
83  }
84 
86  DateTime(const DateTime& other) :
88  year_(other.year_),
89  month_(other.month_),
90  day_(other.day_),
91  hour_(other.hour_),
92  minute_(other.minute_),
93  second_(other.second_),
94  now_(other.now_)
95  {
96  }
97 
103  explicit DateTime(const char* str) { convert(str); }
104 
112  template <class Str>
113  explicit DateTime(const Str& str)
114  {
115  convert(str.c_str());
116  }
117 
119  explicit DateTime(time_t t);
120 
125  int compare(const DateTime& other) const;
126 
128  const char* convert(const char*);
129 
131  unsigned char day() const { return day_; }
132 
134  void day(unsigned char d) { day_ = d; now_ = false; }
135 
137  unsigned char hour() const { return hour_; }
138 
140  void hour(unsigned char h) { hour_ = h; now_ = false; }
141 
144  bool is_now() const { return now_; }
145 
147  unsigned char minute() const { return minute_; }
148 
150  void minute(unsigned char m) { minute_ = m; now_ = false; }
151 
153  unsigned char month() const { return month_; }
154 
156  void month(unsigned char m) { month_ = m; now_ = false; }
157 
162  static DateTime now() { return DateTime(); }
163 
165  operator std::string() const;
166 
168  operator time_t() const;
169 
171  unsigned char second() const { return second_; }
172 
174  void second(unsigned char s) { second_ = s; now_ = false; }
175 
177  std::string str() const { return *this; }
178 
184  unsigned short year() const { return year_; }
185 
190  void year(unsigned short y) { year_ = y; now_ = false; }
191 
192 private:
193  unsigned short year_;
194  unsigned char month_;
195  unsigned char day_;
196  unsigned char hour_;
197  unsigned char minute_;
198  unsigned char second_;
199 
200  bool now_;
201 };
202 
203 
206 inline DateTime NOW() { return DateTime(); }
207 
208 
217 MYSQLPP_EXPORT std::ostream& operator <<(std::ostream& os,
218  const DateTime& dt);
219 
220 
225 class MYSQLPP_EXPORT Date : public Comparable<Date>
226 {
227 public:
229  Date() : year_(0), month_(0), day_(0) { }
230 
236  Date(unsigned short y, unsigned char m, unsigned char d) :
237  Comparable<Date>(),
238  year_(y),
239  month_(m),
240  day_(d)
241  {
242  }
243 
245  Date(const Date& other) :
246  Comparable<Date>(),
247  year_(other.year_),
248  month_(other.month_),
249  day_(other.day_)
250  {
251  }
252 
254  Date(const DateTime& other) :
255  Comparable<Date>(),
256  year_(other.year()),
257  month_(other.month()),
258  day_(other.day())
259  {
260  }
261 
266  explicit Date(const char* str) { convert(str); }
267 
274  template <class Str>
275  explicit Date(const Str& str) { convert(str.c_str()); }
276 
281  explicit Date(time_t t);
282 
287  int compare(const Date& other) const;
288 
290  const char* convert(const char*);
291 
293  unsigned char day() const { return day_; }
294 
296  void day(unsigned char d) { day_ = d; }
297 
299  unsigned char month() const { return month_; }
300 
302  void month(unsigned char m) { month_ = m; }
303 
305  operator std::string() const;
306 
310  operator time_t() const;
311 
313  std::string str() const { return *this; }
314 
319  unsigned short year() const { return year_; }
320 
325  void year(unsigned short y) { year_ = y; }
326 
327 private:
328  unsigned short year_;
329  unsigned char month_;
330  unsigned char day_;
331 };
332 
339 MYSQLPP_EXPORT std::ostream& operator <<(std::ostream& os,
340  const Date& d);
341 
342 
347 class MYSQLPP_EXPORT Time : public Comparable<Time>
348 {
349 public:
351  Time() : hour_(0), minute_(0), second_(0) { }
352 
357  Time(unsigned char h, unsigned char m, unsigned char s) :
358  hour_(h),
359  minute_(m),
360  second_(s)
361  {
362  }
363 
365  Time(const Time& other) :
366  Comparable<Time>(),
367  hour_(other.hour_),
368  minute_(other.minute_),
369  second_(other.second_)
370  {
371  }
372 
374  Time(const DateTime& other) :
375  Comparable<Time>(),
376  hour_(other.hour()),
377  minute_(other.minute()),
378  second_(other.second())
379  {
380  }
381 
387  explicit Time(const char* str) { convert(str); }
388 
396  template <class Str>
397  explicit Time(const Str& str) { convert(str.c_str()); }
398 
403  explicit Time(time_t t);
404 
409  int compare(const Time& other) const;
410 
412  const char* convert(const char*);
413 
415  unsigned char hour() const { return hour_; }
416 
418  void hour(unsigned char h) { hour_ = h; }
419 
421  unsigned char minute() const { return minute_; }
422 
424  void minute(unsigned char m) { minute_ = m; }
425 
427  operator std::string() const;
428 
432  operator time_t() const;
433 
435  unsigned char second() const { return second_; }
436 
438  void second(unsigned char s) { second_ = s; }
439 
441  std::string str() const { return *this; }
442 
443 private:
444  unsigned char hour_;
445  unsigned char minute_;
446  unsigned char second_;
447 };
448 
456 MYSQLPP_EXPORT std::ostream& operator <<(std::ostream& os,
457  const Time& t);
458 
459 
460 } // end namespace mysqlpp
461 
462 #endif // !defined(MYSQLPP_DATETIME_H)
Mix-in that gives its subclass a full set of comparison operators.
Definition: comparable.h:41
C++ form of SQL's DATETIME type.
Definition: datetime.h:49
void month(unsigned char m)
Change the date/time value's month part, 1-12.
Definition: datetime.h:156
unsigned char day() const
Get the date/time value's day part, 1-31.
Definition: datetime.h:131
void second(unsigned char s)
Change the date/time value's second part, 0-59.
Definition: datetime.h:174
DateTime(unsigned short y, unsigned char mon, unsigned char d, unsigned char h, unsigned char min, unsigned char s)
Initialize object from discrete y/m/d h:m:s values.
Definition: datetime.h:72
void minute(unsigned char m)
Change the date/time value's minute part, 0-59.
Definition: datetime.h:150
unsigned char minute() const
Get the date/time value's minute part, 0-59.
Definition: datetime.h:147
DateTime()
Default constructor.
Definition: datetime.h:52
unsigned char month() const
Get the date/time value's month part, 1-12.
Definition: datetime.h:153
DateTime(const DateTime &other)
Initialize object as a copy of another Date.
Definition: datetime.h:86
void day(unsigned char d)
Change the date/time value's day part, 1-31.
Definition: datetime.h:134
bool is_now() const
Returns true if object will evaluate to SQL "NOW()" on conversion to string.
Definition: datetime.h:144
std::string str() const
Return our value in std::string form.
Definition: datetime.h:177
unsigned char hour() const
Get the date/time value's hour part, 0-23.
Definition: datetime.h:137
DateTime(const char *str)
Initialize object from a C string containing a SQL date-and-time string.
Definition: datetime.h:103
DateTime(const Str &str)
Initialize object from a C++ string containing a SQL date-and-time string.
Definition: datetime.h:113
unsigned short year() const
Get the date/time value's year part.
Definition: datetime.h:184
unsigned char second() const
Get the date/time value's second part, 0-59.
Definition: datetime.h:171
static DateTime now()
Factory to create an object instance that will convert to SQL "NOW()" on insertion into a query.
Definition: datetime.h:162
void year(unsigned short y)
Change the date/time value's year part.
Definition: datetime.h:190
void hour(unsigned char h)
Change the date/time value's hour part, 0-23.
Definition: datetime.h:140
C++ form of SQL's DATE type.
Definition: datetime.h:226
Date(const char *str)
Initialize object from a C string containing a date.
Definition: datetime.h:266
void day(unsigned char d)
Change the date's day part, 1-31.
Definition: datetime.h:296
Date(const Date &other)
Initialize object as a copy of another Date.
Definition: datetime.h:245
unsigned char month() const
Get the date's month part, 1-12.
Definition: datetime.h:299
void year(unsigned short y)
Change the date's year part.
Definition: datetime.h:325
Date(unsigned short y, unsigned char m, unsigned char d)
Initialize object.
Definition: datetime.h:236
unsigned char day() const
Get the date's day part, 1-31.
Definition: datetime.h:293
Date(const Str &str)
Initialize object from a C++ string containing a date.
Definition: datetime.h:275
Date(const DateTime &other)
Initialize object from date part of date/time object.
Definition: datetime.h:254
std::string str() const
Return our value in std::string form.
Definition: datetime.h:313
unsigned short year() const
Get the date's year part.
Definition: datetime.h:319
Date()
Default constructor.
Definition: datetime.h:229
void month(unsigned char m)
Change the date's month part, 1-12.
Definition: datetime.h:302
C++ form of SQL's TIME type.
Definition: datetime.h:348
unsigned char hour() const
Get the time's hour part, 0-255.
Definition: datetime.h:415
unsigned char second() const
Get the time's second part, 0-59.
Definition: datetime.h:435
Time(const Time &other)
Initialize object as a copy of another Time.
Definition: datetime.h:365
Time(const char *str)
Initialize object from a C string containing a SQL time string.
Definition: datetime.h:387
Time(unsigned char h, unsigned char m, unsigned char s)
Initialize object.
Definition: datetime.h:357
std::string str() const
Return our value in std::string form.
Definition: datetime.h:441
Time(const Str &str)
Initialize object from a C++ string containing a SQL time string.
Definition: datetime.h:397
void hour(unsigned char h)
Change the time's hour part, 0-255.
Definition: datetime.h:418
Time()
Default constructor.
Definition: datetime.h:351
unsigned char minute() const
Get the time's minute part, 0-59.
Definition: datetime.h:421
Time(const DateTime &other)
Initialize object from time part of date/time object.
Definition: datetime.h:374
void minute(unsigned char m)
Change the time's minute part, 0-59.
Definition: datetime.h:424
void second(unsigned char s)
Change the time's second part, 0-59.
Definition: datetime.h:438
This file includes top-level definitions for use both internal to the library, and outside it....
Declares the Comparable<T> mixin.
DateTime NOW()
Returns a DateTime object that, when inserted into query will yield a SQL "NOW()" function call.
Definition: datetime.h:206
mysql++-3.3.0/doc/html/refman/inherit_graph_17.png000644 000765 000024 00000003363 14042362133 022437 0ustar00tangentstaff000000 000000 ‰PNG  IHDR%ðsýqbKGDÿÿÿ ½§“¨IDAThíšoHS]ÇÏdÆ–äÚÖlË…,6”â‹ &JE™´¬ˆæ6Ê( Á%•I™Ø‹‚ V£L¢ˆ¢¢QMíÏ‚Œˆz‘á4µ?R‹tb»#³Æ6ç­¹¹ÝÓ‹Ës¹Ïv7·=.ÜÏ«s¿;çü~¿óõÞs¶+ BæÑÆ'zÀøDØä‹ÎÎN£Ñ8[©0Q©TGŽ!.ÿu?!ÒÚÚ:ã)1DbµZ;;;É ;ºSKKËLåÃ@Myyy„ÂìOô€ñ‰0>ÑÆ'z0ç|;tèß ³=æœO(Š^¼x1ÌJÐ)£¯X±âÕ«W3™Nê>…B!âï.üþý{Ê!†ýøñ#B„ŽÅ }>_"b,Âá°×ëM°s|Ünw0œ²ez^¯ðÔâ&í“Ýnçp8ƒA"‘…ÂãÇ744ðù|wðàA@yyyUUÞ9 I$’¶¶6À©S§d2Ùòå˳³³;::ð‹E$‰Å⢢"½^___OêêêR(G•J¥@¯×ûý~J`0Ö¯_$Úv»=33³¹¹Y$ …ÂââbŸÏg³Ù8qÇ”••555%X{~~þèèè¶mÛnÞ¼IYf¬ôúúúV®\¹dÉ¡PØØØ˜Â»¤Tî§@ Ðßßo³Ù®\¹röìÙþþþáááöööææf—Ë¥Õj|ø`2™®]»–ô¢C÷ïßP¢ AÝn7 ½½ÿ(==ýÍ›7~¿?33óÙ³gªªªÊÊJáÀÀÀ¼yó Ã÷ïß1 ›˜˜€F±XLÌ\\\\WWçt:¿ç~ýú…j0V¯^M)ÆOuxx¿Ü¾}{CCçOŸxÂ’’£ÑH%±æ‹Åxi”eR¦wçΡPèñxPEQôĉ¥¥¥ñY£Ñh4²’âþ$‹l6 P(p‘Åb…Ãa‡£ÑhZ[[C¡ÐÇ+**r¹üÖ­[f³9;;;//ïéÓ§ø s.[¶," Ç[´hÞ–J¥.—+–‡¬¬,¼Áår£·ü†HÊ2)ÓBQ477W©T*•ÊÛ·o³X¬dÃ¥èSZÅ@øÏc·¢¢âÑ£G/^¼àr¹k×®ŒŒŒuwwŽŽêtºêêj¿ß/ þüI ÿöí[Ä„ãããÄQÅjµâFRЉ¤Š§‡¯ñ¬³Ûí It™”éeee ‡Ã ‚ ½½½—/_N6Ö´œË׬YÃápjkkwíÚ…/SooïÖ­[Ýn·H$R«Õø±gÆ ===}}}€žžžˆ_ˆ†]½zðõëW‹ÅRZZK´Z­wïÞÅG‘ÛÑÈd26›m6›---‚$UZzz:q‹.“2½7z<“É!t8jµúÞ½{IÓäSZZÚÎ;?þ\YY‰+›6mš?¾D")((ÐjµgΜár¹………*•J¡PhµÚU«VEÌ“‘‘ñüù󜜜üü|•JuøðáXâ“'ONŸ>"·£ÁWvß¾}"‘èÆ¸Í‰£ÑhöìÙc2™(ˤLO&“]¿~½ºº:''G.—çææÖÖÖ&€äÏ réÒ¥uëÖ‘ Ãl6Û»wï0 #ën·ûË—/ápx÷îÝuuu„ÞÑÑÁãñð¿A·ÛGL¯×KìöÉâñx&''ñvD™qÒCQôíÛ·‚$"úAñþé?âõzm6[SSÓùóçÉ:‹ÅR*•Ñýù|>ŸÏ3áÒ¥K‡ÇãÅï ×ë£Åýû÷—””,\¸Ä.3VzÑŒÄùÿ}r8555زeKRår¹@ .,XPPPчRœ¦ÜB(Ëœ¾ôXôÝØl6ët:Èüçålƒ¿Ï%¿XŸs¿Ã2PÂøDŸèã= 8ïáßÕf§Ó)•JÉ …O:n¦òaˆ‰F£!_²˜S8-`ö'zÀøDŸèã=ø ˆÈª‹*…¡IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadIndex-members.html000644 000765 000024 00000014506 14042362132 025707 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::BadIndex Member List

This is the complete list of members for mysqlpp::BadIndex, including all inherited members.

BadIndex(const char *what, int bad_index, int max_index)mysqlpp::BadIndexinlineexplicit
Exception(const Exception &e) MAY_THROW()mysqlpp::Exceptioninline
Exception(const char *w="")mysqlpp::Exceptioninlineprotected
Exception(const std::string &w)mysqlpp::Exceptioninlineprotected
operator=(const Exception &rhs)mysqlpp::Exceptioninline
what() constmysqlpp::Exceptioninlinevirtual
what_mysqlpp::Exceptionprotected
~BadIndex()mysqlpp::BadIndexinline
~Exception()mysqlpp::Exceptioninline
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1UnixDomainSocketConnection__coll__graph.png000644 000765 000024 00000024740 14042362133 032357 0ustar00tangentstaff000000 000000 ‰PNG  IHDRòž^W…sRGB®Îé)šIDATxí ¼MÕ÷Àï™REJQ†ÌJ"RR©ü*%š ŠfE¿¤ôCJ‰4›*cQ)%¥_)cÆ™_ûßßåîïÜëÜçÞ÷î}÷Þw÷ú|î{çì³÷Úk¯½×^k¯³Ï^ù|Ä‚å€å@Rs RSo‰·°PXA¶Ár pÀ rèDÛËt7 >ûì3iÚ´©;É^[DÌ/¾øB5jq9wÈ¢E‹ÜI yM; ,wÚùÓO?•GyD}ôѸf HNôîÝ[¢!Èû÷ï—%JHݺu–K–,&œDdkZ'ì0±„Y„Ï+ÈáóÊæ´HXXANØ®±„Y„Ï€5røÅb—ó‡~N8AN:館TÂZ‹µÿÏ?ÿ,åÊ•“&Mšèÿpÿý÷R¦L™¨Ðâ´«hÑ¢º† ®ÿ /”cŽ9&89ª÷sçÎÕö'š.ª Ùž={äÛo¿• .¸ ŒÜÉ—%á4òSO=%óæÍ‹ 'W¯^-çwž<óÌ3²cÇ™:uªzS'Ož?ÂÛ¹sg}þå—_ʺuëBæäÓ®_ýUn¾ùfm#ít~ûöí‹]ØyÇŽ+Ï?ÿ¼æŸ>}º0±åu¨_¿¾;çœs¤{÷îª)[·n-{÷îÕôË.»L~ûí·€ë¾}ûÊE]¤ˆ'þµ×^“‰'Êm·Ý¦ÞF/\mÛ¶•7ÞxC(«V­’¿þúKþùçéÖ­›”*UJjÔ¨!Ÿþ¹Ösþùç˽÷Þ«»Y³f:YðàÙgŸ•ªU«*_F­yÝÀƒ`»üñ‡¶uÓ¦M²~ýz9ûì³…‰ˆW‚ÕªU“ÓN;Mžxâ E³|ùràçwÞ)™™™²téR¹æšk¤yóæR¶lY¥+ð&bÆŒ‚U@[6lØ —^z©z…/¾øb­oåÊ•Ú×^{­òööÛo׺/^,X 'žx¢ÖånG"\«;î¸C¾ùæ¹òÊ+åÝwßÕ¾>÷Üså“O>‘Ÿ~úIIöê·ŒŒ Í{ê©§J=¾$D,È l4ÛðáÃu0ÝÿýòÒK/I«V­ä…^zõêɤI“”˜r˜q ¼?üP‰pŽ9Rá"oÏž=eæÌ™~¡¤0úã?–·ÞzKüC=¤8°Ç¼0üù矊— 6ÌV÷5¦“„7n¬ZiíÚµ:øƒq :TjÕª%¼FAhïœ9s„‰~ÓM7I¿~ý%Ú•‰Áf²úè£ô?“Ù{ï½'ï¼óŽæ Ö‚[¶l‘.]ºøLLxì< “tV¨PAïD´ “æÆ5­E‹òÁhÝLz»wïÖ~a £åѼ¾¡ž:¨àþøã*ÈL ,¾þúkå%ýÆkø Cû„ ´®Ç\'Ô¯¾úJæÏŸ/´9Qz‚ÇÕ!C$þüJ?VØ«¯¾ªV•*Utyí^ý§ŒC&FÆN2AzvˆeÁ@[³fj-®wîÜ)Æ 4cûöíu–G‹¢5ÑÖh„ƒÒ«W/t”c¶*W®|)äE³ñ£,ÂÜu×]ªun½õVíHêp¿ûv®é`!BàÐJÎ:18 (àŸ¨ÁB:ÎÚ¼y³äË—Oúô飇FÆ /Y²¤,X°@ _«\u#¸”.]Z/™Ï<óL9öØcuÐmݺU'&=tèþGc ˆ§Ÿ~º,\¸P­#kË–-5ï¿þõ/™={¶¶#--Íß^Ò¬òë믿^­,´>BдçŒ3ΧŸ~ZÛÁÄAžD¯qEßÑ/LЖÖÖ‰^ýÆØêÚµ«N¦Œµ·ß~ÛÉžÿ#ÖÈ´ŠÁ0ó1pÝP¨P!5kbÖdŽ+7ÌEc`º0H0« \0 QÀôAN:i¬}BƒÁì´'šû”SNÑäppÑÉŽ°Qˆ : ==]ø m‹)瘿… Öçî?ÔÉdæüAZC^æ„©öÊ+¯f+3šåòË/Wáf1`½L6Ö‡0”5ÂǺ`½ƒ3ƒukV€‰Ϥû-Ê: “صk—Z ¬‘ÑR€.Å XLJÔ í¬ACyÕ¡¹víÚº|@ ÑÆÁ_ŠrOîõ!0hTÖihJv5!¸L X,[lX(,Xÿba°–ÈÇD‚€Ãúp·mÄ:zÊ”)úŒþ`½ xÆüXŽ TþÜL÷WNýî6;iYý‡§ô1ã%j2A¶LëP déöíÛuíË=€µë—u5³;Gë3g†$¿ƒsó“ué0šÏGÃ?ž"š‘5&«s}à 7¨IÅ€à¡Ñܬ£/\ €ßÿ]Xç:Àú³§&õ˜1cœGþÿÐÆAiFÌö˜â8µ'Ž%Ç´w<÷ÜsºÜøå—_T8Ñ´íÚµSZi´¶iÓFMÛ‡~XÍaÊ"ØœXLh×]wæ=묳t©ã,a(ƒƒ ‡áàÁƒu‚åÍ…^ð01Ñ_hy–;‰^ã Ú˜ðàü£ YÓ'ô£ÅýiG»0f¨Öm„? k(\ও‚Ôé¦%™ë†¶:ôËhH×ÓÈ/¡%˜vð¡÷Q`4°Ïxc}´ÕÍwžÁö™ ”Ë0^~åe@¢Ç øŒ?ÄãÉ‘If’öËëȦG•Ï84ZÊk\™É8¬~r#7–”|5N?Ÿñ߸{^‡˜Ï,í<ŸåvbT523ïayOÊ»X÷úSÅ1ƒÝ3–³Vs§¹¯Y¸ÜëëàçÁ÷h-¯ºÉç… ‡‰„[§'¸BáóªÃ+ ÿA°œX+Á@[ù¹!ÔF–=ျÃÉŸ›y¼Æ–Û ‡–8,á o(xÍšLuAÆTfÈî¬H€WnæßsÏ=žÅyýâ¬o=3DM\T“¬Æ¢ñ¿kIy)kd|5,mXB)R$©ZuAf©Ã1·Ç•ûPZähœ²áB4q…[g¬ò¡…‚y«ºò*^Š(!¹\sÉÈaK³å@.p ‹r§Lâ¦M›:·ö„(VìBã•ÿÓ¼ãýùˆWN¢JêìÑ8X ÒB|™ùd뇥ðɇä¸z¯cÉÌD9!$@cÙàTÀݽûD³kj©T¨PÚ¼¯¾Aêׯ˜ ÍŽ{ûè/Yôô:ÉÜH=P^ª¶<ÒAw"cL€ä(2ø·ß¶˜ÍÃ̻٠ã,)`¶±V–ÿ»µÙEvx»`«²¨ 6-Ù-ó­‘=šÍ5{IzáüÒa^I+”õ»ã¼È<+ÈQîÕK/}Ê|²A±¦§§™M!ù¥cÇóÍ&–ËÌî´#·¡F¹ú”@·síùbÈZÙ¼tja¿@>9óšÒÒ¸Ïÿ¶ý¦3þ¿‘ÖÙåÞîÑ£™_`33íü¼òʳÓk ùŒrQ”kKt>óyñU¿{ãrÙ¸x·_ˆáBþüù¤æMÞûªSKV#G¹—È4›Oú™=ÖG`F#ïÙsÀ|üŸ#žÙ„¬9°k]†¼yí’f4ïÁ ¿Ö_èÄÇHË gúïSíÂjä(÷x¡Béft}5©ƒQgdþÊ(8ÝÞŽÍ/if™r(óH!.P4MjßRöèHòp+È1èÜ[o½@?˜p£.\¸€ùˆ¡´ùk;Ù^‡ÉÂǧËuoV“BÅͧžéÎ,¾‹¨ÐôŸ¼†‰2Oe³‚ƒî¬TéDs˜Âÿ¶¨âÁ.W®„ù˜¿»ù~»h jL ”Å+’fƒ*J¡cÓýžé´‚ù¥úõ'H¾Ã_¥¦#ãnøø®rBõ¢rÎåR!A-¶‚ÄhÞ®[·Ý|nxÒ¼e¼Ö;Ìáp·é+“hÖ—Wqí\s@¦uùU.z¼‚œÜð¸€ffì:(Kq»ÚpÄ rÀ°ˆý šº}û—Ì)Ç›£ÚľÂ$¯aß¶L™Òñ©×í$©|eघäM‹*ùV£ÊÎðíÛ÷92çYsHasÒÅá²¹,²à€uveÁœX=‹=aBóûœvø°þXÕeñ¦¬FŽc?¯X±Ùì?ÊðßѰޱ;q$×VÀ°9ŽS¹ryñÅ[L¨’WL¸›-q¤ÄVì°‚çlÔ¨’ ØRÚ¶}Ñû»;ÎÔÄ¿ú­?&ÿ)¹3þÔ%.V o®»î#Èç©7›¯¥RØðÁ»âÓ.(îß¹•ª¼ˆ´Ýv)Çb˜ÿ¾ûÞT­<~|ç”{Ǽá#†lΓ¨­FN n:ôzÍ!Sú÷/¨Š=)lø˜uïJÝGÍ®- ‘sÀ rä<‹Y‰´´ü2vl'eq¥ŒýIÌêI$Äû¶gÊ,cN7¼÷ä€][Äìâ¬i¢B¶ ò%á‚"H°zbx9± #K½-ެ‰AˆoMèY";r@=á}ÀázNÐ@/Z¼âF{¥öˆÈ˜€OdH'¡…+T¨ i„1"ö1»sDl1â;Ç+lÈíж¾£s`ãÆ¾zõú¦Mûþè™ó`B¾˜³Ñ}&Þ´Ïjó™_>Õgb9ùÌà÷™€r¾±cÇúL´ Ÿ‰íì3Ââ3Ñ04Ô‹ Àæ3ñ›4dŒ;O¨Ð.&¤¬ÏÄÇÒð4&f”ÏĹò-[¶ÌgBk¡h¹êª«|&.µÏÄñò™f¾Ç+Í„íõ™¤>gÛשS'Ÿ‰7­×ÐkÂâ*ýFXµ~3‰øLl-Ÿ Èo¼1ìÞúõaÏ 6cH”-[Ü ÔÍPð¼™É‹¥Üiœ¥#@Áô´ì¢E‡I"ÝÕW_-wwb£1›4i¢±¹ÉO¸‚ÎN½ ñÇŒ$ðñŸkÖ¬)DîØ°aƒÈó¢…Ð2Áq£½ÒˆJJ‚ô>´F.^)¬][q!2Wj9tn±b……_Ä—š9óÇ\m•=á#WÙíY™}ìÉ–äM\¶ìi×nŒÆ–ªS§|̲G¦|Üëw©Ý¡Œœ~ijÇ(Ž9³³¨À rÌIÖG˜Ø÷Üó†‰üx÷Aä’µM–î¬9`Më¬ù“”O›5«&½{_¡geïܹ/)Û`‰ŽŒV#ãWÒän×îï¾d¿~Wš‹›9ç%<­–ÀœqÀ rÎø—ð¥GŒh+Ÿ~ú_ÛfTpà¸é¤ü¥¥õ-Z7[´_tÂõ¾R…NÊVÙDà×€òô¶§hF8gÚcÆŒzÀx„Emö8qÀDŸÐCëãT}®TkMë\a³­Är ¶°‚[þZì–¹Â+ȹÂf[‰å@l9`9¶ü vÂ8p j¸9Týõ×_—_|Q6nÜ5¼ÙEÄYω@GvéG9+Èñàzë$œÊÖ­Ñ9tIáüóÏ7Ÿ>ÎÔ¨Ä[êÞ½{)Œ¼8ÂÛ¹sg-Hì&"/XŸVÃçUØ9<»E‹²`ÁÅG .Wלð±MÚ´i#&.°†%” ˆT®\9 êmâøÐУG!^¡@ øM”¿¥K—šs¼®‘æÍ›kÀìúËìŒCÑñ¼C`böÊ3Ï<#¯¾úªôíÛWƒƒtóæÍV”Àd%J”Рhëׯ7‘!W*}&ޝï&J@› yJdÃjժɒ%K4Ý+HxFF† -³_rÉ%JwÛ¶m5Œ(ô®ZµJC«Ðþnݺéî5jÔЧ eâ¡>Yƒ“‚%ÕÁ r FžÌk"Nš4IãõšÀÜB \‚™ÞZ3ÿ¹G!òßÿþWC„¾ÿþûZME<]†òÌ %‚Eì`â1BâP‡ ®mN ™§Ï0ÂŒˆ‚¬Y³F7nìFk¾œê­B ¾2eʈ È­LPq5é‰÷‹ Cû„ Ô ¦ÍD„V0\ÍtB›2Ù€gèСæÔϵ DW4Á¼5!yçµjÕÒºW¯^­‚ ®Å‹›-¦ŸjhÕ~ýú)LD{÷îUÁftb!4"Ån¬ ǨÃÝÁ³Môù€àÙhÞiÓ¦iÍüoݺµ @´£Ùt¢köìÙæSĶ•mç]ºtQÍs•UªT‚“¥Pð裪#p8š/--MÓ÷íóþÔ|}úôQ|”u&,Ì{&€Ê•+ûÍ`„Lû0ÝˉJè,GðÚ·o¯´<òÈ#jU/^\˜è˜d ~,¼ÿþª¹±b]ÔݬY3ýN¹Tüo9F½žUðl4#ƒàòíˆàMœ8Q6mÚ¤æ&Za8å”S”B'R_0¹˜½æ*Qÿ'kw:÷n Ô'aCÑܘíO* hBêwˆ»ƒ‡c98žžî?½ÓIwÒ(ï°K o€çh}/`ކ‡ ¸.¯ò©”f9½F!¾n¯^½Ts9K´ÀqãÆ©öA¸.¿ürùì³Ï”B´³à¬¦L™¢a:¹^¾|¹`NïÜi˜šµ8àšâÔã¬ÑÑŒ£GÖ%yÆŒ£Z±~ýúºÎ/@\_ÖË‘@¨ á¬ßÑÊ„@¥n´-À𨠬é§OŸ®ùàGÙ²eU‹»óØëÃH·ŒÈ= °üÌÏ‘#GêÚ{42¿aÆéÚ•5s… TK?—A¶tÀÁ3yòda=ÍZaç?Z-Ð2a` 8¸æÏŸ¯¸p°«×ìAÖÀÛÝЦà0×ñ`Oï$A㌖ñ™½Ö9ÆlT¾ºuëà1šÒg´©Ï˜鯑äã™1¯ÒÇ×gB>cÂúŒÙ©ÏŒ¦õ¯®Ï˜ì>³ž ÈŸÕ Øí3Þâ#ꦌqªùŒ‰žUñ,Ÿ™ ÃgœjGä1Žª€4ꀎ`0&¶o×®]ÁÉaßkÂg&´°ó'cF«‘ã0Uc>2Dµ¯»z=¼º ^?™œì¿wÖÑþsÁš:ÔºÚϹ&h6€àˆË °fw¯Û\%K–t.õ?Î./(_>ö§zÕ›LiVãÐ[˜Õ7Üpƒßa %Î#7ðz ÓÔ 4ð{ÄÝéö:osÀ rú×ñØFZµãAvÊñÊ&Xãzi¿à|ö>oqÀz­óVÚÖ¤(¬FްãÙlÁ&‹¼ùó0¦~#Ùµë ãÏÌkÍ ð†ç¹Æ™ÙHy±W³Ñ¦3–ší”ÍA}Ín©#nÙ@i‹ä"¬i‹ÌNäª&N\$™™åµ×¾Ld2-m!8`9cR)y×®ýòå—¿k“‰µà«TâE²¶Õ r²ö\éþðÃÌn°ÃPðö쟢ˆÝ¢Ê XAÎ .'x&,4û¯Ÿ8‚vÆÌ¶\°‚œ\ýuj·nÝm¾ ^€÷ë¯Wš=Û¡w’d¶7 Á+È Ñ ñ#⃖˜ï’‡Aiæìî¥ñ#ÊÖ1{0ââ¶@²s`Ò¤Eæ›èŒ€fìÙs Çq¢Ú›˜sÀ rÌYœ¸¬[·]Ö®ÝæIàòåÌA»<ŸÙÄÄã€äÄë“\£èÛoטºòÉqÇÑ_Ñ¢…ü×™òÝwks[QÎ8`wvåŒI_ú‡Q•™yÈœ¾9ÒœÈq·¶‰õkÕ:|ÌPÒ72`÷Z§@'gÕÄÚµë‹ £û¬ÊØg‰ÇkZ'^ŸXŠ,"æ€äˆY–7 KZòç7,$%¬ 'e·EŸhÎõ3G…E±Å˜+°‚œ+l¶•XÄ–VcËߤÁnMë¤é*OB­ {²%õ­iÜ}n9¹ûÏRo9 °‚l‚å@à€ä<Љ¶ –Ví°È°‚œ:Ñ6ÁrÀ ²Êûú)¹‚ääQo_?E•qAd9.l·•ZD—V£ËO‹Ír .°‚¶'^¥vœx} EV#áVÎk×ÈÉݹV“»ÿ,õ–Ê+Èv (¬iÜÁ rr÷_Ô¨·¦uÔXDVãÂv[©å@t9`9ºü´Ø,âÂ+Èqa{âUj×ȉ×'‘Pd9nåá¼vœÜk9¹ûÏRo9 H©1't’lÚ´Év½S¤H5Ù»w¹ÇS›Î<óLùù矒)2fïÞ½2uêT¨ì¸„ì KTâràÏ?ÿ”^½z%,Ö´NØ®±„Y„Ï+ÈáóÊæ´HXXANØ®±„Y„Ï+Èáó*Ç98 K—.Í1Á×_-έüõ×_òÓO?ùïƒ/6oÞ,«V­ NößõÕWâü~ùå—ÜþLQ¸8TA»,X sæÌ‘;wF\+NÍuëÇ~ޏp°‚œ‹¶uëV:thÔj|衇dûöí~|ñ¨Q£ü÷Á7n”+V'ûïûôé#‹/ÖÉfìØ±Ò¹sgY¾<ú^ì£ÑñÛo¿Ém·Ý&L&¿ÿþ»ÜyçJ—ŸÐ0.¾øâ ùè£ÂÈ)òÌ3Ï$¬7:¬˜L)嵇)x&O?ýtY¸p¡4lØPx-3þ|iРtíÚUî¿ÿ~yþùç¥páÂòÎ;ïÈž={ôÙèÑ£eÍš5Ò¬Y3xx9¬¯»êÖ­+ o¼ÑOB·nݤjÕªŠ»víÚÒ·o_™;w®üðÃÂ@/¸Q£FªYÐ'Ÿ|RæÍ›'+W®”.]ºøqy]Ð^—€ó´ÓN“Ç\vìØ!hÃ3fú-Z$ï½÷žâÏÍ7ß,%K–T”³gÏ–aÆɸqãdÙ²e:à™Œ.¸à¹÷Þ{å³Ï>S<üñ‡jЫ¯¾Z>øàÉÌÌ&…Zµj)î÷ßß„lÍ/­Zµ’–-[ú騰aƒ >\ ,¨–xï¹çÅyòÉ'ëD!W\q…¶™kð¿öÚkâ3;XÚ¶m+×^{­üóÏ?òŸÿüG5xåÊ•yòñ¬X±bŠïå—_–?þXÛx×]wÉÚµkeÖ¬Yòå—_ʘ1c¤D‰‡ &Ù_«‘ƒ:ŒA‰ ÌÀ§ƒ÷íÛ§aæ:--M¾ýö[-Å@¯R¥ŠL˜0A.»ì2A˜DLº·ÞzKN<ñD-‹P#@n@X=öXy饗t`cÒ¢]1—  =zôÐg”aÒ¨V­š/]º´œzê©nTž×Ð@;FŽ)ÿý·šÌ˜¨ÐrÉ%—¨‰Pðüª«®Òv#ªQ£†¬^½Z<¨“W‹-äé§ŸV-ýý÷ßË®]»tÂëÙ³§—ö3Ñ5iÒD_óQßøñãå±Ç“G}TÐò˜Ì ùÉ¿·mÛ¦ô|÷Ýw:ñ1B'æM›êäöꫯJïÞ½õUФI“´O–,Y¢tRýñî»ïú›Âˆ°vèÐA~ýõW|žxâ Œyä/eî¸ã)^¼¸¿\²]XìÑch ´Ù 'œ h™ *HùòåuÑñhk:ýúõrÎ9ç¨`Ož+T¨Ü}÷ÝJÿ /Ôôà?XEŠQeÍÙ¦MÍO˜Ø*V¬¨´ y¡“™k¬ &2´à³Ï>«“&2éû÷暴¶1 haèdÒÂÚùüóÏ•/ýúõSA„'´ýÜsÏÕüX'L€Lž—^z©”*UJó¡é™hмø Ðàh}¬úë^0Áñœv2©Â³d…ýž¬ÔLjn @(Œn`Ð#t˜¤çwžLî믿^3?ƒ͇F(^Àà0EÙ¬8i\“Ž9 ‚wªQ§C;eBÇÄt 8ÿÝÏœk„áŒ3Îж¸7Ñ€ - 8õyñ !Á²Xm´zÍš5U˜Ü·Fî:_ýuå!š|È!jR#än­éп‹-ª(áõñǯ×ô}„ ”§&~ô•3¹i†$þc9ÂÎ;å”StÅà@;÷ÝwŸjfÖœõêÕSgZAS\o\0&´>@™C‡©£“ÍIVÇóŒFļ0YÑP¤ ÈËÚ!ƒ6Ìy7 ˜þ¬1Ã+Uª$»wïVsI Käh€‡kýôôt5õƒ'/L ˜Ð˜ÙBGZýúõžqpÄ}öÙšŽf†—S¦LQº)‡µå_pœ!ÔòM7ݤ¾ Lyg"aÒLf°¦u½ç˜^ðÛo¿­ˆâhi<¼˜~¬ûXóa2â eýŒ9‰i88Ð8ÍR´Ýƒ>¨Z‡Ú¾}{]G²ö$?ë]œaÓ§O—O>ùDMILøîÝ»ë$‚ <˜¤\8œzyÆ$„SSMæÐɳ뮻Žj’7oÞ\׫Üw4¦=‚yŠ ój(Py^xáõ@#@L2,AàM( õ²îm×®Z5Ll8×*˜ÉÇ!š Ç"Úþ³ÖÆ™ˆ…Á„ÊÒ\XEXK¬µ™¼Xâà$cN›0¹™,Y7¿òÊ+IëìJ©&0Ëp¸ÍÄP*«tL?Sš˜‘h:÷ eÐc³>dÍç~õtñÅë c‚Oœ8Qq°vf€9Ú©#Ô„Ÿün³3TÞœ¤Ó>´$ën÷ÄN„O7mDë¡Ñ38«r<à @`þ8ùBð:&´“Κ7x)äP@Ï>û,þÿyÄÊÀ\ˆ‹Ó4 Üpà •ÿy”çž{NV¬X‘¦vÓ(-ÅŸxäÀ/@90Ég‰ç€ xÞø”8P#‡<»4Ë¢E‹¤AƒÒ¨Q£2¹nqq±<õÔSòöÛoKûöíåè£.“z˪’^xAš7o.õêÕKU¹uëVy饗¤]»v©¸|ï½÷ž,Y²¤D‘o~ó›rÄG”ˆ/$b·Ó@wÞy§Ì˜1£gJ•]µj•œtÒIrÿý÷˦M›äÞ{ïµFÙ¼ys*OE(¯¼òJÚmpß—^ziZ\>'«W¯^~]ºt‘)S¦X8êçSglÞð˜ìÆot: G•?òÈ#îÜsÏu­ZµrGu”»çž{Ü·¾õ-w衇ºY³fYù»îºËÊmÙ²ÅsÌ1níÚµî׿þµ;è ƒì|þüù–>xð`÷õ¯ÝuìØÑýà?pª}ÜOúS7fÌ7räH÷³ŸýÌò7iÒÄýãÿ°2ßùÎwÜÏþswÀ¸³Ï>Û©0X|§NܲeËÒÂ^x¡»æšk,.ø{ì±Çœöz·mÛ6wùå—;íùîÈ#t3gδ,'Ÿ|²»òÊ+ÝÁléW\q…]‹º¾üòKÇyÏž=]ãÆÝw¿û]·téR+÷—¿üÅ~øáÆ‹ûî»Ïâþþ÷¿»Ë.»Ìòi§p™ò|ï{ßsgœq†]ƒg{õÕWÝ›o¾éš5kfu¨p9íÆ»>}ú¸íÛ·[|ø{ íwÞ G[xï½÷vª}KÄß~û펶„¹’ ¤kÓ¦MZö¼5ÐÇ,Ú˜¢/­[·–¾}ûʈ#䬳Β¡C‡Š2ATL`ÿýïKQQ‘(SäÉ'Ÿ´ž¦ !ÊH¡ž›nºÉòöîÝÛÌŒ \JÐéEÓ¦M“ñãÇ Zé·¿ý­¥½üò˲ß~ûÉ‚ ä£>²zI8ñÄå+_ùŠå  .‹ þºwïnZiúôéf&˜ºÐ! °,*„‚ ™8q¢Œ=Ú4×3Ï®y…7aêß¿¿œvÚi2iÒ$Ó"hSH[Qþõ¯Éé§Ÿ.'œp‚ìµ×^if0\G¦0×¢ µsÊ­·Þj¼Ì”/k\XœrÑ@ô®þð‡Vìá‡vô hêÔ©®C‡NçêÔ©ãÞÿ}ëÁHºªd÷Õ¯~Õz#ùzz§ªW+˽wΜ9) tË-·˜¦ 2 …èa5jÔp|ðE?øàƒîâ‹/²”8¶lÙÒq™H…Ö´gÖ°aC§Bkšà¿ÿý¯EvØa¦U9AÛÐy^z.DÏVÁ0Í„¦2dˆi/mL§BeZ´k×®–í•)õ© Zõ[¬¾@¡]÷Ùgw÷Ýw»¿þõ¯®[·n¦•áúMîØcuÇwjž­|¦¿8 ä7ož»ä’KœvJãå'Ÿ|$•8–‰B"qÆ LR_³fÍ”Ý}â‰'„C¬æÍ4G¯^½DM„àèrÈ!V”‹Ò×¾öµT” ]ª—ñÄ}úé§©<Ñ€šþ”2KÔÄÊ»ï¾+û↑ÈçŸ.ÚÈvžô|d_-øá‡ÊñÇoš­\«V­T½jj-œ”'0PN[-U–ºÕd™FÔ†uäÌ3Ïoø÷“ŸüDT¨Rš7U0À·¿ým«„–Kâg¦jó6a™*‰Æ!4ƒ íÕ¢¾‘©vÕò‡?üAÔ±FUŸÇ„І£1ÕŽG«õK¬QçÎkLRbyP÷_|ñ…¨6õÃ, œã ¬Óî2yòdyýõ×-ö6cñ;wœzpÚ<ðÀœG~\¢î=zØ}ª¯gæ“) yy–¸<Œ!L j$ ó÷o|ÃFMÄ]wÝuf*q„é˜PÂŒªÔWÕš©r¹HÌ/#Àßüæ7VÇÊ•+E}Ò\Чò”é0¾ZµjV1±~ýzÁ·ÔIl96ÁoâÆ;î8QVj«‰³¼üõ¨5m¢N¸=,ñh uŒÍ7Ázà¬~ÂóÏ?/ªÖÍg Ì„¼Ÿæ£ðÙèqø&kÖ¬5©ëÇ‚û7nœùDôÖ§Ÿ~Ú˜Þ¯_?AÀÕÄš/ƒß¦&0õ,ßÿþ÷%S®Å(‰:©AÁµ®¿þz9çœs, ÅÈ Bc 6Lî¸ãã>¬CÁ¯\è¿ø… 9üCk–šÂ†.(œ?.Ìè ŸB&•E{ºÃÆã#…IÕ´Å©#h>P†ô»ßýÎFp7n ¢Í‡R­•ŠËÀÿÀ¯ \”¨'\4=zŽÏ¢¸Sâ´3¤’y¾àž¸N&_")ö~§)U_8@}o¼ñ†£|ñŒIéÑr™FsÑ<ÑóL>P™j ¤˜‘Ïyçg#Àþ¿˜Î û!A\øX¿~ýð©…©+ì?•ȉ 7cJ3Q>õ„ËGU}øžÔq~QJÊ£SÑì©sêʦYxÆ@k¥ &ДeAeSKèN0IØ{f“ó!†ìa3ö«_ý*cqIõêÕ3¦íŠH†éûî»ï®¸T¥¸F™ Nd¾Â§‚‘MÀµ¸Fʦ±‚òåu¬[·nyU])ë-—QX¥ä„¿éÒq ì(é¬,“þ·“=N7äϰLD¿H¬†•Nôª@©i­DÖÏ顯XªïS8ÿGô&,ŽgÅêKªÅ"5j‹¬œ—«ÊÇ{ŠwÕÙ<c|¾QdÙ°¸\U>Þ Pœ¼©BóÅί>š%²}C\Î*ï(Sóo^!²qùÿSª‰¼÷øÿÏ}(Å/@)V„+ÆèIhl±}“𱡡 >pÀ PÀ‰ðñ­‘j¾ŠÃ1êP/ùluzœ?/@Q!øDG^Åk£±z®¯OÞ›!¾jGyжÿòQ"_nƪFÚ*ò戒ñU<¦Ìß…Uz~¾7AA¿LÜKg#|¡ß9É'úaÚ¶u"Eõw¦ùƒŸ‰ŽÊÀ—Ûtîgç²æ‚Ö<+rüNºº~v[Ý¿‰³Ìk 07£yô‹£ºÊ¡)Úoǹÿ/Áï•`I(‚Ot«y…8R"è¹S‚%¡Þ3»+5B±>†3|0xJâYM]7V;ó·ÔIŪRš…U¥Ö.‡gõ¨˜Z•ªôÃø2nmVˆ²¨b• «Q ù?뇕´ºž­ÔBeõØ^•'wÖÃ2aÐJþóŸÿˆ"˜qžD Ü`K¬3å‰Ãúyíµ×R«X3•Ûeqáê}8w°Zä]ïŸVè”SNq>úh*]’lÈ wãzư‡À8‚t‰1ïJ ‰Õ¥¬Æ3 ¬ ]ÿžª‡@iC!fœ-Xz6L#…qº<ÚV +LÚŠa*( V]XÿXí)ŽÅkÛ´<-•åÚ¿ÿýï"jðÓ?ÿùÏ´ô¨‘¨«_ À 8 \€~ÔJ×ï;]ïtŪSô§°vNÁœb¹Ûn»Í@¥ÂË•Ãy!À¶.ºè"÷â‹/ ]@ɳÒn]§oÐ0Ä!HŠêaå‚? wXZKʹ—\É›°$]¿rªÈ¢–(m$…MÀ,`V’ÈF,¶¬]»¶hÀ€@¾Ï’d€"îb©5æOßÐ8)[õ–d¦%׊¢f  w—G½øL Š4U0 î;LS(6“<žE9`przñædB8<Í@É…@áÇ’o:€pAH@îˆ3˶¹?@ß°\( ÓˆzU£XfܲñÒ`yÊ¥u4X=àçdŒâBŠâC&öR4 =(`ð€ú;v¬(›PШ$\@ 8â€G±—«õd:R/š˜@@·¢a-5VP®¶®Jæ[þs/¤ï ð@Q|‰ |3Lø@ÚˆNÍ’xHÀÇàÀâ·(Ò†9Íø¢›¹SO=ÕòýèG?r*¬NñÍw ×ä“Q?þ,~–âJ:Õ.„ªŽÈaÒNaÀ©j:ÃÑ9…ýLt¦.Ä­%²zºÈIzŒ!³òJÁœi‡©B+_C`è$h:À¤2AÛÄÜFNÑ„*ú¬(îbZþ|Ÿ!\Ø P˜Ñðª'uióK"-v8ÒÑd®_» §<#<JËïD—–s¾œqÀ „‚8ਠöùÂ^€¼ Ä/@Iìc @ žb9à(–5šz–”­*§yªÊ­_Ïî(‰‰~]Xw,Í P‹˜cõëÂ’8äá]¹ã³rÀk $ùuaIܱ4ÿ.,+‹|†$x ”ÄŸ–•^€²²ÈgH†$îø´¬ð”•E>C¼%qÇ¿ K⎥´6>Ÿ-³ÞÉn˜áÅÒlPGdþþ>õ­·ÞJmåžo3$@\Ì›/Ëw¯ül)ÎbÂ`]Y¾wçMX¾óùÓ8à(þ$_xÊ—c>*µmݺUž{î¹´*ôäõ×_7|ŸqãÆÉæÍ;Ç ­´ŒÊ\]–LÕ‹-¶C¯ªÔòÄ¥—^Zf|5£[·n¢0(€¨>ø`™Õ_hEÜÓõ×__¢…o‘3f”ˆßå*@x÷;v´Fœ@Œ¯_qh ˜ð à¶lÙ±3ààÁƒE±wDqrDט‹âÞÈUW]e|`¹¯®7€‹/¾X )?­Zµ2X“† J÷îÝ­Îûï¿_tíº(.•›2eŠ•A» 0 -ÌPöÆo”™3g ÷AxÒ¤IBF] /-Z´zõêÉe—]fË‘HÊÀ€U! D2P80¢Eפ‹‚@I§N ^…:!–7xÀ½´ ëÚ-¾C‡rÝu×I—.]bóÀ©2ÞÏ`…õ1úü²¥¼©\¨¸¸Øz „y0§k×®rß}÷‰"{XW>}º®?W3fŒ(2—Ü|óÍÖðà *8€,]ºÔ0u7nlõWFO˜h,0vœÉüàá¦M›&ãÇz)èܼyó´ðâÅ‹m(‹ÐD}A9ÐvO?ý´p_ÚÇl/\ëÖ­¥oß¾fþ@ã:t¨lÚ´ÉÒ{õêe÷ÍsÓiþøÇ?š@¿ñƶN~ذ{²òœt:Q\ÊôéÓGè”ãš7ož<öØc†ósöÙg ?ðˆÊ“j”gåÔ ÓG­úiqj6œ ”U™•–¦fÒ½«Îu*ÄQ`sµ·¦PÂR‰ òƒÆ%rÀ몰F“2žƒb¦ìTk•¨Oµ’ÓNcåt~'cqy¨Oç}2^“Hí4ö̱B :Jvê_†bò –»MÈ{÷îm2Nr˜_ ª>j<¡E?)œž/ÒW\~zsiR|~aÂlö¯‚8Žqy¨ ÔÕ8…lWQAÕ£.U^ ºWÔòþûïoo¹VÄ(޹£ðøÌå„·À1&£¿Ò×À‡Šuâ 1‚ÃDÅŽ6¦9ìHÇå­¨xÌòµ×^kæ¹4÷Pá#_ÂQ åBTFBLæ1¢b" _‡i„8ÂA&Ú-JIðª„ICó£>Ú´õS6I€}îÎÂ}ÞRçgñÒsëÓ#vᙎȜ:ÖiWŒ¢Ä«œÚf@T§¯& Õÿ ÿ"ŸmtTèt*u=56?#Û6øKøaqÛ²Í@êf êUØ(¬4Ò’éßþö7ùæu#˜$băÁìm¦™]^­à71)™ï,î’%KlBM„¦š8q¢á:c²˜NàœW9ÙêE£1“ݤI¹õÖ[cç©’ž³"Ó*1½@<þøãÆhf­™yÎF˜fÙýå½\0³ËÜ ñøq8±q³¸Ùê'=Û68öqÛ²Í@.÷VÞy*1©HƒƒàŽã‡æÈFÌñÃw‰›Ù ê(d7i6:×zK³Í@pïyÌÞ yw¡k3“ÌÛn^"¢‰x1›´ †É8^l¢…âfv¹Dyo34;Ì u©·ñ§¢‚•F€05Ì´òª‚F2 …vâe$#³áÇ[–L3»h^âbFr™Ååò¡àž9ÆÍ«#oo÷™Ÿ?¾ÍG‘ä󹿮Î[áó@…Ê PxøáÙR\¼=-eÉ’÷u9Ϧ´8"~¯Œ¨,[¶F¿ ,)(|3=yò‚hö*î5PDÆQ—-—$غu›~úêÍX„]âgÇ"aø^­šÓu\{Û’%æJ÷Úk‡?´téjý d‹~[ºeB‘Kí§½ÊØ#8yˆââÏõÕÅ”„iΜåú öY– ¡ª];}`¤x•;õ(Òä¼²hР¶ÅÖ©³i¢à<’ÕŸ*¼äÅ  x*ˆ}¾° /qÀ PAìó…½y(ˆ^€ØÇ2°`(![•Nò”ÐüL"*¸FBŸäÈË@Að”À>o˜³3É P¼ K`Ž ìÌñ9²sÀk ì<ò98à(‰9úGžˆ. µí™I^€Ú•!ü¾v2áésKò”Ÿ|®xŠaŒÎ^€øä瘳3É Pü2aÂÛâ›m6ÙŸõ¸ãŽKm³Ù°aCiÔ¨‘Íš5Ò®];éÕ«—œþùVÕ˜1clSàË/¿Ü· fÞeã[…Ïœ9SFŽ©+g¿”sÏ=WºtéÜÞ.=VˆD¯cßÓÞ½{ÛŽÊC† ‘¾}ûJÛ¶mmûí#Ä6Þôô˜0±‰m@ìçÎvÛ¤#d)[]²ýä|`e9æÛJœ2 &$¶ˆÐ»@#\‹½NÙ’ü¦›n²=à€äôÓO—N:I«V­¡@ÃÜrË-²hÑ",Ÿª)=¸zõjë<ÙøÃ6úÓŸ¾âŠ+ìï¾ûnze»è¬Bˆg£áèIôXŽAxݺuÖã=öXÛŒsD˜†EK y*L€:è »OT? ¥SN9EfÏžmšŠ0Nëí·ß.ì¯Îòô<¶öÆñ ö§a£Þ‰ÐAA|8.Z6î³Ù¬Y3ÓfW^y¥¼ýöÛÒ¢E 3£á2\‹ú‹‹‹M¸Ž8âæpž¸pxnöZÅâ×±cGÓÐqu•g|… P¶‡Bk°W E­Ó3£Dãb¶•¡)Fˆ‘„‰ëСƒ…™Eg…á\ƒÙ\üü®‡i½êª«¬AÝ·ì#¶À/ÃïÁ$c: ¥N8ÁüºnݺI÷îÝm»p®W´Û‚á1Îëa‡f#œXmsÎ9çØ±uëÖÖ@œ_}õÕ–4'A=h%´þÂC£BÏ<óŒ<ÿüóº#Ï ^»Œ1BZ¶li„Ñ4ì/ß¾}{«“{Â_cxü¡C‡JÏž=${Ìè¸qãÌ â«az/¸à|®YTTd~áÒÏð±и~cEP™ãDÓ0 ŸƒF)ä¡ú÷ïo#'4P@ØýÚµk§™=„í0vìX3MçwžeGã >\îºë.Sõ0ºæšk„çœsÌ©§ž—Ý7ï¿ÿ¾)Uª”)S¦LvRyyZΜ9Ó :4¥%J¼oß>så•Wš=z˜õë×›wß}Wïûôé“(‹Æ×©SG ²víZ%n¦‰“|luš2eŠ™3gN䨏qc’%¥– ÒÝ|óÍšiÉ’%fÆ ©©Ý|8ö¼råJ+³àØè¨û5kÖØ&MšØ+®¸ÂžvÚiöᇶ^x¡•Qe‡ f§M›fÛ´iÉsÝu×Ù×^{Íþûßÿ¶•+WÖõÔS¶fÍšö—_~Ñxþˆtµ%J”°‹-²·Þz«íܹ³ÖIHg?ýôSÛ­[7]‚hÖ¬™–ñ—¿üEó>ÜŠ„²'Ÿ|²}üñÇ5n„ ¶cÇŽ¶V­Zö”SN±£GÖøÙ³gÛóÎ;Oãn¹åsíâ¦xñâVˆ ñÁ?Ôåþûïר?ÿùÏ–vìÝ»WßQ²dIÅ™:Òžþýûk}x·HxÍÃ5ï;餓lëÖ­í®]»ìÙgŸmEò+~wÝu—1c†ýñÇm—.],eò|Þ¼yš¿^½z¶W¯^¶téÒ¶qãÆö»ï¾ÓøÞ½{k»Á\4‰Æ%ú#$·¢e=&~TÂuÀd¸jÕ*í #FØýë_z-ËNžúÈžx≖uJÀŸ|ò‰}饗¬¨j-kþüùö™gžÑë1cÆXòÓ¡}ûöÕ¸àÐÈ‘#íE]¤Jý¹{÷îvûöí¶P¡BV–¤,m¤C·mÛ¦ï¤ó&Nœ¨ƒMT³>§—.]ª¤tíb@7N1 ƒis,¤"™"dY±b…=ú裕øÇ¼]·n>}º­[·® i!u|çwtà¾÷Þ{ö¡‡RrˆJ·Gy¤íׯŸ¥= 4P|bçÎöšk®± Ê{Þ7pà@{Á(<`L{!9d?~¼×J•*)lo¼ñÆ ”]'CÀÐ6à±Çk¤s 놘éÚµ«AÝ¡F~ó›ßi¼©g¤#MÆ Õæ(_¾¼ébÚ¶mk¤ÃÌ×_m`#€jºË.»ì a/jD j|Ë–-@¯[µjeDrê!3Øjõë×׃:tÐt"‘Ìž={ô:øGˆlŠ)¢Q"mH5]»’Qožxâ #Ä7"%#YfÍš¥e_rÉ%'ÒVÛÇÍ¥—^jPÙÔU¢ÏQ·Òa†wSlbF½###Ã`b.QÌ!CLÙ²eµŒvíÚ)† 0¢Œ ó»ßýÎ,\¸ÐwÜqF»š¼ãöÛo7"ÁŒHf#DÓsáÂ…HÝH\<ïã ÍÔ“v h#ƒTÕu£F ö+8ƒ{Ïž=#å¤{ÚÕkd´)qD² ²ndä™W^yÅpMÃ^}õUm”Hí0l bHJ8ꨣ‚Eèõ 'œ‰µ¡¤%"Q|$ñ‹3Ï<Ó@ž`€ø"ÅŒjve˦ç‚ÿö·¿D‹ 4?ýô“ÞÓ~xˆ8ÐCÌ3iÒ$% /^€ t¦;\û™(Ø)$#0hÀ ì ¬Hf= &BlHs‹ýÛÚB›±íaÂ"ÚD Âa6„&`VûÐ0ÓãàÉ(*Ç`ü3j‘HÊÝ»w+˜ vÈAÅBÒ4 @filÙ²e:²ÅÎÓQ*ªZŸ³“#jÈ 9/¼ð‚ÆCQ9¦zõêFÔšÆÍ;WÏL ¨£ Ht|¤£C‘ób÷ºÇQçM›6)ÁE}™æÍ›&¼76P~ð =bV¨äÛU%ÑæÍ›MÓ¦MUÚ2k~òÉ'Ø~mÀ Ñ\{íµFÔ}„€Ô“´ xvµÁ¶pO{¤c"„ÄL43f 3Æ 4Ȉɣé)#L­‚½IG[ˆ¡R ¢Än3HNΨ[Ô „DEÜäڕÈgÙDì##Fµæá9$@剽©3fÒˤÈ­eÄ52Q‚ ŽP—¨Y¶‡rH$™¸PŒÈIÈ夥ó¦E‹ª I„ºD!5Y–¡ÓiGl ¨s™ÀÄ#ßc=¦&‹kç3Î8#*û£>ª¤A"ЦîŽ;îÐö1Á ©È@Aýнkð` Å ÁTì=•X2ñSò1ey³p±­Íé§Ÿ®ªWìáÈ3wA9h˜ÔAqçwº$韘¸!™IHÜŒq"e”é"øˆI““`À˜g¶ÅŒIˆ L"0ŽEJêäÃÅ3 aÈd‡¼É ôÕ«WG•C>&!o¼ñ†ÎHÜHQ"1â–Í;™%˜åº2É6ÄâFy2W6“f¸¢b]”ž‰[8*ŽÒ%ƒ!ø1QŒWFl¡‡d’õ‘Z½èÁÀˆ Îæˆw÷2£6±ÁIÖØøx÷Ø™HÌD!v{.^½Ryg°ÌTò%ª£Ì¶z$K?ÅÑV$d0ÄÚèîYl:{¦L§ÎcŸ¥uËZwŸ]‘™j`™à‡~ˆdC ¹u¨H¤\°\Á‘5A¤C~ 2ÁÊõ¦ä odf5R‚ˤE ¹]0¯›ãÒ½–µ¶t³æÉ|Á™zž¬àJåø,8/7Þ×-÷H8 ffÇR†›­å~Uó^ Š-/³Áoäø.ïU.ÔÈ-—%ªN¦#"Q¾¿wïO²tÑW>h¨%»7x<ÒÀ«à4‘›={•Ìî’m¶•²ˆ»ç Í¢ t6OÀ4»ܸE²(¾W·çÍ[f)>›'`عs¯Y¼xæÜ±c¯yî¹%i”â³€€'`<˜>}…| q §•=ÑåK›_÷‹Ó(²ÀfñL£ëQ¿HA ã¬Yû?~pqþœž€ÉáIõí·;Íʕџ²ïرG¾BYIã/’GÀ0y¬4å”)ïé÷w±Ù–.]+_ÑüÁkl:€'`4YÞ¡~wïþñ t… gÈ'Tï#2GÀ0s|¢žnٲݬ^½Y¾J.*G1ùJ¦¨|ü¹ÿš5ûQ£æG¥÷7Y#pŸLḑp|øá—òáçN½«'` ÈÄý/·E¸¬ž€®ËóVƒ=Cô‡WÁ!À;Õ0†^‡Ï0ž€éc§¿›ã;'€’Õ0~|Lî?( '`8ð|îðx C¿ ¼Y=C`ˆúõË0!”¬ž€áðó¹C"à @ÿAjðdõ ¡ÿ 5xž€áÁó%„G ÇA܈ª«ªðUÍ{%-z¦ü@ù·r|Ÿ÷*²FÌðƒ.ÓB—({Îÿ2¼é¦›ŒøNT Ÿ8T;<Þ̃_ªä Xz;¶Õ0vJAªR >…q\]aïÞ½êgxذaòs½+³«Ø´ËÁë¹sÐv!¹”±@pæÌ™êì9;0ÆãûùçŸoF­Î ‡n4h Ž´³£üTʨS§Žz:_»v­Y¾|y*YóLÚ}ú¨DÞ³gN(~8ø¾òÊ+•Œ¨NTïÈ‘#µœàÞçÞŒçšx&CbÏj^&ZµË„…‰ AìDM[«V-­—ØxO»5j¤8ìØ±Ãˆý¨õÒ‡?‰ÞHrè.sÚÐLf’L~øá+³E+I.’ÆŠ”²B„H¢V5®nݺ: q™„ôïßß ùÔ8wñLBÄβ¢þ¬HOéYÔ›•Y±•}P:‘¾Qå” ‰™‰[Ú 2{¶"ñ"Q\ Ñ"÷î‚öqrñ©œ…©$O7mÞ™„d6äÞÿ}]¦¹ù曣F4ö¢“ ÁüA;,ï®Y&‰N=õÔxÑqã"˜ñBÐ÷<™8Ôol8þøã£¢°ç‚RÞ=LÔ>÷V²¸xÎy›YpÎCáßä¸ ÎÏ_DŸpBsñ”þ‰ŸåFßåè;QÁ‡â‹è'`Ž¢”‹…ÿý²_}¯,{T4ãÇßš‹59¬_=Ú«à4ûoÚ´L±bEd¡xLnöœf±.›'`š]þÌ3ûW)r¤ì·®H³ŸÍ0 lÞ¼M>ÙÚ¬9wîÜc £é!à ˜n“'/ÚNûàƒÏe›pW%ù,ž€ipàÙgËÌ÷׎<2C>{?’|OÀ9°ví×fÓ¦èDg2nœWÃ)B©É=SDmâÄeq·¨Ö¬ùÚlÜMÌ‹.É=Sìö –ȧ^û?òŒÍ:iÒ²Ø(Ÿž€Y|¼iÓ6ùÎo»aé…£pá =¸Þ·ïgù6ñ£`r~'$ ‚IvïþQÈö‹Fuë6δn]K>Z=[ï‹/b22ü˜â•Åõáñ5L8¤Ùý(Vlÿ+ .$Ÿq‘ÿ×(zHëŸ^æ‡kˆÞô¿¼Y=C`è!5xž€áÁó%„GÀKÀðúB à <>ÚÄô!}<ÓÇNwD°}HOÀô±ó9³OÀlÑ‘>ž€écçsfž€Ù¢/"}<ÓÇÎçÌ<C€è·âB€w «'` ýV\ð<ÃçK€—€!0ô*8x²z†ÀЫàày†Ï—/C`è?FÞ¬ž€!0äDýÇ!”¬ž€áðó¹C"à @Ÿ=ž€!ðó6`ðdõ ¡·C€ç <_B6 tqƒ›S)ÒIb‘qŒ¸L-âñJ/¸%>Y‚”‹ö”$T÷¡7ÝtS6PÛáˆFßuÎ ¨{âm@‡„?ç ž€¹»©CÀÐ!áϹ‚@ž#àš5k ~rþýöÛáøöåžx‚{ŽCêÏ>û,é×-^¼8é´Y%ı5uúî»ï"I±‘V­Z¹Ï© ׎իWk¨ηñ³Lؽ{·ùàƒrêõ‘róŸþy³|ùòHÓ½ÈÈÈ0Œx6_ºt©éׯŸ‚L™}ô‘y衇Ա´øæMú5÷ßÒi³JÈ  Nx‚w/ïO>ù¤»Í±³k^çqŠwx0êØ±£zidz(^ås:¤ì1}Μ9fáÂ…ê/»ì2m€8zV0©tñâÅ ^¼Mݺu3C† 1Ï=÷œº±Ç3% —/_ÞLœ8Ñà©ü´ÓN“vÌ0·Þú«Ë«W_}UÝÓ‹Sh³k×.sÛm·™?üáæ–[n1+VTïåU«V5úÓŸLÑ¢EMß¾}ÍwÜaN9å”ÈuõêÕµ <Žn:uô|þùçk<Ïqowó7šüãò˧E”œ 40½zõ’£Ügþþ÷¿›wÞyÇÔ®];â?måÊ•Ú.<¯“¶wïÞ¯íÔ·²Ý»w7 0eË–U †nþùÏFaôO,³ÍE]Õß ÄQ£FqÀm¨3ïÈ ÿsÎ9ÇÌ›7Oóáëíºë®Sïî‰ÚÁ ëׯ¯ž×¹¦ï¦OŸnðúŽfHŠY»v­ö7ÝY„ÇïŒ3LÉ’%Õ«<ÛS )K@\Á/Z´ÈôèÑCE3ZžFL:ÕT¨PÁ8—÷ˆ¯Þõë×›%K–hC.¹äóŸÿüÇPÎØ±cͽ÷ÞkZµj¥L#]غu«’å¾ûî3]»vÕÎã€à˜ÎÄ0ªƒ@ã!bðºfÍš¢ PçεLî‰Çå=*¦ƒHC;|ðAù¹Ý×ÕX°`AM9Ù~#Œ1B;íoû›ªLœjÓ”‹ ¯éJr$ù>þøãƒ0ЂäOÏž=ÍÓO?­ƒÁÅqæ`#^çµ,ÊÎ Ô:†2ДK]µƒ÷PÇùóç« P 4„ ùPÅœ+®¸BÒ“<éÍd°¥ãÜ0eRa$# ÂÙ]c»!e&t*Dmذ¡J%î!+ÒÂBN$e\pÁ&( x2ž2IE¸êª« ^Ñ›7o®Jk—ÎS¸»†€¨F.¤Eê2 Ìó`(Uª”a€Ð$é–-[Te7kÖÌT®\Ù°ŽE€ø›7o6W_}µJc´ ¡!ï¬W¯žžÑ)/÷n<¬_|ñÅJ8ÇyРAÚ©/¾ø¢vº³3ûˆm‹t'ÚŠ}Û÷®+V¨Ô#M§NÌ¥—^êé™úÑGåÊ•3çwžbH‰¤§}øavš$*c7iðä“OÖ¢ *$?O{\Ôkí¨ Œ\È1üqsì±Çªšc„Ò'tR$oâS‘LVXCì³~6tèP]Ë¢œCXTgýŒÀ,™äáè“ì _¢öfë$$ÑKr+þÑGÕzfl.°Õ‡ýÈ:;4Á fãñvCØÅp³`3Sfäñv°‰þú׿ê.Œtl(ö“Ô ïe—>e±£ƒ:cÀTªTÉÌž=[wQ0gr’—Ü:g»Ì­†Ä¾•¡XìÔF}¼ŒD»!… q¶™©BÈx;“&MR[— ë–L¼Z¶l©3SÉ$€º±D=Xœg6Ï.aÆ º…ÉŒž•·ÓlC~ºÎ·t³U÷uG°Óíd&Þnñ—_~¹a˜eTh¢ÃÎË(÷Üsî `ÛbN =]` “Åjf„7Ê Î&XijH^£FÃJ]»¶¥rηd×[Ôí, kˆ¨DlÂx;¤qË=\cÿ¸Å_ïââí80ËGê²M ñÔ'e¢ª=Ë=Õ…Øw¹øüx礳X2eŠÎʹGuÒ¹|u‚dÇ"¸“AšdC¼H„šeg„€ç®Ùp)Gº·ÞzK£Þ”ÿÅá¾ †|= a—[ÝÒ‹¯k j/v'[/666—hÇ]&7Ï>û¬ªlv7¸|{È®„ ­[·Ž¤cA›¯jbï‰÷þØt‡ó}¶¯æE0è`f¾ØwÁMu'#^Û¤ñv˜@?Ô`]A ÌÆ©ä÷o0ÿ·Zz•üx;©îdÄ#6^<;/H>òÅ[Ó$>ø• ÷-äk° uæáØ^OÀñ×òQ=óQg–M‘5¨Håÿ;'²\(éÂ@>&‰ðM.FEÍ‚Ëä+}8#0Ú«àùûòAÝ=óA'ÎMð<œ{/Ôýÿo'ÏÕ= UIEND®B`‚mysql++-3.3.0/doc/html/refman/functions_t.html000644 000765 000024 00000015533 14042362132 022021 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
MySQL++  3.3.0
Here is a list of all documented class members with links to the class documentation for each member:

- t -

mysql++-3.3.0/doc/html/refman/row_8h.html000644 000765 000024 00000011271 14042362132 020667 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: row.h File Reference
MySQL++  3.3.0
row.h File Reference

Declares the classes for holding row data from a result set. More...

#include "common.h"
#include "mystring.h"
#include "noexceptions.h"
#include "refcounted.h"
#include "vallist.h"
#include <vector>
#include <string>

Go to the source code of this file.

Classes

class  mysqlpp::Row
 Manages rows from a result set. More...
 

Detailed Description

Declares the classes for holding row data from a result set.

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Connection-members.html000644 000765 000024 00000037206 14042362132 026332 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::Connection Member List

This is the complete list of members for mysqlpp::Connection, including all inherited members.

build_error_message(const char *core)mysqlpp::Connectionprotected
client_version() constmysqlpp::Connection
connect(const char *db=0, const char *server=0, const char *user=0, const char *password=0, unsigned int port=0)mysqlpp::Connectionvirtual
connected() constmysqlpp::Connection
Connection(bool te=true)mysqlpp::Connection
Connection(const char *db, const char *server=0, const char *user=0, const char *password=0, unsigned int port=0)mysqlpp::Connection
Connection(const Connection &other)mysqlpp::Connection
copy(const Connection &other)mysqlpp::Connectionprotected
count_rows(const std::string &table)mysqlpp::Connection
create_db(const std::string &db)mysqlpp::Connection
disable_exceptions() constmysqlpp::OptionalExceptionsinline
disconnect()mysqlpp::Connection
driver()mysqlpp::Connectioninline
drop_db(const std::string &db)mysqlpp::Connection
enable_exceptions() constmysqlpp::OptionalExceptionsinline
errnum()mysqlpp::Connection
error() constmysqlpp::Connection
error_message_mysqlpp::Connectionmutableprotected
ipc_info() constmysqlpp::Connection
kill(unsigned long tid) constmysqlpp::Connection
operator private_bool_type() constmysqlpp::Connectioninline
operator=(const Connection &rhs)mysqlpp::Connection
OptionalExceptions(bool e=true)mysqlpp::OptionalExceptionsinline
parse_ipc_method(const char *server, std::string &host, unsigned int &port, std::string &socket_name)mysqlpp::Connectionprotected
ping()mysqlpp::Connection
protocol_version() constmysqlpp::Connection
query(const char *qstr=0)mysqlpp::Connection
query(const std::string &qstr)mysqlpp::Connection
select_db(const std::string &db)mysqlpp::Connection
server_status() constmysqlpp::Connection
server_version() constmysqlpp::Connection
set_exceptions(bool e) constmysqlpp::OptionalExceptionsinlineprotected
set_option(Option *o)mysqlpp::Connection
shutdown()mysqlpp::Connection
thread_aware()mysqlpp::Connectionstatic
thread_end()mysqlpp::Connectionstatic
thread_id()mysqlpp::Connection
thread_start()mysqlpp::Connectionstatic
throw_exceptions() constmysqlpp::OptionalExceptionsinline
~Connection()mysqlpp::Connectionvirtual
~OptionalExceptions()mysqlpp::OptionalExceptionsinlinevirtual
mysql++-3.3.0/doc/html/refman/functions_u.html000644 000765 000024 00000010747 14042362132 022024 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
MySQL++  3.3.0
Here is a list of all documented class members with links to the class documentation for each member:

- u -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1NamedPipeOption-members.html000644 000765 000024 00000013434 14042362132 027263 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::NamedPipeOption Member List

This is the complete list of members for mysqlpp::NamedPipeOption, including all inherited members.

err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ConnectionPool.html000644 000765 000024 00000103051 14042362132 025524 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::ConnectionPool Class Reference
MySQL++  3.3.0
mysqlpp::ConnectionPool Class Referenceabstract

Manages a pool of connections for programs that need more than one Connection object at a time, but can't predict how many they need in advance. More...

#include <cpool.h>

Public Member Functions

 ConnectionPool ()
 Create empty pool.
 
virtual ~ConnectionPool ()
 Destroy object. More...
 
bool empty () const
 Returns true if pool is empty.
 
virtual Connectionexchange (const Connection *pc)
 Return a defective connection to the pool and get a new one back. More...
 
virtual Connectiongrab ()
 Grab a free connection from the pool. More...
 
virtual void release (const Connection *pc)
 Return a connection to the pool. More...
 
void remove (const Connection *pc)
 Removes the given connection from the pool. More...
 
virtual Connectionsafe_grab ()
 Grab a free connection from the pool, testing that it's connected before returning it. More...
 
void shrink ()
 Remove all unused connections from the pool.
 

Protected Member Functions

void clear (bool all=true)
 Drains the pool, freeing all allocated memory. More...
 
virtual Connectioncreate ()=0
 Create a new connection. More...
 
virtual void destroy (Connection *)=0
 Destroy a connection. More...
 
virtual unsigned int max_idle_time ()=0
 Returns the maximum number of seconds a connection is able to remain idle before it is dropped. More...
 
size_t size () const
 Returns the current size of the internal connection pool.
 

Detailed Description

Manages a pool of connections for programs that need more than one Connection object at a time, but can't predict how many they need in advance.

This class is useful in programs that need to make multiple simultaneous queries on the database; this requires multiple Connection objects due to a hard limitation of the underlying C API. Connection pools are most useful in multithreaded programs, but it can be helpful to have one in a single-threaded program as well. Sometimes it's necessary to get more data from the server while in the middle of processing data from an earlier query; this requires multiple connections. Whether you use a pool or manage connections yourself is up to you, but realize that this class takes care of a lot of subtle details for you that aren't obvious.

The pool's policy for connection reuse is to always return the most recently used connection that's not being used right now. This ensures that excess connections don't hang around any longer than they must. If the pool were to return the least recently used connection, it would be likely to result in a large pool of sparsely used connections because we'd keep resetting the last-used time of whichever connection is least recently used at that moment.

Constructor & Destructor Documentation

◆ ~ConnectionPool()

virtual mysqlpp::ConnectionPool::~ConnectionPool ( )
inlinevirtual

Destroy object.

If the pool raises an assertion on destruction, it means our subclass isn't calling clear() in its dtor as it should.

Member Function Documentation

◆ clear()

void mysqlpp::ConnectionPool::clear ( bool  all = true)
protected

Drains the pool, freeing all allocated memory.

A derived class must call this in its dtor to avoid leaking all Connection objects still in existence. We can't do it up at this level because this class's dtor can't call our subclass's destroy() method.

Parameters
allif true, remove all connections, even those in use

References remove().

◆ create()

virtual Connection* mysqlpp::ConnectionPool::create ( )
protectedpure virtual

Create a new connection.

Subclasses must override this.

Essentially, this method lets your code tell ConnectionPool what server to connect to, what login parameters to use, what connection options to enable, etc. ConnectionPool can't know any of this without your help.

Return values
Aconnected Connection object

Referenced by grab().

◆ destroy()

virtual void mysqlpp::ConnectionPool::destroy ( Connection )
protectedpure virtual

Destroy a connection.

Subclasses must override this.

This is for destroying the objects returned by create(). Because we can't know what the derived class did to create the connection we can't reliably know how to destroy it.

◆ exchange()

Connection * mysqlpp::ConnectionPool::exchange ( const Connection pc)
virtual

Return a defective connection to the pool and get a new one back.

Call this on receiving a BadQuery exception, with errnum() equal to CR_SERVER_GONE_ERROR. It means the server was restarted or otherwise dropped your connection to it, so the Connection object is no longer usable. You can avoid the need to use this by setting the ReconnectOption in your grab() override, but perhaps there are other reasons to need to exchange a bad connection for a good one.

This function wraps grab(), not safe_grab(), even though that could return another dead connection. The assumption is that if your code is smart enough to detect one bad connection, it should be smart enough to detect a whole string of them. Worst case, the whole pool is bad – remote server went away – and we have to empty the pool and start re-filling it.

Parameters
pcpointer to a Connection object to be returned to the pool and marked as unused.
Return values
apointer to a different Connection object; not guaranteed to still be connected!

References grab(), and remove().

◆ grab()

Connection * mysqlpp::ConnectionPool::grab ( )
virtual

Grab a free connection from the pool.

This method creates a new connection if an unused one doesn't exist, and destroys any that have remained unused for too long. If there is more than one free connection, we return the most recently used one; this allows older connections to die off over time when the caller's need for connections decreases.

Do not delete the returned pointer. This object manages the lifetime of connection objects it creates.

Return values
apointer to the connection

References create().

Referenced by exchange(), and safe_grab().

◆ max_idle_time()

virtual unsigned int mysqlpp::ConnectionPool::max_idle_time ( )
protectedpure virtual

Returns the maximum number of seconds a connection is able to remain idle before it is dropped.

Subclasses must override this as it encodes a policy issue, something that MySQL++ can't declare by fiat.

Return values
numberof seconds before an idle connection is destroyed due to lack of use

◆ release()

void mysqlpp::ConnectionPool::release ( const Connection pc)
virtual

Return a connection to the pool.

Marks the connection as no longer in use.

The pool updates the last-used time of a connection only on release, on the assumption that it was used just prior. There's nothing forcing you to do it this way: your code is free to delay releasing idle connections as long as it likes. You want to avoid this because it will make the pool perform poorly; if it doesn't know approximately how long a connection has really been idle, it can't make good judgements about when to remove it from the pool.

Parameters
pcpointer to a Connection object to be returned to the pool and marked as unused.

Referenced by mysqlpp::ScopedConnection::~ScopedConnection().

◆ remove()

void mysqlpp::ConnectionPool::remove ( const Connection pc)

Removes the given connection from the pool.

If you mean to simply return a connection to the pool after you're finished using it, call release() instead. This method is primarily for error handling: you somehow have figured out that the connection is defective, so want it destroyed and removed from the pool. If you also want a different connection to retry your operation on, call exchange() instead.

Parameters
pcpointer to a Connection object to be removed from the pool and destroyed

Referenced by clear(), exchange(), and safe_grab().

◆ safe_grab()

Connection * mysqlpp::ConnectionPool::safe_grab ( )
virtual

Grab a free connection from the pool, testing that it's connected before returning it.

This is just a wrapper around grab(), Connection::ping() and release(), and is thus less efficient than grab(). Use it only when it's possible for MySQL server connections to go away unexpectedly, such as when the DB server can be restarted out from under your application.

Return values
apointer to the connection

References grab(), and remove().


The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SQLStream__coll__graph.png000644 000765 000024 00000030732 14042362133 026724 0ustar00tangentstaff000000 000000 ‰PNG  IHDRkq·nsRGB®Îé1”IDATxí]|E$Bï¡#½„Ð{/Ò‹tE:D, (Møê‡¢"¨t¥# ‚€€ÒQ@¤wé5tB€ýÞÿåÛc³¹»Ü%ÜÝÎûýînovfvæ?3oÞ{3;/‘ÆDŠ …@<"ày«¬ …€  ê …@¼# M¼C¬ PxgΜ¡^xÁ›Š¬ÊêôéÓ‡&L˜àrÉ6mÚDOž“rcâC¿èÖ­›´9˜¬½vƒºŽ~‰É ˜<ò÷òIMªT©¨GÒñ“'O.’ƒ³dõêÕ¥“bÀÖ¨QCfÈ Ðo¼!3,ÄZH èøˆfe¦‚ Ê`C8fxHF PtH˜íA;w–_ã5$${¢ò¥K—lzº9/H+`L°:­]»V˜Zýúõ%hÁ‚R?üT‰³¾Îh &áóé§Ÿž¥Kz~ø…tg|†¿¿¿HØPíÀÀä9HPßo¾ù†>|(ÌÌgÆ ”'O‘Xô¼Át b`Ñà7qâÄÂô8z8>¨3ʉzC2Ìͳ:$0ÙB… ÉÄó‘7¤&O!ØÜÌý*00PÚŠÞŽhàk$s»ù6jÔˆ 6ã È›Èç$€Ÿ+W.`˜íБ±ú0$\£Á1³ óB2AC¢CÄG ¤I“³ë´iÓÚÂ0ÀÀœ@z¸1ÌÑp‘/_>“0ò8pà€¨lw$/¨O˜Íu‚j„úƒÀ •àS·n]Z²d‰¨Zö ³±þAýŠþ‹¼`[Òwž‚Ác;ÜÓ7‹A2ÔÉXHböÈ\ÔEßk®¤*0¸‹/ŠŠ—0{ýJ¯‡^ L|f&ƒ{æzBö:¥OŸ^¿ôŠ_Ÿd4±!Ñ++øà’DZÌÔüñ‡Ìðè÷ïß—AƒŽÕÉL`0  ~€i0“ƒ`PE¾ ¨B‰×;v¤ãÇÓ÷ß/ᜣF›P… $Ì^^¸ M'H2ˆ‡ › ŒªPÉìÑ… „‘ÍŸ?_t}Ø ð\3!ã¶#¤‡š;L L© Ò$™÷ߟòçÏO[¶l‘ûøB9±¢…xúj™±.ˆƒú Oăú (¦•(”j"¤CØ•ßSÈ^¿Bû€ÌuŽ­ÌÜ€VÑ—>[ºï“ªSLc†Áp ;fi0PPPHBø…š„wªÀx ZŒ3‘ž–!að½{÷.µjÕJÒ .løºÄ‚A‡ÁñÞx 5êÔ,H@0`ûÑÉ^^Ðñ!FÈ‚šS³fM‘‚ÐaìF=Ì„rCÅhРá0¤ƒÑª¦^/üBÝ2Ò°aÃD…šÕ* T1Ør æÃ.„4(îuéÒ…¦N*¶Øm@À˜‚1@-〳ýàƒlêÒ€YAeB>fBñDƒÔØ1 Úy ks¿‚´öS3Õ1V™õzbbôÛ¤T¯!îl^ClÔxåÁ-ååYSãÎ%/6äjldŒÆWc£±6pà@ ±¶{,ÁHYXêÑx0ØÂy…Kc}ZcõAcIÈþ¬ ž¹5ž¡¢äƒø1åŃSC¹ÌÄÆáhy˜ãèÿåC:WÉŒòcq_cƒ¥-k3SU#[.ƶª(aøƒxöêiŽÈŒKcéRcFf¾í?Û4f´ÑÂãÀÆj‡’ÙëWèSίÈi¬" V¬&j¬*kè{Ï"fàѰ~Vüø¼çE,Ñ}¼Rf„¦M›FÉ63麲9\ÿ½Ù¨;ëáÎlnƒ†å˜Èœf2{åÒ¥³˜ò1†ót&1ãµ=›Ô&3¡®X†7’Ù†¦ß3ÇÓÃÍ¿hK¬äy*ÙëWº­ÊÑ2cÛ¤6H‘Pw±pa¯ß9š_Bdz$£Zƒ†s†þóŸÿØ ÃH ŒÉfZ´ha¥ËäμÜQWó€}ÇžáÓÕ|­ÌÛ°}j§;&‡„ÄÍ’ŒÆY&ƒÁ¬i$Höf%¬º¸‹Ü™—»ÊäJ>Æ•1Wò±rZ{R¢7àaÉU'ohUF…€/!àU V‚°Œìˆ¥Þ—É]uIš4¯´åãUŸ-¼ôtyÜ]ù{K>úNeWË‹~ˆÝËŽÒí=tïpe~%áÞgÂê¢'P"Xš=¡ ª ñÀš5ÿð2ö,~K< ï,mÁKÑåâÿ¡ê te?¿61ú4…z@9*¤¦ú£/:ø:LŠÑøz êÇ«¿¼Ino0¼Ï6§$¼ó9 ¯d´eÃvÔ=3†$êÒnŸH[?>KçvÞ¢ÇáùúQ£Éù)s‰¨ö>á5I•ÆkšÊõ‚úù%âtÕX} àM†ùåÏ+üÆõ×ò9sæšëP9ï<¦-ãÎÒ¢Öèß­7éу'²92Y:K2€¢$‹ Ž nòq£)<<ò](Tßßßßó§*Ñ€xy> /åG<.UWã³ÂþYp…v}yžm`K1O=$$ó§Š}³S‘VOßIséa^–X1/k0w·U«É|ŒÅ±hY&–×V­êÇà"´ˆIĈÀ´2Râd~qÿ)ƒÑ#$õ£ŽëŠSß·"Y³ÖVliC_½&ï,Žþ6úƒÌhˆwœ&1ÄV—Ž"4­¿àgŽï矈òÕOgY&<£1÷ üñÅ`~!Ï?JM¡*ù,]ú6¿ÌhMñ> qøÓþ§â”±Pr `£¯‘üQ±™A–»ŽŠˆåªoÍ ƒ©tî\•‘çôÀ>“2e }õUg~³øk‚â†Zû&¢:cóRš\IE…Ò³LýBRJ—ïéY2z¸•~£±RkêÚ©Seþ§±š”˜ÏŒÉÌÇ•†òóù<ž£†XêÒ°œ½´ÓA*Û+nI$›€@*Ù9‹3Ùød\ÿáL>Y3U©g"*U ä}—ã$â³_Þæ7ªÓó1˜yøðð9|nN~i/òd¾gf¢nÚ{L+{¥R¯e¡| ÒSŽŠ©)13™'îSµ!¹x7»-ª%/Ôª“%›=²Òaa÷øèÍdQ^éX±bŸò·‚ez‡7ô=çðÞÐ<ØŒ·²çÊλ~˾Õ'ÕÝ‹”"KÔ£d½¡Nî.£b4îFÔò›ÅGKlЃ-óËþĉ 8dFCyóæ¥-[¶Hý!=„††ŠËbx”„têÔ)êÛ·/ÃQ†_\}· ,‘øz£‹b3Õ«W§*UªPÍš5©Zµj¶ëóçÏSLeÞ+V37~+¿½öÚkd/ R×G}Ä+‹óù•“åtùòeù@êØ±#ÕªU‹êÕ«'EB~f I¥NZ$¤Ó§O›‹k÷¿b4vaQ±!€=6ß|Ó“ÎfîÐ{b‹îS÷¯\¹Bl§ºÏ%nŠѼys©cPP­®p[ ÀgÏž7¶ú'|Œ!T'G¿gïŒ ¿åfç1•¥Y³fÜ>ßÐÅ‹©N:¼jÙ [¶l™¨Xaaa†:~ü8%Iòô”EÝý.T=ÔuÆgذa”*U*IÛ—b4±!¤îLjÞîÆ†¾!CÓŽ'cŒçk7àÈUÀƒ–™ýäɘë_²dI˜‡æ´råJª[·®[`‰©,¬Z±£À;<Ì ¡C‡Šf/lÍš5Ô­[7öó5’PVƒDò³9|ø0{˸K«W¯–²²ŠÆ‡Ø'æ÷ßRÛ¶m…‘9Êh¼ÊS¥[ZFeâV ÊB_~Ù‰ œ³äÐ|ù2¹5ÿ„ÎìÞ•:¼ülšRdŽy¯ Œ¢/¿ùX`` mÚ´‰~üñÇ(GnèUñ‹cŸ YÀø Ã+ÔH#zœ¸ÔSOk¯,GŽ ª¤•9s戩Ʃ LcÕªU”+W.b[yÙ&C 4É ª|Íã?Ûm„±íGê„{Žz©Ò”TœXX´h·Š~þ¹¯×š… y+º–ƒªÙ+õ RV€ ÖÄFááá»Jîܹ£1˜Ý»wÓÁƒ£eѲeK>ª#y´ps€½²@9sæ .\Øö¼˜Â`ëÉ”)“HA``lܦ7ß|S$œF±Ô:D%ž{îÜ9>™1PÔ>¨…öÜæ”'O[1£±A¡.\Eà³ÏÖкuhÑ¢7åˆPWóKÈôØ·¼Ëa*Þ)è¹ì•ª‚Ak¦Š+Š1Ùßÿa°†¶0 ¨O`.fÂ2úþýûÍÁÂÜ2g~z »b4Ñ R® ðÎ;ßqç¼G3gv³Í¢®ä—iŸuB^B<ßSŸqéÒ%zðàÁä*)Fã*‚*}=zBíÛM fá#A[D¹ç‘4¢uƒOÊAâ5†»> <²ŽP(Åh< |­wî„ÓK/Md#cÞuZÃת§êb·`Å!S•ÄÚÀÜ·LúýôÓ^kƒ¡j/(F£:B¼ 5k^ íAƒ-âÄŽí—‚¨L=Åh<¢|³ÁÁÙhÊ”Ž¼ý}&oÁ¿ê›•TµrÅh‚IEŠ+Õªd©¦1½úê×ÿwXלܓ'ãíšržî\´Î1îAε\£q ?•ÚÚ¶-O-Z”fßÓy¹ôù‰ yË:¢ rìƒEWQÜ„€Zur*›ØxûíoåÀ,xWзÏÇžÊ=1ž÷†<÷ÔÂ{sQ÷¶×•|üø¶üÞÍ=1bE‚–òV÷Q'ä%(覇)FcDý?'ö§Ù³»ÓƇyçpäInñ÷´ÿçÌò6>Mƒ“G9!/ÞŸ«¥:ECýIÎ ã#,'ÐØ±­©~ý„x¤zÆsF@I4Ϲ¬øøìÙÓò†¾žÔ¿ÿ´gÏ+B`¹:+Fc¹&÷Œ cÍ„ ¯R—.3ø(ƒkžQ(UŠxC@1šxƒVeµka©¦!¿„9•ßø¾[tuß‹PŒÆ‹ÏŠÞ¾}Ejذ˜ì±yøð±ËUº{1‚¶O8GØ3£ÈsPŒÆsÚ²%yÿý&|¼eZ>t½KȆ¼Î‡(ké””*ÛÓõ]ÊT%v jÕÉ-0ªL\EÒLÛ¶_RéÒ/ðaÚMÎNmÈs²M…ÑàØ>v• P{Š\YÀo+„ãq^«7R¢D”,Ya>û²|œ©C…ôèúà tôŽwö_øu‚;_¥(^pZ:NÆGQÂ"7º;RWž Fóî»ïÒ'Ÿ|âJ6*m"gm8àÜ—IÙh|¹uUÝ‚€b4Òª _F@1_n]U7…€‡ ¯Œ>_¶nݯU]·n=|¨öLÄ+ÈNf¾oß>ñxèd²£ÃñÌþùçô÷ßÇ/¡nÀ)Û?ÿü“Pó‰ç¸…ÑìÙ³‡k|- h øôu•+WN܉šó‚cøžq•¦OŸÎÇNNq5•ž7nœøzvðìX©R%ñ! _Ò“'Ogôð¸˜Ð¤÷Á'NПþ™Ð÷êç9Íh ¥´iÓFÜg6lØg¼Î[ÈÛÓwß}'¾xá.³víÚ”7o^~—e‚ œAƒÑÂ… åýúõ騱câÎÎÓ¦MK/¾ø¢¸ÚD¬šÀ?q‰%d¹®9wíÚÅoü6¡Å‹S=¨|ùò´aÃÂì w ýúõ£Þ½{Ës‹)bë˜±Š†²¶nÝšà“xçÎT£F ’4pE gíÆ ãSû’òã?ž‡Õ ø6Ι3'•-[Vü£Œëׯ—€eIxõ-X°€ÚµkGè!!!ôÅ_Ppp°¬(üñÇǾb+ç|@ãÇ—¢Â73ÚínnD˜8q¢`¿ÒÀØ(qÀÁ|çÎ%=¼Â7583x2D›À+È^yÿý÷¥=–/_N¸†«V´³Þî¡¡¡âšµhÑ¢âÿùT­ZUúCÖ¬Y%-VSQgL†x6ÚlæÌ™ˆJ Ê•+KC¾=’pÔ+[¶lT²dI)·±Âg6¤&'ô ôW´7(¦¾(7­úÅÉF§NÒØ—°í¿½ v®uéÒEc'ßZ‡4–4–*4øÏ8w †kìKXãý;—lfÏž­ýþûïrÍZã™J0`€ÆLJ;|ø°ÖªU+mèС;KרW°vãÆ MÖ­[·4öm¬]¾|Yž—8qb;œ†pf;&×Øáº”]‹Jž={ö”µk<ø´o¾ùFã¨13ÑxiZãN§¥H‘BêÉÌPcèrÝ¿ÁÊžzØ“'O´7êãüËÒ„Æ á™éc+'j­T©R’3§ÝváIFK—.ƾ—µ¥K—j|jž¶mÛ6©ë¼yó´Ñ£GKû:tHãIFcæ+y²ÃxÁ›'%­zõêr7ìõà¼dÉIgþúù知œÌt´Q£FiÌ`$ ûÖ˜i<©hÅ‹×æÏŸ/m“>}zé “&MÒ ,(q7n,iÑGð,ô+ÞO¦!fšÚ²eË4fbÒ×ô>ü?⡱»XmÑ¢E36íöíÛvû¢¹ìÆÿèCÀÑ—Éi‰&_¾|¢/cÆëÓ§ÌiÒ¤!üăŒ~ýõWbÂ;}š~ùåbæ@Ì ®C™ JÞlïY³29Íh i`f‚þYDïh0 .pw£e ÃÞ¡Óþýûm60Ì&õêÕ#èÞ ØoôÁË"4}üñǦç8x†3„™vg ÏgM’ã9øàÙ° ±º&áöògÑZ¤µò»8m…É¢þÐíY$»Œá`œ¾D`.`Ȱ£@S5· «Å2)`€cÐÁþe&VeðÃÆ©R"íÂ*¨ØÄ`_™û ¾>ÐN¬~IVÉE E8ú!òA?É’%‹0D‰èÀœ×£`„Mv(6H¿Ä.m0@Ø‚ÐGt2ö<õ@ƒ<ââ«‹èsè{j[¶l)Líõj¶™ð<½,Æ{z ýlß“[~Ñ7Ôs¢m_ïƒz|Ôm0™a"²'mëÏ2>ßr×F‹Œ±ƒŸ;ˆP¹ÃØ’ó€Õ¸#ÈæúÏp¶{±]𠔆ô:ÁØÊ³›-?„#OÚœ!žÄ`‹¼Y¥ÓXÌÖXL–,¸cjlk‰’Ï 3·(aú0b×ÿã—U[|Ç]!`™PÆ`GÊɧƓ„œt²×.¸Ç*ˆ´U… ĬLJ1~`cl;ƒÑ&Îôàcî'ús1=ÜÑ_” ¨Ÿ‘˜©I¿ÓÃbꃨŸ'=¾£¿V0;-Ñ€C2€ÕH0ë©Á¨»ëá1ýB47T0}6ÑѧqÆÔßõ ݳß×_ÍgÓî¡7ÞxÃf³±7óÀ!/3a™T§ 2è—^ÿ ¬°Lå`#NöÚ•5ÚIìUÞ6ÈË™>©ÀÜOôg9“žÆø‹¾ ©ËLXä0RL}Ð^ýŒéÔuT'o Ç^`ÏDtÕ!k=¨°­ð¯c þ‹—y£L¼]ÀnzÞŽ v»7U O"'‰ÆÛðõWðÝÝXâw–É  úJ’^ž˜$ÄØ$ =½úõœ^uòª«š( …€Ï°Ç6CZ·î4Ûx2ò†°È}5 ¦«Ïñåöû%¡œÉ QîE©LÚÚ´éêÚ~}µ«ùLz_?a/ £ñ•V«Re ïÄ ã}£Ùp}™¯ÔÓ“ëvê]Ù.üy›.þu—½„S@ =yÈ3jÔb^aÊX$fã»'×M•Íy|ÒF·‰xÖ">Z ½ó¨¨qBàÚÁû´‰ý\ß8qŸüI÷"wêâÏÃ;…Ù¼86b2qBØ{ù¤ææÍ{¼,‚wîå«G½·u¼¬ä§6…QØÉûô˜%0#“AU'ó£Wƒ(oݧ¯%xYUq㈀Ï1ØhîÝ‹<ëþý~WjŽí1RÉD ôkY)i:ûB²?ÊR*•{+òÅV³TÑ|Ÿc4׮ݡ¤IŸvö»wÒ!‹}¤¹<»ì-…ª ÈEþI#Õ&½´~þ‰(EPª3.¤~-†€Ï1š«WïðKþ¶f|ð ‚_Êû‹=n Sñ€¿SzhÉUÚ4ê4e.ž’ü?e607ùº€ØgâáÉ*K/@ÀçÍ•+·£½Df:›ˆT©¼ ]¼ªˆWÞ£eÓ‘•×™¡¤ÚcòØŒÁIý¨Á¤ü”"ËÓWT¼ªrª°nAÀçÍÕ«·mg’ºs'œÏ’Yj R×n@`ïìKôKŸãTôåLôÒÌ‚”._ %Ë@eB#m1Õþóe.‘ ORYx3>Èhî°W„Ès_ ãç—ˆ¾ývŸ›rͬ®]E€5¤6K‚©@“ÈCÅôìŠw ¢»KSþ†‘§"êáêך<µšúHýÏž½ÁŒæ1ûpÆF½'rWõêù «þó‹•Þµ[ØÓ›¥DçÈó†<½œª|ÏŸc4µjâ·µ/ò!Y%ØKA~þχR½ÂÇj*ñÝ•®†=1Ø„çŸä©‘וüTZk!à“¯ ›°sçé즟ÐV¬®@àÄÚ´íÓsôÊò¢Ñ–®ÈFEµ0>g£1·e•*؃ÚlÆÅ‘ÿ7O‡ÓϽŽÒž—dŒyŒ#y¨8  àsª“¹Y+WÎÏFà­æ`õ?v~q^öŔ‚yE)‘ÏOI±¢n»„€Ï3šì|0öùd̨ ÁŽô–ˆ;OèÔzQ0%Kïó]ÄHT°ÄK0šÊ• Ж-ÊNc¯+ Z£s'ä£Õ³,Š€%$´mÕªY}RRÍÞ9—hI»ƒ”¡Prj½°e QÇiZtì'hµ-Ãh*UÊgyƒð¹m8¿÷µø¶0•êž%ÊQðã§€ðG ŸÛ øH á]Õé©{÷îâ¢xÁ‚âX®lÙ²„µgΜ)q«V­Jýúõß×µk××µrC})€€£n;½=ÞÑ£—´òåGz{5\*ÿ½+1¦/_¾¼6þ|íСCZ¶lÙ´óçÏ3^åµñãÇk»víÒ˜áh¿þú«6eʶcÇmÒ¤I{x”<Ù”ª9rDc¿æ’WŒS7,‡€Ï¿‚`œNŠF«Võ¥ìÙÕÅF\Øw´¸ fÿÑÌ~¨åeTH)zØäÉ“éÀ"álß¾fÏžÍv¯›"Á°Ÿnb?Ý„ðܹsÐዚ§f=Š-s¸-‚º°,–c4¾l~öˆ6?-KÖÙ˧r¸S—,Y’îܹ#˃¨L™2¼:—E$V¥ødÂû´råJ>f£®Ãyªˆ #–b486ÂW_°<¸è*-l}€Ù ÁËË‚)]þ@c;?óÚÏÏÆŽËGj4"¶¹PëÖ­E>|8Õ©S‡òæÍ+N½zõ¢å“(Qôc#f/]=pÏ3zŽ*…BÀ ,ÇhräHGþ|®ðe'`z¾Q#î>¡­ŸœåÓîŽQò åéù¶†zz\°£Hx›Û[–¹¯¾A?´ü‡‡?·&É3*F—Ž®Ò<_,Êh¼ãá COѾ¹—¨Þø|TuH.JšZó|‡‹zz\°$£Æ$šœUÒÈ ™Šª7¬ãÚÁU:Ï@À’ŒgÒ¤NŒºà­C)ÄËcôýp1ÄVÁ ÏEÀ’ŒÍïž"ÕÜ:î¹=D•L!à£qˆqÍâñCvu–w:×,T:…€W `YF;Íó|ïéßßoÑ–èæéÔê‡"^ÑYT!qEÀr¯ è@eÊ”Š‚‚RóËç)88›ï¿Ú¢µï °“¨ú¹¯(Rø:–•hаÏãmî{W#(($…œ×«˜Œ¯/U?K3šjÕ~™îJvËL~j9Iï„ê×÷°4£Dƒ÷žž} 9?xÿþsnmjØaþžw™6>íÖ|Uf oEÀÒŒ7,î\}ºø×]ñ›tnû-ª2(úy,ÞÚQT¹® `yFÇrî86{b~vš6 9IeB³QƒIùI½éJ×Ti} Ë3šŠóÒ¶mÇéñcÖw\ “넱´YL¹k)·».@©’ú N°wüøq™¯¾FÉ“Sxøif6w}­jQêÓ±cGš;wn”0õG!8µaïØ±cr°´î25! ¨žáöìÙC .tOf*…€“X^ur/]! ˆŠÑÄ4•D! pÅhœÃKÅV( ×1š+W®ÐÉ“'ãPUûIà;úï¿ÿ¦ü‘΋ºq/,,Œ6nÜH?üð/o×°ÈåñãÇâÐþ¨Íô¬üÌqÕ…€Uð:F³cÇZ´h‘[Ú>¥{ôè!Ìäúõë4nÜ8š1c†ä½sçNzóÍ7åÞ½{÷hùòåJ'Nœ ‡Ò Aƒä×Xgå7~üx:xð 1ººVX§VAeýúõ¼Óö:{ö¬ Ä—^z‰–-[&®V18áL~íÚµ4lØ0ÉnÔ¨QT¿~}Â@ÿî»ïNæ»uë&aX)ÁM’$ åÊ•KœÏëeÀ ØìÙ³%>?žÓ¥K‰IŒ^‡J9rä ©S§Š_éš5kRÿþýéwÞ¡«W¯Ês»wïNÔ¶m[Z±b¿ûô„>úè#0`•/_^¤, ùå—4räH[˜ñâÈ‘#vó[½z5­Y³†÷ël£?üP˜™î²U«Vôé§ŸÒÞ½{©P¡BòL”{É’%ìºw)Á/vË–-©Y³fìôn2é—   ªP¡-^¼X®ÇŒCiÓ¦5G]+<·K4·oßæ#2·Ð[o½EE‹% Ì÷Þ{ªU«&ƒ888˜]ÒþN·nÝ"ÄÅ5œÈOœ8Q!üyó ¬æÍ›Ó!CdpݼyÓ¤04Ü33»qㆨ?.\AY¼xqˆHF•!C¤¿m”Œ¥D‰”)S&qj?zôhúí·ßd@ƒé]»vMîÛÈ¥J•z¦ÚS~µk×& ÏÃɘ1#5jÔˆ~úé'a¨îMš4‰PÏY³f C1bMŸ>]˜6#˜ÂÀpÀ°?þøcöS X˪®ž„€Û *‡^¬X1*Y²¤üê×¼iÒ¤‘¼}ûv‚„Á ©c„ âPÌ ö‘‹/ #ïç*UªDà ¾«V­*èá8ù7n,’5¨AƒR\wíÚÕÆt¦L™"Œ ŽíÁØ,6Ä33l3ÔÏ"{ùA"Kœ81¥L™’à“¿½zõ&f™>}zú믿(kÖ¬ôÏ?ÿðÁé©…áÀv©æîÝ»"¹á¹`ZØ4Y @‚tlŠ)"ŒñYåR÷Ïxa4Ù²EžX±ƒÆL5jÔã*$\cð;V$ØB^ýuº|ù²¨>È„j& X=z$Ì ÿõpc˜Ïø ijÓ¦Mübe%êÛ·/ÍŸ?ŸOÜ; σúƒ9sæ íÛ·ï™ïcÊiLüý#}4¡ž0 ƒ™$OžœÚ´i#’Ñ©S§($$DTG=}lØêñÔ¯BÀ“ˆF[!…ìÚµK>¸†Juà•W^‘™Ò #Œ®ˆè°a˜ êì>˜ýÁ´@@ €°R…+âBZú2›í<°÷€ Ž€ µÔ­[W¤ ¨x`½{÷–Õ§víÚI|‘é”1¦ütf‰¸f“ƒ$Ó¡C>²";íß¿_ê uÏDYÂÃÃ…™Óªÿ oAàÙz€›kÉ£%DH P¥@0€¾üòËò[¹reÊ’%‹üïÓ§ÜǬ¯“žÒcæÓ“AІ hóæÍÂ8>ùä ›6m•.]Zì1¤Ï?ÿœ .,j ÃP_0 ÁH ÆAªÂ«0Ö"_܃ tøðaÛû^M›6•¼ñU½zua–PíåW°`AÉyêåGº&Mšˆ4·råJ±ÍÀV”/_>úꫯdE ’Ô£ï¿ÿÑíò3æi7’ T MySQL++ Reference Manual MySQL++: field_types.h File Reference
MySQL++  3.3.0
field_types.h File Reference

Declares a class to hold a list of SQL field type info. More...

#include "type_info.h"
#include <vector>

Go to the source code of this file.

Classes

class  mysqlpp::FieldTypes
 A vector of SQL field types. More...
 

Detailed Description

Declares a class to hold a list of SQL field type info.

mysql++-3.3.0/doc/html/refman/inherit_graph_13.png000644 000765 000024 00000003675 14042362133 022441 0ustar00tangentstaff000000 000000 ‰PNG  IHDR¹%‘kß3bKGDÿÿÿ ½§“rIDATxœí›}HS_ÇÏÜ‹»Œ½;]ù‚ËU†”ÿX‘³²¨$à X­…$£ K¬X/P„Sa ý–R­A–VA†C]ý¡Õ÷’f“m¶ÙÚÜv~\ºì·ÝÍ›ùÓýà|þ:çÙ9çyžs¾î>‡]iB€@P i©@üo@ZAPiA¤Uáþþþæææ¥ ‘hlÚ´éÌ™3D÷_ß+V«U¯×/zHˆDÄ`0ô÷÷‡[у>|¸Xñ —ýû÷GXP½‚  Ò ‚*H+ª ­ ¨’pZ™žž®­­õz½KÈÜ,m¨SSSµµµ>Ÿ/Ö€±±±K—.-àM%á´âñx´Zmœ-Hæ 5//ïõë×ÿ‘wŸÏg4C¡P¬UUUƒƒƒ«V­Z(ó×J  þ¤|>ßÌÌÌœSB¡Ð·oß"ŒÂééé8³ü~ÿ?¨—<Ô‡ßïŸsi..—+Žééé½½½†–`0èr¹ˆ®Íf«¬¬ÌÏÏ'‚7›Íõ-ÃxðàA„%“É”œœÜÐÐ’’‚aعsçÔj5†at:½ººB¨T*«ªªðÁ³³³R©T¯×C¯\¹’••Åãñ–/_ÞÛÛ‹xüø±X,f³Ù …B¥R?Þf³œN§Á`Ëåuuu‰„N§«TªŸ?’!„ Û·oÇ×$Ú‹*éFåççÓh´äääÛ·o“:Š•‹ÑhÌËËÃ0L \¼x1 ‘®?::ÊçóÝn·Édâr¹---B¡0))©¨¨hzzzË–-t:Ëå655A»»»%IZZ‹Åª©© ñOߥRn™Vv»½­­ PVV699ùòåK€Ýn×ét"‘Èï÷C_¼xÁãñ¼^¯Éd ….—Ëï÷_¿~½°°B8>>Îf³µZ­ßïïîîf0õõõÄôõõN:åóù¾~ý*“É®^½Jj„öôô466âíE 5Ö^I¥Òžž!©#Ò\Ün÷²eË._¾<33c6›e2YkkkœƒÀµ8pà€ÇãLKK»{÷.„põêÕB›Í†aXWW„w¤ÕjãŸ2\@­ŒŽŽBàùóçøGL&óíÛ·^¯—Çãá{tüøñÊÊJá—/_X,–F£…B¿~ý‚677K¥RbåÍ›7GkÅn·ãŸj4š 6—<ÔXZ!uDšK{{»X,v:Çãñ¨Õê’’’8ÙZÃíûöí»pá ÓJcccvv61Q­VÇŠ™ Z+ó¬W¤R)€Á`V®\‰i4Z0d³ÙJ¥R¯×G•——äry[[›N§KOO_·nݳgÏðô ‰5W¬Xá…Ï秤¤à파Œ©©©XÆ%5>¤ŽHsõxáÝ@  P(X,VAAANNέ[·pûµk×X,–\.—Éd …"¢^áp8»wïÎÊÊÂ0ìðáÃ@€Ôˆ?ƒ×¬YC<ñö¢…k¯NŸ>aX{{;©£X¹tttp8œÌÌL&“yôèQŸÏç ˆzOBxèСúúzV¯@5 ƒÁÈÉÉáñx'Nœ˜ÊpAj[Š´´´lÛ¶-Ü …†‡‡ß¿q t8###Á`°¢¢O§¯¯ÏçC-‹Ãáˆc\òPãàt:‰ƒ‰p'üFcµZç—Q¬H¦¦¦(ŽÖ Éû+‰Ëå¾qãFSSS¸F£åææF …B¡0΂™™™ÊB…Jú•~ìØ±;w ‚8Žp¢sáp8TÖ'É*`ýúõÔÇG³ðZ±X,555ÕÕÕeee4Q.—‹D"¢Ëår£s#5Λ… uÎ’‚Ôõ\þ¾dYh0¬lÖét*• ¢ÿ.Cü~/.ü§Ç„ûí‘° ­ ¨‚´‚  Ò ‚*$÷ N·øq  ›Í–‘‘n!ÑŠJ¥Z¬x R© ïÒÐ AT¯ ¨‚´‚  Ò ‚*H+ªüTÿ‰¿ôÉRIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadIndex__coll__graph.png000644 000765 000024 00000017044 14042362133 026570 0ustar00tangentstaff000000 000000 ‰PNG  IHDR”|× ®sRGB®ÎéÞIDATxí] œÍÕ?fƘÙe'B!["‘($#"TJý“5[aL…ˆh“R²…JQ–ì[²D”}ÏRYg4†qÿç{ô{~óæ½™÷Þ¼7ïýÞÜóù¼÷»¿û»ë¹çžsîïþî9YiÐð!æÓÙ4š€4!¤ š€Ò…>9ÌŒ‚ .жmÛÌQ:ì"êÔ©Cááá.¦vœlË–-téÒ%Ç$ö®»î¢Ûn»ÍÖšdtþüy*Uª”ül)t M lݺ•®\¹’nºvíÕªU‹"""Ò¬Ó þüóOºxñb2Ò"Ì#Duj ¢ÁôGW4ùëAT§O èŸþ¡ 6ºâããiõêÕÕ&_5fùò唘˜è«â¥\¯ÐöíÛé¹çžKÑÐ]»vÑo¼‘"Þ/½ôýüóÏ¢.Y²ÄMðYFßì+X¸p!%$$ØG{õÞmW‰ŽŽ¦ У>JgÏž¥öíÛÓÌ™3ièСtâÄ jذ!•.]šÆgkì€è›o¾‘û&MšÐþýû ¯ ž|òI*T¨5oޜΜ9CŸ}öµhÑ‚°Ã²`Ájܸ1%%%Ñ{ï½GEŠ¡ªU«J< úöÛo©|ùòT¶lYš8q¢”ýùçŸS§N¨J•*tûí·KÚ)S¦ÐÔ©S©uëÖÒ>6`íÚµT©R%Ê›7/uéÒ…° š5k–L†{ï½—Š+F“&M’´ò7yòdªP¡•,YRúdî&2ðئM™¸;vì «W¯RïÞ½©{÷î2&X†cÕXµj•ô}}æ™g¤ïn÷{a>|X:tȸux3fŒêܹ³úûï¿U‡¸bJW5kÖTqqqêÅ_TmÛ¶UüNCÝÿýê‘G‘r¸ãŠLÂC† Q¼$Tï¼óŽzâ‰'¨âNK¾Ë—/+xõÁ(~¥ fÏž­˜Ð¬Ú¹s§š7ožªX±¢bÄHÜâŋ՜9sTž¢¦M› 'ŠŠŠ"&ª_¿¾¤Ç(\¸0­\¹’²gÏNŒ)«hÑ¢6}‹‰R8¸Sß¾}…³á%_®\¹(K–,’þ¯¿þ"ž0Ô«W/¹g—zPþc=F5jÔ  êׯŸ<„?àÜöÿûŸp}ˆd¼32÷'ñ$§ÐÐÐdM†˜ƒT€ôøä“O'O?ý´¤§÷Üa?þ8M›6N:E5¢éÓ§Ûê½~ýºÄ3¸[o½ÕöÌQ€g‰ˆ*ˆ2¤5ˆ€@hsY –ãÇ â¿víÚQåÊ•%}îܹåŠ?(‘ {@~ Û´" À³\®aaaÒ>¹ €?ÿ÷ß/*sJ!r´Û ÌIRžÛ÷ Ïüæù<· 3šEA×4h1û“z!kCBBúÍܹsñ謿ýö›è¸ÇÂj¨Y³fÂy^{í5ºãŽ;hýúõòF·k×®2‹–.]J?üðƒèA̲E†\衇DÿBݺu£ž={’yÅÙIJh®X½zuiÚht)‹:b1@P8~øaãq@^ñ&:cŸ>}hݺuÂE0æ¾¹ÒxHÑž={d,€gOÀm;¼ï¾ûDqey*¬‰‰‰ee©( ¿þú«Md€HXŸ‘6B}šX¹¶¶cËâ»N{(ê«»({”‹[ …s„³ØØ–² ;zôG-·vøQªÖ¥p@´ûøã|ÔçÀë‚[Ë^ ž?t…ŠÕößjËò‚–¡ÃÏ?_ŸŽù›~üñ7gý·D|ŽBáI<@^PPXXÑšž“â]‘%(Ç jþëÔ¹ƒOÏÞÎgë—Z`8¬×Ä ÖŒá8sæ¢ìÒ/\Ø“O`ä7¢õÕ z,x+Ÿ^ml©ÍÕSÛâè¹i¯ qú'Vý™‚€€ÜgŸ­Ëˆ>O‹íð®]®7þôUZÚç ­‘öª‹-œÈ‘pW ‡éœ©÷*øãí¥¿êܸñ€ª^}(Ÿ‚MôW\ªwIï o0oÃGÉ%ŒS·†i–?üP½ÿþûbº…›+>ž­øƒwÅ6‚$-žÁü â`²'‰óçÏ/f\`ŽÇ[#™ ºu›®† [°}>²ú¼úªå.•tõƱq6~ Ø—´—íˆí"ÜÀî[ZbcZŠW(6¥ØÆ€놽$ÄÁÂ8ŽÎF¾¼Tl’ØkýÏ4"Ì`Û11Ó—_n” W#.P®ø0lÝÛǨޠvÃŽŒDàØ8¬ˆ°Q/9†Í†´Äʘq™ z‰á Ø5b›bq P`Ñ„9•]†kIÇÁK³Y—ôö=ÓPþü9غØÄïst†„±êZ>ð å*˜î\AB¦' (#GF³e÷ù|ªõŠ+8óJ| ¿vØQª; …2²*dzÂÀálYãÆiÔ(ï­NÒ"ˆí_œf±AÅëúçL{Zísõ¹& ÿ05p`sV¦·òß“®âÎãtø@~׬3T§Ÿë†H=®ÌÇ5ý‡à5ÚèWM@F?nÁ õ7žz…ÏTaÏ0Ø@“mÓ¦AìÊ3ý¦òvN?C«ß8Baÿ™dqR¥%£5¥2lP¨GŽ\Ä_ôý›JªÔólŸtŠêô¿1ôÔ[êÙSM@©à­B…"ìþ²*»ø\˜JªÔm}ŒîîPr O=¡EŸjJcàú÷oJK—î¢;§‘2åã£k.ÐÙý T¹cð~*¢ (å¸'‹É‘#?Ýœï~cû,4Y'7°á¼iÜ z`HIÛòN’Z:Z¿‰vqøZµúZµº‡ðù‡†›Ðt©†°É=žV­ÀÇfüh“0ÕVúá¡×N˜¹Qwfõ,÷Ë–­¸Šˆ(e¹v»ƒëÞ½{»1’JùÉ<5SOpšfô ð^•pÓîîÙy­D{ÿ™²$M@™rؽ×iM@ÞÃe¦,Éo:?±Cv›7o–cÂÞh[É ¤¤›î—P&Nƒ+vÓ•7ê±/ƒM¹È9®Â… Û?ʰûLÉ`Ñë¹çžó’[µjÅg˾£Ÿ~úÉöó•Õ0Ñv8è=vì˜×úáQAn­Ù¼”˜šjIP 6T-[¶T%J”P#FŒP|>\ñL£J§OŸV<ÃU||¼”3vìX«~þùgÅÖ+TÔ+¯¼"ÏŽ?®êׯ¯J•*¥:wî,šöï߯آ…Ó,¨÷Ì™3ìfž<Àùuô6|zôè"ÉQÛЈǾ}ûŠ{v& ÁDòÊ•+Ùùp;Þzy]ò£ÿ8 ¿zõjÂqæÅ‹K¼WÿÜ¡6o¥å¤ẔåÌ™Sf'PlIf8NHHˆä>|¸âSà0ì®\¬nõìÙSLº½ûî»êðáÃ’®R¥JŠ QJxÆŒbÙË̘ÕÉ“7ÌÉMžû¬C¥9"‚½ òéW\yàØrþ±’rx’°×ékÒÆŠ+Š%1XÐ`3t¶jŒv˜Ûf{ø_\–5 @™°ÎîÀ%ê÷6¤s¥“eË–%Öu„h¢££% ìâà…6uÀºÙ– °v$0Dž}ù+V¬UÞÄb 0Ò„A€]ˆØÚanÇßIï’çæ0"@Üæò~ñÅÄÜMÄ Ç”|hÏt CÜ¢NÖ{Ĭ ˆÖÆÖ¯_/Ïñç¨m扄4Mš4‘2±„d‡2leæŒù2žûœjña<’â¬*aü±Î#F'!.P¦!Î`Œ’))æ&ŠõÅz‹”Ƕol"Œ Pò@$Â’)s)QšÏž=« Âx ®Ê”)#åA´XŸÅÞ>̳<ÅþØ!C¤m?þø£â×¢´³i:µaÃUµjU) ?`Öu¤½¨9Ž´u8jì|ùò)”oˆ0àˆ SúÀœXíÞ˜s¢(Å:“ODXê#)U{ÿ/-rµF¬Î ÛÍÛë+ÌÒEß`%RÈœz‘Å€-4hÐ ±vzéÒ%[¼7¬Ô¦(nß¾}l‚ø²-ÞQÛðí5&-1Їô´7¨t °æÔ€GþRp©üÌé°B³æZÂÒ±ªqг =ÉüœgºùÖ«a^r§(Ï0–i~à¨m°ÚêõÁQ:oÆùå{ (•U²d>*W®Ü7hp•)SÀƒR­™EP:Ç݈SÆw‰í teÉìZ²ä°N£5¥s,ðUA°|Yà *4y‚5S(ÎÁôu©k.5¹„&È49ÃŒŽw š€\B“óDZrŽýÄ hÈ$é$Î0 E˜3Ìèx—0  È%4éDÎ0  Èft¼KÐäšt"gÐä 3.Æëe¼‹ˆÒÉc@/ããEÇj ¸„-Â\B“Nä š€œaFÇ»„M@.¡I'r†M@Î0£ã]€& —Ðä<‘^Æ;Ç~âô2Þ$é$Î0 E˜3̸S¼™2oϽ4âa†_ /i©b4Yj¸¯±~9™ ?YžØy<ô{*Èè2[*‹ Äæ¹Õ&ø!Û±c‡[yRZp+»g‰A@ìX„Ø3 gè\^ÇœìÁiž» E˜»Óé“a@P2tèw1  È]ŒéôÉ0à(Y üt–qqqâ)0½M`'uľ¾lÅÀ1¯½SÛC;wJ;àÖº{^v*e”‘Ïpk™2…ïc2-bá4{öl¯`˜è{K­ÔÁƒÓ{ï½çrÙ“&MoÒÈ;~üx·ó¹œÁ –ÁMöèÑ£Åõf7\foÙ²E\]·oß^ÈÁá»~´Àå7|‡‚°'cb~G¸ˆÛ¾};±'gqÌ Ç¹pn{p&v)é<(îÅÙ¿¼ø2Å’ÏÙÕ¦¸ï®S§Žø$E:¸øþôÓOÙ2Y9y ?¥È`7›¶&8\ïÙ³‡Mã•gÀp¤ âžMá’ÛØï½¸_¾|9[@+).ÍÁiå'Ep¨W¾|ybòâwuݺu4lØ0b7›4gÎb¯ÍnùW³o“£û€å@p·mÛ6ªQ£† Ìĉ Æ °ùµk׊—evó(áÒ¥KËÌg—àÄ.+ÙìîtéóG}D-[¶ê ¦ .ØpÁþL ˆÆsü¸Ã;\*&&†^zé%ñíŽLðáexoÆÕðjoÌ,¤7‚'iÀW_}%D2mÚ4I»`Á)yáÏÒö€¸+W®ˆÏyx’Þ´i“Ó|pOÍh?¼CÃ7}£Fˆ]~Kع´Çç|öíqv° ŽŒŒ¤æÍ›Ë€Âe7¸… £J•*‚XìE!ŒÁdg¹4nÜ8A ;¹¥óçÏ‹^A:³{l)pY·n]¹e?ïB8¸aîB, ”/‰•+W–žÃ#4Þ¡á®›ýŠ÷g8¶áDEEÑóÏ?/åÍ;—öîÝ+}'eÇ»T»vmÉb²ì±=õÔSâ™Þ9ˇ À…e£k_ìO–  .Ò}ËÐY¼­Æ¬ÁÀƒ˜àûÜ @ Ø3Üd# ¤¿ýöÛ„Ãõ÷‹/¾(ˆÏ“'mÃÓ‘¿Q³ ќśÛ`„Qf=8Jÿþý%ºÑ„ hÊ”)">¡\ÀÝ ð¸‡[qG€>€ì¹9ËâÂsˆZx[4Ü ƒˆÆUn¼üДV_Á5à×?„ác466–ž|òIaã p¬n€døUwäx÷ðáÃÂå K@‘5f+Ä6J¡¿@4@ßNÑÀ÷f@kÖ¬‘8×æÍ›©k×®Ôºukbwæ2Ð5kÖ½ ¢~åQ¿+à,88O‡¨hÑ¢ÂEŸ¡Aü‚sAû’Oi_Ôàƒ2Ái˜ÅPL;PÁ ØŸ:á Ê-î¡o0S 0ÊA~ úˆy ާŸ~Zt&x‰Fú+VÈ~»½¨zõêÂ)A˜ 4|ð îÏÌM›6¥Q£F …˜Yµjµk׎°ï„wÁàm1®RЈÃù僘çe·ÝÒV´íË/¿ü€ÃA?š:uªpBsÙé ûe33:‰7ö°âhÑ¢…M‡BNœ8A9sæîc Äî0cÆ MÐ/à8XMa¶B€ðPz1‹Á9ÂÃÃ…äà„#Ià: èr»+bœåC¿¡ä»[ºdì…?~Ü­Z’=Ä,‡h§1ظ=ú„}¼q"ÁÏÜy!hŸ×¸7ë; lŒœqïêÕY>GývµLOÓYš€ðî§@÷¬ÂC$™¿ Äë€#F¤ÀŸ¡ˆ¦x #’aÀÒä.ñ çöœ:ˆyµe`œMCÚ°ô*,íî龯€_”h,©ƒå‹D_PF–ïɉ~! ŒDŠ®Ë·Ð"Ì·ø úÒ5ýû¶ƒš€|‹ß /ýÿo¼:-n_ÏIEND®B`‚mysql++-3.3.0/doc/html/refman/comparable_8h.html000644 000765 000024 00000010172 14042362132 022164 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: comparable.h File Reference
MySQL++  3.3.0
comparable.h File Reference

Declares the Comparable<T> mixin. More...

Go to the source code of this file.

Classes

class  mysqlpp::Comparable< T >
 Mix-in that gives its subclass a full set of comparison operators. More...
 

Detailed Description

Declares the Comparable<T> mixin.

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ResultBase-members.html000644 000765 000024 00000027744 14042362132 026312 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::ResultBase Member List

This is the complete list of members for mysqlpp::ResultBase, including all inherited members.

copy(const ResultBase &other)mysqlpp::ResultBaseprotected
current_field_mysqlpp::ResultBasemutableprotected
disable_exceptions() constmysqlpp::OptionalExceptionsinline
driver_mysqlpp::ResultBaseprotected
enable_exceptions() constmysqlpp::OptionalExceptionsinline
fetch_field() constmysqlpp::ResultBaseinline
fetch_field(Fields::size_type i) constmysqlpp::ResultBaseinline
field(unsigned int i) constmysqlpp::ResultBaseinline
field_name(int i) constmysqlpp::ResultBaseinline
field_names() constmysqlpp::ResultBaseinline
field_num(const std::string &) constmysqlpp::ResultBase
field_type(int i) constmysqlpp::ResultBaseinline
field_types() constmysqlpp::ResultBaseinline
fields() constmysqlpp::ResultBaseinline
fields_mysqlpp::ResultBaseprotected
names_mysqlpp::ResultBaseprotected
num_fields() constmysqlpp::ResultBaseinline
OptionalExceptions(bool e=true)mysqlpp::OptionalExceptionsinline
ResultBase()mysqlpp::ResultBaseinlineprotected
ResultBase(MYSQL_RES *result, DBDriver *dbd, bool te=true)mysqlpp::ResultBaseprotected
ResultBase(const ResultBase &other)mysqlpp::ResultBaseinlineprotected
set_exceptions(bool e) constmysqlpp::OptionalExceptionsinlineprotected
table() constmysqlpp::ResultBaseinline
throw_exceptions() constmysqlpp::OptionalExceptionsinline
types_mysqlpp::ResultBaseprotected
~OptionalExceptions()mysqlpp::OptionalExceptionsinlinevirtual
~ResultBase()mysqlpp::ResultBaseinlinevirtual
mysql++-3.3.0/doc/html/refman/index.html000644 000765 000024 00000014666 14042362132 020603 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: MySQL++ Reference Manual
MySQL++  3.3.0
MySQL++ Reference Manual

Getting Started

The best place to get started is the user manual. It provides a guide to the example programs and more.

Major Classes

In MySQL++, the main user-facing classes are mysqlpp::Connection, mysqlpp::Query, mysqlpp::Row, mysqlpp::StoreQueryResult, and mysqlpp::UseQueryResult.

In addition, MySQL++ has a mechanism called Specialized SQL Structures (SSQLS), which allow you to create C++ structures that parallel the definition of the tables in your database schema. These let you manipulate the data in your database using native C++ data structures. Programs using this feature often include very little SQL code, because MySQL++ can generate most of what you need automatically when using SSQLSes. There is a whole chapter in the user manual on how to use this feature of the library, plus a section in the user manual's tutorial chapter to introduce it. It's possible to use MySQL++ effectively without using SSQLS, but it sure makes some things a lot easier.

Major Files

The only two header files your program ever needs to include are mysql++.h, and optionally custom.h. (The latter implements the SSQLS mechanism.) All of the other files are used within the library only.

If You Have Questions...

If you want to email someone to ask questions about this library, we greatly prefer that you send mail to the MySQL++ mailing list, which you can subscribe to here: http://lists.mysql.com/plusplus

That mailing list is archived, so if you have questions, do a search to see if the question has been asked before.

You may find people's individual email addresses in various files within the MySQL++ distribution. Please do not send mail to them unless you are sending something that is inherently personal. Questions that are about MySQL++ usage may well be ignored if you send them to our personal email accounts. Those of us still active in MySQL++ development monitor the mailing list, so you aren't getting any extra "coverage" by sending messages to those addresses in addition to the mailing list.

Licensing

MySQL++ is licensed under the GNU Lesser General Public License, which you should have received with the distribution package in a file called "LGPL" or "LICENSE". You can also view it here: http://www.gnu.org/licenses/lgpl.html or receive a copy by writing to Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

mysql++-3.3.0/doc/html/refman/functions_func_h.html000644 000765 000024 00000006333 14042362132 023016 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
MySQL++  3.3.0
 

- h -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html000644 000765 000024 00000072646 14042362132 027417 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::ssqlsxlat::CommandLine Class Reference
MySQL++  3.3.0
mysqlpp::ssqlsxlat::CommandLine Class Reference

Command line parser for MySQL++'s ssqlsxlat tool. More...

#include <cmdline.h>

Inheritance diagram for mysqlpp::ssqlsxlat::CommandLine:
Collaboration diagram for mysqlpp::ssqlsxlat::CommandLine:

Public Types

enum  SourceSink { ss_unknown , ss_ssqls1 , ss_ssqls2 , ss_table }
 Types of inputs that ssqlsxlat will accept. More...
 
- Public Types inherited from mysqlpp::CommandLineBase
typedef std::vector< std::string > ArgumentList
 Type for a list of arguments. More...
 
typedef ArgumentList::const_iterator ArgumentListIt
 Iterator into ArgumentList.
 

Public Member Functions

 CommandLine (int argc, char *const argv[])
 Constructor. More...
 
void print_usage () const
 Show a message explaining the program's proper usage.
 
const char * input () const
 Return the name of the input source. More...
 
SourceSink input_source () const
 The input source type.
 
SourceSink output_sink () const
 The output sink (destination) type.
 
const char * output () const
 The base name of the output file.
 
const char * pass () const
 DB password, when input type is is_table.
 
const char * server () const
 DB server name, when input type is is_table.
 
const char * user () const
 DB user name, when input type is is_table.
 
- Public Member Functions inherited from mysqlpp::CommandLineBase
const ArgumentListextra_args () const
 Get reference to list of command line arguments past the last flag and its possible argument. More...
 
 operator void * () const
 Return truthy value if command line was parsed successfully.
 

Additional Inherited Members

- Protected Member Functions inherited from mysqlpp::CommandLineBase
 CommandLineBase (int argc, char *const argv[], const char *opts)
 Hidden ctor to prevent instantiation. More...
 
virtual ~CommandLineBase ()
 Hidden dtor to prevent instantiation.
 
void finish_parse ()
 If object is still marked as "successful", save non-option arguments to extra_args_ list. Subclass ctor should call this after the parse_next() loop gets EOF.
 
const char * option_argument () const
 Accessor for getopt()'s optarg global.
 
int option_index () const
 Accessor for getopt()'s optind global.
 
void parse_error (const char *message=0)
 Called by a subclass when encountering a command line parsing error. More...
 
int parse_next () const
 Wrapper for getopt()
 
const char * program_name () const
 Get the file name of the program's executable.
 
bool successful () const
 Returns true if nothing has gone wrong since calling the ctor.
 

Detailed Description

Command line parser for MySQL++'s ssqlsxlat tool.

Member Enumeration Documentation

◆ SourceSink

Types of inputs that ssqlsxlat will accept.

Public types

Enumerator
ss_unknown 

no known input type given yet

ss_ssqls1 

a C++ file containing an SSQLS v1 declaration

ss_ssqls2 

an SSQLS v2 file

ss_table 

an existing DB table schema

Constructor & Destructor Documentation

◆ CommandLine()

Member Function Documentation

◆ input()

const char* mysqlpp::ssqlsxlat::CommandLine::input ( ) const
inline

Return the name of the input source.

This can be a file name, a table name, etc. Call input_source() to determine the proper interpretation.


The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ReadTimeoutOption__inherit__graph.png000644 000765 000024 00000014053 14042362133 031233 0ustar00tangentstaff000000 000000 ‰PNG  IHDRœ‰Ù£QesRGB®ÎéåIDATxí] ˜MÕ_”BïG„AIÞ’gÞ’¼“òÈ#BLjDyT’/DßG…Æ#Iò*E1ÂÈ 24yÅÈ£AÆŒó_¿eöýŸ{ç÷3×=s÷ú¾{ï9û¹ÎZ¿½ÖÞûœ{V&ƒ‰4i øFq™}ÓîEKà¦4à4|* 8ŸŠ[wæ€3f eÊ”IÒQsæÌñ ´ûàöîÝKK–,!¬_ô'íe0mÚ4Ú¶m›œ_H@3áS ø……óéëÎîª4àîªø¯s ¸doذ®]»–f8{ö,-]º”&OžL+W®¤Ë—/{Üö?þH —·SA ¸dm½ð —&ºûþûï©F²ºtéMŸ>ªV­J{öìIµý™3g&÷ ô¿ÿþKµ¬­3pkënSûöí ^¥Þ’!C†½zõ2zè!£AƒÆ„ Œ"EеjÕ2Μ9c4oÞÜØ´i“´±yóf£U«VÈ@Û>ø Ñ¬Y3ãܹs[£GFÁ‚—^zɨ\¹²ÔA[Ç7úõëgôîÝÛ(V¬˜Q­Z5#&&Fòüq£oß¾FþüùvíÚl±$½I“&ÆÁƒ7nÜ0 *d|óÍ7’¯¾ÆŽk ì®]»Œ6mÚO=õ”Q @cÔ¨QÆþýû…Ǽyó 6£aÆÂû‰'ŒÆ¹rå’4ðªS§Žy„„„ˆ,Ο?¯ºqûË@–ër›éÛij¶±p,|ŠŽŽ7«1þ|Z³f eÉ’…V¬XAåÊ•£eË–ÉàÇ/ÎçÎK÷ß?ýñÇÄ £¯¿þZê°Òé‡~4ä™éСCK[¶l¡ºuëÒ”)S${÷îÝ”;wnÚ¹s'Á]®^½ZÒkÖ¬IÙ³g—OõêÕéÔ©StòäIjÔ¨‘¹Yª_¿>aû'>>^ø0`­_¿^¬Ú<@ ~‚•e J¹ëׯKß JŠŠŠ’¾?ùäi“]¹r…6nÜH<ˆäšœ:óãÛ2ìܹ3±E¢*UªPÇŽ©bŊ⺠à:зß~+¢Æ/[6bk(Ê4i <˜ØBÒºuë¨k×®Jƒ r«(Ÿ­”ä+`¡ Ú@zÏž=€Ã¦5[K*\¸0=šeÛÕ%þý÷ß$ý=üðÃÄVNxhÙ²¥ðÐfË–ÍQÑwxx8¡<úQ ›äH/S¦ ±5¤¿þúKڵ×­WªT)‘iæÌ™)OžÖÎaÅ âyuêÔÉQéIII´jÕ*ªP¡‚¤GFFÊ ®Ç÷Üs¸F¸â .H™ßÿ/^Lø€ºwïN˜ÁÝÂJŽ7Nxá¸MX`l•`/^œ{ì1êÖ­Õ«WO±#. }ï½÷dÕŠÕ¯+™¯ß5Ï/Ï}»Hqß›'«T÷5Sy¢ïXuª¶<² ÄêÑLX"ݪ9YV…¼ 0Øõ<sä±ë’î±cÇi·;Àêqß¾}[.GQ¶‚ÆOU&/d¤ouîí¯?­RmoáÔ(†Û?~¼X3•†_LÆË—/oN’cLþ]'öæBjžgNÃܱhÑ¢æ¤[c®fž¯™ cþè:‡Ä¢Áañ“Q(Ãîó-5™öDAP¸ë wÜ)Û˜ŸÝ)aCX­¦ï´-;ÖÏ0€Ë™3§%ù«U ªÌ›¬êÐé×µœS¦'XU¦fõ¼hƶE3Ì*Õ¶0ÆýÂÂaň\»PppQ^Ý&òÚ)»°ìXUßm†3aÅs·™°[ÿ¡¡#ø¶X¾µn7Öï6¿úo‚Þj &æ4?ÆtŽ‹ãÍ[÷w¼m3Êë9œ—Ú^²d;ßbº!+ÖåË£½¬­‹kÀy‰Å‹·ñ-¨$¾o›@_|±ÅËÚº¸œˆŽ>Êî4ÑQãĉótäHÚ<´éh4ƒhÀy¡àE‹¢Ø²ýÿ;?ÓÁÏçýêE º¨œ‡à[±„9[RÒ G X»… ýãÿž¦üü@ÎCEFä’)w.\¸Bûöô°]LÎC DDláljRþ“êúõD~Ö-ÊÃVt1½ñë° R¬XåÈ‘Už½S{åx ÏÉÅÇ_ãÿ1Lö ¥€/§ç!bcÏòfï?R:"b«€¯uëÊr^ºt~~l=·‡-t±8¿¸—j”*•ðEFÆð*²ó?±ÊÚu¿âQÏáüJŸ 8 :ÆÜ-sæ›ÿ£°P= «hÀYP? Ø—Óä½4༗™®qЀ³ <¸Sõ—B ÕºŠœõê½8 ÕºŠ\@«ß÷¯ç{™tp­~ß_¼œïeÐ=jÀ´ú}ñpd®·E,-¹ŠœÙém BÓ€³.4]Óº´…³.;]Ó‚4à,Ívo´péUE΂dq[KßÚ² 8®¢gMnº–E hÀYœÞ± ´ä*pd§·E,MκÐtMëÐ΂ìô,-¹ŠœÙéÿ4Xšœu¡éšw ­~Kò»OPPa#((Äïø‚¬8¦ßê“óïx©€Æ¡ƒd“•™õ›ßk׎ó‹ Où ?J6Zwøðá;0?é_UÏáÒ_ƺ“4àLÂЇé/ ¸ô—±îÁ$Û¿= Án¿ aºï!"áO?ýD‹…uëÖ•_OxÙµk—#¦ª'å3BÛ[¸éÓ§ï¦FP*bݧ9r„jÕªE“&M’À+V¬ ÚµkKôçÔú3ó³uëÖÑ S«—QÒm8¥ˆØØXjÞ¼9µmÛV¬Fÿþý%«k×®üâç…4zôh ù—!!!ÔªU+ ŽBˆ"HѨpà111nË"Ô%ê!.ØØ±ciøðáÔ AB¤æ1cÆÐ‚ $ÚtïÞ½y{ªV­*aÇí^¹r…Ìü`E‰Ò=Þ·o_Ê›7¯„6߸q£ðÎ|ièСUºaÃ†Žæ’iÓ¯ 8(xíÚµ¸eË–qÐŽ/1N'L˜@•*U¢aÆь3D¹ëׯ—À½ƒ%"Ä7bÊ?óÌ3ôÕW_ 0Ü•MHHx÷p={ö¤;vPãÆT_§N üË‘£i÷îÝ„på;wî”0ä«W¯vâ€ãÔ´}ûvqÍŸ>bÄiÀHÀsçÎÑš5kœú²ãI†„Øñ¼ñIPz™2eÄ]!þi–,Y`py°n6l ’%KÒ/¿ü"ÊFÜújÕª‰•˜@îÊ"š8q"¿bµ‡@JLUÀ€Å Bq¨@83?R€¿c`Œ9’}¨{÷îôÙgŸÉœhùò儉9&ý¬ ¬¬‰»²èËü^8,@°R¥JÈÙ³geq0~üxa V*,,Œ_«/®xöìÙân?Š÷gŸ}–£Ü,—ÁW þ\)Ãüq‡]ŒßRùòå ¾—zÇü±;3x¿ÌÑÏ‘ žŒË9¯yóæ(súôiƒ]›qõêU·e‰.(ÏVÎ``9å0p¥]v™Né®ü¨L”c+©N½þå{©ïz]χüûæ½ë(·zŽECpp°£:Üé}÷Ý'ç… 7ˆI9Òá&Ís:sYG.(w ëèJ™3g¦¢E‹:%»ò£2QNÍÙTZFûÍÐ.ÕeAùض8tè¸=, ÒŠ°-£æriÕ¦ÝÛ xÀ)Â’¥5™Wžiݶ]Û ˆUª]•“ùök —?~™ù›àƒƒ‹ò~^"%$œò7ÖdãÛï˜21¤ƒ»™„áéahèÞ¨ÍÁ›¼ážVÑånJ N»T/¡sšoÌ_çÈ‚q|óßý/› ¨âp^ª{É’í|õ†¬>’\“wЀóN^ü¬Û6¾[DW¯&ð)[¼¬­‹kÀyèè£ìN5Nœ8OGŽÄ9ÎõÁí% w{9J,ZÅ–íæƒ7 ZºôWG¾>¸½4àn/#)7&aΖ”tó±!$ÂÚ-\¸ÍÃt1H@ÎCDFä’ÎÏ×¡ê… WøÏÚ'=lEÓ€ó[èòå„¥¯_Oä…DTŠtà^zã×½\œR± R¬XåÈ‘Už‡ãÇy$Ϩᙷøøktòäd§:úÄ­â4àÜÊ%eblìYÞìýG2""¶ øZ·®,ç¥KççGÊs§¬¤S\%ç×÷R]¹½›ç¥Jå#|@‘‘1”'Ovª_¿ìÝdÉ–}ë9œ-Õf_¦5à,ès7¼É\“÷Ѐó^fòWCìËiò^pÞËL׸ hÀYž bAhÉU4à,ÈîTíÅY¨ÐU4àZý¾¿x 8ßË< {Ô€ hõûþâ5à|/ó€îQ. Õïû‹×€³ s½-bAhÉU4à,ÈNo‹Xšœu¡éšÖ% -œuÙéš$ gAhæm”®ýN«hÀY nké[[ÇU4à¬ÉMײ( 8 ‚ÓÛ"„–\E΂ìô¶ˆ¡iÀYš®i]ÚÂYþOƒ¡%WÑ€³ ;¬Põ,Ž«hÀY“›®eUÿüsZ»v-¿ë- <˜BCCì3gÎ$Dw®U« :T¢8Ož<™¶oßNU«V•·^–+WŽð-Y²„ºté"¡Ã²«}ÐÀùr¥Œ5kÖK¾kÔ¨!ÀÀu!d9€ŠˆÔ¯¿þº„ÐܳgÈ  yòÉ'…È»[·nü^á Ð7kÖL¢Yoݺ•Þzë-â@Ã4þ|'ïþ—-[&^ÃUž•Š>] @Šå '‰Ö÷ß_±Ã#@Æ›þÑG‰wà ÉÂÀì-ymá×–ã•W^‘ÀkÓ§O§×^{8±X0¸nÝ:á– á¼1ê!”9sæH|wĉG;sçÎ¥#FPÛ¶mE™pŠ`A°¤Fèð—_~™f̘!Y ‚Øâ‚ç}IXT`]ó1”~f|Ê”)ò[¥J•(&&†8‚2A°PêÛo¿-@‚E?³fÍÀCùÉhìØ±"ð[¹(XŽì,üðC±V»ví¢K—.‰UE>êœ8q‚Tò0`€€±xñâN`CÙÊ•+‹ëw'Ï"EŠPË–-©I“&20EHJJ"胺͑#‡è€Ã€ƒž!ÈóܹsèÂ+òph~JÃÅàWƒjÕª‰0a!Ìzõê‰ÕÁ9.Ö +V¬(m î<.Þ•pq(6 ,ăµoßžƒ«=HÍ›7 # {‡jÞg>†•€«/Ä °fË–M¬t¾|ù€Â9Šö'L˜ ÀƒÕ:þ¼|0·5áèÔ¹sgtç1µiÓF,!ú‚7(Q¢„Dˆ†¬à) XðU°`A~ú>D$:t«‡:¨;Â\†qMx×°;wˆkÀ ¹Ê²Adl€í(‚qxî¹ç„ÏîÝ»;ú‡lÚ´©èÖñÌ™3ªŠÇ¿–W¨P!éáµsæÌéÔ„W%ã°½-0Ëå Üš"ó«4s8nŒjX4JG&è·"€Ö .ÊÄÂÂB´f¸5|°á ác0@Áà BÁ:`!8oeá¤éëV²¼û.ý£]€ rœ!VÇLð®„~`¡À«™`1hAJn86ËçŠÐxÀÔdî_…mG:d‡ÜÿÈ‘#ewîB¯<è¿VmæCc`²=ÿüó"',l™üÁ-ã?Ì1/†ŒÀƒë¢à©P¡‚X$Ìã 3æ’˜SÂ:ƒR“'ê+Â`B‘‘‘’„6pžVtÓÖ¦QkjäCApQ˜ ªT©BŸ~ú© ëÔ©“Œ:÷Å_” ©yô¨v0Ò0I¾xñ¢Ì‘ecŽpÀ`UÂïÔ©SEaêX2\¾0Ê±Šƒ[þî»ïdÕŠö»³ë€òÁ{Ÿ>}¤L°¨ÁlÆ ²‚E¿Óm°„kiÕª?žV®\)×øî»ïJ:x pÁCá°ä˜‹Â bú¡@Aˆy(æÇÌø ]ÈeÐ>Ü6È<¡ƒqãÆ9mã´k×Næ•X€ÀMc.鎔žÜ奖æôÚ|0‹•ÊÞKÅÈ„åÀÄV„Që7eV” á`…‰…&ü ŒT\,€ò 5 Àu˜]²T²ð% }åBÐÒ $X@ð§òàŽÑ'¦iIX`Nìh׎y^HHˆ“ ‡;5»\T€E4»KðI¾rç(“š<‘‡Å¦4¸^3/ÌÛÔМçÉ1¦Q 4½&—Oû×æÃ Á"`•¥À†Î ¤’%K¦àS)3EFr‚»|Œ¬´º€q%sš¹(?=HÍÍmcÀ⺒+ØoÎÍüãÜLæëQéju¯ÎÕ¯;¾TžÕß4u©`KsLÎÕ$ÛSư:TV uà:Üö”\G¢»r:ÍY©ÉÓ¹TúŸ¥9à`š½.Óu”¦6êÜÐô“ý{HMž¾¾²´Œøš{ÝŸý$À+ñX?ÅêÁS¬¬e-'eàúįÓ*Õ~ÃEsl3 Äi—j3Ù] 8»kÐfükÀÙLavg÷ÞgÔ]”])IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SetCharsetNameOption__inherit__graph.png000644 000765 000024 00000014754 14042362133 031667 0ustar00tangentstaff000000 000000 ‰PNG  IHDR­‰^’¸csRGB®Îé¦IDATxí]tE¾½÷"R¥wép蔢ˆÒ›ô&ðPP‘(  ÒŒ‚´@B9”P¥£é¤H¨IöŸïâ<÷=6ñ=²+oóæžó²³³3wf¾ùæÎy›7~šR¢°‘‰ìSWUS…Àsil‡€"­íºLUØßܾ}›2fÌh‡ªÚºŽ÷îÝ£Ô©S{}lCÚ ÐÉ“'½P»V0gΜtÿþ}[V¹ve™×[‘Ö‡;ß®MW¤µkÏùp½máÓzCÿ\¾|™ÂÃéX±b¦Ug×®]tàÀ ¤ *¸­;22’öïßOÕªU3­.vR¤,­›½µnÝ:š2eŠ›©ãNöìÙ3jÙ²%õéÓ‡.\¸ÀÄý AƒâÌX¾|yŠŽŽæÓúõëãL›&Òž={–j×®M-Z´ |˜š7oNuëÖ¥¬Y³Ò˜1cøÒtìØ‘J–,Iyóæ¥Õ«WsüâÅ‹iäÈ‘>|8ýòË/ôÃ?0Y÷íÛG&L éÓ§ÓÞ½{iîܹëÛ³gOêÖ­× øÔ©SÔ»woBúÆÓãÇéèÑ£¬sÆŒ”+W.Ê‘#}óÍ7·hÑ"êܹ3•+Wް+€ò”àÝo—'NhbË+Îj;v ïPh¢5ÑI–Q[¾|¹&:N»uë––,Y2MìùjwîÜÑÄ”¬]¹rEK™2¥vúôimÛ¶mZÁ‚¹ŒÒ¥KkS§NÕŽ9¢ bjbh³gÏÖºté¢mß¾]óóóÓV¬X¡ âh™2eÒ®_¿®7NËœ9³öçŸj‚˜šp#XWXX˜&‡Åáü]»vÕ† òB{jÕª¥Íš5KƒMë7pà@MVÛQZ¢D‰´7nhhk¡B…4±¯ÊeŠÁ§-]ºTË–-›öàÁÆ }úôÚž={41`íz¡@]„ ½véÒ%]Œ×#”O›*U*„ ѱ”=Âúo cbb(**Š“¡ýà!l&‡ÊŸEÚëø¢XÀàƒ0,p›6mx´cǶаÈ=bò‚ðo]ä‚5ÇמÂ] Ò‚8ð=S¤HAeÊ”!ì:HÿS¸$\êС9s†àïB@ª±cDz]±bEŽÛ¼y3_W®\Éuäñ3‡XX¤Ã7Y(g÷îÝì×Ëç õš ÜƒØ: "üOþ*[O"üP¶Ð¸ÂÀ"«x¸PŠÔƒ) $l=µjÕŠó ˆƒéÓ7v~É’%$üe¾51‚IÕ¯_?ÂTÓ?¬)Ü”U«VÉ¢˜ÐÈBJ«\¶lYjذ!Ï Hˆd5Ø: _–h‡«Èz»ÆÛöÞkÝm]ÅÜYˆé’ÇÖ‰QúDXˆa¦,hîÞ½« 6ŒbòbUªTÑ„5昌ÇBlÔ¨Q¼àC^wDl_ihrzÁBlãÆ¼0ÖÞñHXY^h9"þ`‘éªÃ5Ϳݫ…˜—aXGLÛX¤è>¦«HŸÐ5^Þ‹ÂÇU¤w7ºÇB–96Áv•^àŸÕË“2õúìöÃôöÊãí.ìOÆ÷-/ø“ØÏôDà€\øÖ ?7""±P’º>|ÈAìZÄWà+CëB2¾zãÊŸØu Ä•ç=‹ô ŸV‚ë)a‘–Y/°vre¯7ƒ¬R_š4idP] ð©Ýƒö«("` K Ÿ _eÚeìçç/܉"bëì¨ØÎŠ¶ -ìð_ Ó–¤…ëm—Ϻu‡„ Q›ÂÂŽÛ¦ÎÀV‘Ö6öÅüŠíf¥‹ýf¾r¥Ñ–ÖNýôèÑSñÍØŸlaCB~ß`ÙÇ=° ζpì&êzD|ߟ˜«œ8qbڴ鸪o‹º*ÒšÜM î_ï>a­)(h—É%(uŠ´&r <ü¡ø/„ NÃÂNÒÇOâÔMüP¤~N¹ƒƒ‹o±œ! H,\†?œÒ©›ø!àŒpütù|îùów¼`U#"žÐ‚;|3P¤5 Ík×îÑéÓ7 µóëþýû´~ýz9qþüyªT©Mž<™ÂÃÃiÕªUT¹reZ¼xq¬º@ÔÎ;ósœ~éÒ¥XÓúü±ºLR²dIMìÄÙ–š5kj'Nt¤„ÔA´^½záEB­~ýúÚÒ¥Kµ.]ºh‚ÄZPP&HÎéßzë-mÀ€ZÖ¬Y5è¹{÷®öäÉN›+W.­GZ­Zµ8mÛ¶m9­£  ÓR¥J¥ ¬•-[VëÞ½»–9sf­U«Vš°èZ‘"E´ÀÀ@môèÑÚСCµÐÐPíéÓ§Z·nÝ´ôéÓóó­[·ÆZ}Y®a±{ ‰Aäm×ûŸ²´ýû÷§!C†P¹råèÿû RÅŠiüøñâ§9‰=°eœ?>[½‚ òôËvò$ŽVz(λ £Û·oSHH[ácǎѺuë(**Š] ¤…KQ§N"HOp.^¼H‡¦téÒñÝÍ›7iíÚµ4aÂ*^¼8×–Z Ú¸q#íÝ»—Ý ì³Ž9’õÕÅQ|Š´M›6%LXBqèVÖ™¶mÛFÂò _TKH)R¤pPõǧ °¨<} kHÂÒo¼Ád“‰A`T/ ú³gÏ( €£ûõëÇ>n§N˜´iÒ¤g6$q*dÆsyÔ¨Q|;Ü£ºèËJèaŸ!-üÕ®]»RÞ¼yiðàÁl1GŒA3gÎ|¡Å´ýB"R¦LÉñþþþüÅÁ©S§(Y²d—1cFñ›´1Η/mذÃò,4AΜ99*mÚ´|.Áw6Xeè•‚Á Ëp­‹Lã WŸ!-ΩÅ Óð£G¸oA¸R` =‘B… Qpp0IøÂ]°ŽË–-£#GްºФI“xРÍ›7óÂoÍš5T´hQŽs-¿^½z¬nÓ¦MìÎ`×Ã×åŸó$† Æ»báD°†X¥öÙgÜr±8¢† rÓo\"¿Ó‡|çÎÞšúöÛoyÚF¾6mÚX˜Q™2e(Ož<¼}•?~öñÖrРAlõÏ;Gðµá?Ÿ9s†ÄB IXZ¶lI7nÜàtpYPž«Èº¸Æ'è{».!]ëíÎîÌ#¦]^ýË{\…•Ó„EÔGýk«y|°ÊÇj; z]ÖV‹ˆˆÐGk½à<¨‡^ » ®‚tžÖM¯#¡íøÜ— °@°´®?Uú‰®Ïb»ÇX”Ájc•¿hÑ"§¤ðwåÔïô@ÜÀ-q­bFâšÎ(/Åù$iÍê`ø´X,8q‚§p±Ïê–j¼‘&}[·2¨DN(Ò:Ááù È'¾ð(£~GÀ£Œ*1#àS 1Õç ci±Tºti¯è??ñ"N±µvTìç:¿Ïðª*ˆ/TЍ-èÉ ŽÒÌ/Èô¤*U XP‚O«ŒTîý´›µ.Zô›Ú•JEZ“9ðèÑSñ^ßü5oHÈïâ}ïpLnæ+U§Hk2ü¡¡GÈßÿùWµØYØ´é¸É%(uŠ´&s`áÂù„µFD<¦  ]&— Ô)ÒšÈðð‡â]ZçÕ Ã{¸OM,E©R¤5‘ÁÁ‡Å;±Î$¦ÐÐ?L,E©rFXá/æÏßñ‚Uˆx"þ#bG¼ôªÌÎ(Ò:ãñÒw׮ݣӧoæ?xð’ø÷™‡†ÏT¤ç(ÒzŽ™aŽ;O±k:u á“2eR¾"üìY”xw÷Œa>é9ê1Ï1‹5Ç–-'øYtt uì8›~ü±ß'Jä'~;¡`¬ùÔˆL0ïxÔl‹רQˆ5GEň÷eýHÞ[TœÏªUîÏv½}®HkAß©Ÿ¯·TJEZfÕÏ×›…¤±EZc\T¬# HkAç(÷ÀPu*iu`˜TîYHëQ¤5ÆEÅz1Š´^Ü9ªjÆ(Òã¢b½EZ/îU5ciqQ±^Œ€"­£¶¼,U§R‘V†YAµåe’ÆziqQ±^Œ€"­wŽªš1Š´Æ¸Ä+>->J¬A@‘Ö\áÓâ£Äi­ÁUiµEZ ÀU[^€ªS©H«ì Úò2 Ic=Š´Æ¸¨X/F@‘Ö‚ÎQî êT*ÒêÀ0+¨Ü³4Ö£HkŒ‹Šõfô'ûmÙ²»‹êO ÄÑŸZŠeŽñÄQr'Nê$Âéfiéý÷ß§?üЛǙª›!ðÝwß‘ -U®\ÙÑjå8 P»  Hk—žRõt  Hë€B삀בöÌ™3tûömÓðÇÑÓöíÛiãÆtïÞ=ô"/ü©eË–ÑÙ³gyÿúë/B=ÿ+Á¡ÑüáüøÇŽó¸=îÖ÷Ò¥KBË—/§C‡ññRîæÝ¿¿ø=Þgî&©t^GZ?àÀ—jŒk¦Ó§OS×®]ù”p¬oß¾|Ľk:yô&LàÛ[·nQïÞ½iíÚµâ¸ÐG´bÅ Îðo¿ýFÁÁÁ2›%W}]Ö¬YÃe=zÔQÖôéÓÅ/ŸvÜ›øé§Ÿhذa„A fÍšE ` b+õ>]»v»•â´{àNA›6mbësùòe®\Ó¦M¹ÂQQQ4|øpÚ·o¥H‘‚Þyçzòä õêÕ‹&Ož,Ž& gjm¢4iÒpº ÐÒ¥KÅQœ‹)wîÜ|”|=U¿ÿþ;wLdd$wVÝ»w'Y¿mÛ6*Q¢}üñÇ”,Y22dõïߟräÈáÃJâ¾sçά·Aƒ‹¹uëVš={6ÅÄÄP»ví¨qãÆ4nÜ8±ö™3g&XÓ2eÊPÏž=uBiqA˜nݺ‰Ÿ¥¿Ëúëׯσ :oÞ¼I•*U¢Šƒð¶Òž={Ø2£îèTWþ­.¨@¹råhâĉôý÷ß‹sÊþé¶èèhúꫯÄ/ïæzCàòÑGÑ믿N;wî¤7ß|S¼ßëǘU¬X‘I L'MšD‡f<‡J÷ïß§… Šƒþ‘2dÈàh7Úñ믿òΛ7?~Ì8 ïkÖ¬ÉÄFâ,Y²p<¸ÂñÅl0 ,Èý üõ×_S@@aV«V„£ 7[Ú0}úô¡¢E‹ÒÌ™3iðàÁTµjUZµj¡‚6làâa1ð… T4¸^½z<ÝBÏüùóiäȑԢE ¶€CÊ;w¸³GÍÄAgA@–”)Srç…‡‡³ÕC<ޝyõá&MšÐÁƒ ‡O™2…‰X£F ’ŽE'c[S0H…ŽnÓ¦ —S¬X1Ö'ÿT¯^ÛŒû'N01°Eë™1c·eΜ9<à0¥GDDкuë¨aÆXW(”[·n]X¨ Ú—*}úôÌT©R17@Ú½{÷2W>ýôS®×˸‚“ÀH.^¼87WFÊ—/Ï ÀÚ`”££aíp‚ê‚ä 4H@ªT©B9sæ„j'Á@@zè`ׯ_çç­[·¦Œ3,'HÁÞ²´2 Ð`Í;vìH °$°.è¨+W®°E€.Œ|  ²ÀÀ@ñKÞ‰¸ÓY¹ÁÔíÆ õ‚k˽dɶÀ°ÂX(X¥|ùò½€ƒ;u‘ÅòÃÏ„Ï)ƒ >;|wY&ž7kÖŒ .L™2eâò_{í5Ê•+¯@>àƒAÜÑ~Íhj‡NiÝ‘ý]°àðaðL’$‰¬÷Kûöí¹¼>ø€ ÂÃp;ðâÆ ãÃUŠ /EÚìÙ³³*tlêÔ©ÔÂôHX|@8 ##ÓF¸"pK`µQtD^1Ýp ¨îo$(nШQ£¸mpc$±dz#Ü©‹Ì+ê ßóøñçgîbºÅ ìÔ©ûã®eêóêÃ0,°°ï½÷÷Ñ‘#GØ%ÅlÜ!ø–~>|vÈùóçÙšÃíæèkˆÄ aøÏðÁ:po–üãÑ› •…€C° ßˆEÈŸ#7þüÛõöm¸"­}ûÎgkþ1­Ù09½ûUIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Exception-members.html000644 000765 000024 00000013257 14042362132 026171 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::Exception Member List

This is the complete list of members for mysqlpp::Exception, including all inherited members.

Exception(const Exception &e) MAY_THROW()mysqlpp::Exceptioninline
Exception(const char *w="")mysqlpp::Exceptioninlineprotected
Exception(const std::string &w)mysqlpp::Exceptioninlineprotected
operator=(const Exception &rhs)mysqlpp::Exceptioninline
what() constmysqlpp::Exceptioninlinevirtual
what_mysqlpp::Exceptionprotected
~Exception()mysqlpp::Exceptioninline
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1examples_1_1CommandLine.html000644 000765 000024 00000066736 14042362132 027202 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::examples::CommandLine Class Reference
MySQL++  3.3.0
mysqlpp::examples::CommandLine Class Reference

Command line parsing mechanism for ../examples/*.cpp. More...

#include <cmdline.h>

Inheritance diagram for mysqlpp::examples::CommandLine:
Collaboration diagram for mysqlpp::examples::CommandLine:

Public Member Functions

 CommandLine (int argc, char *const argv[], const char *user=0, const char *pass=0, const char *usage_extra=0)
 Constructor. More...
 
void print_usage () const
 Show a message explaining the program's proper usage. More...
 
void print_usage (const char *extra) const
 Show a message explaining the program's proper usage, with custom extra info after standard command line usage bits.
 
bool dtest_mode () const
 Return true if we're in "dtest" mode This happens when an example gets the -D flag, always passed by the dtest script to ask the programs it runs to suppress any nondeterministic output.
 
const char * pass () const
 Return the DB password (-p argument)
 
int run_mode () const
 Return the -m flag value. More...
 
const char * server () const
 Return the DB server name (-s argument)
 
const char * user () const
 Return the DB user name (-u argument)
 
- Public Member Functions inherited from mysqlpp::CommandLineBase
const ArgumentListextra_args () const
 Get reference to list of command line arguments past the last flag and its possible argument. More...
 
 operator void * () const
 Return truthy value if command line was parsed successfully.
 

Additional Inherited Members

- Public Types inherited from mysqlpp::CommandLineBase
typedef std::vector< std::string > ArgumentList
 Type for a list of arguments. More...
 
typedef ArgumentList::const_iterator ArgumentListIt
 Iterator into ArgumentList.
 
- Protected Member Functions inherited from mysqlpp::CommandLineBase
 CommandLineBase (int argc, char *const argv[], const char *opts)
 Hidden ctor to prevent instantiation. More...
 
virtual ~CommandLineBase ()
 Hidden dtor to prevent instantiation.
 
void finish_parse ()
 If object is still marked as "successful", save non-option arguments to extra_args_ list. Subclass ctor should call this after the parse_next() loop gets EOF.
 
const char * option_argument () const
 Accessor for getopt()'s optarg global.
 
int option_index () const
 Accessor for getopt()'s optind global.
 
void parse_error (const char *message=0)
 Called by a subclass when encountering a command line parsing error. More...
 
int parse_next () const
 Wrapper for getopt()
 
const char * program_name () const
 Get the file name of the program's executable.
 
bool successful () const
 Returns true if nothing has gone wrong since calling the ctor.
 

Detailed Description

Command line parsing mechanism for ../examples/*.cpp.

Constructor & Destructor Documentation

◆ CommandLine()

mysqlpp::examples::CommandLine::CommandLine ( int  argc,
char *const  argv[],
const char *  user = 0,
const char *  pass = 0,
const char *  usage_extra = 0 
)

Member Function Documentation

◆ print_usage()

void mysqlpp::examples::CommandLine::print_usage ( ) const
inlinevirtual

Show a message explaining the program's proper usage.

Calls print_usage(const char*), passing along the "usage_extra" parameter passed to the ctor

Implements mysqlpp::CommandLineBase.

References print_usage().

Referenced by print_usage().

◆ run_mode()

int mysqlpp::examples::CommandLine::run_mode ( ) const
inline

Return the -m flag value.

This flag is currently only used by examples/deadlock, but it's really a nonspecific "mode" value, which could be used by other examples in the future.


The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1IgnoreSpaceOption.html000644 000765 000024 00000030754 14042362132 026174 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::IgnoreSpaceOption Class Reference
MySQL++  3.3.0
mysqlpp::IgnoreSpaceOption Class Reference

Allow spaces after function names in queries. More...

#include <options.h>

Inheritance diagram for mysqlpp::IgnoreSpaceOption:
Collaboration diagram for mysqlpp::IgnoreSpaceOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::DataOption< T >
typedef T ArgType
 Alias for template param.
 
- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 
- Protected Member Functions inherited from mysqlpp::DataOption< T >
 DataOption (const T &arg)
 Construct object.
 
- Protected Attributes inherited from mysqlpp::DataOption< T >
arg_
 The argument value.
 

Detailed Description

Allow spaces after function names in queries.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/functions.html000644 000765 000024 00000012176 14042362132 021476 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
MySQL++  3.3.0
Here is a list of all documented class members with links to the class documentation for each member:

- a -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1LocalFilesOption__coll__graph.png000644 000765 000024 00000012277 14042362133 030323 0ustar00tangentstaff000000 000000 ‰PNG  IHDR‰Ï»³sRGB®ÎéyIDATxí ÔÕÃǧÒFvE"•($‰²¦Í–í%[ 6Š:¡„ÿ($Y¡¢=m"e­PD’%KQHH‘¥Rùýçóhî™{»óvoïvßî3çÜ÷Îof~³|ç;Ï<ó»÷½ßb‘ Fƒ"ÅÓ(«EA@I£DH%MÚé »¥J•2›7o.¨æ²²eË–™jÕªåûØ Œ4[·n5[¶l1%J”È÷Aecgu–)(Òèö” Ë嘕4¹0oWÒdã¬çrÌYCš 6˜9sæä®øÛ¿üòK3räHó裚·Þzˤúœô¯¿þÊó¾Ä÷,¯²†4«V­2:tÈ34ï¹çÓ¬Y33þ|óÃ?˜>}ú˜&Mš˜?ÿü3ØF×®]Í{ï½gÖ¯_ofÍš,—ñ|ŒP¡xñâ‘==åØÔi§Y`£J•*E:uŠºtéU¨P!j×®]´zõêèØcì*•:† Ýyç‘„èŒ3Έʗ/uïÞ]ò¾ÿþû¨aÆQ•*U¢öíÛK]_ýuT½zuÉ?á„¢Î;KÝ—\r‰Ô9|øð¨mÛ¶QíÚµå¾iÓ¦IÙ±cÇF}ûö‹öÙgQ¹rå"KDIw,i¢DÉêzúé§£Ýwß=:ôÐC£÷ß?jÞ¼¹Ü6wîÜè˜cމöÝwßÈ’:²%¢1cÆD×\sMD?ÁbĈ®‰àû™gžY"óó2#£,ÍW_}eØF&OžlF%«ö7ÞkVðn»íf^}õUYˆÏ=÷œ± šþýûK*³`Ác'À°e <ØT®\Ù¼þúëæ»ï¾3+W®Œ[¼‹/6v’Ì¢E‹Ì/¿üb^zé%cIifΜiÆo d,Q䞃>ØÔ¬Y3.Î}Gu”©X±b\½52Ÿ|òIÒºZ·n-ýµd7–<æóÏ?—{{õê%pöìÙ2¶¹uëÖ™)S¦˜¡C‡Š»÷Þ{ãÚ)싌" ``ÂëÕ«g9äc-9úè£M5 ÛK«V­ÌôéÓe;°–ÃðlâðÃ7÷ß¿€ ÐGy¤an¸áSµjÕà–D>„°+ZHCÛ-Z´¶Z¶l)„…l 40mÚ´!;çyÓÆ%ÍÿóÓO?bëúùçŸ%oï½÷6ÅŠ“2öÛo¿5={öB1Þ^xAò.¼ðBÁ¶!~&…Œ#{¢i·3³ß~ûÅaÅdΘ1Cˆ¨LÐÀ «õÍ7ß‹À$²ÝäÞÒ¥KÇÕá.öÙg‰þóÏ?âcpáÒˆ“Τ& uÉ’%bQü|¬„³J©Ôe·Q±x®ŽÿýW€rm·?IƺڭÅɈ÷Œ#MN¨qÄÆú.B¬kÃkêÔ©¦iÓ¦r*9÷Üs…Dä»íŒ¸ØöxJ ­O!YL:·páB³Ç{˜ºuë&öÓO?•|?å”S„wÝu—”'s„ fùòåÆúPR6Y]dø¥Ô©SÇüþûïféÒ¥²-¿øâ‹2© ƒÿÒ8“YðoÎ9çÕ:²Æ:¯æä“O–-Œm-®_¿~¦V­Zâ§8ü]ëÄöõÍ7ߘ=zHHÁöfJsë­·Ê6‚sÛm·I¾‹c'Nœh …mîú믗mîÀ Ö…†ÿµvíZ)Cî¸ãi û믿š³Ï>[òü?®ß~Z¡ÆóҫΩ®TNO9ÝïòìvÙIv—òn}‰hÅŠqiœÔ8ݼüòË‘µ GVùƒ>ÈÓ¾äf¹¹7c-͵×^kÆ'b ˆœ¢þöᇦ5V•UN ®Ô Û¯xØk¯½"{zʱ]ä”­.e¬ 2Ä–<"î…ü²Õ·Œ¬(jdeÿ¤ŒÕÆŽʲ=Q+ulUâ"_VÙJ Fö´Y8‘bFÊ!±Ž;JšU¦‹¬Ø»Ô…Ô³#죨qãÆÂ^™(«LŸßyçFÉXKíш¼êª«Ì©§ž*~]t‘hR²å tzùå—‹l ezè!ƒ´béÈ'?þøã$ÇZHçwž¨êZr«u-ªH"³m ônu¾¥<[šM”C"ЪӉs6Ë*Ç€´‘Œ& º”L4ä@¤Ô ¢‹N$²ÈÖ‰¶$ZÞ<(D[»OŸ>¢AÉä;©b ÐèFÌR!eÊ e[zòÉ'e{J­k_J%–SÃ\·§ÔpÒRJ ?ª?Ÿæ£WÒÄã»ÒŸO‹A±]DI³$š°#”4„t{ c“•4lt{ £¤ £9aÔÒ„±ÑœJš0šF@IÆFs(iÀhr%M=r€±ÉJš6z䣤 £9aÔÒ„±ÑœJš0ü?7/ Û# ¤ÙI±¿†%ÿoÈÎêd%MVOÿÎ ^IÀMÜ`l²’&€¹À(iÂÀhNµ4lt{ c“•4lt{ £¤ £99 àÿ:7úJ¶¨¾,Vb9*^¼Œba±hÙ²¥O“(î?,ÑPjÛ¶­¹úê«s ™feèG ™äõi|44žJš”`ÒB>J §„@œO“Òù\hÙ²eòkæÉÔLÒmÚÊûÈ-h9åUØ´i“Yºt©9î¸ãŒ•U:¿n¤Q¯CG…;+ $ÚT~™Å­Äùè£ÌŠ+ 8Ô®];¦š·£{­t‘´ø…ÚÊ8K3vìØ´¥”Cƒ›1c†ˆx…òw&°ûî»OnÅAD"ég÷B(Õ*ëô0ÑËœ8qbZÍðkîÈK?^‡Öf·nÝDE/TDq}rm‡ÊæEzÚ– @ÄÌQQcE `‹ÒZ’ˆ….\¸Pô“P`cUÀ<`PNã^+P´·±%J”e87(&üã?6‚:Êq¨ævîÜY¤çÎ++yA”ânºé&Ó£GQjsqWWâ;ý¥?|ýáÊ+¯4-Z´KTé¾±Ò‡h\¢b·víZ3xð`±(ˆ ’–P¿CœÕVöYdÓ†.Ö!WDW±XC‡‹Ò¤I#JyǼ¹îºëb·ƒØž~úé¢çY£F ãUaTñ*T¨ ˜#ÑÈ| nG_¬µAZëˆhÍš5Ík¯½fiìß¿Ê:W®Ci[«¾&J³°u}ã7š ˆ”"\³gÏ–úY}ÈbfçÏŸ/G74(YÔóÌ3ψD2“†l22‚.0a¬Ô~ýú™®]»šaÆI$BÌ‹kK,X éV£[ÈÃ…—Lï¤]ˆ€Å#ˆŠºnÕªUEz™zçÍ›'„®X±¢5j”lÓ§O÷jú/Šüò AƒäõØcI"Ö‚mÉd‡ "í!™øÄOˆ€ë³Ï>kÀ !â­È;#aè‡ZµjÉÅz%? ‰m±uëÖÆµl4¤|ðÁMÓ¦M „%Ћùá‡6ëׯáç··£xÚ–† Ùc‘8FC†g20©õêÕ3 •‹imذ¡¬~kr]|ñÅb­£N:ÒÇd”Šñâ^Ú#؇M²zš5k&d¤ ÿÙ’—¼?XBú_¿~}IÅúA<^è\¢¸‹EA]‰gˆ‹þ$“‰zLbÀwp>/YX¼x±Ú ÎK6mðüÁV,-Øa-° î&—t !qüX:òüþ±HI‡L¼ ‘o#¢@L[X4'+í··£øN‘†Áµz”qm”*UÊ ,ûî»ïÊ  °<òˆ±Ã|V«sêR‰Á—ÄÜb.44·Ó €Äé[õ@H'Kˆà“„ ü’%KDy“ž,@¾Äí)±m2©ƒÀÊg"y–˶ۗ|v¤+_¾¼ÜŸÊøi“Åìãa¬G.\—æÊ¥òžöö”J¥¬||N¨ÁΙ3ÇÌœ9S|„ÖÙ¶› a0L>RbàÁ „S «ØéO.Z´Hîc5U©REn£.¶‚w݃–û™@¬Ž#$Æè„Jœ-ÓÏʦÜÎL}'t’l½lÃÔÅøéK¯^½¤]|)ú9 xá[XXðóÏ?_ü>Ò’ŸúüÀ8øÒ~M^¨vÊÒøóãî‹Ø“ H„ºuëÊ>Î b콘ôêÕ«›víÚÉVàØOyW“Ú¦M9ÂâC‘ÎÄá;@=÷ÜÓôîÝ›[ä}š:I#N@£›— O=õ”l‰|\„à€Bnú„ÃŽÃjoܸ±ŠS }Ã"àT’îúçêÌé²ÔnxûöíeëÁ!ÅïbquèÐA°`;d;fqàvìØQ&ëJ¹N:I3ÉÆaV­ZeFŽë – ¿ §{ݺuBÐXæ¶}Kg,îþ¸Ÿ„Å ,_¾<Î?pÓyÇÑ¢³#FŒÀ¸—X¶0x¦Á¤pò€IÀùdogeRÞ‘ “þÊ+¯Èþìoo®¾Tßi—>1¡~€ìþ–ˤ•.]ZÚÇygkØ iç çt¼IcB§ŸF:iø@øn줇Æq-åÙ¦X\~¤§ÜgOX]òÔÒP)Þ=Ç8̬?!ø?¬ÖÄàû‰y\'ËgÒrC˜P½¤û„áÚ—MüÜçüW‘KãÉO†yÉÆïœdòý[œüº\<ÏIÃÙç×Û5–Ó»Û\™V­Z¹hÜ;Gc¸l ™0þ<' § t W`èøšÌòd2aüùrzʦIÌʱZo<ÞÔoîé7õ’|sÓFb!wzÊÊU£ƒNÝžÒ†LoPÒ(ÒF@I“6dzÃÿòPæ«ëÀ3"IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Set__inherit__graph.png000644 000765 000024 00000007753 14042362133 026364 0ustar00tangentstaff000000 000000 ‰PNG  IHDRŽR‚ì\sRGB®Îé¥IDATxípUÅÆ‚"6°Dłн+âX°Ž½+ŽŠ]lØÇ2Žú·÷‚а+öBT *QE1ìÿüìóæñîk¹‰ÏÉîLòîÝ»»w÷ÛoÏ9{ßM¾fN“„(²ˇâC '¡(qŠ‚-Tj‘$#GŽ”ÚÚÚ$› m%ˆÀ6Ûl#Ë-·\"-&JœÅ‹ËN;í$-Z$Úl"mêŒ7NæÍ›—q‚«jêŒ*rü8E×Ô«â4u9þ’&Î| ¿ÿþ{‘Ck¸jIöëí·ß– 4\g¨å’ Îé§Ÿ.üñ2C¼òÊ+eüøñËäšñùçŸËI'Th5I²_qm½òÊ+ò×_Ü·½_9$•Þÿ}÷÷ßgmîÑGun¸¡[k­µÜc=æèt‹èÖ\sM÷óÏ?»Ûn»ÍUTT¸ÝvÛÍuëÖÍÕÔÔ8%ëÝ»·µûä“OºË.»ÌŽÏ?ÿ|×¹sg·é¦›ºÑ£G[Þ³Ï>ëÖ_}×µkW÷àƒZÞFmäÚ´i㮺ê*;÷¿t¥»Áƒ»›nºÉÕ·_Ñ>fkë³Ï>sû;ì°ÃÜÕW_ízõêåfΜéÎ;ï}úiW^ye÷ú믻çŸÞ­¸âŠî믿¶öô†›;w®eÆŒîšk®q«¯¾ºÛ~ûíÝ /¼Pï~ù>æãĉùnÐõë×Ï}ÿý÷n•UVq?þø£;üðÃ}œ4i’;æ˜c\ß¾}ml\Wkìî¿ÿ~«nl…Vpûï¿¿6lX^óóŸ&Ž>çq›o¾¹ÛsÏ=ÍÚhübƒÞ}÷Ý €ÊÊJwÀ¤€À*aq2%H O>ùd÷ꫯ:¬‡Æ ¶:ï¾ûnÇO÷îÝÝ#<â{Çw´‰8ᄌPÔcõ“’ìW®¶°záÂ…vï(q°T¤¡C‡š…}æ™glAX¦þºú>ÿñÇî¾ûîs›l²‰Ã¢Bþl)iâ4jŒÓ¬Y3ÑI5Ïrï½÷ÊÖ[o-<4ôIWž¨Åð§Ò¡C‡ÔqúZ Q ': ræ™gZ<¢+XÊËËeöìÙösÔQG‰º±TUò_zé%Qò ×zôèa×’ìW®¶¸áJ+­$Í›7OõËèB°C * D­“´nÝÚ_–Ž;¦Ž){ðÁË‘G)ß}÷|øá‡©kqШÄQ+!Gq„\pÁÂÎDcQoãÔØHÔË{ï½'ê~äÛo¿]%vM]Œ‘„Ê“¯®H4>ODW¦¼óÎ;¢q==묳Dã‰îXh_c™>}º}ôÑֵ䮻¾ýò}Ì5FPž¿4Æ“wß}WÔºÈW_}•Ú(ðÕαÇ+êªeÊ”)¢VÙpȳÙDŠ5êwjjEM³¨ ²OuKv¼å–[Šº#_Y¬·ÞzÒ²eKÑ@QXÁ&LõçF¨§Ÿ~ZÔõi.ºè"yë­·D;\xá…ÖæñÇ/jºm§²ë®»ÊvÛm'¿üò‹hì ‹¤¶Ãb—yÕ¥‰¢õîW´ÙÆÈ.Š1åJ”9ðÀm| Ó¶m[³.ŒûŒ3Î{î¹'«UÎuz]Ïæ ½–+8öíáçýõWjŸ¹>¿üùçŸþ4ösÑ¢ENW¢Óíl2´¥+±N1Pz9_Àï“êíæjËß;Û§Z]7hÐ ‹ß~úé'שS' ð‰£ MIÇ8Íè@½˜©Ì ÞvÛmלLêsˆ{åm¬ Ï¢°27ÞxcQMò%'ñc4†,ª¡¥•ÕUÕ§£M±.îZwQ¢ÖË6Õ¥’qJe&²ôCff¹úï\jÔ]Õ¿3Äp׆@ Q‹SVV–Ú67Dg³Í3æéf¶Æló¶ z¯ŠŠŠÄÚO48N¬W%ÐP¿~CôùÐ(}žô?iÕ*ÑõU£«‚«Ê€á¢E‹åµ×Æès“V2lØ’‡Š5é¬@œ Ó?bÄ)+k¦O¡k¥²²qågèNIfâd˜–Áƒkô1ÿ’¿Ö¨©™¬ÇÿÁ÷e2Œ+ɬ@œ44kkJUîiÉsÑ–-›ë³cÒJ…Ó@œ4Ó”—ÿ ã® î* & ÄIC¤²rä2®iìØé2sæÜ´’Mû4'2ÿÄ255“"9K›7/“¡CG/“ß”3q"³Ï¼¼|Ù¬æÏ_ÜU'ÿqæišâé€ÕúF¢Hûömì <Þ`[N ÁÔy¢c1Npœ78yC Fĉ¢ŽóF NŒ“w­,ˆ®”êMšŠ\·Aš…a”vQä˦ºWÌý¦NªÿeŒ¨ ­¨¾§¨hl1Íd­£¢¢2L¦ß•µ`#^,9‹£*¿¢Š¾‰@€êÊ)§œbÊròœsΑQ£FŶMy÷òMO=õ”\qÅ&>.¹äyã7ò­ž*‡Ü¤êp¦ÎÓœDf±”RÁ Ct©8d5£rÇ Q©¸O>ùÄ”ÜTÕVjkkMcéÖ[o•i6ùCV<åPÁSå_|óШ<í´ÓRØ&+™ÉTe]›ôvØAN=õTA1•<ô6/½ôRÓ­ìß¿¿É)véÒEÿÒ’cúɹ×GzqòäÉv$ `š èsî·ß~rÝu× “„ª §úÂØØqªÌ³i`r‰Æ*í8dÈ“"OååÅ_äP¾üòKaÜÔÙe—]D¥®M6| ñ¬Y³l÷ºñÆ‹Ê\[UW]Uÿý+ëª~X0ê©è­`um¼ýöÛMwyIÚUÙiAÖQ•å‹/¾0lPÐCëJ¥¸­=”Q $¡cJßUÂÚt°,³ˆ_[ô!E÷’A«­Éª´ ¥ªæ·þûaÖ,¤^7 ÷Úk/yî¹çLgRuÇåòË/—ƒ:È,AT¸`q1È!"öþÐCY› á/Îô£>²|ä½ð©?F޽'OU¿[TeNÿQROQe=Ue˜¬<ð€`1 åºë®kº¡4Š6¨JUÛ¹ªìÚ5»™þB3©HÄd}Z~ùåM+“sÄj÷Ùg¹ù曑1„ÊÀމc²Ñ}â‰'d5Ö°ITedÙj«­¬x<üðöp "´ 2`1ÁZå¯Mv‘­2‹ rCT0@g”²huªªžõÃ÷QõÝMÂL(ÏÜ“ &7a¥«l±©èòéq+ƒB0t1YõœC2¬ ú™Jå­ t80=åiCõÉmÕQæÐC5@° €CâÙ“óǨæbÕXm’ªT¡­Lfåa— !!:ĺá†ì™+U:ô/Q«ó ¥,j¦¡!©ŠÒ›À*c!IXMDX÷Øc³ÅÒÑ„Íp•(#£= qù‰&¬‹ÌÁA\,+ce‘ ŽÌXHŒ‡EUÅCÐÒ©TµÅ’X4情PH*Š8¬4à©À|û!ߌ‰E©–& e°"1µ˜Pˆ„Kð ÐÒ÷‰Å„|>yq 7ÂB0D\!n°!.Õ=¯cM0ýLî”k™„Ƙ4ˆÇ8|â^X Ücõ õJÈHòÁ3„IWµäœI„d`Ã=Ò“¯O¾oƒñP—±¤CXsC™L 2õRoæ Â1–BRQÄÉuÈBLƒgðÕÕÕ4Ã0XV/f@YÕ^F:Ú6æÕ7~üx[‘¸A¥Ö¦¢¢Âòh «DòÇwˆ%$,yè†â™d¬ý„$>W[m5³T—ÃÓt䪩ï&ŸX wã‰{¡òáþ°J, ÜP¶Ä}é'®ƒ€|pËéäÊÔ“¥AR¼‘šŽKàF|‡¼6± B~«_H*88ÎÖ¸—EfÐsæÌ±‰¡ü[l!Ćto\+7‚?Ž®$ß«ù¸ãŽ3OLE>@2™„U}ñÅ[—ø¼óÎ;­MLÜ)” 1Íšk}4&Àßl³ÍLr‹†›ÅŒãî ùˆÄ8HDØ“ ÷!À†€L $+”™žr’é:“N‚ôv£çÄD>.Ê•Oì—2‘†²™úH>äÃ…ä“ü޲Ñ`6®íLmfЉÒËÅ!½\®óx”rÕŒ¹NÔÎÖ—§¿…$vÞªPÏxémk$5øô¶Ãyþ$NÌm¡¤¡»é!º£Ã)dFë…ãdh]U²] ­•$ºKI¥áá ÀðÆ_Ì éoÖÙU•$³C§JàªJrZJ¿S8¥?G%ÙÃ@œ’œ–ÒïÔÿ§6ÕG8ÿ¯“IEND®B`‚mysql++-3.3.0/doc/html/refman/vallist_8h_source.html000644 000765 000024 00000261675 14042362132 023135 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: vallist.h Source File
MySQL++  3.3.0
vallist.h
Go to the documentation of this file.
1 
4 /***********************************************************************
5  Copyright (c) 1998 by Kevin Atkinson, (c) 1999, 2000 and 2001 by
6  MySQL AB, and (c) 2004, 2005 by Educational Technology Resources, Inc.
7  Others may also hold copyrights on code in this file. See the CREDITS
8  file in the top directory of the distribution for details.
9 
10  This file is part of MySQL++.
11 
12  MySQL++ is free software; you can redistribute it and/or modify it
13  under the terms of the GNU Lesser General Public License as published
14  by the Free Software Foundation; either version 2.1 of the License, or
15  (at your option) any later version.
16 
17  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
18  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
20  License for more details.
21 
22  You should have received a copy of the GNU Lesser General Public
23  License along with MySQL++; if not, write to the Free Software
24  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
25  USA
26 ***********************************************************************/
27 
28 #if !defined(MYSQLPP_VALLIST_H)
29 #define MYSQLPP_VALLIST_H
30 
31 #include "manip.h"
32 
33 #include <string>
34 #include <vector>
35 
36 namespace mysqlpp {
37 
38 
58 
59 template <class Seq1, class Seq2, class Manip>
61 {
64  const Seq1* list1;
65 
68  const Seq2* list2;
69 
71  const char* delim;
72 
75  const char* equl;
76 
79  Manip manip;
80 
91  equal_list_ba(const Seq1& s1, const Seq2& s2, const char* d,
92  const char* e, Manip m) :
93  list1(&s1),
94  list2(&s2),
95  delim(d),
96  equl(e),
97  manip(m)
98  {
99  }
100 };
101 
102 
113 
114 template <class Seq1, class Seq2, class Manip>
116 {
119  const Seq1* list1;
120 
123  const Seq2* list2;
124 
127  const std::vector<bool> fields;
128 
130  const char* delim;
131 
134  const char* equl;
135 
138  Manip manip;
139 
152  equal_list_b(const Seq1& s1, const Seq2& s2,
153  const std::vector<bool>& f, const char* d,
154  const char* e, Manip m) :
155  list1(&s1),
156  list2(&s2),
157  fields(f),
158  delim(d),
159  equl(e),
160  manip(m)
161  {
162  }
163 };
164 
165 
184 
185 template <class Seq, class Manip>
187 {
189  const Seq* list;
190 
193  const char* delim;
194 
197  Manip manip;
198 
206  value_list_ba(const Seq& s, const char* d, Manip m) :
207  list(&s),
208  delim(d),
209  manip(m)
210  {
211  }
212 };
213 
214 
224 
225 template <class Seq, class Manip>
227 {
229  const Seq* list;
230 
233  const std::vector<bool> fields;
234 
237  const char* delim;
238 
241  Manip manip;
242 
252  value_list_b(const Seq& s, const std::vector<bool>& f,
253  const char* d, Manip m) :
254  list(&s),
255  fields(f),
256  delim(d),
257  manip(m)
258  {
259  }
260 };
261 
262 
271 
272 template <class Seq1, class Seq2, class Manip>
273 std::ostream& operator <<(std::ostream& o,
275 {
276  typename Seq1::const_iterator i = el.list1->begin();
277  typename Seq2::const_iterator j = el.list2->begin();
278 
279  while (1) {
280  o << *i << el.equl << el.manip << *j;
281  if ((++i == el.list1->end()) || (++j == el.list2->end())) {
282  break;
283  }
284  o << el.delim;
285  }
286 
287  return o;
288 }
289 
290 
295 
296 template <class Seq1, class Seq2, class Manip>
297 std::ostream& operator <<(std::ostream& o,
299 {
300  typename Seq1::const_iterator i = el.list1->begin();
301  typename Seq2::const_iterator j = el.list2->begin();
302 
303  int k = 0;
304  while (1) {
305  if (el.fields[k++]) {
306  o << *i << el.equl << el.manip << *j;
307  }
308  if ((++i == el.list1->end()) || (++j == el.list2->end())) {
309  break;
310  }
311  if (el.fields[k]) {
312  o << el.delim;
313  }
314  }
315 
316  return o;
317 }
318 
319 
328 
329 template <class Seq, class Manip>
330 std::ostream& operator <<(std::ostream& o,
331  const value_list_ba<Seq, Manip>& cl)
332 {
333  typename Seq::const_iterator i = cl.list->begin();
334 
335  while (1) {
336  o << cl.manip << *i;
337  if (++i == cl.list->end()) {
338  break;
339  }
340  o << cl.delim;
341  }
342 
343  return o;
344 }
345 
346 
351 
352 template <class Seq, class Manip>
353 std::ostream& operator <<(std::ostream& o,
354  const value_list_b<Seq, Manip>& cl)
355 {
356  typename Seq::const_iterator i = cl.list->begin();
357 
358  int k = 0;
359  while (1) {
360  if (cl.fields[k++]) {
361  o << cl.manip << *i;
362  }
363  if (++i == cl.list->end()) {
364  break;
365  }
366  if (cl.fields[k]) {
367  o << cl.delim;
368  }
369  }
370 
371  return o;
372 }
373 
374 
384 
385 void create_vector(size_t size, std::vector<bool>& v, bool t0,
386  bool t1 = false, bool t2 = false, bool t3 = false,
387  bool t4 = false, bool t5 = false, bool t6 = false,
388  bool t7 = false, bool t8 = false, bool t9 = false,
389  bool ta = false, bool tb = false, bool tc = false);
390 
391 
403 
404 template <class Container>
405 void create_vector(const Container& c, std::vector<bool>& v,
406  std::string s0, std::string s1, std::string s2,
407  std::string s3, std::string s4, std::string s5,
408  std::string s6, std::string s7, std::string s8,
409  std::string s9, std::string sa, std::string sb,
410  std::string sc);
411 
412 
413 
423 
424 template <class Seq>
425 value_list_ba<Seq, do_nothing_type0>
426 value_list(const Seq& s, const char* d = ",")
427 {
429 }
430 
431 
437 
438 template <class Seq, class Manip>
439 value_list_ba<Seq, Manip>
440 value_list(const Seq& s, const char* d, Manip m)
441 {
442  return value_list_ba<Seq, Manip>(s, d, m);
443 }
444 
445 
454 
455 template <class Seq, class Manip>
456 inline value_list_b<Seq, Manip>
457 value_list(const Seq& s, const char* d, Manip m,
458  const std::vector<bool>& vb)
459 {
460  return value_list_b<Seq, Manip>(s, vb, d, m);
461 }
462 
463 
469 
470 template <class Seq, class Manip>
471 value_list_b<Seq, Manip>
472 value_list(const Seq& s, const char* d, Manip m, bool t0,
473  bool t1 = false, bool t2 = false, bool t3 = false,
474  bool t4 = false, bool t5 = false, bool t6 = false,
475  bool t7 = false, bool t8 = false, bool t9 = false,
476  bool ta = false, bool tb = false, bool tc = false)
477 {
478  std::vector<bool> vb;
479  create_vector(s.size(), vb, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9,
480  ta, tb, tc);
481  return value_list_b<Seq, Manip>(s, vb, d, m);
482 }
483 
490 
491 template <class Seq>
492 value_list_b<Seq, do_nothing_type0>
493 value_list(const Seq& s, const char* d, bool t0,
494  bool t1 = false, bool t2 = false, bool t3 = false,
495  bool t4 = false, bool t5 = false, bool t6 = false,
496  bool t7 = false, bool t8 = false, bool t9 = false,
497  bool ta = false, bool tb = false, bool tc = false)
498 {
499  std::vector<bool> vb;
500  create_vector(s.size(), vb, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9,
501  ta, tb, tc);
503 }
504 
505 
514 
515 template <class Seq>
516 value_list_b<Seq, do_nothing_type0>
517 value_list(const Seq& s, bool t0,
518  bool t1 = false, bool t2 = false, bool t3 = false,
519  bool t4 = false, bool t5 = false, bool t6 = false,
520  bool t7 = false, bool t8 = false, bool t9 = false,
521  bool ta = false, bool tb = false, bool tc = false)
522 {
523  std::vector<bool> vb;
524  create_vector(s.size(), vb, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9,
525  ta, tb, tc);
527 }
528 
529 
550 
551 template <class Seq1, class Seq2>
552 equal_list_ba<Seq1, Seq2, do_nothing_type0>
553 equal_list(const Seq1& s1, const Seq2& s2, const char *d = ",",
554  const char *e = " = ")
555 {
557  e, do_nothing);
558 }
559 
560 
566 
567 template <class Seq1, class Seq2, class Manip>
568 equal_list_ba<Seq1, Seq2, Manip>
569 equal_list(const Seq1& s1, const Seq2& s2, const char* d,
570  const char* e, Manip m)
571 {
572  return equal_list_ba<Seq1, Seq2, Manip>(s1, s2, d, e, m);
573 }
574 
575 
583 
584 template <class Seq1, class Seq2, class Manip>
585 equal_list_b<Seq1, Seq2, Manip>
586 equal_list(const Seq1& s1, const Seq2& s2, const char* d,
587  const char *e, Manip m, const std::vector<bool>& vb)
588 {
589  return equal_list_b<Seq1, Seq2, Manip>(s1, s2, vb, d, e, m);
590 }
591 
592 
598 
599 template <class Seq1, class Seq2, class Manip>
600 equal_list_b<Seq1, Seq2, Manip>
601 equal_list(const Seq1& s1, const Seq2& s2, const char* d,
602  const char* e, Manip m, bool t0, bool t1 = false,
603  bool t2 = false, bool t3 = false, bool t4 = false,
604  bool t5 = false, bool t6 = false, bool t7 = false,
605  bool t8 = false, bool t9 = false, bool ta = false,
606  bool tb = false, bool tc = false)
607 {
608  std::vector<bool> vb;
609  create_vector(s1.size(), vb, t0, t1, t2, t3, t4, t5, t6, t7, t8,
610  t9, ta, tb, tc);
611  return equal_list_b<Seq1, Seq2, Manip>(s1, s2, vb, d, e, m);
612 }
613 
614 
621 
622 template <class Seq1, class Seq2>
623 equal_list_b<Seq1, Seq2, do_nothing_type0>
624 equal_list(const Seq1& s1, const Seq2& s2, const char* d,
625  const char* e, bool t0, bool t1 = false, bool t2 = false,
626  bool t3 = false, bool t4 = false, bool t5 = false,
627  bool t6 = false, bool t7 = false, bool t8 = false,
628  bool t9 = false, bool ta = false, bool tb = false,
629  bool tc = false)
630 {
631  std::vector<bool> vb;
632  create_vector(s1.size(), vb, t0, t1, t2, t3, t4, t5, t6, t7, t8,
633  t9, ta, tb, tc);
635  d, e, do_nothing);
636 }
637 
638 
644 
645 template <class Seq1, class Seq2>
646 equal_list_b<Seq1, Seq2, do_nothing_type0>
647 equal_list(const Seq1& s1, const Seq2& s2, const char* d, bool t0,
648  bool t1 = false, bool t2 = false, bool t3 = false,
649  bool t4 = false, bool t5 = false, bool t6 = false,
650  bool t7 = false, bool t8 = false, bool t9 = false,
651  bool ta = false, bool tb = false, bool tc = false)
652 {
653  std::vector<bool> vb;
654  create_vector(s1.size(), vb, t0, t1, t2, t3, t4, t5, t6, t7, t8,
655  t9, ta, tb, tc);
657  d, " = ", do_nothing);
658 }
659 
660 
668 
669 template <class Seq1, class Seq2>
670 equal_list_b<Seq1, Seq2, do_nothing_type0>
671 equal_list(const Seq1& s1, const Seq2& s2, bool t0, bool t1 = false,
672  bool t2 = false, bool t3 = false, bool t4 = false,
673  bool t5 = false, bool t6 = false, bool t7 = false,
674  bool t8 = false, bool t9 = false, bool ta = false,
675  bool tb = false, bool tc = false)
676 {
677  std::vector<bool> vb;
678  create_vector(s1.size(), vb, t0, t1, t2, t3, t4, t5, t6, t7, t8,
679  t9, ta, tb, tc);
681  ",", " = ", do_nothing);
682 }
683 
684 } // end namespace mysqlpp
685 
686 #endif // !defined(MYSQLPP_VALLIST_H)
Declares the Query stream manipulators and operators.
@ do_nothing
insert into a std::ostream to override manipulation of next item
Definition: manip.h:389
Same as equal_list_ba, plus the option to have some elements of the equals clause suppressed.
Definition: vallist.h:116
Manip manip
manipulator to use when inserting the equal_list into a C++ stream
Definition: vallist.h:138
equal_list_b(const Seq1 &s1, const Seq2 &s2, const std::vector< bool > &f, const char *d, const char *e, Manip m)
Create object.
Definition: vallist.h:152
const std::vector< bool > fields
for each true item in the list, the pair in that position will be inserted into a C++ stream
Definition: vallist.h:127
const char * equl
"equal" sign to use between each item in each equal pair; doesn't have to actually be " = "
Definition: vallist.h:134
const Seq1 * list1
the list of objects on the left-hand side of the equals sign
Definition: vallist.h:119
const char * delim
delimiter to use between each pair of elements
Definition: vallist.h:130
const Seq2 * list2
the list of objects on the right-hand side of the equals sign
Definition: vallist.h:123
Holds two lists of items, typically used to construct a SQL "equals clause".
Definition: vallist.h:61
const char * delim
delimiter to use between each pair of elements
Definition: vallist.h:71
equal_list_ba(const Seq1 &s1, const Seq2 &s2, const char *d, const char *e, Manip m)
Create object.
Definition: vallist.h:91
const Seq2 * list2
the list of objects on the right-hand side of the equals sign
Definition: vallist.h:68
const char * equl
"equal" sign to use between each item in each equal pair; doesn't have to actually be " = "
Definition: vallist.h:75
Manip manip
manipulator to use when inserting the equal_list into a C++ stream
Definition: vallist.h:79
const Seq1 * list1
the list of objects on the left-hand side of the equals sign
Definition: vallist.h:64
Same as value_list_ba, plus the option to have some elements of the list suppressed.
Definition: vallist.h:227
const Seq * list
set of objects in the value list
Definition: vallist.h:229
value_list_b(const Seq &s, const std::vector< bool > &f, const char *d, Manip m)
Create object.
Definition: vallist.h:252
const char * delim
delimiter to use between each value in the list when inserting it into a C++ stream
Definition: vallist.h:237
const std::vector< bool > fields
delimiter to use between each value in the list when inserting it into a C++ stream
Definition: vallist.h:233
Manip manip
manipulator to use when inserting the list into a C++ stream
Definition: vallist.h:241
Holds a list of items, typically used to construct a SQL "value list".
Definition: vallist.h:187
value_list_ba(const Seq &s, const char *d, Manip m)
Create object.
Definition: vallist.h:206
const char * delim
delimiter to use between each value in the list when inserting it into a C++ stream
Definition: vallist.h:193
Manip manip
manipulator to use when inserting the list into a C++ stream
Definition: vallist.h:197
const Seq * list
set of objects in the value list
Definition: vallist.h:189
equal_list_ba< Seq1, Seq2, do_nothing_type0 > equal_list(const Seq1 &s1, const Seq2 &s2, const char *d=",", const char *e=" = ")
Constructs an equal_list_ba.
Definition: vallist.h:553
value_list_ba< Seq, do_nothing_type0 > value_list(const Seq &s, const char *d=",")
Constructs a value_list_ba.
Definition: vallist.h:426
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1RefCountedPointer__inherit__graph.png000644 000765 000024 00000062622 14042362133 031224 0ustar00tangentstaff000000 000000 ‰PNG  IHDRÀ²Õ¸ sRGB®Îé@IDATxíœUûÇJD01À.lÅ»°»»;_[ìzíx¿ÝÝ]ب(b€"¡€ÈüŸï¹û,ggçîÞ»{îÝ}žÏgvæÎœ9sÎ3³çwž<­%qr8œÎç@ËâÀÀÖ-«¿Þ[ç€sÀ9àpä8àè_‚sÀ9àp´H8¶È×îv8œζÎç€sÀ9P xõÕW¥wïÞ•ÐToc™rà³Ï>“ž={V·Î%ÀjVøsÀ9PÎO;í4ÁoÏ7çA±ßÀÎ;ï,ýû÷¯ñ‰;Ö`‡ÿp8œΖÂÀ–ò¦½ŸÎç€sÀ9Pƒ€5Øá?œÎç€s ¥pÀ`ZÊ›ö~:œæN³Í6›Ì5×\®ëÇ”/¿ü²ºž™gžY–_~y™~úé«Ï¥&Nœ(Ï=÷œ¬¹æš2Ë,³ÈW_}%¯¿þºtêÔIúôé#3Î8cú–©òû믿–6mÚÈì³Ï.o¾ùfõ3{ôè!‹-¶XõïôÁ¸qãäÃ?”µÖZ+}iªüv pª°Ùâp4\|ñÅòòË/—¤+?þ¸{ì±0ë®»NZh!ó'?ùäÙwß}ó^oìÀÆrÐïw8ʆ÷Þ{¯ì²Ë.Âà½ÔRKÉÕW_-K,±D@æŒ3ÎK/½4´÷ï¿ÿ–e–YFFŒ€¨[·ná÷Ç®_qÅ2ï¼óÊúë¯/›l²I ›nºIöÜsÏP)ç‰'ž÷¬¸âŠrÐAÉsÌ!Ûm·üõ×_áüFm$ß~ûm­ã¥—^ZÎ9眰Ý~ûíÒºuë0èãáˆÇ+ϧÎwÞyG™‡~X>øàùôÓO¥oß¾‚gìå—_Ž}ôQùõ×_Ã3úß¹sgÙo¿ýdÒ¤Irçw†çP`ذa²Î:넲k¬±†sÌ1Aª¬F%‡zhxReV[¸±_¿~áôá•W^ uñI–>{î¹òàƒÊÛo¿-Hδmƒ 6’ëzë­'¿üò‹Œ?>8÷eµc×]w•{î¹'ôïÏ?ÿ”wÜQæœsÎ íþþûïÜö¤“N ç‰"þ8Á,/êp”7þøãA²V[m59î¸ãäÆo”m¶Ù&HX+¬°BzñÒK/ÉtÓMÔO?ýtˆµ+¯¼R¨çÌ3Ï e;ì° v40ãÞ¡C‡Ê³Ï>+÷ß¿ ž|òÉœÀ4묳 ÈP/´Ê*«T«'ããAƒ…gÜqÇÂs”Ô‚<ð@Öm·ÝVØ6ß|sYuÕUåüóÏí[`‚Ê1<@ÿð\k’%’Ó /¼ ï¾ûnÊ‘#G†vSþŸþ‘o¾ù&ÜŠÔFß^{íµ0xæ™gä‚ .` (gµ…v|ðÁ²Ç{„IF¬Ê¥.€šö¤" É„‚‰Á{ï½ÚŠÄ "½BYí¸è¢‹BÜÞñÇÞ#íFGÕ{ä‘GVß÷þûïËYg~óǰnyYç€s ì9€=iõÕWAóØÊì Iì»ï¾ ÒRRjÇŸþYd±WÝpà aå¾µ×^[¶Új+Yxá…kõõ㢋.ê;vlµê’yî¹ç–}öÙ§S³ÆÇ´éÉ'Ÿ @‡…]¯cÇŽÄ‘þZ±ï!¥þöÛoÒ¾}û(7l¼ëÑG->)€”Zµj%'žxbè#àO?ýÚÀy@• Eº-H¤´‡ üÞxã««Ç®‡„Œ:–¶¿õÖ[L™ ðœEY$L.ÒmÊjàÙ®]»x´é>!uS/Ä}LB°ŸKîS,Ǽ¼sÀ9PÖ@2‚P'¢Œ A­øòÈ#µ$=šÁ½Ö?Ô§´5«-:tE8Òð Úf÷ÚýQ·ÂáG!W]u•Ì7ß|Á‹sN>²ºà/*kœ—8à€ -~xÃb_4Ê÷L»žoßJg¾ n>îøyç€s l8€“YCœâN Px&šê àƒÁ5šáÇÉ [ N¨!<qàà(o‰½ ‰'™X…?¿˜c<%‰ àò°Y_¬Ü„ ‚çe÷îÝ«AkH˜±ŠÔʧ÷ðš>Zß²Ú‚¤I¹ºÚ—®@áU!„Èû±÷Âä]@¸Â;õ7û*è6@c…ïÎfÏâÊ‘¨bÀ@¢2ue̳YÅçâ㬟ºJ~<‡¾>Êj÷}š ?îÁhàÇזּĶ?ÊBHµÅP(™¤”ŠKÅI¯Ç9à({ˆíGbˆ‡ bŒ¸ž!C†ç•ø\Ö1êSâíp¶i,áhg_¡>¤Æ•W^¹Î,+ùÚ@]'±†iðpÜi.äØ\Þ¤÷Ã9ਗ„ ~Tjžö€f˜Ákìë“­0ḛ́õ£ØXÂA‡qìbF´;&YVò¥Ë×ð WÀCÂKé˜uôl›ºŒ}1¾w8Z$pˆÁ›Ò²¹À„ï¿ÿ>8ÇëGhá8‘߇#ž¤ü2B­Š”ˆ7)R&÷D!qšS ÷#g„”Eœ!N*ĸá¼åË4C6n @ oJÀ#Î6ÊÄYVHS†ç(ñŒY Kâ¤>â‰MDÒÃS–{¶ß~ûpLì_:“ýËêC¾Ì-Y< Ð?^xa\óü´óMµwl*Îz½Îç@Ys€šHM üdÁãÐÂ!&@‰T[[l±…\{íµ,Éæ‚K?à‰S iÈðÖ<üðÃSˆ£ „ºEÎ8Ö@O€7×yõ“â+_¦0…_|ñÈãƒW¥m<Dz¬à¤BÖœxzúè#¹æšk‚ÔŠt (ü^jr °ÔõúœβæÁàHH€*É,ð£¸ê#Ý\8À¤½ ¨·4f‹†j5"’éd?!N: så?ªþÄöŬŒ2‹ÏÇ÷Ú1à@ü¢mH£F´Û'*I6âãë8îÄvѺ<;iœI‡~CY}à¹DÙñLËÜ’Å#BÒ´ÜrË…wƒDˆt]_Fôý…þv,”S^Î9àh ±4ƒ3v=áÉK‰ª°B2ÁÉ„c$CœQl‰#$G$Eâyõ¼i"‘4e 2ƨPpˆ3Í้êúüóσ$–®/ý›•,ÈBC²mâ‘øT#Ýyª\‚÷­~»žÞÓ¾8“׳ú•¹%‹GôÉ ªEšEU‹J–øCK÷fåJµwh©8éõ´ ÎÁ .k&_,ȲÏÀ3^l0¨¹˜µ§‰Á{UÚ³Ï$e Åö“&TW&…¤¯µÄß8œ_“´Z€*6lsd©,ëR’ ß‚Åâ[ˆäÈ g)K;Vï™@ pæ`@µH»ʳú à’É…¶Þ¬au…Sh @‚sßmÁ† hqjJê@5‰”‹M4]_üÛ2é¨FY}€—{íµWH.ŽIi;Í#øe„ú©‘,7SÃÛÔ3Áç}ï(€¸ã¾ž\Àí5Š JB*ôŒvØa¹ûî»C¶ü,›v [ÊÆî#; 1,ê"ò$ZNIÊp=­Â³{+e_ªL0ùúË»@åY ñ.° š {yGØàâDÜ8»P?Þ¤\Cºˆ¹Ã›“Üœ¼7ÀÊ—i&\làâyF 8qU¨BQeÖ—a%I'_¬î¬Ì-Y<¢|CÞ=§¾}V&WÖÇ5¿^¶@mÃŒ1&f²œCe‚‡ƒ6f¢Ì,1°£f‚ ÖXcvŠ›73zÔExöáìÀr6ÌXq„`¦õ2Ãe¶Îì@ÊçÒNœÏ…âc~xæºÎ»N<uPÖ ÜõëW{AR¼QO!ñá±Ç±-‹ƒ„´˜dõëY.óHH ÐätŒ‰™ýÿûߨŸ¯´ãbÁ÷Ž·(ßPLd:‰ÁkØc;Y\žc× üâkH–q~|­ØcžŸü¨ •p}àG&¾«t&îÏ×2·¤ëÍâuû¸§1äØîù½S¨pn¾ùæ¨xï½÷^bq#"f¨¨ˆÈ Ï̵%¿‰í¶`ë±ç÷m·Ý\à d¦,Þ}ü³¿øâ‹á\ì6Îó˜ÕRÞt¨+QQåsig¥K(>æ7ªs]GUaÛ³ÜÈCª?XÖ‚¤qŽXXè ÄÊà bY}`N½i—ù³Ï>;x²¸**¸xu¼áCwu]ç^[à4<¬ÿá;áÛ*FµLy<°å‹ÒlbÒÂd¦ÜÈ2éXˆíËׇrk{V{³¸âçÊ’H-H\H(ü2€ÛªÐqƒ„‘¤Y ”Zi ðHzð̃>³Q\¶ ð¥>[I›•¸7°âç\Hˆ\·•¿ÍœûÌ¥uiß¾}íñ1'˜uÂl釴)kPîÃ>”oAR®§ÉúC|³¥hÒ}ˆ]æá—¹ÌÃ#¤<¤=6úiD<ïàFŠÆ.Eü¿›35D Î(–†˜˜dI†„-äË63-yŠ­/ö¥-ùú0-ÛY賋SxZ«—s4<&6 ×u¼÷òͼëZã?"àÂÉ ?Ò"ƒ8õŒ3 êTÕNÙÀ»¨Û9ÊÇç³îç6$T­YDHA»‘[9‚—ó-Hjeâ=@ É•9ØX{­­<“k<2—yö8KÀ7œ/òøbbÂÁ»¡mH¶m½¹.'Oõ™.Qð‰nš{’ý˜"ÛÔtŠŸãÇÎRqÀ%ÀRqÒëirà8‘ Ië¡C€žvd£øM1êKÒO±¨¨-ˆj.ëùEýÌØê ,wpê6»c|n¨ãO–¹gñÕb$ÅÙ;6A¤A£tò¹Ì#1²ÑW$<ËI=¨M|ðAam8$?€ %4 ^z|‘wÕórØ["Yæ‘Ϳɼ GË;óÍyPì7@ ~ìpÆGæ`濚Ÿ,GðÁ#1±a#Ø(TÕÆýpå•WV/ˆŠÛ%—\9° vWé© †µÖâe3­€;žuæÅ—åNV ¤.¼2±Ù±Õ“×Ynä”å>¤_2v:¨ PÅÖWý¾ì²Ë‚ƒŒ=3Ýì…Y.óLžFU‹´H–£n¸!LJp‹ç|Û¶mDÆþ òÓC*Ñ}œÛ–¿LnŠÚÔî•-uÓª°aŒßCu~àh < ¢ŒóÛʃ q›&Œ;áÇëà\EÄ`‘jŠ>ì`dÆÀ9•©ÒîëØ±ãµiÓ&¯K»ÝÓÐ=ªDìM±íÈêBU ,ÍÎgíqÁÇnBY}°û²\æ‰YÄ )íIXã|r‚È7׋L7³æãRÏY¶ÎºÍ­^°­ [ÕÚà{ç@sÀÄmb{õM̤Ÿb5'@€´Î 8s¤ É*+°ÜÊ¡îK6Ã|vÃtÙB~§câ{êJ[—C:CJÍRçfõÛ Ù­žÙ»*¨¬.°š«r]Ç®kn]¸ï`þE–8Q°³Ýæ{ç@ÙrÀ%À²}5Þ°¦àêJÔ‡ÅÆV‘#^ë É /½8¸I_8š¢ÅÖ‰äGû‘T²ú`ת÷#ßW‰î:‘‘æœSPcv^^—"8^¤Sí Cõ}~à( t,ÿ—ä-t4-þUÕîß¿h´öBµŸóëS"ý¬ ·‚J}=EZ·¯]ÆÏ8*“€•ùÞ¼ÕΆr@3ï7'Ñü@÷ºÑer–:UdÉÜB« ­ÙïsT+ì…ysãÀïºñ‘ª/‘躬¨{ݰ繃JãøêwW"+ñ­y›µ9 ’ÝŸT¢S›ÝÝÆÿ&²Æƒµ‹I¢çrá ý”s %qÀ½@[ÒÛö¾6G(ð½¸NN¥9ƒ®jÞy%•ìt[p߯|-òœ:§t]Ud¶Õs«"à°ÒfÆÊï›÷À9Ðr8àØrÞµ÷´`$“ÔY壜£Ê¢GÖ¾mòuÊœNÏ{Pymæøç@ÅpÀ`*æUyC›–#Ô3sÈs"¿¿žóÒ츠Èëf?ÓíxÙ|i⳯¾úªôîÝ»‰ŸâÕ7g|öÙgÒ³§®jREÅ­&jwùÞ9ÐÜ80àR]h‘ÅŽVµæ"žU¥ìÞ0xÚi§ÉYgUvmó•?vÙeéß¿¿`ù¿*oaI90q¤Jv¯éöªÈ¼[+À­U»ú5î¯}ÎÏ8œÍš.6ë×Û‚;GÌÝ7×+èõûCÎYeöµsqx-˜-Þuç€s` §ðšF| 2C7‘•oÌÅß‘ZÌÉ9àpDpŒ˜á‡ÂIc5öNU†¾œË™™{×c éŒ7³’8€Ål³Í&sÍ5W£›ýã?Ê—_ª¦¢ŠfžyfY~ùåeúé§·Sµö'N”çž{NÖ\sM™e–Y䫯¾’×_]:uê$}úô‘gœ6¡8_ýµ´iÓFfŸ}vyóM­¢=zÈb‹-f?kíÇ'~ø¡¬µV†Y¢VéÒŸh]ú*½Fç@p€<šýOyAãîžSäË‹ÔQ¥“®{·O<Ì«tdsàâ‹/–—_Ö‰W èñÇ—c=6 qÝu×ÉB -$ƒÎ[û(·Ýv›üûï¿rÉ%—ÈÖ[o-_|ñ… 0@6ÝtS¹õÖ[óÞ[ì…•VZ)<§ûî»ï>y衇dàÀ²ÓN;…>½ñÆr 'Ⱥë®+“'OάfôèÑòüóÏg^ãä'Ÿ|"ûî»oÞë½àØXúýS‡Gh:1Ï[ú,‘톋¬÷ŠÈR§e§›:-ò§”!î½÷^ÁÛÁ{©¥–’«¯¾Z–Xb‰,€Ìgœ!—^ª¿Jÿý·,³Ì22bĈDݺu ¿?þX³ú(]qÅ2ï¼óÊúë¯/›l²Ið ôÏM7Ý${î¹g(”óÄO„K+®¸¢tÐA2ÇsÈvÛm'ýõW8¿ÑFÉ·ß~[ëx饗–sÎ9'l·ß~»´nÝ: úI’WžOï¼óŽ2?ü°|ðÁòé§ŸJß¾}ÏØË/¿<?úè£ò믺t–àCÿ;wî,ûí·ŸLš4Iî¼óÎð®6LÖYGRVZc5ä˜cŽ R-`5jÔ(9ôÐCÃs*³ÚÂ}ýúõ Ï ¯¼¢ÿU„$KŸÎ=÷\yðÁåí·ß$gÚ¶ÁÉu½õÖ“_~ùEÆœ[³Ú±ë®»Ê=÷Üú÷çŸÊŽ;î(sÎ9gvÿý÷ðDÚ|ÒI'…sUM(xçX0«¼`“r€5ï~¸Uä­EPq¦©Ã<"Ëœ§±yëiz~Qú6ÿݲ8ðÇ’ °Új«ÉqÇ'7Þx£l³Í6AÂZa…À•—^zI¦›nº †|úé§Ã@ ¨]yå•B=gžyf({Øa‡µ£÷:Tž}öY¹ÿþû©ðä“Oæt¦YgUQ@†z¡UVY¥Z=4(<ãŽ;¤ |à°n»í¶Â¶ùæ›Ëª«®*çŸ~hß ,TŽáú‡çZ;,‘œ^xáy÷ÝwPŽ92´›òÿüó|óÍ7áV¤6úöÚk¯…ÉÀ3Ï<#\pAc@9«-´óàƒ–=öØ#L2bU.uÔ´ I&L Þ{ï½ÐV$^éÊjÇE]ÂŽ?þøði78ªÞ#Ì%©à¾÷ß¿Aá1n ¬÷?Ó„äÏtW.œs}‘¹6ÒE_§cšðÀZr`OZ}õÕÛ?üŽ‘P"‰í¾ûîAú@jCJCíøóÏ? ƒ,*ÅÃ?<€(u¬½¶z+-¼ðµÚIÙE]4lÜkªKf¤”}öÙ' ÏLâc¤¢'Ÿ|2ªLìz;v ÏGúCjž‡”úÛo¿Iûöí  E‚Í"€`=úhiUB"hkµjÕJN<ñDéÞ½{PWþôÓO¡ œT¯ºêª ÇmA"¥=L0Z7Þxãꪱë!!CØÿÞzë­P†ÉÒÜ"‹,ø±Ã;iÝnÌj“˜víÚÀcbƒT‹´‰ÔM]÷1 Yn¹å¬ª‚÷€³Ê –œƒîT;Þ,"½ôŸ¥ËŠZ½+$JÎãX!’ÄÀŒ 0&µàð õàЂÊð®»î  ê9ZȈûÒXáœð@vžsظê"xÔ¶ 7ÿüóu! „S À ~úé”Âýh#ÁÜóÌ£Ú%@¯W¯^¡o—Ò*Иcši¦™Â϶mÛ•g|-«-HyðCHyF8 =õÔSö3ìQ£RO×®]Ãï¬6q¡¾v,¹ä’'L à¹盆8 ášßS’ÕØðšê‹ò¹—»$gÇë²²ÖçŸbaLõRåjDÔq .¸`ŽpA݆Ú  p Ù¡fKö7rlr¨äðà„PÐlˆºŒÒÇáDÕŸ.]º„ö ~Ýl³Í‚äóŸÿü'8• "E24BšÃÎI›žwê©§ÊÎ;ïΜxˆ"%ôØÞ)@“²¨F !TŽYmA:3fL°‹†¨“ë"¤´ 7ÜP{ì±P >Ó¦Bˆ6@´É5/$ËÆ’:å ß_“ÿèŒõGѾµ«ÈC:ÛûðhŶéj–ñ_ÎiÀapC, $>$BÀ § Ôz¨î–]vÙà@CÈI&”·z¾Pçá$sÊ)§„ó"ö7jÔ¯Gu·Ms‚Á[ÓŽÃÅèÒ#êEÚÈshìgØób)Éë–[n j^€ðD0¹¯oß¾¡]HÃH–€íüyä‘Z’Íà^ëöRÚšÕ–:‡"ixm³{íþ¨[áðˆ#ŽêÔùæ›/ØcqÎÉGVüýî»ï³8à€ -~xÃb_4Ê÷L»žoï âæãŒŸ/žöy~5ÕGôé¶¹È<ºMßøx©âRÚ;èðŒC-ÖXB%†-%&â¾è˜Q›Ä_ç8_ü³{Tz̆Q{-¾øâáV¤œ4ð^l.DP$²ÆæE* à©©Î.œ1\c >|x¼°âÄŠÂÃŽòØ«ˆp’‰U¨ }xJò}pù€ج/Vn„ Áó²»Úöb€@ÂŒU¤V>½‡×ôÑú–Õ$MÊÕÕ¾t½ ¯ !$@Þ½&xìÂÅÞÁü¯°¯"_ Â8áûb9è ¹uõº‰l£®ÉmŠû0«ï/Ó™•ãMØXB•†+73X#fý PØHò F~fâH(1áHÀ€‹ãNÔO} ÌÞœ°%9å8@\ U HTY¼7›U>þe üÔU ðã™ ôõQV¸ÀèÓTøqö@?~gµ%¶ýQ¦b²W ¥’IJ©ÈU ¥âd³¯GY±ç}¤*Çæaͼ4M§M ~¨®°{XÜM¨/ö [ Á¹F €HGØ}ˆÃñwo»Ž©¿¸Ç¼Ù¸FìÕV[mÔIxù¡f‚pG=C=+¯¼rµ{9žuØ: ø€ÐlC}†…yPŒÏÃ4èâXÁàÍ‹—!3#lP§ û ª2$Bžõý÷ßÕžŒ´·wTdsÏ=wPSQ³û¬¸+T|é˜9{&‡d&)Wâ}óŽ‘àŠ!¾T‚F8`{–¦!C†Ô9áÀ>ˆdV "<…xã]ò´#eµ)’x=¾'ê³;ê@ fØÉ°9¾ÕRöéDÞÛ_³¯Ì¡ö<¿öj×ë­±M­ S_”ª)¸ˆ#51£%æÛ€Q}±_Ä]a|<)KÀ0vÜÝR¼ÿl@d`öÀ9JþùÆŽÜӹޣĵ×^ T2 ö"TeêH%}Ì`ƒýÃ6{ €J=6œŒ°ÝàtH¢3/<®ÌŒW#[LÿýïßHW…Çãõ×_aú€m g0ßb‹-BŸx.ø"IÆqW€[:f.~ï…0À˜ F©ûø9&î/Åb‰I ‘Ñ 3Ì liªOb$n.þ¦Ò÷ó› ~¾Þm`Å·”²ÚÀÿªeTžhˆ‡4úè£BˆˆýnN{Àæô6ëêËØoE䶺ŠÕºöÓCê㼄z| ›‚á’§êïœg[­²Mp; ’ 5ƒ7v¤ªtL“Å~õîÝ;€^jg…ŠˆëÌl™ÉcÏ¡.$¬C9$€Á¹?À¡ÒÄ¿å–[É©Šú À °ÃÐoÁÏ "´ŠQé eÚ«¤/Vì$´I `5zñÅe¯½ö ’&±g1¡ò"œ‰B <:!øAp:ší·ß>+6-&Hè|ð8£–OkP_&TÜ´Á¸iØãŠó ½|¼Ý‹M>âÄÂw6ä»ï¾;>ŽZ‚ñq¤AÚ‡êÓÀP&K«ÁD–ÿETÑüßÄÄ7Äd”ÿƒ¦$À¦än¹Ôý›æ.|F]´?;]dÔ§µ[õï_"#?¬}ž3K«ªhQõäœAÕžÓ€pÛf ŒPIšD•nJ]±_”Åõ‡$>ޱ¹¡e@’cà`ÖŒšÐ¤*3ºÇÏB0ÊûÅ@Yħ¡mH£F´)…Á‹ OÅø:3|“`¨'vn ì„S :¨E™ÝÓúi„#R ýÅÖ“¶µÐBÚaqW3h3Q` OõáâNÛqT0×÷t¹iñ çæ›ož{ï½w­‰ €ÄC /–HÆÄ Þ0!€·•CìùMnNø‡¤Žˆ”Î=¨"™°p.–â¹7ŸÖ5;¼Í—I†p ÔìFx‚š&Õ44H½AÀ, ÞîcOº2¾wúj“"»N6´€yLLxïLLÑ0¨O“O«qöÙg‡‰!™j¨+5g¨c™ð¿›‚›‚«åTçç‹ô룹ƨÝNíx?Ü‘k 7XíSoì ÿÉê©9,7«-§¦ÓR@13ð" "É0ððOU a»#é.ÇH9Ø·4ðÊd@RÄCçQ?À›&R>QPàŸ0…’ {ê…>ÿüóq$}.æùƒA¼i±ð0$¾  5àrÚÇ€JÓe—]¤=;Ï…^fÔ 6Y÷XÙxŸwïQm¢&µ˜¹ø¤pe`ýßÿþRqÅe¦Õ1“$R¤&€¥ÓŠÛÄD‹Ô¸HXxÿâýÉ7ƒ¤gög›LáÔ8’c”ú°Ñg‡Ã6Ç´tcÏÊÒp:˜èY&Î!Qó?€F•µça¶´sH–o÷±TxWô“6Ç„¦c·Ýv ÿñy¾%<2ɪC&κ40ù´ð õ<& ¶Ø¬Á„ æ‰àE+C¹RÒ¥v)kõº¦=ȧ ¸± :+)@“ÿùþ6‘qƒE†<§‹Ä®*2ßöºfÞu"8°”)¡†#° À¨k°£àxR™„„Ô„ )ȼæP½0P³g–Éà Zú+þѬ¤3fà€àÌ=‰Š™ù#5X1í°Ðì˜IîÒï6Þî›1I>=9I&Œ¨è^«¥èökÈDñ÷©èà^ãœÆã%ªÖIT”¨wdõ5•øÔøýVŸ×A/ÑÙt¢ÿ艂BõùÆð| kÈ[…ª¹U彞¾ 3õDxÂiLÓEòþV5t¢¡Õ×y®J·‰tõ9;ïeÒ¸$pq’||B’¼³w’ôë“$ÏõJ’×±b5÷ÿš$‘$ŸŸ$ß\—$?=”$¿¿š$c¿¯QN¥ ä´ÓN«q®˜ôYU“‰J¶‰ê‰zæ&ð1&•ø „SjKMtâŽÕ晨ŽU¢Kt’¨*üÖI@¢ p¬v¸DU«‰J¾‰ª‡Ã9®)†cµ%jCMøft"Q}J`áXUÒ‰ÚÃw¤¶æD'1ἪÃûãÛä¢ê¥Žã?ôAód&ªªLTò—hƒJ¯áØÚ “©Dó|†o6+¨…g(¸TWÇ}üæ»Wõp¢!5‰Nþßè“JùG< â¹<RC¢&†ð¿¢m¢@îåœY¨Ó¾qú¢ªäpŸý¡ŒJщª„Œ%ªvµK Ú+à&êÜßûµK€%›J”IE?댙,,“Uê›\[=&ÿŽ™8*7».“&7¤±G^!÷3SÇ~‚tSVLRû—µcfôY³zJEH& dÕi’gÖµ¬sf7äZìt“U6}n¡æùêÒj鬵JhK"©ýÔ*çÝÞËD•èþªÃêmÙiÑÜ~z=îóˆŠçI–°BÎs¶Öµž@RCraÃÉ©5/ªêúˆ{M2F Šz Â)Š µ ° vWI© [–ŽºÕ°z\ji ÌÐBàqÌ{ÂÆ¡ÄNF]|ÃØÝ¬žêŠSY¼á^T³ØAq’BËb’^\/*`¼†‘RQËÂ;T¦ô'3obQ«ßöÔ•O«6û6ê[êµx¥R/NJ8o5$ÞÐÚP×¾pXW¿VAøXÕQ¯Q•§‚\]ÔN×nÿ‡–Ь…Î Y¼uu5'j2Ë8Ê) L¨˜ð¢L;‘ÔU÷4½FŽÖ/ÎÉ©MåÈ~²~7}ÖnöâÏÏžd[‡9u«?P»v… ;ƒ wÀ¾TD}ÅN¦3ÀùÇÖ ¤-|+Äq2˜Ç‚ÝÁ§T¦F¨‰ Å›;ž%+à*e&ž‡­“oß¾ck{ú?D«Š ÜÇ ØÚŒjÜL q½YÇLP颾7†ˆª?>Ç5€žÿ½˜—vOC÷õf‚Áèª;U&TÕ)ãÕ̇৯o5öUx×VóuÎ?[k<%Ä­dîß¿IR†•¬AU ~܆Äeü¸ÞT³ÓøÙõ÷W{ßß¿UÙϪlhu’³µJbµH?¢:j,e×ÕÕHUhÓçl=µŠ·™A×bTgªfHÅ‚‰H€´ߊ¥¡‹Ï#51Àç£,­1€”¯n;Ÿvޱóìé±ÏŠÛ\(øñ¬,­†Ù ¹“MâsMq\CÚ¯_¿`€G,vª<ô+¢É·=PDዞwÞy!;|)rføÈæ[ì³ÓÐ~©V;æœCtƲÝÙÔø·Íñ u{‘ÎËO3LŸsp¨Å$îïyf­Ó~¢~ þÄË·>5y\êrAbÂC6+ilj þq{ZêqÆRKe…÷Û9ÐX˜5¡JÔŽ«ë†ÈØïsZµÚñwͪk"¦©½z@ÎÔ#¥vTPË?î]ò”t þ» 8å-YÈcPÆ”Ok.ßãÇ¥ç€`éyê5ÖÇÜÞÛÖv»®ï¶©~[ÔªMnÿÐF]ÐpÝßJgúÓ«m,M8€t\(hØÏP;"¡µž>]2÷›äNÎç@“rÀ°IÙë•×àÀu°øB3Ë|»®nÙ_gKÕ¸Üä?&OT0k-E}®*Á?>­²¡)!¥ý£Þ²›£Æ@•ÄÒ4Ó‚êá¸xÈ ÐØç“Ð:0]ƒÿ.’ÄDâ£@'ç@C8N`^vHî7Œ¥ÅWó1‚@O–ˆ1ÂPM¶‚2ó9üÈQ‡{.z~<»Hûƒ¾žxYžTùê*åyÚmÞÄnÛxc¥=¨âçâyFŠ¡e–Y&>=uIÅÖ_fÄ{ê|¡\ÚªsÉÈ€û·n§›Ú¿Ò„×"Ï‹ƒ«ñŽÝô3®ÅÒ¥õÜj¥ïY%¡©º 0kßE˵ª]–3=öÈ>ïg›Œ ;­7{[dÅe€$V%f 7áÆYÈþ@šˆÔ=¸.“©Áb^ÒÏÀ» Ð ƒq:䋤=€!u‘é‚X˜RI‹‰E*ÄèMª-\¤Y’7p²#0Ð&ÚK»³2[àRÍêùi²«Ý£¤„´õã=9௶®Iã¦Tk*ÀTƒÔ~F|b3¼ÓôÅy¹å˜bûÒÖ¯k`ÛréÒzNÖekJhu©]Ɉãäp´( €d'w"± /’BŠIÄ“×Â`‹¤E%é d$GËËp/Æ_Ê‘FO(@ °ì⼀ɋš‚6ÉÈh;CP(R"-^Vd§'w"îîvL=:Çyîhuâ~KR\²ùwîÜ9¤«Bb¤^Ò%!‰’óŒè8Là&€áîO¿HÉÀ’«ŽþQËÁóBÎ>Òv±ìñAäu$€ÎÿýßÿÉŒö“§1ÝRa‘L—åNˆ…ÁøCð×ú„ÄJ0/½H‡µ²ì ’.uó^ÈÏeµƒ„¸CÔó ~× %!/<é;YÙqñ¦ꯋÚ%*•õï«Ó—å\í‘ÒÒô¯Æjü¤|üõé)^ŽØÏÚΔ[j©«¦hKS—s^ަn¬Ë~ƽݶH×à¿Îç@ ¨A¤8ÒT@ÖA#§¯åB$«:q&¨! P4UÈ™G=dL`1P2 vŒãeÈýÆ5¬yEЩ- x!ñ!ç `XvŽø@¢=ä.LšzöìÀ‡¸GtŒ¼‰,}bùž‰á1ðã# b!$7²3̕ɀAž–=à!øÂšÉÙ#(C›ÉÒ°‘eº-d„`Yž†\’±*—ºH0KØ ?ÈÅG.BÀœwB[yLRl¡Õ¬v0¡à^\»™tÐnž /5MRh?“@µð˜íä‘//Pû™:ºd_¨Qÿ´i§ž‹'‹¬v§È&ªÝQƒ„·Ó¸µ,ðãž97™K%ïÎ+èÊóåw±ú}ïp8êá@ÑH}H^€‰qÙÛ1YXn…ì, ƒ ½=R¿˜‘öLÀ‘x1ê il\imT)O¨ùPaBH*¸ £Ž´•ŠœÍn#¡±žmAý X`ÏCŠ%=’¿&Ò ¡fD¸ã5Õ¬Mì^€•˜ $%¤`$Ç|Б…€>’™ì<“óUV[UÚ0¡¾4égÀ ÖœCz¥­¨tQ žC`ë^{íU«MYí€ôÛ&í@á¶EÒ!ÇÙÚí|zÿ–¢ö±Ý¤4-¶9¤º,š¬–s¬§v·¥UM©©°ò9dÝëçœÎç@ 8P´ ”g"A ºé¸Lptغ&¤ –ß@bÁŽÕCWö޳d¥‘bp6B2x ;Ï9l\u kYñIYE&xÔ›€jWÔ«ø%#@ à¶<Š€Ò(ß—R%©{bBÂÉœgxfÚŸÕÀÞš] 3BÕI6Š˜¨“¶Z|QV›(__;ºwïx/x#žYýØj Ymå\ŽD?TdèK"¿<¡û5¿ïJí“tÏ5'ç€sÀ90 9Ð °¾ö"±aóC} ®CZAŠ`]+¤?$¤/€É5[šP+¢ Dý†JÎ$$îCâaÀ†¨ É(}NTýoÔ›€4`DBÛuuQTT¤GŠBºÓìæ°xiXÞ{u Z¨zn¤èe±…B€xV[PÅîØöP óºéŽ6ØjÕ¨Gù]шv ù¡æå½ÅÞ¦…ÔS« ñpÝwYý^]Øo¸z`öY^mƒ³«SÒ,ê¤âäp8¦!$æk/ƒ0¸¡R´ìÞd'£8 8 ÖCµIŽ:2~ãȃՃDƒC ’6GÎ#Ù`ìÂXµb:í8\HýAzD½ˆ•ÅY´’ú÷R•aäE=8«Ð@©§”'k;ýABl,ìHN¨;Ó’Má^ë€Î3°C¦ÛàÃPj¤h»Ïö©®…µâ°ß±Š5¶?ì“ùÈÚA;QY“u¾OŸ>A²d¡Ux‚ƒŒQ¾gÚõ‚öÄÎ-ĦvB'ç€sÀ909Pc5¤3$ŽBœêj7R’“9‘ ÉáÈd -à‡' ‡ ÄR" âå ‘À œMbj]í©ë Ký¦:Ì*Ki¿õÅÊÐ>ìž,%êÏXEjåÓ{À“:¬oYmAÒ¤\]íK׋ê–0l{…àNÿì½p?6Ö¬ÅVëªÕ0ߎ-SWÙr¼†ô b{+¼À{4Þ±ð5N.üᇆ{°ƒcof•p¤h´ ö^é+ŽNØXQ¹SÇ+¾Þ¹®·° á f&Œ÷ãkK#ÑÔé1¡ñÀ†Ìd ;8v]4qâò~ìhAXr(^šx8â!” ²Ædöô9»Æžëñ@Â9þñK~Ô…ôV¸p=î ÷A´›Á.?Î~”C²‹û–Õ$ÖúÚG]11É(ü¸²ñ;àþbÁ/~~¥²80)1B æ[fòxŸÊ¤B5Ð!ù³j:+U#M*ƒ£˜9ma¯e 7¼š¹NÏ¡Î1ù+”ОP?`Jl(+ë"±áv<¦qˆ"Ç6´<ç+ÂŽ°cï·ß~ÂjßNΖÎÂD„"¸ÄlÇ—B&¬ê‹.º¨ÄV†=AÛ‡ö1fæi—µ*…MPž6frº.ÿÝü8@Ø 1¨¨ÓcBÂCÃ`!ãm‹„1±DP[ãÔ…´‹Ö¢W¯^!æU9jqU¸®64¨¸q¼Š£É €²X0±CC¨ÑY0ÔÒƒ!}[¨ŽÕ‹ à;÷Üsƒ£q²×]w] mòF,/“WÀ±Øÿ]{Žï•Æ’ Þœ ù2ÏNc ÅôÙoÛ§¥!Ô­€Ìz46$Ä,döM@;ª'ÆMõjÏ©kÏ@Ñ$ÙSêz¨_k4˜,‘ØÀâ1‰¯L F6"ï eœ±ŒPë£ÂDõj³(!â4Ex (Çó«ü(¿Î:ë'£† ñØÓ1`[ǃوøØ~êet衇u+N]¨CIš@,.ÞÌ~”Åá ³/ J≬õí¬^ß;šJ€Mͼ,TAÌÖDfævTRõ¥*#VŽx7ˆ™:ÙOؘ±_|ñÅAu…†ÁõŽ% ‚ ¨Ž$,{ `‹‹>Aå¨Êð€Å悃MïÞ½ƒT€¤¨#A`„ÓYW°í\vÙeAýH½8Á@ئ°E1x¥' ¡@%þ!ÑtÖ2@MÔÒÇ!)ᬄ$HYˆIüHÎó}àdòžbHp.â]£M0U1± ¨q  xR&R¤…ÚÄÏÁ®›ú—ÉwŒê“ïžo›=eFh`â´w6aÄSOl$Z«n¿ýö–d÷v$Ràÿ u.*H¾ý¬‰¤Ýç{ç@%s ä6À¦``B¦¤7f® \éøÃ†>—p€‰Ùô*«¬Ç2£ ÃNÇ€Á`BÀ{œ=…Aˆ2؉ÉnƒŠ‰´cxcz¨lqP€\ÔVYYW@B;¨Ïˆz±?ÃÈ€g…±2e¿?DdÐ]"ojŒàó‰<0«6yòTk6v3l³ð»YøÑâqx $Á41©a"ba&|;dbÒB’TŽdø!ñ©øxw¶ *œe(ƒ„Øb’8¶HžH™FdâÛ³,?ôI#^¾LÄM¾3l˜iÂ+Q EÛáäh®({d$8‘1æþûïv—Øy¤1/‡Y8u>ÄÚX ¨Î„‚Úï¹x x¤šfÙSx66 $:TZx"‰2sFJ`À¤<þä8óe]a`ä-øžú™Õ#Áª€z™¼£ ´–ã“2eGGj¸EÞÝGäÑnºõyï`M­1ã5&°-I¦Þç‡Êì~ðµw¾‰žÇØòP2Ñb‚ƒs vl‹E% %¶Í!@ ¨"¡Ë hBxàòýÙÆïB‰oŒAF<ÃêaÏo¾á¾}ûVK²´ Š'Hªh'PÍ¢! Z×É9Ð\90õF rP8ðšcf^*à³æ Þb–N–lЍ¬´\6fóØ[‘àÒd6O\ÐMåD$W À7j(D@—²\çYqÖÜØÉ'~ ¨ƒ0-7êœ'òXw•òÔqä}E¾»Eä¯_u”Ÿ `¢ì8ífžªMÇÞ…j©‰ÉàÀd&&ʰqûêO(¶•Ååãcc´Öùžx߀ ° ñáIŒC ß6hKn`¡œcK;æÄÏIóí¡z%ô†vîµ×^¡« –ô„üïn¨:ù¦-!½Õ‡Ú§fЄs0±bªWì}¨Îˆý³ì)€˜=³{÷î!¹7^y ÒšÅ2ÐZ€$”/ëŠÕ·— ÄC‘™|> 1¾gZ?Ñê Ùyó^º"Äù"?0ˆ·Ò ¹u5ÚDš4e¬‹ãª}”5Yëo•›³×÷ûü,T• 0ÛwÍϺ|ƒ³˜XÉm¯ãGÖ7iÅQ+‘)¡åȪ'ÎU›ïÞºÎóM[:Át¹¦àEúþÛ9Pnh’L0MÝIfÌl± #ýLì;x½šÅ’’ÁàV?vT–HˆP”‹³§ÄÏÈʃ£3uâÆbB¢«/ë `9ƒžõ§V&<=¿¾ZdÀµÈ¿ `¹òP~Aõpíu«ÝZÿž„Ú£¿ŠVxW;"‹ê®z»fX¤öý«¯R¥eXݽnä!mb ³vcüL)8€–„‰¤“s ¡À¹1r>X`º³€Qúšý´pg/–˜ §gßÌÈQÆT׌9¶r’$걬ܜm}T à—ÙÂÇ@Ño%@IDAT–ÒŒ#Kj¾ÖA÷äÊEÒcUÖô+†º©7&[¡4ç"cUuÉB»8LÝ:-ªÏ®­9wöV£­ªµ`–]rÇ,¬ë€Y(×›´HÖœœÅr<Àô T$ÒqË”QHÙ¦.ƒjɯb¬± jÕN¤Ç¹í·—Ô9FÁ¦ûn­µîûY<·Z`/uÖœI€òŸrdz÷Îaº®W«hÌéªÀ’ãµoô×É9à({4[,'Η£³Ê4ã‹àn©@Sn4ûÚŵhé³ueâ!U€©N?€æ¸A ìªuh›€Ï,›“$M²´ý')`ªÃ“sÀ90Õ9à8ÕYîlÀù†XþBi­GrN>«ÀrBÕ>$ÈÀU}Ü®S•t‰„ɦ³+^ýÄY‡Ð’VÙ×ý¬sÀ9P‹53³d=qª$wi˜zÒOPV2Y7m:›ÅSs OûYgYFŽÏšP#SSfì!ÂV(m­±“H•(,pê>“ôå>Ö]ã,Ç*`vÎ%jÙêi»ÆƒµïHÔ!iô—SÀµuûÚeüL&p¢ OðÆŽz„Çá;€wp¾<È”c¥2Oá N¨ žîd§"~Ïr˜DV!L>Näµ­DžZBäÞéDžÌ-ÉTë&2þ ¼R=ïùõi‘úmŽù&? ת á'È‘Š·ƒ7 HGÒ ’ ™°f¢i)ð'-+{gŒG¶¥©£xoãNîX’¤ãAhÄ€LŠFÊ#åXÒtÐA!Q?)õˆ†)Ë«“:‘äúlhÞ }ÀWžO CNW<ÊIÚ€¶ÏØË/¿<³¤ñɉ3è?þ,qEØÉxDv-’(@d"½"Ríº»LV,à9H•Ymá¾~ýú…gÐâ”dy™È‚D,$gÚÆzš€5@I 'Èöeµƒ‰+¬ÐWÂËXømÚe‹?Ófâ³9W,9˱r-?˲]?@W^Zry6S %÷fg Â'ÁÉ9s ªÍ4gîŸrL‚µŸP|K¿1Õ l3Ldg•67~oJ™ôјoUj|VPm–¥£å¦"/æÜtQ¯Ùƒ><"&cÀ9ä‘QŸÕ*Zß ò¢"Y HIäÌe‰(¤,Ö@$Ó“eÙy饗BÚ8Ôähe ÔX.‹zHŠAY<¸Q;˜Ñ’šgL‚ ¤BÒ%BÉ/HUÈP/D+SOÆÇdæá,EÅsˆ-P ’8`%q ;ÈE:=ÚG‚TŽF<×Ú ï»ï¾!u#ùˆJâi7D"–ƒƒXE‡¾‘®ÉÉFH4ÊYm¡ä,&铌X•K]5íHD@’ +ø°zmå}€ä^Î×òë¶À¼GÚÍ2eðÒ–3£ý,–Ðð˜¶áÉþ§yp Iðýƒuö}·Ú„"°›¬BÜüVÛE·Í4ÃöN"„ xŒ[óx÷Ó¢mÕI'‹ÚvYA%ÀB©­pÇ…T%;R%EN©£ž%_ìê÷ZKu9ìI¤ÃÆFÂxŽ‘X~ é‹°$¤À) éŒO ²d[B}ˆrf!ˆôqi¢,9ƒÙ¸&ÄÀŒ”²Ï>ûä–aŠëñ1RùiéˆTz<é©ûÀDzGÔŒ É1,ñ:uÆð¬¤a„H$Ú™EÄT“–LVHS–Îó*Èt[Hi €2^‚»ž©, GC¥K&Hsd#‚¬™ÇjgµƒI ¹“8,— …nt]UdÝ—t`.2øÍÎr‰ÈÛ{‰,w¡Æ®í_õ&7 a.¢`‰ÉbÐM‡  ¨Ê?€©Õ*Crõ"±ØZˆ úF¶î£ýfXáœð@vžs¶ò†•KïàQÛB€ 7PBØÞ,ç,ÉÉF#@ à¶{€+ÓÐ7€ËpMç.¶ü±VÆÖ%ÁGÚ$«-HyðC€²NB,÷uR- Õ&Ê××–¯ƒ'L à¹/–„ù](åZ_hi/W9Xp_uhè—›E·c€Q©BJ\X×Ud3µit˜;wÞÿ:ZÈP#¢Žc夣[o½5,g…Ú  p Ù¡fKjErleH(–ß  `À†¨ É(}NTýéÒ¥KhêMV$Aòa•œJP‘ƈ4‡!àÂóX¬›äúœ$ðEJè±½R€&e³Vµ‰ÛbǶjJº-HÇ8ã` Q'×EHiä]fÅ>Ó¦Bˆ6@ðÉ5/$ËÆ’`c9XÎ÷wé•9ÒyÍ·Cí–v覎›Õ>Ï™nUKùkz qNÎfÀapC, $>¤&À § Ôz¨î–]vÙà@CÈI&”·z¾Pçá$CÂ|ΈØß¨Q¿²`1Ä 2懋ѤGÔ‹´‘úhìgØób)É‹õAQóä€' €É}8Ð.¤a$KÀ‡ß€#+ˤ%=šÁ½löRÚšÕÒCâP„# Ï mv¯Ý*‰þ°êT<\±ÿᜓ¬.øËj,<‹K–?¼a‘Öò=Ó®çÛ×H†¯ŸoøY·ûŸ¥ÁÛCEæU7íù¶S=ö–;gbÀ`Ö‰­[ ÿˆF¨¿ø§e`0§îÁ†/rŒýÄÖ¤¶e«‹ .pè NÔ\¬ï×R'$²†8;ÄH™¸µã±Å[È 'œì4AãÑÈŒ”ˆ”ÃàiÄÀK|*1€Ü¼ízKس(p±à_°Í!ñ.ØÒ ØÎ,NÍÊ åóÞRìWdn1¢,¿?bëÐ.ðÞy_|K|Ÿ¨Q¾xT‚üÆæñî-üÀêÍ·'¤€û]6&s€µ9ü &€ã Õ1“*@™gsÌÿÿ7•JSÞh¥öÀÛ=í9ÐUC.°þô¨†^ž[Ñ}ž-5¼bÕ_LqŸö Ín Â€ƒš…‰àf³ßÅw0ófæK<ƒAÂ7ß|s˜u£"Õ2X}Rª#2Œ`CáÙ¬™4íùxÊ Þ  xà!}2@áÄAp1ÎØ”¨7½4ƒ2Òì5×\$…­¶Ú* ²¸•;ÏœiHG†-–@u#Þ'¶b®3‘,ŒNX°Gñ>ÜÚ)Èð=’ßÓ¼J5&Z€"´FØàÐ$0‰*–Ð,XfîEÛŠ˜Iß&±uiâ»(Ñp@Ä:"ÙÆTIš—ã7çÇ ã±‡ÝwYó!M«5LÕ¥'ä¡ý^% @ƒ5³sféYàÇ…»<ƒ3õï¿ÿ> DR…©:>4¤±xáÍ,6à½ÇL›?"ê+fã1¥ãµâkHpH š „H{”e²{±eÒWÚ‡äX_¬šÝçû)¬˜`>Øwq|Š ‰ @Ì Ò˜ñmáY xðî‘üÉ>C<"“($|Ôà¨ÔQióÍq ©‹ÉMLØàÊú´ ñ=v9)Iîï˜$Ï­œ$Ÿž$ÃßÖçÿ;uÛçijwItÖ¨š'Q'“¥tö›è ‘耔¨º(Q5P¸®À—èl?ÑA#QI Qe¢¶ ä²Ë. ×u KôŸ½zSõR¢Òdø­R_ÂF}*„ò*a&:Ð$êD‘¨j-шἪ)CûÔ 'œÓ6Q ›4‰†W$ª’Kößÿp=þ£Òf¢±o‰J™ñéŠ9ÖôY‰&ˆž¦íU/àDm‰Ji‰‚_f[t"¾¬DA2QÕe¢våDOÂwߤq‡á}Ú9Õ$ôÓHÕ܉æM®¿þúD&QJ»”¨ 9áÛÓ S¢Áø‰:m%ö]TÊsÀ·¦‰¥«¯j¸G¢šPJ´5žS]H4@¢êÜêSPúX}": íjLtB˜¨CW¢Z–èêÔ?äÛ×l?ñƒ¿Æ¸êä˜ú˜<1I~{9I>>!Ižê™$̪m˜<õÛ‘ç‰üóê̺ÖUõ¾ ÀÈõ4ž*!$:ÓMT…”¨d.Rðoñ'æPPyÊÖYí+Pé3þYqÇå€0Míp¤4, ÑxÐDÕœIÌ[@ʪš4Qut¢[ @õ°¬M¾1õ´LÔÓ3L‚TÝÀWÕ–T¨æ!QÍD¢6àðÔUÂwÃ7Q×÷“@*P›` €jO®QÕE?T’MTz Ϥïð!&Õd$ê¼&ƒ*݆ ý˜Ö”€®- 9¼6¢•ÁξŽÈ²ªÎDè›á1Ùª6#þùSS×ë6• {\ìznG5„½‡ëiB…„ý5Î* qL°:±CÖçDce)G›²ÚkeØÇ^Œñy?.ލñÊÅþ…OMœ¡Œø6ìû@ Š=}!„ó Ë a_þˆúçÔÕ*é•*ñ¢´5öxIÈJa3äµ­Û ß/ªKêDuiuØG+Ôý„?ð½R‚ê]¥Ó]ãvm®ðFŽÄjžÆ?<Ì4~þøz80ö[‘g–Ë­q7çz"sè6Ûê"¬içÔ¢8PªL0MÁ4ìs¥ž`Ó]M ˜T2 iÕ˜ø’Ø •ÈŠÇÃc9íHÅmË-ÕK»„½O䬀ÿ¦àE#šZ}+géL0QÍ?(Kˆ¿íˆÜ¢ªC5ánÿ¾"¨#ÊÒgŠ,–‹*Ëv{£ZJ ~0)+‹ôãki/Ìø<Ó^ÍÄ6–Ù²¨)x‘õœRœs,½Ž¦åkΦîßl=øþÕ¬úcóx;ޤ©ÛæQmªÚMûR¼öJàißœòsÀm€ùyãWÊ•¬`>s.ýS­&²Öá:3}eC‘/ÎÕ-ÞÐ-ù ç€s %pô—逋kÒî­QýÑákø‡&ñ>ZäÁÎ"£>uþ8œÎp'˜ìðÍ’“ƨ¨‹jN§@˜¦¡/ˆtY©"R¶¥›ÞÒ~“ĺwïÞ-­ÛÞßr€DQ†¦€%d®WUxCÓ8ýúŒÈLÝÕÆ¸¦nk¨§io vr8š3›óÛõ¾ÈDW^À³tØë9›áè¯46±î• ¬Ù‹9œåËÀò}7Þ²²ãÀè/E~¼W¤ëjºé °ÒEÙñÐä( t_ñòyÞ’rç@‡¹5£çd‘//ù¾†[̧*SÃ{æT§åÞ~oŸsÀ9Pƒn¬Áÿá(¨MGi ·áoåb:°ö“'ˆ°:†“sÀ9PŽph9¾oS3áÀçˆ º[½L{åT¦]u?sOÌ6ͤƒÞ ç@EsÀ°¢_Ÿ7¾Ì9 +)Qס«x×=™jÖ~<—Ó´Ì[ïÍs4s86óìÝ+7“8é/‘éç¨Ý²nÕós©Ä¸¢Æ,v©}ÝÏ8œ¥ä€;Á”’›^—s ^´í¨ëé–E“Æ©ƒ.5òC‘ö]súé/z„ªMuù('ç€s ¤p'˜’²Ó+s”‚ª:ýuÎÓt„z›ö웑ÅFË'›Ægö/E‹½ç@rÀU øÒ¼ÉÎ ÇÐÔn÷w鸰HgÍøÏ†êtÖåÕóTWÏpr8êã€`}òëβå«\ŒêŸS™¢6ùA.ç馞áäpÔÇÀú8ä×Å$Ã,{!û__¡ârS¶éf­¨®yc%æ€`‰êÕ9Ê“,"ÌZ‰#?Ö¼§lšû´½zš.v´.¥N6NΖÇÀ–÷νÇÎ8 N4c¾Í­™ØeåÚ,ù½ŸÈß¿ŠÌ²ŒH§ÅU•éa¹àé.ùF¥ÅîÙ«é²U¿_}õUéÝ»wž«~Ú9P?>ûì3éÙ³Z…ïX?˼„sÀ9PrôÛDä·~È¿P•ĨƒÒÌK‰të£ÊV¡žuÖY2iÒ$aïä(–»ì²‹ôéÓGØW‘ç5NøÞ9à˜ŠèýL.•Ûè¹`~ú¿ùŸÈœëŠ´™1Õ]„xüï©sþÓ9ÐxøŠðç¡×àp4„,<‹z–²ÕE,>ütOÙd¶òÄë*éלEq uQ¥½°sÀ9à˜Ú ³Í6Ãä¥Lí'ûóš9\læ/Ø»çh.˜8Y%F™4M»ƒÅl³Í&sÍ¥ë66’~üñGùòË/«k™yæ™eùå——é§Ï¿ÂÇĉå¹çž“5×\Sf™eùꫯäõ×_—N:ûÖŒ3¦ÕÇÕÕ7éÁ×_-mÚ´‘ÙgŸ]Þ|óÍêgõèÑC[L)ä¡qãÆÉ‡~(k­µVžM{Ú%À¦å¯×îp4#\|ñÅòòË/—¤G?þ¸{ì±0ë®»NZh!^zé¥åœsÎ Ûí·ß.­[·ý$Iä´ÓN ϧÎwÞyG™‡~X>øàùôÓO¥oß¾BhÈå—_Ž}ôQùõWM_§øÐÿÎ;Ë~ûí¼gï¼óÎð®6LÖYge5ÖcŽ9&Hµ€Õ¨Q£äÐC ÏÁk2«-Üׯ_¿ð úðÊ+¯p*’,}:÷ÜsåÁ”·ß~[œiÛl$×õÖ[O~ùå?~|pnÌjÇ®»î*÷ÜsOèߟþ);Ì9çœAÚýý÷œcm>餓¹\ ÿëX8¯¼¤sÀ9Pæøã?É PXmµÕä¸ãŽ“o¼Q¶Ùf› a­°Â @/½ô’L7ÝtA ùôÓO‡P»òÊ+…zÎ<óÌPö°Ã jG3î:t¨<ûì³rÿý÷ RáÉ'ŸÌéL³Î:«¢€ õB«¬²Š˜z2>4hPxÆwÜ!<I @-øÀ`ÝvÛm…móÍ7—UW]UÎ?ÿüоX ¨Ãôϵv Y"9½ð òî»ï 9rdh7åÿùçùæÅTBj£o¯½öZ˜ <óÌ3rÁ0”³ÚB;>ø`Ùc=Â$#VåR@MûRdBÁÄà½÷Þ mEâ‘^óµã¢‹. q{Ç|x´ ^yä‘Õ÷½ÿþû q ,ô?Îç@sáö¤ÕW_=Íc+³c$¤¯ï¾û.HHmHi¨þùgaÅ^uà 7„A–ûÖ^{mÙj«­dá…®ÅÔ‹.ºh¨cìØ±ÕªKæ¹çž[öÙgŸjLÍnÓ¦'Ÿ|2Rv½Ž;GúDjž‡”úÛo¿Iûöí ÜH°Yð¬G}´øH¤R>jÕª•œx≡HS?ýôShçU&é¶ ‘Ò&ð{ã§xçb×CBFKÛßzë­¦LxÎ"‹,&é6eµðl×®]<ÚôŸº©â>&!ØO‹%w‚)–c^Þ9à(k A¨QÆ€ Öü¤€ •á]wÝ$Ôs¨ô¸/M€•Î)dç9‡«.BJEm róÏ?PB8• öƒN?ýôJá‡þ´‘àîyæ™'œôzõêúp!­‘@ &¤Á˜fši¦ð³mÛ¶Aå_Ëj R¼…Ç@e„“ÐSO=e?Ã5*õtíÚ5üÎjêkÇ’K.x°ðF8ß4„\l×üç€s b9€Ô‡uÜ‚ .¤#¤Ôm¨íP±!ÑŠN)¨ Ó„ý›*9“@PpR°!êB2J‡UºtéÚƒúu³Í6 ’ÏþóŸàT‚ŠÉÐÉ;'m\xÞ©§ž*;ï¼s8pâ!Š”Ðc{¤MÊ¢-„P9fµéx̘1Á. ¢N®‹Ò6ÜpCyì±ÇB1øL› !ÚÑ$?Ô¼LL,¤Ž|eóqÆÏ;œÍŠ Âà†X@H|H„€N¨õP….»ì²Á5ªI&”·z¾Pçá$sÊ)§„ó"ö7ê~øAŽ:ê(n šæƒ·¦‡‹Ñ¤GÔ‹´‘çÐØÏ°çÅR(’×-·Ü"„Rä€' €É}}ÕA†v! #Y>üüyä‘Z’Íà^ëêSÚšÕ–:‡"ixm³{íþ¨[áðˆ#Ž«®ºJæ›o¾`Å9'Y]ð•5ÎKp@–?¼a±/å{¦]Ï·o¥³]ÓÉ9àp”7J• ©€Â3ÑTgÎ ®1Ð >—uŒd‰Ú¤ËXšÁÞˆ÷'6C–îÁËN6Øðpœ‰ û"ö80\yå•ãË™ÇØÏBÀ(Î,“Y¸Ÿt`3~¹Þ5ç€s &(ü¨Û‘Ñ 3Ì liªOb¤B âïˆ÷#VŽë„ š@˜ç̦ Wý9äCB<ñ~Ä8"É~ôÑGq‘Çd’Á~†—jœY¦F¡òcÊm!ön:œΩŤM2¸\{íµÕ$ìBœe <2© Ž9x§b#‹'œGÊ|´÷Þ{I’ë„p`ÏDbÅ¡‡ø9‡2¦àE‰}'bñÉþÒO3»p {)ÌößÿÀØàpš!ß'êÈï¿ÿ>´‡ÀýbÕ™¡!eôǰŒ^†7Å9à¨|à8r÷Ýw‡Œ2ÄZÆëR )¾H±¶Ã;U'÷à}ƒ÷àiùùçŸ× €¤#ã àn±ÅÁ •ßF8`÷$0‰OQB%È~ƒg(YfÈü‚“6R¼_q|AÅŠÙâhN7¤h£ Þx˜V"¹ ´ßš·Ù9à(Kà©J0;‰¡ñtÒ8‘:Œ¤ÑHˆä#eE¼)-V0î`càŸI¯†„GhåoÕ¸Æ,"¸Éõ-j]epdÁæÈ9¤OT¯8¼Ãàh³A褋#°g’Gµ+¹H++íy{βå6=Ö7¤"Ë”b œP-â‰z’L4¨ÿ÷¿ÿu"+;,¡8ËPg˜ºˆgáÝzøá‡‡€x8Méì/ñuž‰}”°6€ÔT®±·l|@JŽUúŠ ·éqýSãØpjpÙŸáp´†(°û! bs#XÝ ‹ .–Ë5)@‰ ’ /HŽ%¹3‘I¬ hBØç°ÉÙÆï˜¾gy!¼]‘ìðJШƒxÁ|„*é»*Z2»à$“wÛm· ²¥ïÓ§J#ÀJ{cÞ^ç€s l9@¸™SH?†DP‘Â+&²µ )+ˆ àè‚,„ćc 18« ™™W'+3ðÛ6œkxfïÞ½Ãý8À`ƒDª€‘ÐHäͪ dŒÉGHy”8 RG=ŠZJgYAJÅnˆ À½þúëë•Pó=wZŸ÷L0Óú øó΂8PªL0=¬„…°íÅ!V5jGÔ¥€MšH³FlA߬CZštÙú~ãá™õŒ¬û(‹D æ#¤SÀ: ŒùÊ—ËyÏS.oÂÛáp´d¯+[Œ­ð@9K²ÍqC¨Pð£nÊÖW5ns!W6—7éýp8œ΢8àX»¼°sÀ9àp486—7éýp8œ΢8àN0E±Ë ;œÓŠãíèäh(X+Š©èØPNú}Îç€sÀ9PÉè*ÐJ~}Þvç€sÀ9àh0Ì:¿Ñ9àp8*™€•üö¼íÎç€sÀ9Ð`ü?+BÁ\µO¿‰IEND®B`‚mysql++-3.3.0/doc/html/refman/structmysqlpp_1_1value__list__b-members.html000644 000765 000024 00000012045 14042362132 027412 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::value_list_b< Seq, Manip > Member List
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1InteractiveOption.html000644 000765 000024 00000031011 14042362132 026235 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::InteractiveOption Class Reference
MySQL++  3.3.0
mysqlpp::InteractiveOption Class Reference

Assert that this is an interactive program. More...

#include <options.h>

Inheritance diagram for mysqlpp::InteractiveOption:
Collaboration diagram for mysqlpp::InteractiveOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::DataOption< T >
typedef T ArgType
 Alias for template param.
 
- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 
- Protected Member Functions inherited from mysqlpp::DataOption< T >
 DataOption (const T &arg)
 Construct object.
 
- Protected Attributes inherited from mysqlpp::DataOption< T >
arg_
 The argument value.
 

Detailed Description

Assert that this is an interactive program.

Affects connection timeouts.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Query_1_1SizeThresholdInsertPolicy-members.html000644 000765 000024 00000012367 14042362132 033056 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.2.5
mysqlpp::Query::SizeThresholdInsertPolicy< AccessController > Member List
mysql++-3.3.0/doc/html/refman/sync_off.png000644 000765 000024 00000001525 14042362133 021111 0ustar00tangentstaff000000 000000 ‰PNG  IHDRàw=øIDATxíÝKhTWÀñÿä1I&3™8M¦Iš™†I3Ú©b$cÌ I1V1±-(Tö±±Ð.* t!‚K[¥Ä¥ˆ„¨´f£`l(øl©"Y”¤6ÆgÌTú}·sgîܹ ±d{8?æÌ¹÷;çÜuíÚ`:!±F¬¢BäŠ?ŰÄm'yÊÅ>ÑlU¯½üý‰è_‹?€Œê ]€Y(ŠNñ±8fý1°Öqún-eâ¨øtºmâÈ Ó0}b›ù%·©µ×Œ®=Ÿ0´³?Š1sŸ‹0€¯8À‘;_ ‹W|%\ Zð— >舽ln¨p©.aÇ{ )t;Ú b nŸš¯›65°¢¡2çÅÔ?Žž>Oдàuönm¤¢Ì`×­Z¬WjC~>‘Ö¾0+á {{©fÝ×Mæ·æÅ•ìÙ¼˜` Ý›%uA6´½ÅÆö¨Á,]k¢ÄW¼™u±›]‹ˆ7§¯iòh€ ¶¶¬ÏÖu1 ló —Ҷ̺–:ÞÍ\ÄcãÏxøhR²Êè‡Qt$¿ß§¨ ª fdºü<4BÿÙ[•f¸d7=.Mé9/—éªÃëù/ÿO Üaàò}€,‘j?Ÿõ.5Úšm?œÿŸ®ŽXÿ2¬#¸d píæ(£?cÛú¼!½›a1¥Þ—ŽòØ©ܾ7dÔK:‚ùÒ‰ì)Ê3‚Ü™àÌà]€,±H€µ+køöäu<|`·LhC7¹ÔeÍ Ÿ×Ÿ˜tÜ‹ óH$^2%l.êaeÐäýE”ÌÉ|ÅÜìî‰Ýsä }¸ýDû^hzé~ðR›¦Ã¡¿]|#ü¯@×—Ö‡[k¹–<|š(Ç*€Ý¹dÇtMé:Ýñø«Ø,êÅû¢]”' øXÓ_nò¡Æ|Øý /c§fžâOIEND®B`‚mysql++-3.3.0/doc/html/refman/inherit_graph_12.png000644 000765 000024 00000003717 14042362133 022435 0ustar00tangentstaff000000 000000 ‰PNG  IHDRv$\áÎísRGB®Îé‰IDATxí[YlM]^­y,j¦Š*!bNšŠR*ÒŠ'"!!1¾B$x(!‹ÚJ¡¥A¡Õ˜‡1Ï1µf¶õ-ÿÙ9÷ÜsÛÓÞËïÍYÉ=={¯µÇ5}{Ÿ4B1‘Ká¶å‘á¶"w=vÀUl˜Z‚«XW±aºaº¬šÖu?ž6lØ`­vËA¼‹/¦¾}ûzÌÐ+?zôˆöïßï!ä‚s~üø!ºzöì™×½<ÖØ·oŸñêþ Ò(//§† ÚÎÎËcm¥ÜÊÛW±!§2gvëlŸBNÊUlÈ©ÌÙ„C^±»ví¢¹sç:[­R“&M¢Ñ£G{ýfÍšEwîÜ‘ú/^T:ÂìÙ³iïÞ½¶r'Ož”~l™U¬ô‰Š«ØÏÿ&~ûöm:{öì_ÿèÑ£Ô©S'êß¿¿ÇX­Zµ¢Ÿ?RYYýúõ˃gW€ò:wîlǢׯ_Ó©S§lyU­ô[±_¿~%œ£bbbèáDzÀ^½zÉ"oܸAà÷îÝ›jÕª%|ÀófÍšéy>~üX {“&M¤îÒ¥KºMƒ ´6îÊ•+Ô­[7ªW¯½zõŠbcc5/>| |¬ª_¿>]¸pZ´hA]»v™oß¾ÑÛ·o Џuë½{÷ŽúõëGµk×>Ú}ùò…êÔ©C‘‘‘Ò¹ ¡¤¤$Z¹r¥È›P,ÎþÏ ÌåÚµkÔ®];¯y2ø‹ý¹~ýz…2fyÇïølg&>¿â3ž¹ªÂw¾©ù‘#GÊ_´6l˜5j”.2Dñƪ¡C‡ª#Fèþ^¾|©jÔ¨¡6oÞ¬._¾¬XQН"""TûöíÕÍ›7E–­\5mÚTñ†‹<{b¥ oéÒ¥Šo]ä=55UuïÞ]±á(V˜ŒŸžž.¼ƒJyøðášY¾þ±cÇ„âÄ ÛrTT”Z¶l™ð¬cîß¿/,NŠK±1KŸ Š IxñññjÍš5òŽu±A‹ ÖŒuëJlìÒöСCVɲ€åØÆÓ“'OhãÆN`‰ðÆ={öйsçÞ›––FÄ ÃËÎÎï˜]®Ìxã¡·¢\ÆÆ@ôùógÚ¹s§ürrr´¡Ãƒà­%%%ôæÍÂuÞ¿hÑ"í9Ö2d233e X‡ñ»wïXšîÞ½K3gÎ$äR„V̇–V­Z¥eŒ—… ¢<!Q(P0ŲçPÛ¶mi̘127, ›h”¡”””b¥¬¬,‘AøJLL¤èèhŠ‹‹£ÂÂBZ·n,ư~ýz*..&´3guèÐAäf̘ásý={ö¤)S¦ˆÁ@ù ›fЊ+$”wéÒ…ÀgÊ»cÇŽ¶eT"D#šX™°6„ýñãÇSii)}úô‰8bQnn®YLŒóâÅ‹´`ÁêÑ£q”£ääd ~çXcðÖ­[ËkÍšºä#e1ò—c…(ÈòÀ4qâD:~ü¸x4`ð xü’%K$gïÞ½[{÷àÁƒ¥<àM¾È L÷Œ6@µlÙ²J^2aÂÛûüùs£Kzðà¼O:U×á…S‹G‘ {2pà@]o½È׌j¼ÌcaÍN! ^²}ûvMãÆ“f@œÃÄ’‹ŠŠd# `l>È|Ñm "ðßãéÓ§ºoÇ› ÁÌ?}ú´O7ôã¥M›6ÈzðA?Îï^ѼysåêÕ«z4xp È™65÷3vìXÚ]¾|9álX·n]é}ÇŽ4oÞ<ɯMÏ@·}úô´ 4ŠÜˆ|µmÛ6Ÿ3‚Q ¯Ãûa(‹F:@#„bôƒ4À€I.ê‘»1>r¤]Y*<€œñÕã g2°‘ñ>ìÑzÀ€‚ÐW¯^-kÂ\ÉFV8U]TÌ@Iºbo¤¤bØ/e Rƒ€TyŠÏŸF•âФ< "¢å#’â<+ü#GŽÒE cË=ó±E䀊9WkY éµk× Ï@Åh‹~8e(62d ª ½:EÅ[¶lQ|l’q0N?~”qøø¥ç”——§Q1Öņ®5j$rN¡b¯sMUëdV™ùóç+FƒÖjÅX9sFÁ8¬Ä(WŽD0F»Z±f9(–A‹ôÃg^ÅÈ\³ Åb öJÅÈZóþÆ £{ã¶[‹y<þô¦8+>c›«½W¤Ø€'¶ÌJ a.??Ÿv7mÚä%àÅg]¯zT dã¢Ã ¡#|‘`ù’ó§Ç¿AƒUÚÒõ6«ÒFþ©bq®å0%gÇiÓ¦9˜ž½•MR¸e`²#äl k¥ÛÉ„UÕçÿE(¶Žé–«·…⎊ÃÊ+‚x1®bƒX9þLÍU¬?»Äm}‚'ÜëºÜ;€‹_äå±øÂ‚!—‚p¬ƒ®pi¥à1k¥[ùpÿ2äUèc^¡Ø‡œ[b;à*6Äætº®bîTˆÉý«ŸXÞFùxIEND®B`‚mysql++-3.3.0/doc/html/refman/structmysqlpp_1_1value__list__ba-members.html000644 000765 000024 00000011344 14042362132 027554 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::value_list_ba< Seq, Manip > Member List
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadConversion__coll__graph.png000644 000765 000024 00000022670 14042362133 027647 0ustar00tangentstaff000000 000000 ‰PNG  IHDR¦”:RÑsRGB®Îé%rIDATxí]xU×>¤Ð«4齋‚¨ 4 J‘öÑP+*RüE@ŠHQD¤ƒô"H‘"*Hï=4CHH‡„ùÏ{òÍ2Ùl¶ew³;™ó<³;sçÖsÏ=÷Ü2ïÍ¥0‘A¼‹1~Þ•#7Ò8`¦! ^ÉC0½²ZŒLd•;wî$ÃLuœ‹åÊ•£*Uª8ÐFˆøøxúçŸløÊþ×Íš5#?¿Ìõb–BÙ¢E‹ì/©åàæÍ›ôï¿ÿº%ÇqqqTªT)ªY³¦[âwE¤»wï¦ÔÔT«‚™¹Èº"Fœä€!˜N2Îæ^‚é^þ±;ɯÌ]»vQtt´“ÅqO°Ã‡Óõë×ݹ—ÇzåÊ:qâ„Çs™m‚ùæ›oÒ¾}û2ø“O>¡3gÎdp÷´„ñÕW_•d÷ìÙCW¯^õt<šž¶¼Ú„/^¼HÔ:yäÞ#‚9wî\ª]»6U¨PæÏŸOóæÍ“ÿ.]ºÐ7è›o¾¡J•*Q«V­(44T ~öìYzþùçå~éÒ¥4räH¹_¹r%Õ¨QƒªU«F³fÍ¢ÄÄDjÒ¤ mܸ‘îÝ»GíÚµ#ø¹víµlÙ’xàêÙ³'¥¤¤PLL uïÞ]F­/¼ðEDDHœ5¢RÉ’% yJHH ^½zÑ’%Kè³Ï>£ºuëݽ{—Þxã *V¬Õ©S‡þøã ÿä“OÒ‡~H¥K—–2x›Æ—Lj~¢¢¢¨k׮›¶mÛf ´å>|8 <˜*W®,=´&~;uê$|zë­·$Æ;wîЀ¨|ùòeóôÓOkRrþÖ킉J~÷Ýwé—_~¡E‹Ñ—_~)ÂѰaCšMÅ‹§Õ«W§+/¦²V­Z%  ½Err2mÚ´Iï ``ÞlÙ²…Nž}úHÅçÍ›—.\¸ ?ÿý·h10­Z4 @„ZB½`ÁzôÑGiݺu¢-wìØ!ói*AHá·ÿþÁDÞE€U?pÇ{ì¨Q£èܹsN¹rå"hhqh}oïö1±^Lš4I'Lóò¢¡·oß^-ºü£ÇƒòhÚ´©”å„°¾þúëT«V-iÄédáÁ킉JÛ°aƒTØŒ3D@Ð媄V‡îV%0(3# Ðè’qAkÕ¯__ÂŽ´ðIhÒ‚ JT Æ#<Þ!,Þ}ðÁ¦¤ .,÷èšnß¾mr×Þ KCP \- 4ÂÛWÂУ ±†……Ñ3ÏVzm®G/þXÈŽx'—ÝÒøùgôœÊ uÊÉ“EÖÕ<æ¦MÇD ̸‘vçÑ£Wé‘G*x’¿nM«Hå<ÔvZÕ iäbs2oqË;£2xf‡´i¤|tý`,]ÝC7Ï'‰9Ê ¶kì.a©1§}ž_ÙíÉGðÆÂ‚(0öë+Ý &¾óóË8Êt{íº(K;bè¯/¯Pý—Kò•ñSZ%“.¬³—nT [v=èV0±™ÓD¾HXŸÞ;ùµù¶ŠØyž*ƒ_@.ªÚ6ã7RžJ_›ŽnS[H_»WxYð¥%µxÛ™g»Thgo!C0½¥&4ùÈ_Ú³s†š¤½æÖ³MÒkŠí=ÁHø;ôìÊ@Tä »ø¨'Ý &>^ˆA ‘wé—g°×nþ¯ì%€‰ÒÆ×H·‚‰#îéŠ ;G«{ž¦ Í S.³Z€ sˆÏbµC k«Ãˆ ø€ â|'`3Á OÀ}ûí·iÿþý_#3–øZö}3¿ÇEðç !ÔòËŠôP¿Œ€uP HÆøâ¸›@õUá!„ [»v­à,µm„ 8à š¿iìØ±r,Kkt‹×Æñ7‘1øñpm™N![oQÇù5)_)Ë- a€jÇŽ• bpV¶€t4 0¾úê+Áªœ>}:<ŸñÂ>¯P˜5:±4‚ Wrÿr§µ<˜¿34¦9GÜü˜×ÚÏ©‘©P"yÀEC[”€°¸Ú*˜@ËSq†TœÊ¡C‡ÒçŸNAAA‚AêH1®î¾MåšdŽKêH\®ò«[ÁôÖ•ŸÚÝ ?þ8̹ЈèÆ{ì1™¶èã?ži0@M7NÀh÷îÝ›îSk¸—Ñ!I¢U ñ'ÞDºL_^ù€`„5PßPUKŠ£æÝ5 ¸qw@WË—/Èm ˜ÔC4AL·Ð–e›¤!/›½àFWû1µüĶ·Þ½`ãZgÝcç÷Ù QT«ó}hlw'Ž‘80ê1„f@5bªö)lVœN¡%Ø ›ëPîP…æ^Õ•ëk?¦–éÙy]A›?¸Àû= M£Å²W<°A1Â4VKÁAÁTåÝ2ò͹ÖÝîQ¹‹k!üpç'ìPZé]ŸèZc¢n—-JŠN¡ ož£'>*Kõz{îÏVžÜñþàa”§¨MÂàô]•øxgT¥..?¿`%oÞº6ËR§`¥Jþú6ýy_è@­*‡þoÝUæ6;¬¤$ßs(\6zŽNׄpîøÿû_>Ny´;­g8иqc@xðÁŽ%dk4•ªŸ˜f§mãp ® Û®Üõ¬òÝ/þv‹Ï²ŽÆám¥3ÓÛjÄÅùI¼™B‘|_9/üvÜZQ Á´Æ¼ *èO½7×·‰þámEMgczC湇ï£X–U ¡Ó§O§‹ˆi-[¶Lçæê‡øøx¶jÖ¬™«£v8>àª[;›dýúõ^ Sèuó믿vbîÊ•+iذaPxqÈ]¶}ûöñ±Ô·iË–-îJÆ¥ñvëÖÍj|Ùüê°`þüóÏÔ³gOÁÕNδiÓ\´jÕªRéŸ~ú)•7I ›˜˜H=ôEEEÑàÁƒ #J<:tHÞO™2…Ê•+'(f=v옉I³gϦW^yEüWªT‰~ùåyרQ#8p  KtéÒ…ĽuëÖtþüù ÷ÍBØÕkÔ¨Qôã?Rûöíx ñ>÷Üs¥‚ü”)S†4h`J , jժѬY³$~Ky›7o‡y| €WAÀ¹ŸŠ-J¯½ö´šÂ'ÿL¯¾ú*¡,eË–¥Ÿ~úIüzâÀ¯H|Ö‘Š6ŒFûÄOH~À_øþ^ýu©Cøúœ[I;WõÙgŸ)<]¤uÊp?cÆ …¡Ff¸2`À…aïä~È!JïÞ½U~øa Ç•®0óÆÍQjÖ¬©0žŽ2qâD¥oß¾ ãè( c¢`îtõêÕ C) ·'q,\¸Pùâ‹/”%J(Ü+ ¥påJœ y¢04ŸÂ•¯pW)ïðù ?ê= £R½zu…+Ât-^¼XaaVXØ•©S§*+VTV¬X¡ÄÄÄ(lB(Ü8”5kÖ(uêÔQ%MÜ6nܨ¬ZµJòËlóÆPað+‰‹…Raa–¼pÃP¸¡*Œì+eغu«² *¬]%È£-bÍ¥0Š›-o6ßs£Pêׯ/q±†WØ´‘0¬0” (¬DF1VXðÖüŠŸŸŸ!uÄ©\¿~]áª0T¢Í´²à!ý<¦½-¶SÓ¦MéòåË;÷\±ÄBGÐ\}úô­m m \^êÔ©“À3¯[·NÂ5oÞ\’…F2'ø…¶Â…°( 4ˆ€º‹ÿ믿JÚ¹Wí=4´´JÐÚyòä!œ š³sçÎÄ‚GÈ ´.ظ˜×HÕ… $8³dž7®<Ê;7*TH`ýà W—.]h@c³±ØòsæÌ‘¤cˆ uN(øpÙÅŠ#nØ´cÇyïê;%˜¶2aô2ÆÅŒÏ;—Æ/¸°gÚ´i#ÂŠŠ‚&<{öl†hwîÜ)• €{ •=òÈ#â-6φ ‚‚àc4l~ap©z!½äädzã7D;üöÛo ;v3@õ…Ý‹8ßyçzÿý÷iÛ¶m"„H#³¼iARa«B 13{ Øéž óoZ<å |G>ÀüC(!¬'Ožmˆ2>|XÜÕ|¢LÌ¡‡j1zI„s'¹T0Ñú@(<°¡a@¨dhPQ¯^½è£>"¶9eSLªjøWãÆAWˆç‘#GŠ; ) ˆÀ  ݲ:øQïº*h=õ‚–3fŒh>ø@Px¡Áan RGœþÀö¶4¬—_~Yw€—†–TQ}-å ˆj°©8”Hñ ÿèe0D0'µ¼æîÎ>GK ?^~,V#ãwã0[Ø'”  §Â€u††üµhÑB‹H_~E]bÐÇã1Ó Ì0ÇÜFZ•™hsð£õŸÙ=¬-¶UL^XÃ)ÇWDÔä†îžÅseð£¾Äà‡GÐJdd¤«:+üpש°–5¹¹ò†0‘A6N ÚØž69e–7x€_sB™/^¼¨p£2e÷³#ƒŸ]ã®*¼n5n6]Ô‰–ؼRX“Šøbmiâ?~%!¸£NÌëî."ç?ÖZ ºL'aJ‚GÕ&¯°GÕn×äÈ7Å‹[GÜ…ÁmNˆKkŸš¿ÏÊ3/æM©µ)Õ÷–òfÉ´4¼'Ÿ†`m¼ÃÜV“λ9aêJ%µl*ð+ÜaN©à¯ÚN ãÊ—¯ü k†ý¥E·µ'Û6mJ×£›µDèBüý³÷ã°Ìòf)¿žvKˆºKÍ>)Oôíó(].˜°åJTž¹¦QGËækKÚûwÇsfysGZŽÆ™¯D å+‘Që;Ovûwéà'» c¤¯¤;µ]0Fdz§\¹x’½Oáœtû´‡+y‰™Ì¯æŠI'˜9 ÀRÄ]»Îñdñ ž,/Ç+@}x®Õ÷¡_tVw9S0yJƒ—9Gðdžß àÉöôᇭù€§ìTéL¸²Rœ˜icbB»K—†2aŸ”t—w íä‰ó/hïÞ‹Yaf¶†=¾øñüe¶æÁ•‰çHÁ»ukÌÇ, /îð²\4Ï¿~ÏË yÑ{! 3«ü3k#©ÊsE3{ísî9V04(Ï 4ÁTk-1ñ.¯¿å]?ŸÓêÕy=þžúÊ«ÿ£Î$€eK=œ~'‘WgÚFær¬`‚/ÿùM?•›œ|—ââ’x'ÒB¶AïØ`Ÿw¼>ÇgVVm§m ®æhÁDw€obÌ(oÞ ÞT‡·Äyÿê – ÏÿzKàmÌŠáÓ9Z0«V-Á«TéÖ àÝK­yWÒ«¼ôéýìîR­.Å}~ Ò¼y?çÍsìâçž=ç­_¬9ýx­>ˆ·Ù•âͰiß¹8)·D‡#QÌú¥nÉ\"Íñ‚٥ˣ¼‰8…÷'ãO†ó‡boòÀç²q4 l5‚f•9råÇœi;wžáyÌ*¬9ÓB'N„R÷î3xçý;¢AÍýÏnç@Î\ù±‡­˜.š8qmÜø!”lOÃë83W~ìá_§Nð'µùùù>µÑÞ²ù‚ŸocZ«¤O>iÏ;îò÷/›¬yË–wgÖFѹ 7³%mO$j¦.cºhÖ¬¾´lÙ>þæú¸Ÿž}…¹ËýÓC©d}ý¬ô˜sÐLsŽ˜=-šOæ4‡ YÆÀißµ›yñøã•¿bà`,½’!˜vÔl½zeiÔ¨ÁâG^®L¶#„{½œ]EÕÛgüHϽ©z6vC0íäw·n2ŠG Ù}dg·xKº•B¡b}!ØQf‚éÇFî(«B“'gÄà¥ÑT³cq ÖwÕì&¼FFÆ1ZÅ©wc„‘Ú†6¼ÛÉcÓNF™¼/žŸ¡Rú34͆¨ñLð‘}÷nª„‡.OÇ·“Á¯ìÙt+Ü­Ñ•gµC‡.g­8F(î—…XŒ 8`tå˜b·Ó˜1Àô6Ã}o³;ŒáÑ>]¹}|²è {8gÍêÇ6çŸôûïg,úq•#– c.gÿª«Êc+C0mqÈÆû’% ʲ%¾ºr%ʆoç^Ç\J¦ý3Bu½ÒcÎC0Í9âÄs£FŒ¶ õë÷oúpýl§×DÊJO®T[9¨¨NHœA^y¥)BPŽ>ýt­¡l{ņ ì"¤zN"C0]XÛcÇveüö«ôý÷;\+VzŠT ÖÝÇf¶d¦-9ð>wnÙ‰ôÝw;ø°‚s„ÌÜëéÕ‘T³SÎÒ–à†1™¹L8ýfß¾0`Ðö!ÃÞ?Æáù`ˆ;q©”»@Žû2æ1;4n\‰Þ{ïYYh—ÓÄX 9P(…]†ÆtZjl|÷ÝEâiêÔ^¶=>´04¦–®¾Ÿ0¡;9sç9ÿpuÔºÏü¸±Šñúܹ¯1jñ6Ú³ç‚SÒ_Ô†`º¹NË”)̂ٛQ‹çñ‰dÏv´”<(Å4¹÷T›Ö¯_OÛ·oçýžÙÔËì6 K­¦’e~c¦†7cÆŒá3~b4.ÎßNž<™Šw„ò·ß~ãuó¾töìY»"äCîiÞ¼yâwéÒ¥ O3Šà>|8áíì$A»¬gVŽôg‰dæËKܧOŸÎGœ$ÐáÇ©D‰ôØcÑÊ•+åþË/¿¤¯¾úŠz÷îMõêÕ£ãÇÓ¢E‹¤"'Mš$ajÔ¨!•Œc'NœHûöíc$áÇyÙð éø£©”ðïÞ=ú矨H‘"&))‰Wqæþ/^¼HíÛ·aC !C†ðwæïK˜iӦѸqã$®6mÚPƒ ä¾_¿~tùòe>·² Ah÷ìÙ#ù8p ŸiYŸnܸAhaaaTµjU óï¿ÿJš‹/–|À±sçδvmÚfdheä522’ákšñ±ƒÊYñû÷ïg° üçMÞUßOßÈK»wï¦#FH¼Hçé§Ÿ¦’%K2pÃ×.áß~ûmŠŠŠ’üQ¥J•ÄÏ’%K¤Üýû÷§Ö­[KùSRR$]ðü«^½:}üñÇ¢I¿ùæ> 1·h}äË™óÝ}Jc¢ uF- M4~üxö ]»v1Žzyúã?„ùþù§)á i¡qAÐJÅŠã£Y0iQ¸C`¡ÕQÁÐÀ肟xâ ^ž|ƒ¶nÝ*¤ 7ì¶=zˆæ°üüü(9Ùò—‘^h×®]»ò­5Dƒ£Ñš4iB5kÖ䳊žåÏ‹#¤x†À nذ¡4æƒJc‚¹Qºti“]›?~FR~SŽ .[¶,A†††ŠJÿûCøÁ˜*júÐÄЬè¹pŒ5òà(ùTWŽÂAƒ€Pi ”{õ‚€Á 4*‹M¡Q¡ILƒ ’nL¡Ë±D¨º,Uƒ©næîâÑÂ@íÊñy€C ½ð üÐC¢Q ´èv .,± ë¡R¡½ÑÍCèAF ºchO•p¢0´=ÈßßßÓݲeKJ˜"hÜ(Ê>á‚pW¨PA¯ ;v,ƒÖnóZ=é!_èqÔgóôá®Íƒx´óÇç4¦µrAaÓ|ûí·¢-ñŒnÝðСC©OŸ>-Ѹqc:räˆDíi‰0BAÈQ‘ @ áоƒFáià½9Á,€¶BÅã¿mÛ¶¼nÞ_ÌT0ò„.ÏÐD h" ºcUðfÏž-ù€Á‚&lÔ¨‘yÒ¦gäñ¢Ë†F-Uª”˜:h<½zõSùÔL'˜Ý»w§©S§Š0CAà-ÒCžA0¬¥/žøñ9i©l`.P îÎW­Z%•‡gt½#GŽd¸êeR‘0ÐQ)°}Ы­~Aj<Q£kÂ` 6\||<Ÿ;(Ú ˆŠF< aÆIc€æCü˜ÚA<ªÑl: Ì®]»&¶ì\tyД~˜ 4aÀ» ö&qc`Ö©S'Ñp0]0`Büè>Ñ   Ш ˜ZR˃8ÿ°‡Ah¨<zhr”W SùèÖ­›üC ‘g•0Ãà ¶'z*ðÉ©ñYz—™›×ì`‡V‚&ÉêZ9`–v” A‚ƒÁ‘–IÐùòå£:ˆ ªLBeÃv‚T$º#hB X0š‡¢Âœ%äZ]7î?[3æ„i,¾yº„A#Ñ–Í<|fÏèΡ)a6 !X"˜0ÌM'Õ/ÞC`a29CÄÁöV2Çã\LΤî0Ubjå­·ÞJ—l.Õ~Ò¾€F°6¡®ÚuÚ0 ÌìR­?k÷Èjªÿðµ$”x§Úr¸×ò‚‹³a‚É` ´ÖÈÖ{ka3{§+ÁD7Í«­ìÌ ®º£b1b׺7µ»SÝ1°ÂœAžá€®ݲ3d®´£o5>h3Kîê{ãßµ°lT¸6 #6ƒŽs€§!¼‚rÂv®µ+Ý‘òšï`÷šQ¹ãMÊ¡cß•ë¸r}ºh†éÓÕ§ßÌ‚©ßºõé’ý?wá†2)³œOIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1WindowsNamedPipeConnection__coll__graph.png000644 000765 000024 00000025101 14042362133 032340 0ustar00tangentstaff000000 000000 ‰PNG  IHDRòž^W…sRGB®Îé)ûIDATxí ¼MÕ÷Àï™ EJ=eȬ$2”4k ‘_"%ŠÆŸ"* J¿H)‘Bƒú5™~SD¥””eÌ"³÷¿¿ËÿÜνÎ}îõîüöú|Þ»çì³ÏÞk¯½×^ÃÞg¯|>bÁRÀR ¥)?¥±·È[ X (,#Û`)°Œœh›`)é&Á'Ÿ|"M›6u'ÙkKˆ)ðÙgŸIÆ #~ÏýÂÞ½{eþüù¼¦ L8nŒ<{ölyðÁåá‡N8bÔ¤@¯^½$Œ¼gÏ9æ˜c¤N:IKˆ…  N20²U­“v˜XÄ,§€eäðiesZ $-,#'m×XÄ,§@€þk±ËùÝwßÉqÇ''œpBT*ÁÖÂöÿñÇ¥\¹rÒ¤Iý §ðo¿ýVÊ”)\œv-ZTmÈàúÏ;ï<9ꨣ‚“£z?sæLm2ØtQmX…íܹS¾þúk9÷ÜsÃÈzY’N"?õÔS2kÖ¬¨PrÅŠrÎ9çÈ3Ï<#[·n• &¨7uüøñ!ˇy»té¢Ï?ÿüsY½zuȼ‘;묳¤[·n*)[·n-»víÒôK.¹D~ýõ×€ë>}úÈù矯ˆ'þõ×_—±cÇÊÍ7߬ÞF¯²Úµk'o¾ù¦ôïß_–/_.þù§üý÷ßrË-·H©R¥¤zõêòé§Ÿj=7–»ï¾[%v³fÍt²àÁsÏ='UªTQº >\óºÿQŒíþûý÷ßµ­ëׯ—5kÖÈ™gž)LD, V­ZUN9åyüñǵ˜%K–è„=o¿ývÉÎΖE‹IË–-åâ‹/–²eË*þh!Ѐ•ˆÉ“' ZmY»v­\tÑEê¾à‚ ´¾eË–i\}õÕJÛ[o½UëZ°` -üñZ—»Ép<®n»í6ùꫯäŠ+®wß}Wûúì³Ï–?þX~øáEÙ«ßöíÛ§yO>ùdéÞ½»@—T‚ˆ™d{öÙgu0ýûßÿ–—_~YZµj%/¾ø¢Ô­[WƧ4@•CcàM™2E s:Tæ"o=dêÔ©~¦äeôG}$o¿ý¶øûï¿_ËdÀ{ì±ÂdðÇh¹ªê_|!sæÌÚœ,>Áãê‰'žüùó+þha¯½öšjX•+WVó ܽú ú2N‡LŒŒT‚Ì#A;ƒ¶råJ•Z\oÛ¶M,HÆ:è,Ej"­‘80¥gÏž:èxÙ¨T©Ò!¨ÉÆïÂ|ÀwÜ¡RçÆoÔŽ¤÷Ú·sM‡3 ‡TrìÄà²(³@þIú,¤ÃàüÁP6l|ùòIïÞ½•áȨá%K–”¹sç*ƒ!¡‹£5P@Ý0®¥K—ÖK&ÇÓO?]Ž>úht›6mÒɄɀA8 ¿H ñÔSO•yóæ©vÄ`mÑ¢…æ½üòËeúôéÚŽŒŒ {yH{Ð:È­®½öZÕ²ú0=@ОÓN;Mž~úimy’¼Æ}G¿0AhzhSh'xõc«k×®:™2ÖÞyç'{JüF,‘iƒ`æcມP¡BªÖÀÄØd0Ž+7ÄEb º0HP«à½`@¢8€êƒœtÒ°}BƒÁì¤'’û¤“NÒäpÊ¢“fã%& €é€ÌÌLáC2¤-ªœ£þ.\XŸ»ÿQ'“™óç0*e@SkêuÊç}Tr$/f “æ*5à´…k7½¸w¡½ÓÚA{w]N{PçQ_ÑF˜dV-%YÀk\ã†IàN[v.]ºTœ¾‚6Nÿz½›ŒiGÄȇkÌË@}ƒ™PÕ^}õUAme¦C²\zé¥ÊÜ "¬—ʆ}A±y`>ìF{gv6+ÀDgÒ}ÅNB¥¶oß®Z62R ð* FqZ“u‚;6h(¯:8תUKÍiü¥(÷Ôáþ£>‰Š†¤dWŒË¤€fÙÂ`CCÁdÀþEÃÀ–ÈÇDƒCúp·i„ýá‡ê3ú{9ðŒ?ò£8þPùã™î5®œúÝmvÒrú…¦ô1ã “ˆ 5•àˆTëP d0é–-[Ôö垀í‡ãbW3»3Pq”aŸ93$ùrPÇQÿP1±ëH‡Ð x8~ôèѼ"ØŒØL¨¬ÎuÛ¶mU¥b€ñè nì(À«,Ào¿ý&ع`ÿ£VâtC¥1b„óÈÿ nü1èQͨ“ÙU§àäÁ±ä¨öNÏ?ÿ¼š?ÿü³2'’¶}ûöŠ+í×6mÚ¨jûÀ¨:Ì»06Ì…D¡L´&´k®¹FóžqÆjê8& ïà Ãa8pà@ BysÁ—r˜˜è/¤<æN²€×¸7&3 |FŠûÓwaÔP­Û0@ÖPeQ~0ž¼Hn\ sÝÐV?Ê2Òõ4òKp Ær Óû¨ 0Øg¼±>Úê¦;Ï cûÌÊe/¿Ò2 Ñã†òŒ?ÄãÉ¡If’öÍëЦG•Ï84û–׸2“qXýä.ÜhR>þ «qúùŒÿÆýØóÚ8Ä|Æ´ó|ïĨJdf"ÖaY'e-ÖmŸ ª8j°{Ærl5wšû»0(Ëm_?¾GjyÕM>¯²p˜xA¸uºË¤¬PåyÕᕆÿ ؇@™h+Á@[ùsC¨&˜=ျÃÉÏ<^ã MÈ­á…ƒf Kh ˬ©QgdTeìDvgE,}¸‰×]wy¾Îò‹cßzfˆ 1šeEPmL²Æ¿Ö“ Ò¼Pld|5˜6˜PEŠI©G‘±Ó"eb(æö¸rJŠN‚ón¸Ͳ­3VùBÁ4ŒU]éZ.A”ŠZ®¹T¤°ÅÙR ȇQîÔƒJÜ´iSçÖþFHâÅÏ3^ù?Ìï‡,9EXTJgÆÁ‘žâËÎ'›¦”Â'bu—cIÌd9!$€‘cÙà¼Pv·ncÍ®©E’•UÚ¬W·•zõ*ä…f'¼¿þïO™ÿôjÉÞs@Þ[^ª´8ÔAšp$cŒ€eä(ø×_7šÍƒÍÚì>ã,)`¶±V’Çkmv‘Ü.ŪlQ†ëî9VÊÎ?Ìæš]$³p~é8«¶dÊyí8‰g9ʽzÑEO™CÖj©™™fSH~éÔ©±ÙÄr‰Ùvè6Ô(WŸ'ŠÛ¶j¯|öÄ*Ù°h§Ja¿@>9½eiiÔûŸm¿y‚ÿßHëìŠrowïÞÌϰÙÙûtþ[^}u®ÙéÕß|F9?ʵåâ|æóâ½[÷«~÷_KdÝ‚~&† ùóç“×yï«Î T²9ʽ¼wo¶Ù|Ò×ì±ÞwHÉHä;÷šïÿsÈ3›3¶¯Þ'o]ý½dÉ»Ÿß?ëéøêGI‹1§ûïóÚ…•ÈQîñB…2Í>èzªR½oßÁ¯Œ‚Óíýá)Pàèü’a̔ه2q¢R놲‡/$sXFŽAçÞxã¹úÁ„»èÂ… ˜J›/±¸“íu˜(|l¦\óVU)TÂ|ê™èÌ⻈¬¦ÿ|òf‘i•Í2r º³bÅãÍa ÿlQŃ]®Ü1æcþnæûí¢1¨1oY"«4PA é÷LgÌ/Õ®=Nòü*5o£•–‘=ˆ¤nÝÎ7ÛL ê_Ë–g¯õ¥æ€¡æ{áÐ!D£Þt.cåìm2»ÿ ¹üåJRºòQ’YÈ _£iWkóϤ™ÎíÏ©mÖÙ•urñìÀŸzªYzºó΃î6Ó|¼¾HÞ¿‡Yg.˜‹ÒóÞ«wý&͇U’R§Ÿq7|tÇR9®ZQ9ë¶ry A-¶ŒDhÞ®^½Å|nxÒ½÷¾m¼Ö[Íáp7ë’I4ëKײ¶­Ü+oúEÎ4KNlP, ™û¶ï—‚Åò¸^m(b9`XÄþIÝ¡ÃËæŠcÍÑGmb_aŠ×°{s¶|Øég©{Ë RéŠÀI1Å›Uô-#G•œá¶{÷ßæÈœçÌ!…µÍqH„÷’Íe)¬³+âÄê^ì1cn2Ÿ™³ÀÖ«ºl¹yƒV"'°Ÿ—.Ý`öføïdØïØ¢k«Nb X‰œÀΩT©Œ¼ôÒ &TÉ«&ÜÍÆbb«Nu XFNp6lXQú÷o!íÚ½dŽýÝ‘`l_ý¦wÉãÿý{ÝŠ™xì’ËÈIÐ7×\s–aäsÔ›Í×RyØðÁZñ)ç–ðïÜÊ«´ˆ´ÝÖFŽ”b1ÌÏ=o©T=ºKž[cÞðC2§eÑV"'Q·t­‰æ-ýú½—DXÅ6|L»{™î£f×–…È)`9ršÅ쌌ü2rdgeq™ þqÌêI¦‚woÉ–iFnp÷‰»¶ˆÙÅYÓD…$l/@äKÂD`õÄðrbF–„{!Z&YƒþߚгDvä€zÂûP‡ê9A½pñŠí•FØ#"cr>‘!2 -œ••¥i„1"ö1»sDl1â;Ç+lˆwh [ßá)°nÝV_ݺý}'~{øÌi˜ƒ/æltŸ‰7í3Ú|&Æ—Ï„Eõ™XN>3ø}& œoäÈ‘>mÃgb;û ³øL4 õb°ùLü& ãÎ*´‹ )ë3ñ±4<‰å3q®|‹/ö™ÐÁZG(\®¼òJŸ‰Kí3q¼|&†™†ïñJ3a{}&©ÏÄÙöuîÜÙgâMë5øš°¸Š¿aV­ßL">[Ëg²ûÀë_ÿúWؽõêÞAlÆ([¶„9ès@Á f&/žçNã$( ¦ eçÏ?xL论ê*!¸»û‰Ù¤IÍM~½tpòèMˆ†a4  ÷ˆÿ\£F !rÇÚµk5@ž.„– Ží•FTR¢¨¤àéDS™1c†™«W¯žéÛzòÈ#(f&Lк‰J´ bX‡ Vµ—RqÎW¥JY£"¶71´F˲eãBÇ…„UGüf"– jòGüh"Bî8TÎ5¡^ÜQCˆ\éÄ|vòäÔ˜œâ}‡ÂÅ+n´WQHaTbwÁ´€;3÷NŒqê2"XÛ\¼xq 6‰w‚Á2r0E’è¾I“ÊòÀWšü¢ S»3‰0‹-*HQBÃöèÑÃ|z§Ìœ9SCº†ª•øÕH1‚Þc“š¨žÊ7TþHÒCáâ7Ú+mêÔ©òä“O*S~ñÅʨØþàK¼nbwo À–Fßÿýj³Ï›7/lT­j6©“±M›z²råf]c~÷ÝÛL¤EïH‘‰Á.òZ7.Þ%¾Ý¡‡d<²Ç) )Ú±cGÃD€wb;7hÐ@ph¹ã;×Äk"B 1œaTeG;yœ²Ãýå=þBáâ7š˜àÁ±¤QÏo¼ñF)V¬˜F%°<;ð…¡Qµ‹-ªGCuíÚÕÜIãoÀž˜Üá‚]G—R Îwûío)µG½ÚG:8ÜaÃÇ\su‹ÑfŸpøƒLŒd•²'Ÿ|rX¨3øM¼d?»_š2eŠÑj¶¸“”¹Z´hêÆ ¼ÊL4nü¼ÒðTcgðÆé%”EX<Ôà„MŽZí„Ã5q«Õ/@DHìjãè;­V­Zi™ÎËÈ%’üwÿþf÷×Ý(òÆ·$9¶‡¢—è 0„ €ŒƒS+Þ`<áºl†4&žø­·Þªê·8ü0‚ Å3Û2r0…’ø~ÇŽ½rå•CL ùúf õ¼$Æ4µœNøÌ™·î¼fiMJ•Ê}¬*ËÈ)6v8&f0 •YZ©™ôØïù3[&w_*u:—•Ó.±1°bÕa–‘cEÙ–»dÉZc_ 7¡hn’ºuO‰aM¶èT¡€]~J•žráY­Z9yî¹öÆ:JV¬Øäzb/ó*,#§hÏ7mZE¹:ÀòÒsŠvWÌѶŒsÇ®‚ë¯o`½?S:we6L˜p…ò,,#§x×÷êu©RïÑcœîJtsˆYüí+ëeÿ{ÂG<ûÂ2r<©£ºž}özÙ¼y‡ÙÓ;!F5„W,>fÜ·L*^VRBíÚ ¯$›+R XFŽ”bI˜¿@ áT‘Y³~”W^™“ Ùðñ逕ré³ÃÚµ•$Ó¸RËÈiҹŋv|_jêÔïãÚ*{ÂG\ÉíY™]Gö$Kê&.^ü»´o?BcKÕ®]>æ Ù³5[>êù›ÔêXFN½(oÇ(Ž9±s¨À2rÄIÕG¨ØwÝõ¦‰üxç!AäRµMïœ)`Uëœé“’O›5«*½z]¦geoÛ¶;%Û`‘ŽŒ–‘#£WÊänßþsôMMó}ëH»Æœ2½väˆZF>rÚ%ý›}û^aNd,aN䜕ô¸ZsGËȹ£_Ò¿=dH;™=û'8pRTp]ÿÍùúÅu’½ç@Tʳ…D‡–‘£CǤ-¥`Á ýJjÚ´ïeìØðÏ€òj>föY.UZ”’ÌÂvèxÑ(Qi¶7Eù8Ö[¢D7®« <Õd·äˆj¶>Žˆlñ{)ì°mF¥Ž›ÞIÉ¿ŒŒ¢¾¢Eëîçw­¯T¡ŽèÝd ×C=”Ö#Øž¢áœIhÉ“'ëã¾j³'ˆ&ú„ZŸ êãR­U­ãBf[‰¥@l)`9¶ôµ¥[ Ä…–‘ãBf[‰¥@l)`9¶ôIé„Ù»woÔÊæPõ7ÞxC^zé%Y·n]ÔÊ=Ò‚8ë9ð8RüñžeäDP=—uNeÓ¦èºÇ¤Ð¸qcóéãTz@¼¥nݺåÃÈ_‡y»té¢/»‰È §€eäðivÎÃÏnÞ¼¹Ì;WË#P—‰«kNøØ,mÚ´XCJ„ˆÄ *W®œõ6q|pèÞ½»/ˆP ü&ÊߢE‹Ì9^-åâ‹/Ö€Ùýû÷÷¿C°3EÇó€‰Ù+Ï<óŒ¼öÚkÒ§O NxÐ 6hXQ“sÌ1mÍš5&2ä2ÅÏÄñÕàÝDIh3!O‰lXµjUY¸p¡¦{ ß·oŸ2-³_xá…Šw»ví4Œ(ø._¾\C«Ðþ[n¹Ep¯^½º†8¥P&ê3q589!Xò:XFŽÁ`À3Yö Bà¸qã4^¯ Ì-ÄÀ%ؘ à­5óË=ŒD‘Ÿ~úIC„¾ÿþûú’Šxº„ å™`J‹ØÁÄ2dˆ†E¡\Ûœ2KŸ¡:„!þ0> °råJiÔ¨‘»XóåT/eRÊ+S¦Œ˜€ÜÁW•žx¿02¸3FÕ`ÚL´Ap5ÃUM'´)“ å 4ÈœúyŸ¶èŠ&˜·F"$¯ó¼fÍšZ÷Š+”‘)kÁ‚f‹él ­Ú·o_Å“‰h×®]ÊØL€N,ä€Fä±ËÈ1êpwðl}> x6’wâĉZ3¿­[·¤ ˆt4›NTbMŸ>Ý|ŠØN£"í¼à¦›nR‰Ís••+W‚“¥P0ððë#p8’/##CÓwïöþÔ‘òz÷î­åñ®3ù  Þ3TªTɯôHdÚ‡jìXNTB'`9Œ×¡CÅåÁT­¢D‰ÂDÇ$ãõ£‘ÀàýúõSɦ@;ð¢îfÍšùëwÞË‹¿–‘cÔë9ÏF2Â<0.¿HGoìØ±²~ýzU7‘â0ÃI'¤:‘ú‚ÑEíPW‰ú8i\»Ó¹w¡> ŠävÀlRAR¿@Ü<ÍÁÌÌLÿéNº“Æû^Ë‘¸òxŽÔ÷‚àæHxð‚ëòz?/¥YFN@o#Qˆ¯Û³gO•ÆÜ£Î-pÔ¨Q*}`®K/½T>ùäÅéì8«€?üPÃtr½dÉAÞ¶Í„15¶8àšâÔãØèHÆáÇ« @ž#F¨T¬W¯žÚÙ” ×{9$û©LTêFÚØÄnÀ¦Ÿ4i’æƒeË–U)îÎc¯R Ó"~€aùP?‡ª¶÷Hdþ¬¶+6sVV–Jiâç2è‘–8åŒ?^°§±Åav~‘rHy˜– UÀÁ5gÎ- ±zÍd ¼MÐmiJ™ê:ìjàiÓ¦izð?w:i¡‚„£­Px7˜ÉÇ!DÁÇbì»B… ê|c’ êñª?8_Úß§õNò4ÎHŸÙkë’ƒÊW§N€rŒ¤ôiê3êc@ºq$ùxfÔë€tãñõ‡Ï¨°>£vê3#i}Æ«ë3*»ÏØ“ùsº1»}Æ[|Hݼcœj>£¢çôzŽÏÌ„á3NµCòGU@u€G0Û·}ûöàä°ï6á3ZØùS1£•È ˜ªQŸŸxâ •¾îêqô°t ,?™œì¿wìh‚¹À¦eW»ó9×ÍFðq¹lv·Ýî”U²dIçRqvyAùò±? Ô«ÞTJ³Œœ€ÞB­nÛ¶­ßa 0%Î#7°¼…jê†úõëû=âît{Þ°Œœ€þu<¶‘Víx÷X² l\/éœÏÞ§¬×:½úÓ¶&RÀJä;žÍl²H7ÈŸ¿€QõÊöíŸïxvº5/Àžv3 ²‘&Ò±W M“'/2Û)Çšƒúº˜ÝR‡:ÜŽ HûJ)`Uë8;™«;v¾dgï—×_ÿ<™Ñ´¸… €eä„ÉKÉÛ·ï‘Ï?ÿM›Lܨ={wXå%Z¤j[-#§jÏEï)S¾3»Á~@Áïôé?D±t[T<(`9TNò:ÆŒ™gö_Xh¾K d˜³»%)[sÄìÁˆ_·/¤:Æ›o¾‰ÞÐŒ;÷æ:NT@ö&æ°Œs'o«Wo‘U«6{"¸dÉZsPÁvÏg61ù(`9ùú$n}ýõJSW>)V¬ˆþ-ZȽo_¶|óͪ¸áb+ÊìήÜÑ/åßþ_Teg0§o5'rÜ©mâcýš53”òÌ °{­ó@'çÔÄZµ~ë ##ûœÞ±Ï’VµN¾>±Y DLËÈ“,=_0š´äÏoþYHI XFNÉn‹>ÒœëgŽ ‹~Á¶Ä¸PÀ2r\Èl+±ˆ-,#Ç–¾)SºU­S¦«<µŒìI–¼—hUëÔîsËÈ©Ý{K¥€ed;,Ò€–‘Ó m,,#Û1`)°Œœh›`)`ÙŽ¥€]~Jí`9µû/jØÛ姨‘2!YFNÙm¥–Ñ¥€eäèÒÓ–f) XFNÙ“¯Rk#'_ŸD‚‘eäH¨•Æy­œÚk9µûÏbo) °Œl‚RÀªÖ©=,#§vÿE {«ZG” )È2rBÈn+µˆ.,#G—ž¶4K„PÀ2rBÈž|•Z9ùú$Œ,#GB­4ÎkmäÔî\ËÈ©Ý{K¥@Z‡ŒiÖ¬™|üñǶ«Ã !bŠ©*»v- #·Í®¾újyï½÷’‚i2fݺu2jÔ(9õÔS“‚؉ô¡À’%Ktl%K‹¬j,=añ°È,#ç‚xöUKd¡€eädé ‹‡¥@.(Ö6r.èµW¿ùæ©^½º,X0We._¾\pHeeei9¿þú« º–ßoÿóØ¿¿{ì±RªT)½ÏéߪU«$##CN<ñÄœ²…ýlëÖ­òóÏ?ËYg¥åòâêÕ«ï“NŠ]¬ew;,X`bX"Vä裖ªU«* W¸tÑ—S쟕È1î°Ç{L¶mÛ–ëZ¾üòK6l˜¿œÊ“O>é¿öÙgeáÂ…‚fãÆþôœ.ðèòÉ'9e‰èÙ?þ(½{÷–ñãÇûßûè£dêÔ©þûX\¸ÛñàƒÊüùóåûï¿×z¯»î:ùã?"¢K,pŒu™y^"÷ìÙS¥Ú¼yó¤Aƒ*=æÌ™#õë×—ûî»Ofûöí¥fÍš:8^ýuM{æ™gäÛo¿•*UªH¿~ý䍣ޒÁƒ G9H¦‘#GúûüH $’wöìÙ#¯¾úªþ.[¶L®ºê*éÔ©“J1˜F5k–ð¬iÓ¦š‰»eË•¼;vì¤`Ñ¢E&ºóÎ;eÚ´iR¶lY}﫯¾’ß~ûMówîÜYš7o®82DÛY¼xq9ûì³%;;[Hƒ©K–,)wÝu—œp òÀÈ‹/¾(”óòË/ëõ/¿ü"ï¾û®ôèÑC‚i@cO;í4™0a‚œwÞy‡Hz–jÞÿ}•­Zµ’-ZÈóÏ?o–¼v)^ǼÒò¹f²*Q¢„¼òÊ+„nwÜq‡T«Vͳ±¯½öZ)W®œÞÞ}÷Ýڮ͛7+]&Ož,ß}÷ ¡wîÜ)·ß~»4lØPV¬X!O=õ”lذAÎ=÷\¹í¶ÛüZ…Sn2ÿæy‰üûï¿ËÞ½{åÑGU&ؽ{·üç?ÿ˜yíÚµròÉ'˧Ÿ~ª}H÷H˜"EŠÈ˜1ct ‘þÅ_èà€™|¨{nX³f°ÆÀ­U«–2u}öÙgÒ²eKeŠ>ø@þüóO)\¸°ª„¼_ºti­A=g2Yœyæ™rÆgèÄÀ¤Y¡BY¿~½ÀàÛ·o—¹sç*S^ýõòæ›o*:0ßÅ_¬ ±råJMûúë¯å§Ÿ~¤ú\ ŒÄàG5Ƴ™æ¤}´@%°©ܹG}'?õ-Z´H¥&̃ ™ç]0 œ¶@T`L&Tb xÙe—I5ìæœènàã;vÔ~ðj‡f0ÿî½÷^Ÿ:iî_OÒ 9 Ï/ýËæÒ)§œâ~%鯭D>L1(±™`˜…ûáÇëL΀A‚1›ck2èlJ/@E˜B¶ƒu©ãH ®&Ç# cñ.^f#*<ÞiÔzžx¨¯ØÜHCðêÕ«§"˜4r‘¼3gÎTI ££â"-™¨¼hிråÊJ7$#møØ¤L0 “ÅáàœsÎQFÆiÍð0‘xµãpe9Ïñm žc’ …©“‰ö¶k×N¥>fP*•È9ôL 45ê5ŽìGU¸oß¾òöÛo+öéÓG) 2œJ0„œrð®bO3Ÿ~úi•2 PI…Šã¨Â.¤ÌI“&é^qœ3Øn,á f2ààšw±[sp@ßpà j7#å`VÒ™¨°§a&´ €ºÀ&F28u{Ñ Ø;ߥK•â”…Šãìæ›oVÆdBp{·Éãðâ Ÿ FùŒÉóyµÃý~N×LŽLÀ”‡ÓŽz¸ÇN˜¨pþ¥¤õG¨Á¨ ¹ÝkˆsÅí…†yPû˜Éà¼AeÅ€9p:‘‰#!uGŒ¡vª#ÞìxҟɉîÚS¬X1uä¹ÓC]‡¢A¨üHAèƒ#ÍQeõ>Ô;N:̃¹qÕç¯_`˜Jø6(Ï1?È NHb&,Çüð*ƒ4g¯5ŽÂd+‘Ó x/ßxã ¹õÖ[r2¼ì(œY ”P€” ñ·è®‹BÑ T0‡Sê5á‚ÝBµ#œ2Ý‚“|p>¦"X‰|˜^CR2Ý3÷a^ÑǨmîÁ‚ô@%t^¤"R-’é¬fO,žg${¢Ü1À#UÀñ”Ó¹d“ÈÖÙu˜ÞDõ‹”‰)ÒÍÄÜìn&& & —‰azÖ>QÅ™$pp¡%ช7`f°Lƒ­ʱoœÂ­Î-‡[W<ó…¯ÛÄ+[×!`£›ظà^W›IØu†'ǽ³ù„ €-‹8ÕØM†7™Ýl¬/ã‘Æ<`3 V¨T0.^fvžá Ãögí™÷:ö>ù°qž9;ª¼v—9øÛßèQÀJäèÑ2¦%±£‹õW7°ÞÉ&Ôÿ×^{M{0é¸qãTe‡©œlŠ ïĉõuvkÁ˜,©±Áéjb¶/²‘5šÉ€-Œ… òï`{á…tS ÞxÔN–xBí.s·Á^G‡V"G‡Ž1/;UÖ zìc©`6Ì à=gÃK[#ãeǃÎÒ»ÅðV³ý‡’ÕÙAÅæ´gÙ ‰‹)€tç×ñÖ³¹…|mÚ´Ñ:‘Ü,³±Ääì.céŒå' ±¡€eäØÐ5ꥲ$ºµØ ÃÔ©S'À&G½F¥û{ܽ#8Ýk’ÞÉGYØýHá``iˆe+©ßÉk£C«ZG‡Ž1/…½ÎlÖp>;Äáņ ¶<²3‹]c0L…jÎN/7Ò^;¨ØžŠgšÝg,©uíÚU·yòk®°O¯<{–QÙ±ÉÙb!~°9~´ÎUM¬O³› ‡–³¿š!D*³õ›­Œ^›KUØiü…ÚAóò1›9ššn¨ãØÈ|„³ àýNfÇ›^ÐPÑaä3f¸«ò«â‰ö&*°ëÈQ!c| µ ) Ãy1q¸zí Bàn5 ¼tF>ç»_¯I#\R!_²­#[‰œ £&GgwTPr€ü,Ü{¯T^»Î‚™˜òÉÇ'€âOk#ÇŸæ¶FK¨SÀ2rÔIj ´ˆ?,#ÇŸæ¶FK¨S ­mdì5¾‰µ`) ° 6Y ­½ÖÉBd‹‡¥@¬)`UëXSØ–o) XFŽ‘m–±¦€eäXSØ–o) üO«m­.’IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1MutexFailed.html000644 000765 000024 00000032271 14042362132 025007 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::MutexFailed Class Reference
MySQL++  3.3.0
mysqlpp::MutexFailed Class Reference

Exception thrown when a BeecryptMutex object fails. More...

#include <exceptions.h>

Inheritance diagram for mysqlpp::MutexFailed:
Collaboration diagram for mysqlpp::MutexFailed:

Public Member Functions

 MutexFailed (const char *w="lock failed")
 Create exception object.
 
- Public Member Functions inherited from mysqlpp::Exception
 Exception (const Exception &e) MAY_THROW()
 Create exception object as copy of another.
 
Exceptionoperator= (const Exception &rhs) throw ()
 Assign another exception object's contents to this one.
 
 ~Exception () throw ()
 Destroy exception object.
 
virtual const char * what () const throw ()
 Returns explanation of why exception was thrown.
 

Additional Inherited Members

- Protected Member Functions inherited from mysqlpp::Exception
 Exception (const char *w="") throw ()
 Create exception object.
 
 Exception (const std::string &w) throw ()
 Create exception object.
 
- Protected Attributes inherited from mysqlpp::Exception
std::string what_
 explanation of why exception was thrown
 

Detailed Description

Exception thrown when a BeecryptMutex object fails.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1RefCountedPointer-members.html000644 000765 000024 00000022030 14042362132 027617 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::RefCountedPointer< T, Destroyer > Member List
mysql++-3.3.0/doc/html/refman/namespacemembers_func.html000644 000765 000024 00000006124 14042362132 024004 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Namespace Members
MySQL++  3.3.0
 
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SecureAuthOption__inherit__graph.png000644 000765 000024 00000014012 14042362133 031054 0ustar00tangentstaff000000 000000 ‰PNG  IHDR•‰%¶z¯sRGB®ÎéÄIDATxí œÕÇÏ4µ¨ÐßQ YBŠŠ´‘TJ -È–ìY²$IÖO"T¶DÉVɑȖKÊ&‘û?ßGçöÞ;wfÎ0æÞkÎóùÌÜ÷=ïóž÷¼¿ó;ÏyÞsß™_ŒO›ræH=z_”zu¹šgp¤rLHu©RRWaXHõí·ßª˜˜÷s1(UªTØØR­[·N=òÈ#Šg÷“úüüóÏêàÁƒé‹Ta»[wá4A ,‘*MîÌ]$l8R… ú ÷Â.Ü[KúÎ~ýõWuèÐ!U²dɤ-þõ×_jñâÅjÓ¦M*_¾|ªjÕªòis:9Пþ©®¿þz÷ˆ÷I·‘jþüùêõ×_O•Ú¹s§ªT©’2dˆuÖ¬YªråÊjêÔ©IÖ_¾|yõÏ?ÿ¨;v¨o¾ù&Ißh:±¤š2eŠjܸ±x¢ÉðáÃÕu×]§Š-ª¾üòKÕ½{wéDÀŽW¥K—Vû÷ïWíÚµSùóç—ýµk×J_@ž«®ºJÝqǪvíÚjÆ þ>7nœjÖ¬™ø.\XÍž=[Ž=ýôÓªE‹ª`Á‚ªB… jëÖ­RÞ©S'5mÚ4Ù¾óÎ;Õ¶mÛTçÎUõêÕÕ‚ TÏž=Õ¤I“Իᆱž|òIuâÄ U®\9Õ²eKuùå—«úõë«ãÇ«V­Z©Õ«W«ºuëªßÿ]­°#FH[¹îkÛ¶­zöÙgU‘"EÔµ×^ñŒXRñḦ:t¨ŒúöíÛ«1cƨûï¿_9RÝxãjâĉúÂ… UÆŒÕ÷߯>þøcµqãF!ʰaÃäÑšŽÆ·uëÖŠE§Û»w¯úä“OÔû￯¨ºté"‡ dùòå2•™¨F§2½a7Ýt“Êš5«Z³fV ÿýU¥JÅ”YX—Ë•+—‚äˆ6öïß_]tÑEj„ ê?þP¿üò‹:räˆrìØ±Š¶÷íÛW=zTíÚµK­X±B}öÙgrߣFò^*â¶#–T uË-·(:§ZµjÒ±f{÷îÝŠ(±}ûvœèB Š‘+½øâ‹ªD‰jôèÑêóÏ?—:n½õVuï½÷ªbÅŠ%è„ûî»O/^\ê MÔxâ‰'„@D ˆ€ÕhY¯¼òJuêÔ)!þû‹¨yòäI!;EÏ=÷œÔõøãK]Ù²e“Å_ÈfìÓO?•ûäÞxà¹Î¼yóä0‘“HÕ A! 9'?#šT€ˆ1¢sç΀_¦L™dê€PsæÌBÐÁ_|ñ…D¦:‚ÀÔgŒó‚-gΜþ¢¿ÿþ[¢ ¦Ü[æwôl\}õÕ BxméҥŠ( ÅÞºˆH¡ 2_vÙeþC§OŸÂRpÉ%—Hy† dÁØïMªäð":õë×Or:öƒ>PãÇW¯¾úªä=D©Zµj ш&tÚ–-[T»dÉE’ã0•-[V|-Z$Ÿ3gÎT 6”íï¾ûN¢#;øØ±cŠè3cÆ Å1Œ'¹ÁƒKN+eÔER>wîÜ€§<¢™1"~Žˆûõ×_«Ûo¿ÝŽšÏ¨\Rà{C Â8p@r%öé€:H ‰ÈØË”)#I>I³ñø›zèÀk®¹Frr'SÎÓÛ‡~(l"9×a:«S§ŽZ¶l™Ž¥ÈH´$o‚ðäM„å‚©•éîí·ß–ròBêxðÁeŸ¦zÚ 15j¤òæÍ+Ǽ¿Lû¼eµÍKzim:šøôwç|Ypûô•ï·ß~ó×¥£OG ŸN’ýel莖²Š+útðëÓ§¯k×®>,ûtGúËõ“¢O'Æ>=}ú4AýåImè§P¹¶&O€›ž²|z õéHP®£TÀ5ÍAÚâ½'SnûÉuô´këžÚ~½¢2R1*ùRš%‡æÍ›Œfò¯P‹ˆÞ\%Ô¨¾ôÒKC+“…<T˜9sæ×Ævys;Êȼ‘“2,±¶œ9ù¿£–TLäByòäIÊ,x;ò…^yþôéÓU–,YBKiáž={”É­Rzn4úG-©X—J)¡è óf:+1âäȑøœógrQòœ/aDõÓ_„aéšó/1dii+Ì<‘E‹ÅÆfÓ‹˜ùõ×A›£¥Éê†nPëׯG{{‡eúã{º0pù¬îÑc¦^_¬öî]«²gÏ|Öõ¤—ÝôgÑÓÓ§¯VqqõÊý: oçâH• Ö¬ùI¿ipRO}ë7–'ã타#U2<˜2e…þ²øÌW)›6íVûö…þÞ.™jÒÕaGª$ºûôiŸúè£oôwv§Å+66FïŸyG+‰ÓÒý!Gª$(°lÙÿ÷€¸ÅÇŸÔSàWIœá€#U<˜<ùký‰]»ªŸ~ÚPævp¤ ÄÿwâÄ)ýŽÔÆK¬êMŸ¾Êïç6"àH•)Y¸ð{ý…ï™w¡¼.< Nž¼Â[䶃ËâgP"r—܉÷ ²gÓíóémÞ48óמ=‡ÔΨB…þ{K3"o"L Ë×4aº×]öðáxý‡ ?Ë9›7ïѱJuëVOösåÊ¢ÿúæ¿W”STñ…i¢×9âô[˜Å¥©qqë·I¿óïGCûÃÙF—S…ý ôÚŽT–ñï…[ÞGZ¸9RY¢MoUXÞÒyss¤:oЦߊ©,ûÞM–@i7G*K¬Üôg ”#•=PÎÓ©ì±rž–8RYåÜìp¤²ÇÊyZ"àHe ”s³GÀ‘Ê+·¤` ”vs¤²ÄÊ-)XåHe”ó´GÀE*{¬œ§%ŽT–@97{©ì±rž–8RYåÜìp¤²ÀÊ-'X€äqq¤ò€‘ئ[NH ™ÐåŽT¡qq¥ç€€#•%xn ´J»9RYbå¦@K ©ìržö„ýÏÞ‘ßà¢G²ÅÆ^"ÿH6&¦M$7S¡†:j¸-ìÓ}hø1½DêÏ©SjÀÍÛ>pG-=n>ÉõÃNªˆ@Á5"Up¤JU8]e àHåxê„=Q·¹#r¯:BÙg£4…z6hò¥†¡‘LbÌúÊU«Võë+'W?*`u§V[’»^ZŠH…º;ÒµˆS£Šæ1"Û)5„·Q+M Û¹s§ªT©’(Î:tHDÄ+W®¬žLÌ Rrª£Hñ^ˆ¤øÂ… «=z¨W^yEµiÓFÔG)G¤»F¢Ž…b(ÊèØˆ#D_/þüjøðáRf~ñ´ôòË/ËñråÊIs …Ò»îºK"HíÚµEaÅw¶!2‘å™gž‘j:wW¯.í@ {Ò¤Iú?¿+·( RoË–-åTJQ˜oÒ¤‰zï½÷ä>~üñGQ¢Gîö©§ž’È‹N!ÚËXÛ¶m‚àèH£0ïÔâÁ¿¢†T<27mÚTddéØ-Z¬ÈÓÒÙ+W®)Ù‘#GŠ<-=vìX5lØ0Õ·o_‘š5ý°fÍÑXFÔUu~øWŒƒ òþðÃ2-5J«=œPhB*4š'L˜ Ð^jª”OTà™ÑjFÔ iÛµk× 9Q‹GÛ!"Ôè‰tTZýT­ZµJ¦Ñ‡zH½ôÒKRƒƒÈÌqdqiK´XTäT€IEÄ@Åv€Ž1ÅèG"¡GŒBù Bר”)SÔ¼yód›_³fÍ’(Å´š={vµÿ~ýo¬‘oôæ›o iŒØdÁ‚•–ç•ó‹+&Óí€@^£"Z„í»âŠ+D¸›v"à}ñÅ‹ø·9Ï”C6~ˆªf½‰)ŸHÕ Aƒ¨"UÔD*¢ò¶t.ÂÖ|ÁK~E^bD‰6t6‘”Ñy¦Üt$ç zøðaùéÖ­›Ê–-›ˆz÷êÕKH[¾|yã dŠD-Ó'êòF¬Û82u¡o$r`¥ÖO–èiü¼ŸÁm¥ý´3¤6×ôžÉÛQC*¢Þv’crš5kª™3gÊáiÓ¦I~E„Z´h‘t$yI1ù–1ò&"FÇŽEQ\RÍŸ?_ 0@!ËÔy3¢ÎŒ3”ÔÙ,9•‘¶¥ ´wîܹ~me"™×hëœ9sć"[´?FÅôGTâÑqk kò:€d–„˜žéhÁ‚ò]bµjÕT‰%ݨQ#¿x7uÕªUKr#¢VV—Ä™)¢ðÁHš!)¹T°QGÆ e)¡lÙ²B­&/ù^ÿþýÅhÓ®];ÉåÈ­ˆ®jûöíª{÷îþ*ùŠê£>’\ŽioôèÑþcÞ ®5¦GcXM `û4°ç܆mÛ¶ùô4P&ŒOwT@™wGG1>^Û·oŸïèÑ£RtàÀŸ&‡÷p‚íøøxŸŽVþsŒƒž²¤=zz3EòI5ùÊØÁO€å¶úAƧ‘­ûùôë‘Êf„u‚-¹R–‚Í+öM„IÎ2gÎìŸÚ‚}‰¬DU¯1톲`¿P>ÑRu9U´Ë²ƒÉ­¢¥Í©ÕNGªÔB2¨ïÓgС ~בê‚ïâ´¿Á°çT¼õÉJu$?ÝÄÆf“7?ãã7§}¥àмù vR±Ö¤E"‹DÛУÇLý¨¿XíÝ»V¯ÀgNÔÏ8ƒ€›þ,˜0}új—Q/R®³ðv.ŽTÉp`ÍšŸô—Ê'µ~òßú-„åÉx»Ã àH• ¦LY¡WêÏ|µ²iÓnµoß‘dÎp‡©’à€^L×_¡|£¿—;óollŒÞ_›Äî8R%Áƒe˶<•ÆÇŸÔSàWIœá€#U<˜<ùkuìØ‰]»êw¯ö”¹@©ñðï8qJ¿/µ1Ár«Ó§¯òû¹„8R%ÄDJ.ü^eÈ›à(O‚“'¯HPî þC 싟ÿ5%²¶Èx'*{ö8Ý0ŸÞÖ¹ÂEgÞiÚ³ç~ÇüU¨Ðe‘ÕèiM /ÖDH["ª‡Çë?ZøYÚ´yóõþû«T·nõd?W®,ªtéÀWZ"ªñámLo©é€9âTµjÅåh\ÜÅúÒïüû‰œâŠÿEÀåTŽ ©Ž€#•%¤‘ü…å-¤™›#•%Ô.õ´J»9RÙcå<-p¤²ÊM–@i7G*K¬Üôg ”#•=PÎÓ©ì±rž–8RYåÜìp¤²ÇÊyZ"àHe ”s³GÀ‘Ê+·¤` ”vs¤²ÄÊ-)XåHe”ó´GÀE*{¬œ§%ŽT–@97{©ì±rž–8RYåÜìp¤²ÀÊ-'X€äqq¤ò€‘ئ[NH ™ÐåŽT¡qq¥ç€€#•%xn ´J»9RYbå¦@K ©ìržöü1é’%KôLV³?;xÆÆ^"ÿH6&¦M:¹ã”Ý&ú;Fâ…3H…þ *U=öXÊjuÞ鄤øŸ^R¹œ*ÝÒáüݸ#ÕùÃ6ÝÖìH•n»þüÝxÄ‘ =hç‘#GmÁ8»ví’måÇ<´ÁD™ãÇË £ÓP•§-X¨:o»í6Á®U«V"·‹ o¹råDÆbÒȼ®!urÓ6¢ä`ÀÑ~ˆŒ—.]dúG–—A ö >0˜8q¢V´ˆé_„Á1{öl.‘bK1©¸ Fî¾L™2òi¶É…PIß½{·¢ñD´`• !X²dI©ãæ›oö+¤{ï jÕªâOÜ4£«_¿¾¨¹y +Fç%R³;wn©Íš5“N!¢ ÂMD¡óé:m>òZ£F ©‡õ:¢WRFd…|DD®iÕ¦. anTê0”›ÁªÎŒ3Jt€$ ..NÝsÏ=2XòåË'÷Î``v6ò5/†è8÷ƒ63ØdÉ’EêCÚ³ }X¡BéúÁ N®ÉõÀœiølì¬HÅE1B9#Ðk€S©R% ¡„QGg3z¹1¦¢$Ë›7¯ÿÔP2°lŒH@dÂL9eDƒÄlòäÉ _Ïž=¢Ù„}À¢±ü°€W¤HñÍš5«TG{‚ån‰®^Ë™3§ìRÓuщ 4r" ûLkØÒ¥K¢1eÁuR†AFCN©Ü!„×À„èÊ`żØ¼¼þlÓ^ÒcÔ a1ÈŒ™kÊN ©’»Db¾¦SˆR€ ÀŒl:—(Å(Ù°aƒÜ ˆé$ØÖ­['9Ó ‘ÅÌïD@`$*THN£.¢f¶!=aÞ}úˆž2O¢7±:iGbV³fM™ÈM1È0aÂU´hQ‰h”™)–èÉ”jÌ[/÷‰x0¸µ¨·L«Æ÷\?Sœ¨'uA3×Cò: # o¡S蜆 ÊÈ ¦¦“'OúGþ¦n¸iÓ¦’ ÃQ<í@ "_ÇŽ9E>‡ &SÆ6aèl¢"IlÛ¶m…ì{ôÑGe:)]º´t Ä`ªjÔ¨‘Ê”)“ä3D¦-¢OäúrAýË´“i’(8gÎi+"i®R¥Š?ÚpÓ MySQL++ Reference Manual MySQL++: result.h File Reference
MySQL++  3.3.0
result.h File Reference

Declares classes for holding information about SQL query results. More...

#include "common.h"
#include "exceptions.h"
#include "field.h"
#include "field_names.h"
#include "field_types.h"
#include "noexceptions.h"
#include "refcounted.h"
#include "row.h"

Go to the source code of this file.

Classes

class  mysqlpp::SimpleResult
 Holds information about the result of queries that don't return rows. More...
 
class  mysqlpp::ResultBase
 Base class for StoreQueryResult and UseQueryResult. More...
 
class  mysqlpp::StoreQueryResult
 StoreQueryResult set type for "store" queries. More...
 
struct  mysqlpp::RefCountedPointerDestroyer< MYSQL_RES >
 Functor to call mysql_free_result() on the pointer you pass to it. More...
 
class  mysqlpp::UseQueryResult
 StoreQueryResult set type for "use" queries. More...
 

Functions

void mysqlpp::swap (StoreQueryResult &x, StoreQueryResult &y)
 Swaps two StoreQueryResult objects.
 
void mysqlpp::swap (UseQueryResult &x, UseQueryResult &y)
 Swaps two UseQueryResult objects.
 

Detailed Description

Declares classes for holding information about SQL query results.

mysql++-3.3.0/doc/html/refman/functions_y.html000644 000765 000024 00000006513 14042362132 022024 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
MySQL++  3.3.0
Here is a list of all documented class members with links to the class documentation for each member:

- y -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ConnectionFailed__coll__graph.png000644 000765 000024 00000020023 14042362133 030305 0ustar00tangentstaff000000 000000 ‰PNG  IHDR™”€Â‹dsRGB®ÎéÍIDATxí]˜M×^Æ`ô^F¢¤è=ˆ‰ö FAð"EïD´„D ’x’÷<]Ñ¢EÎà1Bˆ6º“D£ì·þŹÎܹwnŸ¹å¬ï»÷œ³ÏÞû¬½öÚk­}Ê¿Ó(&2È€%äÁºª ˆ %3Áã0”Ìã"6.¬ÁÍ›7)**JŸdìÛ)ZµjQúôéíÌm9ÛèöíÛ–OzIê /¼@ùóçwˆ›DJvãÆ *V¬˜üª%À3¤/¾ø‚ ,H+V”tT´téRzî¹ç¨T©R4}út©{ƌԱcGªP¡=óÌ3’wΜ94wî\jÕª•ðåíܹ“Ê–-K¹r墮]»fw‹-’SµjU*\¸0Íœ9SòzËßìÙ³©téÒT´hQi“¾mìcëÖ­ep>|˜îß¿O}ûö¥ž={JŸàfàmÛ¶IûÑÖ·ß~[Úî‘vâÙ¥FçÎSgÏžÕ-n?ÿüsÕ©S'õǨöíÛ+V Å#FU¯^]ݹsG½ûM›6Šïù¨—^zIýãÿzX8Š;Uö‡®x:¬&L˜ ^ýuÅ®X0RîîÝ»Š•C}õÕWŠo§¨%K–(VFÅJ­Ž9¢V¬X¡Ê”)£Xx’öã?ªeË–©œ9sª_ýU}òÉ'*_¾|êøñ㊕Z±©¿þúK…‡‡K]¸+¦ðž'Mš¤þ÷¿ÿI¾M›6©iÓ¦)V:ÅVOxxöÙg-ÊAŸˆ¶òÔ^ŸäÔ~dd¤ðj­0»z•%KÅTíØ±C7}ÛN:…çЪW¯^êâÅ‹"‡+W®ˆlÑÖèèhÅA½óÎ;r V.ŃOýôÓO*wîÜjòäÉÖ.-él@ÔÉ“'“Ícéd¢ûdöhq‰%h̘1bU¸1„Q‹.]:Êœ93qGÑâÅ‹©R¥Jb°‚uÑhÔ¨Q²»råJI[¶l«k˜1cFú׿þEMš4‹Ö²eKb%¢:uêH^XžÐÐPÚºu+eÊ”‰XpRW¡B…Lñ+®X8X¹ˆ…ÄÒìÙ³Sš4i$ÿï¿ÿN<¨¨OŸ>r̃C®ƒú_}õUªV­q'ÒÀå¼7üA6°Úï¿ÿ¾x¸ÜSÓ·±! ´iÓ&b.Þ^èßÿþ·È^è­·Þ’|ðž"‡ÝeóæÍiÞ¼yCûÛßhþüù&Þ=z$élI$-[¶l¦s–vx´‰[„ÛD^­Ã!L”eÐ×…ºté’eñkÛ¶-•/_^òçÈ‘C¶øCà …2'”G‡hÞá.Al-d,üÉüa€¬Y³F¶¸2À·žØ"%Q0œ7o§þ ÊyŠV2Xv‹„ØgذaĦVxƒï "Ä[Ë—/—Î@4úå—_$Â1,fyM›6 6tèP*Y²$íÞ½[îœwëÖMFãÆiݺu—±{ qFƒ $DÝ»w§Þ½{“~&…XÂg7(ÖµråÊÂxÔ±”“Ý*±Ë!ÉÿûßµÓ^¹Åwİýúõ£]»v‰5Â`éÛfóðHP´'NH_@Ξ"‡• – ¦÷Å_”`›ý»¸0´Á~‘õ Ÿ8f–Ѓ–Û#¤ÔØ-Ù ü‘þ±cÇ3f*ÎnIñtYŽ”_¸pÁtÎÖVü¶ˆŸ­JÀ¯ÏwýúuuþüyS¶°21á‡Í¦tì ¯9ç3gÎ$j‹y[Ç)øk| ðg…Òek©m‰2˜ &Nœ(ȾnݺŠ=‡Y®Ä‡)øCÓàc*¬'þaD)RD;´¹…¥²‡¸›,˜>ÓÎ[Š1,åË!ƒ¸l­œ/láêÌÉRÛÌóèÑG<¸‰g6àvOíÚµõYܶï!ûè6þ®H›<8\0 |óÍ7tõêU¹a‹ûnž"¿S2mFê)ù[½Ž¾æLûü¹ˆQ&°%È’Á¯ãÍXÜ—òÚ¾ý‚°ùòËa©Î.b;W qßõw¸šG÷ÒPÌÜŒ”ÿÍ¿(mfÏ~|f‹ÛÃl"%C`ͳ {ÊyEžM›–ñ³Å|.'ß³{Õ+xr… Ü–p”n]¼Gkº¢¸« T«ÆK”1w¢.u´:ä÷iwùÒK¥øNvÍž½‹ïøCwï¦þk-é%+•^Ú}‹–¶ý•â~O Á^©``ݧ•¬bÅ0~ô•ëíÝ{†ŸLà§ ×­t‰%G͈¡ ¢éÁ_Hñ“¥|e3{m}ZÉBC³óƒùÇ‚ããïóþkT¯Þx~oì¬× ÜUÆÆ+ÚÐç šy•° ÎD…k$ÿœØÕëºRÞ§• /W®°©ý>âçªñÔ¦Í×´`Á^Sº¿ì܉I %mŽÑå½·èAüCS³‚Òñc¢r†%3 ÄÝ;ˆË4k¦Õ «6|ø2ž ,Ó’|~{ä.-‰ø•îü–@î%~óâAü#Êóüã7V¼±¡>oÉ*W.ÊïT=}¤¥ “Ì<ý…6ö?Cî?¢G“Þ¢È^4„ÒxߤÒ$zŸW2ÿ°\zÊ!eÍB_}ÕNŸìÓû-=O%å’øKß¼QQ¨jV}’×íû¼’eÏž‘?ŽG ðôéƒ)<¼¿K6‚Z¶¬êuw–¡œÁTgTQ ÿ0Œ‚3QºŒ».ï¨òø%Kgëöt9ŸW2¨R¥"¬\iù½¨´bEO~ïwÚ¿ßÿf˜î+:8=†|Rœ*ý3”‚C‚(!î!å¯à½A¿(pâ7†|óˆg”jÞ¼Ý&æ·m;¡^|ñc~¿í¾)ÍvN¿¢8635åΕuâ‡?LÇÞº“ŒyÚ\¦Fýï¼3G,[¿~Rãòn¿&ýÐñµüîÊ”7éDÇítc…~á.-ÉcÔ¨×dvy៖Nû\Úα¨R×PŸS0Úo-÷õ×[ø3¹hþ¶+}–pöÆÙ{T¸¦wÏ"­ Øo-üÏÖ¡óçÿ õë±Ö~ŸHÏR ½Ï*ì×JDŸ~ÚŠ>úhY’{i>¡]~¤_+ú¨V­’ü•û3Œ¥±ÑOºÌ÷šá×1™Ö±±·äíŒÕ«{ó—Iy´dc›Bð{K9æË—¿2oèSÌc¢îÐñå¶gÆøJ_–{3„’¡:w®ÍqƒÖ®=ìÍý!¼Å]½Oû¡BÕlÏ&Iàìi`¹€¡‘âä­w‰=ÁWdd´ª\y$­žà‰êÝVç†¾Ñ w÷A€ÎbXÙÇ×ñìÓÔ©SÕ—_~)°P ¡jAñGŠ1Ê$/ÎZ i€ÃÂÿyòäˆ(@}¥$% ¨{÷ùj̘U^ÛæóÛo¨ï^;ªÞ Á€(ŠA…_Æì4÷#EÉðO1 b ;Ř"Ѽ6¤ û€–` BÅ?+†ƒOÑöŒ»Ô\ĈÍéÛo#å!º–æ-[¼|¸ë³‹>,Œ‚‚ã¨8@bàAT`°?AKÔ`tPÀh€«Æ$‚ ä$ !±Å¬3x |ü¬‡ŒJ‰¶œ’åÉ“…¡—1ÚÏÒ”¯C×ømÿªÞ³…š½º¨,( p+^~ùe~’ñµj8n–¾Ûd%RÈË.’oáÔJõÅ'NÉÐë:Õf«p›V®<äx:sXx6~1ñ)0Ÿv=À[!hgxTQ2 %"ÍŸ €€—‰ÕbÔ˜Ÿ£8fÖ®áHz@*YPPúì³9r…O|« Kw÷ˆÅš’áÅM€ù à ÅÛ”#ÌB±:œ×®]눎¸œ7 nÆZ“RŸ> Ò33tÒÌZŸM¨ ^PJ IV ð¦ˆ×Ì –RV²k×âØý|Êð£=ð×±•ÏÜÝ)Y¯jNÏ?ÿ¼Ã‹s™×aé8 • á7j釢jôKòñx>u IC¹J=cöøSá“éåܾ}M^c2žáÕè“Sd³ÉÍCÎPö"Þ¹ô »„ðJ†@yܸ^Ác%}~Ï]rµY> Ù9æÕFiÙ’ù3¼’¡sñífÆehüø”›ušu•]d©í½îR|CÉžHrÈWxpï¬_q—l­ÖƒBŽ.Š¥Zío¶Z™œ0”ìI'åÌ™‰† iÊ¿Çk x²ïŽ}ÿÕæt}í«#geð³KsÁ5n¹7¢>÷Ë¡ˆ )æs|;"ë¾}ûº]%Rm‰|hwI`Íš5ÁÊ0f—ÞÕÏ~É¡d~Ù­ÞÕ(Cɼ«?ü’›T‹ÉRSšøÐuÿþýòÉ¿;ø`tzøðéÒ€¨_m.üt™Dw\Ǽ†‰’ï$CCCÍOyÕq@Z2 véÒÅmÑ¢E þvóúé§ŸL?O¡B±4Þ###éâÅ‹nk‡Ç*rû|ÕŽ ¹1ÉæŠŽŽVõë×W¯½öš SŸ~ú©b<Å#V€ß®^½ªØR¨¸¸8©gòäÉjÔ¨Qjß¾}ŠQoTÞ¼yU=äÜ¥K—T:uT±bÅT§NDîôéÓŠ‘päjĈjàÀjݺu*!!AÚ•+W.…ó ¸"åv@ðÈ€oV¯^=uýúuI·öp<ðénòJKpX…† 2(ÊH~¯k5kÖL¦×ãÇg Ø|˜¤M›6Éà›?>q‡ÐÇL;väõÈ÷ ÖÃÉ“'éóÏ?'VT©£ø]zúùçŸ#'EEE FÀHbbbˆ;/^,@%¬XR¤`Á‚„OùAú}÷ïߟºvíjúqG+*õìÙSÐu`Ù‘—GüJ`ŸpÝØØX^pl…€ ¯m†X¯^½P%Yâ í‡+0`;wŽXqDpÿ[·n%V\~ ö¡”Gû}±}ûv4Á?þ(é)þçn­µ§>nd²Ù=™5kVå ¢¸MF+,WPP”;v¬âNU°TÙ³gôÀÞ½{ |å¤I“w€ä+[¶¬bð^Ù_°` ê-+«ºrå1tæìÙ³­°™@,ÔVðüùóÚa’-,,) 4µ_||¼bÐU£F ᙕ@ÊÁÄŠ'|†‡‡ d' : $Öç-ñÆ@)  ÔºukµpáBÕ½{wÅÊ+iøƒEä¢`Ïž=+é͸qãdßÚŸ§,™×þ°>°V¬T”%KAÄhרU«VÄnP,ÈnU¬»7‚õ"!¬m@2dЊ'ÚæÈ‘CŽÙíð$·d_KÃÒ„ž¬QçÎ-ú!!¼ª.¥Ž-w.¯r^ÐuP$zðàðX¦LADòCnš.£ñ¡çÍtòɬ3y4B@õAv È×O òJwi J•*E{‰bEDDHàrᇠ˜^pŒ­*n4÷j^ÿ–-[dvˆ;Þèl€äÐQ€0‡ Ö[M~ïÿ¨œ×ï#@ÿCÙY³f[Iqm (,åÀ[ Ù‡kÇ59È&  &îÞ½[ÎãÏoúÁ†<5’:1Ã…Ë匼jÆiÍtz2å’lõp—ÜÙ’® fw™6mZÙÇÇ`Ô ×®¾ ø¦Ø*)ŽSÇQRco™Ü%+©”ûB4[; ô¯]»¦à.ùöƒ*Q¢„Ô7 âøN&#æûl-’<Ï>|¸ð¶~ýzÅ·Ld¢Á0œjÏž=ªbÅŠR?&)Ú9ö~q=¶\Â3®a‰7L rçέP¿æ.!#V^i[t¥ñ ¹±FUŠc¸Ts—É÷¶°çþ?[Jfï1ëD¬¡'t‚yüÄîCâ|EÉôù÷ £Ù嘒¡dÆ éÛ·o›ÒݹÃx’êN:ÅðïwMé–xÃIð« ,SfÞA\á7àb2¸äˆƒ]~cu£üôù0ó4'¶~â>0[³Dˆû´¸Mž-†þЭû|»!I}À°þ„%Þ€†m‰,µÁR¾”NK•÷ÉóÀs©­l±ˆ? (½„XSzv©¦"€-G=zBàÈS“,ñæI~´·0°u'yíìÒV#yšn+K’ó°zCsCZj+xYâíñßú÷ÙÙ¥o‰9°¹M5K—é”6m&vý÷ùvÇÓ{x¾Ü.~3Öíì§Š’¹¹] .TX°`~\T‰W éàB-þ]Ôp—.ôïç)cÆô|“÷[2×&2.°áõE %s¡‹-ÚËœð£¯4ütá„ 5ùwQCÉœì_X®+òã¨G‚š½`A¤“5ù1CÉœìã;NʃoGŒ¹qã1^ÿ蓵ùw1CÉœìß… #).î)îºti96{üðÜÉ*ý¶˜¡dNt-,Ö† G=µ¸s'žæÏßãDmþ_ÄP2'úxóæcü~VÒÇY{öDË:NTé×E %s¢{a±`¹Ì)}ú´¼–äaóä€?N•ä¾,uÄa¥J æ7q“ÞÇÆ`,QQ£|¹‰nçÝP2'Dºuë :}úª”@^Ñ¢¹éÙg Èq½z/P‰y¨Õ‹Jæbßvï>Ÿê×A°Ë\¬Êo‹1™ßv­÷4ÌP2ûo“øË%.ŠÂjqCɬЯ¾öýé­ûZíX.CÉ“—‘Û Jæ„ÐŒ"ŽIÀP2Çä•$·“%I’CÉ’ˆÄ±#&³-/CÉlËÈÈᢠ%sQ€FqÛ0”̶ŒŒ.JÀP2h·-CÉlËÈÈᢠ%sQ€Æ- Û4”̶Œ’ÍaÜÂHVŒ\³–y3ÚÈiœD `U»Ã‡#î25!…Ûl(Y </g(Y öz ·Ùá˜,…ùKr¹{÷îÑñãÇ©B… IÎ9›€å•G`ᮚ5k¦z¼yàÀ*_¾¼,‰mo›°B0Ú¡',Æ µê“LûÚ5PKPÛ³ì"òbU¾B… ™ê±gÇç,–ç?~¼=m³+Ïwß}G¼€*;wN:iðàÁ´nÝ:»Êº3–ÿ[±b…TÉ«ûʺçŽÔ¥°ye`:xð é‡õέ‘vE‹I~kùôéê±l¶£äKÖ£G*^¼¸¬¥]£F VÚ±cñ²Í„µ¸û÷ïOÓ¦M“Åß—,YÂPåqrB‚`êׯO={ö”ÅåÇŒC111ÄK*ËÈnÓ¦©Ýºu£çž{ŽP7Fþ!ChóæÍb•NŸ>-õ¢žZµjÉbòS§N¥qãÆÉ:ÝgΜ¡Æ/¥L , œ9sJ½-[¶”5ÌqpäÈš4iA±y)gÂâV2Ö%ŽŽ&^JšÞ~ûmjÒ¤ ¡Í¼ µ\¿hÑ¢ÄKWËÚå3gÎ¥Å"ª½zõ¢Ò¥K›ÚuöìYªZµ*µk׎þóŸÿÈõ±Ä"xÃbõ¸.¯NL'Nœ`$Çg¥}X³sÊ”) 'š^ÖC_}úô‘²ÈóÞ{ïɾö‡uÉyÙlŠŒŒ$,8ûî»ïЬ´khùø–YâõСCôÅ_HfË–ªW¯®±{ëK†EàáÖ è 6¯Á- …2`&æ„Õw!œ¹sçÊ‚íP4¸®‹/ÒâÅ‹E0¯¥MXHUOP$^ÿ›¦OŸN7nÜ ½{÷JÇïÛ·ø^ç@!!!ÄkË>ÜHXX¡“ ,hR0œÌš5+µoß^òa @&NœH¼.:Aà¼ü2íܹS:öÍ7ߤ… J^ð‹6ùå—ÄkŸ /'Ož¥„¢@xÝpy:°lÙ2YØ~ÆŒÂ7»oذ¡(ø‚r,]º”1hs‰…_+W®$(Ùþýû)<<œF-ò奦…‡£GÒ„ L? X,Ô%Æ5æÌ™#yµkÈÿYム|a€$gµz,m=¢d¸PóæÍedçÍ›—š5kFÅŠ“%˜!ºu늕ƒâ\¾|Y‹Î†ëBòà’–%44T:ÛRZµj%‹Â*a´‚ÐP¢:uêˆRC9ÁG§Nä<¬‡gŽP K¥…ˆˆk‰6`€`aµxqyŠ•4<ÄÒ.\˜*Uª$é»ví’ëÂ""Þƒò Ôe:t¨(?î;b è—~F{P'–}ïÚõaí5jDåÊ•“øHã!sæÌÒn´?Ô…Ó¦M"Ûëׯ ¿æ–xÅÀBþ7ÞxCb`g¬®ã1%ƒÒȸ#afõ„·1Ê n´uëÖb-:tè  %ÔÖ× __,îE[ÖYKÓÒ¡0–,”×ÑŠõúë¯iXàN`]@ÚhXd¤kdžŽÎG„ø¡]ÈEƒB€ |z~µºP/øÒV¶t}äÕó€ …Ð~àƒväÈ‘ 'ÙÉ’%^1ÑwÚ Ïön=¦dÉ1€ÑŽÍ·ß~+V yûõë' 1X•*U‹ÒcäÀE4÷*º¿¨¨(é|(-„ B<´F,ëw 7 ‹BçÁ]ÀB ¦ƒËÓ:.¬Aƒb©Ð1˜QA؈Ÿ! (AÛ¶m%ÎDè¥B=¨Wªíc hˈ|PÐÖ­[¾>ÊÁµÂÊwîÜYŽ~Pà¼F–x-S¦Œ \ÄoxÒƒI…3”âJáê²ËDÇW«VMŽaݺtéBï¿ÿ¾¼pyp)³fÍ’àq–FZâ&t",\'JôÖ[o‰â"¾B~ÄL˜€0K‚2a„4H, ¬\<,êC™N좠ü8†«³¤d/Rñ“?¤á‡A‚-{´ 1vXšU«V‰+¾yó&Õ«WJ–,I«W¯6¹|T…Paùòåb᡼%²Äƒ–»ví*rEœר'k¼b€vìØÑ›$w-}ú}‡!Öaî¸j®A_™#û˜Ñ¡ÁÝ»w7ƒÿOHH ý"öpQpw˜Ía&ª¿}®_¿^êÑÜê¼yó¤(:Ô^>ÑÙ°~Ú,Sc ü Ž,P €SF=Pzð¢¹>­n(®>”€µ@GÂúé .2 vîf3¬1¼‡6ñ?–ȯ°èèsþ-•džǀŽhä×Zi'·˜#¨Ç¬MOæŒs8nBÉ,F–¦`úóöÄžüè L<\!L:,‘^Áp–Ã9zóÓ¼ 4m°i[ó<Ú±%^-ÅŒZ~{¶©bÉ`Á æ#69†¯`¤ë ëc®LȲÖaÉ]Ã8纼ƒáÞ£W¡W0”7W0¤Ê)x¥xàï]Í7¸I ð Í!2ÞŒ5Þ fÅLöÍhó7cŽÉRDó‹ø• wéWÝé1”Ì;ûů¸2”̯ºÓ;ó]ÏTM¹¾þIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Time-members.html000644 000765 000024 00000025657 14042362132 025140 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::Time Member List

This is the complete list of members for mysqlpp::Time, including all inherited members.

compare(const Time &other) constmysqlpp::Timevirtual
convert(const char *)mysqlpp::Time
hour() constmysqlpp::Timeinline
hour(unsigned char h)mysqlpp::Timeinline
minute() constmysqlpp::Timeinline
minute(unsigned char m)mysqlpp::Timeinline
operator std::string() constmysqlpp::Time
operator time_t() constmysqlpp::Time
operator!=(const Time &other) constmysqlpp::Comparable< Time >inline
operator<(const Time &other) constmysqlpp::Comparable< Time >inline
operator<=(const Time &other) constmysqlpp::Comparable< Time >inline
operator==(const Time &other) constmysqlpp::Comparable< Time >inline
operator>(const Time &other) constmysqlpp::Comparable< Time >inline
operator>=(const Time &other) constmysqlpp::Comparable< Time >inline
second() constmysqlpp::Timeinline
second(unsigned char s)mysqlpp::Timeinline
str() constmysqlpp::Timeinline
Time()mysqlpp::Timeinline
Time(unsigned char h, unsigned char m, unsigned char s)mysqlpp::Timeinline
Time(const Time &other)mysqlpp::Timeinline
Time(const DateTime &other)mysqlpp::Timeinline
Time(const char *str)mysqlpp::Timeinlineexplicit
Time(const Str &str)mysqlpp::Timeinlineexplicit
Time(time_t t)mysqlpp::Timeexplicit
~Comparable()mysqlpp::Comparable< Time >inlineprotectedvirtual
mysql++-3.3.0/doc/html/refman/scopedconnection_8h_source.html000644 000765 000024 00000042643 14042362132 025004 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: scopedconnection.h Source File
MySQL++  3.3.0
scopedconnection.h
Go to the documentation of this file.
1 
9 /***********************************************************************
10  Copyright © 2010 by Joel Fielder. Others may also hold copyrights
11  on code in this file. See the CREDITS.txt file in the top directory
12  of the distribution for details.
13 
14  This file is part of MySQL++.
15 
16  MySQL++ is free software; you can redistribute it and/or modify it
17  under the terms of the GNU Lesser General Public License as published
18  by the Free Software Foundation; either version 2.1 of the License, or
19  (at your option) any later version.
20 
21  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
22  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
23  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
24  License for more details.
25 
26  You should have received a copy of the GNU Lesser General Public
27  License along with MySQL++; if not, write to the Free Software
28  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
29  USA
30 ***********************************************************************/
31 
32 #if !defined(MYSQLPP_SCOPEDCONNECTION_H)
33 #define MYSQLPP_SCOPEDCONNECTION_H
34 
35 #include "common.h"
36 
37 namespace mysqlpp {
38 
39 #if !defined(DOXYGEN_IGNORE)
40 // Make Doxygen ignore this
41 class MYSQLPP_EXPORT Connection;
42 class MYSQLPP_EXPORT ConnectionPool;
43 #endif
44 
48 class MYSQLPP_EXPORT ScopedConnection
49 {
50 public:
60  explicit ScopedConnection(ConnectionPool& pool, bool safe = false);
61 
62 #if __cplusplus >= 201103L
63  // ScopedConnection objects cannot be copied. We want them to be
64  // tightly scoped to their use point, not put in containers or
65  // passed around promiscuously.
67  ScopedConnection(const ScopedConnection& no_copies) = delete;
68  const ScopedConnection& operator=(const ScopedConnection& no_copies) = delete;
69 #endif
70 
75 
77  Connection* operator->() const { return connection_; }
78 
80  Connection& operator*() const { return *connection_; }
81 
83  operator void*() const { return connection_; }
84 
85 private:
86 #if __cplusplus < 201103L
87  // Pre C++11 alternative to no-copies ctors above.
88  ScopedConnection(const ScopedConnection& no_copies);
89  const ScopedConnection& operator=(const ScopedConnection& no_copies);
90 #endif
91 
92  ConnectionPool& pool_;
93  Connection* const connection_;
94 };
95 
96 } // end namespace mysqlpp
97 
98 #endif // !defined(MYSQLPP_SCOPEDCONNECTION_H)
99 
Manages a pool of connections for programs that need more than one Connection object at a time,...
Definition: cpool.h:69
Manages the connection to the database server.
Definition: connection.h:60
Grabs a Connection from a ConnectionPool on construction and releases it back to the pool on destruct...
Definition: scopedconnection.h:49
Connection & operator*() const
Dereference.
Definition: scopedconnection.h:80
Connection * operator->() const
Access the Connection pointer.
Definition: scopedconnection.h:77
This file includes top-level definitions for use both internal to the library, and outside it....
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1DBSelectionFailed.html000644 000765 000024 00000041570 14042362132 026042 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::DBSelectionFailed Class Reference
MySQL++  3.3.0
mysqlpp::DBSelectionFailed Class Reference

Exception thrown when the program tries to select a new database and the database server refuses for some reason. More...

#include <exceptions.h>

Inheritance diagram for mysqlpp::DBSelectionFailed:
Collaboration diagram for mysqlpp::DBSelectionFailed:

Public Member Functions

 DBSelectionFailed (const char *w="", int e=0)
 Create exception object. More...
 
int errnum () const
 Return the error number corresponding to the error message returned by what(), if any. More...
 
- Public Member Functions inherited from mysqlpp::Exception
 Exception (const Exception &e) MAY_THROW()
 Create exception object as copy of another.
 
Exceptionoperator= (const Exception &rhs) throw ()
 Assign another exception object's contents to this one.
 
 ~Exception () throw ()
 Destroy exception object.
 
virtual const char * what () const throw ()
 Returns explanation of why exception was thrown.
 

Additional Inherited Members

- Protected Member Functions inherited from mysqlpp::Exception
 Exception (const char *w="") throw ()
 Create exception object.
 
 Exception (const std::string &w) throw ()
 Create exception object.
 
- Protected Attributes inherited from mysqlpp::Exception
std::string what_
 explanation of why exception was thrown
 

Detailed Description

Exception thrown when the program tries to select a new database and the database server refuses for some reason.

Constructor & Destructor Documentation

◆ DBSelectionFailed()

mysqlpp::DBSelectionFailed::DBSelectionFailed ( const char *  w = "",
int  e = 0 
)
inlineexplicit

Create exception object.

Parameters
wexplanation for why the exception was thrown
ethe error number from the underlying database API

Member Function Documentation

◆ errnum()

int mysqlpp::DBSelectionFailed::errnum ( ) const
inline

Return the error number corresponding to the error message returned by what(), if any.

If the error number is 0, it means that the error message doesn't come from the underlying database API, but rather from MySQL++ itself. This happens when an error condition is detected up at this higher level instead of letting the underlying database API do it.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/inherit_graph_38.png000644 000765 000024 00000003077 14042362133 022444 0ustar00tangentstaff000000 000000 ‰PNG  IHDR]pƒ²sRGB®ÎéùIDAThíZiH”]~4³HƒVSCÈJ[!±4)Z¨ …ÈûET´šF¦ý±Â¤,ŠŠˆL¤•¥Ô²¨h¥‚ŠK´Â0—LÓlÑíýÞç|ßû:3NŸÍŒf?Þ3s<÷Üsï}Îvç•`ПD ÚùO®f¬õ/è è:XÓ5ºyó&ë»ñjg ™n6büÑa w´¿6l€þkl:lä¯ýÙ³g¨¬¬l·ýúÙÙÙ8uêjjjÚ´{íÚ5|ÿþ½M=Gþ:ÐwíÚ…ëׯ;r&}îÓ§OˆGüäÉ“qåÊ Bss³®«1¹¹¹ £:’lýôéÓX°`¸éÑ£GãÀ9r$†Š»wïbóæÍسgì¹±±cÆŒÁû÷ï±aà 8Pþ~ò䉌ïÛ·>>>˜1cfÏžüü|ý¬éééX¼x±èûúúâüùó26nÜ8¬Zµ  @dd$D>sæL¼|ùÒŒÏÉÉ‘}%%%!%%YYY¨¯¯GTT>|ˆ¹sçâÌ™3X¾|9‚ƒƒqãÆ 0Ó~üøØØXÄÄÄ`ðàÁ1b?~,¶÷ïßAƒÉ~¹~qq±Èmy³ôºº:œ;w{÷îÅ„ ‡´´4DDDàСC;v,Nž<){`ªººº¢°°/^ÄóçÏHnœv¶nÝ*ºk×®ÅåË—u9ùíÛ·¸té222Àèß´i“ØdÄöîÝt\uuµØå@HHÜÜÜDGãW¬X!@¤èèh¼~ýóçÏÇŽ;àììŒãÇãÇ8vì–-[:´  @@///Çýû÷qõêU9Sjjªè&''#33aaaâ0Íé²ðo¾Ù :í2M'Nœˆ©S§bÒ¤I:_QQFÜ«W¯ÀM3: Ì‚²²2ÄÇÇcøðá8|ø°”Ú˜2eŠÀÏϯՖÃÃÃ1lØ0±ñùóg”––ŠÎºuëàíí¥K—ê Ó^^^2®ñžžž²f8oÞ÷`Ù:SŽÄhéӧٺݺu“´%à¬`ܹsGÉÔæax–8Ï’zõꥋØÜÙ$MNÙÇuK†Íè^²d‰Dç… pðàAK5xxx´’Qàîî.rù²øâÅ tïÞ]×µ<»>ÐcèmØ ·oß.uwÈ!8{ö,Ž=Š;wÊáÙ(gÍš%Žhjj’¶Voݺ…Ÿ?Jýeé`S$±ö² ÄQ£F‰ŒNýòå‹ߥK)aÚmˆb hÄÚm 1ë¸ö§OŸ¤ Ù2]×uѹv`˜²$Z[[ ÖjÒôéÓ±qãF¹9dö–™€€iÂß¾}Ó£Šúš–$¹ê±éRN'°)³Ü°¶9r„SÀ´¿}û¶4^_´h‘”1Ú`VÑQ¬Í$öê-\¸P_O~ñƵCCCå ŸYÀ@`ØL¦Ob¶lÙ¢¨Ï^LEvñjsQÔÛ…RUU¥ÏW¬¨MJQ¯cºŒŒZ2D6~üxåÞ½{ú˜Z{•„„E½[+jdérõŠZVµ¾ë²¶µi·ÒW£ÜÌn[68^RR¢œ8qBÖW{„Ò¯_?E½¡ýïTõÙ‹¢ÞðLuÌxÙì1+òòò$Šx0­•Lk–ËÚ­n¼•ÌÔlß¾}Ͳ€c´eÚLõ­ñì–úŒP­f[›cMÆ+ïîÝ»1mÚ4¹°‘›Öxks¬ÉìÈ kfZd¼³³÷ïß¿Eø¯‡¦ ¬_¿Þê,ÖgÖêΠ®]»ÊU•ßXÚöP»ƒÎ{¹­€sãÚD;D=4Öì“™ÑÙÄ+°#ÔÒʱb̵ Ó oürÔ1¿šYþräDÐms“¡í Æ¿`8 ]ÓšnlŽM2@w ?»fÿ°ÆC(s>ãIEND®B`‚mysql++-3.3.0/doc/html/refman/stadapter_8h_source.html000644 000765 000024 00000116076 14042362132 023440 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: stadapter.h Source File
MySQL++  3.3.0
stadapter.h
Go to the documentation of this file.
1 
4 /***********************************************************************
5  Copyright © 1998 by Kevin Atkinson, © 1999-2001 by MySQL AB, and
6  © 2004-2009, 2018 by Educational Technology Resources, Inc. Others may
7  also hold copyrights on code in this file. See the CREDITS.txt file
8  in the top directory of the distribution for details.
9 
10  This file is part of MySQL++.
11 
12  MySQL++ is free software; you can redistribute it and/or modify it
13  under the terms of the GNU Lesser General Public License as published
14  by the Free Software Foundation; either version 2.1 of the License, or
15  (at your option) any later version.
16 
17  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
18  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
20  License for more details.
21 
22  You should have received a copy of the GNU Lesser General Public
23  License along with MySQL++; if not, write to the Free Software
24  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
25  USA
26 ***********************************************************************/
27 
28 #if !defined(MYSQLPP_SQL_TYPE_ADAPTER_H)
29 #define MYSQLPP_SQL_TYPE_ADAPTER_H
30 
31 #include "common.h"
32 
33 #include "datetime.h"
34 #include "null.h"
35 #include "sql_buffer.h"
36 #include "tiny_int.h"
37 
38 #include <stdexcept>
39 #include <string>
40 
41 namespace mysqlpp {
42 
43 #if !defined(DOXYGEN_IGNORE)
44 class MYSQLPP_EXPORT String;
45 #endif
46 
72 
73 class MYSQLPP_EXPORT SQLTypeAdapter
74 {
75 public:
76  typedef size_t size_type;
77 
80 
88  SQLTypeAdapter(const SQLTypeAdapter& other);
89 
96  SQLTypeAdapter(const String& str, bool processed = false);
97 
99  SQLTypeAdapter(const std::string& str, bool processed = false);
100 
102  SQLTypeAdapter(const char* str, bool processed = false);
103 
105  SQLTypeAdapter(const char* str, int len, bool processed = false);
106 
113  SQLTypeAdapter(char c);
114 
117 
121 
123  SQLTypeAdapter(short i);
124 
127  SQLTypeAdapter(unsigned short i);
128 
130  SQLTypeAdapter(int i);
131 
134  SQLTypeAdapter(unsigned i);
135 
137  SQLTypeAdapter(long i);
138 
141  SQLTypeAdapter(unsigned long i);
142 
144  SQLTypeAdapter(longlong i);
145 
148  SQLTypeAdapter(ulonglong i);
149 
151  SQLTypeAdapter(float i);
152 
154  SQLTypeAdapter(double i);
155 
157  SQLTypeAdapter(const Date& d);
158 
160  SQLTypeAdapter(const DateTime& dt);
161 
163  SQLTypeAdapter(const Time& t);
164 
166  SQLTypeAdapter(const null_type& i);
167 
171  SQLTypeAdapter& operator =(const SQLTypeAdapter& rhs);
172 
176  SQLTypeAdapter& operator =(const null_type& n);
177 
179  operator const char*() const { return data(); }
180 
192  SQLTypeAdapter& assign(const SQLTypeAdapter& sta);
193 
205  SQLTypeAdapter& assign(const char* pc, int len = -1);
206 
212  SQLTypeAdapter& assign(const null_type& n);
213 
225 #if !defined(DOXYGEN_IGNORE) && __cplusplus >= 201103L
226  // Can't use MAY_THROW() here: it confuses Doxygen 1.8.14.
227  char at(size_type i) const noexcept(false);
228 #else
229  char at(size_type i) const throw(std::out_of_range);
230 #endif
231 
235  int compare(const SQLTypeAdapter& other) const;
236 
240  int compare(const std::string& other) const;
241 
246  int compare(size_type pos, size_type num, std::string& other) const;
247 
251  int compare(const char* other) const;
252 
257  int compare(size_type pos, size_type num, const char* other) const;
258 
260  const char* data() const;
261 
264  bool escape_q() const;
265 
272  bool is_null() const { return buffer_->is_null(); }
273 
278  bool is_processed() const { return is_processed_; }
279 
281  size_type length() const;
282  size_type size() const { return length(); }
283 
286  bool quote_q() const;
287 
293  int type_id() const;
294 
299  void set_processed() { is_processed_ = true; }
300 
301 #if !defined(DOXYGEN_IGNORE)
302  // Parallel interface for Null<>-wrapped versions of types we
303  // support above. No need for parallel documentation.
304  SQLTypeAdapter(const Null<std::string>& str, bool processed = false);
305  SQLTypeAdapter(const Null<String>& str, bool processed = false);
319  SQLTypeAdapter(const Null<Date>& d);
320  SQLTypeAdapter(const Null<DateTime>& dt);
321  SQLTypeAdapter(const Null<Time>& t);
322  SQLTypeAdapter& operator =(const Null<std::string>& str);
323 #endif // !defined(DOXYGEN_IGNORE)
324 
325 private:
327  RefCountedBuffer buffer_;
328 
339  bool is_processed_;
340 };
341 
342 } // end namespace mysqlpp
343 
344 #endif // !defined(MYSQLPP_SQL_TYPE_ADAPTER_H)
C++ form of SQL's DATETIME type.
Definition: datetime.h:49
C++ form of SQL's DATE type.
Definition: datetime.h:226
Class for holding data from a SQL column with the NULL attribute.
Definition: null.h:171
Converts many different data types to strings suitable for use in SQL queries.
Definition: stadapter.h:74
size_type size() const
alias for length()
Definition: stadapter.h:282
void set_processed()
Turns on the internal 'is_processed_' flag.
Definition: stadapter.h:299
bool is_null() const
Return true if buffer's contents represent a SQL null.
Definition: stadapter.h:272
bool is_processed() const
Returns true if the internal 'processed' flag is set.
Definition: stadapter.h:278
size_t size_type
size of length values
Definition: stadapter.h:76
A std::string work-alike that can convert itself from SQL text data formats to C++ data types.
Definition: mystring.h:140
C++ form of SQL's TIME type.
Definition: datetime.h:348
The type of the global mysqlpp::null object.
Definition: null.h:50
Class for holding an SQL TINYINT value.
Definition: tiny_int.h:56
This file includes top-level definitions for use both internal to the library, and outside it....
Declares classes to add SQL-compatible date and time types to C++'s type system.
Declares classes that implement SQL "null" semantics within C++'s type system.
Declares the SQLBuffer class.
Declares class for holding a SQL TINYINT.
mysql++-3.3.0/doc/html/refman/inherit_graph_10.png000644 000765 000024 00000010567 14042362133 022434 0ustar00tangentstaff000000 000000 ‰PNG  IHDR¿1‹Px®sRGB®Îé1IDATxí¬$EÇûŽÃÝw‚»wîN‚»»[pNàw îîîr¸»{ÿ_}Ô¤ßì̾ݷËãÞÞT²ofº{Zª«««þ]s×/ŠBE†= î?ì¹qÅÿs þJ†YTÂ?ÌN}5ðJø+f90 ?ò«®º*¬³Î:ùäê¹â@ŸåÀ#Œ~ûí·šþ׿—¸òÊ+ý¶ºVè³xðÁÃÙgŸ]ØÿRá_{íµ _¨+ô% ñË„¿²ùûÒLV}m+*áo+;«Êú*áïK³Uõµ­¨„¿­ì¬*ëKèóÂ?hР°Ã;ô%ž7Ü×FÇöî»ï†VX!|üñÇá7Þ°ûÏ>û¬n;þùgøúë¯ë–éôÌ>/ü¯¿þzxä‘G:ržÛwß}n»í¶ðóÏ?‡¿þú+üøãáï¿ÿ®Ë“›nº)Œ;î¸á?þ¨[®“3[~ $4L2dHxñÅ_0ÿ¥—^ O?ýtÆà÷ß¿FÛ|øá‡áÛo¿ÍxüÌ3Ï„G}4üôÓOY7L(BþÕW_Ù$¿÷Þ{]òyøþûï‚À„>üðæ½Ðï¿ÿ\¾öÚká±Ç ¤9ÜúË/¿dB“¦õÓ‡¢¶Ëú‡výä“O¼™€Æu~y"c½ÿþûMs{ZO¯ÓO?}à r‚ &Ȫ ý»îº+ëǯ¿þ>ÿüs˧/Ý-”¬¢N»!¤9%nâœ&Õ½—Yù%—\Ò®¼»è¢‹Æe–Y&{^pÁ£-.´ÐBq‰%–ÈêÓÄá†.žqÆñùçŸSN9em´Ñb¿~ýâd“M_}õU++Áˆc=vìß¿¿•Ÿgžy⨣ŽjyûᅵsÎ9í~à 7Œ3Í4Sgœq¢Nõ¬ý-¶ØÂò®¿þz{^l±Å²<Ê~ðÁ–/á°üûðY&He”QâðÃoå–]vÙ¨EkeëõO&YdüNo½õ–½ÿì³ÏZÒ~ûígýcŒ1,²R$–—ŽÍß/º>÷Üsöî›o¾}>¤ˆ¬žå–[ÎúLß Ï9çœxÏ=÷/™+øOÙN%æ Y( A-k~Wš¼ðÑG…“N:)pªÆŽ€V¿ôÒKM“¿òÊ+a£6 <ð@¦u®»îº ë®»n8üðÃÃä“Onš›÷&œpÂpÖYg™ßl³Í‚ÜvL×àÞvzÕ‚ §Ÿ~ºiñ .¸ ð»ñƳ"“N:©í4ÛEöÝw_ËÓ {íµWà ¥Ïo¿ývØrË-ÃÖ[o¾üòË@Z¬áˆ#ŽhºVù?à×ÑGN>ùäðÍ7߯öä“OøÒºúê«Ãí·ßÞyçëî»ï=ôÐ ȃØíh÷ÃÚŸ¶ ¿´T˜d’IÂJ+­dubž¹²ð2­\1¡f›m6÷vÛmŽ<òÈlÁ¶Rw'¼Û˜Ä¶q¤«¬²ŠiÌ<0<7ÒH#YíçŸ~Øi§ÌO˜yæ™m—“f»ÚŸT[»,P‰ŠX8ø B,&ÏM/òÙú©“ då•W&ÙìmÚǾÏ?S”†wÙ)n¹å«3…]ª^ÿØ_~ùeÛíüÃ;ÌêçJƒJÅîòÓ.ø‘v×Zk-C¾ð¡è ;ˈ#Žh‹™>€|± “”÷‚{ŠöÈIµª¤• yu€Ú3h‹Œ˜zR”#åðÒƒw>ûì³GAž–/ ÛÞñ‘ Ôí™k®¹¬h|‚¬,‘¶yËs´‡w©äC 1 ¢´üîО3Ï<3Jhì]ÞÍúᇺíŸ4nœa†ì=ù!vÚÃûsÏ=·=ƒºh‘Eù6FiíÚãc³†Jþ€”ѧ<Ú£…A·È“’‰ZdQ~”Õ¢ElÏäiÁ—ÔÜ÷“ë¡=5˜f³Âßöìºë®QÛqÍ«ÒxQø|dåI¶²Á¡,&!8™ð§å~„‡z^xá…(Ä)Ëvá'Éb”å5z#ílPb³ýŽnc’VØ”Pž((ËöµÓdÏ@ªÚ5Jé8³—’ ã'žx"ƒP=Kx—v=½“®õ„¿4ž_¡í„Iq÷ÝwLà½<±%ë, ŸlϘGÚ óò‰Ôƒ­[Fy§¸¬\>8wþùçÏ'Ûs½þaǧŽv¾¦RJ}ұ݅ϧEºÜÃK¶2šqÆ ³0ø «Ô«Â~/ó!€­o²É&=æ96ò|óÍWó>B„“[D僵ӡ,j‡´²þ••ï.}饗ü*j3ò[\»ÍMšÙóùvþg9xQPdÔùBÔBˆr`£¥¶6…ù%M›ù TŽm¿Ç{˜íÝ-GßL·îÌ•Fê¦ f•vÔxÜqÇE|lÿFHèRÔ9K”#_SS‰ºimÏÀ¡ÆáÇáÍ»y8ÆðÉ˰é“ Ègˆ:OÉWQóìŠuÅWtÉ¡"=/üesE:cU _$ÖÉÑ?*Qs‡ž1âÀÃ_³Dœý"òø¦¢¼fÒþsá®c‚do›Voý‡)²Ý-À.àG4k=þøã¦AÐpyºøâ‹­4~J˜Bü Íî@_hK§Ò†Þxy×vÀ©c5–™)¾pX0…aJ5#üŒ­¬³†ˆÉäÄÂR T&üLZ»ÙÀ9x‰¦¹qRxGTx†?–^~´>¦âšk®™•sè“Ç…¿»¹¦þeÁ0^x¿ ÝvÛ-ŒQgYð¡øç0¸Î% ªþôÓOÓ¬¦îÿsáGc"¸h+„`¡¡°Áâ±/!ÅÖD´!ŒvÒaU<å”S …¡‹,²HÔɨggW4ŽP c:¡p3}\ãPˆI"í¡¥tº…˜¢í©ÿC1ÍzÉ%—Øbuá÷†0¡š~ÞÃÌá"V±£g»×Én…y¸óÎ;G4#ýÓ¡”ù hHú¸ÔRKE…YDÊ2>jõ:üʧƒ>Ø“J¯¿âœ" ˆ«Ÿ[i ­¹Lø»›+ú¤Ã¾¨°ÈÙç œa@yᇴ‰v¶æù†nèÒOúEúAt/Šj5Öˆ:\¬k»¼Tð🠿«²nq`Å`6ÌÍ|óÍ7G!@–ópT7Ø`Ój0–Ÿî9ú²Ë.‹ŠÀ4­A;LªNsã…íòL=˜<üýii)š7uBÑPí~Ï¿Ï>ûÄ…^Ø&“¾lºé¦ÆUžë”õó ¥AÞ5×\ceùƒƒš~Ì9ÅEY:B×È9† ?BŸXð» 4þzsÅ;ÌÑÞ{ïÍ­uãç@yáWð¡¥ûAÏVÆŸÓ+ …³Þzë™,°?fV#TOø{êLƒÒ$PšË`µÈ^µ¢)Ço<Ëãß>î BZÌ¢A³Ì‚>¢!þFL²Eø0†HR v¸è¢‹ì-¤ýžbˆø¸ƒmU '¢H[%b~8ßÐŽ$øV!ÙDZÒ¢UÓÀ¹´=ú¦I¶¤”‡ùsB ×ð‹ÐeÎ:%b¬‘ݘí.Æ·Ë/¿<«¢Þ\y! ^'-& ñçôš?gɦe ÿ (P9ᄈ0gDá¶B½Û#s'ë#ÑHì L’V±ø„Ô‰8|muï΄Èa´Á{~þJìOþÚ’‰cÌBØüˆ!Šq@'œpBsgߤÁiÔÏ„·JÏéã‹òºˆ³!š¢ÍVçˆSâ &ðNÚ·)Á÷>¡4ø’Ã4¾ð¨\ϯ7W^¦Ñ3‚윴[×zž_á!ßS (í$aÛm·õìž_ó[G»q~lYœ& °çw^ƒä€&9À†½àøÞ_l[' ‡9=lÅ8¢|™”š^Î^`EÌ&L âuð7x‡p`PÚàË'Lìo-B³#Á¼ÅEóxxŽçFÌí:†Þ¤H“÷‹þ³ýóu›>ë4³Š±âdâßh׳þ06-C˜0±ù1ð°¥)LßµCff´³õó /4¬¼Ÿf_pä‹ÈÍò3¾cvÐ!5{º›+ÌžO<1kFQ»YófÀ&¦¡.´™ÆyQ ¾"PÍ|¥<¾"²™š¥Ycunê™=½‚óëË¡ ÅÀfc! O}˜x l9&ª<±Xøü?@ ŸmϼO=0“Î4(†Ã•´‹}éùLXЇc÷Ãhòé×Àk„Ÿ>“Äèä ˆ¯ˆx‡º¼]>éT8sV¼§sŽ>yÝ~…Ï'<-¢ÓN;Íüσ·éØ8/ñzº›+”L*üœg°¸!™a¦t¸í) >$ß X—¶Y¸2ç<¹éë¿&ü$NhYÐH+Y¶i·î¸»¯h4𻥰^¾í‰ aÅ´Ç.$Ààòï³PØØ)ôáMðçËóì»Z¼Œh—z™ÔÍJËÓw¢aÓ…åùöyÙô Lˆòiõd®òí"üeÁ‡iYæ¸hþÒ2Ü×þƽ"©„<É\±NòéþŒ)Ík…ñËŽY°†À¯Õ Æ¢ ¾`*#Ú«ô†Ó:Þeõ¤é23ìûc÷+Ò<¿§Ý²3/Cß{8çï]ùrK¡EYM§õd®ÊénêÍqYͦ·$ü8Y²Ãšm³Ï”—t&Ñmq8ùõªöµÏg¡CÕ >ìí~¶$ü½ÝÙÞnè‡F–L¿NûXÖ'ùeeY½žÞ+Pg¯ªj°â@¨„¿&UE:“•ðwæ¼V£j€¥6õŸÒ5À½ªÈPÏ)êhðëà§&L èÅ*­â@_àa4ü+EÔƒ‚¢Œ*­â@‡s`peówø WÃ+ç@%ü弩r:œ•ðwøWÃ+ç@%ü弩r:œÿ"(rÒ¡ÿIEND®B`‚mysql++-3.3.0/doc/html/refman/field__names_8h.html000644 000765 000024 00000010324 14042362132 022463 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: field_names.h File Reference
MySQL++  3.3.0
field_names.h File Reference

Declares a class to hold a list of field names. More...

#include <string>
#include <vector>

Go to the source code of this file.

Classes

class  mysqlpp::FieldNames
 Holds a list of SQL field names. More...
 

Detailed Description

Declares a class to hold a list of field names.

mysql++-3.3.0/doc/html/refman/autoflag_8h_source.html000644 000765 000024 00000027106 14042362132 023246 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: autoflag.h Source File
MySQL++  3.3.0
autoflag.h
Go to the documentation of this file.
1 
5 /***********************************************************************
6  Copyright © 2007 by Educational Technology Resources, Inc.
7  Others may also hold copyrights on code in this file. See the
8  CREDITS.txt file in the top directory of the distribution for details.
9 
10  This file is part of MySQL++.
11 
12  MySQL++ is free software; you can redistribute it and/or modify it
13  under the terms of the GNU Lesser General Public License as published
14  by the Free Software Foundation; either version 2.1 of the License, or
15  (at your option) any later version.
16 
17  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
18  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
20  License for more details.
21 
22  You should have received a copy of the GNU Lesser General Public
23  License along with MySQL++; if not, write to the Free Software
24  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
25  USA
26 ***********************************************************************/
27 
28 #if !defined(MYSQLPP_AUTOFLAG_H)
29 #define MYSQLPP_AUTOFLAG_H
30 
31 namespace mysqlpp {
32 
36 
37 template <class T = bool>
38 class AutoFlag
39 {
40 public:
42  AutoFlag(T& ref) :
43  referent_(ref)
44  {
45  referent_ = true;
46  }
47 
50  {
51  referent_ = false;
52  }
53 
54 private:
55  T& referent_;
56 };
57 
58 } // end namespace mysqlpp
59 
60 #endif // !defined(MYSQLPP_AUTOFLAG_H)
61 
A template for setting a flag on a variable as long as the object that set it is in scope....
Definition: autoflag.h:39
AutoFlag(T &ref)
Constructor: sets ref to true.
Definition: autoflag.h:42
~AutoFlag()
Destructor: sets referent passed to ctor to false.
Definition: autoflag.h:49
mysql++-3.3.0/doc/html/refman/functions_func_d.html000644 000765 000024 00000013027 14042362132 023010 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
MySQL++  3.3.0
mysql++-3.3.0/doc/html/refman/comparable_8h_source.html000644 000765 000024 00000046054 14042362132 023554 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: comparable.h Source File
MySQL++  3.3.0
comparable.h
Go to the documentation of this file.
1 
4 /***********************************************************************
5  Copyright (c) 1998 by Kevin Atkinson, (c) 1999-2001 by MySQL AB, and
6  (c) 2004-2008 by Educational Technology Resources, Inc. Others may
7  also hold copyrights on code in this file. See the CREDITS.txt file
8  in the top directory of the distribution for details.
9 
10  This file is part of MySQL++.
11 
12  MySQL++ is free software; you can redistribute it and/or modify it
13  under the terms of the GNU Lesser General Public License as published
14  by the Free Software Foundation; either version 2.1 of the License, or
15  (at your option) any later version.
16 
17  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
18  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
20  License for more details.
21 
22  You should have received a copy of the GNU Lesser General Public
23  License along with MySQL++; if not, write to the Free Software
24  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
25  USA
26 ***********************************************************************/
27 
28 #if !defined(MYSQLPP_COMPARABLE_H)
29 #define MYSQLPP_COMPARABLE_H
30 
31 namespace mysqlpp {
32 
39 template <class T>
41 {
42 public:
44  bool operator ==(const T& other) const
45  {
46  return !compare(other);
47  }
48 
50  bool operator !=(const T& other) const
51  {
52  return compare(other);
53  }
54 
56  bool operator <(const T& other) const
57  {
58  return compare(other) < 0;
59  }
60 
62  bool operator <=(const T& other) const
63  {
64  return compare(other) <= 0;
65  }
66 
68  bool operator >(const T& other) const
69  {
70  return compare(other) > 0;
71  }
72 
74  bool operator >=(const T& other) const
75  {
76  return compare(other) >= 0;
77  }
78 
79 protected:
87  virtual ~Comparable() { }
88 
93  virtual int compare(const T& other) const = 0;
94 };
95 
96 }
97 
98 #endif // !defined(MYSQLPP_COMPARABLE_H)
Mix-in that gives its subclass a full set of comparison operators.
Definition: comparable.h:41
virtual ~Comparable()
Destroy object.
Definition: comparable.h:87
bool operator==(const T &other) const
Returns true if "other" is equal to this object.
Definition: comparable.h:44
virtual int compare(const T &other) const =0
Compare this object to another of the same type.
bool operator>(const T &other) const
Returns true if "other" is greater than this object.
Definition: comparable.h:68
bool operator<=(const T &other) const
Returns true if "other" is less than or equal to this object.
Definition: comparable.h:62
bool operator!=(const T &other) const
Returns true if "other" is not equal to this object.
Definition: comparable.h:50
bool operator<(const T &other) const
Returns true if "other" is less than this object.
Definition: comparable.h:56
bool operator>=(const T &other) const
Returns true if "other" is greater than or equal to this object.
Definition: comparable.h:74
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Query__coll__graph.png000644 000765 000024 00000041127 14042362133 026216 0ustar00tangentstaff000000 000000 ‰PNG  IHDRËdžQ»bKGDÿÿÿ ½§“ IDATxœíÝy\TÕÿ?ð× 0"û®`, ¸gî ¢¹/hšŠæžkZæ’Z¦–V_Í…R3³Í( YTÈ%MS3TÌ­E•]…AvfyÿþðÇ|`†E†ðý|û IIIU¶mhhˆ­[·Öÿ‡póæM|ûí·˜:u*ºuë¦qÝçmŸ|dƒ1Æ´ª}ûö8{ö¬Úò¨¨(DGG7`Dªª‹¯>}òÉ'xûí·ÑªU+Ìœ9‰>>>øòË/•ë$$$ W¯^ˆˆˆ@Ÿ>}0mÚ4`ذaX¿~½r½;vàîÝ»•ÚP(ËåËå8wår¹Ö>ÛöíÛ±cÇ|öÙgÕ®[û¼!÷[}à#Œ1V 233áè訲<;;¥¥¥•Ö/,,D³fÍê=‰Dsss…ªÿK* ¤§§ÃÙÙ¹ÚøˆÉÉɰ··‡X,®ÔFqq1ÀÄĤV±mß¾›6mÂ믿˜6mÌÍͱcÇ,\¸P¹¬]»v8xð Ÿ~EÍž=C‡E@@ˆ>}ú¨mcùòåÊß—.]Š7n`çÎ5ޱ´´ÅÅÅ077¯T¦nÛ!44ï¼óvíÚ…üü|4oÞ¼Òû5íóÇÃÚÚ F1©ëWêbê¾ßêÙ`Œ±g´aø¹¹ÁËË -[¶DTTàÅ_DFFÆŒƒ~ø '''XZZ¢wïÞHIIQÖ³eË 8°Ê×C† Á[o½¥,“ËåpqqAxx8àúõëèСZ´h¬]»Dˆˆˆ€Ú¶m lÛ¶Mm|ÇŽƒƒƒzöì KKK¼ýöÛËåHOO‡‰‰ öîÝ‹–-[âܹs•¶ƒD"Á®]»0gΜJeD„ââbܹsGeùâÅ‹ñÝwß®^½ŠèèhlÚ´I™h”™8q"z÷îo¿ýVóÎÐ`„ ˜;w®òµL&ƒ““V®\‰6mÚàwÞ³³3¬­­1iÒ$мmàСC°±±ÁG}###\å¶úàƒuéÒ…V¬XA‘‘‘TXX¨,ß»w/™˜˜B¡¨òý‹/Vn[CCCŠˆˆÐ¸o–,YB~~~Êס¡¡dmmM¥¥¥DDtòäI277§Ó§OZ´h•””(?÷† 4nÛ2¤uëÖѬY³hàÀʲêöùK/½D …BAiiidffF×®]£¨¨(µ1UÜošbԴ߈ˆÂÃÃiÀ€djjJ3fÌ ?ÿüSã6Õ$##ƒÎž=[UQ('Œ1VAm’;wî‘‘mÙ²…ÒÓÓI¡PPqq±²¼ü—ÂÑ£GÉÉÉIåý:uR~ñh’››Kb±˜þøã""š3g-X°€ˆˆöíÛG666”““Cùùù”ŸŸO«W¯¦¡C‡ÒÖ­[ÉÓÓS¥®ƒRrrr¥ø¶nÝJ®®®*ë®^½šú÷ï¯üÒ:þ<=|ø>ýôSòôô$Ú°a%%%Uû9âããiýúõÔ¿222"+++Ú½{7}þùç•¶Oy+V¬ =zQÝ’¢¢"277W~Þ¹sçÒ¬Y³”_ìYYYÊu·lÙB=zôиm‰ˆ’’’H(Ò;wˆèi# )55•ˆ4ïs¹\Nqqq¤P(”_Ô¶¶¶´ÿ~1©î7M1VÜoêÜ¿Ÿ>üðCruu%oooÚºu+effj|OEš’ ž³ÁcÏ uëÖ B`` V®\‰öíÛcÆ ;vl¥uO:___•e={ö¬Q;æææ;v,ÂÃÃÑ»wo:t¿þú+àÞ½{ÈÏÏGÇŽUÞÓ¡C$&&¢mÛ¶*ËÕ]‘˜˜X)WWW•Óem :)))øæ›o0vìØ*ç”WRR‚üü|xzzbݺuX·n²³³ñÁ`Ñ¢E3f ÜÝÝ‘‘‘âââ*çÄÇÇÃÃÃCc;š˜˜˜`üøñÇÀqøða„„„,,,`kk«\×ÙÙ=Ò¸màÇ¡wïÞžÎQ(øù矱bÅ û\("22»ví‚P(DçÎa`` \O]LU#€Je¹ººâƒ>Àºuë†yóæ!44—/_Öø¾šâ9Œ1ö }ú௿þBFF°`ÁåùþòÌÌÌ«²ìÆ5nkúôé8tèNž< GGGôèÑ`ookkk$''#%%)))¸ví¾üòKØÚÚ"!!A¥ž]»v!55µRý¶¶¶ˆ‹‹SYö÷ߣU«V•Öݹs'† ‚™3gb„ 8vì˜Æ«=.^¼'''äåå)—Y[[cÍš5P(HMMEÏž=abb‚   å:™™™X³f bbbpüøqÌŸ?¿fK©S§"""§OŸ†X,Fÿþýyyy*û,::îîî·-üðÃøè£pùòe\¾|W®\Á¢E‹ðÓO?мϯ_¿Žµk×âÈ‘#¸ÿ>"""`jjª\O]LUcMÈd2üòË/7nfÏžáÇ×ëeœl0ÆØ3¸víFììlØÙÙaĈP(Êr‘H„'OžüýýqëÖ-„‡‡ƒˆpîÜ9\¿~]¹ntt4‚ƒƒÕ¾4h V­Z…™3g*—2999Ø¿¿òJ’#FàÀ3f bcc 8|ø0¶mÛ¦¼j¦||#GŽÄÿý‡#GŽxzÅñcÇ0iÒ¤JŸ»oß¾Æýû÷ѧO¬Zµ ...XµjU¥„ºuë[[[¬Zµ R©ÀÓI®»ví‚™™:tè{{{,Y²+W®Ä¾}ûPRRCCCœ={Ý»wǰaÃàç秬óÁƒ¸{÷®ÊOYÝêøùùÁÄÄË—/Ç”)S”Wm( ìÙ³pûömüòË/:t¨ÆmûçŸ")) óæÍƒ»»»òçõ×_Çÿý‡þùGã>OJJ‚••¼¼¼”ûæÞ½{Êɧêbª¸ß4ÅX[·n)'¡¾ÿþûèß¿?’’’Œ¾}ûVûþ«Õ Æ{ÔfΆL&#___222¢nݺ‘‡‡}ýõ×Êò¥K—’X,¦}ûöÑÆI(’““¹»»Ó”)S”s6V¯^MmÛ¶U¾·âk¢§ó èÁƒ*Ë÷ïßO¦¦¦äââB"‘ˆfΜI%%%DD´cljDäàà@ÞÞÞ*s*Æ·eË244$277§ùóç“T*UžûÏÉÉQ»-.^¼H¯¿þ:õïß¿ÊòK—.‘··7S›6mÈÊÊŠüüüT&%* Úºu+‰Åb200 GGG‰DäëëKŽŽŽtîÜ9"z:g@¥Ÿ¸¸8e]çl”Y¹r% øøx""ŠŠŠ"SSS>|8µjÕŠÄb1½öÚk$“É4nÛ×_FŽYågmݺ5-_¾œˆÔïs©TJ~~~dggG®®®4yòdš7o999QHHˆÆ˜*î7u1V·ß|}}iΜ9­v¿Ö”¦9¢r×ï0ÆùsçЮ]»?bžˆââbtîܹÒü‰D‚æÍ›+/çÌÊÊÂÇÑ®];•sôϪ  ±±±ptt¬t?¢¢"dddÀÕÕµÒû*Æ'‘Hpçθ»»ÃÆÆ¦ÖqÈd²J—®–‘Ëå¸wï=z„_|±Êûx”­‰DOOOØÚÚâèÑ£(--}æ;o~ñÅ8tèΜ9¸páFŽ ‰D‚””4oÞVVV*ïÑ´mkBÓ>OLL„¥¥%,--ééé¸wïF¥1¦Šû­.1jÚWµUöˆù²SSå„q²ÁcÔ6Ù`ƒD"All,f̘mÛ¶Áß߀j²¡/ô1¦êhJ6xÎcŒ±çBrr2/^Œ7ß|S™hO'qvïÞ]‡‘U¦1= >²Ácð‘ Æjl0ÆcLg8Ù`Œ1ƘVq²ÁcŒ1­âdƒ1ÆX£‘—WŒ¼¼b]‡Áj‰ŸÂcU(»;#Ó/‘‘ÿB `ôhÍÏú` OÓ˜ádƒ1ƪPÕ³C˜î……ýhݺþn†Æ´“ Æ« ŠK÷˜xü8±±¿Ú·ï ;;3GÄjŠçl0Æk~ùåo=ú®ÃaµÀÉcŒ±F!,ì ˆ !,슮ÃaµÀÉcŒ1½—ššƒþIBA RàŸRœüX×a±âdƒ1ƘÞ;|ø Êž¦+€¡¡ðÿŸVa'Œ1Æô^XØÈå åk™LÐP>•ÒXp²ÁcL¯Ý¹“„„L”l(!!!qqt«1N6cŒéµƒ¯B$ª|_ ‘È‘‘7t«-N6cŒéµƒ¯A*•WZ.•Ê•W¨0ýÆÉcŒ1½uíZ"ÒÒrÔ–§§KpýzrFÄê‚“ ÆczëðáëUžB)# "âzFÄê‚“ ÆczI.WàСªO¡”‘Jå8xð d2…Úu˜îq²ÁcL/]¸pI!D"!ŒŒ «ü‰„HŠpñâ]‡Ë4à±1ÆÓK"‘!Þ”ʲ3gb/¿Ü¶ÒºL ˆ§ñ2Æk$æÏìÙ3CÇ‘°ZãÓ(Œ1ÆÓ*N6cŒ1¦Uœl0ÆcL«8Ù`Œ1ƘVq²ÁcŒ1­âdƒ1ÆcZÅÉcŒ1Æ´Š“ ÆcŒi'Œ1ÆÓ*N6cŒ1¦Uœl0ÆcL«8Ù`Œ1ƘVq²ÁcŒ1­âdƒ1ÆcZÅÉcŒ1Æ´Š“ ÆcŒi'Œ1ÆÓ*N6cŒ1¦Uœl0ÆcL«8Ù`Œ1ƘVq²ÁcŒ1­âdƒ1ÆcZÅÉcŒ1Æ´Š“ ÆcŒi'Œ1ÆÓ*N6cŒ1¦Uœl0ÆcL«8Ù`Œ1ƘVq²ÁcŒ1­âdƒ1ÆcZÅÉcŒ1Æ´Š“ ÆcŒi'Œ1ÆÓ*N6cŒ1¦U"¢ò žVRR‚k×®A¡Ph%ÞŠÛå‡~ÀÕ«WQPPPé§ÂmtLCnV7 5¾>ùä¼ýöÛhÕªfΜ ‰D|ùå—ÊuÊÆ`DDúôé£v îØ±wïÞ­²šÖÑ~øáüûï¿044„¡¡!1pà@Ì›7¯AãÐ+TAFF={¶ââjÉårzðàA¥åŽŽŽtâĉJË ˆˆháÂ…´bÅŠ·£P((11‘ Ÿ9†¢¢"***R¾ÎÉÉ!¹\^e»="…BQe™T*U‰§¸¸˜òóó«ý,ݼy“nÞ¼Yë÷Õ ©õûêã3ªÛ?DO÷«D"QY–ššJ(''GeyII åææVY¦2uzõêE¤ââb•å!!!€þüóÏjÛP×ÇÊhê·DD2™¬Òç,S±ïUÜ.´gÏõ°är9¥¤¤¨-×46r{hêC5Q×þ¯íú›òø²³³£ï¾ûNeÙúõëÉËËKùºW¯^4zôh’J¥*ëUƒ†††Qe;5­£&4õ÷ŠßUñðð Ï?ÿ\eÙž={¨Y³f•¶Ÿ¦ï–ŠmÕ´Ÿ<ë8)Ûfõ(´^’õë×S«V­ÈÜÜœZ´h¡Ü©;w&@@ÆÆÆ´wï^""Šˆˆ GGG‰DÔ«W/ò÷÷W&›7o¦—_~YYoÅ×G%;;;rpp ###Z¼x1Éd²ZÅ––FÆÆÆôý÷ß“µµ5ýúë¯tíÚ5jß¾=‰Åb²´´¤5kÖ(wþ‰'ÈËË‹lllÈÎÎŽ–.]JDD dllL›7o&[[[‹Å´jÕ*Z½z5‰Åb200 7ß|³VÛQß’Ú|ÆñãÇÓœ9s”ï•J¥äèèHáááD¤~ÿEFF’ ™˜˜¯¯/лᆱòÇ0::šZ·nMË—/';;;200 €€*,,ÔXF¤¹_]¹r…Ð7ªÜ½{÷¦3fhl£b»wïYXXP^^©ï· dffF;wî$+++ …Ô§Oå#u}¯¶ÉÆæÍ›ÉÁÁ>|HDD{÷î¥-Z(ÿ>|˜¬­­©yóæäììL[·nU¾WÝØÐÅöÐÔ‡jJŸ’ça|) 233£wß}Wå³çääPTTýo Þºu«ÊíT6‰Ô'5­ãÖ­[dll¬òÅÈ‘#iûöíD¤¾¿WüÞhÞ¼¹ÆýQU²ñßÿŠ‹‹#"õã»b[_|ñE­¾kêcœèe²‘@VVV$‘H¨´´”6mÚD>>>Êòòÿá’X,¦7’D"¡    L6Nœ8¡ò‡®üëÔÔT‹ÅtäÈ"zºCÜÜÜhûöíµŠ¡l€ùúúÒ‰'(++‹œœœhݺuTPP@IIIäææ¦üãýÒK/Ñ”ÎÌÌŒ®]»F €¦M›FYYYÊÏâïïOôÛo¿ÊÊʪñ¶ÔÇd£¦Ÿ144”¬­­©´´”ˆˆNžyÛ²e õèÑCcYu>ÿüóJ}²¼¹sçR¯^½ªmCÝ—«¦~[¶^bb¢²lìØ±ôþûïkì{U%>>>4kÖ,•Ÿ/¾øBYo||<5kÖŒ¼¼¼( @¹|ëÖ­äéé©ßÁƒ)99YãØhèíQݯ)}L6šòø*Oëׯ§þýû“‘‘YYYÑîÝ»‰¨ú1¸bÅ e[ê’šÖ¡)ÙÐÔß+~ohÚDOǤ‘‘™šš’©©)YYYQß¾}éÚµkDD5ßemÕ¦ŸÔ×8ÑF²ñÌD[·n   „††¢eË–èÔ©Ž?^座N‚¯¯¯Ê²ž={Ö¨ÄÄÄJ뺺ºâÁƒµŠ¡LÇŽ÷îÝC~~>:vìooox{{ãÇ„@ €P(Ddd$\]]ѳgO|þùç000P©ÇÑÑ`høôž6mÚ(Ëäry>Ÿ>«Ég411Áøñã™L†Ã‡cêÔ©4÷‘ÄÄDøøø¨´çîî^e°µµU¾vvvVÎøÖT¦‰»»;222P\\\eù©S§àááQç64õÛ2öööÊßÅb1JKKkÔ÷Ê›1c¾ÿþ{•ŸE‹)Ë===1fÌÄÇÇã½÷ÞS‰¯mÛ¶*u7...ÇFCoºŒñÆ¢)¯’’<~üžžžX·nΞ=‹`Ê”)X´h ±XŒþýûÐÜGlll™™©RgRRR•mååå©ìÓèèhåNMešôêÕ &&& ªTvçÎ$&&*/Ë®Kšúm™òÛ·l{Ö¤ïÕÆ¥K—pøðaøøø`Ù²eÊvlmm‘ ²î®]»ššªql »=žeŒë»¦<¾.^¼'''äåå)—Y[[cÍš5P(HMMEÏž=+ÁÌÌL¬Y³1118~ü8æÏŸ¯±šÖQ–8”ÿ'°ìê–êú{EêöGMÔe|פŸèó8yædãÚµk=z4²³³agg‡#F¨\â&‰”O2õ÷÷Ç­[·"¹sçpýúuåºÑÑÑ®òõÈ‘#ñßÿáÈ‘#€ììl;v “&MªU  2999Ø¿?ˆÉÉÉ1b8€¤¤$XYYÁËË pøðaÜ»w¯É$õÍÏÏ&&&X¾|9¦L™¢šöÏ AƒpõêUe?¸zõ*.]ºTeý …{öìܾ}¿üò †Zm™¦~egg‡åË—cÅŠ8pà€ò2À¸¸8L˜0ýúõÃØ±c«mC]ÓÔo5©mßËÌÌÄÝ»w+ý””” °°Ó§OÇòåËqðàAüý÷ߨ±c`̘1ˆEdd¤²mÛ¶ÁÑÑQãØhèíQÝ4ÆñÕ­[7ØÚÚbÕªUÊ#r¹»ví‚™™:tè{{{,Y²+W®Ä¾}ûPRRCCCœ={Ý»wǰaÃàç秬ÿÁƒ•ú¹••Uêpssƒ¡¡!BCC<}„zÙS€«ëï5Ý5¡­ï½'O¬ÔvΆL&#___222¢nݺ‘‡‡}ýõ×Êò¥K—’X,¦}ûöÑÆI(’““¹»»Ó”)S”s6V¯^MmÛ¶U¾·âë-[¶¡¡!yxx¹¹9ÍŸ?Ÿ¤Ri­b¨êr¯ýû÷“©©)¹¸¸H$¢™3gRII I¥Ròóó#;;;ruu¥É“'Ó¼yóÈÉɉ.\¸ rîïÉ“'€”õŠD"åy·šÐ×9µùŒ+W®$¯\VÝþùä“OÈÈȈZ·nMnnnäëë[å9eSSS>|8µjÕŠÄb1½öÚk$“É4–U߯ R³fÍÈÀÀ€,,,H$Ñ믿®œðU]åûXù9 DêûmÅíKD4yòdZ±b…ƾwõêÕJs6Tùó×_ÑÂ… ÉËËKÙÎ?þHb±˜bcc‰ˆhÇŽ$‰ÈÁÁ¼½½UΉ« ½=ªëC6Ï IDAT5U›þ_<¾*¿¾téy{{“±±1µiÓ†¬¬¬ÈÏÏOå* …BA[·nU^]QvÅ¢¯¯/9::Ò¹sçˆè霪úyÙü‡šÔ±jÕ*dkkKÆ £¡C‡R`` ©ïïê.®jU}5JyšÆ÷åË—UÚªM?©¯q¢—D‰žv”ØØXºqãF•³srrT®}ÎÌ̤ÿýWÙYk#''‡þúë/zôèÑ3ÅPQÙì÷ªî5pÿþ}•N–––¦vÖó³Ð·d£.vîÜI ¨´¼ºý“Mqqq$—ËiÚ´i•& GEE‘……=½‚";;»Feµ!“É(&&†®^½ZiRUMÚÐÔÇÔõÛê4Tß+,,¤û÷ïWYVÕØÐÅö¨®Õ„>%uÑXÇ—L&£Û·oÓÅ‹ÕÞ[¥l½˜˜ºpá‚rBê‘#GèàÁƒµj«º:$‰Ú+5}T¤nÔ”6Æw}Œm$õr»r@oooµåo—lgg;;»:µeii‰îÝ»?s ™šš¢[·nU–¹ººª¼nÑ¢Eõ>g$ bcc±cÇlÛ¶­RyuûÇÊÊ VVV5jËÅÅ¥NeÕ100@»víêܾ¦>¦®ßV§¡úžX,®ÔVMch¸íQ]jÊûø200@›6mT&5ª[¯â5jT­Ûª® µï¯®¿ÕïšÒÆøÖ×q¢óg£°¦!99‹/Æ›o¾ ÿgª«uëÖ°¶¶VYfff¦öËISY}iˆ6Þ «©¯Æ¦>÷ÇóB@¤:#%33·nݪÕÌZV?bbb<}®„¶„„„`âĉZkƒ1}¥íþÏã‹5¡¡¡¨Ï‹!ÂøóŒ1ÆÓ*N6cŒ1¦Uœl0ÆcL«8Ù`¬KucŒ58µW£T¼Åíóì¿ÿÒ!—+àâb›ºß2º:%%%066ÖZýeÔÝAißáÉð÷oCCÎó›ªçi|Q±¨D*2! ‹AõïcúM}XíÕ(ì$’lØ…‡óadd;»fhÙÒ ŽŽ¦ppxúãèh ++•‡öÔ…Ö¯Faº!ÂÁa.$’“(.¾§ëpž[Ú¾¥±jgÞ¶F-alÐ bas˜˜Âäÿÿn&²‚XhSˆ šÁHØ FÂÿýcT,/Àî{+›wY‡Ÿ€Õ·ú¼¥R²Áª–––ƒQ£¶#33DOÿ¨ ¡P( —?Ý„"‘-[Z£MxxØÁÕÕnn¶puµ…‹‹u5-°¦îر0wîð÷{öÌÐu8Œ©¸¼= ÿþ˜¡H@¤rõ_ÆñekØx5k¸`YcÃÉFmÜ¿ŸÿÏñäI1d2õ·‰  P( “)0xp{ÍiÀH™>š3g/ŽÿFF†ˆ‰ù¦¦Ú?eÆXM奕 dL jú 4 ™­#¿jsîËL#¾ÏFm¸¹Ù!,lLLŒ4žs'"”–Ê “) °råðŒ’飼¼bœ:õô¦mR©'OÞÔqDŒ©2kiŒ–=Í 0¨þTÀP+1ÆîóæDƒÕ'µÔ¶m „„¼‘ÈB¡æAih(ÄðáѾ}ËŠŽé«ãÇÿU  8xðªŽ#b¬²vö …úC@ À¹—Fï +~â«N6ê K—V8p ,áP¿ž\NX¾|XÃÆôÖÁƒW•“årΟ¿ììGÅØÿ| jÎoËå „…ñ©ÖðlÛ6Ó8ÁÓ¡ss¸¾l‰W~ô‚}Gí=¢=?ø¦^õlëÖ˜6Íæj×!"œ>} Ÿ~zqq0rdg¼÷ÞH¸ºòaʦ¦_¿¸{7Sã’Î[OOdž Š5Y !é\.rS‹ñâLîSLoðDuI¡ ;ö6m:ŽÔÔlôÀ²eCáèȇ,›‚;w2àç·Iã:"‘/Ä—H³gR)EÜáGˆ;üE¥p`‰AŸºóCј¾àdCH¥rDD\G`àI¤§KÐË—Óxt„é¿O?=ŽíÛOãé­Ôsq±ÆåËk&(Ö¤<ü;1ÁYH<'¡XÏ‘6èðš=ÌZé:4ÆÊãdCŸH¥r„„ü…mÛN"/¯“'÷ÂÛo†­ms]‡Æêàã %%[eYtô]´iãÕ}ºaÃXN.Y­œ}? '²áй9ÚM´…ÛËV00âCL/q²¡ŠŠJ±4vî<ÂÂRÌœÙo½5ææb]‡ÆžQ‹KñÕW30zô‹º…5r™7 ``$„'ÿ]`zĦÄb#Ì™Ó/¾%Kã§Ÿ.¢W¯±mÛ äåë:<Ƙ°ï`ʉk48ÙÐc¦¦ÆX´h ®^ý‹½Œ¯¿þ½{Œ]»~Gq±T×á1Æ´$/­ÿîËÐuŒÕN6æÍŸ&—.­Áäɽ°mÛIøúþ¾ýö“B¡ÀÇëT«œl<§„Büý_Äùóïá‹/¦âêÕDôë·+W†"#£ú?bŒ=/òÒKQ˜UóÛ†¿øâ‹ÈÈÈÀ˜1cðÃ?®_¿Ž: E‹°±±ÁÚµkAD¸{÷.LLL°eË899ÁÆÆï¾û.Þÿ}XYYÁÂÂo½õàòåËhÓ¦ Þyç8;;ÃÚÚ“&MªòTÂÉ“'áíí ///888`Ù²eµŽ­:‘‘‘prr‚¥¥%z÷î””e™º:ýüü€¹sç"00Pc¬±±±011Q9Z3jÔ(ìØ±£Úí½aø¹¹ÁËË -[¶DTTT öÓ*bŒˆJKeôÓO©K—ÈÝ}%­Ysˆ23Ÿè:¬&ÇÉi EFÞÐu¬ 9QrT.x;¾évþÚ™V«÷;::Ò‰'ˆˆ(//œœœhݺuTPP@IIIäææF{öì¡„„@Ó¦M£¬¬, "äïïOôÛo¿ÊÊÊ¢¨¨(@‹-¢’’JKK#777Ú°a¥¦¦ÊÉÉ!"¢—^z‰8@ …‚ÒÒÒÈÌÌŒ®]»V«Ø4),,$±XL7n$‰D¢Œ{ÅŠÕÖéååEʺÔÅC¨¸¸X¹îàÁƒ)00°Òç-ÿ™ÈÊÊŠ$ •––Ò¦M›ÈÇǧVûÕ»P>²Á"‘¦NíË—×býúWpäÈ øø|‚O>9Š'Ox{>”æÉwèÂ'Þ‰Š(|$…ß®èºÀ©ÎuFFF¢´´K—.ÁÆÆ“'OV™L¹~ýzØÚÚÂßß°páBØÛÛcðàÁ‰D¸}û¶rÝ?üFFFhÑ¢.\ˆ£Gª´§P(ðóÏ?câĉÈÊÊÂíÛ·allŒ¸¸¸:ÅV•3gÎÀÒÒï¾û.,,,0}úttêÔ©ÖuÖ&Öš""à›o¾Á£G°råJœ9s¦Îõ±úÁ—¾2eIǸq]±wïŸøâ‹3Ø¿ÿfÏî‹yóúÃÌŒŸÛÀši¡?MÅÝßr``$@›QּŖnÏÞßïÝ»‡üü|tìØQey‡”¿;:: ŸþInÓ¦²L @.—C(¶¶¶Ê2ggg}0iÒ$deeaÏž=X°`† ¦Ün¬áñi¦QóæÆX´h .]ZƒÉ“{!0ð7ôè±»výŽÒR™®Ãc¬~€Á[Üá=ζ^ ‘H¤¼ZdÈ!ÈÉÉÁþýûADHNNƈ#pàÀZ׫P(°gÏÀíÛ·ñË/¿`èС*ë$%%ÁÊÊ ^^^€Ã‡ãÞ½{ʤ¥>bó÷÷Ç­[·"¹sçpýúõZש)V777"44¦2 µ¼òŸéÚµk=z4²³³agg‡#FÔé*VÏt4Y„5RåÑÇ!W×w¨[·õôÓOI*•ë:¬Fƒ'ˆê†\¦ ‚¬ÒkoéÒ¥$‹iß¾}DD´ÿ~255%‰D4sæL*))QN-›ùäÉ@ ʺD"?ž¢¢¢ÈÔÔ”†N­Zµ"±XL¯½öÉd2• “R©”üüüÈÎÎŽ\]]iòäÉ4oÞX¦ ?b¾a>’".ââ=‚¥«#¾lÝ`mK$4oÞ\9£  ±±±ptt„³sípáÂŒ9‰)))hÞ¼9¬¬¬Ô®Ÿ˜˜KKKXZZÒÓÓáää@Po±eeeááÇh×®]¥¹µ©SS¬¹¹¹J¥*sUªRþ3âããQ\\ŒÎ;+OÉ0 ãdƒ=“””lìÜyÁÁ—ááaåˇbÔ(Üêp²Ñ0ª~N‰ÌZë:´:+Ÿl4„I“&©-›={6Ü q°&!Œ'ˆ²gââbÍ›'bî\?ìÜyo¼ñ#>ÿÜ K– †¿?¡²†þ1!™È¹W ûަè·ö¸±„Qã?âfff†îÝ»7X{u™S˜:|dƒÕ«¸¸øì³ßpôè?x饰jÕpôéS÷g 45|dC»Î¾ŸC!ÚN°…­w3]‡Ã{*¬ñ§ûL¯x{;aÏž8rämX[›bâÄÝ3f.]ªþ’5ÆžÕ€O\Ñwm+N4Ó3œl0­xé¥4‘‘‹add€W_ý»ñï¿U_ºÆXMÈJøFÆ#N6˜Vuï°E yyyÅ>ü3̘ñ-bbÒtk$H¤]ÎÃï«î#|Â-‚Ïü2ÖØp²ÁDß¾ž8~|)X€$:tæÏ½{Yºé©â\þý)¡ãbp|áåÈÐã­–º‹1V|5 kP}ûzâäÉå8zôlÞü+ú÷ß„W^y Ë—à /Øè:<¦Å"æ@îžÌèésJÚŽ·ƒ•;?—‡±ÆŠ“ Öàüý_ÄÈ‘qìØ?ظñúõÛˆ€€X¾|(,t"Ó¡Ä3dþW€‹[ÀkLýÜ>œ1¦[|é+Ó9©TŽ¿xÙÙ˜8±;Þyg8ìíÍtZ½ãK_«§„"¾)cM_úÊt¯ì±ö—/¯ÅÇéS1ðñùŸ|r¹¹…º50N4kz8Ù`z£,é¸pá}¼ûîH„„\F÷îðÉ'GñäI±®ÃcϨ([Š~x:á³([ªëpc ˆçl0½Ó¬™æÌé‡É“{⇢°sçïøùçh,\8³g÷ƒ‰‰H×!²Zxp=±áY¸F‘Ø^£mðÑ Æž'J:Ÿ‹‹[R`ù‚ Fû¼á=Ζ ÆžS|dƒ5:Hðå—gñÓOáà`Ž·Þ„É“{ÂÀ@ÿ¿Èž—# )AZ¤€±¹®CaŒéÙ`““%>úh,¢¢VÃÏÏ «W‡càÀ-8räop"'Œ1%N6X£åìl…Í›'âÌ™UèÔÉ þ„Aƒ8éÐ*R£Ÿà·åw‘ñO®£aŒ5œl°F¯uk{ìØ1§O¯@ëÖX°àGŒ½§NÅè:´&£ä‰ ÿíËDè¸üº(¥yr¾ „1Vco:?cjxy9bÏž¸q#ŸþfÌøÝ»»aÕªðñi­ëð¥G±…ˆ=ô ¿fC Àc˜mv‡u±®CcŒ5"|dƒ59]º´BPÐüòËbbüø]ØþIÑuhŠ$±‡§Æ!óßô\ÒSNv@ß÷[q¢Á«5N6X“Õ­›BC""â-H¥r ˆ€€Ý¸y3Mס5 –®&»ß¯†´E»ñv5ã ŸŒ±ºádƒ5y=z¸ãС7ò$’B ¶ óçáÞ½,]‡¦÷l½›é:ÆXÀÉ{nôíë‰'–aïÞÙHHÈD¿~1~é:´W”-Åßß?Ľßrt cì9ÀÉ{® ܧN½ƒÝ»§ãæÍ4øùmÂÊ•¡xø0W×áiÝÿóqæýûøyÄMüûS& ùhŒ±ÀW£°ç’P(€¿ÿ‹6¬#""®#0ð$BBþB@@¼óÎpØÛ›é:Äz#-Tàî‰lÜ ËÂãÛOŸSâ»Ò­‡[ÃPÌÿo0Æ´oWÎôBjj*.^¼¨³öe2Â… qútJK˜>½ Ú··ª÷v–,¹„3<Ñ¥‹M½×]%…y»]AÅBˆÚæÃ¨K. œŠµÞ¬‹‹ z÷î­õvcB'L/„††" @×a@ ÁÔ´3ŠŠb!—×ÿ2 , P‚¨áN_´3ï…¤Â[(=i°6ǰ°°k1¦×Âø4 Ó+gÏžÕuì}øá‡º1¦gø„-cŒ1Æ´Š“ ÆcŒi'Œ1ÆÓ*N6cŒ1¦U²Á¥ôôt 2À«¯¾Š1cÆà믿Ʒß~ Œ9;vìðô¾[·nU¾W.—ãÕW_Åùóç?þø#&Mš„iÓ¦aüøñøï¿ÿ”ë^¼x¯¼ò Ƈ·Þz 6lÀ7ß|£Kll,¦NŠÝ»wc„ ð÷÷dž PRR¢± 8€eË–)ë*ÿ:>>·nݼyó”‰F™þýû£}ûö8vì’’’0dÈ•£,ï½÷:¸sçfÍš…ñãÇcôèÑøþûïADxüø1† ‚_ýãÇÇ+¯¼¢q;1ÆX]q²Á-©TŠû÷ï#((Ë–-Cpp0îß¿àÓO?ÅáÇ‘››‹þýûãüùóÉd€7n ¸¸½zõBzz:ÂÃÃñý÷ß#22¯¾ú*öìÙxüø1Ö¯_3fàØ±c˜2e Ο?…B¡‡\.GZZJKK†ÐÐPÄÅÅ!$$Dcxxx W¯^ʺʿ¾ÿ>ŒŒŒÐªU«*?¿——RSS•Û¢<™L¹\Ž¢¢"¼÷Þ{èׯ"##ñÝwßáôéÓ8vìˆR©ÇÇÚµk±dɵۉ1Æž'¬Q›9s&,,,”Ïá3f ,--Ñ­[7"55>>>Ëå¸qãà?þ€ŸŸŒŒŒ@D(**ÂÑ£G‘››‹I“&á³Ï>œ9sÍ›7Ǹqã`hhˆ^½z¡}ûöc144„ ÆŒƒK—.U[Ö½{wLœ8Q¹^ù×033«ò´ðô”‡\.׸}.\¸©TŠ &€ˆ`nnŽ—_~YåhÅܹsѽ{wôïß_ívbŒ±gÁÉkÔÊæX”fpvvV)—Ëå022‚ŸŸþøãÈårüùçŸÓ§OÇo¿ý¦’À¸»»€ÆíÄcÏ‚'ˆ²FM(¬Y¾}:.\( xyyUY¿‰‰ ®^½Š°°0äææ¢OŸ>˜0anݺ¥¶ xzµKTTXåëÙ³gÃÜÜÛ¶mæM›`ii‰'OžÀÛÛñññøçŸÐví8ôIDAT¹sgLœ8›7oÆW_}///e2ãää„•+WbëÖ­øöÛo‘Aƒ! ‰¤ÆÛ‰1Æž…€ÊþcL‡BCC ÕGÌ>|þù'U–RRRPZZ JÿÍçååA"‘ÀÙÙ›6m‚µµ5æÏŸ¯,¿yó&Þ}÷]=z™™™‹Å033«¶¬6 RRRŸŸgggXXXàÒ¥KÉdèÛ·/€§Je2™Êü2ÅÅÅHJJ‚µµ5ìììê´jêÃ?„ÂÂÂêô~ÆX“ÆG6X“—ŸŸ¤¤$:to¼ñF¥r@ öòR033«q‚`oo_§²ê…B¼ð *ËÊ®À)£é¦c&&&jÊ”©n;1ÆX]q²Áš¼ÌÌLìܹcÇŽ…Ï3ÕÕ²eËJ‰G³fÍàíí]åúšÊôM}n'Æ+O£0½Ð§QXÃàÓ(Œ± ÂøjÆcŒi'Œ1ÆÓ*N6cŒ1¦Uœl0ÆcL«8Ù`Œ1ƘVñ¥¯L¯ 0@×!°z0~üx]‡ÀÓ#œl0½àããƒ]‡Áꉋ‹‹®C`Œé¾ÏcŒ1Æ´‰ï³ÁcŒ1íâdƒ1ÆcZÅÉcŒ1Æ´Ê?À€1ÆcÚýÿ}ó=Ûþ®ÈKIEND®B`‚mysql++-3.3.0/doc/html/refman/sync_on.png000644 000765 000024 00000001515 14042362133 020752 0ustar00tangentstaff000000 000000 ‰PNG  IHDRàw=øIDATxíÝ_HTYÀñï8ã¤ó§i§4-g6ÆËÕ&kQ)¨Ô!Š0ÒURKÚ…„ê¡/»PEÁ>ìK-+KÁ²Ñ.Y”¾dEPaA‰ø°¥¶›ZSÓïÜ;3wºŠ–¯—߯gfîïœsçœWKÇñ.€ÉøD­¨a‘'¬âq_ôˆk¢ÀŒ ÀDŽøQ´ÄïC¨¶åñÏÿgÅ ñ 0„Y‚:qZ¦Á)~õâ€èLý0HVñ× žz-¿‰C“%¨g¦˜6€é8%Úõ¬ëwêÙUÏ¿˜ª³Ä }? ?€·3ÀÀž©Š À”K• @hà a±ðaÇæUe‹ sù~ë2²ì“&Ú&B*AÄljæºììi*˨,Ëçí»÷oÆ£T”,d[˜¼3-*ÁÀ…>å‡Ë çLÉŸçfk˜Ò éw#*AEjKUy>ûšËÉõ&{µ¢8—m5Ki¬ jjƒD*¿NŽÖigwÃ7Dª’mz骹úKÛ¾±ˆ¶M!æ¤ÍkÐ?šoý¬_åÓlXí#Ò~–¸¬ê×ÒÑXŠÓ‘ùRÙ*Eû‚ՂדðEÜ;6«e"Q(²Ù=–¿Ezæ5Kؼָ_ 1òzBªJë ±XŒì96åªjL^7{ùãJÑ÷1½i@%8'7M©_\Qœ#ÓUŒËñýÿyõ Wo Éx8¼s¥v¯ªì|×SnÜ q_m Ýé î>bèÕí[JX,½4[Tú{R£ë¼ôˆ¾þa€tÝjjzzÅ'ÅìȶiIžŽòwÏs ¡€—ÕKøõâC^ŽŒ˜Y­¨µÉ%6¨´êˆº]vÛðhâ½iWv–hôëê°Ò¨¾'æÌ‚·ñ|[ßìúÅ^€YrD=<ýDû]äÇ÷s€Ïõ‹8™ºCì? À ¨—t4õᩎ¡Jã‡W‹É± îr¼cjMɘìx| šE©øNÔ‰œøA¢þ«–€Z¼ñ‡jó î#™§¢¢4gIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ssqlsxlat_1_1CommandLine__coll__graph.png000644 000765 000024 00000012247 14042362133 031717 0ustar00tangentstaff000000 000000 ‰PNG  IHDR›\yŒÇ€sRGB®ÎéaIDATxí ¼ÅÇ[)K¡²TÚh‘d+DBE´E²´ÙJöBYKhBŠ”­l‰Èµ*;)‘•]\ç?ß§æôÞ·sÏ=çº÷:—y>ŸsμóÎÌ;óÌožç™gÞ{Ÿ CâÈq õ90"cê?Ã=Áqào8°9$¤ØÒŒÕîA™½,˜7ožTªTÉ›åÒŽÉæÀü!çœsN°~°ÅÅÅI·nݤgÏžÁ.á8,XPü`sj49œtu’Ŷd±ÍUJØ’Ã5W'YH`³%«…®´zõj9ÿüó%þü)Òò‘#GdæÌ™²uëV¹å–[äÚk¯M‘vS£‘E‹É5×\#;wî” 2H‘"E‚9pà€¬\¹R*V¬Ì‹$±aÃ;eÏ8㠹馛äÌ3ÏŒ¤jŠ—‰9ÉöÒK/É矞"ýé§Ÿ¤lÙ²òÎ;ïÈþýûeРA:YL\,R×®]eÓ¦MÚ_ú쥽{÷ʬY³¼Y¥,ýúõ“eË–iýÒ¥KË»ï¾QÝ”.5ØÆŽ+<ð€Ðé¢E‹ÊÀåꫯ–Ë/¿\X™Ý»w—W_}UûyèÐ!¹îºëd÷îÝÒ¾}{¹ð õú«¯¾Òûýû÷—‹/¾XªV­*Õ«W—5kÖdz7n¬å/¹ä™:uªÞ+Uª”4oÞ\òæÍ+uêÔ‘ƒjþí·ß.ß~ûm‚t—.]¤råÊ2yòd!=dÈyòÉ'éyôèQiÖ¬™äÉ“G¥Éüùóµ.+¿eË–rÑEéý-Z賚4i"œìµk×N}ôQ/m³8C¹råä×_•øøxiÚ´©Ž /X°@Û¥ϾôÒK媫®’/¿üRó_ýua|´ÅâHŒ>,ëÖ­ÓÛô‘öþÔc×Mœ8Q¥áW\!Æ Ó<¾è=zôPÐU¨PA/^¬÷  å™?@ 1WuëÖUíœìÙ³GÇÍB`œðéÒ¥Z6Ú¯¨Áöûï¿Ë”)S&Áà:èÀî½÷^Ì’%KʨQ£´sæÌQѽ~ýzùä“O”Yè7ÞÚÁÅBÙ'žxBU•Q%Ÿ~ú©Œ7N'°@«V­’\¹r €eriºñÆ%[¶l Ò_ýµ”/_^óì³gÏ–åË— îžúõëË3Ï<£E6oÞ,,’>úHÞÿ}•ˆsçÎÕë-[¶ÈŽ;(&L¤ ýŸ1c†dÉ’Eù¢X»v­ª¼Gy$èF¢҅磡C‡êYœ,ØF©T³ýôÿ6T"ôÍ7ßè"cžìØ1aa°€_|ñEyúé§eãÆZ6lØPî¸ã>|¸<öØcZgOš4I ãç#GŽ”ìÙ³kÝóÎ;OÇú?~¼.øÚµk ŸãÇkÛÑ|%ËfÃn`·mÛ&ßÿ½¦ÿüóOyå•W ÃÀ`.Œgr‘z?þø£tìØQjÕª%­ZµÒ‰¡›o¾YûËjôe±[øP÷‡~Ð"­[·–|ùòÉÃ?¬`ã^ß MgÊ”Ião—k@J}l8>Lø®]»´(“†äFº!EYùôÁJžzõêIñâÅ¥D‰‚? à 7è}ÒrôèÑHùå—àãiɆäl,Fœè5jÔÐ2L~$„=שS')T¨J¶íÛ· À;ûì³å»ï¾Ó&Ð"K–,Ñ4¼EJ±˜‘T}ûöU€-\¸Pë!é™?î_vÙeÒ»wo)P €Àg$¾W¤š+gΜ Tæ‰ E-Ùh†A3f”ܹskÚ~a|Ö¬YS6mÚ4âž!‘üq]0ˆX e´ž{î¹ö¶üõ×_*ÉȰùä!]#@î·ÿ‹à²r-!ìj 7>ʇ»ÿñÇ+˜Pm~c‰eΜYUÓÏ?ÿ¬êJ3Í—×Ûnóûõ·?Ù>HëbÅŠiu~1}Pÿ¨Wæ…òeÊ”´*kÖ¬Zöî»ïV‰ŽfÁ¼ArS–…kÛ|9räH¬k‰æ' l‰¶öÏ $MŸ>}ÔÖa¥ ª1JïˆcP­Z5 “ÌÄ£üÄñX±b…ªH$ „ÄÀ6š>}ºÚ[äfkøÛ4{ͪÔ`  Ói‡þ )SbŒ {õê¥R?Ü\ð€1bR !¬MÆxèv¥ýŽ\Œ“¤M›6*5YŒ^babs3'Ø]€“"Õè+„Í6ó³Ï>«¼Aòb& š‘ê˜'lˆw&"®Y]P•*UTÒ±­oРÚyW^y¥ª"TF«]©”·í z .¬+ ›‚|ÀÇfÎÁX{Änl KY~Q‰¨lÁ\ ؘ¨8Úa¢`rRdûª÷ø0f&êúë¯WSé…ë'Ê¢~1öQsHúbŸÁ& ضd(²ÏeLØ}ðóÿûŸJìXî³9@ ¡Þé ¥[o½UûÇ~ùå—Õ”`³ƒdCÝc Ùì0Ÿ´H(¶h(Mª ò šƒd:0"2xÜ„Y%³[ (Ø„Y©c8ŒÌ#aŒ|Í3ƒ ˜Õ¼÷üóÏÌÊ üöÛo}ûöó ˜0Ò0˜—TÂ4`€¨õüeiÇÛ¾ÿ~r®d kUÚöÙߦ±ð,%ÈHÉ€±§"jŠ9±|„§FMj=úoÔk¾yÉ,~o^biø€ñmzoOÖ!Z}ì±@?«Í+ Éæ'¯Ýä¿Ç5«ÑO´åµ÷ü÷ý×vUú󹎦PõCå±+¶;c¯ÄU–¼”Pß¶mìYkÓÚ¼Ä~½|DMòè;î?±é8Jq°!ƱC8ˆ†psx'¦mÛ¶!«£–0V¥?¤8ذ1¢ló¯F¶ñ¡()IªŽË‹ ¤Ên46†æzsðZpqqqü¥•û„áA–,çòä©ãx†GCÆ×è…W ®s7æD,u¨k׌kc¾ñ î4.‹¼±Ôµ˜ï‹S£QNÑ„ ËÍ®-“9³ý"Êš®¸[Xºô;ãÙ¯~¼|ø¡[¬Ó¢lQpl̘eæXçï# C‡Žš7O~ˆ¢¶+êÀ!Ž;nÎbWë>jΗEXÛƒlâ .n£q&ÿË®øøãæ]¯/݆*Bþ9°EÁ¨Ñ£—š·!Žü§Æ‚¡ÈÿSÐe8É °ÏæÎÝð)vðà3&y¯HGòÜS­Ì¿záTY ŽgÖ¬µæ…ÇÿžÇš—"ÌëìkÍ‹ñ)ø´S·)¶ævéÒoÍ‹‰™wË2ëàÙ4…-[þ}õ;‚æNÛ"8O8mGáÀ‘`Ö^Û°ágéÜy‚yã·•ÖΜ9£y÷ÿŒ[:­‹Hñ·>NEvf̘Áü¡ÇßïègÏ~¦Ù•þ{}*Ž7µÆäÔh”œ5oG›W¬ÿ~ý=ʪ§}q¶(!€ÑZu=آ癫‘L8°%“q®Zôp`‹’gÎf‹’ažâlfD’t6[$\ ]Æ-4_\n*pÀ-˜êš ͶÐ|q¹©À¶T`ªk24ØBóÅ妨¢d*®>Ž¢ç€[”<ÃõáÞ“‰’iÿw`Kß\­dpÀ-J¦¹„(æ)îÀæaF$Iw‚ —B—q` Í—› p`‹’©NFÉ0Oq63"I:5 —B—q` Í—› p`K¦º&CsÀ-4_Íu6[¢¬Iò†[’,JXÀÙl ùÍ•[4ÜreOŒÞÿ°›iƒ¿ƒK·Ÿ 22g>'ÝößòÞÄ;M‹éö>#á?p>1ØFVû{oŠX¥½utr8@¬*âµ_+-ɩѴäöiþ,¶Ói9|¶´äöiþ¬ÓlØ+þÀ¯'ĸdž”Ž9"«V­Š´xÌ•;-Áö /hê“=_|ñ…Æj´&öªF£N¬<Á}‰V«“ÿŸ­U«V‡}ñâÅb£/X°@£û:ºS§Nòàƒjô_0W>øàÍ#ú0ñN‹)¢!§‰ìGoݺu°Žq]èXŽeË–•víÚ‰ ,„È$Î+}Ž5ŠIÉF¸nTÆsÏ='Ä\?tè¼öÚkàLÔa K=þ|å%yLÞÌ™3嬳Β÷Þ{O˜0ò—-[¦¡¼yÄ¢÷ÒŽ;tr ¤á¨'Nœ¨Ïb’ï¹ç1å‰áž5kÖ`ÀW›ýû÷$%@5j”‚ΟÇ3ym~à™¨ÅÁ®¬^½Zc¶rÀJ?ªV­ª*–çÇýÎ;ïÔÐÛ¶à¬U«–†§þš5k¤Y³fºHï¿ÿ~[,¦~clpˆXåÄ‘'v)Ò¥P¡Bõx÷îÝR©R%AêAüà­@š?~¼Ô©SGjÔ¨!+V¬ÐI£níÚµµ¼ÿ‹rÄ0%f¼ ®·‰®Lìvê!‘ŒôÃJ ›&N:±çñ²¬±Óýy&:ìܹSÁFøòåË'芑PÔgátèÐAÛiÓ¦ØìŒÑK¨K¤ò¸qãt1° lšë¢ó–•tÌ‚ ð@„–Ι3g~­ „$Ä4àèÒ¥‹ìÙ³GÚ·o/Ÿ}ö™N  ´KÐÝPd£7;vLdóH{ó¹öáÀûöí«ÎÑÉ“'KóæÍõß×ûóL¼xUÓŒ²á±m[„&0`€äÈ‘C‹‡³÷W/Ì—qË+ ‘Þ¨Ì §mÛMíߘ[¸3É+VÔUÏŠç©€º}ê©§¤aÆ‚MS¦L™àî )ŠØ™B·råÊšÞºu«J‹ýû÷«zâ´ª‚lƒ½gÏž‚Ú,€»ÐŸÇbaqºøøø`Ÿ´1ó…I€X©Kß)úoÑ¢…¬\¹R¥«-tß¶m›ªnÆÈÆB,ŽX¥˜Ü „cÀ‚P¥“&M’*Uªè5’ {µH:wî,ùòåS›ï¡‡ÒIÖ‚ÿ|ÙvæÎ«öÝÁƒ…cœ¨äa’@£ vÚœ6mšnl:W®\rß}÷©ä*W®œJYõ)c | ºB?J”(!C‡Uµ/›B™×­[W²e˦ö#“ò¨}@Ö´iSYñâÅM”Àu3:1b„0æX£4ÿ×ôLÌ<ѳÑõë×ëxw—€éÝcÁÑ@Lv K¨[ób€–Ï;·ù/à™Tz½õÖ[*UÀIŠØh ½ê>TýL£GVUͳ-a!­P‰‰©|[ÖþbçÙ~³á`„d£­pm°¨°QÙ=§!¥ÏM?}út°–-[&à»Ñ‚ &ÈãIΉkí:oE&+Ü„yˆ²™BåÑ¿Ä{ŽÍC4äí7@ƒØ Ä*ÅnÏÂp Š}e'v ª·Ÿ;U/aáÆð›>}úx³R4Ï ›rãÆjã¡*-!ùP×'*õm{±ö›1Ö:IP‰hø8qÌîÛ·Oý^8OC‘]ýöžuØk~Q¥Þݨ÷^J¤{ôè¡}2dˆÎÛ&‹%±Œ·\zM§+ÉÖ±cGÁ÷„Mb½ùxô1¼ñ¢[;v¬º@(‡”b‡X¸pa5ð=ªN6oÞ¬vR‘hƒ Ô–IêƒvqOà—ÃõÀ.²X±b z|ƒsæÌQuŽS÷eY ¥J•Ò¾Û~úQõœ•bäã»C¯[·NwÞmÛ¶ÕÍÀðáÃu犭Ƹ‘Äé…Ò•dƒ±¨=ëÁg×¹k×.)Z´h~׫WO g<ñL n ø)S¦˜øî„ÛþJJ—.­NÚaÆ ›&“c'(© T! `#SxäÈ‘Zoûöíê÷Ãã¿wï^=ÁÀØ{õê¥àñn\´’ç °qÊAg… ´›Ü¨ØyóæéÂõÓ­[·°àõ4Ét%Ù¼Ûy¼ù¨Ç.`ò’‡ áD€òØh¡‚kÖ¬©¾4$»TvqL¨¥p'HQvž³gÏVàb3B‰&®Þ‚eg p«U«¦.ì³3fØG„ýÍ›7¯]QˆÍmr6øû̚Ŗ?þ°mÅÊÍt%ÙüLƒáL uÌrê×€µÓÈÇí1‘Øfì^¨\¸Œ…  ¶’ÕoÌ[[’öy&'v@ÃI6íÜ?_¶.m[Ž4.>5RÐyëÅr:]ÍŽõæßvÛmÂQ̇¦NªÂvÂFP\\œ^ëÅ ~¡âªW¯®~*Þ²ð:iýMã|E"t~½eÉC¢ò± Á_ß{Dlõë××Ý8êÕ JoÙXL§+5ÊëEØCèփ߸qc}=wÄdtïÞ]Ó¾³3åm ì!œ™á(©CN-°Áx«)‰ôâ¸ËK”ãƒmÅ)'¨^¯ïŽ7E,q±%F´py»É·‰1 ¼í%V7VòÓí ‚Ÿ€‰Igò™/áÍ'?”ºô–‹&tÅVDE’äá&ž·>عÚÃøhžå/‹yÀ³¬‰à¿ŸÔµ;AHŠCI܇ùæ¡(”7?T¹hòP_V…Ùßpõë[¸:‰Ýóž$V&óÓ•Í‹ t}Šœl‘óÊ• MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::ConnectTimeoutOption Member List

This is the complete list of members for mysqlpp::ConnectTimeoutOption, including all inherited members.

arg_mysqlpp::DataOption< T >protected
ArgType typedefmysqlpp::DataOption< T >
DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/beemutex_8h_source.html000644 000765 000024 00000044261 14042362132 023263 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: beemutex.h Source File
MySQL++  3.3.0
beemutex.h
Go to the documentation of this file.
1 
21 /***********************************************************************
22  Copyright © 2004 Beeyond Software Holding BV and © 2007-2008, 2018
23  by Educational Technology Resources, Inc. Others may also hold
24  copyrights on code in this file. See the CREDITS.txt file in the
25  top directory of the distribution for details.
26 
27  This file is part of MySQL++.
28 
29  MySQL++ is free software; you can redistribute it and/or modify it
30  under the terms of the GNU Lesser General Public License as published
31  by the Free Software Foundation; either version 2.1 of the License, or
32  (at your option) any later version.
33 
34  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
35  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
36  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
37  License for more details.
38 
39  You should have received a copy of the GNU Lesser General Public
40  License along with MySQL++; if not, write to the Free Software
41  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
42  USA
43 ***********************************************************************/
44 
45 #if !defined(MYSQLPP_BEEMUTEX_H)
46 #define MYSQLPP_BEEMUTEX_H
47 
48 #include "exceptions.h"
49 
50 namespace mysqlpp {
51 
59 class MYSQLPP_EXPORT BeecryptMutex
60 {
61 public:
66  BeecryptMutex() MAY_THROW(MutexFailed);
67 
71  ~BeecryptMutex();
72 
75  void lock() MAY_THROW(MutexFailed);
76 
79  bool trylock() MAY_THROW(MutexFailed);
80 
82  void unlock() MAY_THROW(MutexFailed);
83 
84 private:
85  void* pmutex_;
86 };
87 
88 
96 
98 {
99 public:
101  explicit ScopedLock(BeecryptMutex& mutex) :
102  mutex_(mutex)
103  {
104  mutex.lock();
105  }
106 
107 #if __cplusplus >= 201103L
108  // Disallow copies and assignments
109  ScopedLock(const ScopedLock&) = delete;
110  const ScopedLock& operator =(const ScopedLock&) = delete;
111 #endif
112 
114  ~ScopedLock() { mutex_.unlock(); }
115 
116 private:
117 #if __cplusplus < 201103L
118  // Pre-C++11 alternatives to disallow copies and assignments.
119  ScopedLock(const ScopedLock&);
120  ScopedLock& operator =(const ScopedLock&);
121 #endif
122 
123  BeecryptMutex& mutex_;
124 };
125 
126 } // end namespace mysqlpp
127 
128 #endif // !defined(MYSQLPP_BEEMUTEX_H)
129 
Wrapper around platform-specific mutexes.
Definition: beemutex.h:60
void unlock() MAY_THROW(MutexFailed)
Release the mutex.
Definition: beemutex.cpp:167
void lock() MAY_THROW(MutexFailed)
Acquire the mutex, blocking if it can't be acquired immediately.
Definition: beemutex.cpp:110
Exception thrown when a BeecryptMutex object fails.
Definition: exceptions.h:390
Wrapper around BeecryptMutex to add scope-bound locking and unlocking.
Definition: beemutex.h:98
ScopedLock(BeecryptMutex &mutex)
Lock the mutex.
Definition: beemutex.h:101
~ScopedLock()
Unlock the mutex.
Definition: beemutex.h:114
Declares the MySQL++-specific exception classes.
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1FieldTypes__inherit__graph.png000644 000765 000024 00000010313 14042362133 027663 0ustar00tangentstaff000000 000000 ‰PNG  IHDRs\]¹ŠsRGB®Îé…IDATxíU@û¨b@QÌ‚Y1 ¢b.sÄœ&0£eΊ9+j™3 #ZЍ€ŠdE„NNÆ~MýqnœMÇÜÞîÜtÕîü™ùóCwÿîþ=»Ýž‚¤ 4JÄ,ÒIRb&ˆRb&ˆ˜sÍ¥²²R>ÿüó\ÕÒûuŒÍ6ÛL–Yf™¬½äEÌW\Q6Ø`ƒ¬ ¥7ëßÿ½Ìœ93'1S1[w4(zË)1‹Žòºë0%fÝá¶è-˜¿ýö› 2¤è-ÕG-S§NexuFÌ‘#GÊÉ'Ÿü¿A~ùå—ríµ×þïz\N?ýtùì³Ïâj®ÎÛ¹í¶Ûäý÷ߥŸXˆÉj;ì°Ã¤uëÖ²÷Þ{Ëï¿ÿ.ÇsŒôéÓG®¹æùé§Ÿd—]v‘víÚÉÝwßíü’K.‘_|ÑÎ]yçw–O?ýÔ®qÜo¿ýã•W^)«­¶šl¹å–2tèP»ÿá‡𕽯kÈM7Ý$O=õ”<ýôÓr衇ÊôéÓåþûï·gVYe¹ï¾ûü~Î?ÿ|Ëüùóíšûš0a‚tïÞ]~øáwIÎ;ï<9å”Sdíµ×¶9€|Ʊí¶ÛZûì³|üñÇVðàÁ²ÿþûK>è뤓N’•W^Yºví*:tðûˆ« 1Aâ’K.)ãÇ—å—_^úõë'·Þz«l¼ñÆrá…Êõ×_/loúöí+¿þú«?v¶;Lpåõ×_ßžçõÛ·o/_|ñ…½ÿþrÈ!‡ØgÁ‚rÑEÉUW]% 0bí¸ã޲Å[È]wÝ%M›6•=zÈ£>*÷ÜsÜxã2gÎc¬—_~Ù˜ªI“&Æ(<¿ï¾ûÊÖ[o-5’V­ZѽŒ8|øpËŸþ)Ï<óŒ¼õÖ[³¯½öš0^Ú8r…žAZ½÷Þ{†#p;àhÏ¿üò‹÷ÕW_e«â½òÊ+ž"À»ì²ËúÈÛn»í¬¬\í)B¬üøã{{íµWÆöTäxm´‘ÿœ"ÀÓUéí¶Ûnž®.û4kÖÌ6l˜·Â +øí(r<•Þ®»îê½û2‚§„÷ïëjõ^xáïØcõî¼óN»NE¾·é¦›z?ü°§Äöë»Âá‡îÝrË-vª+ÊSÆ´²2©§êÂÓÕè1?`Ýu×õTjDâ㬳Îòn¿ýv«÷óÏ?{Í›7·2ãQ±r¦¯É“'{“&MÊtÛ¿ËÊ<à€¤W¯^2mÚ4Q¤÷:®cq]o—–Zj)w+òÈêš1c†¼ñÆÒ¸qcQDË?þ(‹-¶˜Ìš5Ë>¬F6ÑHË-·œ´hÑš¨DJ8`ÕÕÕvêÆ‚X¤í#¨ •×éÌe8ÉWgÂ!Y!_bfm$Á7ÕZ6èÕW_Í{–ª[}(Ÿ‡ò%f,b¶Öb¡Dâ¸È¨‡f«âßCÄŽ1B:wîì_ËUÀ ŠJŽ˜ì Ùì×|÷Ýw¶oÌÔ¾®騱£YÍ™ê¯c­êà½lå ¥­^!÷JŠ˜ãÆ“K/½ÔxŽØ288úè£åí·ß6Ði§fNŒž¿þú+£‡È=<âbuBT¼UlIphœqÆV ã‹6?ùäÑý ì¾ûîöKB‡î§ƒ—êµ\RÄÄ*ÅuÆáÔSOÕCæTƒFÔ1a{:¬áe—]ÖD„yóÍ73zˆ¢0ËWUUeÌ1ñÜàÄá­³~qöìÙÓ¯—>|ðÁM2ÞãŽ;N6ß|syòÉ'­ÍŠ|RRÄdÉÆ}ñÅ—•VZIp àcEî´ÓNþ›ösÎ9ÇÜ€ø:!&n5ü¥¬&ľQ¶6¹€­ Œ£ž*YguŒÈK/½´íi[¶limã3†h¸Ûε‹ß–νçž{ζF7Üpƒ»]ôcΟ}D£¯¿þºíç(;p¿…Ñ­9XiÎCDÇ’&f>Hëü‡œ:Å `÷â÷¿GË£¤o´ô}å}OÙ^÷žMËcУä¿&¹ /bò’·\aèЉêê¯FT'û”ë<òwâÅlŸ>ül³B}¯ƒóÁGY×I41««¨—h”9&L˜¦{ÓYeM¬\ƒO41¯Ž‡…SdoÛ¯ßð\ø(ëû‰&fïÞCÕíWeš7o¾þ4ÙÿqI,1çί?µWãMÈÔ©3õ•Õô²^}ÙŸXb0Vý¦5]wø7ûö– e}/±ÄìÕkˆTV.±ŽBUUÕúg¦…:r×’tL$1gÍš«A5&EÒiöì*3fJä½r¿˜HbŽ;Eÿ¢P­ŸæöiÑ¢‰þ‚®™•y©‰ÐåNÌœoMÊu‚“&ÍÐ_#,°áwîÜS]õ7D _­µk×Zî±ð/å:¿¨qçtçE=T×Ú¶ýï`¶jý/¯r˜O>cL¤˜ÍgâI¬“3ATM‰™3AHÐTÄÊÄÉþe‚hèO¥A7^Ž_”ú)çBƒ f9¨±§Ä,[%^·A3Õ™%Î…… /Õ™…`+­[HÅlI!žA4b¦b6fI[)"ÄÊ,">뵫AÌtkR¯<oç©ÎŒŸikEÀ@*f‹€äbuÑ ˆ™ŠÙb±SÚOlh+3µfcã—úo(³õOƒt…b@¹Ö~L´®Ä}š6mãUT4Jܼȫ„¿h'”5!;O<ñÄBy"­_d ?ŒØ»AhPpÂI.§ÄLuSb&ˆ˜5tf)Ì‹p D¤tñeeLÄ\'¸~ˆ½§FƒEÐÌÔ©-JL¦?ä!# ¡S ÙÒO¹Õá{Å:/9b‡–Фá¨ËµAÈ Aƒ,Æ;i­€t“=1IÏH:ò:˜¬)2ž}öY‹ûí·ßZîL2ôº|&Ä”/;bbEØ.%F:“!³t N¯©-F¬¦*´l¤˜Ð‡†ž% =õ@&ù1Ÿþy ÌKX¢.; K)|A\ee¥å#™Y )(È Fê “LíÜsϵ¦®L[Ë'øpÈýÕ¦M[¡šÒú“3“@þn¸¡_•ì –@Å6HêʇDtcÆŒ±¼g\'éyÄÈ-Æ=¿ýöÛGÎÆ ©*ñI*@; <‘c“ù‘ /WFCú BÁ:söìÙBªBÍi¢ˆ¸ä\pì°Ã–Åä¹,t$%À.ñRÉFKº²ç½ôÒKB;$ %8=é(4礪Îvƒ#€=)(H‚1H@\åsNÚE—"@T X&»ˆsÚ…8 ndÎ#+.H%P?aà €ÆdG ¯l@¤h$£qži0¯I øï¼óŽ¥Œ$<9 _›|)“Á²"à@"-rtet ÙzHîWCtb­7–sÏ$!>„&cmÀÁ.·$í;€A¨Oä¦t‘5ɤ€î#FºKYÌÞØ‰Í`™¨œ´á>ÁÐÜHD)+ŒèÓ¤gt}0Bƒ“y%^|6 X$óܼ)‡ç€gî0aÇÏ0~yŽÀþÌ4“…B­t¦K-Lxí°(ÀhèÔ©“å¥D§è$ß{ï½–¢—œÓ¤E$@½KÈ ƒHv“¦ª@Œ»Õá®sxíÙ€¸ædŠâÏ#ÞãRœÊÊrzÐ]j‡kHÔ BbÚà n¬Ôa¼¨'ŽÔáƒH%¿ cu“P‘_¨ÝP«•ÉÀ²+ ˆbU2@Í Yp&F+‚è¬&ôH%_œÌ °6yŽU ±Úbõ†Ëv!ÃL1Y}èA²#¸ì¸0*c$98Ö¯“š²¿ "ªÉoÍüÝ_Ãs O¤ M’u¤V7R‹ñ“Zƒìà¨P¨ÕÊÌÔ‰›H`èB€ôJè Œ#ˆÀJaB$.%‰C"õ];ˆf&ƶÍu‹¥ÉÄÉ]‚áp‘´éÊv#ËãDWTú8á„üí}‘itR0&’KàštãtçˆZ²3èFÍ9ÁÔ’ é3c?h^lÓçv…BÐ1t@:¤EõÍ">àvÒ;°Â0„X©áý„Ä…`ÎšÄø@l¡?¨ïˆ ¢ "0(¦ x°>§ 0À|ØùôEÄl,R2 ™æÀ=D-+| Ñ£‡Å*¾ØÐ;±®LÅÚ¼îºëÌ`p„ä:ŽJä…@ê;ˆºÏDóA®k#×1¸Ÿ ×E çÓiïÞ½ýlÁv¢æ€~ §ê€aÑŸµ…ØW&"ƒÂùŒ­“y~·Ý°ýBF!Çݯ¯#s†aa™æÇ‹²2±J %$“ Z}œ‡‰È5  ɸØ…!ÓÂõâ:¯k6®Á¥íˆà›ê ý¥¢$q¿2`Ná_ÔЙòAZ½Ä0ŠÙ#È¢ '%æ¢`¯ÄžM‰YbY”áü 3²îÝ'IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1CompressOption__inherit__graph.png000644 000765 000024 00000007623 14042362133 030611 0ustar00tangentstaff000000 000000 ‰PNG  IHDRŽR‚ì\sRGB®ÎéMIDATxí ´USÇ¿Þ+/C†¨êQ ™²2B¦ ‘yÊÂÊ,CÅb-2×2[ɼ 2„"J¥ˆzI)CTÈ¡4nû÷½·¯ssî»÷u»ÝÛÝßZïÝsöÙgÿýßßþö¹ç½cM¼y2C ²$³ü>·G  OÏ„Z!à‰S+ØüM9#Î¥—^*uêÔñ?«ƒaÆåŒÑ9#Η_~)¯¿þº‹ûŸìc0`À=zôÚGœœõÈW”ræqrÒ_IÎðÄÉÔkWEEEœ÷Þ{O–,Y’µüùçŸåÅ_”»îºK†.ÿýwÚe9R–.]švþ|ËXTÄ9ãŒ3ä—_~ÉʼõÖ[²çž{ÊóÏ?/ .”AƒIûöí¥²²2¶üGyDî¿ÿ~½ÑþùçŸØ¼y¯ra‡z¨±»ª”U]vÙeæì³Ï6-[¶4p€±;³ÕV[™:˜ùóç›Ã;ÌØƒ–ñᇚ®]»KÓ½{w³Ùf›êøõ×_Éæ¬³Î2[l±…9çœsÌ®»îª÷PÖœ9sÌyçgÎ=÷\Ó¼ys³ûî»»ã3Ÿ}ö™9úè£ÍÁlš4ib®»îºD[»tébfΜif̘¡mX¹r¥ÙrË-Í«¯¾šÈÃÁ 7Ü`ÈUÖ´iÓ´›nº©±¤1;wÖ¶Ï;×tÐAf£6Ò4Ú÷ÕW_i_Ž9æÓ¸qcsþùç'ÕuVW^yeÔ¥Õ‘6%¯<ŽQ&Mš¤îŸYùä“ZgRekø$¯ˆ't’X!»í¶›œp ²ãŽ;ê’À@üñòÚk¯)d|ZO#Ö;é€ßyçÂCFë±äí·ß–SO=UvØa¹ä’K"!f­×Ðë<_ÂZ·n-Öëè}Gq„0xX¿~ýÄz/iÚ´©\ýõ²|ùr}^j~úé'YguôžpY´ ò­·Þz‰ùd½ŒÇáçŽ;îÐA$æ)//W/Ä2·bÅŠ¤ÙJYƒLû»«$åOubId>ÿüsc=I"[ª²,)u&n°6`×Ý`0-“ã\ïª Âã¸ÅrtÛm·©wqi|tn¿ýöÁ$=&ø °ÁL. ¦ÅÅEÁ|î˜X&ϸt>£Ê"8Ž2‚üB²‚"ËñH0p¬ l/¼#áioxy˜çvl5•YÓõl–US]kêzAgà 7¬Nn×ân¶ÛÜaâ“KœçHdJó ›e¥YeγÔ®*çèø cÈ™ÇồB±²²rû\e‘,[Võô¸ÚÍ£…\Y"÷\UVHõ”—÷–¶m›Êˆ½ ©Ù¹j«ÿó˜(¤'Mš-uë–Øï“æÚ‡‹£²}šq"(0dÈûEãrû¯Ô¾g39"‡OòÄ qÀ>C´O”'Ù'Î+íä%ö ôØP ž8!Œ33)eúôyöû«…IiþÄçxöÙñ²hѯ—–––¨ú_Æ"Oð'@€¥KWHEÅT» ÿo£¹xñ2»\ äò‡ à‰àÁÈ‘Óìnª4Ru8wîùöÛ켫ü¿Â 4Á'0pƒ³ïÜD½@nìë¬rúCÿ°š,I-[ö‘ êëk¡î¹(ïÁ°t-_¾Â¾§<À3¦ JOœfÍš/sæ,ДÇ-Íš5´oäµÕóÖ­›Øw”«^7 ÜR¬‡•9û®ªnÕª±ðƒUTTÚțؿ\hSMÏy}Œ“sÈ׎ =qbÆ‘¿²È»÷|cÚº&’=qbPçOU\€“¥¨“=qŠzøkßyOœìüRLu²'N >~©ŠÆ'50þjj¼ÇI¿ƒ€'N 0>95ž8©ññWcðĉÆ'§FÀ'¿¦:Ù'¿Æ'50þjj¼ÇI¿ƒ€'N 0|3î¿Ç&{âÄ`Ã7ãþÛñp,S%%Uÿh2&KQ'{âÄ ?ËTðób²m²'NÑýªuÜ'?ÿä8˜êdOœ|ü“ã`}úh^4ÇÁ/ˆA8²h7 ÈA¯{ùå—«Ð+ 7a\P÷CYoüøñrã7Ê7ß|£ýEì!ß¾ûî+”àìÝwß­m¶mšNß3µŒ=Οþ© ^tÑEVë ­ µ[½k•aFâ±§ƒ‰4<³gÏÖN=þøãrÈ!‡ÈK/½$”ƒ â5×\£2É DP”ì·ß~SIe«ÿ­ÿðÃkß zUœ£‡ùÑGi:Š¿N Ì“yÅ !kH»?ù䕜Dd “ǘž`0ðNò DŒÄ5òшK_ÐÙdÐ7BèÒ3‘4Útß}÷é`“'ˆ§Y}s•t ’†v¡Œ !¢péܹ³âŽw…¼ß}÷·¨6í¹ýöÛÕ{!©M[ÁÙl¶ÙôÑjµkþL~eL °vÚI;ç;¦V^F£’YË@¡šËù AƒÔ»@4HÅ ˆ•4L¨öOçðF”Á2[0d£$+`¯À“Ƴ'¶;æû&He  â]ÐÉ„ †Æ'šæ5bë®»®KÖ6s-S«qjª²Ó0x|ðŠ¿à ʎ·Am—5˜ÎàIX"ÂXÄ3fÌP—Ï2ˆAîÃkà 0ÊrA¯;Fš¹gçº)‡sÒñŒ›rhÂy,-0Å/GF< ËDؘ8(ŸvÚiÚvGQD¥±Œâ݈sè;6Ê>ÑgyD‹Ã9kÕª•Ê]Ów¼.}mß¾½»¼ÊŸÇ©jtnR°uëÖM³ >øàƒ83Pèj2{èÜ™gž©ënp¸r˜5,#è€S‘Îì  „$Ì(VŒOd¥)Ó3€ÔEûG7œåB,B"d¨qõW\q…–“ê—kšå¸}¼ñæ®qܵkW>|¸¶ý¦›nÒv…1ˆÂ/Îäâ‡rÀ…>#b ¹±(\˜T·Þz«Æfä¡=È[Ó/0g …8Êa ¶=|-î<éßÕÒXv«ú] g@Píe0fA2ˆå̤vDƒÀcÆ1ØÄ3äwÄ"­¨¨Ðx$¸Ô¹ò¢>žÀ–µÝÅ .Ë tå»ô¸Oâ”SNQâ3nyŠÊOÜD,DÀŠEa•æÊ‚ ³né$=®11‚Ëi`Hì¹ùæ›'‘›kéA47»ÅjËþ¿«e'ÃŽ„ÀÓ‘†Ê˜IlUÃŒ3Â×8ºÎ I—4”A~e™”¼Ÿ\“…ëŒÂ *Í•›ªŽ(\¤¡&Ëf¶-«KkÑ¢…>ÉTQ× ®'ÍzÊ(:thÊYuO6ÓðÊnÛŸÍrÓ-+—tïÏV¾¬‡ÝQ¦¤¡3áÙ78Q3-[`¤SN¸éÜ“Í:wX¯]5ùgíÏœõÆ'gP¯]ý JŸã(C]‚IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1TooOld__inherit__graph.png000644 000765 000024 00000012567 14042362133 027030 0ustar00tangentstaff000000 000000 ‰PNG  IHDR¢\íjnrsRGB®Îé1IDATxí ¼MÕ÷À—!cýHdŒ(’yÎ9SŠŒ!¢O™éC(R¤")2„’>Q©(¥T”(ó¢‰ô/©Ð$%Cÿþ®Þ¹ŸóŽsß»ïÞ뽫öú|Þ»çì³÷Ú{¯½ööÚçìLޱ`)ÁÈœÁõÛê-”–-#$,#&Ä0ØFdͼ÷Þ{Q­­3B Ô®][räÈaîødKwFÄ7Êœ9³4hÐ >=°XâJ>úHþüóÏtgD«šã:ŒY´°Œ-ål¹¸RÀ2b\Éi‘EK#®_¿^:- Îh¹ 6ÈÎ;ãZÇÊ•+åĉqÅ™ÑÈÎ*F¬Y³¦üõ×_§Ñìî»ï–]»v–žÑ óçÏ—Æ…iæÎ+³fÍÒ.½þúëêPdtÿâYÂ2â°aähÑ¢R¹reÙ¶m›èÖ­[åšk®ÑþO:UJ–,)Mš4‘ýû÷kÚ_|!W_}µ^/\¸PF-¤µiÓ&D3žûí·rÛm·É­·Þ*¥J•’Ë/¿\>üðCÍ3cÆ ¹ì²Ë¤\¹r2{ölM[¼x±ôîÝ[jÕª%7Þx£L™2EÓ;¦íûå—_BøÝ‹¯¾úJî¼óNùî»ït’°$ò믿êã±cÇ 8wïÞ-­Zµ’víÚIÁ‚eÀ€ú|ïÞ½Ò¸qc)P €tëÖM>ùä5j”Œ3FÞxã ùøãåäÉ“ÚïfÍšIÞ¼y¥iÓ¦²oß¾°8Ýv%êoB2âÚµkåÍ7ß”Ï>ûLzöì)Ó§O—‰'ê²ÏÓO?-?üðƒ0˜>ú¨2†+ sçέ̱‹)"eË–UÉÁ€»ðå—_ª„bÐ6oÞ,ï¼óŽT¯^]üq¡ÀûòË/ËK/½¤ŒÌRjévóÍ7+£?û쳊™-[6¹à‚ \ô¡ß‹/¾Xúõë']ºtщÀ„p¥ù÷߯LyüøqY¾|¹2"uÒ7ž1*T¨ ,¥üôÓO²cǹå–[´¯0Þ§Ÿ~ªŒ8mÚ4eà-[¶ÈùçŸ/=ö˜„ÃjX‚^$$#^z饂T1b„2Óœ9sä¼óΓL™2)Áa€FIëÖ­¥W¯^R¼xq%/ôž{îÑëúõëK=R${ÿþýU"vêÔI%W¾|ùdݺuÂD€É>,üñ‡â@rõíÛW™i#/]ºT:vìXG–,YäÜsÏ•\¹r¥¸&W¢D e°zõêIéÒ¥µË–-S&f2=óÌ3‚4e’ ÆwÉ:räH)S¦ŒŒ7N'Ï‚pºeõ7!±páÂÊÌrl,Æ H Ô– yòäq/Sý=xð`(ŒdÍšUXhGú ~‘@uëÖMÆ@^x¡æÍž=»š0!¶Z8FÔÌaþµ¬´ãï¿ÿ–o¾ùFþ÷¿ÿii&`Pÿh/j?þüšr§NÒk·_ܸ}Ó ü/!55oÞ<™4i’¼øâ‹²jÕª ±Z¶l)«W¯Võöõ×_« 'ÃÑ£G•¹F¢¢ÚD醭dÏ‘g¥J•Ô@ò ƒvÉÁ|<ð€ªÅK.¹äŸÂ©ü§xÏ´qÓ¦Mas#õQ¿09€i‚]ÐwÈ×¼ysyõÕW5 :Qîl…tñEB( ïÛo¿]Þ~ûmåÇ×bØr8ï¾û®\y啪ÊÎ9çuZì°k¯½VtÑ¢Eªb_yåiß¾½æÅ!à/\À¨V­šJ’Š+ÊC=¤eyî©6hÐ 7)Õ_úÓ¹sg51\iTˆzè/Z`„ j:PZ`j4lØ0T g ;tüøñj “'¼mzži™ÌŒO×±T‡ –Z¬UƒÁ^D¨œWõ éðsæÌ™*-q8È›P/ößE]¤ÏØÏ8¤á±ã½¢²±Õ¼ê–:P©mÛ¶MVÝï¿ÿ®6“''v« HhhýélVìäHñzËú¯q°1#¡•¿l,÷ )é#Ê—/Ÿ¬oØ;.ò[2Rˆ”°Ô  ¬p·oß®K*xЮ݈”Å™ðBÐîoþ k/òg%"5‚Ê&JZÂ2b¤BºÂ0-jË/-"ÅãÏ÷ã? ö'«X_Ä–ÄYb]3Õï ¼_?°nÉ:¥0)¼ßhéL›Ò29£­ëL”KHg%’޲&‡ÓÀòÅtЯ¸â ]ü¤|jyXÆaQÝ81®ÇŽ-Ébs°Ö¹fÍýc/›{˜Û8,ÀÇز^§.\R1=ÁØ`Ž‘(iªÒH gðàÁŽYÖ•{ê©§œ5j„î¹0‘gÁ‚š6sæL§X±bŽY‹s̱¦ :TñûÎ1‹ÝÎ|àûÊ1·sÝu×9FÕ:ÆIмfAÛ1K8aˇÂ1jÜ1N“câ¾NŸ>}£J#1OëŸQïΞ={Wпûï¿ß1‘‡vûÌ1QÍflU窫®rŒÇ혒cV4=¨oÝ»wwÌB{=ý2dˆcðCi‘\íâIIÖ¸æIX‰hz©ž"‹ÖH:l7¯Í„:f­Ï xÕ„Ä~ûí7]à%>KTï“e“ hJ$‘ˆ r„Û°ÙžþyμÿþûòžÙyÞµkWÈxÛÉ5k—Ï=÷œ®š‚"'áú毃õE´†™¬Ù!‚”ÐW¶ŽY$i„Ä2qfÇDUÃD§a6±bÇÄOK'ò:t=3*Ü1Ë9ŽYq¤À’%K-q ¨ÒDó¯J•*Ž ý)W"•#¿ñ¦ã ;f'$uI7΋cT3— ‘HDãü¸Ù£úUú›0ŸcT¿¦›°žJÛp}óKDÙ‘#G3wÌR”–7ËYî£À_+=Ó•­SûÄiÙäm²¬ã·‰ˆ³d¦7âZ–düQoÄÁë‰{Ó=M yëAÏýõQu¦¼NK4”Šœøëòö-¨>ú†3-y Ð6!!UóäÉ“eãÆjØãa²ã… ^€áɱ‹ b‚Á~ÓM7I‹-Ô›Ea!’Á"ù™ê#‚*dr*T(¬÷Šw‹ª÷Ê+”ùPñ,ý\l6MENÒÒ7hh$¥Æë B¢U‰ ɈЍ;bX¬­ZµªÔ]æà9Øóqm©S§ŽÆYbiÔ¨‘[¼ˆÆ¸k~”u!\ÄÁMwÝüî¯?‰Ã¤`‘›ÍDgÂQwò¸yÀÇD¢<#7’Dä„8,V³³†8)õÍÛ.wç6"ž:´„¦‰ YñÌ4÷Åiñ*Œ ^K)Ä„~ñ¸×/î'žxB¥¥»¯ÒûŒuIÖAý‘œ ÈIj}£ßÐʘ޺Â]ÛÈJ8Ê$¥CÐpDu#!~Aûýyây®Þ:zlæ &SENRë[¼öƒÚs&ÒÎúÈÊ™ Ê™ÄiÖÏ$ú³÷ézî¬íŠmøÙLˈgóèý‹Úžîª;µ/¢ÿøÍÄšÿ0ÎR¡¤—¶þ }òoÊH>¥»×œJÏ:˜¸ß›7‡™EôL¾}‚éÙŽ³½.«šcÁ?ÍrËOæºl&zñõ¿DÂÇ@Ž˜ŠZFŒ|»L4%‹Ù¬{Òl¨øÄlX°=,#FO;ùȼêy‚¬ ޝÍÙSæ5 ÑQÀ2btt“£æ}™_ÌËú.d6¯|æå%7ý Oˈái“â“æ•Wo¤ç„QÏ%}"Å‚öa ,#’%õÄMèWÅ{ÍΙãfÇ…´SÀ2bÚi&¿šAGÍ;)~ÈjÔóI/ÃûŸÙû”)`1eú>ýÌ| É Øøz¼·Œc!íH÷ÈJÚ›˜x%>6ï©d6Ë6Y³eS†d‹Zf³˜÷üƒyAõœ=éÛ5‰×úÄl‘¬D1.'Ž‘£æ½gàÿÌW~4a¾+ï¸CïaÀÜIlÒû/" X‰™’gÊf>'’Ïü0̗ϼCc!z X1zÚÙ’q¤€eÄ8Ó¢Šž–£§-G XFŒ#1-ªè)`1zÚýS2…—ºbEý_*o1ÖÑNzÍ5V4ÿõò–ÿë ý·Œ˜ ñ_o†eÄ9 _ž0v¢…Ø(`16úý³ùÁ؉b£€eÄØègKlj–c%¤]¾‰•‚ZÞ2b¬d´Ë7±RÐ2b\(h‘Ä…V"Æ…ŒI¬°Œ+Yº±Ë7±RQ,#ÆJB–nìòM¬T´Œ3-‚¸PÀJÄÉh#+10©¸eÄ騯•ZÕ#Íi´1c°,â@ˈ±ÑFVb¥ –·Œ+md%V ZFŒ -’øPÀ{D¥ùÀ:û™ì_hpn–,Nþ¬Y-ÍÒ@3xÌçæe='Ù—øÒ?0r°¢K3Es`»,]º4zk#&#‡½É( XFÌ(ÊÛz“QÀ2b2rØ›Œ¢@21£á­—#aóæÍ+©¾é-tý§ùÂ?G¾ú!wîÜR¡BrØû'NÈöíÛ…ƒ·iS¥J•$þüšÛ¶mR¾|yÉf¾“èÂáÇõ°rÒ#ÿÒ|þbsXxåÊ•õ¨ÜH˦”ïÔ©S‚=V«V­dßûö–9b>±G?4hàMÖkΠæ¬g?.\XÏö§ÇrŸpñ…^ÍIN±ÂñãÇ•aÆGyD–,Y¢÷ x¤ðƒù<ñ€dÑ¢ErÔ|¬}Æ 2hÐ =¥&LÏ {öì‘ùóç{“Â^s¦òرceΜ9ŠgóæÍZßîݻÖI˃ßÍlGŽ©gV‡+×»wo WßÁƒC45j”özB—xCš%âªU«dýúõ:ë‘mÚ´ÑAföÑé­[· R§sçÎ30S¦L‘ èæÉ“Gó•.]Z^2Ÿ^¸p¡Î.Îîׯ_¨o˜oQ»’‚rš{ݺu¥oß¾ÂYqk×®UéräÈ¡§Æ2DŠ-ºîÓ§âãäû† JË–-åÀ2lØ0Ùµk—”)SF(_ @ímäë¯7Üpƒ´k×N¤jÕª2pàÀP»hýä¤y~þùgeJèÒ0ßIÜ»w¯¼lN"¸þúë¥`Á‚ZtÅŠ:¨œ.ïí‚1J•*ئ™3g*cmܸQÎ1ßì¾ë®»ôÀô©S§ªdæäz¤ÛСC]”úTnåÊ•‚ÔCjvïÞ]¦M›&«W¯–|ùòiy¤sÙ²eµ<“±k×®R¨P¡dxŸ3µ':³š¯èF i–ˆˆrW2 ~fÏž-Ç—úõëËk¯½¦ƒ $C­mÚ´IæÍ›'-Z´Å‹ x£GÖAß|‘uê³qË–-*1ú÷ï/œü Ñ8©žûC‡ R(W®œ2¤ÿZzþQ7„¦Ýç™mÒf¶Œ1B,Ïšc*Ž;&0põêÕ=¥EÕ:táóÝlý7nœ¶ÉM‡©éŒK8QÞ{:=}ñ› L2Ît×&&ÒÎ;eòäÉ:!Y9yò¤ÖÃÜ{ï½ò¶9ï…î½T®gÏž’={v3fŒ2ãçŸ.0tÓ¦MeîܹÞâa¯™0”.]ºt`L¢43"•`'U¬XQªT©¢¿î5¯Y³¦ìß¿_0,’)Å=ƒ_¼xqe\˜”AÒ¥X±b§µÂ’0ÆIŸ îØ±£Úi­ZµR§ kŸ®]é½ö#eBtëÖM8m¾W¯^*Y‘âô [Šºh Žê„é¼ð›ù>6éÞÙDAZ a¯N:¥ÉÂ@#í赞3gÎ:­áÚDÞ¶mÛJ‘"E´­î„@Ê2É èí¦{qûËåÊ•K'ºÐv«G²oß>A¤µk×–Y³f©FøÞ‚DÙ|P'Rje½Ï£bDˆøg8iîuêÔT , 2cÆ •@Ì8l6óBÏ·¦Q3~@ò¹€êwg››NÚæ²H E½˜÷0ƒæ¦yÓé' ál$LÔ9À‘¿ Àà¨HêjÒ¤‰j /jó†ÁQðÂòåËUK„ky]\˜3ôÁ›Æµ7]&ý *ç>÷×]\Ünž”~1µè+Œ¼nݺ4 x£bÄ”Ä3˜{ u±×¬Y#õ…4Dú|b>‚N‡‘tØP~À[e ±›|$ÀàQŽYŒ§ € ©é¿Ö„¤œU£F %ID’¸GŠƒuóìØ±CªU«¦‚¶»ž#Ldkݺuȳe2ÒˆÏÀÑ&ۻ̕86àõB½zõäWsÂ)ÒÀñÁfFÒ‡k“·|<¯©Á]ÌWäTNª™ˆÒ¿yóæzïNÔ”ÊzŸEo]z±$]»G‚10¨0 ~€A¥‘H:ŠÁŽÊŰG}a㸳•ü.˜QÏ¡ÖHg°Q0*厤¯ùó;}útÅé½àâìСƒ:Oب݇~X™bÂlÌl&QãÆÕ¾Å³dPÈL2× rñ¶oß^Õ“¤,€tÀ1ÂÁZ¶l™Œ?^&Nœ¨fÏYÂF¦mÇnnÖ¬™j¤ZP›(ç·_Þ4®Ã¥»ùüÏq6˜L˜LÚ  áhî·w#)ïæIv¼Ò -ÖX3vzòÉ'Cƒ‚dÃiABú×Ý`B<^˜ §Àð…Q°Éï2*†ô[o½¥êЫÚÝEú‹ „]åµõ`xÚé2’‹‹vïÐm‡ûÌýe‚a#§Ô&Œ?¤¨PL,?þpmò—×}¸v„ÃO¿™4i7ÖŒFr!®¤x‚÷ÝwŸª5ï€Bü’%Kºõ†~½¶Y(ÑsôœÙœÒ€{Ї½dBø!¨.ò0‚Úî-Ï`¤Ö&Úí—D.ŽpeõÉ-ïßpíWOZ™0ž¸3b‰%t=Ê5ÞÃUìOŸ4iR2iЩS'½g-.^¬À&fâΈx¿ieBzîzÂ.pN‚ ½%DPlZü)pº±ÿ:,FKÔ)`ŒçãÑî4NãNcCaK³(hàß¡ÌkNmmK3C«šÏ ]-Ö4RÀ2b f³Ÿ XF<3tµXÓHÿSfÇ1ÜŒÀöIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1LocalFilesOption-members.html000644 000765 000024 00000015337 14042362132 027442 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::LocalFilesOption Member List

This is the complete list of members for mysqlpp::LocalFilesOption, including all inherited members.

arg_mysqlpp::DataOption< T >protected
ArgType typedefmysqlpp::DataOption< T >
DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/dbdriver_8h.html000644 000765 000024 00000010622 14042362132 021660 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: dbdriver.h File Reference
MySQL++  3.3.0
dbdriver.h File Reference

Declares the DBDriver class. More...

#include "common.h"
#include "options.h"
#include <typeinfo>
#include <limits.h>

Go to the source code of this file.

Classes

class  mysqlpp::DBDriver
 Provides a thin abstraction layer over the underlying database client library. More...
 

Detailed Description

Declares the DBDriver class.

mysql++-3.3.0/doc/html/refman/functions_func_q.html000644 000765 000024 00000007532 14042362132 023031 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
MySQL++  3.3.0
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Date.html000644 000765 000024 00000100347 14042362132 023455 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::Date Class Reference
MySQL++  3.3.0
mysqlpp::Date Class Reference

C++ form of SQL's DATE type. More...

#include <datetime.h>

Inheritance diagram for mysqlpp::Date:
Collaboration diagram for mysqlpp::Date:

Public Member Functions

 Date ()
 Default constructor.
 
 Date (unsigned short y, unsigned char m, unsigned char d)
 Initialize object. More...
 
 Date (const Date &other)
 Initialize object as a copy of another Date.
 
 Date (const DateTime &other)
 Initialize object from date part of date/time object.
 
 Date (const char *str)
 Initialize object from a C string containing a date. More...
 
template<class Str >
 Date (const Str &str)
 Initialize object from a C++ string containing a date. More...
 
 Date (time_t t)
 Initialize object from a time_t. More...
 
int compare (const Date &other) const
 Compare this date to another. More...
 
const char * convert (const char *)
 Parse a SQL date string into this object.
 
unsigned char day () const
 Get the date's day part, 1-31.
 
void day (unsigned char d)
 Change the date's day part, 1-31.
 
unsigned char month () const
 Get the date's month part, 1-12.
 
void month (unsigned char m)
 Change the date's month part, 1-12.
 
 operator std::string () const
 Convert to std::string.
 
 operator time_t () const
 Convert to time_t. More...
 
std::string str () const
 Return our value in std::string form.
 
unsigned short year () const
 Get the date's year part. More...
 
void year (unsigned short y)
 Change the date's year part. More...
 
- Public Member Functions inherited from mysqlpp::Comparable< Date >
bool operator== (const Date &other) const
 Returns true if "other" is equal to this object.
 
bool operator!= (const Date &other) const
 Returns true if "other" is not equal to this object.
 
bool operator< (const Date &other) const
 Returns true if "other" is less than this object.
 
bool operator<= (const Date &other) const
 Returns true if "other" is less than or equal to this object.
 
bool operator> (const Date &other) const
 Returns true if "other" is greater than this object.
 
bool operator>= (const Date &other) const
 Returns true if "other" is greater than or equal to this object.
 

Additional Inherited Members

- Protected Member Functions inherited from mysqlpp::Comparable< Date >
virtual ~Comparable ()
 Destroy object. More...
 

Detailed Description

C++ form of SQL's DATE type.

Objects of this class can be inserted into streams, and initialized from SQL DATE strings.

Constructor & Destructor Documentation

◆ Date() [1/4]

mysqlpp::Date::Date ( unsigned short  y,
unsigned char  m,
unsigned char  d 
)
inline

Initialize object.

Parameters
yyear, 1000-9999
mmonth, 1-12
dday of month, 1-31

◆ Date() [2/4]

mysqlpp::Date::Date ( const char *  str)
inlineexplicit

Initialize object from a C string containing a date.

String must be in the YYYY-MM-DD format. It doesn't have to be zero-padded.

◆ Date() [3/4]

template<class Str >
mysqlpp::Date::Date ( const Str &  str)
inlineexplicit

Initialize object from a C++ string containing a date.

This works with any stringish class that declares a c_str() member function: std::string, mysqlpp::String...

See also
Date(const char*)

◆ Date() [4/4]

mysqlpp::Date::Date ( time_t  t)
explicit

Initialize object from a time_t.

Naturally, we throw away the "time" part of the time_t. If you need to keep it, you want to use DateTime instead.

Member Function Documentation

◆ compare()

int mysqlpp::Date::compare ( const Date other) const
virtual

Compare this date to another.

Returns < 0 if this date is before the other, 0 of they are equal, and > 0 if this date is after the other.

Implements mysqlpp::Comparable< Date >.

◆ operator time_t()

mysqlpp::Date::operator time_t ( ) const

Convert to time_t.

The "time" part of the time_t is "now"

◆ year() [1/2]

unsigned short mysqlpp::Date::year ( ) const
inline

Get the date's year part.

There's no trickery here like in some date implementations where you have to add 1900 or something like that.

Referenced by mysqlpp::DateTime::convert().

◆ year() [2/2]

void mysqlpp::Date::year ( unsigned short  y)
inline

Change the date's year part.

Pass the year value normally; we don't optimize the value by subtracting 1900 like some other date implementations.


The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1UseQueryError__coll__graph.png000644 000765 000024 00000017533 14042362133 027711 0ustar00tangentstaff000000 000000 ‰PNG  IHDR””u<ÔsRGB®ÎéIDATxí] xTE.’@Â}É} ‚ È 9ta¹]BXQ/¹äVA9Ö{Ärˆ¢(È .‡ È•pË!rC ôÖ_ñ o&3“dÞLæH×÷ͼ×ýºûUWWWU÷{¯*‡b šÞ¡@B˜wÚÑ­h ¤R@3”æ¯R@3”WÉ©‹0“àâÅ‹´}ûvs–>Ï š4iB¹råÊ`içŶnÝJ—/_v~1@rï¾ûn*Q¢„KlìêÂ… T±bEù¹¬¡/¤¡À¶mÛèÚµk–êÆÔ¨Q#ŠŠŠJs@Èøí·ßèÒ¥KnJ«¼@©ÂA3T f tE3T ŒBáàS†úã?hãÆE®ÄÄDZ³fM@áä+d¾ÿþ{JNNöUóNÛõ CíØ±ƒz÷îæ»w聯^z)M¾?2ž~úiÚ²e‹•Ë—/÷ >»§Ñ7Ç|ýõ×”””ä˜íÓt¦ R'66–Š+FmÚ´¡sçÎÑ£>JsæÌ¡qãÆÑ‰'¨eË–T©R%š>}º ùáÇÓüùó%ݺuk:xð a›âŸÿü'•,Y’Ú·oOgΜ¡>ø€:vìHx"ôÕW_Q«V­(%%…þýïSéÒ¥©víÚ’†,X@wÞy'U©R…f̘!møá‡Ô³gOªU«Ý~ûíRö“O>¡Y³fQ—.]?0:`ݺuT£F *R¤õéÓ‡°Êš;w®LŽúõëSÙ²eé£>’²ò7sæLªV­U¨PAúdî&6èØµkW™È;wî¤ëׯӠAƒ¨ÿþ2&XöcU øñÇ¥ÿèëã?.}·ÜO<Ë3àðáÃêСCFÒéñõ×_W½zõRgÏžUÝ»wWÌŠg‚jذ¡ºråŠzê©§ÔÃ?¬xOEÝwß}êïÿ»´Ã„P<€r>fÌÅKP5eÊõüCñ+&‚Ô»zõªbFPo½õ–â- õÅ_(f<Å ¬víÚ¥/^¬ªW¯®˜P’÷í·ßª… ªÂ… «_ýU½òÊ+ªxñâjïÞ½ŠX1è?ÿüSEGGK[¸3¡àœßxã õ¿ÿýOÊ­\¹R½ûL±4ªV­ê”æLô•—Óæ,Î7mÚ$¸ºªÌêZåË—OñdTk×®UÀÍÜ·๬0`€:vì˜ÐáäÉ“B[ô5>>^ñäW}ûö•[0#)žhê‡~PE‹UÓ¦MsukÉga¡öïßï®L¼Ý>TF¸³råÊ4a‘Œ8»1ÓsæÌIyóæ%š7oÕ©SGf:ÎŒ?^N—,Y"3dÕªU"M årçÎMï¼óµmÛV$ULL 1ÃP³fͤ,$J©R¥hõêÕ”'Ob"I[eÊ”±Ùk̤"¹ ½† "’›Ž ¤9rHùßÿxÑÀ%ÍAîƒö;tè@ 4 0:t¨\„?ÐÒø™gž­Ž=+sßxbOz ·CjZÚå?ÿùÐÚå±Ç“rÐÞ€L«¼N:ѧŸ~J§N¢|âââlxܼySòYBH^lלð,ÕÕ‡²Æà‚p0 on Ìsüøq!$êâ×­[7ªY³¦”/T¨ñ£Ìã¨âÜ¡ò,ä!øI"þ0–.]*&KRazàm–4i˜ ×û„‰hÞÙG=o@¦ 3žUÁV5j±¸< «ÃÂÂöÑ¢E‹d Ðy~ùå±_†DÃj«]»v"™^|ñEºãŽ;hÆ ²ãüä“OÊ,[±b-[¶Lì(ñbPÃ.xàÄ~Cýúõ£çŸžÌ+Ø 4«2‘šuëÖ4€£°ÅÀˆ¬‰ÕÁ€ýÛßþf\È#vªas<˜Ö¯_/R`î[F‡¦SíÛ·OÆtödš¡ ¡ >ï½÷^1„Y‹jrcÇŽãu±´?ÿü³MÅ€iØœ¡Î`”£.Œ`0˜èÙgŸ¥‰'ŠÁi5iÒ$¹®cÀ¶“0!Œ«dö>»A5üþûïÓéÓ§eóûZÞ€c(ceè âd‡6ܽÛäIÿ3m”{r]'ûPÀNBAãMìû¬YsTмÿþò~G¶˜U€]ûå™nææµtjVn*ñÈŸž×·19ÚÎŽÈÚ1Œ^¶öËlzåÊ…ü¬m-ïæ=±‹gFÃV@fáÒ±k´ôÉ”x:™š4ºrµÒÌ6g¹|P«¼ûî«Â;ÀQ4sæzÞ)Ÿ®^ÍÚW5,SßbÇ7\¢Ý~¥Äß“)ªP„ß™ Ý j†ª]»a(v®¦Ø‰b§aŠ}DÈgøð—…<øÃÂ9ܰÓ7ÅÂ*ví«þÇg•gˆù±c;ÑgŸm’ÈF^ ñ¢Üú׎Qô¨ò‘êÇ N?ð™?¼Ä°“7ùlž«‰:ãÓqvð&ŽDà׊}JˆG>x¸Ç–dò©9ü¨Ã…>„5»ññvß³CÝv[>v‡Óš½²,ð6--·÷ÛOW¨aÿ2TÊáu¸/cÀÁý÷ßÏOÞçk†-Ã7¾ëcÑ#n~P–Õo›4ÉRGúÙŽ¡0ê½z5åÙ~™–,Ùa™ ¼Ù@ùèüÝ-'hFÛp9ƒš]L CÁò\ücÁùÛQ"Ø»ŠÍqZfýH¹º‡«ülÉPaa9èµ×byjqP|Ë •‡˜ÂCá%C8Nƒó\8Zc—=ü!Ç=„Õ ÜTÎ`ç¶ß|ó+~°œÒ‡Ó£ÎÀsØ-b^þ ¡czEƒî:ˆ©àV /}p+ i‘°¯n},@B¶f¨sçY…¼Ê.Ÿcg¨®#,Y p@V…§;¸¨t„»îºËm` ÇòNÒÙ›¡@~Ó“¾ür;»k|Ö }|Ÿ…Ï£"¢rP‘*©Žj}GŸÞ!´__ÉéºwoÌ1ê’Ø¥ôÖŒ÷j¬ê¾‘@Ëf83O:›-r3¡`ÄNšË‘–ðWÇ×Ì—|zŽÖM8JM‡—§p–P¡Ùž¡0ø¶¯U«ê4y²ïV?Ž ³ããӬ梨\ÓÀðIàˆŸ§iÍPQnĈölœoã铞Ò2ÃõðÁÁî¹g¨ÉÐŒ;¶Ípã~.¨ê¯(\8ÑŽ©¾Ô}9.{查¦üÁf½âq÷³õ¶3ªµi3M^u‰màì²ÎsO½Ês¤ ôW^ùŠÃ€dmœ9G<‚5­UžÃÈÕ¬Y–#aÕäG3·âÔ8ÑI7Ð å„8Ç·ãÀ;h÷îÀyµÖ š™¥ÊɰÀ£ËèÑÙ@ŸïäªgYx­þ0C4C¹á®]ð+Ä¡o­»VÜw†Ö¼t„"þrÁãâ–!‘­ÊÍ0Â@Ÿ4é~ãñO7¥Ü_‚dÚñÑ)j:ÂÿÎùÝc꫚¡ÜбZµÒ.¶6‡ÄýÚM)÷—6N=F÷t/NùËær_0D®j†Jg ‡ kK+Vì¦]»Ž§S2íå£k/Ò¹ƒIT³Göy5F3TZ>°ËÉ—/’ß?oÏÁ¬çÛ^£µ+à"â›§Ÿ ûÇT°}pà¢hHeëò gçÎoSçÎõ¯»hpI½Sî’4&NŒoyjpC_}ñç®]FnƒîYNEEU :¼3CëAƒ¹ºô®ÅûÍ]:cæ†Íõ%P`éÒ¥–}h£Ü#Â÷Ô ƒë®i†òÕCøž~³¡üIS|ôøÓO?ÉgÝÞÀƒ½ PJÊ­pch_ë–-{+ôš7îãØ»î‘ïèJ•*åxÉoél)¡àñ­wïÞ^#zçÎùÛ¾/é‡~°ý|åULdàŽ€×ÇŽóZ?¼ÒPzë@_\gÄÝ6¯Z¶l©zè!U¾|yõꫯ*þ¾_ñL'[§OŸV,Tbb¢´3mÚ45~üxµeËÅÞIT±bÅÔsÏ='׎?®š5k¦*V¬¨zõê%»<¨Øc‰\çÀÑâS©xñâ*&&FÚdǪGŠNH½%K–HÙ¹sçª_|1Í9»ÉQ<°’oüñ'ߪqãÆŠý(–^ªmÛ¶â< å8P¸8ÿêÖ­›âÏÄÕ… ÄÏS‰%T»víúp†[µjÕ{]QcÇŽUC‡UË–-SÉÉÉÒ¯"EŠ(\ggRŸ?-Pð/Õ¢E uþüyÉwõGdÀÓ¦(8†ÀloÕª;´Çï% Ž;Ê’vòäÉăOp]³råJ™Tqqq„ˆâ/¿ü2õìÙ“ão–o÷÷ïßO¯¿þ:1SJ{˜ÍðŸd†Ÿþ™ý¦íÛ·Ë7ÿp$qêÔ)â¢y󿉓 f"©RºtiÂçÚó9Ò/¼ðõéÓÇöãA!fJêß¿¿xAÄbOsrí-qŃûž9s†ƒ-ð?€>ÇӀÐ$9à ý‡:2d>|˜˜I„Pá«W¯æ`ÞÝøQÑH©þ×Áš5kŸŸûí·’ïÓ? ÜèqUîÛºpß—?~™½ìðA±“,™…HaaaRwâĉŠPA,XP¼²=ÿüóâð7ÞPLl)W£F ÅŽMå|öìÙâùÍ,¡˜1ÕÉ“©îgΜ)^ààzžà €t;r䈑Ls„„‚„„Bã—””¤Øa…jÔ¨‘àÌ.õ YáYÀL&xFGG‹ÛC¸96l˜He\w†;¹P<€®]»ª9sæ¨~ýú)fTÉÃ$O ©{èÐ!Ém&Mš$ç®þ¼!¡Ö(‡Tb¢|ùò‰7ÌbºtéB¬ÊD2Ás¼²±j”ÙÏ*Š Uàé R H‘‘‘Fu»c¡B…$ͪƒ?N¸$çFȇÇàä žxâ §FxTGÛ䯓qääÈGÄ ÚáIÃQÝoŽÕ«WOsðÂn m·1ð0ãf»ø× ¤.<§€6á}Ú@KÜß×´Fy•*Uˆm%a¢ØØX¡ü"á>• êÙ¥¨0T¤#QW­Z%«4ìc`pÚ…AÛf¨!øZbiÈï™ï–ëæsd€ÙÍ?Ôýøã‰¥Ÿ¨'v¶*õ€K9‡zÆ=Ùn7:˜ðF·aùŽ?g¸™'Ê´nÝZÚÄJj“m&òÛÊÏ•øóe>ÓÀmóPy<°Rꢕ.çøc›Iœ˜B½`œCýÁ¹);×R,mÛŠíi}ÙT3¤Ô …§\–bb„Ÿ;wNAåñ’_U®\YÚƒ*°=& Çs–ižï3Fpûî»ïoSÈ"€]ª7ªÚµkKûX@À f[IðÅýX" θ‡3Ü`°-ZT¡}CåF̨Ò–ÔÊÀtcÉŠ¦Û\Y¢òܬ âý¿ô*£wÄê¶@pG{‡U€Ø+l” C™ËÃNÁ ²Ú°eƒ¡F%Þt/_¾lË÷æ Éiš;p໼¾jËw†._cÙ ó ú`ß¶¡ ÊÝ¢ü&å ù™Ëaè,ÕD`Õä `§v–ù:KsÒ«ç¼ÄOÓžá|Õ|Ánð ì œõÁY9_æùå;©<¡,õ‹%±#w³d`{`ÍjÑV®šÑŽPÌþg¸ùãm=„„€]å¥×!^§W$ÍuÌl33¡€#3!ÏߌÎpK½¸ÿA»Ê \’foÌü&¡ öBÂÃó°ú¾Î[ ·öÈ‚¹_üƦ%ôýÂPVí'K=öråÒ¥ò#•:Ý ‡—[Îæ´Ê³0n[·¡Ü¹sñ†é–PÖШªš¡, Çܹ›ù±Ì ~<”ƒwå÷Yh)tªj†òp,!‘/ÞÆlnŠ÷àÙ³7yØRhUÓ åáx®]»_ú¢:lÂ+öp<–¶:Õ4Cy8–sæl¢ÄÄ[~Ísæ g[*õÁ±‡M†D5ÍP #$Ñòå»ívû¯\I¢¸¸´ZU4Cy0žß¿‡ß/JûÈgãÆx óáA“!SE3”C I‰ä¹r…EÔuG¼½™öËÃaov «Û‚ÝT¥Êp~C4íž0Œó"Eòòûéã³­@¹ŸoæÉH¬^½<-UጬB…¢TµjII·hq7U®\Ì“fC¡Žf(«£Ø¯_µly·øŽ²ÚVÔ×þ¡B`ª Ú(·8xk"TÞœ°H ©®Ê"aˆ‡ÒÛÉAš¡¬RP×·£€f(;rè„U h†²HAmCÙP3”==2Ò6”=É4CÙÓC§,R@3”EêêöÐ eO²HÍP ¨«ÛS@3”==tÊ"4CY$ Þ6°' f({zd:¥· ìI¦Êž:e‘š¡,PW·§€f({zè”E h†²H@]Ýžš¡ìé¡S) Ê"õ¶=5CÙÓ#Ó)½m`O2ÍPöôÐ)‹Ð e‘€Pypý¬!•š9*ψ«b±©¨®*$†1€:Á3Ì2pL»4±N¸‹Ù"/gÎâ&m¬—ìÒŽ0jæŸø´<`ö;wÒèÑ£ù“ì–ÔÖU‚•O‚DÖªUËÖ­òl¤Ð'Þ €f(oPQ·a£€f()ô‰7(àʈXmA¨¡b­ÂÞ½{ ¡Í1€H™ˆìÙ AƒLï9!D-Ç&Žo'Q;ao`ïÊÛ°oß>âèêvÍ¢ÎB¦Ùòr"d$µ–˜½Þ Ï|@[·nµ5Å9iøðáÖ–™šm‹}ŒPeÿýï%ž0Úó6pOZ´hmÛ¶ÍöC|㬆,“Pï¼óŽÄªãe&!H"‡q¥ Èù„ $vp÷îÝ%„þ|êÒ¥‹D‡-óàƒRÅŠ)&&ÆiWeÁ ;wî,aBÈoÓ¦-„5ì¥^½zIQWQBñÌ8}þùç2›XBËbB```Ç!9"§Ãî‚Ýäȇ”qÎÚBYL†§Ÿ~š*UªD°Ã0! ¥qŽk¥ä@ض¢¹Œº†MøÔSO‰D“‚AZ}Ç„5À(c¤3ztݳŒ¶‰r ¦@v51Ë883 ×®]iãćä‚x0`q”oQ‹¨ìÊ7Œ™o6TÍùFX;$þJ€) Ž À=ÁˆˆÚ·o_™`zH;H,¨08Gm•+Œwøða¹iF…Tƒº7$ÎÚÂ5ÐË`tL6Ž®.Æ=Î À¢ÁQåAò™ë¢,G^'iè—!Ay»[&ÑÊxY*¡Ü!æá°óôæ›oŠtB¢,lØ086l(¶ Ú‚´r0§y÷ù˜™`À®]»ä¸Î°50[ ³lÙ2ÉÃ50výúõ v_½zõ—Æ‹d‚ X¦LYÕaʼn™g»gïÞ½E¶oßž = ZŒ$Ú8k+õÊ­ÿ¦M›JßÑœ€¶0‰ŒÒ®ôE? >«W¯–´«òÍÏR å )t ?@sVƒ0Xa\@¬‘#GÒ¼yóÄX…!]²dI‹±\lG‚í¬ZµJRhêÔ©Òfà»ï¾+Ì{aذa’#˜†.Ú‡[L »¶ ŒöItt´¨ñ×^{Mê^¼x‘  !…a/Ž7Ž:tè ”‡”ƒmf„ i†Eð€ÙÛB¾Ñ7œCzÀlpŒ¡Œ…yQɇEƒ¹®¹-˜ °ûÀôЭÌepžðŠã{ †i–™AÂ(»gÏé yÕÉ5€4F>fy§N„ÁŒ6 A` <ìCM€IaäCõ@e°zÃLl†óçÏË8Ò†zjŒŒŒ45 æ†ôJHH bÒPw`pGpÕ–QR»cÇŽvʸ–Ù#î…¾¸³íœµ æíÖ­õèa‹f8QѱºÁû™gž±Ã«¼ *Øå!ìr†j¾†Ì(3¡l.Ãî2·ƒíg†qf\°<7ƒ3fÂuWmá fHÍ&Mš iÜÝ+³û]åCÝAÂ2 0ʱ4Ô ˆíP¥†´r¼liì=™™4ð†2–¸™%ޱJ1ê9“(¸æXÎ(ŒÇ@e&Ð2`VyÁ8°g'0¿nçé9¯d²ÅÛ™L>ÝO8¾±é•Už>ÕYÙ“:xPöwßõZÛP¾£m¶lY3T¶vßuúÿ‘§ »{IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ConnectionFailed-members.html000644 000765 000024 00000014636 14042362132 027441 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::ConnectionFailed Member List

This is the complete list of members for mysqlpp::ConnectionFailed, including all inherited members.

ConnectionFailed(const char *w="", int e=0)mysqlpp::ConnectionFailedinlineexplicit
errnum() constmysqlpp::ConnectionFailedinline
Exception(const Exception &e) MAY_THROW()mysqlpp::Exceptioninline
Exception(const char *w="")mysqlpp::Exceptioninlineprotected
Exception(const std::string &w)mysqlpp::Exceptioninlineprotected
operator=(const Exception &rhs)mysqlpp::Exceptioninline
what() constmysqlpp::Exceptioninlinevirtual
what_mysqlpp::Exceptionprotected
~Exception()mysqlpp::Exceptioninline
mysql++-3.3.0/doc/html/refman/utility_8h.html000644 000765 000024 00000013764 14042362132 021574 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: utility.h File Reference
MySQL++  3.3.0
utility.h File Reference

Declares utility functions used within MySQL++. More...

#include "common.h"
#include <cctype>
#include <cstring>
#include <string>

Go to the source code of this file.

Namespaces

 mysqlpp::internal
 Namespace for holding things used only within MySQL++.
 

Functions

void mysqlpp::internal::str_to_lwr (std::string &s)
 Lowercase a C++ string in place.
 
void mysqlpp::internal::str_to_lwr (std::string &ls, const char *mcs)
 Copy a C string into a C++ string, lowercasing it along the way.
 

Detailed Description

Declares utility functions used within MySQL++.

None of this is meant to be used outside the library itself. None of this is considered part of the library interface. It is subject to change at any time, with no notice.

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SetCharsetNameOption-members.html000644 000765 000024 00000015363 14042362132 030272 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::SetCharsetNameOption Member List

This is the complete list of members for mysqlpp::SetCharsetNameOption, including all inherited members.

arg_mysqlpp::DataOption< T >protected
ArgType typedefmysqlpp::DataOption< T >
DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1OptionalExceptions-members.html000644 000765 000024 00000013551 14042362132 030057 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::OptionalExceptions Member List
mysql++-3.3.0/doc/html/refman/inherit_graph_11.png000644 000765 000024 00000217757 14042362133 022447 0ustar00tangentstaff000000 000000 ‰PNG  IHDR¸_ÓØíbKGDÿÿÿ ½§“ IDATxœìÝy@Miÿð§´ÝÒm_n %”­Æ bb² &YJ¥2’h,1(„aÄ”%&diQ*…RcÍZL†Ò¾ÝÒžº-w;ç÷Çy÷íÍ­n÷Þº©ïç¯sŸ{žçùžs9ßÎyÎyŽŽãqQ`P¼@˜ ¯&È+„IBÔº”””'Nˆ: ·oßîm8_ô ¬¬,""BÔQ€þV^^Îßïç+žðñw+ø¢…‡‡ÛÚÚòQÎWäÂy€0A^ L0nø|úôéÀ>>>$IÀ¦0 Û¾};磊ŠÊ¬Y³fÏžÍcõiiéåË—#„êêêNž<™žžÞÚÚ:qâDOOÏ‘#G ßjkk:tìØ1iiiQÅ@€óÀ€F£ùûûÓétÁ›Â0Ìßß¿®®nøðá$)++kΜ9çÏŸç±zrrrjj*BèÝ»w“'O~öìÙ’%K–/_þþýû &dee !ètzzz:†a¢ €ÎWÂÄb±˜L&qVA§ÓY,–œœ\÷U0 «®®ÖÔÔìXˆãxSS“‚‚BWµ F{{;™Lî±+Î9ÊŠ+®\¹âææÆù¶®®NYYYLL¬c•ÖÖVYYYÎÇ7Nž<9**J\\!´uëVssóíÛ·'%%q6¡´´T]]½Ó9›ÍnnnVTTì1ÈÆÆF2™L´ÏÑÞÞŽ’‘‘é´ß´µµŸ?ÎYMðÞùç+!(((‘‘ñõõ¥P(***»wïÞ»w¯’’’‚‚–-[B666®®®ÄÊ,‹B¡DFF"„¼½½õõõ µµµ“““‰îÞ½«¦¦¦©©9sæL;;»={öp:zùòå˜1cvîÜ©£££¬¬lgg×ÖÖÆµ!äëëkaaATì¸Ü “É5j±œ`dddhh¨¡¡Á¹\C¡PMLLÊÊÊBïÞ½{öìÙÁƒ;ôoÞ¼¹cÇbùÞ½{Ó§OWTTܺu+›Í.(( “Éþù§ššqñ­©©iþüùÄþA±Ùl]]]âQÄŒŒŒ‰'jii©¨¨ìß¿ÇñŠŠ ™«W¯jkk?yòäóýVTT¤¨¨H£Ñxï]°ß¼k8t+,,¬ÇcE~~>BÈÉÉ©¦¦&((!diiYUUõðáC„PMMMxx¸²²2ƒÁÀqßoDûÍÍͼ÷.øïÎä@xÏ+………8Ž×××#„zyyÍž=›ØEÅÅÅDá²eËöîÝûéÓ'‰ôôéSÇ×­[çææ†ãøÍ›7UTTh4FóòòZ°`±ž={ÖÕ~ãäÞ{ïþ7å;¯Àu0€Ð×ú%$$BcÆŒ! ÅÄÄØl¶ŒŒŒµµuDD‹ÅŠŠŠrttD=:(((<<\[[ÛØØøþýû¡ââbSSSN›œ+T ªªªÄ²ŽŽNmmmW…Ýpuu=räˆOPPPrrr@@•J‰‰ÑÓÓ›>}ú©S§† †JLL433ãTœ>}:BÈÐаµµ5%%¥c›¹¹¹‡Âq¼¸¸˜X §§WYYI,««« $‰Á`ÉäeË–EDD0™Ì;wî8;;#„ i4Ú¤I“ŒŒŒŒŒŒ®_¿Îé™4iRWûƒ÷Þ»ßE|ƒ¼šN#Ìüÿ_vîèè””D"‘ˆ1óÊÊÊ™3g¾zõªªªÊÖÖÖÍÍ­­­MEE¥ººšS½¤¤¤SƒÍÍÍÄð B(55•H<\ yDm 322öïßTMÜq //ŸÍY933!ddd$//ßé€~êÔ©ÂÂB111UUÕœœNù›7oFŒÑiqvËêÕ«ïܹ“ ©©9mÚ4"eeåÒÒÒ²²²²²²ôôô³gÏvìˆë~ã|Û«Þûä@?177—‘‘Ù±c‡ƒƒq€KOO_²dI}}½ššÚ¢E‹ˆ{dçΛ–––‘‘JKKëtN€Â0,00!”››{÷îÝ tU˜ššBÔ긌ª©©¡R©T*õþýû666šššfff%%%JJJ†††¡¨¨(Ⲟ¥¥åû÷ï#""pòä ˜œœÜüqöìÙ;wî0™LƒqõêÕË—/oÛ¶ !´xñâ·oßÆÆÆ"„êëëïÝ»ggg×Õn™;w.†a»víZ³f Q2þü†††àà`ÇKKK-ZÚ± ×ýÆÑ«Þû×ÎC ïã+Ä…~âF£üü|â+IIIbTÇqOOO„Їˆ,ËÌÌLJJjêÔ©.\ Ê>,%%5zôh}}}33³Nã+rrr .1b‰DZµj‹ÅâZˆã¸——׸qãˆ69ËÄø ‡ªªêÂ… óòòˆ¯ÌÍÍÕÔÔôôôìííׯ_O¡PÊËË}||ÄÅÅ)ʨQ£<<~üxÇr111##£Ï×WRRRRRê¦A]]] {KOO³¬¥¥E,¨©©©©©}¾²ŒŒŒ±±1×v¿ýö[¾Ã““›:ujWßvµß„Õ» ¯úCii©»»ûæÍ›---{UqôèÑÊÊÊœòòòŸ.¹QÃûò®À @¼7ŽC ß¿;Ü@˜ ¯&È+„ ò a‚ûÁ< ïø‘NgKKU0 |>Ó ¯xbkkK,ˆ‹ËÈÉ}-+;¹¾>‚ɬmT`‚ûŒ¼¢ÑèAAÉgÎü5l˜øÚµ3]]g“É2¢ 8W=kogž=û(0ð‰„Ä07·Ùk×Î’““uP`€‚ë`€y€Á¬°°fùò3cÇRnÜp•–†¤úä­ââÚeËþÔÑQ u““ƒ—Òƒ~y€Á©²²qÙ²?ååe""6*(ÈŠ:0„@^`ª­¥-_~FRrXDÄ&%%9¡´)&S-ÖÖÖ·oßæ£"\o`°©¯o±± `³ñˆˆŸ…•TÛ¶m311bƒ`À:yò$ßu!¯0¨47·ÛÙkogFEmQW—nã&&&+W®n›``âïL…y€ÁƒÉd¯_­¦¦9&Æ]SSAÔá€! ò ƒŽãžžá¯^ݾ½qÄQ‡†.È+ 'N$DD¤]ºäôéÓ§øøøH$›Â0lûöíœ***³fÍš={6ÕCBB¤¥¥—/_~èСÚÚÚŽ_éëë;88:tèØ±cÒÒ\žEíj+8mîØ±c̘1nnn¿·µµå}E æàË–“SéâreÑ"cOÏ…¢Ž¥oÑh4:.xS†ùûû×ÕÕ >œD"eeeÍ™3çüùó½iÓ¦—/_r¾zøðaRR?Û)"p¾À¬ªê“£ã… ´üýW œçY,“É$þ§Óé,KN®‡Çh0 «®®ÖÔÔìXˆãxSS“‚B—7¶1Œööv2™Üc!W...œs”+V\¹r¥ãYB]]²²r§½ÚÚÚ*+û?“ØÙÙmݺµSËÏŸ?ïø±±±‘L&‹‹sÿ;þó6Ç¿aÆ´´4 î‡h®±õ¸Û»Cˆà|€/UK }Õª@yy™«W]ÂDÅ222¾¾¾ EEEe÷îÝ{÷îURRRPPزe BÈÆÆÆÕÕ•X™ÅbQ(”ÈÈH„···¾¾¾¡¡¡¶¶vrr2±ÂÝ»wÕÔÔ455gΜigg·gÏNG/_¾3fÌÎ;utt”••íììÚÚÚ¸"„|}}-,,ˆŠ—;a2™£F"–ŒŒŒ 5448—Ëbbb(Š¢¢¢‰‰IYYY7û¡¨¨HQQ‘F£!„222&Nœ¨¥¥¥¢¢²ÿþNó›tÕæï¿ÿ^]]}êÔ©Ïÿ<¶w{aøaæâreÒ¤}eeõýÓ#B(,,¬›òóóBNNN555AAA!KK˪ªª‡"„jjjÂÃÕ•• Žã d2¹­­-??_II©±±‘Á`=zÔÔÔÇñŠŠ ƒ'!!áááQ^^Žjhh rϦM›èt:•JÕ××÷ööæZˆãx||¼ŸŸ!g™Éd"„¼¼¼víÚeee¥¡¡‘••E¬6eÊ”ÐÐP èTª¼¼|zzzkk+‰Dòññill$6ÍÃÃÇqƒE‹ýÞACC±š›››››)ʯ¿þÚÒÒRRR¢¯¯ÈÙŠ®Ú”xüøñíÛ·åä䊋‹q_³fͺu뺊­ÇÝÎ5Œnkkkkkkþþ©Àù _$ÿćÿ=þ'%QÇò?~ûí7UUUKKK„ÐÆÕÕÕçÍ›'))™››kiiÉb±=z„ŠˆˆX±b…ŒŒ Žã---/^¬­­õôô$¾ UTTtww—””\¼x1×Éc<(%%¥¥¥µqãÆ¸¸¸® ,X°cÇâÛŽËèÿÿªSPPÀqüÒ¥K! ÃnݺµråÊšššÜÜ\ii霜œG)**îÞ½[AAaõêÕÆÆÆœF>~üø¾"cbbb Æ/¿ü‚ã¸ŠŠŠ½½ý;w8ßvÓ&BÈÚÚÚÂÂbóæÍ ¹ÆÖãnï>Œ¾ úsg@o=y’süx‚·÷RSÓÑ¢Ž¥3bŒ„3f Q(&&Æf³edd¬­­#"",,,¢¢¢ÂÂÂB£G :qâ„§§ç„ ¼½½—-[V\\ljjÊi“s…ŠCAAAUU•XÖÑÑ!nÊâZØ WWWÎøJ^^Þ¸qã<==µµµcbbÄÅÅ¿úê«aÆ!„ÍÌÌ8§OŸÎY^½zu§ñ•¦¦&b¡°°F£Mš4‰óÕĉÿ½ ¼›6 ãÇ'.ÄÅÅ?ÐÍnï>Œ¾y€/Laa›Ûõe˦8;Ïu,\pÆÿÿ‚¾££ãÊ•+W¬XA"‘ˆczee%1‚RSSèææöÃ?¨¨¨dddpª—””¨««wl°¹¹¹­­£NMM%×BíVUUíß¿ÿõë×Ä „BH^^>;;›³rffæœ9sxiSYY¹´´”`¯®®niiá|Ûc›:::‡vwwŸ1c†²²2B(##ãóØÝìöîÃè p €/ Fwq¹2r¤Ê|‘ó?š››ËÈÈìØ±ÃÁÁ8¦§§/Y²¤¾¾^MMmÑ¢EÄí¹sçÎMKK#RKZZZJJJ§v0 DåææÞ½{wÁ‚]¦¦¦†„„µ:.#„jjj¨T*•J½ÿ¾¦¦¦™™YII‰’’’¡¡!B(**ª°°ÇqKKË÷ïßGDDà8þäÉ“Ž9¯óçÏohhÆq¼´´tÑ¢E¡¡¡œoyisÓ¦M:::ÑÑÑÄG®± FŸàoXÐÿ0 su½jl¼¿¢¢¡ÿ{G¼Û···ã8N\ ÊÏÏ'¾’””|öì±ìéé‰úðáñ‘Åb™™™IIIM:ÕÀÀàÂ… DùáÇ¥¤¤F­¯¯offÖiÜ^NNnáÂ…#FŒ ‘H«V­b±X\ q÷òò7nÑ&g¹ã(BHUUuáÂ…yyyÄWæææjjjzzzöööëׯ§P(ååå>>>âââ eÔ¨QœqûS§NqÝÍÍÍ8ŽËÉÉéêêJJJ®Y³†N§s¶Çq®mãöœÖþùç bÜžkl/^¼èq·F?· ãöWøbøù=1bGJJ¾Hzï1¯ðèÌ™3sæÌéX‚aXvvvff&†aËëëësrrØl¶““qÌ%$''#í¥¥¥õõõÝò­¨¨ˆ8ôã8N¥R‰Àª««³²²ˆtÅ;öúõë²²2®ßòÑ&ר ãs‚ä_à˘øîäɇGŽXϘaÐóÚRcccvvöéÓ§?Þ±\LLÌÈÈèóõ•””””º»ÛMWW—ÇÂÞÒÓÓã,kii jjjjjj½mJNNnêÔ©]}ËG›\c0 ႼÀ ¼¼ÁÝý–­íôÕ«M{^{ *--uwwß¼y3q;,ïFM \äåå¿ýöÛNëp-"ï·` c±°+þljj»ÿIJTaˆ‰‰………Áû"‡Äï[#á|€îèÑ{ïÞQE›Tàä´'OrΟ|ü¸Ýرš=¯ Àϯ0pÕÔ4oÛvëÇ¿¶µ&êXàä( Ã7o¾)++íë CàK×Á Nž|øòealìVyyQÇò'Ožì8ÛØ(--Í&‘X" ô‘ÔÔÔ3fðWò QjjÁ©S½½—Nš¤#êXþÃÚÚšXÀqT_O*/—§Ñ¤ôô>ik7‹60Ðf̘Áui^À}Æ 8­ßÿÇäÉ#._^+êXþ“ÉŽŽÎx”Ÿ_ea1~ëÖyS¦ŒuP`Àóœ½{#q?n'ê@þ ÇñØØ||â**—.rñâš1c4D  ¯0°ÄÇ¿ŽÎ¼~}¢¢lÏk÷‹ôôâƒc23K–/ÿÆÓsÑ@{“h ¯0€ÔÕÑ<=ÃM,,Æ‹:„¢RŽ»™>eÊȘ÷o¾ÑuDà y€d×®Û²²Òû÷/u ˆÉdüuêTâˆÊ×®¹Ì›7AÔ/äŠÐЗññooßÞ4|¸´h#yû¶|ûöЂ‚êÝ»¯[÷„<èzò Beeão¿Ýuu571å4øL&ûÂ…'üñàë¯G$&î40Pï¹ÿ î3@ôpwp¸P^^ÿðáNIQ…ñîõ矯üøiï^ËÕ«M‰×¡Ð[p¾€è]¹ò<997&f«“JxøëÝ»oóÍÈ7mm¸ã ðò "VRRwäȽ-[æNž|øxâ„ý?~Õÿ€ÁÎW¥;wÒ=ʾsg³H’JzzñO?]ÒÐ '$ìÐ×ïõ›Ûà n@d[Œvt4™6mTÿ÷ÿÖÆæì·ßêÇÅmƒ¤„ò "óÛo1ââb{ö,îÿ®oÝJ]¿þÚ²eß\¼è ¯7Â×Á””‚ðð×?)(ôë<`8ŽŸ8‘pâÄÃíÛçïØñCv †·@ Öܹ¾#GªÜ¸±¾?ûe2ÙÛ¶ÝŠ‹ûçÄ »+¦ög×`è€óDàÔ©ÄŠŠÆàà ýÙ)Fwu½š–V|íÚº9sŒú³k0¤@^ ¿åçWŸ=ûhß>K]]å~ë´®Žfk{®®Ž½eÂí~ë Ap €~…ãøòåÒé¬ØØ­Ã†õÓ355Ívvçh4zxøÆ‘#Uú§S0dÁù ý*::óõë¢ØØmý–T**mlΊ‹‹EGo¡Pû§S0”Á}ÆôŸ¶6Æ‘#qvvÓûmÊ–òòkë ñˆˆMT@ÿ€¼@ÿñ÷Oljjóô\Ô?ÝT[Y–——‰ŠÚ¢¡AîŸN€¼@?))© |²cÇêêòýÐ]^^•µõYuuù°°Ÿ••åú¡G0n@?qv¾\XX“”äÑøðqÅŠ? 5¯_w•“ÁÛ'SRRÊÊÊú¿_Ð=SSS¾îÆíèÏŸç&$ü¼¡’JQQݹ±c5oÞ\/ª9ZNœ8!’®A7ÂÂÂV®\Ù×½@^ Ï±XØÑ?ü0©žF¬¨h´³;¯¥¥xýº«h'þ²¶¶¾}û¶ôÛ @!¯Ðç._~VXXsù²s_wT[K³³;7|¸tpð†áÃEpù y€¾VWG;y2ÁÍmv_ÏE__ßbcÀfã?+*öë\–ty€¾uòäCÉ-[æöi/MMí4=*jKÿÜo@Wà>cúPiiÝïܹ°OoÊjme88VW7GFnÒÑQ껎àœ¯Ð‡Ž‰1BÅÎnzßuÁfc?ÿ|½¸¸6:zˈ0÷×}úôéÀ>>>$IÀ¦0 Û¾};磊ŠÊ¬Y³fÏžÍcõiiéåË—_¾|YVVÖÞÞ¾WµøX´à|€¾òæMilì?ûöYJHôá´_~þ<÷êÕµê}×Ë—ˆF£ùûûÓétÁ›Â0Ìßß¿®®nøðá$)++kΜ9çÏŸç±zrrrjj*B(666))©·µ¾8p¾@_9r$nÊ”óçOè».üýƒ‚’/^tž:U¿ïzék,‹Édgt:ÅbÉÉõ0A†aÕÕÕššš qojjRPP誃Áhoo'“É=råââÂ9GY±bÅ•+WÜÜÜ8ßÖÕÕ)++wº—·µµUV¶»{(Ølvss³¢âÿLÝÆµVcc#™LÿN¾€ø%&¾KNÎûõW«¾{h &&ó?x{/[¸pRuѧ ddd|}})ŠŠŠÊîÝ»÷îÝ«¤¤¤  °eË„««+±2‹Å¢P(‘‘‘!ooo}}}CCCmmíäädb…»w睊©ijjΜ9ÓÎÎnÏž=œŽ^¾|9f̘;wêèè(++ÛÙÙµµµq-DùúúZXX;.wÂd2GE,'$$jhhp.—ÅÄÄP(EEE“ϧ((( “Éþù§ššqU­©©©«Z'NÔÒÒRQQÙ¿?Žã¾¾¾šššUUU¡k×®ikküøQ°_C¨p€°±Xì9sŽ­[wµïºxñ"oäȇÇö]‚°¶¶¶¶¶î~üü|„““SMMMPPBÈÒÒ²ªªêáÇ¡šššððpeeeƒãxBB™LnkkËÏÏWRRjlld0G555Åq¼¢¢BFFÆßߟÁ`ÄÅÅIHHxxX†%Ù IDATx”——#„ˆÜ³iÓ&:N¥Rõõõ½½½¹â8ïççGDÈYf2™!//¯]»vYYYihhdee«M™2%44Ã0*•*//ŸžžÞÚÚJ"‘|||‰MóððÀqÜÊÊjíÚµœm_¹r%F{ýúµ††Æ7¸Öjnn¦P(¿þúkKKKII‰¾¾~`` ‹Åš>}úŠ+¨Tª¢¢bpp0/? B(,,Œ¿´W ¯ |!!©ººÛss?öQû99•††{ÜÜ‚Øl¬ºïy¥°°Çñúúz„Ѓˆ¯$%%_¼xÑÖÖF&“ãããqwuuuvvÆqÈÊÊÚÚÚòðƒàx?æ_@ÈÚÛ™¾¾ñ«VÍ3F£/Ú¯ªjZµ*pÒ$mÿUââý43Gß!ÆH$$$BcÆŒ! ÅÄÄØl¶ŒŒŒµµuDD„……ETTTXXBhôèÑAAA'Nœðôôœ0a‚··÷²eËŠ‹‹MMM9mr®Pq(((¨ªªË:::µµµ]vÃÕÕ•3¾’——7nÜ8OOOmm혘˜€€qqñ¯¾újذa¡ÄÄD333NÅéӹߨ®þŸ[-H$ƒÁàZ«°°F£MšôßK'ND;ÖÊÊ*$$„Ø- Œ¯ dAA/>}jݾý‡¾hœNg­[wEVVêòåµRRƒáïB®Ñøÿϳîèè””D"‘ˆczeeåÌ™3_½zUUUekkëææÖÖÖ¦¢¢R]]Í©^RRÒ©Áææfbø!”ššJ$®…<"RBaaaFFÆþýûccc‹ŠŠ¢££‰;äåå³³³9+gffv¿íÄör­¥®®®¬¬\ZZZVVVVV–žž~öìY„PJJJTT”©©éöíÛñ6-=ä„©µ•qöì#gçY}ôл—WdnnÕåËÎd² Ïd|ÌÍÍeddvìØáàà@…ÓÓÓ—,YR__¯¦¦¶hÑ" ÃBsçÎMKKËÈÈ@¥¥¥¥¤¤tjðÀÀ@„PnnîÝ»w,XÐUajjjHHQ«ã2B¨¦¦†J¥R©Ôû÷ïÛØØhjjš™™•””())"„¢¢¢ˆËz–––ïß¿ˆˆÀqüÉ“'D`=âZkþüù ÄJiié¢E‹BCC[[[W¯^½cÇŽÈÈÈ7oÞœ>}ZÀý,dýp­ €¡# à/Ïššæ>j\[û—ÄÄw}Ѹpñ>¾B wCåçç_IJJ>{öŒXöôôD}øðøÈb±ÌÌ̤¤¤¦Nj``pá¢üðáÃRRR£GÖ××733ë4¾"''·páÂ#FH¤U«V±X,®…8Ž{yy7Žh“³LŒ¯p¨ªª.\¸0//øÊÜÜ\MMMOOÏÞÞ~ýúõ ¥¼¼ÜÇÇG\\œB¡Œ5ÊÁÁëø ±í8ŽÛÛÛ+p­,''§««+))¹fÍ:¾qãFCCC¢úõë×I$Rvvv? ‚q{¾8--ôI“öùøÄõEãgëèl?þq_4.t¼ä9sfΜ9K0 ËÎÎÎÌÌİÿ¹m¡¾¾>''‡Íf;99GdBrr²‚‚Žã¥¥¥õõõÝò­¨¨¨¡¡X¦R©D`ÕÕÕYYYDºâ×ZÄmceee‚Ùoye0\Ÿ`€¸|ùY[ÓÕÕ\è-T»¹]_¶lʆ ³…Þø€ÕØØ˜}úôéãÇw,32âò&%%%%¥î¦GÓÕÕå±°·ôôô8ËZZZÄ‚ššššZ¯'±æZKNNnêÔ©د ¯ --ô ž®_o®¢2\¸-úÔºzõ¥1c4üül…ÛòWZZêîî¾yófKKË^U=z´²²2磼¼ü·ß~Ûi®…@( ¯ />e2YB?YÁ0|ãÆííÌAsïŒ_¿~ÍGÅ_ýµS;‰‰‰Ÿ7þy!Š¡õÏ€>ÒÔÔ~áÂSWWs¡¿PËß?199/:ÚÞª¾W‚‹Ÿb¶nÝwÂmöÅ‹ü'¼½—NžÀ&,à Âfc³fùÌ™ctøð aµI¥6Ìë·h‘ññã÷ FuéÒ³’’ºï¾ko?}Á‚IÒÒÿý;5%%åó—Y‘355ÕÑÑéë^ ¯À¿ÈÈ´mÛBž?ߣ§§*”ÙlÌÆælCC˃Ûed$…Ò¦pÕÕÑŸ\¿þ‚Ŭ­§ººš¨‹:(0°Àu0ø„ãx@À£¥K§+© „ΜIÊÈ(¹ÿ—˜TªªšÎ{tófЬ¬Ô¦MNN¦BX WàSbâ»>ž=ë$¬ÿù§ìäɇûöYޝ%¬6…¢¡¡åÌ™¤«W“å<=99™HR¢ \p >-YrZYYîÚ5¡´ÖÚʘ?ßOGG9$dÃÀînme\¼øôܹGRR[·Îst4í8ˆWðO~¤¤¤¥Åĸ «Á½{#[##7œ¤’˜øÎË+²¡¡ÅÙyÖ–-s…{#5Ä ¯À³gÿ211øö[}¡´vïÞ?áᯯ^]«¡AJƒÊήػ÷ΫW…vvÓwï^¬ª*äšÁày€^+,¬yü8çêUá\«¨hܹ3ÜÉÉdþü‰BiPííL?¿ø žLš¤·íë¯a^2ÐkWèµ žŒ©ja1^ð¦pß¹3LUuøV‚·& W¯ ·o­­m>rÄzÕªââåŠø²@^ w>}jˆHÛ»÷G¡voÝJ}öìÃ;›E{‡ƒÁ:r$îÒ¥gß?îö튢ƒ_:È+ôÎõëKH [¹ršàM}üøé÷ßc7l˜=mÚ(Á[ã[aa›[PIIÝÉ“ö66ð E (˜'€^`2ÙAA/Mää¤omÇŽP55y…‚7Å·Û·_/Xp\BbXBÂH*@(à|€^ˆ‹û§ªªiõjSÁ›ºu+õéÓwîlÕ£õL&ûÀ¨  ¿7l0ß³çGIÉa"  >Wè…K—ž.^l—ï´Ä Çwî  IåÓ§Oðññ!‘H6…aØöíÛ9UTTfÍš5{öl«‡„„HKK/_¾üòå˲²²öööÆÓC‡ÕÖÖËd2yÙ²e“'OîjeÎ.jii9tèбcǤ¥¥û.¶îÁù \ܺõRII–ïp_ßd2iݺï„U'¿ÿ~÷Îô‹× ¢Ñhþþþt:]ð¦0 ó÷÷¯««>|8‰DÊÊÊš3gÎùóçy¬žœœLÜu›””$xªçæ~ uò¤=‰$%ôØ8Ž»ñâ³€G ‹t÷‹Åb2™ÄYNg±Xrr=Ü`aXuuµ¦¦fÇBÇ›ššº<Ûc0íííd2¹ÇB®\\\8ç(+V¬¸r力›çÛºº:eeåN÷k´¶¶ÊÊv÷&46›ÝÜܬ¨øßù߸nB¨±±‘L&‹‹ÿÏŸõííí¡úúzƒÁ)´²²Úºu+±|áÂ…_~ùÅÏÏØ@ÇKKKÕÕÕ;Ãikk?þ¼c ::ýñL.œ¯ÐYrr^qq­­-ŸÏØ<cdDY¶ìáFÕÑ¥KÏNŸN:vÌfÉ’./Œô§‚‚___ …¢¢¢²{÷î½{÷*)))((lÙ²!dccãêêJ¬Ìb±(Jdd$BÈÛÛ[__ßÐÐP[[;99™XáîÝ»jjjššš3gδ³³Û³g§£—/_Ž3fçÎ:::ÊÊÊvvvmmm\ B¾¾¾DÅŽË0™ÌQ£þóNš„„###CCC Î岘˜ …¢¨¨hbbòù‚d2ùÏ?ÿTSS#®ª555uµi'NÔÒÒRQQÙ¿?Žã222W¯^ÕÖÖ&‘HUUUVVV×®]û>>Ħyxxà8neeµvíZζ¯\¹’F£½~ýZCCãÆ\7­¹¹™B¡üúë¯---%%%úúúĦ™™™ÅÇÇ·µµijjÆÇÇÁìÛ·¯      ))iáÂ…“'OÆq¼¼¼œD"ÅÆÆâ8Nl¯¿¿?gñ477—––’H¤bóÅÄÄ ¸þÝÿ¸¡°°°^ý›¼Àÿhnn5Êóúõ|Ôe³±yó|׬¹$ô¨8bb2µµ9y2¡ïºè„÷¼RXXˆãx}}=BèÁƒÄW’’’/^¼hkk#“ÉÄÓÕÕÕÙÙÇñ¼¼<)))__ßŠŠ ÃÚÛÛq?qΩ¦&§åY³f}žWjjjˆo}}}§M›Æµ°«P‰¼²jÕª={öìÞ½{õêÕêêêîîî8޳Ù윜 ꪪ?~¬ªªG¡P8Õ¹æ•ââbb…eË–íÝ»—ë¦Ý¼ySEE¥¡¡F£Ñh4//¯ ›öìÙ3¢z§¼"%%%'''''§¤¤4kÖ¬ôôtÇýüüôôô8!yyyÍž=ûó¼âçç7vìXÎj‘‘‘¥¥¥\ˆîñ‘Wà:ÿãþý,‹ýã_ñQ7,ìeNNåž=‹…!%¥ÀÝ=ØÅå»mÛæ÷Q‚ $$$BcÆŒ! ÅÄÄØl¶ŒŒŒµµuDD‹ÅŠŠŠrttD=:(((<<\[[ÛØØøþýû¡ââbSSSN›œ+T ªªªÄ²ŽŽqÇ×Ân¸ºº9rÄÇÇ'(((999 €J¥Š‹‹ÇÄÄèééMŸ>ýÔ©SÆ C%&&š™ý÷Õ;Ó§OçÚ ºº:±@"‘ ×M+,,¤Ñh“&M222222º~ý:ggÒ$î¯ýã?ˆ$T__ÿìÙ³)S¦»¨czzzÄűNŠ‹‹ÇÇù¸|ùr]]]®?„ÐA^àܹ“>wîx%¥^OçÕÖÆøãxGG“±c;Ó Enîǵk¯,X0ñÀ«¾h_p¢ ļ!GGÇèè褤$‰DŒ™WVVΜ9óÕ«WUUU¶¶¶nnnmmm***ÕÕÕœê%%%lnn&†OB©©©DâáZÈ#"%fddìß¿?66¶¨¨(::š¸ã@^^>;;›³rfff÷ÛNl/×MSWWWVV.---+++++KOO?{ö,ïqr¨ªªæääp>¾yófĈ\W#Î]Ä9Íç?„ÐA^࿪ªš^¼È[¾œŸ!÷«W“i´ö_~Y ô¨BUUŸ/ŒG9}ÚA\œÏyeDËÜÜ\FFfÇŽÄQ8==}É’%õõõjjj‹-"n;wnZZZFFB(--íó)ú1 DåææÞ½{wÁ‚]¦¦¦†„„µ:.#„jjj¨T*•J½ÿ¾¦¦¦™™YII‰’’’¡¡!B(**Џ¬giiùþýûˆˆÇŸ|XJJjôèÑúúúfffÆWäää.\8bĉ´jÕ*‹ÅµÇq//¯qãÆmr–‰ñUUÕ… æåå_™››«©©éééÙÛÛ¯_¿žB¡”——ûøøˆ‹‹S(”Q£F988p_!¶Çq{{{®6-88XNNNWWWRRrÍš5t:³iÄ ¿üò ‰Dºyó&Žã§NâºÃ}}}%$$ Èdò† ˜Læçã+8ŽŸ>}ZRRRCCÃÈÈ(::šS½ÓÑ=ãöbÞ<ß;{÷_ˆàëûÀÐpOCƒðû ËÆ&à믔—× ½q^ð’WxtæÌ™9sæt,Á0,;;;33ðŽåõõõ999l6ÛÉɉ8Ž’““p/--­¯¯ï¦oEEEœ£<•J%«®®ÎÊÊ"ÒºÚ4â¶±²²²®*6440™ÌÛohhxõêUmmm÷«µ¶¶u*üü‡èyž‹à?òòªþý—úÛoËz[±¾¾åâŧ›7[(*v÷ÜvïŽxó¦4:Ú][[Iè÷›ÆÆÆìììÓ§OOQpˆ‰‰}¾¾’’’’RwÛ«««Ëcaoéééq–µ´´ˆ55555µ^µÓÕ¦ÉÉÉMÚÝd¦Ÿ¬ì~µo¿ý¶ÇÕH$RÇ-êê‡.È+üGDDš¶¶Òôé½ò%œ9“$%%áìU^^Þãj,.!ñE΄ ò êØlìþý¬uëÌ{U‹Jmuô¨µOVÞ¿¯ðô¼½qã÷|\‘ëS©©©¶¶¶]/&-­++;IJJ»ºú2޳»^ WÀP÷÷ßùµµ4KËÞ];}:I]lm-´Ç&[]\®|óÞ®]‹„Õ¦Pts‡qeechè«T*µqÚ4}+«³ü½d &WÀPûfÒ$}ý^òó[9a‚¶à­ Žãi¾¾jjšgnÙ2WI û½y ]ñño--{ñâ­[)Ÿ>µ å=+ÕÕÍÛ¶…¬Xñ½ý Á[–ììÊÝ»ogf–ØÚNß¾}>…ã(€WÀõþ}EIIïÁØlìâÅg«VÍPW—°kÇwî >\úðá6%,ííÌ€€¿NŸN22¢Ü½»õë¯á^/À?È+`ˆzðà­††Â×_ózkoLLfYY½«kï¦{áêâÅgOžäDEm Ã*‰‰ïöí»óéSëþýKœg6ÐÌä0D=xµpáD11^çI<{öÑ’%_÷êŽd®>|øxôè½íÛ|óž€M ®¶–¶{÷íû÷³–.rðàRÁOÅ@WÀÐTVVÿþ}ÅV<®ÿüyîû÷~~Ý̽È:µqã ccÝ-[æ Ø”àâãßzx„ËÊJ…†º}÷¡¨Ãƒä0=xð–L&͘aÀãú.<15-ø¨ƒ·w •Ú”ä!ÚkMÍÍí¿ÿ~÷æÍK˯ÿøÃFAAV„Á€Áò ŠÞÎ;žÇ‰X k?ιre­€>}úáÚµŽ::J6%ˆ—/ Ý݃ÛÚW¯º,X0Q„‘€Á èÀÓÔÔž–V<>¯‡ÔÀÀ'#GªÎ;AÀNwìýᇉK—N¤A`~òäCkë€qã´=ÚIô8_CÎãÇÙ8ŽÏžÍÓˆBcckddÚÞ½–ââ½ qß¾Hƒuì˜Èæk©­¥¹»ÿýâ–®í IDATwþV..³x¿a€Þ‚¼†œ¤¤÷Ó¦"“I¼¬|õj²¤¤ÄÊ•½¿ëáÃ#"Ò._^«ª*šiðŸ<Éqw–—'ÅÆn4IG$1€¡®ƒ¡…ÍÆ?ζ°ÏËÊL&ûúõNN&rrÒ|÷X_ßâáno?cáÂI|7Â7Çþrt¼0c†Áƒ¿@RýÎWÀÐ’‘QR_ß2w.Oy%::£¾¾ÅÙy¦ =îÚu[ZZâàA^ïi¢ææö­[o=z”}ðàÒuëz1m3‚€¼†–¤¤÷#F¨Œ£ÁËÊW¯&/Zd,È4Y±±oîßÏ sëÿGëß½£®[w•NgEFnþ曑ýÜ;Êà:Z’’ÞÏ›ÇÓ]™™¥oÞ” r²ÒÐвoßGG“™3ÇòÝîÜI·´ô×ÑQzøp'$ÐÏ ¯€!¤¢¢1'§’Ç‹`×®%¯5mÚ(¾»;p Z\\lïÞùn†ûøÜÛ²%xͳŸEu§Êà:B’’Þ“H’¼w)ÇÿýîÑ{÷Zþþû2§Å@ˆ`| OŸ~31ÝýjL&;"âµ££‰„?ry{ß>\zëÖy|ÅØ ËÝýV|üÛ³g¬¬&÷uwô ä0$<}š3uª>™ÜÃðC|üÛššf[Ûé|tñòeá;é—/;ó}>}juv¾òþ}EHˆ›‰ ¯¯¼:>}útàÀIÐ'‡0 Û¾};磊ŠÊ¬Y³fÏžÍcõiiéåË—#„êêêΟ?ÿúõëÆÆFccã%K–ÌËÓ»¨kkk:tìØ1iiþ'?ígp ~8Ž?}šËË`7o¦XXŒçã}Ž,æåinnØ×¬TU}ZºôLII]tôH*\Ñh4:.xS†ùûû×ÕÕ >œD"eeeÍ™3çüùóº |\TT#ø»Š»WYÙhm}vØ0±¸¸­‚̆9@°X,&“IœUÐét‹%''×} ê««555;â8ÞÔÔ¤  ÐU-ƒÑÞÞN&“{,äÊÅÅ…s޲bÅŠ+W®¸¹¹q¾­««SVVît›Fkk«¬¬,磓“ÓÈ‘#ïÝ»Gœs¸¸¸,X°ÀÖÖÖÂÂbæÌ™\㩯¯g0!mmíçÏŸwÜØÒÒRuuõNgcl6»¹¹YQq@ü«€ó0ø%'ç**Êëv¿Úkh(|ÿý¸Þ¶_QÑxêTâ–-sGŽTá7ÆžQ© +V &vûöÆ/:©ÈÈÈøúúR(•Ý»wïÝ»WIIIAAaË–-!WWWbe‹E¡P"##BÞÞÞúúú†††ÚÚÚÉÉÉÄ wïÞUSSÓÔÔœ9s¦Ýž={8½|ùr̘1;wîÔÑÑQVV¶³³kkkãZˆòõõµ°° *v\î„ÉdŽõŸ¹ ŒŒŒ 5448—Ëbbb(Š¢¢¢‰‰IYYB(---55ÕÏϯㅬ•+Wš˜˜\ºt‰k<_ýuUU•••Õµk×ŠŠŠi4BèÞ½{Ó§OWTTܺu+›Í.(( “Éþù§ššq™®©©IX¿ÿp»Õ«/º¸\é~ƒ5iÒ>?¿|´ïârÅÄäP{;“¯èxRVV?cÆïææG«ªšú®ÁOÚw¿N~~>BÈÉÉ©¦¦&((!diiYUUõðáC„PMMMxx¸²²2ƒÁÀq>>Ħyxx\½zUZZðNûÁÝÝÝÔÔ´«x455ããã9»«¹¹¹¼¼œD"ÅÆÆâ8N¬éïïO|»råJöúõk 7nþ ÎWÀ Çfc/_š™õp'XRÒûúú>FìŸ<ɹ?ë÷ß—ñ2íÊÊê­­†—¹sg³ºº|õÒÏ~ûí7UUUKKK„ÐÆÕÕÕçÍ›'))™››kiiÉb±=z„ŠˆˆX±b…ŒŒ Žã---/^¬­­õôô$¾ UTTtww—””\¼x±‰‰Éç}:UUUU{{{§f x§¸¸˜h §§WYYI,««« $‰•-È+`{ñ"OMM¾ûkjšŸ<ɱ³ëõÄòªªšúîÃùùÕ+VhhÃÂ~VRihh`Ç싉ög”bþºâ¼Ÿka1œwTÿ"QØÚzT·,WU5]¹òvË–Yý4Šž“SagwICCÖ×w“´´x׆VVVbbb;vìpvvÆ^š‰‰‰¶¶¶µµµ óçÏÇzfÍš•””HHHøøñc;;‚\»v bmmÝYbLLŒ··7VŠóPUUUZZZZZúüùs;;;eeessó¢¢"}}}@```~~>Š¢666éééþþþ(о{÷sLAAaÇŽ»víòññÁf?gffÚÙÙM:uÉ’%ù#,,Ün~Á‚Ÿ? ÔÖÖ>{öÌÑѱï/}ŸÐ¯£7È÷…Ngêêî~øð#ïl3füµgowoßî3nÜ‘ÖVZO½ãEFF™‘ÑeË.67·õ‡ý~‚ÿqû¶¶6E±Wgnn.vJXX822;Þ½{7 ++ ûÈd2ÍÍÍEDD&Nœ¨««{ýúu,ýøñã"""zzzÚÚÚæææíÆí%$$æÍ›§¡¡A$W¬XÁd2¹&¢(ºÿ~CCCÌ&û·g#//?oÞ¼œœ씕••‚‚‚–––““ÓºuëÈdrII‰‡‡'“É:::ÎÎλvíBQA3gΈ‹‹ ‘H$aaá5kÖP©TE;ógÛ¶mD"ñÁƒìq{E=== ‚®®®””Ôúõë çÅDQÔÉÉ «±—÷¨—@] e>|È%“Ý «yäIL,$“Ý’’Šºe9=½TMm»¿|ïäNAAÕØ±‡—.½ÐO¢Õôá;ëÂ… Ó§OçLA$###99¹ÝܪÚÚÚÌÌL‹åââÂùVŽŽÆFÚ)Jmm-ÄSPPPWW‡—––bŽUVV¦¦¦bòÀ “ÉLKKKHH`ËoêêêŒö“ ëêêââ⪫y=Ò¼]ë"!C™rTUex/+yü8N__yÜ8nYvw14$÷xCI|ýÚàèxU^^òεDbÿ†„œÔ××gddœ?þôéÓœé8ÎÀ€KäP^.ÔÕ¹,]âšØ]´´´ØÇ***Ø‚‚‚‚—M„„„FŽìt~GG¸.r”––611é« ÔÈPæÃ‡\ ^3Áh4fpprw#E¾}›ñÏ?Y¾¾û<ŠpMM³£ãUqq_ßRR½ o% P(”­[·þúë¯Ø,dþÑÓÓ“•ýw¯LIIÉŽ¯`®‰ß‘ÁæOŸu2da0XŸ>ÛÛóšåžÖÜܶdÉxþͲXÈñã¡s玶°ÑkÿCcc›³óu:øë›ýÕ-Œããã{PððáÃíì„……u4Þ1ñ;2Øüé ®@†,))*•>i’6­%$¼y“áã³wüJþÉÈ(ß´éžÍؾ0𤥕úøÄ%ÕÔ4¥ºfÍT›1<æàA~ ®@† ••MEE5j”ÚÙ³+úJ¨˜ÚÚ–ÀÀDŸ¸´´Rmm…µk-/¯¥%ÿ½ý‚  ®@† 11yBBøñãµ:Ë”´xñx¯ùQQÙïßç>yòkŸøÖÔÔæì|]JJìöí5<ºé'‚¾Ÿãçÿôi `öl£Ã‡m»Ü†ò£u2‰/02R6L”ëÙ””â¼¼Êóçù´vòä‹éÓ LMu{ï¶þ±¶¶åéÓß+üWUUÓýûîßÿPYÙdjªû×_v ŒÿÃbBºê d_À£,((IKK~ìX¾‹„…¥%&>}êÖ{¯PݵëqRRa`àUÕîmxüII)¾u+2$äÓ°a¢ÎΦÎÎS`Do ®@†--´ôôÒM›fp=‹ hppòŠSøéºAQÔÓóży£Ç×ì½cgφ&Ý»çÊcöóàÅB޾͸y32**ÛÈHõر¥Ë–Mø1ãöCº ÔÈP#1±ÉDLL´¸žýð!÷ë×[[¾¦ ?}š’ž^vöìŠÞ{õâÅçS§^zx,·²ê›Áÿþ£¥…æå}ëVTUUÓܹ£Ÿ<ùµOú!?PW CøøMM¹Îöœ ý4j”*?a¸X,äÔ©—¶¶ãFŽTé¥K99nnV­2[µÊ¬—¦ú•æfÚíÛQ×®½c0˜«V™ÿü³…õ×APW CØØNÃM"úêÕç5k¦òc' 1?¿êÖ­5½ô§¾¾uõꛆ†*îîKziªÿhi¡y{Ç^¸ÞÚJÿé'‹Í›gHK‹o§ ‚ ÔÈ‚ÉD’“‹lll¹ž‹Ë¯¬lâ'€1ƒÁúûï×vv&½\1Îd"®®w˜LÖÍ›?ÎYÅX¯×¥Ko™LÖêÕPQ }ÔÈ";ûkK mâD-®g_¼ø¬££ÀTøøÄ––ÖuwâŽ>˜X´E^~X/Mõ9 ëöí¨sçÂuuúË/SI$¨(>ê dHñé…H>œûðÉ«W_øÙÅ‹Á`?¾bÅMÍ^M¨}ü8îîÝW®¬„ðŸ>M9qâéׯ ®®V›7ϬÅ4AÔÈ"5µxÔ(U® éSRŠ)”šyóFwiäÉ“„ÊÊÆÍ›göÆ“øø‚Ý»}·oŸÃçܳãÓ'Š»{HllþÂ…càö”þê dHñéSñäÉÜí_¼HUS“=Z· ¹téíÒ¥ÔÔz>ª´´níÚÛ3gŽÜ¾ÝºÇFúœ²²ú³g_?z3nœFp𖉇Ύ/AÔÈÐÁ`ef–»ºrŸîõâÅçùó»\ùìYJaaµ—×Ú»A§3]]½äå%/\p$³h4æÅ‹o.^ WU•¹yóç¹s»n´A =ê dè–VJ§3ÇŽÕèx*?¿*'§âäIû.\ºôvÁ‚1ºº=ŸväHPNNÅóçÛ$$¸(`""2xR]Ý´gÏ‚µk-ç´4ÈPê dèðéS±¤¤×Í?BC?)(Hv6OŒMXXÚçÏ%§N9ô؇ààä{÷>\»¶zøp¥é+**ŽêïŸ0{¶‘Ÿß&¸È20@] RS‹Õðx.]O/^|ž;w´Pñ/^|3{¶Q—c0‘—W¹k×cWש Žé™…¾‚ÉD¼¼¢Ož|.//ùàÁº3 ¿¯? ¨+¡CJ eút./Ð’’ºÏŸKºÜ2::'>¾ 8xkÏjoi¡­]{G__ùÀ›žYè+ wî|\TT³eˬ͛gˆˆÀ?sÈ€Â×¾FÈà‡J¥çäTp])òüyª¤¤˜¹y»Cž?nn®Ç#À>oöíó¯¬l¼reõwÀ RéGŽ-^|L–ŽˆØ³mÛ(*>s!—/¥L&2f ]yñ"uÎ#Þ¯ûädJtt¶¯ïÆžÕ~çNT@@âƒëz3;¹—ÄÆæïØáS]Ýäá±ÜÙ™¯ þê dˆ’R,--®¡!Û.½ªª)!¡pݺi¼‹Ÿ;6nœ†…ňTœLùý÷íÛ­§M3èAñÞÓÔÔvòä‹;w¢fÌ0ôóÛÔY,gd`€º"¤¤«ÑñGzXXšˆaÚ4^»ždg O»}»'¡‹ëë[ׯ÷23Óss›Óƒâ½',,mÏ?&“uùòª¾]ÛÿñãÇâââ>4hÌÌÌÔÔøšÒu2DHI¡,XÀeVxxº…ÅpÞž?®¯¯<{¶Qêݾ݇ÅB/^\ÉuZ¿ÒÒB;r$èÑ£˜¥K'¸»/‘••è[ûgΜñ÷÷ï[›ÁåñãÇöö]¯PW CƒæfZ~~UÇÁƒÍ{‚Öׯ ¡¡ŸNrèÁ€„—×ûׯ¿øølìówz—$%mÙò°¦¦ùòe—Å‹»¦Ù3–/_îçç×OÆ!D·þ: ®@†))Å‚vÔ•˜˜¼æfïÕ7oFÊÊëÁ«9+ë«»{°›Û ‹.fšõ-L&ríZÄÉ“/ÌÌôž<Ù¬¬LÈÚ!.º ¤¤P$;ŽW¿y“®¯¯¬®Þ~0ŸMs3íÁƒ›7Ïèîä`¹iÓ}CCrï÷hé¹¹•[¶<ÈÊúzèíÚµ–pÒdu2øü¹„ë ã7o2¬­Gñ(èíÃ`°V®4ínGŽ––Ö……í°Õ*(Šzy½ÿãrXØÎÞD0ƒ@ú¨+¡@zzYÇÝ…)”š¼¼J`,rçN´£ã$™î޼xñùÞ½W®¬âÑê[êë[·o÷ KÛºu–›Û;2˜ºxètfAA•¡!¹]zxxº¤¤õó/^|¦PjÖ¬±ìVuååõ;w>^¹ÒtÑ¢q=q·û$'S6n¼G¥Ò>\7u*¯ ÓC†††#GŽxxx‰½ÝÑAíÛ·³?ÊÉÉYZZN›6ÏâÞÞÞ¢¢¢K—.=vìXuu5–(%%µdÉ’qãúýI¨©©ùûï¿[[[Gµ{÷nMMÍþ®´ÇÀ8.'+ë+“‰ª´Kó&}Ú4?í¯]{7gΨnu(!úÛo$ÿ}qÝí(ŠÞ¼¹xñy--ùðð]?š¨š››Ï;G£Ñzo AsçÎÕÔÔ 6ŒH$¦¦¦NŸ>ýêÕ«|ŽŽŽ‰‰xyy¥¦¦PXX8sæÌuëÖõÞ=¤¥¥7.22ÒÖÖvéÒ¥éééFFF©©©}bÜÈÈ(""¢OLý 8>>±šš; g"•J×ÖÞåãÛY©ää"2Ù-&&¯[u9óJKkgZZi}íUUM+V\UWß~êÔ  €Û±|ùòåË—ó™™Á`´¶¶bÇmmmÍÍÍ]a±Xåååí©¯¯g,))ÔÕÕ±Sh4ZCCC»R\;zˆˆˆ`§,]ºÔÄÄ„3Ouu5‚´¿Ô---(ŠnÚ´i×®](Šêêêž={–}öÚµkââ✵s5B¥R©T* <.àÔ©SmmmY,gÊÌ™3Ù),,dç “É伞ÊÊÊ/_¾ì²àñãÇüØGQ¶W Off¹¾¾r»=í£¢²i4&eö—/¿56VïlÓb®¤¦Ÿ=ûúÀ›‘#Û·úœ¨¨ì™3OT‡†ºíØ1wà]òI^^ž˜˜˜§§'™L–““Û»wïdddH$Ò–-[vvv®®®Xf&“I&“Ÿ>>‚”––JJJb#D"ÑÃã¾¾ûjìöÊÁƒóòòòòòÂÃÃçÍ›7nܸΌ`þ›››¿|ù’J¥vÌÐåô÷÷ÇãñØìHII ‘H EQ»çÎKKK´µµayfÏž}æÌ¬"{{ûæææøøx%%¥û÷ï£ýÓ^ºxŒ]½Ñ.qÒ$wOÏ9t(`üø£t:“ÿZÔ×ß[\\Û3'ù¤±‘ºvímuõí/†÷kEüÀ¿®äçç£(Z[[ xñâÛe~ÿþ=•J•’’ÂÞ\®®®?ÿü3Š¢999"""žžžeee‚`oÀ3gÎ(++³-[ZZvÔ•ªª*쬧§ç¤I“¸&væ*¦o¥ßæ IDAT++V¬Ø·oßÞ½{W­Z¥¨¨¸uëVEY,Vff&‚ òòò>|úô)™Lf766f늈ˆˆ„„„„„„ŒŒŒ¥¥ebbbgF0ÿ###;ËÐå|øð¡¸¸8ƒÁàú¥N:¥¥¥Åþ¸ÿþiÓ¦ñЕÂÂB,qÉ’%@a?Ò‘ššæªª¦vSYY_‹‹k;›aÜÜLóñ‰ýå—©üÏÖÍ¿u+ÒÝ}i¿†ÁOK+µ¶>”TðëæÍÜ»n'ÊÊÊ>ü[ôÇb±ÄÄÄ–/_îïïÏd2W®\ ÐÓÓ»{÷®¯¯¯ªªª±±ñóçÏ………fffl›ì*6$I^^;VSSÃ&eqMä««ë‰'<<<îÞ½}éÒ¥ÒÒR<¬¥¥5yòä³gÏ ÂÂÂÌÍÍÙ'OžÌ>>yòdssssssmmmddäøñã\`Œ=šwP__¿µµõãÇœß";;ûرc(Šr:¦¥¥…õÈq‚ *†¢â·Y*D"‘N§ó¾V=ê D°IO/´› öæMº¬¬Äر\‹øùÅ3™ˆ“Ód®g;ÒÔÔ¶e˃ٳìíMzé-üýlmÏ++“^¾Ü1qb÷û^pvý³Á~äV®\N$±y½åååqqq6l R©rrr•••ìâEEEí 655aÃ'€˜˜Lx¸&ò ö’ÍÏÏOJJ:tèPhhhAAAPP„„@RR2##ƒ999™·5®FøÌÀãHJJbÒËæìÙ³ùùù8N^^>33“þéÓ' oQ½Y,–˜——×±"öÝé ®@›ôô2Iyùaœ‰ÿü“5mšAgcÝ÷ïX²d‚´´8ŸU>H¥2Nžä+’k Ó™»vùþöÛ£5k,ýü6)*JöSEß +++11±;v8;;cïµÄÄD[[ÛÚÚZ…ùóç#˜5kVBBBRR !!¡Ý/t‚ ×®]dgg‡„„X[[w–ãíí•â<TUU•–––––>þÜÎÎNYYÙÜܼ¨¨HFFF__ˆõJÙØØ¤§§ûûû£(úîÝ;Ì1p5Ò­ \‘8yòäåË— N¿sçέ[·ÜÜÜ ,øüùshh( ¶¶öÙ³gŽŽŽÚÚÚÁ××àççÇ{³aaáÆÆÆ.Ýè|ö—A ƒ7·GW8SÚÚí¿zõ™Lv{úôSo턯_.<;bÄÞ/Rû©ŠÃÿø Ö•½žrss±SÂÂÂØ¸Š¢»wïdeea™L¦¹¹¹ˆˆÈĉuuu¯_¿Ž¥?~\DDDOOO[[ÛÜÜ¼ÝøŠ„„ļyó444ˆDâŠ+˜L&×DE÷ïßohhˆÙdsväååçÍ›—““ƒ²²²RPPÐÒÒrrrZ·n™L.))ñððÀãñd2YGGÇÙÙ™ëxð€÷pÜòã0gΩßâL‰ŒÌ"“ÝJKë¸æÿå—; ry)p¥¦¦ÙØøÐ¶mÞ½õ²>.™8ñwSÓc™™í—q ºµ~…7.\˜>}:g ‚ ÉÉÉíVrÔÖÖfff²X,ìŇM"‘P¥P(µµµ<{LAA{aGii)æXeeejj*&W=6Ò­ A¥RSRRòòò:©««‹‹‹«®®æL¬¯¯gÏhàM]]]góØtKW`ˆÃb!99k×NåLŒŠÊÖÓSTQá²oEEãë×_þþÛ‰Oû{öø‰Šúii}PPÒöí>S¦è^¹âB"ñÛ)'pÔ××gddœ?þôéÓœé8ÎÀ€Ë¶Í22222¼&G¨«s 0Ê5±»hii±UT¾Ø)(((((ôÒH·2t†˜˜˜±qû xÒÒÒ&&íÿH$~7P–îã«¡®@˜üüª¶6F»É`QQÙ––Ü—CÞ¿ÿAJŠÈu[ÉŽ„„|zþ<õÑ£õ’’b}à+,òçŸÏ/]z³víÔ£G åaN …²uëÖ_ýÕÆ†×îjÑÓÓ“•ý7¬§¤¤dÇW'×DÈwê D€ÉÈ('ðÇ+±SZ¿|)åº' ƒÁzô(ÆÙyЍh×}]]Ë¡C+VL±²êã\õõ­6Ü‹‹Ë¿tÉeÉ’þÚçqð`ll߃‚‡ng',,¬£ñމïÔˆ“™Y®££È©QQ9SSÝŽ™_¼H­ªjrvæk«•C‡ñxüÁƒ ûÊUŒ‚‚*—mmŒàà­£G«õ­qdu"ÀdgÕ×WæL‰ŽÎ3FëpÅ;ѳgñ³cJxxz@@â;kûvØ#>¾`ÍšÛÊÊ$?¿M·¶„@† C¹c2äÉÍ­ÔÓûO”û¨¨KËsfg‹+øùg‹.m66¶íÙã·lÙDÞMv—Çã–/¿4eŠnHÈV(*¡ Ôˆ Âd"……Õœ»§”–ÖTYXpÑ•;w¢µµå-,†wiö÷߃i4ÆÑ£‹úÊOEOŸ~¹m›÷ªUæ×®­&EúÊ228ý`A¥¸¸†Ngr¶W"#³ÄÄ„'NÔj—³µ•¸cÇ\,¾¢£s||b¯][-'7ŒwN>¡Ñ˜Û¶y?{–röìŠ~   ®@•ÜÜJ§­ýïÚ‚¨¨œÉ“u:N÷ ýÔÖÆX¶loƒ--´;Ï›7záB¾&"wIMMóªU7 k|}7uk£—Áƒ¿¿—bÜ}pŠ¢¢š¢¢µµ¡(Ú{ABPW ‚Jnn¥’’{q Š¢>ä¬[7­c·cæÍ3î² rêÔˆê‰ËûĽÂÂê+®¡(úôéoœâ'@lß¾ÝÎή¯¬54г²22ê²³ZZ˜$’ˆ¾>iÁ‚E$ì 8£Móê DPÉË«ÔÓûwåJffyeeSÇAûÜÜÊÄÄÂ]»6ð¶–‘QvûvÔ‰Ëú$ìcJJñªU7TT¤ïÝsUPÔ8’¦¦¦¦¦|MË6F||AddvTTöçÏ%""B“&鸹™ZZŽ=Z­ZBAÔˆ ’›[idôïJûóH$q##ÕvÙ<ø ®.knÎkÄAÐÝ»}GVsršÒ{Ç¢¢²ùåΘ1·nýÜçkõ‚ââÚþÉŠŠÊ~û6£¥…¦©)gi9bóæÓ§&ú½½ƒô;PW ‚Jnn…­íXöǘ˜¼É“uÚÅÆg0XOž$®]kÉ{x/¯è””â—/wô~y?¿ø;/Z4îôiGþ÷ 0¬¸¸‚·oÓÃÃÓsr*$%Ŭ¬ô[:mš’’Ô÷ö2 @]$õõ­µµ-œ“Œãã :®<žZ_ßjo?‰‡©ŠŠÆ“'_lÚ4£]œ±pófä‘#AkÖXº»/þA:yjjš?|È K{ý:­±‘Š5M´™6Íà‡’U'PW Inn€=É8/¯²¢¢±ãœ«GbfÌ0äÛ˜ÍÁƒ$qëV.!Åø‡ÅB¼wïñcKùY})èdg}õêËË—Ÿ?}*%˜™éíÙ3æLC ¹ïíäûu"äæV‰"ì…ë11yââ"í"nQ(5ïßçܺµ†‡·o3ž=K¹wÏU\¼ç³’ètæÖ­_¾üré’ g×ÜAÐÄÄÂW¯¾¼xñ¹  JAArΜQnns,,†ÃÅžN ®@’ÜÜJöpHllþ„ Zí:^¼½cåå‡Í˜aØ™*•¾ÿ“%KÆÏš5²Çž44´þôÓ­Ì̯>>¦LáïRСјqqù¯_§=}ú©¢¢QSSnÖ,£9s–›šê0`„ PW I»È`11yŽŽ“93°XÈãÇq“yôòŸ>ýª¡zôhÏ·íª¨hX±âzmmK@ÀfCÃÞÏ *Z[éáái¡¡)mmŒqã4Ö®jm=ŠsW„+PW I^^åâÅã°ãòòú’’ºvm…ÈÈ슊FGÇNGìóó«nÞŒä §Á™ÇÏ/~Â- Ý 1BÉÅ¥‡ëþ>}¢¬XqÍÐ|çÎZ))bÏŒ h4fddVhè§—/?·¶Ò'LÐÚ·oÁ¢EãwQ'ä;u"x”–Ö1,--yìcllþرœCÇMMm¯^}á“8$$ùŸ²BB¶ölุ|—&&Ú7oþ,&&Ü ƒƒõömFpprXXZ[cʃmçÏ7–—ï›°›¨+ÁƒB©hj~›Ò“7ož1g†ÐÐO‚t65‹J¥;êà0i­Ôþþ}îO?Ý43Ó»~ý'~¶4„ (_ò©±‘:y²Îþý ,Ó'1l ü«€üàÕ &*++¨©iÎË«j·rÅß?aΜQíöxúô«¦&Úþý=Ùc8,,mÝ:¯yóŒÏŸwÄÙP%%uÁÁIÆV¡¼v­¥ \té[ ®@ ¥FSóßN0<7q¢6ûlqqmll¾—×Z®e ¾ ×÷ «'88yëÖ‡“þüÓ®÷_’úúÖ§OSüüâ ¥.cc3fÒ$ Ýü@]J »,!¡ÀÀ€,%õoxG_ßx99‰iÓ ¸–íñpý“' Û¶y»¸˜;¶TPb´0¬×¯¿<~÷î]¦˜˜ðüùÆ»vÍ53.X¢8 ®@¢¢33=ì81±hÂMγ‰K—NàºlåÙ³”wïz2\ïåõþàÁ'7Î8p '½gOFF™·wl@@bCuêÔçÏ;Ï;Z §@¨+Á£¨¨[É`°>.qvþ·ñ_Ÿ_µ|9—étæñãO—/ŸØÝáúK—Þ?þt×®yÛ¶ÍéãýNcc[HH²Ÿ_|||ŠŠ´“Ó”U«ÌÔÕe¿·_ ¨+£±‘Z_ߊõƒ}ùRÚÖÆàl¯øùÅëë+Õ~À•+UUMû÷/èVu§O¿Ã¹£(ºoŸ¿Oìõë?Y[êCç{OEE£¿üýû)”ccõ'–/_>ÈCPW …R‹u‚UW7S(5ìAx*•ž~ð M»ü(Š>4a‚Ö‚Æ€P=x0ÀÛ;öÚµÕƒGT}ÿ>çÁƒ/_~&ElmÇ®Yci`@þÞ~A \€º0ŠŠj44䉉…8nìXu,ýÕ«/4cÁ‚1íò&%$¼|¹ƒŸAlE ¼wïÃÅ‹+çÎÝçÎ÷€êêæGb<øPZZojª{îÜŠùó±æ28O'DÀ(.®2E˜X8|¸;XK``’¥åˆv«èi4¦‡Ç3{ûI\gˆµEÑC‡ïÝ{ñâÊE‹¸ Ò 0 wîD?{–J$Š8:Nrq1cÏPäØÙÙ}o bjjº}ûö~­ê D@Q´¼¼^MM”TÄîkhhýçŸ,OOûvùoÝŠ¬©iÞµk.?–º{÷ý… ÎßWTh4fHHòõëÿ¤¥•Ž­vìØÒ¥K'ôf›äÇßßÊ”)jjj]g… ,111P Ôˆ QSÓÒÖÆPQ‘f±””âÅ‹ÇcéÏž¥âpÀÚú?=WÔ‹߬_?L–îÒòñãO½¼¢ÏŸwfÛx «>Œyô(¦¥…fm=êða[KËßË™^²mÛ6{ûö2ùî LSê D(+«¨¨HçæV¶´ÐÆŽý¶—WPPò¬YFœQÂçÎ…áñ¸gtiöøñ§×®½;ÞyÉ’ï *‚¾y“~ëVTTT¶ººìæÍ3'cÑš!Aê D(+«Çápd²tHH²ˆA__PUÕôñcî•+«8s–—×ß¹}àÀÂvbÓ‘'ž^½qîÜŠ•æfš¯oÜ­[Q……ÕÓ¦éß½ûËŒ†0($Dк$JKëää$DE ©©%#Gª`Á%Ÿ=K!ÌœiÈ™ÓÃ㙢¢”‹‹oƒÏ®\‰8{ÖiéÒ ýèwŠŠj<øøàÁǶ6ºÍØÛ·×`  ®@‰²²z@JJñ˜1ßf?ž2{öHÎ5e‰—/»ðžëáñìòå·Üý—ëVÔ‹©rr’¿üb¹f¥Œ ìò‚ ) ®@‰ÒÒzlÐ>=½ÔÉi ¶¶%&&ïâEÎlü:z´ïø+7nüsñâOOû:œ|õ껌Œ2ccõÓ§—,™ ˆ;N  GŽñð𠉽4… ç¬\999KKËiÓ¦ñYÜÛÛ[TTtéÒ¥€ššš«W¯ÆÇÇ×××ÛÚÚΚ5«—î Nàc $ÊÊêUT¤sr*Z[鯯ê€çÏS !ÎN°rß½ËýêÕ«|ŽŽÆ¦öæææN™2%((ÈÂÂÂÅÅ¥¥¥eîܹ¿ÿþ{ï=„Àö D(+«›;wTjj‰¨(aÄeÀ³g)3fJHˆbPuw™9ÓТÓºþþ >Ù·oÁúõÓúÕÛÔÔâ›7#ƒƒ“I$¢“Ó”µk-••ù¦üƒÀd2 Öª ÑhL&SB¢‹^AA*++••ÿ3…¢hcc#‰Ôéå¥ÓémmmRRR]&reíÚµì6ʲeËnß¾½aÃöÙššYYÙv¿cZ[[ÅÅÅÙ]\\FŽùäÉ€´¶¶vpp˜9s¦……ªëë륤¤ðøÿü ikkˆ‰ ÒÀÕðD``±ÊÊF55™ÔÔblо¡¡õÇ\ÎØ-ÁÁÉ_¾”ìÝÛé&+/_~Þ¾Ýû—_¦nÙÒ_],–¶hÑù¹sÏdf–?¾,.î𠡨°ÉËËóôô$“Érrr{÷î=pà€ŒŒ ‰DÚ²e ÀÎÎÎÕÕËÌd2Édò“'OîîîÚÚÚúúúªªªÑÑÑX†eee GGÇ}ûö±+Š>|øÎ;ÕÔÔdee©T*×D€§§çÌ™ß6Yàwµ¨¨æÀ÷+W"–.ðñãÁ7~‚¢Â›ßÿ]^^ÞÆÆ°iÓ&EEÅÙ³g gggÛØØ0™Ì·oßüýý—-[&&&†¢hKKË7ª««wïÞõññ‘––Þºu«°°ð‚ LMM;VtôèQ•M›6=}ú´³Dkkë;v`g9(Š¢(ŠÃáH$Š¢7oÞ òèÑ#{{ûªªªììlQQÑÌÌÌ·oßJKKïÝ»—D"­ZµÊØØÐÐÐ ##ÓqÀOTT”Édr½8ÁÁÁt:}Û¶m(ŠÊÉÉ999`§<<<¬­­íìì:^¢žÞŠ>¶W ƒKËÉɃÕñöí²µ•væÌ«+W"p8œ‹‹¹ªªÌׯ ¡¡ÉÁÁI55ÍkÖXÒÒJW®¼1uªþ™3N}»ððË—Òë×ß%)+“¶m›ãâbÞåJL6F‚u >KÄáp,KLLlùòåþþþ3gÎ |üø1@OOïîÝ»gΜٽ{·‘‘‘»»û’%K ÍÌþ]¥Äî¡bC"‘äåå±c55µêêêÎyàêêÊ_ÉÉÉ144ܽ{·ªªjppð¥K—ðxü˜1c„„„aaaæææì‚“'OƼª¨¨hkkk÷êÏÊÊÒÕÕmWƒÁäçç777ýoh¢Q£¾íÚ€%r½Dƒ¨+AÍ”)z§O¿ê2‚ --4€·w ‰$ÖÖÆÀãñ,ëàÁÀÊÊÆE‹ÆÙÛ_;VãêÕU}8 +..ÿÒ¥·aai#GªÀyÃ= ÝX4Š¢ØÁÊ•+ííí—-[F$±wzyy96‚RUUuíÚµ 6Ì;WNN.))‰]¼¨¨HQQ‘Ó`SS•JŦÄÄÄ`ÂÃ5‘O0ûùùù‡ŠÇ%˜BHJJfdd°3'''OŸ>}òäÉbbbwïÞ]¿~= ²²òüùóNNNÏŸ?ÇÚ1,Ö·OyyyX-²²² ;[YYÙÒÒÒÎ“Ž—hÿ ƒš‰µ°Eõ|ÒÒB;{6ìòåˆÿ7qЋßlÙòpøp¥;wÖð³m ƒÁ:r$ˆk ‰ÁÏ/~úô¿/¾P_ßz÷î/aa;á¼á>ÇÊÊJLLlÇŽÎÎΘ%&&ÚÚÚÖÖÖ*((ÌŸ?AÀ¬Y³0iIHHøøñc;;‚\»v bmmÝYbLLŒ··7VŠóPUUUZZZZZúüùs;;;eeessó¢¢"}}}@```~~>Š¢666éééþþþ(о{÷sLQQÑÍÍm÷îÝ< Ñh!""ÂÄÄdîܹVVVÚÚÚÁ××àçç‡ õÏ™3§®®îáÇ(ŠR(”ùóçûøøty‰ ƒÈ¤#¢¢„1c4ºU„ÅBØ¿y‚fe}å3Î<ƒÁúå—Û7nü”ÔñlSSÛÍ›‘S¦Û¹óñˆÊ/^lÞ:{¶?;†Aº _±bEzzúÏ?ÿŒ¥Ì›7O\\œL&›˜˜ØÛÛŸ8q‚H$š™™:tÈÔÔtøðáööö'NlgGBBâõëךššcÇŽ555ÅFõ¹&†††þñÇX)Îc€½½½šššššÚêÕ« »wïðx¼ººº¶¶¶ŸŸßºuëvíÚ¥ªªzâÄ UUÕµk×:99aŽ;vøðáuëÖIHHÅÇÇ?>!!áŸþÁ´aÍš5 ·o߯DN[[ûÖ­[6lÐÔÔÔÓÓ=z4çxOg—h€ãü „@!§N½¼x1œNï´Á‚¡¡²·÷Fq‚étæš5·##³X,T[[>*j[0**<øpãF$‚ “7nœ®¢Òuìý÷øñãÞÇÉ¿xñb@@64¢hVVV[[Û˜1c8å¼®®®²²røðá?ýô“²²òÉ“'±ô÷ïß/X° ¾¾¾¸¸xذa222%ö˜ÂÂBiiiiii@YY™LÆápUUU_¿~9r$6è†ÅbeeeÕ××1B^^þéÓ§t:[ßÐÐÀa QÌ IDAT`0Ø£>---ÊÊÊmfÓññ‹“ïçç׃oÊ?p|2Ø™2E÷Ì™®‡X0ðx‚pù©Äd²23ËmmÏùúnâ* lQa2@AAUXXÚœ9£ÒÓË®^N–‘wuúË/SÙ;TBúúúúŒŒŒóçÏŸ>}š3‡Ãuœ­ ‘‘á-êêê|&v---ö±ŠŠ v     ÀesO!!¡‘#G²?.\¸}ÌuQ§„„DÇFg—h0u2Ø™8Q‹@b2»n¯àñ8pÓ†v (®¨¨ÚÛ;vÇëv§0QùçŸ,ë[AìXèíÛÑ‘‘Y††*§N9,^<¾[#=Þ@¡P¶nÝú믿b³ùGOOOVV–ýQRRÒÄĤ]®‰G/ÑûÁ ÀÂ…g“’ŠxçÂ‹Š 1HÇ!wÏd"ffzü±ÄÐP¥ÝY*•îâr#66Ÿ-*lFVÛ·o••>Aé}Õés`?ò©SõSSKx4Y„„„ˆDa{{“{÷Þs¦ãñ8E ÉG.15m¿P@¥Ò¯ÇÇvO"‰O›Æ¥×¦µ•^RR[RRWRRWZZWZZW\\+"¢ú½ý‚|O ®@SSݳg_wvVH/%%êë»iÕª›L&»ýÃ㊊̡C6 ŽáÚàhm¥;;_KL,b/à„ÉD¢£³SS‹±ÀÉ?8ÕÕ͘l””ÔaB‚×Õ}[TA"‰«ªJ«©É«?Þ„!‚ Ôˆ0q¢–ž³IA à ",,$--¸%/¯²¼¼ $„ݺu¦««UgkVZ[é+V\KJ*ä:óÿZ„.\xsãÆO}ý…º¦µ•^[Û¢¦Ö«©J= ¡¡µ¨¨¦¨¨†B©ùúµ±²²±¨¨¦  ª©© Ë@"‰kjÊijÊMš¤ck+¥¡!§©)§¥%/%õïN'ÇŽ-`·!ƒ ¨+€H=ZíÓ' ‡( ””H¥¥u8NQQ2 `‹ººìþýþ/$„ß´iÆÆ3† íÌ`cc›ƒÃåôô²ÎD‡ÃxA_¼øœŸ_¥£ÃenO?ÑÜLóòо|ùíúõÓ~ûmvTA§3ËË(”š¯_0åÀ„¤´´» ÂÂB**ÒŠŠRÊÊ$KË+WšjjÊ)*J©«Ëò¹ò#ó]¡Ñh ßËA§]ôˆïHIIɇ¾·}Œ‚ ›C,"‚g0P++ÙGêdeEÖ­Óýø1<$„™ƒÇ£&& s窓HMÏŸwfŠJe^º”^RÒ‚Ãá„„p(Š"ÿ<'!A ‘DääĤ¥EH$I$,쥌L§ÕÌÌ̸.Ghll»u+òÊ•ˆ¶6‚°JJêzYQCC+»Íñÿ&HCee#…R‹MØ%(+“°6ÇÔ©#0!ÑÐSS“êÕ¢éŽëÞ!ƒ’’’ΖÂô!ÿ™VYY™žžÞßUUO|___‡ïíE#*ª)!1'âñÂ--ÉB“˜P[€ ­))+!!©¦¦÷Lf-o;x¼˜´ô\<^AšX¬fif±šY¬Áþo€ïÒq®TSSÛ½{ïÏž §Ñèì&”…Å_ßüäÚyUXXÕØøŸÎ+%%)%%)MM9LH45åúi-œ>7˜Y¾|ùw˜6xÞ‚ÂàÔã!6ƒ¼µ•þî]æ°a¢QQ9û÷ß O71Ñ––¾ÍÌ,70 _ù¤Ý;·®®åöí¨«WßÑhÌvÞ(”ÿÙÅ:¯****)”¶”•ÕcS«………de%””HššrXç&$zzJÜy5Äž=Hwã+Á@\\dîÜÑx<ÎÜ|8‡›=Ûˆó¬ ˆ '55Í^^ÑW®DÐéL®Ã<åå G••Õc“¯ªªš°ôaÃDÕÔdÕÕeuu¬¬ôUUeTU¥ÕÕe¤úv ¤g@] ØK³—ýþƒ¦&ÆñãOoÞŒd±‹r Vllž††ü”):ªª2r˜„À@2AÔdà(+«'‘¦=šÈbñÕSäáa7vl÷Â9C ßÿémm £ÒÄDAOOh!t¶sz?% xú½½âíí-**Š‚$TWW;v쯿þíËÉ£NŽ9âáámÉ×KŽ;Öq§Ø£GbÁÉû>TttZ[Óuíí훚Ú>}¢$$&$$$65µáñ8AˆNÿ¶¿2@(-…º<ú¬½bddÑ1=:::&&¦¯jé li4Zbb"‚tºÊºŸ`0Xaai))Å\ïw¡¹¹ùܹs4ZßÄóðòòJHHhù/ý7éh`II1KËÛ¶Íyøp}V–GTÔ¾¿ÿvrrš>±¼­õžÇ·»³Á¾¦‹‹KUUv›lll***^¿~ ¨ªªòõõ•••¥Óé(оzõJJJŠJ¥r½ûeeebbbçΣÓéOŸ>%»ví*))ÔÕÕq½Ý#® Š¢ººº¶¶¶pàëë‹¢¨À=*(Š?~ܳ; ÝÖ•œœOOϲ²2AÚÚÚ°töŸâÓ§OÉd2;¿±±1¦+\yðàœœ\]]]sssssóþýû­­­QÍÊÊ×××wppÀrž:ujĈì‚Ož<¡P(\‹c/‹ªª*,§§§ç¤I“Pn/‹S§Niii±mî߿ڴiØÙÂÂB,qÉ’%à}M°ëV^^ãÆ?óæQQÙ¦®¾ƒSN­®äçç£(Z[[ xñâvJXXøýû÷T*UJJ »b®®®?ÿü3ÚÉÝ?s挲²2Û²¥¥eG]iw;:»G¡««kffö3/^ÄN Ö£‚B]üt{|EOOïîÝ»gΜٽ{·‘‘‘»»û’%K83„……™››³?Nž<™‡µüüüæææÑ£G³SF1bÄ¢E‹¼½½±W$ö×khhÈΆM0ë¬8‰D’——ÇRÔÔÔ:N%bÛätOKK ëêA$‰Db»q£vÔ×·>yòÉ×7.;;‹åŽ¢hg‹ÝPܽûþíÛ {Oqq1ßÅ 6FB ÇÇq8‹Å[¾|¹¿¿ÿÌ™3±Áõîš™™±mêèè´«…ëíàó±Y½z5×ñzT „n¯”——[XXÄÅÅUTT888lذëg#))™‘ñï{399™‡5EEEYYY …R\\\\\œ˜˜xùòeÀÇÍÌ̶oߎ¢(@^^ûyˆqéÒ¥’’’Ί755±½Š‰‰éø¦Ã——ÏÌÌdüô铆Ʒ5hìq]tHG:â:Q‚ý•W®\N$±¨q\ワœ\ee%»xQQû ƒ¹Þ>ïQ—ÀGtp6^øé 7n\MM Š¢‰‰‰òòò­­­(Šª««c]Þ±±±8ÎÏÏAˆˆ<õƒ}üøñÑ£G˜öq~~¾˜˜Øýû÷)**š0a‰'ZZZôôô8P^^.++{öìYE“““ñx|PPŠ¢ÚÚÚ ƒkq¬sãï¿ÿFQ4++K[[ÛÓÓ“ÓCvçF||< AQ´¦¦FSSóÖ­[ØYvÿž““~<Îë&ˆý`Ø×ÄF›sss±S‘‘‘(вX,55µ‘#GîÝ»;Åõî¿ÿ^LL,11EÑøøxQQÑŽý`ínGg÷ˆëC‚¢¨®®îü‘û_ÚÚÚîQAa?ä ÛºÂd2ÍÍÍEDD&Nœ¨««{ýúu,}Û¶mD"ñÁƒ(Šzxxàñx2™¬££ãììŒý±íß¿ßÐÐËÌyüðáC uuuaaáŸ~ú‰F£mÚ´I__ûs½wï‘HÌÈÈ@QôüùóÂÂÂJJJØ[ƒkñèèh ‰yóæihh‰Ä+V0™LNÙ/ E=== ‚®®®””Ôúõë Fu…ýQ€Æíyë Š¢»wïdeea;»ûÇÑÓÓÓÖÖ677o§+oGg÷¨³‡DW—ËÖôqqq÷¨ PW ?ÝÖEÉÈÈHNNF„3½®®ŽÁ``Ç•••©©©Ø_i—`ÓiŠ‹‹»ÌÙÚÚZPPÀ»xtt4‰DBQ”B¡ÔÖÖvæ!gb\\\uu5?®r¥³ë–’Bùý÷ cãCd²›¦æN2ÙMUuÛ Ñ>¹páÂôéÓ9S:»ûµµµ™™™,ËÅÅ…óõÊõvð¸G}Åà|TP¨+€ž¬‹ÄápÓ9×…)((((ð»u«„„ÄĉùÉI$µ´´ø,®®Þ~ù!וkÒÒÒ&&&|9ÚMŒÕÕ´å\ÙõõõõçÏŸg¯ÿÀèìîËÈÈÈÈðÚŒ½ãíè,±O¬G¥œë"áˆÀ1ãKJJÌ?Ÿàñ8SS]SSÝ'–½{—©¨ØõÚòÁ…BÙºu믿þjccÓ­‚zzz²²²ì\oÇ ¹GƒÄ Œ¼¼Ê¤¤¢¤¤¢órs+¬];õ{ût›!¨+ÆÆÆaaaßÛ . µÛj0cll߃‚‡ng§ãí$÷èûºÑÒBKK+MM-‰‰É{ÿ>§¡ŠÇã„„ðØæaa!55^M@dp2u´äçW‰‹ùøä]¼è‘—W…¢¨ˆÉD°Ð–‚"È¿+Ÿ˜L–ª*Ôˆàu8ÄÄ„……ãã«Øûz±£âwEl¯@¨+ÈÀ¡¢"ÝÐqúôÚ¯_I]îC Ø»×OSS^UUÛÐîC  ®@Añx‹…ú÷’’Âk×.ܰaš—Wô•+t:“Éä²Å‹°°Ð”)º¥¥õ11ù¥¥‰UUMXú°a¢ÿ—iUU55YUUiuuY©Á0ò#u"´¶Ò߽˔ŽÎÙ¿Axxº‰‰¶´ô·_î™™åäïëaw‘“¶cÇÜ5k,oߎºzõÆl×v!“IG.f¤Ó™åå  JMQQM^^UDDfYY=6Ô/,,$++¡¤DÒÔ”ÓÐÓÔ”SR’RR’ÒÕU”€[£B.ºòîÝ»wÒ÷`Û§DE5‡ ›ˆÃñxaCB“˜P[€ ­))+!!©¦¦÷Lf-o;x¼˜´ô\<^AšX¬fif±šY¬Áþooó/22;vÌ]·nÚ½{ïÏž §Ñèì¶‹††|øÞ^ô1ÏžQÞ¼)CTTÏ` ŽŽ:åÉɉnÝ:ŠD©ª¢?ž‚Ç£“&)Λ§N"‰ð0E¥2/]J/)iÁápx<@Q”½Ñ0“ H"rrbÒÒ"$’‰$¢£#)#Ó—¿÷ÍÌÌ:nd hll»u+òÊ•ˆ¶6‚°œœL==í{SQCC+&3ªÓPYÙX\\‹­%(+“8eFSSîóç˜Í›züا7UC†$?~Ä¢ðñΆë22˜?ÿïOŸ( (PU•)-­Ãáp**¤€€-ê겎ŽW"#sœ~Ó¦7Î6¬S1hllsp¸œž^Æ^,ÒG àEQ¹WG‡ßཧ¹™æå}ùòÛõë§ýöÛìþ¨ëRcË [uJKë°ÖRUÕ}£‹ ? X[ê d(@¥ÒGŒØÇbý;¸M àQ°Xˆ°0^JŠèïÿ+…R³zõ-P€^\\dëÖY®®V""Ü[[é+V\KJ*ä:fþÿZ„¬­GݸñS_¡®im¥×Ö¶ ðuE°çÕ@~ 9EÀd"X ƒÔ×S—.½ ¢"­ªúm´€ÅBššhϦL9æçÏõÏ@\\äÑ£õ&hBÕËd²¶l™Ù§_…_ÄÅE~ñ €WU•ÑÑ‘BÑNWÕ@ ]u"|ü˜ÇãíÏb!mK–\œ3gÇdAÐÊÊF77okëÓ>äv,ˆIËĉÚBB\Œx ‹ÆÆýª@]‘‘Y>Þ¼Ùed¤ºsçc“ßOŸ~ÙÐ0Ð \~Lš››Ï;×Ý7og¤¥¥7.22ÒÖÖvéÒ¥éééFFF©©©}bœŒŒŒ"""4-11Ax5Á;âååÛÂAg‚Á¶ß­ËÓ-—:®·‡ vbbòDD„èt~¥\ÇÆ d` ìí½QVV‚kAaa¡[·~^³æväÿØ»ó@¨º÷àg†a&Û`c˾”­"ÙB*)K‹5-êÛöªPJÛKiyUÚ(íz[ˆ¤liS*dJ ‰”¥²dɾÍýýqßß¼ó2Œý|þš9÷ÞsžuŸ¹÷œ{N§ŽDZš„.j ¬,êïïøçŸ–7n¼¼t)áÂ…çvvÚ6Á™†QííímmmÐÒÒÒÞÞÎÅÅø¦¡R©ååå"""ô…‚üþý›Ásš¨ÖÖÖææf^^Þ^ »rvvž2eJDD‹¸ººnݺõÉ“'´Ö‹ŠŠ„„„ÐBÓÑÑQWW×i‘7†…555¼¼¼hý´ùýûwú•ªªªZ[[bbb‰‰‰ôŸÉÖííí]]]~Æ_¿~  OCwª¿ç8&°rÒ9x½t yL&•ÿ×9©°±aõõå##]ºK*(ôªÅØX AW×9ô ñ¸»Ï{õj¯‡Çü²uu­_ }žf|*((Àãñ¾¾¾ EPPpçÎ{öìáçççããÛ¼y3ÀÆÆfíÚµèÎííí åÎ;€ýû÷KKK+**Љ‰%%%¡;DGG“Éd}}}{{û]»vÑJKK“——ß¶m›¸¸¸€€€½½}SSÃB€¯¯¯‰É?ã÷h¯?|ø°oß>ú“iPP»»;ú:66VXXX[[›H$ºººvttðòòž9s†L& üþý›a! ++KEEETTTPPÐÓÓ틌Œ$“ÉÊÊÊ芫eeeVVVW¯^-,,$‰õõõÌ·ÞÃßâÑ£GJJJŠŠŠÂÂÂ[·nÐ×OÃ0Ψ¨( …B$uttŠ‹‹ûù¯¡ ˜W ­¥¥ýíÛ¾¾ÙذôSØ`±EE‘ÆÆVfŽÅáØ._^½v­áÂ…S»nåææ\³ffJÊŸÇŽÙ}þ\6þI++ÿqÛ±ßÒÒòîÝ»œœœóçÏ9räÝ»w_¿~}ðàÁ™3g*++mmmïÞ½ÛÖÖˆoll\°`AAAÁ©S§²³³+++]\\vìØøñ㇗—×ïß¿wíÚuçÎŽúEhÚóóó›››KJJŠŠŠÒÓÓ;ư ¦¦6þ|ô@ÚëÜÜ\,«¢¢B¼„„„™™ ´´ÔÆÆæÊ•+?þ,,,Œ‰‰ ÔÕÕ%&&§¥¥}þü9::šaa}}½¹¹ù’%K*++ß¾}|éÒ¥âââ¥K—ÔÕÕ]¾|yûöí_¾|yóæ°°pTT”““•JEg6éSë€Ç¤SSSؽ{···wEEÅ›7o._¾œ••E«Ÿ†aœMMM®®®üñGLL «þmÀ¼h¯^}íK‡9†‹‹ÓÍmÎÌÂáСØM›LΟ_QXX±jÕ•;¡ÁáØ¼½þÿáŒw°±ÑŠ÷ˆŒÜL$NX¹òòœ9ÇÆgǾ··7‰DBWªvvvš3g‡ËË˳°°hoo„‡‡/Y²Ç#ÒÐÐpéÒ¥ÊÊJtkhh(‘HtqqÁáp ,ÐÑÑéÚо}û888DEEïÝ»×]¡©©)í*„öº¥¥Çw7]^hh¨°°°¹¹9@TTÔÁÁ!""ÝtôèQ...MMM]]ÝÜÜ\†…QQQ­­­[¶lADPPÐÁÁáîÝ»aaaöööhááá8Ž%­ÿüùó#¶¶6*•zóæM[[ÛŠŠŠ¼¼~¾Ô××gddÓ666vm¨­­µ­#RXXˆ&AJKK»~Àâ,//ÏÎÎFs¯`^Æ KK¿Ý»ïäæþ PÜЋ’àà)©muuÍ´}’“ó)·„„O=Ô’**ºåܹgƒ0‚ åå¿Ïœy¢¡±WRÒ}ݺ«¯^A£Á’¼R]]œœ,//ݧ»Ë+ôBC€É°MDE‰ß¿WËË sqq¢Ïµ˜™©vtPãã?ÒöÑÑ‘5Kyÿþèúçííµ÷í³:p :8¸óÝ|–#“y6n4IO÷Ò?Q¯¬L±¶Öôñ‰íùAH³g¹¹…„‡¿Ô°éMŸ.sáÂʤ¤ÝÖÖZ‰S¦ìsq ÎÍý1d@Ð`ƒyMDEù«ªš›ÛÔÔ$>~üަ 33ÕÖÖö§O?Òï¹cÇüÊÊúk×^ö\áÎ œgmÙrçÎÐ¥€¤¤àž=æéé^{÷Zff~31ñ]ºôB\܇NËbBÐhó 4šˆŠùù³V]]¢­­ãÓ§Ÿ2™GOO>2ò?£ïEDøV­Ò?qâq¯3ÛïÚµÀÙy–›ÛP§77çªU‰‰»®][ƒ ȪUÚÚNž|\VÖÓ<ƒ4ÂÁ¼&¢¢D@IIµ¬¬'mFá… §<}šÓi—ÙX,æìÙg½V»kׂ?þ0vs ¹{7s0Âî‹™={RHȆ¤¤Ý‹M»r%QSÓÛÎîܸÑíàú+Ðh" À…Ç㾯Áb1YYß–/×,X ¾kWøƒïìì¦Óvæå%lÞ<ûȑؕ+õЄԃݻ͸ºÞÄ`0‹1˜ÌxHI‘öì1÷ð0{øð]PPŠ“Sàĉ‚ŽŽ3ìíµ¹‡8›!nùº›¦¶}ûö r$Ä2 &,,CRR`Æ Ù/_*óV­Òpr²¿}[üþ}©µµ&ýþjjâaaÅÅUóæ©öZ¹|uu£O¬Œ YI‰2XŸ¡7llXEE­… §´¶v&Äçäü 'HJ t7// ýþý»Ó,ë„âåå4i’­­mÏ»aà…64ºØÛŸã?~Üîñã÷«V]ùðá ‘8ýzãÆ ¬¬}d2ýþ‘‘Y›6Ý¿¿EMñœ²ôñôŒ¸víåéÓŽ —`z--í¿¿|9!#£PNNÈÎnº££ú‘!hd‚ý+Ð(3q¢`QQ%`êT)A^¿þ§‹eΜÉx<îÞ½·ö·²š¢¥%½gÏ]f~Ba0˜­X¡·yspT˦wNNv ¨(—‡·Î˜!{òäã)Söº¸¿{ÇÔ z0¯@£Œ¤¤À·o¿$·”)+ë+ZN pÌ;¹k2À`0,~ýú[LÌfêGWmY¾\ÇÅ%øÁƒw,}@ÔÔ$޵}ýÚûÀÅ>|75=>oÞ‰  &—„ !ó 4ÊLœHúþ½}reêÔ‰YYÿ.×±páÔŒŒÂ®kŸ¨¨ˆÙØhy{G751u Æ`0‡-qpÐÞ°áZtôˆ¸j¡ááÁ/[¦óôéö;w6IK“öì¹3mš·—W:ä‚F˜W QfâDA*)-­L›613óm0##%>>Ãë’Ý»Íëë›Ïë}Ì1 ƒÁøøX¯^m°qcPHH*«‚g!ÙsçVdfîÛ´iV\Ücã# œ¼~=ù÷ïæá ïàx0h”!8Μyjb2IZš„Åb¯\I´²š‚ÃecÃUÅÅ}prÒït'ƒñó‹³¶Öäå%0Óƒ12Râäd÷ôŒäåÅO›&ÅòÏ2p&pLŸ.³fÍÌ9s&ÿüY{þü3tð“’"a±ƒ>x ‚º‚×+Ð(ÃË‹'' ],“&‰ô·Âll4?}úɰO{ýz# …èãÛ§æ6n4Ù³Ç|ïÞÈãÇ 0òAEë}ñõµ­©i\¹òòô麇~Q4”àõ 4úÜ»÷–`h¨ÈƆ}ö,·­­cΜÉè&QQþÈÈ×MMmÆÆJŽbcÊŠ}0s¦‚˜?óÍiiI“ɼ‡Å45µÍœ©À²189Ù'O³±Ñ27×hkë¸};# àizz!¤¤H8Ûp 0¯@£ORR^uu£¥å@~~yrrþÊ•z´­55¡¡ikÖ²±u¾——~ýú[dd–££NŸî©«KHI‘Š©¨¨36V‚‡ˆDâ62RZ³ÆPEE<7÷Ç… Ï/]z‘Ÿ_6a§„„¼? *x }$%i·w¦M“ÊËûIßYmk;½ªªáùó\†Ç<¸¸  âÆ^æ9îjñâi—.­ºy3ÍÕõæhY’ ‡c33S½vmMvöþ½{­¾}ûµtéMMoOψôô/Ã4fÁ¼>’’‚ß¾U¢¯§O—¦R‘ŒŒÏ’ââüÚÚ2·og0Ÿ{Ó¦í³± ¸víeeeýpn0¯@£¨(?ÇFË+ÚÚ2oÞÑ?KÏß7O¥»[a ##Å={îô¯§DCCòÖ­?rr~8:^ìuݰ‘ ‡c35U9{vù»w¯\YM¡ŠÑÐð²²ò¿|9^Á@ýó 4ú°³c%%¿|)GßêèȶµuÐ& DÙØhef~ýò¥¢»JúÝRU¿{wSIIÕÂ…§¿¯é_%#''ûœ9“ýý³³œ?¿’Báóñ‰ÕÔÜgoþÆä²28m>Ô0¯@£’œœÐçÏÿä …(!!Ð首‚ˆ_hhZw5HK“×®5(,¬œ3gòx8±ŠŠ"ffj6ëéÉãplIIŸ/_N¸|9áíÛↆ2™‡›?ÜaBC ÃÌ¢ß4-ZtZY™ò×_ÖèÛ+W}}~øp°Ó¤ŠÞÞQ÷ïg§¤üÙÃd‹T*²páéŽŽŽ˜·Ïɘ”ôùÿ»¢®.¸š‡g<žR‹‹«^¼ø”˜˜÷ìYN}}Ëĉ‚  ÆÆÊÜÜœÃ4èÆþï)h¬’•ÊÏÿwH˜ŽŽ\mmãû÷W^qtÔ))©NJÊë¡*,säˆÍû÷¥7n$<0}}ùÈH—üüò… ýþO~HH,[¦sáÂÊìì·nýan®‘]²aÃõI“v[Yù<ÍÎ.†¿hÇ0x½VçÎ=»téEVÖ>ô-‚ S¦ì]·ÎÈÙyV§=­¬ü)¾óçWö\áÁƒ1AAÉ/^ìæxxEE¿–.½ÐÑA ^/#Cx…ƒ-%%¥¸¸xðêÿý»5'§æÓ§Ú¼¼Úúú6>>>ssI>>ŽÁkTºººâââ 6 4:=~üžBqûý»‰Vâì|ÝÞþ\×=CCÓ$%Ý++ëz®°±±EGçàÊ•—Yá¯_õææ''MÚ“œœÏª:µµõPŽ08œ07÷tAAk ÞÅnݺÅðß¼VrrBú™Z RS š›Û:íia¡A àÂÃ_õ\!Àqü¸}\܇ÈÈ,–D( À¾ÉÈHÑÎîìõë,¸Ã6ج­­‡$…Q[[ÖÕ¥UVÞ¦R›‡¤Eˆõzø‡ó 4ZIJ rp°Ó?uo` ÐÒÒþêÕ×N{N˜À±xñ´7’{þÏÐÑ‘]¾\gÏž»¬šÓ—““ýÌ™e®®sví ÷ôŒ =È AcÌ+ÐhÅÆ†•’"Ñç11~ii2Ã.z''ýÂÂÊ„„žzïQ{öXL˜Àáéy—Uqb0w÷yçÎ- J^»öïÆFøt:4ÆÁ¼brrBŸ?—Ñ—Ìœ©˜È y((ˆÌ˜!ó÷ßI½ÖÉÃ?qÂ>:úÍýûÙ, KË)áá32 --ýJK«YX340¯@£˜¢¢Hnîú}}ùìì†k¢89é?yò™ew ll4wïgíÚ*Ó¦IÅĸµµuXXøušÕ‚Æöá‚úOI‰âïÿ¤¹¹ Ç¡% €ää33ÕN;›™© ñ¥ìÞmÞkÍû÷/62:¼o_ÔÉ“, xâDÁ˜Wg狟>zÔÖÆF‹…•µµµ{÷îõññ!ºw‡y{öìihøg-jqqq]]]]]]ô-•Jݺu+mOAAA###ZIHHHxxxMM±±±™™Ù´iÓ)æÊÊʃ9r„“³Cã1ÜÆ Yee ó—,FFJÚ»v…——× 4VFÈdžÛ·—,Ñ\¿þš·wÔ¨XÜ×ÛÛ›D"YXXœ…„„æÌ™ƒÃáòòò,,,ÚÛÛãããáááK–,Áãñ‚444\ºt©²²ÒÃÃÝJ$]\\p8Ü‚ tttº6´oß>QQQggç{÷îuWhjjêîîŽn¥ÝÕäÉ“ÙØþ]½ = b0>>>A._¾LkâÓ§O .ÌÈȰ±±C»^¢¢¢Z[[·lÙ‚&-‡»wÿ½–e¸5,,LBBÂÞÞ-<<‡Ã1Œ-44TXXØÜÜ **êààñÏ ÙGåââÒÔÔÔÕÕÍÍý§ÃïçÏŸé´µµQ©Ô›7oÚÚÚVTTäååqrrÒv¦Ç0Îøøx"‘¸sçN>>¾+V¨©©u÷2ŽƒF7eeʯ_õååuBB<´BCCųgã;:¨ W@Y±BÏÛ;ÊËË’ŸŸ‹™&öï_”œœ¿}û­k×Ö°,n:8›µ––´‡GØ›7EçϯÐ20ƒMDDÀÎΗ—G 1LGG·¶¶711‰ˆˆ¸uë@NNîÚµk'Nœðð𘑓ŠÝ¢£#»té…€€§=ŸDF,CCC<ïîîîè舞333---«ªªÈdòüùóÑ1µ³gÏ~õêUVVàÕ«W)))ê¡R©.\äååEGG›ššvW˜šš‚EÿP]]]ZZZRR’œœl``@&“7mÚDÛZQQQZZZZZzÿþ}===MMM‰´cÇ´¦££# €‡‡GEEeîܹÕÕÕÁÁÁ‚ÍŸ??44”VíVVV999QQQ€ˆˆˆãÇ£W{8®Sü‚ Þ½{¨ªªŠEïž1ïÛ·oüüüŠŠŠh[_¾|aøOˆaœ?~ Gäùóçèߥÿzî™ ‘ÏÞþœ«kp§Â]»n›šïîââ* ‰­wî¼b¾•––¶Y³ŽZYù··wšÉZT*5 à©„ÄÖ5kþ¤!Î 1ßoßÜÜŒ zZÌÏÿg —€¾öðð|úô }ÛÞÞ®§§ÇÁÁ¡©©)++{ñâE´üСCrrrÒÒÒzzzúí¹¸¸ÌÌÌ$%% ÂÒ¥KÛÛÛ"²{÷neee´Núׂ‚‚´¼¼üúõëKKKÑMhΠ!‘HfffŸ?F·¦¤¤())qrrÊËËóóó&&&¢›‚ƒƒ¹¸¸$$$p8œ““SKK ýøÝ®[ñ÷÷ÇápÂÂÂJJJ‘‘‘h=[¶l!AAA´~uA|}}ÙÙÙeeeyyyׯ_ßÖÖFÿ…#âàà€v§3gÜÖÖfhhH&“¥¤¤Ö­[G¡P^¾| þÛoß]œ>>>X,–B¡ÈÈÈ8::¤ßæhÔÛ¿?jÎßN…qqDE·üüYÃðAÖ¯¿6wî±>5ôî]‰¤¤ûùóÏúd_½|ùYCÃK[û@fæ×!héãó+=;}ú´±±1} •JÍÉÉyýúu§ç*ªªªrss;::–/_N"KJJBûÒ‹ŠŠªªªz($íííyyyÉÉÉ]%A‡fuz¥ç­………ö¬®®nkkëZ˜žž^YYÙïÈ i©”––v}¥‡8ËË˳³³ÑlÝ«ò ¼zJJ”¼¼²N7µôõåñxÜóçŒG…þøÃøÝ»’ääüîvèJEEÌÝ}žO쇥ý—9ººrOŸzÈË -\èüøÃÑ2Á~MMMJJŠ¿¿ÿ–-[èË1Œ’’’††ƒ¡/GïÛ0ì°AIHHðóó3SÈZlllòòò:::]g=A‡f1^'±›­AJJªÓžD"ûЩPKK‹þJ«™Éí IDAT¯¤¤¤ˆD"úZTT´ÓÞsœd2YUUµ»æÁ¼zÊÊ¢­­í……ô…x÷¾7ë°³c7n4‰Šrùþ½ÆØøÈ;¯†²uêÌ+ÐXÀÅÅ)++Ô5¯àplzzòÝMè‚æ³´œráÂs¤ïó¦¬\©gjªâêz³¯=4§¡!ùø±û¢EÓ\\nnØp½²²¾÷czŽ æôð ÓÿK4¹ºÞ,+ûº¡SyHHêž=wß¿?8aGwÇæåýœ5ëh`àjSS•îöéNMMãܹÇde…‚ƒ×c±=ýg$ÏŸçzx„56¶8°xÑ¢©ý®'%%e «9A㌮®.ÃçCa^ƈÀÀ„cÇ}üx°Ó/©ªª ¯³gW˜›«÷pøªUß¿×<|¸µçb ½yS´páéÍ›MÜÝçõ9nVhjj=qâñ¹sñÆÆJGŽØŠŠ‡% BÁû`С¡!Y[ÛØµ‹^@€KKKúÁƒìžwuóî]Ibb&¨×ÐÜ·oáÉ“{îÈ<Çž=替}û5kÖ‘  ø{F0¯@c„ŠŠ8ÇÖµ‹`f¦÷¡µµ§_’3g*úû?é_ëNNzK–hnÜxcÈžhéJKKúñãmŽŽ:»v…ÛÛŸÔ)ý!¨0¯@c''»¼¼pv6ƒ¼²`ZCCk¯£¶\\f''ç§§é_>>Ö¼CüDK'x<ÎÓÓ2:Úµ²²ÎØøÈñãû:~‚æhìPW—|ó¦¨k9…BTW—xðà]χëêÊMŸ.sút?/Y&Là \Ÿ_¾tÿj`•)S$=Ú¶gÅÅ‹/Œô0ù& ˜W ±C]]";»„áSèffªd··S{®aÓ&“§Os^ô0CF†ìëk˜0ìÏ”°³c׬™™°KSSjùòK+W^.)éüÐ( ˜W ±CCC¢¡¡¥  ¼ë&ssõªª†ŒŒnç DÍž=IMM" ¾ß1XZj¬Ze°sgx^ÞÏ~WÂ*¼þþŽ¡¡ ÊŒŸ=笄†Ì+ÐØ¡¬,ÊÁÁΰë^Zš¬¨(Òë¨0ÀƳbcß~úÔÿ¬°oŸ•¢¢ÈЬÑÂŒ™3ãã=6n49vì¡¡ááû÷{ÿ h `^ÆŽmÒ$Q†y0¾Zllv¯p,P——>þÙ@¸xÑ©¦¦aÓ¦ 25$û–-s_¾Ü­¯/¿nÝUsóS½^ºAP¿Á¼)êêÝå33µ?jºÛJƒÅb6l0¾{7s #†EE‰«Ÿ?Ïõõ}ÐïJXŽB!=j»…““}áÂÓë×_+*êvFNê7˜W 1E]]âÝ»b†½**b' ö:* °xñ4¾3gž$’iÓ¤|}mýýŸDE½H=,§®.qçΦ‹W¾{WbdtÄÇ'ö÷ï¦á S`^Æuu‰––öî–½š7OõÞ½·½V‚ñ¹¸Ì Mëa‚}fØØh­^m°eKH¯ICoÁõ/vîܹàÆäéÓ?þ°¶¶q¸ƒ‚ƘW 1E^^„››óÕ«¯ ·š™©V0Ó'oo¯-))8ðµUöí³ÒÕ•[³æo–Ì7ÌZ8Ûºu†^›7›&jjî?tè^M Ì.Ð@Á¼)ììØ©S¥ºë”ÖÔ”æef@ÖÍmNxø«®øËƆ=sfǶzõ•ž'’.\\œ7šddxíØ1?,,]Kk¿§gDEEÝpÇb0¯@c––tws±`±SS&Ú.Z4MAAäĉGŒ‡HœpýúÚ¼¼;vÜ`Uƒ‡‹‹sÍš™/_îqu‘©§wèÀèaœë ÕØöíÛ7Ü1@+Q©ÔÀÀÄ¥Kgððà»n%8žš›kHÜ=׃Á`¹df¦J&ó $$.yyŸXn ÉT5¨88اO—Y¹R@à Ió÷òáC)‰Ä#))0Ü¡A£ Ì+ÐXC"ñœ=¯¡!©¨HéºU\œ?$$ ]G²×ªäå…Ÿ>Íyû¶xáÂþ¯—…’“bcÃþõWŒ†ÆDiiÒkTìZZÒkת©‰§¦~9vìadäk*QV¦àplÃ4 À¼58ÛãÇÌš¥Üu+ƒ)+«½wïíêÕ½.á…Á`„…ùŽ{hl¬L¡ t±,mm™ââª'+ ñ°¶Á†Á`de…ll´æÎUùù³öâÅW¯¾¬­m” ' wtЈ׋„Æ ½{#SRò?ÞÆpë»w%¦¦ÇcbܦM›ÈLm‹&8nÞ\?ðÀÚÚ:V¬¸”›û#&ÆM\œà™ÊÊú  äëדËÊ~kkËØÙM77Wçââ‘öÛCc––tNÎß¿›nUUWP‰ŒÌb²6wwÓçÏsSR ÇvéÒ*AAîeË.Ž®çEH$n7·¹¯^í Ý .ο{÷•?ׯ¿–˜˜›BÀëh ª¨¨SW÷ºys½‘‘ÃNœxtõjRV–7;;S?­lm϶¶vDFnfIxeeµ œš8Q0$d;Kêb55™·nedgOœ(hc£ee5EVVh¸ã‚Fx½Ad2”©‡©/žöëWÃË—½¬ Iãáa–žþåÅ‹O, OX˜/(h݇¥nn!£ô‡‘8aÕ*ƒ‡·>}êajªríÚKßS§3\§W`¿=46½_š“óÝÖv:íDâ„gÏrÊËÏ›§ÊLm¢¢üoÞ=yòqéÒ½öö3ƒDâ™2EêðáØŽDWWnà2™ÇÈHiýz£™3ššÚnßÎ8}úiLÌÛ_¿êÉdAÁ^sCc¼M7o¦þùçÝOŸ|º{ùrÂÑ£÷³³àñ8f*üð¡ÔÔôøÙ³Ë--§°*ÈÐд­[C¶Y±B—Uu±'N¤¤¤ÐÞ"øýÿëá×/Bk+VF¦šBiÆð &mݺUGG‡UµÁû`ÐØ4}ºLssÛ»w%Ýí°páÔææ¶¸¸LV8y²˜Ö¡C÷ZZX6‹½½¶›Û\OÏ»ññ9¬ªsˆ¥¤¤¤¦¦ÒÞb0€¯YF¦ZSó»ŠJ¥€ã¡Ј^\ÌÊ©QGeŸ!õJV–L"q§§NÊx01‰Ä­«+™ea¡Ád;wÎ×Óû+00ÁÙy«âܾ}Þ5k×^ ^7c†,«ªJ3f̸}{äNQõŠ%·véÁëhlÂ`0ššÒŒ' C-Z4õÉ“ÌÏà+,Ì·~½Ñ©SY8-#ƒ9vÌnΜÉ+W^ÓéCP?À¼YZZÒii_zèAœ?_ ËÌ¢÷4Îγ¸¸8OŠcE€ÿ`cÞ>í8}º´£ãfæð‡ æhÌš>]¦ªªáË—ŠîvàáÁÏž=)"‚Ù$\\œÛ·›Ý¸ñ2/• }^RAAÄÞþüƒ aó 4f©©‰ÝÍ™Z¸pjrrþÏŸµÌWko¯­¤Dùë¯Øøx<îÚµ5""¼ÖÖ¥¥Õ¬­‚†Ì+И…ñihH¤§wût$`öìI<<„»w3™¯‹ÅxyY=~ü>11oÀ1þ>8x=§Ý9¸²ójkkÝÜÜššš^•JussÛ½{w§òS§N¹¹¹UTt{íÛ?tû/???†{VVVº¹¹µ´´ô鯄„ܽ{—¥!3æh,ÓÕ•KJêé¡zö… §„„¤õ©Z}}ycc¥ýû£©T?þ% ÀuëÖ†ŽªƒÃùÑ5Ø0ª¯¯÷óókiixUT*ÕÏÏÏÇÇ'3óߟÕÕÕ~~~ÕÕÝ^GNž<ùÙ³g}mîêÕ«iii tºK---™™™T*µO6))‰~øyËôôäKK«¿~­ìa;»éåYYßúTó¾} ?}úþj`2 ,Ìúǯ_ NN­,¯µ··ÓΛ--- ½?2I¥RþìÜ•… HmmO·.[[[ÿþÍL!C·nÝ¢½ˆˆ˜4iRχTUUµ¶þçUSSC¥R{mËÞÞþ;wÒ6ýúõ‹6êDLL,11‘@ t­aCÃù£æh,›6MjÂŽžçÓÐTV½u+½O5ËË ÛÛk>;§þ‰CC7”/[v±¾ž?ÇWAA÷õõ¥P(‚‚‚;wîܳg???ßæÍ›666k×®Ewnoo§P(wîÜìß¿_ZZZQQQLL,)) Ý!::šL&‹ˆˆèëëÛÛÛïÚµ‹ÖPZZš¼¼ü¶mÛÄÅÅìí훚š|}}MLLÐé_–,YBÿDNXX˜µµ5ú:''ÇÓ.ÌÍÍýýý544ÊÊʬ¬¬®^½ ÈÊÊRQQôôôDÄ××WDD¤¬¬ põêU11±®É’Þ£G”””………·nÝ (,,$‰õõõô»umE¡PˆD¢ŽŽkŸvì‚Æ4{ûsüq½ç}Î{¦¨¸³±±¥O5WTÔ)(ì}úôáÃ@ss3zàœ9sNœ8 ˆˆˆÈÇ©««£P(^^^ ß¾}“––¾páB{{»¶¶ö’%KJKK‰Dbpp0z¸¬¬ìüùóЩ®®FdêÔ©¡¡¡T*µ´´”‡‡'33ýëêêh–aCÁÇǧ¦¦ýª·oßÞëpëÖ­~üõ»¯W 1NOO>)©—5B¬­5›šÚ¡oÛÛÛõôô888455eee/^¼ˆ–:tˆƒƒCNNNZZZOO¯S¿=—™™™¤¤$@Xºti{{;ÃBAvïÞ­¬¬ŒÖI{Þ×JIIA$11ˆ úD$ÛŽ;0 ‰Dš7ož©©)Úo¿eË„ Hpp0—„„‡srrjiiqvvVTTD¿ëׯ„œœAdeeO:Õéëjkk344$“ÉRRRëÖ­£P(/_¾ÿí·gØ‚ >>>X,–B¡ÈÈÈ8::K¿=Ì+ÐØ—“óBqËÊúÖón_¿VЉmyôè]?šx:qâ¶‚‚ò~ȬŸ?k þÒÕ=T\\5¨ 1™¼Â¤Ó§OÓ—P©Ôœœœ×¯_S©ÿùMPUU•››ÛÑѱ|ùrúófRR‚ EEEUUU=PMMMEEE§Âêêê¶¶6ôu}}}FFFqqq¿›(,,D“‚ ¥¥¥¾† •——ggg£é“,Ï+ð>4ö))Q(â‹ ÕЛ8QP__!(¨ó­f¬[g$++´gÏ~È,aa¾ððMx<ÎÂÂïãÇïƒÚÖPª©©IIIñ÷÷ß²e }9ƒQRRÒÐÐè´@z›ˆa‡ JBB‚ŸŸŸ™Âþ¡@C$ÑQ ...MMMqqñ~7!%%E$Ñ×¢¢¢Ý-‘°!2™¬ªªÚ]‡ÿ€yfÎTxñâS¯»-[¦ŸSRÒçiÙÙ±>>Kòîßïìûý $Äí¢¤$beåÿüy/™r´(**rqqÙ´i: ™yrrr’’’´·<<”÷ºgWX,æÐ¡%…·o³~ }†,P ZŸ˜øiÙ² ¿7M£Ôöႆˆ¦¦4//þùóONNGˆv2{öd ëד½½ö£! I''ý}û"•Èdž~Û7zzr‘‘.ŽŽ.ô¿zõ’’‚CÐ(MII úü9ýƒ…ÏÂ@зjUàŠ—˜ÙóÌ™'òò;êêšû×Pccˌ֭»Ú¿Ãû§´´zÎßÉ“÷¤¤äY£´…I Q > Aý4k–rbb^ssç9h»Z¶L§£éÓº÷ô__»{÷Þöã,ôDE‰11n††Š¶¶gÿþ;ih½}û6 ÏGÐpaá cûW qeΜI--í))ç íŠo‚¥¥Æ•+‰H»ßõõåmmµvïÊeê99ÙÏœY¶yóì?ÿ¼ëåÑÞÞû:¸Är0¯@㈰0ߤI¢LÎiÿ¿ÿÍÌËû™šú¥ßÍy{/Âb±ÞÞÑý®¡0ÌöífçÎ-Nµ³;[Q1ЧևF)˜W ñeΜÉ¿gfO±iÓ&^½ÚÿJ¼¼øC‡–ܺ•ÎÌs3¬ei9åÑ#÷ÊÊú¹s¿zU8Ä­CãÌ+Ðøbb2©´´úÓ§ŸÌììä¤ÿàAviiŸ§ £13Sµ°Ðغ5ô÷ï¦~WÒ?rrB÷î¹M›6qñâ3ð™|h(Á¼/S¦H’Éð£Gmžž©¤xxð—.9íØ1ÿðáûkÖü=ô¹ Ÿ`^Æ,cd¤Äd Çæä¤wãFr]]ÿŸ7äå%>l}ûvFlìÛ~WÒo fãF“ààu…óæxû¶xèc€Æ˜W qÇÄdRFFauu3;¯X¡ÛÑA KH‹sæL¶·×Þ¹3|¸zÑgÎTŒ÷–&YXœ:~ü!œL T0¯@㎱±‹a²/o‚­­Ö¥K ³ëí½@Àyx Ûsé‚‚Ü7n¬Û¶ÍÌÏ/nÕª@8N <0¯@ã~út鸸Lî¿v­aIIÕãÇÌîß]£'NØ?~üáÎ!š7¬+,ãâ2ûÎMŸ>ýœ5ëèÇï†+hlƒyLMUŸ>ýÈä"+ÒÒd“I/>`£úú ÿûŸÁîÝwŠŠ~ °ªÐÒ’~òd»™™êêÕWÖ¯¿6”mBãÌ+Ðx4ožj]]ËË—½,óE³nQZڗׯ‹ØîŸZHHlØp½놱 77çÑ£¶ÿý¿””ü¹s'$ õã5ÐØó 4‰‹ó«¨ˆ1#HOONEEìÂ…çl—ƒƒýìÙå¹¹?üýãXÕÀ™šªÄÇïPU··?ïì|£¼ö¸@¬ó 4NÍ›§úàÁ;æGFmÜhû¶°°b€í*(ˆüù§ÅÉ“™™¦l°‘HÜ—/¯º~}mfæ×™3ÿº|y Ã À¼[ffªuÌßÚ27W—”<þùÀ›^µJßÄdÒæÍA#¤ocöìI/^ì\»ÖðÀèùóO¾y3ÐÛ}Ð8ó 4N))QddÈ0;=výz£[·ÒËÊ~°i sü¸}[[ÇÎᬊUðxœ»û¼GÜñxœ¥¥ß¶m·¾¯î  ÑŠmß¾}à ÒÒêÞýï3™Ü_Y™”ÒÒÒn` 0À¦'Là˜4IÔÇ'–LæQW—`m¬B"ñØÛO—” I;}úImm“ššÀ1ÜqA£ Ì+Ðø5aÇùóÏ,,4¹™ÙŸ ÛÖÖqéÒ‹•+õ89ql]JŠÔÖÖáëû`öìÉBB¼¬U0̤I¢NNúBB¼ÿxöl|]]³††$''\³bÌ+ÐøE¡ƒƒS¸¹ñ3fÈ2yȤI¢—.%prâ¦O—xººr©©ÁÁ)¶¶ÓGÔ‰› «¦&±b…;;600ñêÕ$A””(ϦÐxûW ñ ‹Å̫ҧ¥‚yxðË—ë^ºô‚™ÅŒ™ àÌ™eMM­Û·ßxm,7a‡«ëœÔÔ?´OŸ~¢©éíí5U q^¯@ã ˆ_¼x??“‡(*Š<äž2EràpqqªªJøøÄ’H#¨£…30Ppr2àã›’vòäã·o‹¥¤H2Í* IDAT ßp‡P0¯@㚸8ÿÉÜÜxmmfïkqssVTÔ‡„¤:9é³±±àŠ_RR€JE޽ol¬,"2BOÖìS§N\µJ_F†Ÿãç—–VÈɉ“‘!³äK€Æ ‚À³¡qmçÎÛ™™ßââ¶1HYÙï3ìß¿hùr]–Ä@¥"+V\ÊÍýñð¡;‰ÄÔ ‚á•ð)001>>‡Hœ`c£¹t©ŽœœÐp0¯@ã]RÒg[Û³ »útfܵ+üÉ“ÉÉ{p86–„Q[ÛhfvRLŒò;ûè¸øù³6$$-44­¸¸J[[ÆÑQÇÊj «¾hC h|ëè jhx<ù¨OG•–VOœ¸-((™…‘|üX*+ëáíÉÂ:{ÅŠ³†“S’Ÿ°ð: &•ñÈÚÚšþÕÚAËŘ™©ÆÄ¼us›ËüQ¢¢D;»é~~q¶¶ÓYõ ]YYôØ1;gçÊÊ¢66Z,©“nnn:::¯§½ag7x=ÐèròäÉN%0¯@07׸zõåçÏeòòÂÌåâ2;44íÎWööÚ¬Šdá©YYßví WQSVeUµ=ÓÑѱµµš¶ ±çöíÛJFÇm\T3fÈ óÅļéÓQbbü66Z~~qíí¬œØÓÓR]]ÂÉ)°²²ž…ÕBÐy‚‹™?_íÞ½·}=ÐÅeö÷ï5aaé, ‡c»|yvõê+­­í,¬‚†Ì+VV¹¹?rr~ôé(IIÁ¥Kg;ö%ßÓðós]¿¾6/ïçöía,¬‚†Ì+ZZÒ’’‚wïföõ@7·¹µµMAA)¬GNNèÂ…•™OY[3 6˜W 0Ì¢ESïÜyÕ×……yW­Ò÷󋫯oamH††Š^^V>>±½gmÍ#Jmm­››[SS«*üõëסC‡.\hôíÝg@S×ÛðH †2 .Ú*ŠþQQm‘)`ÕŠ[ˆV¬³ZH÷‚2Ä]¡J+"`Õ*¨(Sˆ!Œ@’û~¸}Ó4!Ôç÷érrÏsž{Å<Ü{î;600ðöíÛxûëׯ׬Y#²2“É\±b—+ýùÆ   Ã‡ ·DGGÇÆJúÀ·'NDGG·÷)ž‡Ãé´Q@°?;^MÑÑÑ—.]’¢#Ôþ1c†õ»w23ßtµã’%ÿkiáž8qWæ)Í›7Æ××véÒóOŸ–ÉÄÏ?ÿ\UUµwïÞ¶{/55UGGÇÆÆ†J¥._¾œÇãµí.ØÏjjj Óéššš£G®««ÃÓc³Ù½¡7nXZZZXXèèè¬ZµJ8 `µ˜˜òáˆÝÞ¤¤$ƒA¥RmmmKKK¥ø…Ažã€êêzCÃUÉɤè{øpš©éšwï>È<+ ÃÞ½ûðÍ7[]\Â8²ŒŠí`…‚‚„¿¿uuõ™3gB®®®•••7oÞDUWWÇÅÅihh´´´`vãÆ 55µ¦¦¦‚‚Æb±ZZZvîÜigg‡aXyy9™LÞ·o_KKË•+WˆDbpp0~(P[[‹×ž%K–p8œ·oßoݺUl#†aׯ_ Ã3,Ÿ:uJYY™Ïç‹lB`` jÞ¼yL&3##ÃÈÈhÆ øÖ577×××3Œ76449r¤¤¤„B¡DGG㣄ׯ_c¦««{ýúu<8‘HLKK»xñ¢ŠŠJQQ†a³gÏž7o†aeee %%%Ã0<ù}ûö‰tŸ>}úܹsûÙÓÓ“Íf?|øPGGçܹsxc}}½p/áÆáÇÇÄÄðùü·oߪªªæääö§`5‡Ãd2™Lfaa¡‰‰Éœ9s0 »½ eÇŽ, ÿ·îôWÈÝÝ]ä9.p¼À¿´´úÛÛ›Kq* !4{¶ƒºz¿ðð2Ï !¤££»¨¤¤fÑ¢³]½²@&¶lÙ¢¥¥åêêŠZ¼x±¶¶ö„ H$ÒË—/]]]¹\î;wBñññ3fÌ “Ɇ544;vŒÉd®Y³ÿ4&&†J¥’H¤)S¦ˆ}xÌæÍ›•””ôôô/^|åÊ•öƒ‚‚ðOË>|ÐÐÐ "1›šš§zBBB455ííí½¼¼®_¿.X'))©¥¥eåÊ•†ijjúøø\ºt)..ÎÐÐÐÛÛ%>>žDÿÆLwww''§¥K— 7ÆÄÄèèèL:!¤§§çããsùòåŽ÷óîÝ»UTT¬­­íììòóó;^™Ïç_¸pÁÓÓ³ººúåË—ÊÊÊb»())ijjÒh´ÀÀ@ƒ_e v{ïܹC¥RüñGuuõY³fYYYuœ@{ ®ðnn#îÜÉ«©é|ò@„²2qíZ— 2óó»vŒ„ŒŒ´Nœ˜s÷î‹;ùnê ººº!"‘ˆ277Ç Ç#“Éîîîñññ\.÷òåË~~~!33³3gÎÄÅÅéëë[YY]½z!TTTdg÷ï›LLDßy£®®®¥¥…/0™ÌöÅ211©¬¬lnni¿uë–©©)BHOOÏØØo´²²ª®®¬óæÍ6›=lØ0KKKKK˳gÏ„¢¢¢Aƒ Öqss34l÷Ýküý÷ßñs€¸¢¢"›ŸñcddTQÑÉö?Õ¦P(ÌÁà’’’ŒŒŒlllöîÝ«¨ØÑsêBBB?~|éÒ%|2IìöÞºuËÞÞ^ÐE8ù.ºÀ¸¸X‘HŠ]}¦ ÎÝÝzÈý_~¹"ó¬pß|crà€ßÙ³†…]ï|m™RPó]ýÿ\±ŸŸ_bbâíÛ·)ÊØ±cBYYY•••^^^ .ljjÒÔÔ¬ªªt/.. X__/˜ßÎÌÌÄ ØF±FE&“ñ8¯^½***rssCUUUµ¶þ3yö×_ ðï?µµµ544JJJJKKKKKsrr"##µ´´ð³I¸ƒŠLà 300ؾ}{`` àú---á‘ÅìgL‚GMçæænذ!%%¥°°011QE¥Ýwžž?þÀÉÉÉ‚º%v{UUUóòò½=zÔiâ·Bºn|ªTT”'O¶’îÑ, „§Ý¾ýüîÝ2O 7eÊ—{öxÿúëÍÈÈ;=4„ÉdrPP¯¯/þ͘““3mÚ´šš:îâ₟†?~|vvvnn.B(;;ûþ}Ñ›Iù|þ‘#GB/_¾LNNvvvn¯133SpÛ‡`™N§ÇÄÄàSñùùùcÆŒùî»ïB\.Ÿ]ÇÿrÇOpá&NœX[[…aXII‰‹‹KLLÌôéÓóòò’’’B—/_Þ³g~ÜF"‘Ä^œ¶dɃÄÄDüÇ)S¦<}ú4%%!TSS“ššŠØ^÷޵íU\\L£Ñ,,,ðôÞ¼y#¶=xð 22ÒÔÔ”Íf³Ùl>Ÿ/v{]]]Ÿ?aXzz:þ/%NçdøÜÜ»÷’ÁXñüù[éºûûurÚÍã‰ÎËЉwõôVž;'ƒ·¿ Éæí›››1 Ã¿× ðH$ÒÝ»wñeü–Ã/^à?r¹\{{{%%%kkkSSÓ£GâíÛ·oWRR233366¶··™·WQQ™oaXhh(‘H455USS[°`Akk«Hw‘y{< Ã|||‚ƒƒ…§è½­­­ŽŽŽt:ÝÈÈÈÇÇgþüù ¿“FxÞÞËËKäkÿï¿ÿno{wìØ¡  À`0LLL|}}¥›·‡º€(>Ÿok»móf)߯õêU¥¡áª˜˜²ÍJDXØ5}ý•‰‰¹ÝŒÓi]‘ÐþýûÇ'ÜÂçóóòò=z$rVMMM~~>Çó÷÷þÚÊÈÈPWWÇ0¬¤¤¤¦¦¦ƒÆNq¹ÜgÏžegg ¾¦…•••UVVâ˯^½þ6ǯÅ*--^¿±±±°°P$Hmm-^$:U[[›••Åd2¥ëÞi¯ÂÂÂÚÚZ|ùíÛ·m/‡ë€Øí­ªªzòä ^¿%Ѷ®ÀûWE <z4]¦I‰úé'Ww÷‘óçŸþý÷žšÎ‘DIII``àÒ¥Kñ«%gff&<­ªªÚöûWl£¬>|ø0.-cL6/¸àS3sæ"QáìÙéºGDÜŽˆ¸uïÞ:Cš¿L%Äçc«VE'&>:vlö„ C¤ˆ@ bccá}‘@jè¿o„ãÄóö¶IKË//gI×}á±::ê[·&Ë6+ „ðpŸo¿ýzÞ¼SR] [PWoòäaêê”øøléº+)7mš–”ôèÏ? :_»ðÒâæ6J è# ® ‰¤øÝw#¢£3¥>W>6ÅÅï¥x#‹ÀÏ?»2ÏûS†Y‰E ~ùÅÝÍmD@Àéëןöôptæí舋˯FFZ‘‘þRGض-%**3#c¦f&&ŸýôSÂùó÷ü==%ºŒŠ@ Œ5ÊÀÀ §sŸªÌÌÌQ£F ÏÛ+nÞ¼Y~ùÐ׉Б‘wüülUT”;_[œáÃÎû³¢‚%ÝõZ]B œœ+)úé’ŠŠ²µµQ§]ž={¦¦¦ÖÓ‰O˜­­­ðÓ©áx€Ž47·¾yÑ¢qË–—:HBBöòåRSW~ùenî뎓'ïmØpyñâÿ­_?µwF@æWè™LòôyöìŸÝy뉛Û“5kâzz_`îÜÑûöÍyPWÔˆF#F ‚ÍfïÛ·ÃáÈ$ÚöíÛ—/_>`À€Ù³g³X,;;»ÈÈHI†ž7oÞÇ¿øâ >ŸÏãñx<^zzúÅ‹yÿOò† ’––†/Ÿ>}úÁƒ BššÄ_Âáprrrø|~—vHFFFff¦ä¹IIÞ׳ðé8pà¶™ÙÚêêz™G..f²~É’s2Ü%îîî"×w µµµ±±_nnnf³Ùváñx"|>ŸÅb ~,++CÕÖÖ Z8·¢÷‰ml‹N§Ÿ8qBðã–-[,,,„W¨­­åñxm‡¶°°ˆ‰‰^sÅŠŽŽŽíõí`uuu¯_¿Ž/›ššîÝ»·½l™L&ŸÏil»CÄŽÛÐЀaØâÅ‹ƒƒƒÛ‹/€àþúˆ9sFS(¤#GÒeyÀÍÈHÿääG‘‘wd\¶^¿~M&“CCC †¦¦æ?þ¸~ýz¦®®¾lÙ2„‡‡G@À?ær¹ #!!!´uëVccc }}ýŒŒ |…ääd:®««ëàààíí½nÝ:Á@<077_½zµ†††··wSS“ØF„Phh¨““ÞQ°ŒaXssó«W¯1Oœ8/çææ:TOOOSSsÆ ˜ÐUyŽŽŽááábwB{}ÛnãW_}UYY9}úôÓ§Ow°Woܸaiiiaa¡££³jÕ*„Paa!•Je³ÙŽ›””Ä`0¨Tª­­-þ¸„'uE´yÇÔtMO²`vøpš¾þÊ›7ÿî‰à’äx¥  !äïï_]]}æÌ„««keeåÍ›7BÕÕÕqqq---†Ý¸qCMM­©©©  €F£±X¬–––;wÚÙÙaV^^N&“÷íÛ×ÒÒråÊ"‘,øóÿ^^²d ‡Ãyûö­±±ñÖ­[Å6bvýúõ°°0Èò^™ÓÕÕE‰D„¹¹9ÞH x<™Lvwwçr¹—/_öóóC™™™9s&..N__ßÊÊêêÕ«¡¢¢";;;AL‘QÔÕÕµ´þy’´~%•ØF±8Îû÷ï¿øâ‹7¦¥¥UTTøúú.Y²¤¢¢âÍ›7l6{ذa––––––gÏž%$}°f{}Ånc[³fͺ „N§+(($%%ÙØØìÝ»WQQüËoÄŽ{ëÖ-{{{Á:66½ñ07¨+ÈØ¬Yö*{ö\ï‰àJJÄ'ær8­sæœliáöÄ2¡  æ»ûÿi??¿ÄÄÄÛ·oS(”±cÇ"„***²²²*++½¼¼.\ØÔÔ¤©©YUU%èÞörÞúúzÁåR™™™xáÛ(ÖŸþÉ`0êëëñ544~úé'>Ÿ_VV¦­­­¡¡QRRRZZZZZš““ÓÁub"Úë+v% ˜››»aÆ”””ÂÂÂÄÄDÉÇUUUÍËˬóèÑ# ·¢; ® cÊÊÄààÉÑÑ^¼x×ñµµU/\X—W±lYŸÿQ>âÅÑÑ‘L&ùúúâ(''gÚ´i555t:ÝÅÅ…Ïç#„ÆŸ››‹ÊÎξÿ¾H>ŸäÈ„ÐË—/“““ÛkÌÌÌŒŽŽÆ{ –­­­µ´´Ö®]ÛÚÚŠâñxTUU:tèĉkkk£¢¢0 +))qqq‰‰‰‘pëÚë+vB$©®®££Ûââbfaaº|ù2~ŽQÂq]]]Ÿ?aXzz:¾3{œÔgÐíáñø&„Ξ}¼ç†øóÏ‚WoÙ’Øùª²#ùƒâ*DIDATü >y€]à‘H¤»wïâËkÖ¬A½xñÿ‘ËåÚÛÛ+))Y[[›šš=zoß¾}»’’’™™™±±±½½½ÈüŠŠŠÊäÉ“ @¡PfΜÉårÅ6b2hÐ <¦ðòýû÷---•••ÍÍÍi4š££ã½{÷𢢢TTT I$ÒìÙ³9Ž„ó+bûv°+W®¤P(çÏŸÇڹθµµÕÑÑ‘N§ùøøÌŸ?ŸÁ`üþûïè¿ó+í»cǃabbâëë óö|¬îÜÉc0Vdd¼ê¹!’’rõõW;ö{Ï !¢K÷¯tlÿþýãÆnáóùyyy=¹E£¦¦&??ŸÇãùûû 'fdd¨««cVRRRSSÓAcǸ\îË—/ÿüóOÁÅ`l6ûáÇ¥¥¥]ß>ñ}ÛÛÆÚÚÚÖÖÖŽ nRyûömÛY:·ªªêÉ“'x‰•D7ë <Ç€1nœåèÑ_üòKÊ•++$Ÿòí’iÓ¾.-­Ù¼9‘ÁPŸ2åËž¢'°X¬¼¼¼ˆˆˆ={ö·KK˶ëÓh4ÖA@CCC ÅRTT477\\ LEEÅÚÚZÂ8’ômo©Tj§ŒŒËzzí¾ûYì¸t:N§w:„¬Àü =eãÆi—^»ö´ç†X²ÄiΜÑK—žÏÊzÓs£ÈVIII``àÒ¥K]]]»ÔÑÌÌlÀ€‚UUUGŽ)²ŽØFÐËàýöô Å‹Ï=yRš–¶–Dmh÷ñxüyóNee&&.37×é¡Qp¡‹/öè(@îBll¬§§§tÝáx€´nÝ”²²Ú zðIŠŠ ‘‘þææ:žž‡ŠŠÚ½W€^u€dh¨1k–]xø†Ù<W, EéܹCÝÝý`iiMÏ €$ ®Ð³V¬˜Èáp#"n÷è(ªªä˜˜…*^^‡zèV$u€ž¥¡¡²zõ¤Ã‡ÓÞ¼©îÑÔÔ(.,$‘gÎ<\[ÛУcШ+ô¸Ù³ÌÌ´·lIêé´´úÇÄ,lhhñô<ÔÇ >aPWèqD¢Â–-ßݺõìμÎ×Édÿý‰ÆFÙ¿_2>>ž>uÝü%ëŒè%óæzþ¼<=}­’Rßüòå»3š™iŸ;7¿eY…½ÿ~/½ È›t}¡®ÐKÞ¾­3fçêÕ“-× ÃTyzFjk«EG/ ÑÄ?€žçÁè%úú´E‹ÆýúëÞ¹^ËÌL;1q‹Õèéyèý{vç¨+ôž¥K¨Ô~;w¦öÎph&$,ihà|÷ÝþÊʽ3(PWè=d2é§Ÿ\ãâææŠ¾¢ª‡èëÓfÌ8X^ÎêAÁgæWèmîîÙlNjê EÅ^úÃŽÉd{yª¯oŠ‹[ld¤Õ;ƒ‚ϯÐÛvïö|ñ¢âøñ»½6¢–Vÿ‹S©ý¾ûîÀóçå½6.ø­÷PTTøßÿ  ñë¯7ïÝ{igg¦®Néý4À'î_@þ0 ó÷?öæMõ­[«UTdöº”®ÊË+_´èÜÛ·µ!!S¿ÿÞ®Òº@Ÿðî݇qãv»»[ÿüówrL£µ•wôhúîÝ×¾ür@x¸·™™¶“)8‘ @Ÿ ««þóÏßFp¼@2þ霜ⴴ5jjržáhmå:”~ÃÐPã§Ÿ\‡Ê7ðº@RSÓ0nÜ.'§ÁááÞòÎ!„ÊËY;w¦&$ä >`Ó¦éÖÖÆòÎ|à<}ˆ††ÊîÝž11®^}"ï\BHOᛜ¼œ@P˜>}ÿÒ¥ç{óÌà#Ç+ô9Qwï¾HK[K£©È;—`–šúä—_®”•Õ|ûíð¥K¾øBWÞI> ê }N]]Óÿþ·{èPƒS§æ}èb_>KM}¼gÏW¯*Ç8aĈòN ô9PWè‹rrŠÝÜöoØ0mÞ¼1½6èýû÷ÃÃÃ;] ÃPM ¥¬L•ÍV22ú ¯_ß ¹¾æâÅ‹í}ó+ôE#F \µÊù矓ss‹{mÐÒÒÒøøøNW#¦fÓ—_V R­¡ÑÔ ‰>¥¬¬¬ãß8^ âó±™3””¼¿q#HU•Ü #ÆÅÅyyyÁwèX§¿'p¼@¥ @8pÀ¯©©%88VÞ¹ÐPWè»´´ú8àŸšúäÂ…Ly瀤 ®Ð§ÙÛ›-^ü¿õëž?/—w.Hê }]pðd++ÃÅ‹ÏÁ ƒÁG(ï "#ý'L IøõWy§Ó³>|ø°iÓ¦;vP(Ý}BÚ¯¿þZ\,z5‘H ëNØ   9sæ *ÍÓÞ½{¾{÷n©Gß¶m“Én166^¾|yÛ5™Læ¶mÛvíÚÕÜÜ,ù.ŽŽVVVvss“:CÇ+|ôõi¾/>‡ÓýP|>ŸÇãñx¼ôôô‹/òþ_7ÃFDD¼~ýZº¾555ìÎè§OŸ~ðàAƒ¦&ñ—zs8œœœ>Ÿß¥]š‘‘‘™ÙÝÉ<8^àã0~üàÕ«'mÞœha¡kgg&ït—ËmmmÅÿæp8\.WE¥“§Îðùüªª*]Ýÿ<ðºº:uuõözµ´´477«©©uÚ("((_X¹rå£Göïßßqzí…e±Xjjj üŽaXII‰¶¶¶ðaØÆ.i›’···Ø„Ðû÷ï544ðg4èëëß»wOìjb·¨±±±_¿~Ò%)ŽWøh,_>aòäa§åøðÇׯ_“ÉäÐÐPƒ¡©©ùã?®_¿žF£©««/[¶ !äáုÌår FBBBhëÖ­ÆÆÆúúúÿu%''Óét]]]ooïuëÖ zð๹ùêÕ« 444¼½½›ššÄ6"„BCCœœðŽÂËbµÍpçÎbÃæææ:TOOOSSsÆ ܱ‘ššª££cccC¥R—/_މmذaÃ!CÞ¾}›——G&“ÇS§NˆˆhoKÛsãÆ KKK U«V!„ ©T*›Í^Mì%%%1 *•jkk[ZZÚÁ(‚ºÀGƒ@ ìÙã­££öçä8‡Ïápž>}š——wøðá]»v=}ú´¨¨èÚµk`2™žžž—.]jmmEݹs§±±qÊ”)¯_¿Þ»wï“'O˜Lf``àÚµkB^^^7n¬««[·n]BB‚ð7/—Ë-((hnn.+++))ÉÊÊ Ûˆ²²²rqqÁ; /‹Õ6C›¶aÙlöÔ©Sg̘Ád2?~uìØ1±ß¾}ëááqòäÉwïÞ¦¤¤ÜGHUUÇËÏÏçóù•••iiiZZZQQQø¿T}}½`—ŠÝ¢+W®0 AžVVVÁÁÁïÏNOàx€Ì€š‡ù'&æ;ö»¼rÀçHˆD"BÈÜÜo$<L&»»»ÇÇÇs¹ÜË—/ûùù!„ÌÌÌΜ9§¯¯oeeuõêU„PQQ‘ ¦‰‰‰È(êêêZZZø²~”ØÆ.›aÛ°oÞ¼a³ÙÆ ³´´´´´<{öl{Ï–.**²±±ühddTQQ!¶!ÔØØxíÚ5––&6~ ÕÁ–Κ5ë‚:®  ””ddddcc³wï^EEE±‘ÅnÑ­[·ìííëç,5¨+||ÆŒ±X³fòÖ­ÉééùrI@ì$6öÿÓ~~~‰‰‰·oߦP(cÇŽEUTT888deeUVVzyy-\¸°©©ISS³ªªJнí5Áõõõ‚I…ÌÌL¼ðˆm쪶¶ «­­­¡¡QRRRZZZZZš““)6š––V~þ¿ÿýõ×€Ä6"„”””îÝ»·mÛ¶åË—ã¥/W‚s€‚‹Í$ßÒÜÜÜ 6¤¤¤&&&¶w…Ø-RUUÍËˬóèÑ£Žvœd ®ðQZºÔÉÅŪo¾ÀÑÑÑ‘L&ùúúâ(''gÚ´i555t:ÝÅÅ…Ïç#„ÆŸ››‹ÊÎξÿ¾H>ŸäÈ„ÐË—/“““ÛkÌÌÌŒŽŽÆ{ /KžaÛ°'N¬­­ŠŠÂ0¬¤¤ÄÅÅ%&&ï^QQñZˆ³³óÓ§Oñ™‰šššÔÔTooï)S¦´mD‰D*•ºdÉ’â—u‰Ä¸¸8„ÐÅ‹3çb·T¬ââbfaaº|ù2~–²íjb·ÈÕÕõùóçñññ†¥§§ãÿÝÕñy4@ŸÕÐÀqrÚ=fÌ«A&%Ÿ_Á'êêêBøG$éîÝ»øòš5kB/^¼Àär¹öööJJJÖÖÖ¦¦¦GÅÛ·oß®¤¤dfffllloo/2¿¢¢¢2yòäP(”™3gr¹\±†…„„ 4)¼Œ™_i›a{a£¢¢TTT I$ÒìÙ³9†aøÙ?aùùù¡¡¡D"ÑÔÔTMMmÁ‚­­­†µmÄçWð>|¨¨¨˜ššŠaØÚµk ‚––Ö¤I“œñù±)™ššîÝ»Wd[Z[[étº‘‘‘Ïüùó Æüþ;¿ÒÞíØ±CAAÁ`˜˜˜øúúv~ê ±wïXÖÖ[¾ý6‚Ãií~4Iꊄöïß?nÜ8á>ŸŸ——÷èÑ#>Ÿ/Ü^SS“ŸŸÏãñüýý…¿Ñ222ÔÕÕ1 +))©©©é ±ûv–Íf?|ø°´´´Ó€µµµYYYL&³ÓF±X,–`–¾ã”ÚSXXˆ ÃÞ¾}+²ŸÄnQUUÕ“'OðÒÕ©NOà¾H>b::êQQó§M‹ ŒŠŒœ¥  ÿ—³X¬¼¼¼ˆˆˆ={ö·KK˶ëÓh4ÖA@CCC »™¡Ø°***ÖÖÖ’„¥R©#GŽ”¤Q¬öî •|KŒŒËzzzí­&v‹èt:N—p NÁü ·/¾Ð=yrîõëïÜ™*ï\B¨¤¤$00péÒ¥®®®]êhff†ÏlãTUUÛ~#‹mì~†2 +[}0%ÉÁû"ø$&æ.Yr~Û¶ïæÌ-ux_$D§¿'p €OÁ·ß/,dnܘÈ`P'M&ïtÀg ΃ð‰X¹r¢ŸŸíâÅçrrDo 7A]àÓñóÏn¶¶¦sçž(.îs7µ€ÏÔ>D¢Â‘#³ ª—סòr–¼ÓŸ)˜_à“Ò¿¿r\Ü"w÷ƒ‘—.-ÕÑéè %bá7~О¶OF׃ð b2Ù3fPTTHHXB£uòº-ü:ŸM |2:¨PWø4UT°¾û*9>~±ººlÞ€$`~€OƒAMHXòáC£ŸßQ6[¯‹@BPWødéëÓbc•–Öøùml”Ûû%Áçê Ÿ2ccztô¢W¯*çÎ=ÙÒ•w:à³u€OÜ AŒ üõWñüùg ´€^óö|rrŠ|}~ù¥á©S?ôë§$ïtÀ§ ê Ÿ‹/Þy{b0¨., Rá 1ÐS ®ðyýºÊÓó¦¦JtôBMÍþòN|š ®ðy)+«õôŒ$bc1Ty§>A0oÀçÅÀ€–˜H")~ûíþ¢"¦¼ÓŸ ¨+|v´µU–jiõÿöÛˆüü y§>5PWøQ©ý¢£ ¨åáùèQ‰¼ÓŸ¨+|¦ÔÔÈÑÑ ¿úÊÐÍmÿå˹òN|:7oÞ,ïòA")NŸþuccëæÍ‰,VÓØ±–AÞI\@‰‰¹«VÅØÙ™EFÎRS#Ë;ðqƒº@¡ììÂ~8E¥öÛ¿ß×ÊÊPÞé€̯BÈÚÚøúõU::j®®ûöí»ÅãñåøXÁñ à_†EEenÚ”8hcÿ~_ccº¼38^ü‹@ øùÙ¦¦®hnn8qÏ©S÷àÀt¯ÄhmåíÙsýС4ssmÛÜF2•wFà£uЮÂÂê/ÿö[Þ„ C~ùe†¾>MÞÔ@'nÜø{Ó¦Ä÷ïÙ‹ pTU… ‘AG ®:Çápºsøpš‚‚‚cøaLÿþÊòN ôQPW’b³9gÎdìßÿ›¢¢Âܹcá&JÐÔ@ç<<<âããñeAIEÅJEedMM|kkµ|=*66ÖÓÓ³«½ˆ=‘ àÓ3jÔ¨•+W ~äpxÊÊcå—èq^^^Òu„ºˆº‚—Ôuî‹ KPWÈÔ²u€,Á¼=àãðáÇM›6íØ±ƒB¡t?ÚæÍ›Çïàà h9uê‰Dòóóëj¨÷ïß>|øáÇ,ËÊÊjÚ´iãÇï~†"¶mÛÆd2E7oÞL¥Re>V7Áñ àãÀf³÷íÛÇápdíøñã?n¹råÊ7º§  `Ô¨Q‰‰‰þþþ “&MÚ²e‹L’vúôéììì†ÿê›7 Âñ @Ƹ\nkk+~TÁáp¸\®ŠŠJÇ]ø|~UU•®®®p#†auuuêêêíõjiiinnVSSë´Q bSB±X,555…þ(÷÷÷¼k×®§OŸ]»víÀL&ÓÓÓóÒ¥K­­­¡;wî466N™2åõë×{÷î}òä “É \»v-B¨¢¢ÂËËkãÆuuuëÖ­KHHàñx‚Q¸\nAAAsssYYYIIIVVVXX˜ØF„•••‹‹ ÞQx¹bSb³ÙS§N1c“É|üøqTTÔ±cÇþþûo2™lii)aäÈ‘¯^½Â0Lø¬]KK Ç_óĉ.\ˆŒŒl»—ð©©©Û„\¼x!$Ü×ÑÑQ°lnnîááqòäÉwïÞ¦¤¤| ÑhA$‚²²2—Ë\lü£;v8;;{xx´ÝKø L&óªª*AX¼/¾&¾œ˜˜¨££3uêT„žžžÏå˗ۮܠ®d ŸÀÏ ™››ãÇã‘Édww÷øøx.—{ùòeüÊ+33³3gÎÄÅÅéëë[YY]½z!TTTdgg'ˆibb"2Šººº––¾l``€_(%¶±=ªªªõõõÂ-ªªªí¥ôæÍ6›=lØ0KKKKK˳gÏ“ÊÊJ|®BØ‹/LMEß°‰‚ˆƒ¯0lØ0„ؽ„ûþûïO Y²d‰à#¼¯ðrQQ‘ ÑÈȨ¢¢¢íÊ=ê @–D&¢q‚Ë–üüüoß¾M¡Pðó0YYY•••^^^ .ljjÒÔÔþc¼¸¸X$`}}=>}‚ÊÌÌÄ ØÆöeee ·<~üØÈȨ½”´µµ544JJJJKKKKKsrr"##mllÈdò™3gðUUU?ýôÓ³gÏ®^½º`Á¼`Îà½~ý!$6ŽHnm÷’´´´òóó?þõ×_ .TWA]ôGGG2™äëë‹W œœœiÓ¦ÕÔÔÐét>Ÿ?~|vvvnn.B(;;ûþýû"qø|þ‘#GB/_¾LNNvvvn¯1333::ï%¼7’Ô íß¿ܸqÂ-|>?//ïÑ£G|>_¸½¦¦&??ŸÇãùûû Ú322ÔÕÕ1 +))©©©é ±S<ïï¿ÿ...io/%6›ýðáÃÒÒR‘õ¹\î³gÏþøãêêj ÃRRRðX,Þ(I¶{I:µµµYYYL&SоR׸/ÐKX,V^^^DDÄž={„Û BÛKuB4F£uÐÐÐPÂÆö((( 2¤m{{)©¨¨X[[·mWTT¼m+Ií”ׯ_G¡B…P´hѨªväÈ4nÜY²d‰HîÕ«WQ¤H‘¨èwöìY‘SªT)K§Ë—/#!!¯^½²æÌ Ož#GŽÄÊ•+eLðEìw‚Ù³g+} °O¥oÙ²EõéÓGÕ­[WU­ZU­X±BU®\Y•-[V>}Zø/^,|_¿~U5jÔPoß¾U&LPÅŠ“grY_ºt©*Q¢„jÑ¢…jÛ¶­Òѯú÷ï¯6oÞ¬´óÔÀe¿Žµk×.á©S§Ž6l˜*\¸°êÖ­›úòå‹Ìózs÷î]k¼ÿ~U°`AU @¥¯š7o.zŒ?^3F•.]ZUªTI]ºtÉSgæø3eÊuàÀE; |Xt]³f«Î8"ËùçÑ£G¢;õß¹s'V¯^iÓ¦aÁ‚èÕ«—ÈZ²d 4øä*}èÐ!´oßõë×Gbb"òçÏo‰¬U«˜þ™H©©©èÙ³'²fÍjíñhGŠÈ?wî\±…×Þ`óa€Âš4i‚F¡Y³fRWÍøÅ‹hÓ¦ îß¿/†Þ½{7ºwïŽråÊáÙ³g˜}òàpŸNh<’Ñœ#z;tè ŠÙ£ËƒDî¨Q£@Ð :U’EÈ õyóæ5ËЩÎB¹™ç\¸¦@ㄤ¤$‰R7­8娷ž9sFÎØ»woÈ&;Ù÷pܯ_?Ét{÷îEöìÙ%°œ{‚=3‹ðÌÌHáÚ#]¦×èôyóæI·¬{‰]±páBlÛ¶M¢_×|ů_¿$²uL#öĉ/^Ö®][ö;v ¿ÿ¦û™#Àt?fÌ´ 9u…Çkß©û °Ëøð¡D'KK“˜©X²†rôSÆÇ±lÙ2ɨS§N•RÇòFyáPTÀë ‰Î}÷ît³(ϺɓŒ@gñìX jÖ¬)i’×3Md0rX6*T¨€–-[bæÌ™2ÏT9qâDè&NŒ;nÜ8ySâ½{÷ÆŒö'ì?¼È¼Ë©³×~¯y#‡=ûö'ŒJö,‰ÔE7¸p:ÁÁòÉràFF¶}·jãÆàÕqÈ!’Aì{B'°%4Y;i`~GBß¾}ñN¯»uE¹·oß–~Àžîõ ¹sç–^€ˆf³DbcÃkÌý ™3g–f‘M¢½„“Ë6–äÏ”)“ËêÿSN ‚ØNÔ³S§Nö)×ñ‡`Ê”}MÍKg¤ÄÌÉÑ!¿ …'Ápùæ]µoß¾‚Hã|nç¡Mº¶³³[FnÝ8e…â|Êeø/rÓ™ÿØã¬ÛlòB!7ç“‘ìÍ¡Ètî ×ùN~óu°óeíæ¿æ…C¼ò™('Ÿ¾¯»²ó³þÍ®ŒA&Ýtf*Š:xï×ù4´3j¼"÷_#=NK¯ÎéyWF㉼e´ùú„g6†ôBü_Åð¯42”óA·€ð ãïŽ ø% ¼Á|D`¼X`õ ^Œà §lío¡¨IEND®B`‚mysql++-3.3.0/doc/html/refman/annotated.html000644 000765 000024 00000122012 14042362132 021432 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class List
MySQL++  3.3.0
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
[detail level 123]
 Nmysqlpp
 NexamplesStuff related to MySQL++ examples specifically
 CCommandLineCommand line parsing mechanism for ../examples/*.cpp
 NssqlsxlatStuff specific to the ssqlsxlat tool
 CCommandLineCommand line parser for MySQL++'s ssqlsxlat tool
 CAutoFlagA template for setting a flag on a variable as long as the object that set it is in scope. Flag resets when object goes out of scope. Works on anything that looks like bool
 CBeecryptMutexWrapper around platform-specific mutexes
 CScopedLockWrapper around BeecryptMutex to add scope-bound locking and unlocking
 CCommandLineBaseParses command line arguments and holds the results
 CComparableMix-in that gives its subclass a full set of comparison operators
 CConnectionManages the connection to the database server
 CTooOldFunctor to test whether a given ConnectionInfo object is "too old"
 CConnectionPoolManages a pool of connections for programs that need more than one Connection object at a time, but can't predict how many they need in advance
 CDateTimeC++ form of SQL's DATETIME type
 CDateC++ form of SQL's DATE type
 CTimeC++ form of SQL's TIME type
 CDBDriverProvides a thin abstraction layer over the underlying database client library
 CExceptionBase class for all MySQL++ custom exceptions
 CBadConversionException thrown when a bad type conversion is attempted
 CBadFieldNameException thrown when a requested named field doesn't exist
 CBadIndexException thrown when an object with operator [] or an at() method gets called with a bad index
 CBadOptionException thrown when you pass an unrecognized option to Connection::set_option()
 CBadParamCountException thrown when not enough query parameters are provided
 CUseQueryErrorException thrown when something goes wrong in processing a "use" query
 CBadQueryException thrown when the database server encounters a problem while processing your query
 CConnectionFailedException thrown when there is a problem related to the database server connection
 CDBSelectionFailedException thrown when the program tries to select a new database and the database server refuses for some reason
 CMutexFailedException thrown when a BeecryptMutex object fails
 CObjectNotInitializedException thrown when you try to use an object that isn't completely initialized
 CSelfTestFailedUsed within MySQL++'s test harness only
 CTypeLookupFailedThrown from the C++ to SQL data type conversion routine when it can't figure out how to map the type
 CBadInsertPolicyException thrown when an insert policy is too strict to create a valid INSERT statement
 CFieldClass to hold information about a SQL field
 CFieldNamesHolds a list of SQL field names
 CFieldTypesA vector of SQL field types
 CSetA special std::set derivative for holding MySQL data sets
 CStringA std::string work-alike that can convert itself from SQL text data formats to C++ data types
 COptionalExceptionsInterface allowing a class to have optional exceptions
 CNoExceptionsDisable exceptions in an object derived from OptionalExceptions
 Cnull_typeThe type of the global mysqlpp::null object
 CNullIsNullClass for objects that define SQL null in terms of MySQL++'s null_type
 CNullIsZeroClass for objects that define SQL null as 0
 CNullIsBlankClass for objects that define SQL null as a blank C string
 CNullClass for holding data from a SQL column with the NULL attribute
 COptionDefine abstract interface for all *Option subclasses
 CDataOptionDefine abstract interface for all *Options that take a lone scalar as an argument
 CCompressOptionEnable data compression on the connection
 CConnectTimeoutOptionChange Connection::connect() default timeout
 CFoundRowsOptionMake Query::affected_rows() return number of matched rows
 CGuessConnectionOptionAllow C API to guess what kind of connection to use
 CIgnoreSpaceOptionAllow spaces after function names in queries
 CInitCommandOptionGive SQL executed on connect
 CInteractiveOptionAssert that this is an interactive program
 CLocalFilesOptionEnable LOAD DATA LOCAL statement
 CLocalInfileOptionEnable LOAD LOCAL INFILE statement
 CMultiResultsOptionEnable multiple result sets in a reply
 CMultiStatementsOptionEnable multiple queries in a request to the server
 CNamedPipeOptionSuggest use of named pipes
 CNoSchemaOptionDisable db.tbl.col syntax in queries
 CReadDefaultFileOptionOverride use of my.cnf
 CReadDefaultGroupOptionOverride use of my.cnf
 CReadTimeoutOptionSet timeout for IPC data reads
 CReconnectOptionEnable automatic reconnection to server
 CReportDataTruncationOptionSet reporting of data truncation errors
 CSecureAuthOptionEnforce use of secure authentication, refusing connection if not available
 CSetCharsetDirOptionGive path to charset definition files
 CSetCharsetNameOptionGive name of default charset
 CSetClientIpOptionFake client IP address when connecting to embedded server
 CSharedMemoryBaseNameOptionSet name of shmem segment for IPC
 CSslOptionSpecialized option for handling SSL parameters
 CUseEmbeddedConnectionOptionConnect to embedded server in preference to remote server
 CUseRemoteConnectionOptionConnect to remote server in preference to embedded server
 CWriteTimeoutOptionSet timeout for IPC data reads
 CSQLQueryParmsThis class holds the parameter values for filling template queries.
 CSQLParseElementUsed within Query to hold elements for parameterized queries
 CQueryA class for building and executing SQL queries
 CRefCountedPointerDestroyerFunctor to call delete on the pointer you pass to it
 CRefCountedPointerCreates an object that acts as a reference-counted pointer to another object
 CSimpleResultHolds information about the result of queries that don't return rows
 CResultBaseBase class for StoreQueryResult and UseQueryResult
 CStoreQueryResultStoreQueryResult set type for "store" queries
 CRefCountedPointerDestroyer< MYSQL_RES >Functor to call mysql_free_result() on the pointer you pass to it
 CUseQueryResultStoreQueryResult set type for "use" queries
 CRowManages rows from a result set
 CScopedConnectionGrabs a Connection from a ConnectionPool on construction and releases it back to the pool on destruction, and provides access to the relevant Connection pointer
 CSQLBufferHolds SQL data in string form plus type information for use in converting the string to compatible C++ data types
 CSQLStreamA class for building SQL-formatted strings
 CSQLTypeAdapterConverts many different data types to strings suitable for use in SQL queries
 CTCPConnectionSpecialization of Connection for TCP/IP
 Ctiny_intClass for holding an SQL TINYINT value
 CTransactionHelper object for creating exception-safe SQL transactions
 CNoTransactionCompile-time substitute for Transaction, which purposely does nothing. Use it to instantiate templates that take Transaction when you don't want transactions to be used
 Cmysql_type_infoSQL field type information
 CUnixDomainSocketConnectionSpecialization of Connection for Unix domain sockets
 Cequal_list_baHolds two lists of items, typically used to construct a SQL "equals clause"
 Cequal_list_bSame as equal_list_ba, plus the option to have some elements of the equals clause suppressed
 Cvalue_list_baHolds a list of items, typically used to construct a SQL "value list"
 Cvalue_list_bSame as value_list_ba, plus the option to have some elements of the list suppressed
 CWindowsNamedPipeConnectionSpecialization of Connection for Windows named pipes
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Transaction-members.html000644 000765 000024 00000017133 14042362132 026515 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::Transaction Member List

This is the complete list of members for mysqlpp::Transaction, including all inherited members.

commit()mysqlpp::Transaction
global enum valuemysqlpp::Transaction
IsolationLevel enum namemysqlpp::Transaction
IsolationScope enum namemysqlpp::Transaction
read_committed enum valuemysqlpp::Transaction
read_uncommitted enum valuemysqlpp::Transaction
repeatable_read enum valuemysqlpp::Transaction
rollback()mysqlpp::Transaction
serializable enum valuemysqlpp::Transaction
session enum valuemysqlpp::Transaction
this_transaction enum valuemysqlpp::Transaction
Transaction(Connection &conn, bool consistent=false)mysqlpp::Transaction
Transaction(Connection &conn, IsolationLevel level, IsolationScope scope=this_transaction, bool consistent=false)mysqlpp::Transaction
~Transaction()mysqlpp::Transaction
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1MultiResultsOption.html000644 000765 000024 00000030744 14042362132 026450 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::MultiResultsOption Class Reference
MySQL++  3.3.0
mysqlpp::MultiResultsOption Class Reference

Enable multiple result sets in a reply. More...

#include <options.h>

Inheritance diagram for mysqlpp::MultiResultsOption:
Collaboration diagram for mysqlpp::MultiResultsOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::DataOption< T >
typedef T ArgType
 Alias for template param.
 
- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 
- Protected Member Functions inherited from mysqlpp::DataOption< T >
 DataOption (const T &arg)
 Construct object.
 
- Protected Attributes inherited from mysqlpp::DataOption< T >
arg_
 The argument value.
 

Detailed Description

Enable multiple result sets in a reply.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/functions_l.html000644 000765 000024 00000011510 14042362132 022000 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
MySQL++  3.3.0
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Option__inherit__graph.png000644 000765 000024 00000364221 14042362133 027075 0ustar00tangentstaff000000 000000 ‰PNG  IHDRý©Lþ@sRGB®Îé@IDATxì]œTÕÛ~éîN P‹Ä$ä¯(!‚R"Š¢` ( ¡"Ò)HKJw³4,,q¿óœýîpgöÎîÌNï>ïï7;7Î=ñÜç¼qÞ“ÂP""@ˆ D ©#°8eR!ÇGˆ D€Ä"@Òç/"@ˆ@2A€¤ŸL^4‡Iˆ D 5! D€ÿ!P½zuY½zµÿ*dMD ¬]»V*W®çI’~Hx"x¢¢¢d×®]rçw&¾>I|@ ]»vâŽôiÞ÷X>Jˆ D ’ éGÒÛb_‰ D€ø€Ißðø( D€HB€>ýHz[ì+ DÀ-Z$>ø ¤K—ÎƒÒ ùï¿ÿdÙ²e’5kVyòÉ'%S¦L ? ‡’-[¶Ä©=þürñâE©Y³fœ{Á¸°sçNY±b…\¹rEÊ•+§û‘"E š^°`Ô¨QCÒ¦MëQy_ QÓ÷=>KˆC^~ùe9}ú´_zöÅ_ȳÏ>+[·n•íÛ·Kƒ dÔ¨Q~©Û›J~úé'ùþûïåøñã²téRýÁdÆŒú}›;w®7UúTöõ×_w¬ÒøôÓO¥~ýú²jÕ*9räˆôêÕKêÔ©#—.]rÛ†9˜9s¦\½zÕmY¿Þ@^  D€ø’%K*z?ÞÊzè!C‘†Q¨P!ãµ×^3Ú·ooäÍ›×xå•W EjFùòåË—/ë:¾úê+ãƒ>0Ô2@Ci±FžqâD£T©R†Zí` 6L_SÚ¼Q»vm#wîÜFóæÍM›6éã\¹rŠ uüI“&±ÿ~}¾wï^ã™gžÑÇñá{ëÖ-ãܹsFÓ¦Mõø6lèŸÝxÆŒc|ôÑGºÞ“'Oê~©I‘1cF£H‘"ÆòåË5FGÕeÌ?ŠôO>ùÄPän¨I˜qï½÷ê÷4}útcÛ¶mNãAY5I3Ô„Áxì±ÇŒlÙ²¸†w¸gÏã‰'žÐcÃo¿›„¿©üÑ®Ø"jú~B±2"@ˆ@Â`I_tt´L™2E©h&yœC;L:µÌŸ?_W4vìX½ÞZ¨IüóÏ?ÚÔs2´pEè²páBÙûàÁƒN+ÒE†²råJm>@ˆðÒ¾Eiå¢4r¹çž{¤téÒ¢4FiÒ¤‰6[ƒ(AÜ :eAÏ?ÿ\*HIJa)íY“¯]¯@– ñÎ;ˬY³t<«´}ݦÒt5©(«ƒ¼ÿþûú>üË-Z´T©Réɉ]½§NÒ„§4xM€H Ò¨Q#=6ÔɈ)3&®ÃL¯4fQÚ¬7ú€ ÊìÙ³5&è7&E÷ß¿ž” ¬§~ïøðŤ1˜h»¿ÿþ[âÙó;}úôºJ#—›7oÚšæ•uÄÑW6ÞmãÆõ¤ ï“ ×ñàýÀ5€÷£¬;<ï¸ã=áQ ¹ë®»œ05ûäé7IßS¤XŽ"àG@~”)SJΜ9j9üù矚øA  º4ÑÅ‹k-&ˆS™˜õ³î‚ö²gÏ®ïÇÄÄhbÉy ÇÖë8·  A³UffÇe´ mtß¾}mÔe6ך;ΕK@_†ÅBÙ˜Í"q®£ÿÛùóçõG™òE¹6äÀ:hfÉ’E@®ÞJ|ø¢]ô í"8ŒÑÝx̶¡õ» &c°ˆ@£· ¬°–@<ÁýA¿”KC?c‡'n¸bª {ñ‡¤ïX,JˆÐæ”ï^=´b´}|¦M›&>ú¨Ö’•¯WOpßtàØ*Ðf!xfiÌå0éƒô”OÚ¡âDà´SX#`z)A«íÛ·¯€œqÏÃW‚ÑÜ™Þu¥6ü¦b¤cÇŽòæ›o ¢ØaæF=¨—&@Üó‡Àº n Ll éW¨PÁv<˜p`⃱òbôçÐäÞ¿QC&L˜ Ý**ÎBŸc€{È’ ¿R¥Júºu<ˆô¯W¯ž~O¸‰:¼ÅSWšÀ’~ñ6 D ˜˜Ë¼@öðï?þøãºùçŸ^T0˜6uÓ1LØ*Oû¿á7¶ŠYÏøñãµ¹®Ów íþ{ˆæcÄÀªÿä+ÄÈ‘#µæ í^Òi“>|ï¨îx¦MöH? Òr³v×+?=\ˆM€F S~=Dõi+V!¨ ;©X±¢öÅ›. ×ú<=GT ›¨`E=~¤¬E|ƒ»ñ`| |¸asaZ.—€ Æ­‚µ«ý·ºR€“(˜ìQWŸ>}t[vã ñ Àþ|¸fìĦve]¯¥P¸m{q½Ës"@ˆð )ß¾–Á/Œ`1S #` ¤`  ×ô†@0øÃM¦14všÁGµä¸­õÂ… NAzæsvß 7´e êC9šaR¬X1MfvÏ&tMEÓë¾XÇ…g`N·º>°n ŒÃ‚x ÄdÈÁQ»ñ @ÑjþÇè·Õtr‡»Ät- ŒZé ß,è»éúÀ=wãAŒ°P«PÌkÁDÖ|»ÈâÔ.xJˆ !Fæn²«9Ù•pÑM ¤ïN ¥º ‚ÑðñT åÛ ˆ ¦r_Äi%O³.+áãßü)v3wãq%|ôõÏv8›ýµÃÏÝx'(¡¦(dY/ ÉhúÐðÐåF ÿ04GkÐ|î «Æˆerp¸V(_–"›žZóï÷n 6I|B%x'wˆ~ŧéÓ§ÄY' DÀà ö†ðшÝJø¸†s+á㢿ÉðÑ'¬_¿~=ý.ˆ¥€ìƒIø •¤ŸB¼Oˆ ÉŽ€3k" œ›)pi@?ÈÃ?,ݺuÓî•aNûÀ€ E¬N@!üöX#oÖ7dÈ€{XºˆCÔ6à+G"s‚0iÒ$¯€ÕH¸O ƒ°”QeÔqúÆÿÿA² ñY#ç­÷“ú1I?©¿aŽ"à#ˆ÷©c©[õêÕãä@‚!p) ù „ ó6’ð€ìdøË/¿è`6,õƒ ñˆÐÇuÆ!ð ËÕTJ]©ãyo²ù¡>,óˆYÀ « À×_­'h Žä$Îh$§‘s¬D€"  O,©ëÙ³§&b3HÓ…î®,-ÃJhâÐôñ,‚ÔïË/¿ÔK¡•›‚\ØÐ9à—Æò7S<Íæ‡:ZªõñX’øÖ[o™;¾Q?6ÆÁF=p+`e,æ¤ÅQ0‰ô“è‹å°ˆ þ@‰k@Ö/¼ð‚Πжº®YëÌÉ™Ié‘Zì°n{ ˜×uE5zßµôÉ5›ò /=\dÛs·¦ëä1&hþHkLÒ7ß¿‰ D Ù"€M}iw¡#™6α ÍÍnÜe4ËCûÆêµûžN„Í‚LAýÈ ˆH~lB£vþ3oÅù¶Ëæ>²"b«ð횊îä3@Š\Ä`Lõˆ @ð²ã™‚{µk×Ö“‹çž{N§¬……ÀUP»l~È\ˆdAHnƒ,„Xwo•7ÞxCOZip/X“óXË&Åc®ÓOŠo•c"D døc~È:ïaÃОñ±É![‚î°ANB‚|ûˆÖ‡¶m5¿ïW›ù ÿ?ö€› \¹rÚµ`5ù»Öí.›6íA¿µx»‰„k½‘|Îuú‘üöØw"@ˆ@˜!¢v%Säð„ð1Ä`é•ðq)qáN@Ð&O°‹ðñ r¸¦ïÅuì'àÚG\Oê„1Æ'qí&ñ•æ="@ˆ B‰„6lØ È‰´·v©kÔt²©–¤Ÿl^5Jˆˆ ìrâGFÏÿ— ä ÿwÄ"@ˆð Ôôý#+!D€Ä"“4’ÑØIºt…•O9§\¾¼Éî6¯¿!€¬„vÂè};Tx"àGnÝ2ä›oæËˆËdÖ¬®*`-‡kgUDÀcSÓ÷+$D€xÀÅ‹W¥}û_$:úºÌ›×C­/Ïê}%|‚ø úôý$«!D€¸"pà@”ÚËýk)U*¿Ú¦ ß žjúA‡œ "ؼù°Jñú“¼ùf]y啇’Ã9Æ@€¤/‰]$D ²ظñ ´h1\ùñ_Tieγ·I’~’~½ ÁFàÈ‘s*7ý0Eø/‘ðƒ >ÛK’~‚± DÀ3öì9%5j|"?ýÔJy„¾g¨±T0` _0Ñf[D€$YNœ¸ Í›ÿ ½z5” îM²ãäÀ"jú‘ýþØ{"@Â,ǃI¿mÛÚêS3 zÄ.{¨éÛã«D€è×oªÚ./ ßcÄX0TPÓòl—$ÀäÉëäï¿wÉܹ=’Äx8ˆ¤I?i¿_ŽŽ"°{÷Iyï½)*ñNGɘ1m[bÕDÀ?мïY  ÉÎÇIŸ>¤téüÉpôr$"@ÒÄ·Æ>"r†],™2¥SûÕCÞv€xŠÍûž"ÅrD€ÿG9õ±kvÌ£HB€š~$½-ö•°@ GñÒ­ÛãR´h®°è;Aúhº ÐXR¤Hªn°]"hHú‰†Ž"Ü=z…+–KjÖ,åÓÐoܸ!iÒ¤ñ©>œ<3fŒÊþøR¢OÒO4t|ä„À¥K×äë¯çÉäÉ}öõë×%}úôís]¬ ù ðí·ßʪU«|"}úô“Ïï…#%DÀFŒX¦wÎCº] ˆT¨éGê›c¿‰W¯^—á×Ȕ)‚Ö&"@€š~ PeD€$)ÆŽ])÷ß_Roª“¤ÆÁ$;¨é'»WÎ"à ˆØÿá‡E2jTo û²ˆ'X³f JôÏVÀsçΕ›7o:»víÚ’!C§k¾žÌœ9Sž|òIÙ°aƒ?~ÜQ]¡B…¤\¹r’2¥uÙS§NÉ’%KäСCr×]w)Ï#*c&G»ñ,X°@jÔ¨!iӆϾ $ýøÞï"ì˜6m½”)S@Ê—/œ¤°8zô¨´iÓFvíÚå—q=÷Üs*%qsÉž=»£¾jÕªùô›6m*W®\‘þýûëïÊ•+Ë­[·ÔN‡‹a²xñb¿-§ÄD¦}ûöR¥J)[¶¬šüý o½õ–üñÇê÷PÞ1NëÁO?ý$111òÆo&(U«V +ÒH"@ˆpƒ@£F_ýµÅÍÝÄ]V¤e¨èýxÞ³gQ§Nã™gž1Š-j 0ÀxôÑG C† 1Nœ8a(â1._¾¬ëùꫯŒ>øÀX½zµ¡´w#Ož]—ýý÷ßÞ½{ëã·ß~ÛP¨•ök Ï®òÝwß… 6 ,h|óÍ7ú6úõ×_écEŒFÏž=õ³O<ñ„/úñúë¯ëû×®]3Z·n­ëhÕª•¡´f}]M2 EÂúж"_ãܹsÆ‘#GŒÇ{ÌÈ–-›ÆãG_GŽ©Ë?õÔSÆðáÃõ1ƨ"âõ½2eÊh¬ùåCM$tŸ§M›¦Ë™>üðC£^½zÆÆ§Ÿ~Ú¨[·®‘/_>£_¿~ƶmیܹs¹rå20.¼¿Ó§OÛöõ=ôÐCF×®]üùóÊ‚`œ={ÖlÆöøuèÐÁöž‡ù×bîð˜"álÛvTŽ;/=vOÐG¢ÈN.\(Š`äý÷ß—wÞyGYÉ÷ß/EŒ’:uj™?¾îÛØ±cZïG}$¯¼òŠüóÏ?²lÙ2Ù¹s§|ñÅ*epQ]ÌÔtÏ¿ÿþ+9räÐ&s˜³gÍš¥MçsæÌÑZí AƒD½~F‘·Ü}÷ÝúX‘¤àÜ”^½zÉ«¯¾ª?Æ “ .ˆšˆ´_5Q‘O>ùD.]º$Š„õ=þlÚ´Iç:€9]iÞÒ¨Q#}“–ß~ûMJ•*¥'p €Ð1éÀDå0aÀ3ˆPÚ¹n&ù_|Q—ÁdY¯^½êäÃW‡¹õ+m_·Ù°aC=^øûS¥Jå(ƒ›výÁä õc¢¤,0¢¬z¼º²þ¡¦@pY5 ‘‹À•+1J ܨ¡<²A@;‡6í6sæÌq²ø5nÜXþüóOMh 2Œ)7€tïÞ]û¶¡‘ïß¿_“I‘"Eô8Ò¥Kg;Ó…†1¯á×aˆO0AéÑ£‡þ€1I¡šß;´k«œ9sÆqŠ1š‚q+“µÖ¸Aö¬Y³:ùëÑ&° `R¢Ç3˜,˜íšmB›É¢,ú†:1ùQn}8‚x¡±Ã¯Ü(¬LKŠÙ/õ™–Oðq׳>sÌæxÍëú&é YÖKˆ@D#0sæ¿òÀ%%gNÏ"µC1Xhà /=´~ÌÊø(_´6MÃt ³7Ü ®$¦/ª?‹-ÒÑ÷ ?­A@p M˜×¡ÁVªTI›æ·nݪïÃÌ Ó¼;†z1‰€IÙä`.‡ ~ûöíú1wý1ëDßa‚7Mñ Q;%®¬ €Kã‡L˜0Aãc<\ Ê—®W- :T_ƒå¤Y³fz²´bÅ mYkV˜æUœ×}?~¼îùòáë²° ,_¾\0 ƒÀc &îúc– æ7I?˜h³-"@")SÖ)óvå°ì/ˆÄ=ÈÎ4¡«@ ˜2Á#Š8˜&}XV0ÙP‘R¿~}íJ©X±¢Jä4\›ôu£ê»þ˜÷ñ±Úah-ããjÖd?mòGí¬ƒ"œ:uQi‚”Ï÷CE2þ}Âùœ9sú%÷þ§Ÿ~*ð3«è}Òˆ€/Äe 4`\GдWkÐ6ÿA@Ö½›n³¡L@´¦ڬϛo©¡}«)8G› kOäÀºoÖ@¾„žSýO77By4âÝXš>&˜Á EþxÄ-À’aÆÌàÛ·Š·ý±>‹cäÞÿï¿ÿô·ë=Ïûÿ×ìaË,FˆW¦MÛ 4çò!|޹cÇŽšt@¥ƒøÂøš½!|Œ¦n+áãšéŽcS@öþ&|ÔØ3ÐlËÛoØa¢J™?˜„ﯱ’ôý…$ë!D I 0wîVµt«Œ"Sþ÷èë Eô?Ö¾» ’a‚À83ŠKåà^Àú~h´øÑ±äŠ ´±råJa• æDµÏEHúü"@þèèëŠHkÍ܇%zXGÕÈd‡y3³ëØ –¢Mä @ÞX°6çgHúÎxðŒdŒÀ²e;•ɹ˜ZžfŸµ.CãÑБù/¼ð‚^ÛïnyV@õŽUãv™ûph—Y/¾Ž¨}tÛØz–L:(Îôñà É%KvH­ZqÍÑɯ†ŽÌ}ðÇ#k–Øa“ ¬¯wh÷hîHüc—¹×=Íd‡Hz$ Â^÷xä ƒÚ¡ÐµédÎuúÉþ'@ˆ0X¾|§"­—ÌS~{‰2Ê!m.>{÷îÕyì‘çÞÕÌŽÍo01€/{Ö[3÷]¼xQkëÈ5€LvØÏÞL„²¦X³×aG?Ô‡¼È@h&Ð1Ëòû6\§ "ŒÀR½Úµ?SùÔ?8 þZ§ðŽú¡háv$ŒÈ|,D*[Sì2÷á^B™ìܵaÖ›T¾ý±NŸš~Rù5pD€ø„Àòå»T—;}ªƒÇEÀŽðQ ùî]Å.sÊ$”ÉÎ]®õóœÑûü "@4 ý5J "¤` _’~½ ž"°jÕµT,0iw=íË@#@Ò4¬Ÿ°GàÌ™ËuIm‘z{¸@u:&æ¦|úél•÷öxj‹õWèÓwE„çD€$;Ö­Û¯öQ/ðqoÙrDE¤SûÖçV›µì Êþé*cÆŒñ©=’¾Oðña"@’ë×J•¼ßºÕ›±¾T-œ¯6œyZž{®²üüskogY"àHú~‘•"ɬ]»_:t¨! µoÏžÈÎÇeΜîjOûÛ[Ú¤AVJâA€>ýxÀá-"@’ÿþ{H¥ß-î÷Á=zNž~z°®wÚ´Î$|¿#Ì ½E€š¾·ˆ±< I Ý»Oª$1™ýžoïÞS*³ÜÒ®Ý#Ò¦M$…¹ô#÷ݱçD€ømÛŽª4°qÅøR5ö^|q¨ôíÛHš4©êKU|–ø’¾_ádeD€D[·‘rå ù­Û§N]TÈ|!ƽ" Þç·zYðôéûEÖAˆ@Ä"Ò¿çÿþ¾}§å¾ûÞ“ÁƒÿGÂØ_DÒî8I?i¿_ŽŽغõ¨”-ë;écÞfÍ~›JãÆUh•·‰@h é‡w¶Jˆ@ €L|ׯßB…²ûÔ›èèùßÿ†JÛ¶5套ð©.>L‰I?è²n"@Â]»NH‰y|îã»ïN‘R¥ò+Ò¯ås]¬€ò]ÖMˆ@X#€åzwޙϧ>Ž¿ZÖ¬Ù§ïtó©>L‚I?(³ "@ÂÝ»Oø´É²ì}üñL™1£‹dÈ6,ÇÈN+4ï[Ñà1 É _4}Ã0¤k×ßUŠÝúrǹ’nlä"@ÒÜwÇž"à#±¤Ÿ¸ít‡ ["3¦eàžï€š÷ƒ‹7[#D L¸qã–œ8q^osëm—öï?­vÌ[ ³gÓï-v,Z¨é‡¶Nˆ@ˆ8x0JòçÏ–¨=íûõ›*;>*… çQïÙ,H$ýÄáÆ§ˆˆp:#EŠäôzË—ïRÛäžÖ­¹‰Ž×àñ#@Òù+`ˆ ý¢E½ ÀCðÞ{ïMQŸ§$MšT¡è6Û$>!@Ÿ¾Oðña"@"˜÷½Õôÿ}µäÍ›Uê×/Ÿèa¿ùæ›*7ÿàD?ωطoŸ+VÌk0¨é{  D ) pð wšþ­[† 2_ºu{ܧáïܹSþüóOÕ€b˜ß@íÚµ5é'æ‡HÒO j|†ˆGæ}oÖ×O™²Nçè¯V­xÄH¾ô“ï»çȉ@²FàèÑsR @60€66xð<•Œ§žGåYˆ„+$ýp}3ì C¦ú¨¨KÚ?ïI#³go–\¹2ËCÝåIq–!a‹I?l_ ;Fˆ@ 8yò‚&ñ”)SxÔÄȑ˥U«¤³DoÑ¢EríÚ5ÆžP¡mÛ¶©%Œ;*æ×ûW¯^•©S§Ê¯¿þ*§OŸökÝî*ÃGŽ)ß}÷,Y²DÇc¸+k½~ùòeYºt©õRHIú!…Ÿ" Nœ¸ ùòeõ¨i¤êż ÜëQùH(ôòË/û,øáùå—_‚6ìÿýW*Uª$ëÖ­׬YSæÎÐö?ýôSµb£¾¬ZµJŽ9"½zõ’:uêÈ¥K—ܶûúë¯ËêÕ«åÂ… ïŸÛNØÜ éÛ€ÂKD€$mŽ;ï±?ĈeҢŃ’:uðþ»ìÖ­›¼úê«jÀ;5¹ 4H-/,">ø œ:uJM@ÈòåËõKúûï¿¥Q£FÊ]%Mš4‘úH>ûì3™2eŠœ?^ß«R¥Š´oß^Mèòéö¯\¹"7oÞÔcD;<ð€,[¶L—…¶Žþ`ì Ð×`µÆ(‹>߸qC¶oß®vRüXã=tèPùä“OdåÊ•’2eJùæ›oä矖W^yEî»ï>•Ò¹¸Úqq†ž=Z÷“„­[·êúñÎÊ•+'9sæÔïõÿþûïÒ¦MAß .,#FŒÐeõ'x¿â@€õ"@¼D9÷óåK8ˆ/::F™‘×KË–yÙ‚oÅA lj'jMqìØ±*Ïÿl•(LŸ>]î¾ûn™ø@~úé'µ rˆ&R´‹:0`… “ä48p ¼ýöÛzl˜¤`B€5ê:u’ýû÷ëÉúÍ?G޲aÃ=9š5k–&á-[¶hËêE»ž={ª$Kïi-“ŽcÇŽék˜ÌÀu“<uarP @ýœùËæPïñãÇeΜ9òÇ&g½{÷–fÍš ÆúÕW_©M™2ꉞëÞ½»Û¼yó4&˜xœ={V·‹ ,˜ÈRHúD—u"–œû¬®ï“´{Ù²ÝÞÛ´ÙµkW=!€Eœ¸ÁRÜZ´h¡ñqmËŸç$}¢ÉºˆˆNŸ¾¨4ÂŒ öuâĵŠP«$X.@:˜‘a¶ 4îèèhMòø†Ö ’3fŒ&ÂÇ{L`ÁÂd IŸ>½µ Çqö챓Ÿ˜˜­ã†y ÇÖë8w'p XÛ°öHêÔ©uÜÁƒµåÁ¬ „ r…äÍ»Õ1úâ„éô½÷Þ+ð¯ƒ<[µj%°* Ѭ¦˜}G¿aQ€ÖŽÉ¬ðÿCоÙ'œçÊ•K“5Ü!ÀíÁÜ‹&S›7oÖ¸¢¬)ÐÒaa˜mâØ^‡ÖV”XÇlöÅÄ'¶D`þ’ôƒ+k%D ŒÀr=,Á‹ONº¨Lì”6Z.¾b!¹—"E ­!ü íço½õ–&.˜¤ûöí«µÖ'žxBGš£“Юí¦r´`˜¥!ðmC[ùÁ6 8F4:´Y3¦@ßPà{G]/^Ôfï;v˜·â|CÃGY2Èr>ú¨S9hüh«cÇŽ‚ÔÅ ,Єš*U*mq€9‚:012õÂÉ@Ù²eµùZÿ‡~¨³Ø!ç\Æ -¦xLX0L˜Þyç#T·ˆ¹Ãš¢†`²·HË–-õ9&¸·víZíú€u‚I„)hxÂÅ‚‰ÅÌ™3¥nݺæí }3÷~РfCD€„ gÎ\Nô'O^§ä*Hºtáóß$È´WøÃ¡C éãóÅ_8|ãÅ”ßÚ?‚Ç@„ º ÚTV‚8ïȵ\|çjÂd¨‰O|EÜÝ[wæ÷i+$D€„0ïçÌ™Ém§NŸ¾¤–›Û |0áCS…Voh׈4w¶A[v'¦ßßzš.>ž 4WôZ7´ë7Þx#ÁçáKOH ][}æfywס™Ã`sÅ®™þs§K—Npl VH@k·;œÌrvc±ë7Ú„µ"TBÒòl—!páÂÕxIΜÍÊÇ\&¨kó½æhøß­–Ðó pÇYfkDÈ[+Ì•Öë ƒ,qe€0­Û‘ ê@D<ÌúÖ@¿„êv½¿=ÖÓƒ@­??|þÁDãG’ÜŽ~ˆ¤^³¯D€D"pþ|´ò7Ç.µrWHÿ‰'Ê»»òëY³fõŠðÍcý¾U°¤ dmøáí4Tk™øŽ‘PÈáã9,µ3“ÕÄWO|÷Üet_|uøë&M®'ÕˆzHú@•u"¶\¸-Y³fpÛ¿èèë²fÍ>pUÖmÞð DµÃÌï*p Ëâñb—¡9 áŽI¢û±>ßN°,ïóÏ?׌v÷yí6$ýÛXðˆd€4ýlÙÜ“þªU{T´{aÉÁYNÐøeˆˆ@*Y,QÃZzDó» ÖÌÃD_¾|y½+ì2ô!“$ËËàÇt­JŸ£ $î)¦V+ 9‘°-œÌ/’ô“ù€Ã'É „4ý%Kv¨åaq‰*¹á”˜ñb-<–¾!/òÕÿ y®‚,€XŠ×£Gù믿Üfèò8¤¦E`&f;×ú¼ˆ6‘{À*€åp8§8#@ÒwƃgD€$qÒô—.Ý¡2·ÙGo'qh|üdÉ’E¯‹ÇztkÒkåf{ªµe:CžÕµóHlƒÀCó:®™Yû¬uY]5ùH½ K&gHúÎxðŒ$Ž@|š>²ð;vNí˜æ¼ä+‰Câ·á!#6¯AÂhüÈl§ÖØÇ©Ú=š;&vúpÚ:&dÁs—Á“¬Dxä‘Gô3 LF—⌗ì9ãÁ3"@’8X®—=»ó25sÈ+W.åÈzg^ç·g ›Rÿâƒ4µÎÆ=®fv, Äľ|dñs—¡›ac¸ +€²¦X3× 6Lׇ”½ØüÆ. ù\rÿN´=ÉŽŸäƒÀàÁó\W[µ6ˆ3è¾}'«Ä.9Õ.oµãÜóפ~9á;9´p;Fd>L÷æNuÀ"**J§¨5Sòšø`§=¤Ðu]^hÞw׆y?©}âmñí¥,¦¦ï%b,Nˆ@d#påJŒZãnŸiKõž{®rd0ÌzoGøè"²ºŠ»õýØé.>q×F|Ï$×{ôé'×7ÏqdŠÀåË×l“ó`2°gÏ)µŒ,v+Úd ‡Ä é'ñÌá"àŒÈ=cFçô­(±nÝ~µ_{aeBnWçÞñŒ’~`ñeíD€„î4ý ª qŬ·ìð/ôéûOÖFˆ@˜#«éÇͽ¿iÓ!yꩊíý¡CgäøñÒ:¢=  ±ò$ÀÈ‘#5Fjú‰‚"© r?S¦¸æý͛ԟ?yò:©_ÿK•…®™NHƒ…SüƒÄþr81BM?1¨ñ"@"~š4Îÿõ!KßÙ³WÔ>çλÐùc7nÜ’>}&É?ÿìU f:¨ýî ø£ZÖA…€ó/?QUð!"@ˆ@ä sC­ wÖƒi?QûQQ—äµ×~Q©iÓ«óÝÕþïü/7r~)I³§4ï'Í÷ÊQ"àhúéÓ;ï ·}û1¿“þÁƒQ*ü`©Zµ˜ŒÕ†„ïæ}ðrpà´3¸x³5"@BŒ@LÌM¥é;ÿ×÷ßǤråb~ëÙ®]'¤Y³¤wï'¥qã*~«—_ ¦ï+‚|žˆB Ö¼ïLú;wWÛ·æóË8Μ¹¬²ú}«Ò¤>MÂ÷ ¢¬ÄŸôý‰&ë"D ì¸vízSûŽÇ¥tißìöï?-åÊõU{Ôo]þö@³ƒa‰I?,_ ;Eˆ@ ¸~ý¦“OÿèÑs:Ö¬öùø=íÇÉ“´I¿gÏújO÷jž>ÆrD ¨8Û¸‚Ú4#D€,¡³nË ÿ»¯Ëèåïÿ*­[×è}ÁG‹-&5¨é'µ7Êñ"/7nÜT[½Þþ¯oß¾SjÛÖ\ñ>“ÐÍ7ßüMåí/BÂO(Þ9ÔôCþ Ø"@‚‰ÀÍ›†¤Ju›ôá‡÷%)Ï!ó.‚)S:sl‹$ Û¿üD=·ˆ ‘…À­[·$eÊŽNïß%wÜ‘¸L|óçoSkð—ËÈ‘­ã$üq4À"FPÓ£—Á®"XàÏOÚ9Ìû‰Ñôwï>)]»þ&cÆ´•¼y³¶ã¬ø jú~’Õ"þ¸úóÑcdλãï|ú—.]“–-’?|V*T(þg‰Àÿ#@ÒçOdƒv4³jú§N]”ìÙ39-áóŒ=ÆK¥äÙg+yRœeˆ@Ø @ó~ؼ v„@#pëVìV®f;‡Ÿ•²™§}»Rvï>!³fuó¨< pB€¤Noƒ}!D ¨=zV Ìîq›Ø˜çÓOÿ”3ÞdàžÇ¨±`8!@ó~8½ ö…€" ¬ûN‰y°Ô®P¡µyåJŒ´m;Rú÷>Q5ÂBD ÀPÓ0À¬žðEàÈ‘³“þÛoOÐ~üÄæÔ¿|ù²J÷›9|Á`Ï"/¿üR­ éêU¿Iú^ÁÅÂD€D2äKq{‰¾Jªs^íw_<Á!ÍšµI6l8 ôL°¬»—.]RKûòʉ'Üáu"à1£G–ùóç{\Þ,HÒ7‘à7 É'ÎKž<ñ¯±Šº$½zM”Ñ£_³;_²ŒŽxèÓøWÈ"à)ØhÇšïäÉ‹JûÎïãXž÷â‹÷s=~¼(ñf¤ @M?RÞûIˆ€ÏÀ´¬|¦œ:u!Þlz&¬‘C‡ÎÈðá­ÌGøM"júýúØy"@¼AZ>üúDãC2fL«¿]ÿ;v^eÜ›.ß|ó’Ó®|®å"é<::Z–.]ê—._¿~]fÏžíÀÓ®Ò HLL,ÎÖû'Ož”_ýU†*ÇŽ³Þ »ã™3g:útêÔ)™8q¢|õÕW‚ëÎôT6nÜc%é{úÆXŽˆG eÊ”róf¬¦òä…xýùï¾;Y-Ñ«%eʈøq›8zô¨´iÓÆ<õéûÂ… Ò Ae9¹á¶ãÕ«Wå§Ÿ~’ï¿ÿ^—[´h‘<üðÃò×_É™3g¤cÇŽÒ¾}{·u„úFÓ¦MuæÎ+Õ«W—?þøC0ö~øAªT©"›7ovÛE½‰÷ªU«”ÕèÛ²ÁºAÒÒl‡#MYù HÁ›?¿}ß¼y[å¿ÿŽÉë¯?Ô>ïÝ»W}ôQ•Þ÷YµÀ*ЧòØc©B•ÅáùóÏ?å…^pôéÿûŸÌ™3Gíô7Jî¹çý ¢º!K–,‘»ï¾[Å"TÐÏüüóÏŽçpÂÙæË—O7n¬,We^yå¹ï¾ûT.‚â* Ñ ýÌøñã¥OŸ>ú¸W¯^2aÂ}lþéÖ­›tîÜYJ”(¡&IedýúõúÖ¦M›dëÖ­òÎ;ïÈ{ï½§ûߪU+ÁR³_~ùE_Ÿ4i’”,YR¯jÀ¤¤nݺ*5rvÑ#G$!LÐ&o¼ñ†.\XÚµk§ÞÛëz\-[¶Ô–ˆÃ‡KÆ õµúõë«wJ÷Ï¡ï :uêȹsç´eD]¤Hiݺµš$ÞÔu ß_ýµ&ý~ýúé±ÿ=zÈ¿ÿþ+Ï<óŒÔ«WOý¦òËû￯ëñÅå·ß~Óçûö퓳gÏ ,$èc®\¹¤lٲˋ]_t%~þCÒ÷3 ¬ŽðEÀJúgÎ\Vä’1Ng££¯+2š(ƒ5“4iœwä‹SØÏ®]»& .ÔäâY>õÔSZK8p Üÿý2mÚ4­!ƒ@¦N*÷Þ{¯têÔIô¸qãäã?Ö½Âúí:®apúôi§Þ‚¨räÈ¡–"nÐ$8kÖ,9~ü¸žD@›4hôîÝ[?ƒI&:έrþçŸô²Ê•+k³=îoÙ²EŠ-*¯¾úª¼üòËjydU9pà€<ôÐCÖÇå­·ÞÒ„}ºÆïV ¸0ðÎÊ—/¯Ç·ÿ~MúXf·fÍY¼x±4oÞÜ1™²ë‹µ-3Ï_H²"@ÂT©n›÷Ï»bKú_|1GxàNõ)’ñdÉ’E¹ÚjÒȘ1£ÖZ¡‚t Ö¬YS“ȨV­ZšÄîºë.­éB³aB“É€ôQ;éÒ¥‹ÖL¡Ñ‚ô¡qÃÊPºtiýLÌ:Ð>&ÐöaÁ€åãn Г™ï¾ûNÖ­[çH’„Õ°\+VLkú0¿c AµjÕ”û'Œ9R»0P® ŒÅä\H›66&}~úé§õ-X`iÒ¤qzcÞ˜ àóí·ßj+‡]_ÌvüùMMߟh²."@"³g/+â¹ý8:“þøñ«á<²q@3N:µ&kdðiX¦xøÊazÇ1Èf˜§¡a‚ø@^0Ûƒð!éÒ¥³Vá8†‚`;ø©!æ5ãºi Çy|bfDßÍ`I×ò o$(‚6l ÊbÒíýÎ;·¾uëÖ-G¼@B˜à,cΙ3§>6ÿôìÙSe~¨q>Vqí7 Aö¬Y³j| *¤ŸuM†cºPPÖSÜ0‰2Ljç±B\û¢/úùIßÏ€²:"@´iSë`¾³g¯Ä!ý¾}'+“zCEΓp|Ç*ÃÇÐd›5k&Ý»w—+Vh ,ЦA¢ “ÀŸ5& ð/CP$7´ÚJ•* |âðÍC`²‡9ß[µÒ¢E gN2† ¦ÛÃ'÷qðïûC4øÙgŸé”µpC¸›” ­'žxBOª€&W( kÜp?ÀïÙ¾}»š Žw!nÛ¶McþüyY¾|¹ž¡œ9nCüq]/pÇä1ˆ)–м,¤Ù aLü117•õ² Öº­"xïôéK*è­zXôÓµÐè!ÐB+V¬¨5O;Ú3´a|Ô @L`þ‡˜š$ŽÍzp eà†©flX @ð0U#$‡òðñ/[¶LûÈáç‡oû¥—^Bu¶b¶aÞDAöè‚àÐ.LïX@žÂ4¸˜Ò1±‰O\Û±+‹20§ãK&7˜P@û· ÊáóüóÏëñOàkZI0i€Ù4, Ÿ|ò‰6éc²3?\XƇ:ðàÎØ³g³ÙÖsÏ=§c1( ÷&=®böÅõº_ÎÕ,†BˆH6”*Õ˸p!Úh×îcæÌzÜ7nÜ4jÔøÄX¸p{ÀpPAr†"e¿Ô¯´ECñ9Õµ{÷nCùÙ®]¼xÑPÆÛo¿m¨•N÷ÙÊ|o(s³ãzÿþý¾}ûŠð <ëOQdh(íÙQ¥"uCE´jòá¸f`,è›?EÖj‚£«TKmÛµ¶§b" ¥[/éc੬†Òà÷”fo¨è{CYW EäŽë8À80VWî¾`¬V?j"åZmB狨éûeêÄJˆˆ‘ýúM9þŠò¡¦×Ý;v¥ŠHÏ!<¡Îc6 ³{£Fœº‰ æl‘"`ÕôÑQ£–«5ÕÝBØ#6M‚‡I?xX³%"@ÂtéRkŸ>Ìû'®ÕZ¾5Š?P]„YÚҤɡb ª©¥_ñG¦ª¬7é €tÆÞ Iß[ÄXžˆFæýk×n¨%a×|ÁÒòӥˠòçÏWkÔéä?ÿÑ8²ó‘‰I?2ß{Mˆ@"@rµdO¶Á— -ÿþÓjýùhµî;³Z{Þ]âÅMA›Èáð1"àÌÈç\,Lˆ@¤#óþéÓt&ºîÝøp¦NÝ O>ùµJfó€Úüæ5~Àgñ!@M?>tx$‡HîÜm*ÓZš€°Ê9#Hë»té•®CĬHr/œrB€¤ïOˆHê¤M›Jm»º]mz’%`C½|ùšÚ3ý]ÿ¼y=T:ÖØØÖ +&"@󾡓ý7@IDAT‡@± I³g£UÖ´4ÛTçÆ[*ÿýáo̘¶$ü¤ñ³I2£ é'™WÉ"à ª«P¡¨JXãíö-Ú]m¼R\lâØÜÆ“~± $ý` Ì6ˆ ¶o?¦¶œÑ¾|DñûS¢¢.©ÝÕ¾•7Þ¨#4ögÕ¬‹ø ÿþêýÖ-VDˆð?ãÆ­T[ºæ—+W®©$9Îyç}iíÂ…«jÿôïÕ§ªtêô¨/UñY"P¨é^VNˆ@¸ sS&O^'÷ÝWD‘~ŒÚÿÜ?:ÏÍ›·¤mÛ‘òàƒw’ðÃåe³n é»…†7ˆHJÌšµIûòóæÍªIK÷ü!Ý»—ŒÓÊG=ëêX($ý€ÂËʉ~ûm•4o^]4RðúüÿÕWså¿ÿŽÉ÷ß¿¬2ü¥—¡²DÀ-$}·Ðð I#GÎʶmG¥Aƒ{õ:¾¯æýI“ÖÊøñ«å×_Û©:Ó$¨8Ž$Ž€ì[I$ÈF`úôšðS¥J© îøbÞ߸ñ ¼ÿþ4™:µsÀÖûG6âì}¸"@M?\ß ûEˆ€ßé?õT]_ÆŒé$&æz¢ÍñX‹ß¦ÍHùòˤdÉ<~ë#+"Á@€¤ ”Ù !Càðá³røðyà;u`Љ¹¡wÙó¶SȶצͽyNݺe½}œå‰@È é‡ü°D€éÓ7HÆ÷94{äÁ‰¹%0õ{+Ø@ÛãvíZÏÛGYž„ÞÿêâÛì DÀ3fÌøWžy¦¢£p,éßÔ©½ûïï?ÖȪU{ä»ïZ8êâˆ4ÈioŒý%DÀcàß·ï”Ê…_Âñ ÖÔ_¿~Ó+óþ¾}§åçɤI©¿zõj©^½º£< &Ù²e“sçΙ§>“ô}†"®,\¸]jÕ*í0í£Ÿ±šþMµNß3M„×^%½z5Ô)|1V~‡äÛo¿ Dõ¬3BˆŽŽV«Crúµ÷žýêýÚ$+#D€E‹¶Ë#”qj |7nÜÃpºìö䣦K±b¹uðžÛB¼A"’~„¼(v“ï¸uË%KvH:w;=MÚ{ è-X°MæÎÝ*_}ÕÜ©žHE€æýH}sì7 ñ"°aÃA)R$§ ×¾U éc“œ„äüùhA^ýáÃ[JæÌé*ÎûD " éGÄkb'‰ð+véïìžCä>vÝ‹O°<ïé§+JÕªÅã+–dîmÚ´IòäÉ# ðyL'NœP”ûäþûï÷¹®ÄVpðàA¹xñ¢”-ë}>…•+WÊúõëUüGZMÊ•+çQ7|iÓ£üPˆæ}?€È*ˆ?V¯Þëµoí!Rð"A;™7o«¬]»_Þy§¡»"Iîú AƒdáÂ…~×òåË••¤»Ûº6nܨ’µq{ß—U«VU–œ›²wï^MÜÞÔuýúuyî¹ç¤cÇŽràÀY·n>o,¨ß—6½éŸ?Ê’ôý"ë D ¬0T”Þš5ûÔ2¸¶ýÂf;ðëÛ Ìú={NÁƒÿ'éÓ‡ÏF:¿ÿþ»üïÿÓÍ‘þ÷ÜsÜyç²bÅ éׯŸJ ü¥¢¾ï»ï>‰ŠŠÒä[¨P!}¾aÃ}ðàÁÊõQD{ì1©_¿¾lÞ¼ÙÅÏ?ÿ,¯¼òŠ._¼xq™1c†¾÷ú믫U ¯ÉwÜ¡µß]»véë½zõ’ &èãÇ\vïÞí¨ ?ü°tëÖM[êÔ©£—Ÿ½øâ‹òÛo¿©ý Þ—óçÏK³fÍ$þüòä“OÊÉ“'õó(ûÎ;ïèk‡V –J¾|ùtO:¥Ë` T[&WÐýÄ ˆµk×êgPš÷[o½%ß|ó.õêU©X±¢œ>}Z-¿œ¤Vc”–»îºK¹p†ëû#FŒÐd:¨r2|§~GkdäÈ‘íß»6QÙ÷߯1öæª àйsg)Q¢„”)SÆëI‰î¤Hú>Èlj?¶o?¦"«ÛÍpÒ¦M#ØtÇN­d>Õª…—YÿìÙ³2}útùú믕ÛâAéÑ£‡&+h¦?þø£T®\YÆŽ«‡´`Áµ‹`Zµ³à6™5k–lݺUù!Cõ|ðÁº,4Ú¿þúK®\¹â€âøñã2gÎùã?ÚïÞ½õ=9´g_5Ô¤h°¾òñB`ÎÏ”)“>6ÿìܹS׿téR= ™={¶&ÔòåËkBáBÆ•ÏvéÒE?Šç@¸~ø¡|þùç‚ ÈŽ;ôäaèСráÂùøãU å\=L>ýôSaôèÑšØ:¤q7nœ®¸¤K—N²gÏ® c¹¿ýöÛj‹äÿ´fÿ裪 ÏÛQžX'‰Â–-[ô„Æ»6Ñ7`üÓO? 0ÿä“OäÒ¥KräÈùçŸdþüùº_G°…>ý`#Îöˆ8ñ™öÑxÚ´©ÅÄé‚ÿ,Ø.Ë—¿ç^8\¨Y³¦<ôÐCZ…ÏÇД¿øâ –Ý¢E M,ÐÎ7n¬­Ð’¡í>ûì³Ò©S'=qÀsµjÕÒC‚¦ë*( -< òꫯj‚‡¶úÈ#èk° ˜¢s(¬ÅŠS+)ꈓ–4iÒh’ÇD–‹E‹ib‡‚ç0éább‰4o˜Ü3gά‰cÀ³ø “<—#GG75j¤û ÂÔ©S¥yóæ‚ HÆŒeÏž=º´qLfnܸ!°¸ b0‰‚¸b-ÞµÍyóæé‰Þ VLv °@ÓoÒ¤‰„‚ô©éë×À?D€$%6n<oÌöÑÑΤ—@¯^ä½÷žRäžÑú HÊ”)ã$m ó8æÌ™šôA„ð¯ƒa†á€taÚ7Ϲ 4aSbbbÄ4§›×­×Ìrñ}ƒ¤!©S§Vùœ$ ?¸†ÉKÖ¬YÕ¾]UåÍ›W÷ìÙSküè+üçýû÷ëòúDýqƒ|]¸0€ÉŸþ)M›6Õ€ÄÑ&>˜Ü{ï½j×Ä’¶ Æ‹ÉÝwÇ.ýôL’rçÎí¨æÖ­[zB ñaáx €$ý‚˪‰ ›7VþîX“³]àÓw ä=úoõrz¥W²{$"®A»0`€ö}ƒÀ&Ož,£FÒ&løÝaBâ‰'ôDZ-È ftWY²d‰€¨àÛiVª‹ ´qÈ´iÓ´Ç0{Ãl ÁãòåËú8¡?0éCેénÄ'üý÷ßq… â³Ï>Ó˜Ç1I¨W¯ž,[¶L›ù±òfyS̺Ís=ܰ\`"„Iú ÷Æ›o¾©¬; Ôï!F[J ý?^?Šv>úè#3`¦I¶Ã…­mBÃG9˜ùaiYµj•SÿÌ~…⛤ ÔÙ& Cz{÷žTš™û¥g2¤VfÜXÒAGΞ½¢üÆs96 X¿Y±©á‚ÐÏœ9£5W´"„æekžC4V¾!¾ySóDy³U©R¥t _Ÿ>}×A†¸»é{YOœ8Kƒ |f]úÆÿÿÁ5|PÈÁ‡„ù„ß®];m‘0Ÿ1ëhݺµà3>ˆøÚAÞ& DyÄ6 VÁ}ïA£‡À‚ðòË/k Š-ª}üˆGÀ1ú‹‚‘„ „)v¸¶ lk×®­±†ký1­f=ø6Çg½ðc5“¡"@’ ›62êÔïxš6ýÎxê©ÁŽ2ýúM1úô™ä8öŠ.7”ùÝçfU@ž¡ÈÊP>hG]jùš¡´qCùª×p ÌÖúšÒ` ElŽ{ýû÷7úöík(’4Ô:wÇuéo¨4C™ã e%p\OìÒ¬ú¤Vè¿;Q>yCÃéÛjbc(K„>V›ÑJËv<†ck¿7lTP£¡–æÅ¹ÌTРŽ(äwmC뻈ÓP€Gúôé(åÕíE ä ø´Š "L¶l9¢4ÂBñ6™>}Zez Ø:rä¬Òתà®^ñ>î7±öKú°þݪUÂÿo— Æês¶[®\¹ì.KáÂ…m¯{{|V¦Ÿ q)Ö@=hüVAÜ€Õza½çz ÿ¼é£·Þf°F¸W ܵéCwõã:I?(³ "@‚†ÀŽÇ< },Ù‹]§ÿé§³QÖ\¹bƒÍ‚ÖQ?7“2|ñVrô¤ DÅ[IÒHg}&|D¼û*ðÙÃÅàËîqð—c€]¢¯ý‹ïya_¾GŸ~ fýD€½{O«2·#§íϘ1­ ܺ®¢²* ‡òáÆ.?³+)×î-áclÐt¡©šb·#whÔ®Ú¹ùŒ7ßðã#o€/<|ôÁaì~[Û#é[Ñà1 À¾}§Ô:èÛ¦`»¥K—Fgä4h¶ÊX÷„ʱ»Û®,¯%XÞxã8 ¯åªT©"Û·o×÷í2Ø=zTêÖ­«'&J4W ¸Vˆõ÷.Tþ}×[d¬s—Áó09X½zµÎ5€Ìƒv‚ˆ~$×)¦!òÞœHØ•Mî×HúÉýÀñ$„ÀÁƒQ*‡;ÌЩâUÆŒiTZÔ«Ò¾}må¾mÚŽ÷!ÞL¬…Gn~äµGŠ\¤î5—öYFV;Ä ` !Öà[3Ø=ÿüó:Ó 2Ø!…0²ù!¨ÙþwÀN°,m"g\° `?Î)Îôñà ŒÀQ šö1<$æÁzþ—_~(‚G~]GÒž,Y²È /¼ ×ø# ÞNÌí{Õr4hÇ.ƒ’Ý [Ÿ¹ÊÀšÕήN\CT=ÚFfBX\7ÿq÷\rºnÿF’+ I'.(M/K‚ãY½zŸ¤J•B¬Ñ—Ÿ X^@?ä¢GhüØ[Ôº ´{4wìôg—Áס­c"ABø÷íÙYýð ȆgžyÆ®x²¾F»V²~ý<HZ?~^›÷ã¶ÎÝ´é°ÚsÝ9||Ïðžg òâƒÝ蜇lx®fvd Äľ|ì’gÍ`§ëhm¹°±Oûöíµ«±(kŠ5›Ý°aÃt}H«‹Í‚¬«ÌòüŽE rù "@ˆ@R@ wïIjô|*€ìa·Ãùá‡E²xñjú]Êüû™`óP ´clíjî»êþø³}háv$ŒÈ|˜îÍÝëÐfTT”šŒÝtJ.„ëHÙ‹¹î– ºkÏF²DGGë|øö“,¦yßOH²"@BÀ‰ñkúÐqFŽ\®´Ïû”y?¥\¼wÕÐ"iõÀŽð1‚ :>®!ƒ5› ®A°y;ÂÇ}wmàÅ’¾3<#D ‚8yòb¼æýùó·)RÉ¢ög/ I¦þP˹sW”Ù:ø‰fB=n¶Hú¡Á­"Ο¿¢¢ÇÓ»­yܸUj·¶z™^Ê”)”O9t¤«Ã˜1«î¨ÝÖÜv™7ˆ€_ éûNVFˆ@(€æž-[Û.œ9sYm“ºGmÇZ^‘~½­i¨HÍš}*ýs™2e½Š:ï ŽãOl; ^$‰@€Ñû‰"žÀTž=»ý¦0 ØzõÊé”»iÓÆþ×lóþ·©'N\«öZ5ª <¾štêÔI¾ûî»ð–½ ®»úÚ’¾¯òy"@Âk×nLöî²ñM˜°FúôyR÷Yø`^f ßîÝ'UúÑR¨PY¸°§“E¢Zµjº?a$;‘¤ y?I¿^Ž$`ªÏ‘#“í€A¸gÎ\RþóØ=ÒAúÈÓ,Mÿ—_V¨D1C¤eˇÕê6N„oÛa^$B€š~€€eµD€¤ÖMÚ^™5k“JSÞÑ!˜÷¡éÚ§‰Å{ïMQ›Áì‘?ÿìšàF@Žò€û!jŒÕ"@…Ìû¦¯ÞµÙ³7;‘>ùà_¤¦éÒ5iÑb˜`«ß™3»ð]_ ÏC‚I?$°³Q"@ü6ÐI“&®ñòرó‚Ý÷î¿¿¤£É´iS©Ìo·¦éGG_W €¾’âÅó¨ey¯éàAGã< !D€¤BðÙ4 þCæ}¹«Ì™³Y-‰+«ƒü¬÷R§N%gÏ^±^òË16ý)Y²§4hp¯ôïÿ\œvýÒ+!‰D€¤ŸHàø á…4}»<ú ls2훽NŸ>µÒôýKú'O^çžûV:v|TÞ~»Ù¿‰@Ø @Ò›WÁŽ"à Øu ~z«àÛè>ðÀmÓ¾y~ý ®™§>GE]’Æ¿“ÿýï~éÝ;vi Ï•²"àgHú~”Õ"R¥J¡ýôÖÖ×­Û/wÞ™×v‰\ÆŒéäܹËÖâ‰>¾páª4múƒ4kV]:t¨“èzø 4$ý@#Ìú‰ Ðô± Ï*Ë–ít¬Í·^Çq¦Liýȇ6;v+•+#ỂÌó°C€¤v¯„"D 1`«\Dä[eÅŠ]R«Vië%ÇqæÌéT]JA¤½/òÁÓåêÕë2`Àó¾TÃg‰@Pˆ»¾%(Ͳ"@ˆ€@ ^hû¦ÀŸ¿yóa©X±¨yÉé;C†´’1cZµVÿŠZR—Íéž§'cÇ® "ñ&"îðWîoˆý#DÀ#@âHˆcʶmG¤X±Ün×ȃðcI?qÛë"@pàÀÙòûï¯KÖ¬î·ó5ûÃo"ôÃá-°D€øŒüʕۤ¿~ý©Té·õb’€væóVNº(íÛÿ"C†¼¨6ÐÉîíã,OB†I?dгa"@ü‰@,éÇ8ª\¿þ 2í»'}”O—.•פ¸ví~Q)v”Úµíãà3HúaöBØ"@‡€+éoÙâÞŸ å§M›ÆëüûýûÏÐn®]ë%®£|Š„ò…|6Mˆ€ÿ@2òÅÄÜÔ©o÷ï?-%JäuÛ& Ø•|žÊâÅÿ© ½M²paOOa9"VôÃêu°3D€ø‚@Ö¬T>ýËšÈ Îa›‹ß¬?C†4šô=Í¿Œ{]ºü*Ç·,÷£HD€¤‰o}&DÀ92jÒߵ넔*•ß¶Œyù°NßÓíu;wþU^|ñ©V­¸Y…_¿«T©"ëÖ­ók¬,òX³fà·á/!éû IÖCˆ@ÈÈ‘#“Þ9oçÎR¦LÁxûMâ‰yĈerñb´ôèñD¼uúróÌ™3²gÏå’(áK5|6 !ðú믋¿IŸ|Iè¡䎀©é8%EŠäŒŽL™`¢O‘`ôþ¡CgäË/ÿÒËóˆB"jú‘üöØw"@œÈ•+³Öô>“ éüóæMEú·×ö;Uöÿ'Ý»×[å"Ñ…D:Ôô#ý ²ÿD€8È;‹œ8q^Œ’¢Eã×ôŒ‡Hÿø|ú¿þºJeù»*¯½VÛш@$#@M?’ßûNˆ€ d“ 2æ(¦¼XÒ¿îv§=Ô1`ÀŸ2eJ'½Щ¡$z²hÑ"yðÁUÒ"ßV'À‚2wî\yüñÇu°¤¿à:|ø°²Ìœ“råÊéúÑŽUªV­*Û¶m“š5kJbDzsçNY±b…ÊîxE·ƒº¬{:XÛs=^°`ÚÕ±†Z5’ÖõVØœSÓ›WÁŽ"à+ùòeUZþÉ—/[‚D9sz½;Þ™3—m›ýøã™ò ÕåÎ;ݯõ·}0‚/¾üòËrúôiŸGpõêUiРÂ÷ªÏuY+øë¯¿dðàÁúÒsÏ='“'OV9:>'NœÐ“HÌX>ýôS©_¿¾¬ZµJŽ9"½zõ’:uê(kÏ%k7œŽúé'ùþûïõµ™3gú}ÌNùᄤïY á@þüÙ䨱³’3g¦;dfðC@ß… Î䄼ýK—îp˺÷ðÃËo¼!… V©€Û ¢»óåË'-[¶Tnrï½÷j ƒÿúë¯åÃ?ÔÑßµjÕ’¼yóJçÎ5. ´ÚµkKñâÅ¥U«Vº.+`X"Ö¾}{]wãÆuÿþû¯<óÌ3R¯^=ÉŸ?¿¼ÿþûúhÆ xÈøñã¥OŸ>úØîÏÑ£G¥nݺ’={vyôÑG5±¢Ü’%KÔj‹2rÇw(ëÊý(ÈüÐcE_ìäwÞ‘Aƒ9>3f”­[·:=þ¼4kÖL÷ùÉ'Ÿ”“'OêûÝ»wWû&’ûî»O6lØ Û·o—?þX–/_.C‡•O>ùDV®\©-ß|óüüóÏòÊ+¯èòÀmÆŒúôá½÷ÞSI›þ”M›6Éõë×Ånœ{÷îÕŠgŸ}VãŠ÷ !é‡u¶Iˆ@@€I?*ê²äÎ9Áú¡écW¾lÙ28-Û3 Cz÷ž$ï¾û”N·›`EA,°k×.‰ŽŽV.‡)2fÌ­ÂŒsh£©S§–ùóçë;V*W®,}ô‘&«þùG–-[& é/¾øBÅ<Õò¡C‡”uä Ó(@ð9räÐdxêÔ)™5k–®úôéÒ¡Cý´[h¦L™Tî‚júù‚ ÊÝwßíT—õZ:&)«W¯ÖõÿøãúvÏž=5qÂ%ðí·ßª‰Û1éÖ­›n DŠ~ƒŒ]𸫝¾ª?Æ ÓZ6ÈÛ*Ç×DŒIúÚ¥K]Æ„ ˆ|È!z¬˜x(PÀú¸žmÙ²EŽ?.sæÌ‘?þøCO2z÷î­rA”Òmê€É ÊôíÆyíÚ5ý´{ø®¡íC¾çž{¤téÒZ»lÒ¤‰Ö@¡ÉïÞ½[QÉ’%åóÏ?—©S§êˆjÞ¼yšü ±¶iÓÆv GxëÖ­5飞}úé§u› 6Ô$mÙÔúáÏnÑ¢…m}¸¢Q£ž>ø@“Ü û÷ï—æÍ›ëq€œÓ§O/0åߺuKOP`Å05tkå&ø v‚‰ ,˜a¼ÿý·rÙÜ)ˆxë­·ô³˜0ܸqÃÖ4¶M=XÃúIpÆD³ ú`7N\‡%„‡zHîºë.Á„+ØÂ@¾`#Îöˆ(ÐÜÓ§Oø¿6¬¹O—.µdÉ’Á±VÑüŸ>[† kÐ>úR¹™¼Ùsæt^¡2‚)~£F4Á\ŽÀ7´Sh ›"EŠèn¸ Úƒ £Üô±yͼ+€§ ÚÍ;vé#D +CæÌ·-3¹råÒ¤q`¬O<ñ„&H»vÚ¶më”ÌÈUËÇ3h³lٲʚs^²fͪ\6]µ6ËÁ¸qã´5®¸96oÞ¬5zLLëᥗ^Ò}õdüîÆ‰ú¬ã„Ueƒ-Ôôƒ8Û#D  €Ä¯^½îQðëgÉ’ÎAú£F-W~ñ"R©’û-y=ª8D… =æÉ“GûÅ¡õC`vÆgÚ´iÚ¾téRM¤‹/Ö÷Mw€>±üfŒèxøªAšDÆCã‚4M×4½C{¶úÔaê6? yÄ  &è~U¨PAkͨ˜°€|qþ믿j?øÆM°H@ÃÇ„>4}˜×G%Ôý0ã`1èß¿¿¶0˜}„/1L0޵k×j ¿R¥XkÆh "ýíÆiÞõwÂÓáP÷í"@¼@ cÆ4Êï}û?áø…_[ìž;wE›ú¿ùf¾"„Žñ=¶÷Ìee û¯¾úJ/—CgŸþyàBƒÖ5ÌÌp ÐKÓ`²6õ€Øè6|û#GŽÔ$ 6ü÷—/_Öõ¢žõë×k«ÂÙ³gµ¿þwÄ@¬š1úñæ›oêv0‚‡ DÍ#í¢ÿh>HÚpíÚµµš½9NóÛì·Ý7ʼöÚkš´aŠŠÒ.L4G€öamèÑ£‡îÇĉ¥iÓ¦ºßÐÊÑ6LõˆC€`R×\ðÛ£þŠ+j—,¦ `øZÇiÞ³~{2ky§Pƒ ¾}Á=gD€ž|òkí“?þu›»Î—êÖý\EcQAm¹ô lÇûå—/8 ÒLÙкMó}b›Â â7Ú9HÁ{¦@‹ÇuíÀfÏžmÞ’4iÒèÉ‚×L7Ö®Ãx˜û± ±‚=дc Ý@Àð‘›’E`]ªT©4aÃôŸXAŒüþ2dÐU`‚w´WÚÅÉú.LÇÄå­¦zLœp ý´ŠÝ8­÷:FüVdàÛO²˜š¾Ÿd5D€„iÓ¦r˜ëê‚ùÒ¦M­Èï¢2;¯WZ`ì’¶„ž ×û;vÔ¤ b¶ŠAƒ @¨ };n¾õ>‚ìðñE€ç* MWòE°¢)¾>ê¹[ã3ÝÖë8¶¶ëzϮ䳻qÚ• æ5úôƒ‰6Û"D à˜$îICÈ¿ò6ì—ûï/)%Kæñä±°-óî»ïj3¼U£O¨³bûý÷ߊaÉœ«ÖZ½zu½2À©`"NàSÇŽ‚¾â `¦ kò#]Hú‘þÙ"@œHŸ>­2_R¦â[N×íN²dI¯3÷mß~L%®yÌ®HD]ƒïÙ•¬LìÙ²es*fFØ[/"ÚÜꣷÞóæ¸_¿~NÁ~Þó¢îÑ66Ö%“Š3$}gO@»LuðÇc·=hüˆv?pà@œ6¡ÝC“hø i˜ù±F[Û⺧™í°¾‰uyäý Èì HqF€ëôñà ŽÖéçÊ•I‘M”Òoª0Î SÌáÍž½I­ÝίË`+Þó篨Ä-ÎQìfY~{†2Ì!“>H_‹à<¤Áu5³c[ZL @òÈŠS?²î!kàÅ‹µ¶nnì.³5›²í¡>ä)@ÆA¬4 Ø#ÀŒ|ö¸ð* Š@×®¿é5÷C‡.VAa/ªÍf ÙŽ¤yóU°YQÙ¸ñ NÎóí·/)SÛ²Á¸è¯Œ|Áè«7m@ ·#aDæÃ¤oÝir_ášL(¡ÌvîÚð¦ŸáX6ùhÞÇ7Í>"h°-.6Ü)[¶[ÿÉ“tÔ~:÷(móªZžÑã,~‰îX2}ÐŽð¶íµ>®!Û+áã:2ÛYSöâšUܵa-ÃãXHúü%"¤éƒÈ±î~Ӧöc›={³€ðsäȨ£÷ñMwB%sælQÉ„î Uól7!@ÇG2zÙ*H`ç<,ëRånµäk“íq½U«jÓ”tʇ«éŸ=ü~d|÷ÝÉ*-íe•Iï˜m_y‘øjúþD“u"r²fM¯4ýh­éoÙr$Î>ìçÏG«\ûUàXiµ¼,½ƒôƒ©éŸ={Em]û»ÚÆõ{a^Ií®÷–Ú¦õRȱc’>Ôô“þ;æ‰@²B kÖ JÓ¿¦µø|ù²ª4»§T”þím`,Ø&µj•V;ÅÅn능zx“`Èܹ[Õ^îHãÆUT¹¾ºŸh7gΜÚwŒ>°ÈA`Íš5~í,I߯p²2"@B–ß:uQw£B…"jëØƒN¤¿xñMúf?3eJ«6RI«Ö‡Ÿ5/äq0å¯^½O†o)U«wjkÜ)D Ðмh„Y? AE wî,rút,éWªTL“¬µK–üçDúÐòÓ¤IÐ@¾þÙ«’Í TZ}zY¸°g·öÇD PÓ$º¬› #;wfEú±þñ*UŠÉo¿­rôá¿ÿŽ©ÍuÒéÜüæE~ºt©FúcÆü-ƒÍ‘|Y|ðN³Y~ @Ò ìl”@!+Wf ú±V[ì^¹£Møÿ½[jÖ,íÔ4"ø‘ÝÍßù÷¯]»!ýúMU~ûÝ2cF•–6—S»Û&D (Mމ Ì«\¹˜¬[·_·³ví>µ~ß9€æ}µ©›ßÌûXއ¥x0åÕF[2HVJI? ñ"@‚sÈÑ£çt'AúÐð‘zËóŠÏíÔyhúׯßP÷bTÞwÅþ>’ì4iòÚí­ŒZ–W߇šø( $ýÀàÊZ‰! fw>–ÆAÃ߸ñÜw_‘8½‚¦ïüûÈ Ð¸ñwR·nYµ¥lÃ8íðHúáðØ"@üŠ@áÂ9䨱XMÑüY²d+v©-\ Æi'6+_´ÎÃÓ|b[ø–*ÕKjÔ(%o¿Ý 1Uð"HúA™"LŠÍ¥ös?åhK÷Ö¬Ù§H?î6»±¤MeÄËœ¨¬|7nÜ’—^¦vˆË,|ðŒ£MpD€¤Žo…}"DÀ'ŠË­—ꙕÀÄI@¹rqIßÌÕòO̲½nÝ~×kÿ7múÐlŽßD là:ý°}5ì ‰EÁzXŸoJõê%ÔÆ:тɀ«Àôoî´çmþý¯¾š«Ú9%“&uÔký]ëæ97¨é‡ÛaˆðdÝË!­#3Α€'**îNv¦¦µýÞì´‡sÆ[)?ÿÜZ¥ñMåsŸY$ý` Ì6ˆ:ØYoÏž“ºÝ}ûN)Ÿ}&AF>W15ýlÙ2zìÓß½û¤tëö›ŒÑZòäÉâZ%ω@Ø"@ÒÛWÃŽ"à %Kæ•]»Nè*ˆ’%òª”¸{âTijúÙ³c{Ý„£÷/ÿ{g&UÙÅñ—Ü¥»kéF@DTìÂÄ.ì ìîÀ.T ý ìB•n¤¤Aºë~çwÆ;{g˜íÙÝÙåœçÙï}ãwç¼§7ms\0À=ôP/׮ݞ!€{ ` BÀ˜~½ ›Š!`ÄfÍjºY³–i‡„ïµiSWóàGòÞß*©{Kg*oß¾ºhêN:©CtWvn$<ÆôþÙ C ;4mZ#,é/[¶^rð×Ñ|üdæ RÅŠ¥Õ‘›~F’þàÁ¿ëFâNvadž@AÀ˜~yU6QCÀÈ ÍšÕÛô—/_çjÔ¨àºvmSÅŸ”TÂ%'—Hצ©àñÇ¿Vǽ¤$ |ÊÊ»°¶‰ƒ€1ýÄy6CÀˆ#uêTRu=ù+WnpáÙÿ&1ù°ë+FyÝØ6}rò_{í»î¶ÛŽËµŠyûFe`?†ÿ70f̘8þW8gÛÕ¸Âi†@"!кum7mÚeæØî©|÷Î;¿í1Eî-Z4MIÿ¹ç~ÐŒ{çœÓugãuaõêÕ’@h®Ь¯þ­Ÿ‚‡ÀUW]%™$ǸÎ;ÇmòÆôã¥ud‰†@Ë–>Óßâ°ÝSˆ‡Jx«Vmtää÷‰¢;P,›>›†·ÞúÕq«ßÜ> ‹€©÷ 쫳‰†@FP`gêÔÅnÛ¶áºöݺ5u?ÿ<#âQ$ýíÛwé¹ô}ò<Ïá­çÇ«¤ï_·OC  "`L¿ ¾9›·!`dˆ@»vuÝäÉ‹/ÉóÀA5¦?+âÙPØ^H´ë¿óÎ(‡ÓÞ™gîÑÞN ‚Š€1ý‚úælÞ†€!!¨÷çÎ]¡Nz~c˜þ/¿D2}6ë×o@j*^Rööë÷­üœá?Zè?‡.Z‘m9^ç®]»Ü7ß|ãvïNÕšä¸Sé`Ñ¢EnÊ”)ÚÕ¯¿þ*i•ÿM³ÛíÛ·»/¾øÂ-_¾Ü±.(3ë›5k–˜sÞr/½ô’lvh{2KÆ mÑöÌ6Ï—vÆôóvÔ0òrâ7lX]¼áS¿ê(»‹ôîgëc¾¤bþ[tjO<ñëÕ«“dò«–SMˆ1Î?ÿ|ñwH-T”ÝImݺÕ{챎ÏxÒwß}çž{î9íòÊ+¯týõWšÝ_~ùånàÀnÓ¦M¾Òv­ï±ÇsÇsŒûã?ÜâÅ‹%Zã6w衇º÷¬Ùà<`À÷òË/ëé—_~÷5ûãÄë3õ?!^=Z?†€!`$Í›×ÙDJkHû#G¦Jû!¦¿ÍUªTF$þ-š€çë¯'I~ý£h%ÎuïÞÝáÑ]·n]SƒñÕ¨QCÒ_ m»víÜæÍ¡°ÃgŸ}Ö=ðÀêý}ðÁ»êÕ«»ë®»N×CëÑ£‡F \xá…ÚWp¡:urW\q…ö}ê©§jŸ'N”,„'¹#<ÒÕ¬YÓÝwß}ú’1 úàƒÄÿáN=ŽõkÉ’%îˆ#ŽJEwØa‡)c¥uË–-%²{ôÑGõÑŸ~úIB,÷×µ2—´èý÷ßw_|±cÎàòæ›oê<>ùä7vìX ×\)&žÉ¯[·ÎqÆºŽž={º+V¸éÓ§»‡~Ø¡AxõÕWÝ#<"9~רŽ^xAò3¼áz÷îíöÙgÅ -ÏÜ~ûíîž{îÑŤI“ÜŽ;\¬u™Á†âä“OV\yùAÆôóuÓ0ò æÍkŠôµ3b¼ŒTñ§JúÉnÍšÍîþû‡Šß1â ñ\~ŸÌž=ÛmÙ²Å}úé§nРA*¢²æi´xñâîÇÔi<Øûÿàƒ*³úóÏ?Ŭñ‹lhf¹§žzÊÕ¯_ßÁXÿùç·pሥÁà+UªäƯLó믿Öþ?ÿüswõÕWësH·0Ë2eʸýö ù<Ô®]ÛµhÑ"¢¯à R:›”Ñ£Gkÿýû÷×Û·Ür‹2Îï¿ÿÞ½øâ‹néÒ¥²áºQÇ‚‘2o˜q,Z³fûì³ÏÜ+¯¼¢’ùã?îN<ñDÝ0°¨S§Ž8sNxôõ×_WæÌú™ÿõ×_¯keãQ«V­ˆ¶lŽ0),[¶Ì}ûí·îÃ?tO>ù¤»ãŽ;\³fÍÜ%—\âÐ °™¡L?Ö:1›ð~|HÂõ%}òïóÍ$wà GŠÔœ˜_5ÒeL¨råÊþ’ôf„ýÕ3Œf…´{ÓM7Iž*…Ã`aŒõê…*Âc*xÇ´õëCõ ükþuTç™%â·jÕªú F‹–¡lÙÔœ UªTQ¦äŒDÌÙx÷Ýw«žp¼Ìñòĺ‰¹h¯÷.]º¨ƒ`°]¼Žqæ úÄ«_ú!aN<g?bò :Ó/èoÐæoé"€MçÎ]*Í=7¢-výŸž)Îj“Ô>[§N¥4ËëF<˜ 'Øž£™uFS-Q¢„†¶ÛùöÁkx›môÁ{9=ÆY.½ìz9é}<i>-‰>ýçUÆôó iÇ0ò ò’[¿M›:’f^ÄB‰{vH¶µ‘N•$Œ¿h–ô#—K'$ÂQ-˜Ð‡sœò ¼ýo½õV=&ƒ Iv0#ÎvíÚµê8‡³Qd¨[½zµ&òû{þùçø7è=¢H&DŒA¸" tü ÂǬNˆD-pÂY‘ܘ&È1@BHÞƒf#èq¼_Øéö7lë3 ‘dKI¬wM±ëGJú@Ó±c} C[/RliñàöÔ‹ß ‹D@<Å”©ꆚ{0G^í~,?á|$­`ØD&HqŠðÏø3fhÌ>Ùñ†'vžMï„Ê‘ò¦ÎóôGFA é#M.1þ$*‹þ‰'žÐ}Ò!u<‹ïs RÛ¶m)ŠÙX0VVr û)¨Ç‘hÔUؼ CÀHÊ•Ë(ãß¼y›$_Yц†½ŸXý]»÷ÜsÕ^ï·¡q¯Gº¹8å”S4Õ-‚h¢rÀ°1=¢HdA×®]5S ¥m¹F¡¡èØJÚ²i!Ë ˜J•*=D¡=/B*ŸB»:[˜!`‚Àÿþ÷§Ô•Ÿ'Là ñþ¾C$׻Ď_F<ÄŸ‘jo'iòžK/}[$¿c%7üxIA{”0=Èä&˜0L*Ìñ™èÛà'è$‡—ãD#LÒ’Ö!`$.¾¤_´h‘0kYÝÕ«7‰#× ßïÔ©¡0Ž-âɽA¤Ë$96õ~zoFÍLɆO¿øzdø\ÇsNdËÃÁ.=†Ï3HøÑ ŸëÔˆž#× Ãg®¹A{êMrcëÓ0 |D›>ayÐ4q¿ý6G$U§Ò<~êׯ"Yák¼>¶ý¼¤mÛvÊ|B¥lórÜD‹DAãÇw’³^ ýÄJy›hs.hó1I¿ ½1›¯!`dš5+¨σݺÁôgëÏA¥V—#QÏ߯0°$QSoÏòÙ}à“OÆÉFäaaúIÙí¢Ð=‡”o ?w^«1ýÜÁÕz5 B jÕ²Ž3'3R?ŒŸ‚;>µoß@ìÇ«óLÒ'Q>o¼ñ‹ëß¿·h–ûS±OC ×0õ~®Ak†@"!’RUÂÎV¹Ö­k+³9r–ûsLI©¢Îi¨ÚñäÏ-"2àî»?•ÐÁ¹’¸æ8IxÓA‡"&ä3F†@Ñ£GOs|lL?ÇZ†€!Phذª›?¥2úºu+‹Í¸´§IUv’œ§R¥2šÄ§D‰b¹²¤ï¾›"Œ~ˆ;á„ö’QîvI.“:θqãreLëÔ"`L?ˆ††@¡E aÃjâ­¿J×GBJé [>?óç¯Òp¾à½œ¯]»ÙÝqÇÇR»þ÷Úk½#Ì 9íÛž7²‚@ê67+OY[CÀ0 ¨÷‘ô!ÂõvîÜ­ {üeªW¼xQ ã‹gÞÉ“I ~’G¾¢Äáßb ßÜ>ócúù» jyê}lúÐ̙ˤº^÷Ë/³ÂÓ(S¦¤JÿõëW–¬rkÃ×srðá‡cÜÙg¿* €N–”³ÇkÊßœôgÏ9EÀ˜~N´ç C @ ’ôCLöìåÚD0ý²e“Õ/~òôç„Ð"ôíû¡{á…¥Ôëµâ¥ß6'ÝÙ³†@Ü0¦7(­#CÀHdP¯SEoÁ‚UšuïÐC[JÊ×Ùá)#éSz—¢Ù­Zµ1"Ž?ÖdwíÚí.¼ðMõ5êÎXMìš!PÓO¨×a“1 ÜD rå2¢ºw*ÍûãôèÑûÔÓò»á†ƒaæ¹AƒF¹wß½LŸ ܲCC ¡0¦ŸÐ¯Ç&gñF©œŒ|>Q]¯yóšnܸùÂÀKH¬þvý¬X±´6¡OæÎ]éúôùŸ{ýõ \•*eƒ·ìØHxŒé'ü+² †@<ؽ{·äÞ_Ñ%^üØï±Ï“QÏÿÜÿ&î÷ßÿ·%4ïâ‹ßrwß}‚kß¾~øºcúåMÙ< C . éoܸ]+íù¯O’žPV>$ýPv¾®]G0ý{îe¥Ù¶@IDATùÔµjUË~zgÿQû4 Æô Ôë²É†@<hӦޛ0aa¸«Î‰SÞRIË[TSñ¢æGâ‡éÿñGHÒÿæ›Éjãï×ïŒðsv`4Œé´7fó5 !P´h׺um7iÒ?á~J–,&Ùô¸•+×ÿgÓGÒß®9ú·mÛá¦N]ìn»í#÷Üsç¨ ü`6Þ~ûmõøGë`?†AVÿÖ®Í~égcúÙü§µÇ C à"@’ž‰S™>+Á®ÿÏ?kTÒǦOÑ»þ-·|èÎ:«‹n ôb=Ú½ôÒKšî—l€öcdöo %%EBN×dû/И~¶¡³ C  "€¤ÓŸ4iQÄôaú”ÝE­ï{ñÓ J•2âí¿ÂÝxãÑííÄ(ˆÓ/ˆoÍælÙFUj͚܎»Ü’%©jÒ¶mëªsßÚµ›ÃÞûl¾þz²#¬€‘!PÐ0¦_Ðß Íß0²„@ɒŵ N§N)›ï?Œ Y³š²XöÞï߸¨÷Kâžæá÷û±OC ‘0¦ŸÈoÇæfqG€T»ëÖmÑ4»ãÆ-ˆè¿mÛ:nÅŠ *é¯^½QðŒtwÞÙÓ‘ª×÷âx ŸLš4É-]™¯ »Ëùõ×_~ AZ¼x±ûæ›o$×¹sg·k×®˜}ìØ±CÊ&Ÿâ®¹æ]Ǹqãôœy¥GW^y¥n‚Ö¯_ï¾ÿþûôšæù=cúy¹ hù‰@ˆéo‘Œzõ$o‰ªúýù´n]GUùHù¤ß½üòz‹â;ÑZÿ™Üú¼ñÆÝ%—\¢Œ† “®W¯žhºIháJe¨HØRðñÇ/eƒÿu§v𔮿Ž9æÙÀ¬ß….rµk×v—^z©ëСCÄ”ßxã ×»wo·Ï>û¸† º/¾øBïwêÔÉ]qÅ®FîÔSO•ꃛõúQGåæÌ™ãfÍš¥sð;£ÌÚ¹s§øB|-¾5õ|ðàÁŽMÄÜ9ä=æ×ìÙ³Ýí·ßîî¹ç÷ÕW_‰ƒå$3÷Úµk§Ïñì;ï¼ãŠ-*ù&h´ÃÝwß­x0Ï?þøƒæŽPÈV­Z¹ h{®uíÚ5ìí~ï½÷º?þ˜ËJW_}µÔ]ëzöì;${4´yâ‰'TÚ3fŒ{ë­·dSø»ƒ¹_vÙe:Þ~ûí§k8p Ž fh;¦Nªcñ®Ú´iã*W®¬ïŒÞÿ}Éðx±c uëÖuŒ—ÛdL?·¶þ C ¡(_>Ù­_¿UíöUumª™2Iê¹ÿÅ“4FßϿ߮]=MÝKQž¼"Æ_ýå† "ó]ï`œ¨¹K”(á‚[´há>ù䟜ÃpÊ–-ëf̘áªV­ê>ýôS}Fùã?ê5îiÙ²eîÛo¿u~ø¡n,î¸ã½=qâDW©R%7~üxeÔ0q&Z¦LýÑùtòÉ'+ã ¾ûî+X–ÒÛl>b£÷©Q£FÊ‘ú8âUŸÓš?¾®{РA*m“B¹{÷î²ç>úè#Ý ôêÕËñƒáÚk¯Õkï¾û®{øá‡µ6'¾$9#îöØcéF‚ E,ìç°Ã‹¨¢X¡BÝ8a`ó3wî\Ýxàª=8ãŒ3tíÏ<óŒ+]º´›>}ºÎí þ‡~pþù§ûùçŸu.Ÿ}ö™Tj|Eò@Üæüqm››¿Œéç&ºÖ·!`$eË& ƒÙ†QñŸª.ÆC¿xñ¢îï¿—‹äU)<÷¤¤âêäLè¾™‹gžy¦h$Ú‹ÿAGIý{ºJŠ]ºtgÃ%*ÑûR9ŸH–7Ö ÁÓO?í®¿þú0“9çœsT¾îºëbΆݼysíæé«Ðé šŸéßÿý®V­Zbö¨ãî»ï¾phØXlÙ²E™?Œ83T¬X1Ý@À K–,ñëDÝÏú°ÿW¬XÑ•+WN׈ÖÕùòåUJ_±b…kÚ´©ÃÔ#Žö1ˆèø¿ú"šƒÍM,ìÆcù,_¾<‡ùÁÌbRf S*p´8ÄÁ8Qÿ³&6 ëÖ­ÓL0̘Bð€‘¢RzcÇÂŽ’yÀfÚ´iªYáz#·`{ŽqdcáóbC¡™Š/®f =ÉÅ_Æôs\ëÚ0êÕË‹×ú:X§N Å^›ê ‡dF&>²£mÞ¼=bòlòÚ®1¨æŠ4J)Ÿó¾}ûªš;ý]wÝ¥jö£>ZUÉ<ÍÀü.Q5Ȱ]£ºG³!]£‡™¶nÝZ¯a›Æ+€ïS 7äó@j&ìR/*}úJk¾Jß&ú³J•**£ž?î¸ãÔÌqë­·:´!lt6lØàP­ûÎHþ0[ÆFÅÎ|}Ûtߌ ;¤ï¿ÿþÛ}ðÁú>ø j_и@` :TÇ×ù\Ú6(˜VØ ¡½À”‘dL??P·1 C ߨQ£¼Ä܇˜~ÆU•É/[:6lªHE\Ë–µÅ«|CÄñìÿ민•ô#&ðß Ì§=Tñgu–ž#­â\Czýõ×ÕÉ줓N’”ÃÕ4€#ŒË'¿˜c³fÍÚ;ï¼SûgŹoÞ¼y®OŸ>úù¾#Ÿ/Íûs‚ÃÜ|Õ¾ß?ýÂðÑ8àg=œ ™¯oBðçý‰T ãf#CßHâ8ûa+gžÕ«Wwõë××MÇ 'œ Ç·Ür‹šFØÈ7"þÜØ °¦XØÑš0ÅQm ã£]ñ‰ Øõë×OM*\§Oœ#}Íca ´78\yä‘~áONá ¹q à†€!°× ê|¯gÏgÃë½à‚Þ_LÐóSNyÁ«Wï&ïÖ[?òÚ·¿'ÜÆ?hÑâvoåÊ þi¶?…‰x’{?ÛÏûŠ¹Ì³½ªŸ"Ñz¢~ö„iG\Ç@{¢â¸.žñžh< óDZßu³'j}O6ák9=&˜f¢=ðDåæýX7d³¢óÞ“ ‰'L5xI×ÍZb‘Häáu§…lX¼™3gzbËèB˜¸'~ ž˜ö˜»h$"Úr"þžøìñnöh˜Î…””í#&éÝn’~n줬OCÀHXB’~ª}ÚWñ“’wÆŒebkÝ%Òc]õð^DÇŽ‘Yü¢ïçå9*|ÔÏ8Ö õ|Ë–-ÃÚÿÎfØÁÓ"Ôç¾}Ùoƒ/sñ¢ ];ºO|Ò›_t{Îq&dÞABúö¢b¶tÝiaHóhbŒè¹û¶þ`û¤¤$ÕHä‰D8plL?††@áG F aõ>«%ï˜1óÝgŸý%*ÞâPULì×u$SÜQýGÚõ;wÆÛ?ÿUüÌÕ>át¨±3K8òá$<ʉ“&ÂÛ¢Yt›ìœ“SÀW{gçyžÁŽÉ/»}åä9Â):è œt‘çÏÓÏsÈm@CÀÈOË+_¾”ÄH‡’Í´o__$ü¥6Ql»í$ܪ˜0»"âÁ_\ÛæGLµM›ºnòäÔ¸þˆ›y|‚}Ú—P³24ñûABÂæ'š¢ÛEßÏî9~~šìöágòËîóñz'Á´4ñ#ÞýÓ7¢ÖŸ!`$<uëV–ð¯U:O˜{Ó¦5ÄYm¥d»k"L¿¸8y¶7ztªg?Û´©#Lq¯/Q&HTqóÑôÔSO©c™èüä5„ÙaJ@eÿâ‹/ê#Äéã厪œ$9$,ŠE$¸Á‘níÚÔª‰±ÚÙ5 ÿ4 CÀØÛhÐ Š¤Wý7¼ìÊ•KkŽ}*í•(QL½ËK”(* ^æ†Ûp@I^ñ’’¢<©> ìD“ÙN–0µ /¼P“þDÃsFEß¶m[÷üóÏk|ÈÁÏù#<¢!väÇÇkžD;ø?‘Xˆ´¸â䦞öþF"VÛ½ýš1ý½ý/ÀÖoì…Àô.Leú[·î”8! üwíÚ­ÉRˆË'ø„ö§L‰-qF4Ü OxàÍCO‚ÒàÚGV¿h"‹9òo¾ùfÍ×Oì>‰}ÈëO¸ß éƒ á#=-Ntl ü,vÑýá¸È˜¤Æ¥îZBâ²RI/ºÏÂznL¿°¾Y[—!`¤‰@ýúHú!õ>Pí/^ŠÕ'+‰Ü`öõêU–œû¡œñ~gäá§PÑž †Ô¶$Ì!&¯÷XD_ÇB4'äú#€ä68ú×¹æg±‹Õ'×ð¢gl è I`Óa‰@ì7ÙÆÎ CÀ(T¤¤T›~HÒŸ7o•8’ÂüW©M?Ä`vIå¹z{$äiÞ¼¦¤a5I?Öý°Ç“°†JwDP¥.šüj|HîlðaÒ¤ú%Q p¸Ž´ÎF¢ÀNZYìØ àIOõ>žù³a 1‘Q$Å#OíÌ0 Â@ƒU…)„rÀÿþûQ'7Ér—¦äE½”Jù݉ºsÎé¥yóZÂØ†…Ïí âÏÉ–ÇEopÎ#K_´š:l üzó¨ú{ôè¡ùìI§‹´NLÒõúIp(£Ë†ü÷¤ÄõÃã¢s PÓ>V”@p\;!`±ö—`{%W—"0+Ô>Ó'3‰w`äØôIQO’ž9sVH"˜PE4€"ŽŸ¿¹sC•èöJð²°è´¤n2ú ßïŽìz>Ã÷¯ñI–=Ÿá¯ûÇiáß·ÏTŒé§baG†€!°!€Ä>gÎraú‹•¹·n][mú¢¡Öâ0¨÷ ßkÖ¬¦H›‘6ü-j¹Y³"üö"èl©cúøåÙÔ C û4iR]ô’“KH®ö2*áŽ*­’ôéÿ„ #jܸšj".Ú‰!P0¦_^’MÑ0â’>R>’¼O;6¤0ÛÔ¦/l_/ÇbúU;³©÷}Üì³à `L¿à¼+›©!`Ęý‚«]­Z½Âô7mÚ&ñàxï‡.ûüáFrаaUí^ËÊq»vÜw|¤•ððB·à ³óçÏ×ì„Yù{ ¶5ïý vl{ 8ò­Zµ^Sëú‹îС„‘m& Ùã:qùK–¬Sµ©R%´i£FÕ²Íô?ø`´„²Íw×\s­{è¡áþÐöiä ÆôófÄ0 âÅIÈSJCôü¹Õ©SQ‹¸ÿÝè_R)ûÿôéKš¨J•²Ë¿~ýV©Ø—n›ÞÞþ}ú¼§Ï½÷ÞåZ¼'½övÏÈ L½Ÿ¨ZŸ†€!P HN.ŽÇ¤+TH–P¾åódzÚ´ÈÔ»ÄúSùF<8! àõ×GJÝûçÜé§ïç¾ü²1ü>v˜·˜¤Ÿ·xÛh†€!@-ZÌ-[Y1¯B…Òƒ¿*Bвe,¦_YRÆ®‘JquÓ\Ñòåë%£Ü@½ÿõ×7H‚™*i¶µ†@^ `’~^ lc†@‚"°[w(¯?ÁòåKý¯/ûÿ¡|dî ’>L?-úå—Y’+¾Ÿä•oã>ýôZcøie×ó“ôónÌ0 mÛv‰T¿"bJ¨÷ å#óžOMšÔØ#Yù/ŽÜ0øíŸzê;7xðïîµ×z»®]û—íÓÈwLÒÏ÷W`0 üB`óæí’}Ï‹pÜKJ*áÊ”)1¥ªUCŽ{«Wo _§ìn´¤OÑžk¯}×!åÿýMÆðÃhÙA¢ `L?QÞ„ÍÃ0òíÛwj± “ö`è|‰¸þ`êÝ5Ê»¥K×…›¬Y³ÙqÆ+ZÄgÈ«]µjåÂ÷ìÀHŒé'Ê›°y†@ž"*Ÿë”éOŸžj¯ç:¥w£™>ü‚^ýÕ«—w+W†œ ñ;å”5eï€JiWûjÍÓ—iƒe³ég*kh… ˜:et[¶¬åFž^!vÄëS:7H0ý`e=$ù+6¨i†O8ÞÕW|ÄŽ „CÀ¶£ ÷JlB†€!ÀÔ‹ƒé׎ðÌg3€zçÎ]ÓàÚüù«Â×’’Š‹³_q¿ïÕ«“1ü02vÈÓOä·cs3 \C‰¾X±bŽ2¹”Øõ‰ëÉÉ%5_ÐfŸ’RU˜þ¿~3·}û.)γÕuëÖÔ]wÝááëv`$2ÆôùíØÜ C ×(^¼˜0îŽ|ú5kVÛë‘ôaüxñÏœ™jëOI©â. 1}¼ôÏ>»¿+Q¢¸¨õ;çÚ­cC ÞÓ7¢ÖŸ!`p¶CŃθ·{÷nÝ ò”*URRô–rdÙ#‡~¥JeÜA5Õ=bÁ6IC@0¦o†€!°×"€”¿uëÌ­ôOјüÌ™Ë"°A#Яß7Ruo­{å•óePÚ­[·%¢‰Œ€1ýD~;67CÀÈUPáoݺ3BÒGuQ=oÆŒH¦Ÿœ\Â}ñÅD÷꫽5,”½”â52 Æô Ê›²y†@Ü@ÒG²oݺN¸ŠL×®]*ÅÏžÊôW­Úè&MZäN>¹£#FBÝ¿aö¸ÏË:4r cú¹…¬õk @¹r¥ÜÚµ›Ås6mÚ¦ªzìü;vì–T¼I®rå2aç½k®,iu©ƒŸ¿°Ò¥“Ôƒß?·OC Ѱä<‰þ†l~†€!k ©û6yB÷¦O_" ?$é£ÊoÑ¢¶¤Þ]îþüs®[³f“”É=ÄýøãÔð|ˆÕÿ÷_|âC¿þú«;ðÀãÓ™õRà@ãT´h|escúþÏÂ`ÙE Äô7ëãÍ›×Ô$=xîS„¦OÖ=òò¿þúÏîý÷¯TÆO>Ÿ`úÛ¶íðOsüùË/¿¸Ûn»Í=úè£9îË:(Ø/^\RAïŽ;Óï¢`cl³7 ½  #’>Ž{xó#aÁô‰ÍÿðÃÑ®wïÔßj{Øö}ÂpÛ¶øIú~¿öiäÆôs Yë×0*UʺիC’>LŸdœ)âöÈÑÏu#C Q0I?QߌÍË0r º¾R%˜{I‘ô·ëy÷7oÞ.Þý›Âó("\é~ãÆP˜ž$óÓýá…à`Ò¤InéÒÔôÃ9YÒôéÓÝ·ß~ÑÅ–-[Ü7ß|#Q #®O†.f“ÈPÈaÆIxåvm¶uëV÷ÙgŸ¹÷Þ{O4/©E‚}ØqlŒéÇÆÅ®†À^€Žz+W¦ªë5ªª©y·lÙáÆŽ¯…t°û“z×§rå’%6«ž’Âi¿0Ñ“O>é~ú駸,é•W^qÇsŒ3fL¸¿Ï?ÿÜ{ì±’äè‹ðµèƒóÏ?_™ù€ÜË/¿¬·¿üòKÙŒmu'Nt;vtãÆÓãƒ:È}ÿý÷ÚæÊ+¯”2É££» Ÿû _ÌŃŒæ“‹C§Ùµ1ý4¡±†€!Pب^½œØôS%ù† «I¦½â"…®–ë݉'vpU ÇêƒGÙ²©±ù!¦Ÿ·\ÿý÷ß—b?g»Î;»6mÚ¸_|ѵjÕÊ5iÒÄýöÛoîÞ{ïuO?ý´¾:¤ê}öÙG ÿu7Ýt“«S§Žž?^ï?÷ÜsRF¸ž;üðÕ9Ožá„ÜǬ…Ö¯_¯z÷îÝõÞêÕ«uN`è0zŸØ\rÉ%©ÿˆ#ŽpS¦LÑ6—]v™CýŸ’’⮽öZ)w<ßvÚiîŒ3Îе?óÌ3úNØü|òÉ'nÈ!îÎ;ïtõë×èï–[nQf‚‘#Gê&“ZŽ#<ÒÝwß}ºI`þhžxâ Z¬çÀ’~Ø\°ùa3œOéÒ¥u®h7Þ}÷]÷ðÃûËÌóOcúy¹ h‰‚€/é“…ª]»‚~¢Î?òÈ6z\³fùõ~rrIÍÞÇMÂõJ”(¦íòò*í8ÀõèÑC“ùøÇK–,qHÙÿý·lf«tŽ4Ž`Ñ¢E®oß¾’p¨…{íµ×”¹ñÜÁìN:é$×´iÓ=–€Ä‹´L7n Û᯿þzeð]tQ˜é£ ?ˆÍD­Zµô¸zõêÊ I<cd~ÅŠeŒmØ8À0Ù¸øT³fM]L LmArr²¶«P¡‚8\VqŒGÞ4!h`è~Hõ0wÎ1°Á5j”Q®\9w饗ê<=›°E«‘ÖsǼj_Î;ï<÷Ï?ÿḊ~À÷ª«®RmBz&¹õiL?·µ~ C á@J‡ñ/[²Ù“SŸ¼rå’EÂå×GÒ_¶l]x-0y?Loóæm”RR¸Q.øêq²µU®\9b´¤¤$׳gOeøØÁaØ0`˜ úÕW_­Œ Æ„jß'ž‹¦Š+†/áD‡dù×¹†ôž1Tà|ðëÕ«WÌæHý™!TîH÷^x¡šPýûvÿù+V¸ýöÛ/¬ŠgC$ÖfóÔòl| 4˜xÀ¶lÙ²²©+~4½çh ñ,fŸ ñwÆ<=ôP+¦ïäÓÏÔmLCÀHjÕª(Þêku>0{¾ŒaäC”Ó :û•,YL‹ôp‡?<þ`²dõÃîÞ¸qcUscSFEÝiõè£ÖR/žô³fÍÚc?ÿü³â1vìX•Šq ƒP¯“ÀFÖºuk½†úíÄcÓ¦T_ L0}ú°™û„TŽJŸ¾~øáÿrÄ'Ì9HhÐ$øl:‚©jiϼ۵kç0c %@B÷1÷±«£ÁÀ—;?>óæÍ ó8;Ï1ZÔýøUàwÁ¦ÍK~Åéçê6¦!`$ 0u_’_´($mnÙ²]ãó™d¥Je„)¤fá+Q¢x@Òßž/’~Zàùþ0t$glõŒ[4^î0yüPó·oß^ËP}û’*íý~`LÍš5SOzœþ¸Î¦æ…ºÍÁ[o½Å#jógTÿxç£Z§=?Øú HPr†é4HßPûŒ™þx®C‡u9&Ÿ8gÓ¼ÐT°axõÕWõ6þ ˜`¬l@ؤ y·mÛVý¨kà÷w÷Ýw»ÓO?]ŸC€]æŸ1(Ösø,ÉoëÏ_ ÌhøÄ$Áq¾€ld†À^‹À=÷|ê½öÚ]ÿ­·~ä5lØ×«[÷FOTøzmâÄ…ÞQG=ÆGªíyŸ|2NÏ│÷Ê+?…ïåôà‘GñÄ,§Ýx"Ùz"å{Ë—/÷%ÌÑiÜ“°·ð5De­×ºtéâýñÇá{b'÷îºë.Oâའ6„¯ õD­ï‰v |-§²AI³ Ñx²QÙã¾8ÏÅœ×!ÖëÏ‘ùŠ_¯ûãúÌ™3µ­ÞÌ䯬<çχ®%¢Á“E¦F†ü îÈTÛ,4n’~¾lµlPCÀHjÕJõÎÿë¯ù¢Ö§òÞf‘CÖÏÊ•IÕ›ªªÆéÏ—ä6nÜ*Z5e): &hH!dH•>¡÷Uñþ5>«V­<Ý㧸h¢¯ ?@ôý¬ž£1H‹p‚‹Eøø¾ÁûþµàÑ.ø†`\CcUÊÊsþ|MG~“Ùôóû Øø†€!¯Ô¬YQÕû"-‰}y¹:ð%%¥z—W®LêÝP,:…éÖaëç~"1ûØ´³Fæ<ÔÑ>á H\ÿK/½¤ý„-=#ïû`ö<¿¿x|¦—Ð'3ýc®À÷`o&cú{óÛ·µ†€x¶WF¶ÎMž¼XìÚ¥„‰—KòÀSªTjÚ]ÎCL?ôÕ‰ ј>ŽkÕªUcªY"$Rìßò8ß‹mœØs<ϱ㧥f»ó³çei™hL<~Nˆ\ø&ìÍdLo~û¶vCÀi¶’Jú£GÏÕð½òåK‹³ZHªTù0~œû|ò½Åqð£hOa"2ס%À9ñ3p¿ÿþ»zÈ“å.V¦¾èlw~ö<¼ÖI¬Ã†'?6d½#5/9ˆ. v=šðx'¯>I‚„ÓÙ19ð<›Ú^~ùåz óyó'c!!$ùÁ1‘]§Ã½…Œéï-oÚÖi1 Ÿ½ñã8²í•)“öÎ÷([6Y¾BLŸ0½¤¤Dœˆ’¾?çì~"Ý“]ÏO®ã÷Ó£GUÇÊÔ‡]rðò=Œ&² ² =êzÚ’km qÿ„È‘Àç†nP?¤yìèþn¼ñFÕ>0?r 0·¬úCD÷™ÈçÆôùíØÜ C O ÕîÂ…ÿjœ8ÙöHγjU06?5 ߦM¤sM’T««ENÍX—'̓Að0§ð}p$Ö z¤KøZ8S_°=Ždýó}ˆï÷UìÁœøHH Ö .iü±B?"ØzÆ`“àÁ3ŒÁ&$;V¿˜k0C0v©R¥´¨O¬v…áš1ýÂðm †€!#Ê•+-jè ÊèC‰yJIÖ´Ôô²„ïíܹKÇØ´i»2ýE‹ÖHR™´CÍr4¡||xÿý÷WæN>{˜%D?lñH×PZ™ú°¯û„/9멊ÑŒ5aJ€Qc¯G-yÿè¿ØôQç3΂$÷!—?ÇÜ#i¹ù‡ôº3fÌÐT»ÜOkl2ñ‘¸ˆd9ç¡hæ€ÂJ§_X߬­Ë026zÒîÂè‘úqÎ JúÜß¹3ÄÙ”)SRlÊ«…éGæ½Ïô€ Ü©æG¶:$z¤r$jÔèØç¡X™úbeÏ£d-ªuÔå˜ üº÷ÑË9K–R ;Ó/ìoØÖg"@Ü}rrqa&›ågËùö%¹[¸bóÙP’·0Jú,/xìâ0wÔ÷~$þ>}úˆCcR8}ïqǧí¹󅺉‹§ê’´Ÿ '+O>þhÂÖÏoðï“ÏŸ ó¢n½ÏÀÙL`J@¥ï›ðègžD¤¤¤h[6ü‰¹ø¡ŠÁë…õؘ~a}³¶.CÀÈ4¾ãÞû„áµm['fBž5k6«F X±¢â(¶JÍöô.Ïô  !Œ5-Š•©/˜í.ø\v3ÑÅbÆ0úXÙc]c’‘ôkŒàÜ Û±1ýÂöFm=†€!e¶mÛ¡!y$ÚY°à_q +/1à©¡[ضQ{³!¨Z5—?cÆ2wíµ‡gy¬‚þñFsä+¸ïÎfnqB;ý† Û4ï~Õªåä3IJæ2}Ñ(k.~˜~µjå5œoþü•®I“ÄÊ»'8Òíi>-‰>ÝífB `L?!^ƒMÂ0òu불d¿EìÁIR¶¢zç™þ† [5Œ;>Ž~óæ­ÒL~%K‹Û´Iï;sæžññqÀ:2SïÛŸ!`ìõP-oÓ¦’|¦˜z¬‡OhžOÁØüzõ* s^êš7¯éßÎÑ'Z†wßýC¼ÎGH’ ’nàÀ4÷}Ž:µ‡ ~ºçx.Ƙ~<Ñ´¾ C @"€ý¾T©PX¹øCiwSÕû¤à%a |:vL‘ rKÅýNŽÖJ¤À«¯Ž4´£\÷îMÝ€ºvíêIŸwæ¨_{ØHS劉ŽÝ3 Bžûx„“Ž©õ>!|dæƒ`ø¨ýióÏ?kÄs¼²ûë¯ùnŸ}`ÐY'6O=õëÖíaI>³UòÐß(Ì¿÷ ?ëýÙ†@V0I?+hY[CÀ(t Ú'1̆ SÇqÏ'.¿råÇ>©w4¨â&LXè:th%,(ÔóÆ#Uº?ì°V’¨ææBçŸ%`¬qž"`L?Oá¶Á C Ñ€écÃß¼yƒ†ä¥¤TUG½¢EC™ÛBås˨ĿråzMÇKÂû2KŸ>Á=ðÀP×¥K#ÉwkÜ8ëõî3;–µ3ÒCÀ˜~zèØ=CÀ(ôª‡ú~Ñ¢ÝêÕ»T’Ÿ;w¥Hú¡¥S>·Zµrâ¼·LCô&Nü'ÓRþôéK¥ÔëÇ¢AØ*9ÝÏw;þ4¯…þ¦€/И~6}CÀÈ$æ)^¼˜¤”-)ÞûÅ%o íÐWï/]ºVcóaúxì=/CæoÀ#|%ÅfÆK1—cÜ9çt › r6[{ÚÈæÈ—3üìiCÀ(àlß¾SUöÑ! /D~wRíB~5½Y³–Iõ·Zî—_fI^ø&z/Ö¯?þøÛrÈbØ&mowçž»¿1üX@Ùµ|AÀ˜~¾Ànƒ†@¢ €‰qðÞ¯P!Y§µu+1û!Eh¨š^%uÞ«Y³¢xÜo‘Ò³µö˜>^þwßý©»úêÁ"å÷ý3Ûˆ=ÛC Ÿ0¦ŸOÀÛ°†€!ìØ±SÃóŠ…é—ÖIáÅs´dÉZ;7iÒ"eøÄÔGÓ´iK¤tk?½?|ø­îÐC[F7±sC !0›~B¼›„!`ä;vì–Zï;DÅ¿[sï32ð•/’ú±åSZ—2ºcÆÌ“D:Í"¦J6½ÇûÊ=þøiîØcÛEܳC Ñ0¦ŸhoÄæcyŠ’>ªùÓ1z²å•+WÊ­ZµQªë‘zðËݾû6p?þ8ÍÝvÛq:?L÷Ý7TmüC‡^'5ç- /O_œ –-Œég 6{È0 dÞCOˆIz U«68âõgÏ^îš6­!ø¸*UÊiè^:U3pÙeE°Ë}ýõ 𢷰àaë(ܘM¿p¿_[!`d€ÉwÏ£d®ï±Ol~ÕªeûÍ›×r#FÌtëÖmvGÝVþÎ>ûUÙ”qƒ]f ?|ívb!`L?±Þ‡ÍÆ0òâð““‹+“ǃZºt«Q£¼?~¡~R}oÔ¨9Š×B²ê=è*U*ížyæ,Uýçñtm8C GÓÏ|ö°!`tð·ٓu¯xñÐWb(L¯²#ûN}×!‰Ï£~¥êþ7Þ¸¨ /Ûæ¿—"`L/}ñ¶lCÀ!°xñZuâ 1}*íí›ýN)µ[BKéλB%zJëRxçÿ»Â 3 ,æÈW`_MÜ0âÀòåëÕ{?)©¸„é•’b;+ÿ+Ÿ»ÀµiSÛýúëµõãÀ÷ÒKçÆcHëÃÈ7LÒÏ7èm`CÀH–/_§w6mÚ®¶ú9sVHaêî·ßæˆ=¿‚«^½œÌy÷ÝËÕ s¶9ÙEÀ$ýì"gφ@G`ñâ5ªº'ñ±ù+–v“'/rÍšÕǽÙZˆ‡ÜûgœÑEúâ½àM›6Ɇ£l¼»µþ !O?ý´»á†r¼2cú9†Ð:0 ‚Š¥o©°GLþ²eë”éOºØsL;÷Úk#ÅxŠ-*_¶GæÊ7nÜ(š„ênùòå¹Ò¿uZ8xçw$1ÔqYŒ©÷ã£ubqãækÜ}³f5œ›?iÒ?âÌ·]BøÊIµ=§™ø°ç…cú…á-Ú C [Àô‘æ[µªãþùgµÙIv6lÕP½eËÖjž‹.:0[}ÛC†@""`L?ߊÍÉ0òñãhF=ODúêÕËKùÜ®}ûúî‹/&Hå½Ýn÷n§Yøòd26ˆ!ÓÏmCÀH<æÎ]©¡x%K×<õëWqü1WÂõªh.þjÕʺ /< ÐgÝÛ²e‹9rd\^ÐÊ•+Ý7ß|#yv†û›5k–Ô0˜>u°uëV÷ÙgŸ¹÷Þ{OꬊÕ$|íÛo¿íÌöðyn°–!C†HæÅgÜ—_~)#›2=Ô„ $«ãÒL·ÏˆÆôómË0 :~¨àÎvW¿~e);סòON.¡jþsÏí–0óÍ­‰,Y²Ä]|ñÅqé~ôèÑR^øX÷ÔSO…û{ûí·ŽhiÑĉ]ÇŽ÷qbV™è:è ÷ý÷ß§ÕÜõîÝÛ­_¿>Íûñ¸Áø]ºtq~ø¡ŽõÊ+¯¸N:IdÇä4»‡Ñû8þñÇb.ú'ͶùyØ~~¢oc†@¾!ð믳•±oݺÑu/%¥š›1c™›9s™¨õw»#l£ùøóm‚ÿ Ù5hÐÀ=öØcîðÃwµk×v/¼ð‚ûꫯܙgžžæÙgŸí†a¶­ZµÒg|¦ûóÏ?»-Zˆ £½>óÆo„ŸãÆvÅWHxb wê©§JҢ͎60Ú}öÙÇ5lØPL_è3|ð»óÎ;õø¶Ûns}ô‘Ówÿþý¥ñßzüõòË/‹&¥ž«S§Ž{ñÅõÖСC%/B÷àƒºÇÜ}úé§RÜhÞc¾-[¶Ô5<úè£z SÌM7ÝäjÕª¥8Жkwß}·öÍ`ºÐ7Þè.¹äíÿÐCuO>ù¤¶éÖ­›C’§Jâe—]¦óÙÿý¥Lò/Ú×…^èž}öYeú÷Þ{¯b ®7ß|³nLN:é$ùû8ÒÕ¬YSÊ+ß§csÎ9’­ñz>oÞ<·fÍÙPîp—_~¹ø†Tq­[·kTºwï®sc ÌkíÚµÚG^ü2¦Ÿ(Û†€!pŒ1C˜Iùâ® Ž{;wî’üûeEå_DÕþ×]wxBÌyÛ¶mî§Ÿ~R&ƒ¹ýöÛÝ 'œà` O<ñ„ëÚµ«ƒq®^½Z jòvíÚ¹k¯½Vô»ï¾ë~øa] qÞW_}µã 5Z•ޤ]©R%)44^™â×_-¡ŒËtÔ Ó¼ãŽ;´/6l 3çPÅŠŒf$¤óûï¿ß 0À=ÿüóî‘G3ÊFeºÃ‡—MWŠÎyþüùî´ÓNÓGo¹åwÏ=÷¨äÏ&•9aòÆ ÓõbN@KÀ¦ƒ I¯^½ô‡ÛâÅ‹¥,ò_ª¦güÁƒ«ù¡D‰îóÏ?×öS¦LÑç‘Ò™c ý`£¤=z8Ú2gžGÞ ïaÅŠú.Ú¶mëúöíëXLŸ0»1cÆH•ÆΠo’0y°¡Â¬òï¿ÿ꜂cåæ±Åéç&ºÖ·!`$$+V¬×d<=z´p ¬¾\£FÕ4V×.OÃôZ´¨•0s/W®œ»ôÒK•¹”.]Ú]yå•*Eœ"Q‰ÃüÈ)pðÁ«Ü´iSwÕUW9$PÔîH¶0#˜íØ8Ģ믿^%Ø‹.ºÈÁô7n¬Z†æÍ›K™áæÊÔ.\è<ð@ý¡4Zˆó×^{Í 8PÏùõÃ?hû£Ž:J¯½ÿþû:g<Ìùã?Öñ˜R;æ ³„`°ÉÉÉz̺Ðb 13—iÓ¦©ÿÛo¿I*åòÊH,X mÑ‚ }À„€¦¤M›6ªº;æ ~ø°ñ€yãÀÆ?ƒ2eÊhü"—BÉ’%õ¼Y³fîÄOÔããŽ;N7E5’Œ%"ž?pd3Àú¡´#)²ÑAÒÏKS€IúúÚì—!`ìMŒõ·¦Ô%¿R¥2"¥V/îÉRIo§–ÙíÛ÷Ø„‚£~ýú’D¨¸2k2øÁ\‚„*g3$]Ža*0` ’hçΕ± ¶‡áCIIIÁ.ÂÇHêÎr¾íÜ¿æ_g‘1> IÝo s®Zµjø1$q,æ ˜;*u¤uæÍœiÌVs.Uª”>9¤~˜f±bÅÔ,€ºí%f ±îÊ•+ë±ÿ ­›Ôëlœ L` Ç7Ð&³xD¯™õ²nÈ_›¿½˜¿ŒéçÈ6„!`$?ý4MÎ.ýAÕ®]I™GÑ¢E„ITWI?±fœþl°1ã|ÆÇH±gœq†Ú¾‘~‘`ašxêà a>0±X„Ä‹­æ‹¢-ÌjìØ±*É"5/Z´ÈM:Uï£öFZmPµ£Î‡ðé›ÏbwG…³öÕê´ã> éU:R}ºÃ‡íÄœÀ” Ư¿þª-®cÃkf3žh*ðÀŽŸŸdêýüD߯6 |Aà‡¦ºnÝšŠ„¹J¾¼7ˆdWLÃöðæ¿çžØjï|™hƒ²aªU«æ:tè *Ì"½/>Q™£ÚÆõ?äKœûýp60[lûo½õ–JÝ0iTÚøÀ iÇ7ï°óÃÀ} œ>¡‡z(ìà‡:¾Gê°aÃeÎÌí¼óÎS†Hÿ8ùÁ _}õUeühˆ`^Hä¬!š˜ËÑG­˜"˜#¾ii2xžgøÁt€úÓXaÏÇ^Cá\ 0i´ø  Òg…š¿ýöÓ0>66Ì -΋ø3øtÊ)§h("¨õ1yD“?—èë¹u^DT#^nuný†€!hoÿøãŸÇ«ÓÅcüseö„í‘™¯uëº"-ß”gS†àtÇgN Ƈ­ß·5ÓLæTkÃÐ}µ:÷Ž}BZÆÁ ç=0„ ’vŸ>}”‘újiÿ™¬~â¸c‡á ;›\ÿŽŒÌ7h_÷ïE¢mÀîïo|¢ïÇ:'þž5³q0ð7 Ì ­ ÔðL{<> h%‚ë@Ògƒâ?ï‡v¬³‹Ÿ{ßÂðûÍÆç“ô³š=bl÷0ù}÷M‘/{Êé–‘/öµ*ùõëwz\R'Lñøã˜?’o4eÄxP­G3^úÈ #3xžV?ØÉƒ¶rÿh4õïEbÏ*›¿¡ˆÆ&­91› ß±Ð3Ú׿ Oÿ^^ÓÏkÄ ùx„ú`Ë32¢øý÷ß5¼,úz^ŸöÙ_škŸŒ|•+—Õâ:»víõxŠHÝ!é6¯ç”ÓñP±g•áá!ï;õùã£ÞƦ¤x”s ö7jÔ(UñµÁû™9Æ7€XûÌn2ÓgfÛ´ÇÏUÙg©9ò%ÒÛ(s!&ǬFöcø„ù SòóÏ|íÚÍjÇ?ûì®#=Sµ6‰ xƒJù/¼pv~N-Gcg•á3Ò­ï ïô®÷¯"ÈO¼›·ï˜Ý>q´‹Î1ݾ²újþX‰¬ö“_íéçò6®!`ä9Ÿ}6^Ç<î¸vâ<6]lÕ„Py"å××8ý<ŸP!¯b꣉4½„’=Ïxˆ0=Ôàl`ül}ØÓ8âe²8 FGøýzׯ_¿°·½Ý>÷DÀ˜þž˜ØCÀ(¤ ø«¨–kkƽ þ•¸üPˆÕ A—Òçý²pú{óÍ75äŽØ{úDr¨èIXCv>âbeë#R€ÍÉ…p„#½o,b ÌG)’ìgF#«íÞ~͘þÞþ`ë7öV¯ÞäæÌY!±Ö=Ä&;Q<ÈCIR:wn( %~êë½ΘË$Þð5²ëáõ?g·i'šÈ‡O¹ì¿ûl}„ÀpÀFGF;<åñžgSðÉ'ŸDw¥ç¤fLòà…V€ÜøœE"`Ž|‘xØY!@€˜b$ Òmƃâ‹i¾d ;äCT:‰G¿¹Ýù½ /" ,È8FLpfˆ¼æ¤YõÓŽfæ™DoóÞ{Š„_Äõì¹Äu?ŽSþù‚kËO4Ì©@&DJõ$y‰'žºž”Éô¤’—žK”€Þ—ò—žüƒ{¢Îó$9‰7iÒ$9ˆúP?ÅËWÛ‹­Ï“L[úŒ¤Òô¤x‰'¸<ÉIî‰D¬×%I‰'YÆôX¾8¼Ù³g{RÓ ezÍÿ%_>ž„y’›Ü“²œž„y¢ªôÄiI›ˆjÒ»¢'IzŸñ$‡ö%ÒJšó-‚'ÌÙ“”¢žh*¼ÓO?Ý{¦žKòí;Ñ×$E¨'ñÆžlXü)ë§0}O²ŠyR÷Û“.ž|jÿâMíñŒHTžÄP{Âð=Ú‚¹l<ùòõ*T¨ ×D‹âIÂÅZ¾Pu]¬5#¯÷Ì3ÏdÔ,×î “—¿“eí ½¾}?ðjÕêã5lØ×:t|®™™ŽE"U 3Ó¶ µáï„ÿþǃÄß“TçÓÿ?ñ‚÷Ä^¯·ù_ €þíòÿ IÆ?}^üí“/6 |iÀ0¥ê˜^ûí·uœ°ñ€iJ qO¤½ýKì:O6R Ü“Š_ÚÏüø2“(]“„(yRýËu£—Ö¼Ø$0/)êI SOê§{<óu© ƒXפlªnf¢ç+öVOj‚ëÁJ<žµ¾LY+‰ÉöÄœ¡¸I̶'S<©ÒæÍœ9Ó[«w×]wéAd/"6i¼Ëè FôØùÍôÏ?ÿu¯cÇûtZµkß L¿M›»dã¶3zªyz^˜™¾dZL˜ÿ?þÖ‚ÄFÓßà¯óÃ&;-JkŒ´Ú´ëñdú¦ÞÒ|ØiÞ €}g=z¨íØ?桪>҇ʗB¸j9½±ÕS«šÞä°¦€Ï‘K5¥D£I§zSy Õ6¶CG"ê_wÝuZΓk"Õkã4„Ý‘D%)‰EÁ²™Â hÂéTñ ¦²jFŠtà´„‡1ëƒbÍ {;õÊInDþoŠsàáLÞnšÄ Ö5T±Tó¤zõmô8F‘®•yQ¬„”¢Ämí·aži9R¡º%VüÁUj¢ÒλÇîškÓ´»ò…/XV—|j¥½Dwa™—Ÿ¾6z=üÿÿÖ¸O¶¾`Z[ÿ2 ¦•íŽ6iá?oŸ©ÓOÅÂŽòôÊ]’e«gÏžÊð±-ðaÀT³"l‡zà0UM0½e¬ì\Á$” õË|ú׃×b-¦Êæ"H$"Î8Úùf‹³”Þú¸ïÏqpþkƒ9QÅ‹úàdE‹…A¬k|ANžª1º01~Dý.ERžP‡1FØÀlaÀx«GS¬’ ´A‚†p¢),J¿8ëQŒ6b"Ð6¢zתY\ÏIÙ̴楃È/¤o$|ª—±ñ@Ò…A¬k8ÂÜ©pæoBp‚š;w®³ƒ‘™Ò h2ëHåÏ;?_}„”xÝWœ¼žÐé`”/{@IDAT~ú~rÞI6>¦—ˆïËæ”»XÈ^îâk½g C›½¨d¯Ñsânž¬õÂaòÄ÷ÂØ¨¹Šš°º ôé÷«$(â]L¾r’‚ Ú†üò ÄSΓ²¡h(5Ê'*sB‘ò‘È3S6S;üÊh^þ}qjRƒªddc­ÑÄÂ…0)<™Å@%zpAGUO¢˜P«F—¥4+›¿ô*ÓÆüy¯´FýñXäÏ;Ö½ü¼6dÈÙ¼m—ª]Ü{ïý!ï­¼ûöÛ)¢½¹%?§ecù‡€|qC 3Ž|™ ¯}<׃N=RŽÓiÜæÑ…¨ìõšÂPG>ÿ&s8žá$%;ýËêþã?z¢ºöd¾žÞ^÷i9‰–!¢ÿôúá^ZóŠõ`áS, b]óÛ³F¼¨ƒ„óN‡â«/mD»“´Öì7½ãüräëØñ^qª ‘!ç½+®èõë÷mzSÍÓ{âg‚]$æOÑ¢É^rrcq=H"+Î§Ðæ1Û¥õ¼]kAÅåé§ŸŽÇßæp“ôå/À(±2'^æîâ‹/ŽpêA‚•ðŸ=&ëÛœ÷¸ñß…´Jyâd—YB’ÅÌ‹‚~±î§u-­yÛ£ÚR, b]óŸIo±Jƒ¦UX%­µûã$âççŸOÇÊõâºFóëŸ}v7lØ ÷ôÓg&Ìtqž”orÏÒ¥ëÜŸ륆 ë'óîÔ)ÅuéÒ(ü“¨•„Ô&’!Æô3„Èä5¨ë±y“N3+ôí·ßF¨øÓ* Šê;-æ–•ñ²Û6­ye·¿¬>WÐKƒfv½wßý‰ÛgŸznüø…òw‘$>KÜ]wõ”Êr%3ÛE®¶›={¹2w=?[¶l—DPM$꣡lz»J&¹:’Ñ.ssu¢Öy¡BÀ˜~¡z…c1Ø›³ÊðYyÐ#ó´»$šáv¾QZóÊ« ôÒ ™ÁéÿûS|Bü²¹N˜èþR¹\ø2ó|¼ÛçòäER8fžJòHó*”V ~ÿý»>}ŽMRÖ6¹ñž£õ·w `LïxÏy²Êõë·º1cVKšI'y¸ ’&÷Þû©æ}‡Ùž~zg‰|ç~üñæ4ÛÇûRûرóU‚‡Ñÿõ×—’RÅuíÚXrJtt=vª:Æ{\ëÏÈcú!d÷ÓE`ÇŽ]òe:M*\u#GÎóâ9>Ð üFºÏÙͽJŸæÝtÓRdh»ÚñkÔ(/E‡æ¨ÏýÜ¢ÿÝøƒŸ«ÒüÌ™Ë\»vuU’¿Bªú¡²/W.9·†·~ L#PwÀL·¶††ÀP°dàÀß$†}¼-!îùøãÛ«íÔ@2ò %KÖ ƒ}@ãŠ+ªvñcŽi'¡‡‡ÇuJóç¯ ÛãGžëV­Ú(!ä§¡2úöíë[¶¿¸"nÅ Æôã„äÞÐ ªÒo¾™ìÞ|ó©œõ¯Ä‘w—ly$S\þÚÈ÷ìm™C {÷Ç$ Ñr-!Ü¡C=ÉŒXÃå´t.÷S¦,V ?f̦ÞOüw”÷3¤ÉK/ý$©jÿÔ'ª“Õ¬i*ü¼6bfhР¯Û±c§„i–”4ÂÍ]ÿþ½Ó´©ãd‡$Oتú·†íñ0y>ê{#C "`êýBøR³½$ÔšÏ>û½æ(ÇVÿóÏ·YXQ¶Ñ´ó NîW†ãImP¿û™ë¶nÝá&LX¨jz’|£t"‡ÚJmñëÖm|Ceò„Ï:—”dþÊùÿ¶l ‚€©÷äEäù46lØêxàs7bÄ wûíÇI™Ø}ó|6 !0?7_%ø7Þ©ivy¾W¯}5g=öø&Mªg¥KkkìuØx¯{åNêÇOu·Ý6DT¡­%‹ÞíR€¤Ä^ˆ‚-9ÑX´hzÕ£¦;vž„ã­ÔDP³f-wë×oQ•þâÅO'ú2l~†@B!`6ý„z¹;™·‰T?D›úõ;C훹;¢õndíÛw¹‰†%y=ô;¦ˆª>ÅuèÐ@«å=ôÐçâ´·K:-ê–,y*s[+CÀð0›¾Daÿ$<éÚkßUG§{ï=Ñ•,Y¬°/ÙÖ—À'=Ìý·ßfI¼êpGL¼ÿC¬=4bÄLwçCÜÂ…ÿº]»<-7»h‘Iø üzmj‰‹€Ùô÷ÝÄgf»w{î‰'¾v}4V³“õèÑ<>[/{ƒr§ÖÙ%'gÍ„dNYYœF±ÉóC(ÌÌvsç®f¾Ë½ÿþRn¶TWjÌ?öØWÂìW»eËÖJ–='c'IûÇÂmìÀ0²†€Ùô³†WjM’+®xG¥úŸ~º%â µ@-Ä&›¯üý÷J)X3ØMºØ 6ͽýö%éÎgÅŠT)?uêu°ëر;âˆVâOr¬”™­ê¾ûnŠ»êªwÜ–-;4zdÈ1’âù Mšó ÃÜÌ™KõowéÒµ:^JJ57jÔéŽ]ÐoþòË/î ƒ*è˰ùÇ 6ÃE‹Æ7Q”Ùôãôr­ÔùW^9ÈwÞþ '+I´yÚ|mÛvº~ý¾uxÊcsß½{·æo˜<ùÁ𤹒âCí¨õ@ ]*8~ùåDÙdx²YuR¾¹˜Dwe熀! L½Ÿ Ðõ‘õë·ºk®ìÖ®Ý$ªÓ›,_~¢¾¨žªù›oþPœëf‹Ú=U ÷§Œèÿþ÷‡£FýÝwŸàöÙ§^¦müô×»÷Ý, Ò&6Ÿ}ö—2{îU«VN<öïWǽè¶vnÙCÀ˜~öpK¸§ðl>ûìWÕ;ÿÎ;{ZÙÛ„{C‰?!´C?þµ†ÄùjõèYoÞ¼CB=‹-þÐè[鞯[·ETôϺþY­êÿ´ûÒý#œ*„Òjf× C ›ÓÏ&p‰ô¡O—\ò–ëÛ÷wî¹ûçûÔzè!‘ïÎ÷yØ2@‘"EE3txÈˆƒ/&ªõ=¿°ë?÷Üû*åg¾wçjÕê#vý’²¡Øác|p•ëÞ½i†í¬Aî 0iÒ$ѲT“wV+Ç,X°ÀM›6-ÜO… $÷BGÑ%‡¯eçàË/¿t={ötþù§˜…VkeË–•4âíÄa9ýŠ Û·oMèwbú<ÐU¬X1SÃoÙ²EBLÇìádùý÷ßkäI°“=zˆÃé(íÿ·ß~sݺu“TÐIÁ&ùz¼çu¾NÇÏ*Ÿ}6^¾€?Qû=öÐD É“'KøÕûîŒ3ÎH„éØ2‰*÷ŋר4¾hÑjµ­Ïž½\ãã—-[¯öýPÉÙê²9ø¹LÒ×_-qöHëG|~FDÆHcú¡”{÷Ÿ|òIwôÑG»sÎ9'ǃ|þùçî•W^‘4ß§h_ .t?ýô“2Åúõëg»ÿÓO?]Ün½õV) TY25¶’\³%òã©%r—»ôÒKÓìûòË/w6lPfœf£¨K–,‘È’‹uŒ+¯¼Ò]xá…RŽy?]×Yg±yà:›’Î;»óÏ?_çT§N¨óïÔ˜~þaŸã‘Ÿyæ{µ¯~òÉ5êL•ã­ƒ½<ìÉ]ŸVþú;wK¼5يٴ)Y6 3|^À„ ó÷ê÷ÑâÙPÃLarH W\q…{ùå—%Âb»8p CúDÚ½ñÆõ~×®]•ÑÀ³U«V•°Ë·%ËaÑÚ<'ý\óæÍÕKü‰'žÿÆoHšî‘ò>&HÚãõîùçŸÍñâTÙI>ýôS•fßyçWºti żM:÷•\§¹£Ž:ʽôÒKÚÒ7Ú?Ÿ`öôY¯^=wÏ=÷è\jÔ¨!‚ˋΟëwÞ)›ÏTšïß¿¿® fËÚŽ8âˆéáÂ0Ð,´hÑÂp ªM¸ì²Ë¤DøÏ:ß7ß|Ó >Ü}òÉ'®R¥Jâû´VœRßÓq‹+&ÉË®•ˆ§+%<õ:÷È#t_}õ•b@?ø²^®7N¯Ý~ûí®Q£FzìÿB[²cGªßʺuë\ô\ªWÏŸ:ñ ôWlŸ¹Š_¾0|$¢o¾¹Ñ~®¢mû åׯ_E¾¬+û—2ý¹qcéL·MJ*™é¶{cÃ5kÖ(ÓöÙgUZ½ùæ›%Zçu•:a0ÞÁƒ+4Æ “\%UÅŽÆeêÔ©â+Ñ[8ýÜÿýÚöšk®Q•7!b>-[¶Ì}ûí·îÃ?tHÿwÜÊ‘0qâDešãÇw+W®tô µlÙR’-ÕÖc˜w™2¡ÆóçÏ×1 $ŽÆ×hèg÷îÝ•i~ôÑGî‹/¾¢I½ôó›•«¯¾ÚÁ8É[ð믿:6cÇŽ•¨•™§»Þ A5MÌœ9S1ñ¢Y`.×_½;ñÄ¥8ÓþîÑGuåÊ•s÷Þ{¯n† "Ú¨;%¢d«[´h‘nrXÌzñâź&~±¹ßgžyF7O\c³sÉ%—èÏk¯½Æ%7eÊ”¦Ïû‰ž‹6̇_&éçè9’ð)ì÷ØG?ýôZ+š0íÙ|C€P<¨D‰b"%&9Rî¶jUËvX+‘Ò:„nÚï4 Ï &˜nÞ¼yz ƒzê©§TÊ>ï¼ó”YÁPO=õTÑÞ4QfÖ·o_wòÉ'«T‹¶€>>ø`§iÓ=ý(h‹€žE=Á@kÖ¬é.ºè"eúŒÁfÂ'6>¡GÝ CgÓ†ËøHûؽ˗//ùþÕõ`o燵,_¾Ü­X±Âýøãî‚ .P•:þo½õ–ßýŸlrüþÛ´i£Ò}Æ E+ú?Ý0`_GB?l(Ðf°Á¿à¦gŽå¾ôÏóEþû#nܸ±ä¯¨¢ÍÓRã³Öè¹Äê?/®ÓÏ ”ã4ƦMÛ$ÙÎëúù 9··ÅiZ Ù j¼x9ÐdÇY(3  UŒ1ÂMŸ>]%$‹|I)£çQ¢‡³•?êT$”hBuÉ—~N(9y›{øáÞZ%¯eËÚši/Øß®]»Eª›å7Εgp.áØW'#ñbÓL '7>̦Æß îÝwßU)ú°ÃS&Óõ)–³YÐÑ ó’=ä_çªÿôˆÿCÌ Œi&Ëßju˜-„ªg<æÆúð+ð7"K—. oNØ ø W üBJç§uëÖÚ?ŸôÏ37ÜpC ¥ÓÍöw6.ÌÕ}4ùN‚Ñ׃çøøï#x=xÌZÓ›K°mn›z?·ŽSÿkÖlõ×Kb¯ªåŒág *4«V­Ê¸a&Zà,„z‰»#6JÎÓ#œxH¡™¡òDÍøôÓO«mI€/ž>Àá-6Áèq&‚pXâ‹$ž„:ÁÏ48F’Ì)µh1ßuVë{"ò䦛ޗ¿ë;4äôœsBêÑœŽ··?ä ›!’(vlìøØìQ©£ò†©²عs§Jð³fÍÚ6ìáHè¨ÖQ‘ãy±©æïÛ6Ì bÃè«ÂéwÓ¦Mz=ø ‰˜ù`Z8î¸ãÔ€ÿ¯3Ï<Ó¡þ'!ÞþØÚ9æµýã4Ê\ÙÀ0W>c9’¢€ã4ˆ4NÿHø˜%ÐtàQ$ÖÆÿ2¾ ´Gʧ_¤x6â†X´×Ǻ}-£¹D·ÏÍscú¹‰nœúÆãù¤“žw‡ÒBÒsöŠS¯ùÛ v;ì`ü3zè¡j3Dê€ñ!M{ì±ú…Ä,ùgÅ)'!Ôr|!° çŸt$dvÜ8' Çh.ØÕãüጄ_Š|Aúj=æÌ™ãød>aËà ¦ #ÄÙÕ#RÿÐôܘ;öH¾$aœ|12>j?˜<6JçŸC9D“P…"ñ¥Ç¶mÛs~xS£¢¼ï¾û”óÅÉúñFæË”/_æa3c$<ðÅi)šøÒ»êª«Â—Ù¨À(øAã˘c¾p}züñÇUjËê—žÿ<Ÿdñ»ÿþ¡"iÞ%Œþ5Át´0ˆmÚ¤bÅÔ‚;Ágì8sø0ïŒÿ<Ë!¤g$þFø;‡·öíÛ«ç;Z&¤lŸü~øûnÖ¬™;üðÃÕæÍu67Ýt“2T6„}úôÑÇ`®ØÆ!þwø?ŠEh Ø´2GúcóeC “æ:› éß›?fœq< j%Ø0 ñÀ§'Eß®Îÿ¾cøáÿ2H8²Ia,úlÛ¶­Ž…g>>ÌÅßÄðœ 6}Lü¯ûׂýFÓ&£¹D?“«ç²³1J`Ö®Ýìuéò ÷òË?%ð,#§&á4žü³E^Œ:£0hOœ<ù'òäŸÞ“P?Ol•Þ€Õ–yˆ6"U˜ógœá “å ¤×xX'_Ç4kv©ûÜsßȽ~Ì­^ý>·råž®Äîö‘>¾£s×ß'žx†0Ó-L¬+Œ¨+Œip,ž/‘Æ]1+Ûø!ÄKÛ¸¯BŒƒû¸¿þ¦ï›„¸Ûy6E­ïŠ}?Ø–™¼§¼Ó^-–+R½6y÷ñLrÑ€0ú.øŒe®ƒkS€vãܼÇá€÷=#Ö\üã<ûÛ3ù¼µéÇ•¥ÊÜàTÉ«Wïñ½XBIÎËÜ` x4:’œ6’8Ž.²ð(GDŠõ7 a2¨ŸeQT©G"¤uÂl\ˆÓEúÆ£ÙhаéÚ@(g$¯u80ÎBHÂx8žDÒNDp÷„!í#…£®/*QTjJlú^@“ÍØ€~h4(¾a¼¢éƒç4íH)|0? àüx§¤¤¨¤)àñÇ×y‚7ðˆf"œ4c‡$8>üñ‡Ž…­ÿŠ+®P¼c7 sçVíÄ÷!Sûz¡Œnùò©m¯ÞýÌI3¤·?Üq¦=½ãÓÛÏ8iõIkÇV­Z@l×™SÀbj×®JÎÞ°0ÎmTñœËÒqZ`œÔ¼}ËëàÝíïPÎo´‡ñžŸu"Z@ÒÞëàÝâ éâ=Ƨ!ÜþpíiÍ%Ü1±n·D?ÖÑx«WoU•~‡g ±:?F£&Ö0Æù…ÏïŒDÈ1ÈØºÙ¢š‡¡'lu#b†*—å˼ ^G$ú{ÛÓsF¢¿Tž|X@Qsb¿„ñ@=cÇj˜ê=<®™?€Jó»ï¾ &-¡ Õ<Ý,x‘Ìoj<° ÀL¢hÔµ"1¨­R´"ºÁl?ðžQÀŒÂ8¨p¹FŠ´ˆþ ',3HW1cLSÃ.anêÇþÊ•;ns®ùoªìeæ‚a€1Ý`‹`^Í3Ãq~Ç73NuÅH58óá]Å1ÆÛ˸¦5!‡˜ #œV_»/2 dü­l|Û+ èÉUW ›÷¹’ ýš ŒóÀcÇC’ÇæÎB†pô!iY·Œ3  HØDÏ$ñà?í¢ÞKåŒd8¿ýàw"´;7 $^þ¢z ‚ÔN2$qˆ"öO³Ÿ6˜ã-O†0B”°é›5Ôüü¶t|plâ:ÀaTá<úñ3€QÂ/‰ ¿B¾¢<¡Iè‚=›?Ú잆Q 7Ö‘GÐÏÓ¦=*š›î‚“ÆÂè‘Å¿ \¯]†Âá-#íÈh >çÉ„A4@Â>~HO3àíÏóöŽXk²ó¡i"kg8óž&b?϶_#î8Û!2i°‡Ç6lw7~Ò•ò¸19놋ԦoìèØž%£˜Nð¾ûîSÛ4Äé êN:U÷ñ_4j×ç"wòäÉj+ç?W¤nW‘+>Ú›>özlúBàÔ†ŽÛ7 R®+Ž?.¶ylÞâô¤í¢ÒsE=ꊪޕEPÛ°é3a<ôüâ姨÷]QOê¹…IQ;*6BlïMš4q…»¢buÅŒáJ–0WT•.~Ø¥>ÚðÅ9É-T¨+±ÕA{k¨ùaŸåxüŒM_qHÒëÅÞm3çÄV ³ä c¢¿Í×¢E‹ÔW¼…‚p6}Q»\¿D2„:,d6ýsϽÒéþ°ýS§.–y¼ïw\/µï7nÜÿ°>¹©!V6ýDÀ™hœÔ÷ƒçÝ Â»â¤§ï™$ËÑç—wñÜw…©ÐçqBU{¿y—ų^Ûðà§?WÌKúމӮ÷49þw¼lúG€™ùÛ-Î ,¯U«!¢Ö?Y~™µM¢¾D"Be‰G=’7 êRæÌ¹¾Ð pnã}LY¼œ”””T*ÏpóCÒG}oŽ7׉ê¯zÖìKk‹9À+Ý¥Õ—}Ñöçün¾9 … ܲ#¤<åÊ—{SVü:ªÎ1ã¤HFË•`Ôûls:ðNb¯ç™÷ªó…yWÓÒ?ª{²í¡ö&Ù!Û!tD° 0@ßMÚÈ€‡F‰X~¢ðÔÇoSñõ˜ËÐzNÓ•ÓðiÖ¶1„ ‡t91Õ=vìØ+Dò%I™³ ~ôWúTø¼ô¨¼½ÀâÁ ïõÒR†R?cÓÎ,Ág^U*„€̜͢gÚ´“|á‡ʹŠý¡ænÈèuDCð™S´ý9Æ Õ\êô³eËN á£p”æÍOtÞxã&ó×ns(`aÌy/ÍóÏ¥àhjlô„’ ô}aÎMöÁ8®JœmEÓ¥D3&&Ææ7Yˆ¾^T¾¬1-HvHœšn¼ñUq«¦vÏhOÆþxï#áS8#R€€òÒ{¸aèü­3’ÿøxÿOôùE{ýùóˆøeËYß">ÀvLH 壑ò'¸ÁM`œUùíw´¥ @Í{m| ÐtÁP^&†Ô*®-i~Y¢Ÿ&z²fçw¾#aIþÒ*kN˜΂'¸÷…ŽtÊfa0ýQù‡’ŽýýLÿDÙ&úü6nÜ!a{Ëô ÎÊ—_+Zȋ͚2¼E2®í“¸@ZG ÇñÓ$‡"Óޤ$ÆȾ‡s,¢8Îâ´ xVѨG\€Œ‚˜í,d ‘½…ÛyäÉì´]TW·§²QGp¨íb17 ìÝKjV  lÔí¢EkyóÖê¢KòæÅ.Ÿ_ê’ï–ì…„A+æ\–-« êZºà‡‘¶QÓ¦'¤9–Ý™s0@dË 7ܬÿ þ ¨ôIk Ÿp\ü^ˆÖA]O8(ƒL! ®–0 ä—À\@T@(ðúù„ÚoÛÄDg‘},{ÂÝ.ö.yø#{;GvæZµNsEoyI_uÛ~áâˆì@Û+a0 ÙòäÞÏAaFóÉ'õó)þ„²ø’`—ÄþLwÞ:u—E>¿8ëý+Ÿ´‰~Û¶Ã4¬¯^½C ZÒ=í@}O$}û°É{ýBðÏÁŽO8ŸI$„mŸ<˜°ÿ„¢ÞŠÓ+©xö΄¼Òç·ß~cc! X¢Ÿ‚âµû£¦‰³Ò$]Ü"Y4ã5X»téyyçÈg®¨|wJBOQÁ ý)âU~x¬o¬ÎkljÆÿ[’ ’HˆýB܅‡–-O“çxx˜½©›W­Ú¢ù'¨%±woè1‘Ô8(ÙŸ•lUÄ+×=õHö_NÃÄßk¿÷Î_b­Pù8/} ™Ã€ ÙËþ2tô”)‹¤Ã›*áW­šv Ì ‹Bõûé§JÖ¼?%Tm—õ¨-™ÞêHNM§P¡˜†™dÑÙÓx1°{÷>‰ 'YQO{ »öîI,¿xJ—BBÇi˜¡vµj•M3Ù…u®»n¤”V]! žTãñç ëJfÂyâ¸W´ D 䑤GÈyJÖ7’)d/½ûƒ3á|á˜ôŽOöýh3õ5Z]ïKôc„ÉH‡P^zé ’™ªƒ¤O­éa ÓoÕªÍÿú颮Û"×R_<ìëKÖ­j 3G;‘Øb`áÂuRà]±é¯QblFGCկߕª øóÏåêÔ·råf©¡PA¤ôÊÂT–ìk)«c4ÇÁ<ôê5ZʽþžŠð.L&¹bâ¥]LT½Å¤¦Á\5/p\—.ͤÊÛ%fˆ¤Ýæ&¢Ÿ´71Ff‰~Œ™Ãlß¾GŠ•›.‰ŽF+‘GåŽ_Á‚‡´:Hò3f¬pËåòY&yô—‹–à &ß!Œ  Ã+¯ü$N]¤YݯÏÑwž/ÌÀ…’zu†óùA‚mÛöˆ]w«"®Aƒ1‡uËÙHLgö–觃 \´Ûý~³‘nÚµ®ÙÇúô¹"G\ÍÌ™+•У¾?õÔª2ÿ†’õªŽ%ô9âîÅg’»vísú÷ÿRêü¤¹ógÏî—î‰(`BüfÍZ)•ôŽRF hÑ‚R„ç Ñr¥Æúâ8*8Þ7ßÌ–úæ_‰“×ÉÆ¶Y¤~WTÁ…$Ì+çg« ^¤ïÙêBå•ðu³s ÈìI’®‚UïÇ™iõÐC;8»u‹ÜÄCécÓ<(vª5zôoRÊög]l!ômÚœ.!7á˦fÃ4í)³h|(”S­Zt•ܘ6 ð߯V&M6üuë¶;Hò Tùo›"jþ¢z•h™}t¬¤LÞªÇæÏŸOBŸÎf ØÓ[ äH X¢Ÿ· G¨W_(*òî’b2íx欘O¨slÚ´Óyíµ‰’Çúg]t1A ¾·`1Àôe4Ó¦-UÍ&€ÓN«ªÏc½z•$äo¾Jþ¸*ý¬\™:EsVÌÓžÃb ‡cÀýxß@0RìŽ×Cò¼ïÓE=>NZÇO[ét)ôsŠDœ›!é-êÛ,ÒÁÀ¢Eë…X*ñ×KÞ£åË7I•òâP¸Z’íQMÊ–ð§ƒF»ÛbÀ‹Kô½Øˆõï vH¬ú3R!ª­T 䚎õ92:žØØKÿ}™Ó±ãYòidãé3ŠL{\–`€¢T¿ÿ¾T?h¥ÐNW]uªj¥Ð Ô¨Q&KæbOb1C1`‰~¼n™Ç®ºêE!öÇ'T™\${ˆýäÉ‹œ;ïl¦Ä>™²Æë~Úq>ø‘&¸bfçw‚³dÉ:Éü¶KN $Œ³€7º ñ®ÂÎÈb K1`‰~¼ÐãÑ’%Ä!îæx"ªq‰Ÿ0àKçÇç9;7•|Øl¨0h;'"ÚµáL˜ð—N­ÿ«¥þ)ù’„½uÖ˜üXéx˜ðÄþùo%µéIν÷^¨ÙÎ"=Þö³ÈI¨Yó~IéºWRéÜqG1]V“E¸ š€©S—3°Hë 4lX]™4dLä°Úœt_ì\–èÇò–Y¬E‹guÁ¹úêSc9tTcQ¹ï¡‡>r*V&ÒCm?‹¤ÃºAƒÇ´Ô³øõ Q†0W•B>ÅìZI#<{öJe}…8ê¨Âÿ1Õ5g@"&âŠì@9–ègöîíßйä’Aê5ܱãÙ™.âãYÜž~úkÍ“ÿØc—;W^Ù âcmG‹dÆ…zºv}ÛÁÎ_¤HA§\¹ò¿™Óºõiq»l’]Aüñ €À𬳌& ºƒ©Á‚Å@`ÀýÌÞlè8Ñ1³CE|<‹J÷îïj¸Ñã·Jˆ¸ã¡C‡ŠYáΈ¯Áv̽èÓ§óÈ#Ä×]7Brõ/pÙkÚ´–„í­p>ý´›S½zô‚22Q´†` B„õ,Ø’NØ‚Å@6`ÀýÌ EåÎ;ßqÆï¥¶ÃÌŒɱH÷O<ñ…óÕW3gži“P©};uêä4jÔÈakÁb F-f°EC5:\—˜´/_ŽÉm¤êÝ¡ý]»žïLœ8_‹^eG8å…'O^¨ŒLÀÆ;Õ)¿˜&“ÛnIlJúH ÙƒßwÝõ®$¾i—%ÿÏ?—«Ê’ð¡ îwŠMÌj}!‘e-²ø¶´ly’Húû1c¦9Æýà4n\C‹KÝqÇyY<GM ˜àŒnãÆÎ/¿,TSÀ{ïý*ÚÂÍêxh4õëW¶¹²ü.åŽZ¢ŸÁûܫׇb˯' IÍ ŽÙaüë<ûì×Î;ïLq¼FíDv¤íe1»1УGs§Y³§Ô»~Ê”ÅNK„ ¶ýcŽ)š­Èáü—^Z_?Ldóæ]ÿ™:÷ß?ÚYºt£æ @#/_žl³=yr`Àý ÜÇO>ùCcw Šo<>vÁÛoË)[¶¸˜îËö…*¨²‡X dÊ—?J+ðåÏŸWÃ쬩91pàW^{M¶Í+Ô‰K–,¬ =Ù3Ògã»Ãœ~øcgÑ¢u•¢ Œù,X d–èG‰5ls<ò‰óÞ{·Gô#šS¡’|ì±±NÏž-u¡ŠæØÜÚwæÌ™’jøXQ¥–‹ vìØá|ýõ×ÎêÕ«%+Û)²ÐžîäÏŸ?&c‡dݺu’ëá²èow.»ì²˜]K¸ó¥×>}út§L™2Ù>ôæn÷îÍsÏ Iv•{ø¨jÌˆÝ¿é¦ÆÙš&ûï¿ÿvj×®nÚ‡µçÉSÀY¹²‚øóTtŽ<²¢hÆ:î:¬ŸmH~ œqÆ¢š’á µú¢(Q‡×CìÁc”>\ÔÄ e±Ýþ Lî?~¼:C~óÍ7‶I|8ºŠ¦çöLŽýáú›nºIdqY±bEôƒ$È¥Juš7¯£¡­M›Övöï? ïny1™}“­3ü믿œ+®¸Bœ ݈>î‘‹œ­[tÖ¯Ç9p`gDÇE:¾íÙ}Èn<-X°ÀÙ°aC¦ž]Kô£@ßÛoOVµÛm·5‰â¨È»Î™ósÁÏ8Å‹r¾ùæžl•D"Ÿuä=ï¾ûn©òw³Ä,'aTM%ÏÀÓN¥J•$žù,YÈÖ;]t‘3iÒ$ð—_~{ç¥âå¼Ñ¹æškT‚¿ð •îß¿_£Ê—/ïÜrË-ÎÉ'ŸœjwÜq‡T¼Õ©R¥ŠJç¼(À©§žªDÉõꫯvví HJ-Z´p.\èÌŸ?_ç@_ˆ^¯^½¤:áû΃>(%’ß’B.w8ŒE?¤pÌ{ùòåº÷îÝ[¯‰snü7Þ­t>Œ„j»ñÆçž{N %½é<ðÀÂô}$!fÕµk׊£ÏÆ’æ(±S7“üð«œÅ‹‹JøB§U«V*wîÜYÇÏwÝu—䟯¦Òäü¡íŒwüñÇ;5jÔpFŽ©mûöíÓk=æ˜c$móùz}íÛ·MÖ{¢izLÊC/QFœßvÛmbb:FRÒÖq~úé'=žˆ ·v…{ºeËmO¤/Þ××^›(8¿Ù!aÏ„ óDm¾ÀÁ|fÁb ·aÀýï8±øÔ£Ç[?!?0mÚ¼$æb Ë»2®¦ƒ/9æÝ T ¤çmÛ¶9o¿ý¶¨+¿R•ùgŸ}&uÏk9ü±ž—-ÿ!€E‹uP‡–*UÊùä“Oô¤QÔà´±Ï pâäÉ“ÅѲ±Ü³t÷Œ3œ’%KJm‚?•É7nœ¶#Á)RD?¨ð<(qÝÓ%$²‰îŸ6mšÃüJ—.í,XÐÙ³gޝ;å‹óA<ÿýw EûüóÏÅ–|•~0¿€¶wÞyGîíÊløÛ –Ë–-sÎ>;u‚§{ï½W :׳2uêT½†—_~Y<Ó÷ªù¢¾`(0E€ç_ýUñÓ AñX.’áeZç©§žR†¼}ÿý÷Rs~Žd˜›-6ãŠ+öŸt•¥JôÁõo¿ý&s‚síµ×JA§‡ôòa€`ž``иŸ‰µj•SúÓOÿPÂÏüHªõÒK±Ñ %ÚõÚùX ¤…KôÓÂŽgß=÷¼/’Îy"%•ñ´fþçîÝû4IäóÏ»½y3?rbŽÐ¶m[ñD®¯6òÖ­[‹ªõDU£#É"ÑC¶HãHº\$ànݺ©TúÝwß9H£HÏH´¡šöâN?Æ |¦d1Hª*TPéŽd»{÷nšóA8{ôè!„â¥P§Ó6æ‰æâçŸmMq%‚Øè‘¬‘ÂaD Ú… :¬-oÞ¼:†9§ÿ$Ìõþûï—Jr5æk˜#´×_½2 œÇ¨âÑJ éƒSÚ Ê… ‡°Eª5àZaŠ Ò:tÐë'a’%J(##d€óƒ3˜‡~X5h ¨aϼ87’¾9¿9.Q¶„é½òÊDÑ–Ô›x^ÕØ}üñÂÐX»x¢Ü#;¬Á€%úà™8Z‡.]šFÐ;ò.‹¯õìó"=æ—Å÷n§jÕR‘œC{Bˆ€(˜y¶£4g8˽òÊ+AÍ^v8öF3çhúZ¢Ÿ¶î¿Œ¨õ›ˆZµl:=#ßýÌ3_‹í~Œ<È·Êâzä&iOd>êh $QIU5žô8Ÿ¡~Æëû<¦G}4Õ‹oÆùàƒTþÌ3ϨJŸ±LY˜ªV­ªj?G<ãȇó ÀƒÓÄ ­æÖ•ú•W^©R8 „‘ŽaFØI)g@Î…_¹reµ™ã÷·±ŸkÁÙMC¿~ý‚‹f $ ú± b¾æú½ûhã|Ì“c ñ@³¾aª¸&ê'p˜00\/ ×3æÎêüþ~Ùõ¿mÛÓÅ,ò»ÚóM<<Ò>m‰8‘Â|ò¼ð¬s¸SˆŒ+Ì¥úbÊI&Lkm€w‰w çý1qàÂ9ÄbÎ1i”,ýyæyfùà_‚6ßs(W]eÞž)£‘4h>ghÇ0û@óÇØ˜Úð%ášÆŽr|ÞL`øã éóîð^?˜[­!ãœû¼óÎÓß|á°‹†mxN˱-Ú%—\"IŸZ;?þ¸ Ü/4™¼§hÅÂ+Žƒ‰Ç¹!Â`à‹/¦»ãëŠÓO˜Ñ5K W ¸­Z q% gt'xoñ2×I®Hµnô·0\²Ž\§ÏÏ>÷NLL®˜¥\Þ 1·ès2qâDW8=‡D¸¸ƒvEbu…°» pE’u…(é˜Â¬¹B@]qêt%×…+þ.ï‘DŠè˜Â º]ºtѱ„©Ðcø#DѬc cîŠvË‚¯}ÅoDç&æ)W®+Z1÷É'ŸtŧÆéÛÿíÇ3ÉúÑ·o_W4h®˜›ä}á¾þúëˆñ®DÁ¸Â€º¾ªç7_¢sſŠ5¾hµ\aHÜwß}W¯ExõÚ¹>~‹ùÐ-GðšÀó„É×wD˜Wüx\qTuÅô|o8Ÿhõ# “âšyr=¬9œ¸âƒä Ãá ñ×µ(ܹÂáØ\£+̈+B…¿9šÿãóŃ‘H†1Ɉջ÷'¢b½!&é/—.Ý ’ÖHQKÕ êr±ýZ%‹ÿ9AúÅHb¨ŸMµ {w¨D&8ä¥e74vï`H8ÛE ر½¶lïqÆ?ÀÛÆoœäü€ôï‡Pmô‘ÅÝIIIñw×ÿᎠÙ9D#s5o¿E¸$DÑà.Äé³½‰¼cÇþ)Z£Ô¤†ögÚQ£~óÊYÙ>?ÿÎ9çuÒÄfNø$ј•xGÐD±ó Ïõ¹çž«"ã8Šv ÇQ¤Xa\Å'©‹ö󆛚ó¡ÝA« }£1TC¬‘„;vì¨ûøÂ©ÔR9& pJDÏY±bÅÔGÇïàÊõôïß_Ïóâ‹/ªÉ ߢIšˆêž9^m“9Ùâƒn|œLy0Å‘° ³>:$ð&\׌åßâ›Ãºclý޽ŒGô f6´^DqOðï×8ýäÙ@〖!„Âq¸¾±h·”' ©f×¼ù‰šÿ:L—ˆ›'MZ q݃ÕûŸR¸–à‡Fªflä¡¥ÐG8B‡zÍ 8Û°ú;¼y‰ýû"ùJQ¤‡E Õ¢°×‘¦¶tãѶSÜ0ТÅIrïæ)¡?묚Asă~¤exãvâ œ–ã+Câû¡5Ñ.˜WüN¢¼¨Ða ˆ¡¼Œ ¾FÕnÚ½mþcÍòm`’ Š"Ï;Ä"Ëùý®ëûî»OÕáÌÀ; ‘6ÑœsE¸ñÍq˜¥0 ˆ¶Ps‚„rþ5θæï6Ç^0®“ € Ôû^ðŸ+{ÇÉèoKôC`nÚ´¥Î·ßΖXäKBì®é7& ‡=J%‹öíFwp.ë¹ñæÒý’¸ 9óáïçߟÖ4ØI¸ƒç0vMlŽØÃÃö:$-œ¿ýöÛpÝl{b xñ‚Bª:ß}7W$ÊšâëP\ë#ÄÙë_M¯…S‰É©°Åólñá7Ò¶ßI‚D4 Ädœ`½€ B‘‚‘ba&ã¼êuˆÅ©w /¢~àœh¥È`ÊÁ¢#áÀU*&¯L´qÒå84h ü€”޽þøú„ßÇõâo æ PáxŽeÀv£_8‡`ãК–c¯9[˜pˆœÃ¡ Hë\¡pì3Ö¿-Ñ÷a”—ÿ¾û>Ô°žbÅB‡ƒù ù÷ßq^ùDÔ†“…óî!gµýlcâc€”©$ÕaÉHì’ãŽä„ƒf TžõêÕS$¤.¼†qfbñd4‹cø|Žp"‹&‰×^{-ñ‘’ƒgxÉ%õe1ž!‰›ŽW§¾rå’žý«V%^FÁP¨6“HÅd¤„øAhQÅûDqÒÄõ?j|ˆ’3ªr¤aœan9åK†J´i€q‚Õ?¾/$X˜äP®H÷ä}àÃû€úç@ˆ#Y1Q 9ÀqÔÌVÞ9®=Ôæäž7¾™D—wú8ö’k‚l d „àóΑôË«¹ãœàçarT¤åØËyÌÙâÉØhiˆìÁA2­s…±™{\¶r¡<,]nûöÃ=-Ñÿܹs¯Û¡ÃH·mÛa.¿sÄÊ‘/q%™ô\Q?65ñÔuEpÅØ•…ÖîÞ•…Kwp’l€®,Žê…#Êɇ-±©»¢p…‰:_vÂ$hÈnG>P¸mÛnq,{@œ¹ö‰SÔ}îqÇõ'®»Å©¯‡{íµ/g –#qä‹t"8¬á„ç…PŽ£8`â4'!¥êÈgú #ê ¡Uç6ø àdÊ!ÖìvÊÁU´ êŒËX8#g]œq ‹BoŽÇqÐ8ðâ¤*ŒÙ¥ç þñýÀ!Ðë œ–c¯÷Pœ`%WðzÌ>®Ñ Ñâ8Ž|VÒ÷°RTÐ{ñÅïƒÉ;<»"þI\ÿå—–З’W¸ð‘k;&&P‰†rÄY .Ò ’=*T¥ìCr1R€q¨Âɇ”·ÆÉ‡ã Ä®I¬>jX ñÃ< fýüó‘ú*н»¸HEå>¹ÎĉóEå»6~'ñÈHç$’1¡¦fxTë~çLLgÆ~lúy·ØºÑøI83¾0f<\‘Ò½€¦‡9[¸yWYÅ– „߆À8¡â¤jR±ßkƒ7ýÍM‚÷Ú1-ˆéj‹&ë¥0}Â+V86çIkk½÷=Ø¡”-õ¶«TIý`zº¤ùó¯¿VË¢=B<^Ï‘ýPÌgšÙ ÐY³fiV@☠`+”Ð)µ“zÓpNOi9ù_“4ÆœÃnãƒóΫ-öê¿Å$SÙùë¯DmìˆóÙvUñ’rû³ÏºÅçÄ1µt¨h‘´NC̼q꣦LR~@…ÑË,Àìò®ÀÌ¢¶' ÀúôÆÆ›Ÿú†¹N¯NÛ+GsÝVÒÿ[?ý4_¾¬lpçGƒ¿`_<ô[·~ÉéÛ÷JKðƒXIŽgžy¦&6!‘Þ¸öGréßpà úŸE}ØYаÆˆßáœ|Øg!k1@™Ý~øKì®HšÄ[}§Hty”²àÌ› Z‚Ï5ñ|z¥hM/Ój®-U¸ÐMÓ'½-†0xôãÐJb|W`¢Ã7Žp¡´láŽÍií±Àq´×l‰¾`ŒŠ[<0F´®ÒØÝh‘HF¯ÎG‰CW'q‚9)ÚÃmÿÇR9^¶,Ž&n“)')v¨@‡š>~&D'œ“ÿòŠÓßnÿǵk—ïêýBüò‹cÛnaàÖ‰‡w%aÜŠ´ïhÆÌØ-wŽ$¶kG|}2ìAô‰¹'œOøž={jVM&@œf½™ðùƒq&*‡<Þ¿ôJKçNlG~Õ–è ®FŽ$EeY Áª9æþëIyNJî~üqW Šz{@ŽÀéqñÀ'´ |â‰ñ†6€ÄOØÄß$/!‰Ø~ªÂœ·$¡¶EBûH± …¥—8D;Ú¯Lcà‚ NPoýeË6ˆ×ziñ©Hu6;®Ü£ujóÏôIrñ¼#kˆ´š4i¢…~ð}!g?Iƒ¨ç@A*ˆ:ÉjH ‘'<¢OlB`±‹§UZÚ{.ûûp äz¢¿aÃqÞûAbtÙ¨GQø–>}>•P?$ü§».á{Ú=É‚nLÂÿ5á¤dl˜§R @IDATóf_(µi8'sŒÝf Î:«†¨™WˆÓåv•ò‹/¤$}qöVf>kf’œgÁ­•_=ïu€5™É‰O¼=ñò0¾øxíøÑ––NNŒÆæªr=ÑòÉ/DÝÔ0*ç=bðïºë]É·\ˆþšà#6·ÃŽ’1€7>*I 9  VíÌbõܯZõXq4Û$Q7Å•PñŽã˜;s¦¤Èè]Åß—R¸^Àÿ…â?€—)ç‹™'@“\Ë›åÎËd['X/–ÃÿÎÕDæÌ•’ëy®d„jC¾=Ø©’·eË.I9y»Hv‡§´ôbÿ&9JbáåœähJ¸Ë#¬¶X±BBô‹Hê×bRÂu˜bj¨Ö.Ož#D­|Àyî¹Ü[z7³7ŒP7Ôô¨æMM{lö$£!\— Ðë‹¶ ³¥¥3{-Ét|®&ú=ô‘8]]* vd±ôái×îe±çn‘ò•7IÞ÷üÉô,Øk±Èu8óÌêâ¼çŠ—zÛ~ÆÕE¢,ªiy :Rìú ¥ìòº\‡—X]0~-ÄþcO‘"RxîãèjŠû Â÷gôfÂ3óÈLii3†Ý0kãô©´EÊ]ªnE›6í”ï/ËZMÂòZErH®êCˆ©dù„8ö|ùJ‹Ê¯¢Øë*I|û& ãù)\wÛž¤ðVfËîK„È“¤¿gÏ~‰Û¯$¦š$±MQ‰ºØ!Ž–5a×óÏ_›ÝSÍ‘çG}OÍ{$}œú°á£†7@õLìø„ó™Ä@ØöqˆÅ4€ý ?N}8ÁV®\9JH›c-¤CØO¿oÒôØ·ï „ç}!yÓÛGtMdٻ暗¤úÛÉRF±eDÇä¶N]»vuøøaΜÄS}|J¾úEš©êÙg'I:jIÈTdZÿ¸ö¿Å@,0@ñLu›7￞R’Mq¯šì°÷ùå,uèûì³éZû¨£2Ÿ¨&sΉc@ü½ö{ï5 Ð_ù.œ¹,³¥¥½çÍ­¿s%ÑõÕŸ$ýf…ˆŠààÜÁ¿é¦ÆÎ-· ÑÊ­Lz×ý÷ß«•ÀCä§LY$S)œQCÒÔ6_ˆ6ê4•Þv¿Å@Va %¥”–Ô…±¯Zµ”³|ùFõä/Sæ(±ó²ÍR¥¤óÞ{¿Jh¥Í²Ëû.`,ÏaÇ:¹ŽèÃÑ“_ÿóÏ»Ž _Ë’%4Ë^·nHºÕ3}{í_0€½õ(¶O$ú% ‘?NÂoê9ýû_­RS‰Œ Ž{þ&eP7nÜ!ÕÕ*k&½|ùòh,ÿë¯O´D?Æ71\&ÀŸÆçÃ@®#úÏ?ÿÔ>E¹z.Rý?Ô¥~Yì{Gl÷O5@’þ ù€ÊgFÔõ-ZÔqü Uß'é¥ÛËJR  Ö_µj“¬ 5TÕ å%S ~(¿ý¶Dìý4W?&) 9¹Šè/[¶Q“éLšô`š÷Œø\œöúô¹B¼LON³o²ïDÝɈºž¡Ly –Ш\¹ÉŽ{}I޲ñ7S2½qHÖU£F­´×¶íÆ·ZÒ.¥jþ¡Cÿ§~(±@l8¸ÁTX°ˆ˜E2¹Šè8Níò%J„/Ùˆãay\“+óè¯ZµYUõHó8ÞQ— Q#ïjˆã…Q%1ỄiµÈ* T­ZZ<õw*ѧ¬n¥JG‹cßN©"•÷æ‰ùv é›:u‰Úü+WÎXNïõœ†¤3,²¹†èÏž½J%ÕgŸmÇ|$üsÁÇÉØäÙ’|Ïzˆ|÷îÍÓ5ƒ„E¦Ýa1C0@¾ƒª ï} R¥cÄÛ¼¤é]©a|„÷®\¹Y‚áR&ö~­È—C.ÏNÓb ’–è¿óÎd‰Ïç\uÕ©ú2¢w÷Ý-´ªV* ü÷Nÿ‚ ž–B“ZÂ_·n›JòHñ“&Í—øØÝê]¡ïܹ©­!êá°mIüùóJ˜^!Mºµoß½V<öQõ#ÕŸpBgÉ’õªåš;÷çž{>Êq6n?©Š$¾¸¤%ú<ò‰Ü¶#´hFëÖ§ëKÛ¾}C½•×\ó¢T~:!X÷~ëÖ/9íÛŸ)±øõ“êvãŒg}@]¿P2¼ëQÙ†xüñe“êzíÅX D‹ˆ>%vW¯Þªæ,ޝRå‘ì7IhoE‘ø Kb’ËlÑì3f,Wà{ïRÉF{>Ûßb ;1”DUÜÞ½4ËÖîÝûœW^ùIBÉ I5¼š æ?–;|àê›7?1¨Ò¿è¢ºÙy/brn4ÄÇ#ÉOœ8ßA}OªQb寿þl§Nò19Äb Y0€F°`Á#ÕƒÿÀƒzY¥K×w§~ýÊZf_—ڵˋãjq•þgÍZåÜwßhIòu•†õ% .ìu$?’’èó‚òïÚ°Ïíܹ×áÓ³çû²Ý¼«ƒÿO ã˜1]r¬Z{ëÖÝJà‰‘G¢G:!U0’üàÁí5 ‘õÞrûÃbà0 (OLyÕCÿ˜cŠê~¶D®À,ýõ,âOòÖRxÿòËC·ÿ–Ó¶í0©Ãq³-¼uVmC¢b )‰>¡y$Õðƒ—à³o×®}ZwäÈÕyÏß?ÿãh4yr ¥-6yâæI%Êâôì³m4›au,,"Ã@¾|yÕ1oÅŠõÁdR¥Ks0ÎGª¶mO×ÿ³g¯Oþ¼Ò7rä N¿~_ˆÐsÎë¯ß”c‡È°d{% ’’è/_¾IйÔtæF!íæÍ›GTþÿªÚß´Cø?úhš†Ï<õTkÓ·íO?Íw~øcIôq_DÀÌu} ãÝB]lN=5E½ëû÷¿F$J· ²[ äp @Ä)¸“'‚B Œ®xñBZ4bô·oß­Ìô¨Q¿8ë×ow.½´žóÍ7³ÅÁ¯¼Ó»÷¥RD¦Œ¤™¢(/¹¤^dž~²c )‰>ž¶„ž@ò-R¤€Úù8<6–þí·';ñ$ú˜x`Œñ˜¡‹ Ä?Tv/|ˆFš')¹ìO>¹Š†Ñ=öØåÎ)§TQIÃ\›ÝZ X dýýûH•·ââçŠ-(Ä~|Üqetý˜>}¹hÔŽ“úÅ”è÷èÑ\÷·isº2·Þú†óý÷s%3e+§X±‚™›”=Úb NHJ¢O-“ø"oÞ#Ôû– rTËò¶<4:œå˜Ø»?V¿üqž„ý%æ„ýÂxìWÉ|„¿•èãpHšO¼ëÉx7gÎ*]@°É?ôÐ¥š {£‹‹ø`€÷ b_¡BI±Ù=%uaÔ²N¢qà P·nEgéÒê;ƒ·¿ÉHY»v9aîuÿçò^S[[çÜsÏ„í¨™À@R}ìÜ/)UÞFîì´lù¬zëÓgªŸP¾ž=[:¥JœwØK@R¸ÿþÑêäÕ<]ðå—35ñÇÌ™+Ä£¾‚Jd¼;í´ªRG:)oK,QkDzˆX'0²lÞ¼CÇ¥ †€À9u>RþèÑÓ$§G©?G"bÎÒ>|.|¤zó_|q]"ÞÓ°àÞ½/Óö`'ûÃb ›1”Ô…05û±ÇâÚCòíÿ.h>B™ü.½´¾㋃\z<îÁ?üåtéò¶êØ\<¼çY»v›HWŠ4PÓÖ”÷"Æþ¶Èb Àd8ð¯ªä)¬`Äì`×'Fižô¼¬/DÈø‰¾v–/²YŽßKjw|&¿Ÿ”—‰Íÿ³Ûn-²‡»¸gët2rTr¨âÊ—/é|ûmO%üŒ)¿fÚ#…æ /´‹Ágñ¸í¶7%Çÿëâ´+$Áç* Î/LHKð3Ëí™Â@¡BG:DÅ@üY;€ÑÿW—+w””Úݦ’>žüuëV’½‚êwc̈ÚÑó…ÑSO]ã¼öZ'gøð êèG0 ÙTDÿÇT7vîœú)^¼„8å¬g¸~¢Š+*!áÎîüMgĈ4±F<¯í˜cÎu>ÿ|º,»Ä¯`ŸH {e›:’€›Î"3~ü_Ù}ÿcrþÎ;çØç%žÏ‚;ü:Òºuü#e"}¸QË“Ó#oÞ¼Aç=¯¤OF>’^‘’wéÒ âX[Y3|–-{”šèÒ:}¿úª‡¦'ë'‘;¤÷µ`1]H¥ÞŸ0a‚ب®wn¼ñÆìšO Ï{[ ÇŠ|¨;÷ tDÊß«ŸmÛÛ-[öH¸Ý?’Ýë)æQSSÜ#òѳçÂ… ʼnéÉnðfNÌYÚY% ¦L™"Åœº'ÊttHîøÝ`Ûg Ãf¿ CôÉrË-ç8cÆLÓˆBi‘üÓƺîº3Õ¬øüóß:?©ÎÃ]º4ÓL¡ik÷Y Ä©ˆ~¬Ïã)’_/õ}¹r©gÌØç|ðÁ÷΄ ¯æFÔØk¶HX -Z@Tø[E;XDöð2ª{4†[¶ìR“à–-;5.ŸÂ;8ê{ÇçEt]¤'ìööÛ›8Ï=÷­8ï>¡õ?:uj¤! b;Y d©Ôû™Ën1`1`1#1ÑGí^¦L ÇÛ³g¿˜2êôUª”fÀÑ$= ¤8Ó¦- 2‘^xÙ²%ÔÞ?n\gþü5âØW ƒYµ¤´ý2ƒKô3ƒ={¬Å€Å@R` H‘‚ªÂ¯Té‘ô·hŒ~‘"GêµáègBnIàCä éy׬Ù"a~Å4MoF@%¿!CÚk|ÿöí{Uíß«×hõ÷ÉÈxö‹H0pDÑ¢E’ãzc$s¨Ï¾}d¸›*±µ£~øA¸ù@ $c«Žå\"9'*Eõ XˆãÇ—H‰@2•È Ýó—_~qþúë“%÷䫯¾ Ý9†­_|ñ…޶dÉ=çä³nÝ:mß¹s§óÓO?eèŒ{öì‘|_;Ï?ÿ¼˜˜>´"gúôéRv6¹=ÏK–,¬áx•+­ê}¢€ðÀ(»K¦L€œü¤â­Q£Œ¦Ä& 6™ú"5kÖ„tx­TéhïŸ?3lØ Ñ6œ²Ÿu ïš[qƒu´pDÿý÷ß—²·D{!ûó’”?üP¸ç’ñî§k×®JüC ú§žzJwÏ;7¸à†ë«v’ô<øà‰~ȹ暗œË.«¡sÅ88 FÃÐ¥…”nݺIþ„sÅŽ»E»í߿߹袋œƒÂHkœh÷ö>úHʶÞ'ÌßÏ5_|±x}?ìlÛ¶MÂP¿vXq]*å•Ï;òszMŸ}ö™Ø“ÏRân0ýM7ݤ»q¼[±bE¸®IÑŽÄN6¾””RžGèj}0HûØú ß;þørÿýÊBô#à ëQ½zõÔ#éÿ<¸KîñÏ2Y‡íó÷µÿÇ_nà kÁ‚ Ì#ñ6j¢´Ü·o_‰E¿M½ü?ùä§cÇŽNûöí%|e–T›z]‰,3@òbáØºu«óÒK/9W_}µþ73fŒ¸kœ{î¹G¹Å‹'þå—_J‹þÚ¿mÛ¶J°ÙÉyY¼Zµjå<ú裒ü&6óÞ{ï}•o~1BÂkNvžyæ+ çƒ>¨ÿÑ„«_¿~’?û{)—ù†J7Û·oÞ’VóY!Ä—97Üpƒ3cÆ =ÏwÞé¼øâ‹Î•W^)¸z(c¡;"üZ´h½\ã8)šó¨„ô¼(NAS䥨Y\’ î¾ûnçæ›oµèqNÓ¦M§Ÿ~Z¢*)ñY¿~½ÕI“&é%Ü]z饪eáù8öØc%ÇÂ…¢~Ý$á˜ûN:I†òâE}‹Þ_/žî¸ãçÖ[oÛk±•ž®/÷ëŠ+®Ð育eËŠ3ÕcÁCZ´h¡ŒÞüùóufÇ)§œ¢Ï¤ùo¶+W®T"\¦Lsç¹mÖ¬™>“œwÀ€Îù矯s2dˆ  ¡­P¡‚s×]wé3Å3Èû¸&/SÁs˳ÈX<ï}ú8ï¼óŽ3jÔ(Åïh¨±xŸß{ï=Åš‡Í›7+îygŽ9æÉ"Y'¨uhÔ¨‘Ãý-W®œÞ[Ã,éÉsȪ|ÊqcoG} úIß\źؿ~ýy¾ßÛ(D¢™¤oƱ[‹ìÄ@ÔD"h$f^üaÆI*Ûžbj,¹í?ÏÖš’©ê;½&$ö|ùò9Ë–-“JqS”²È²01Λo¾)ùåÒÅò·ß~ pfG-ag!7 ’xÑ¢Eõ?‹Ë¯¿þªç:á„ä¥ ¹0¿YÈ4h ûÍ׉'ž(‰zö©j,µjÕª9mÚ´›Ý%ä¿ÿþ»¾ùÛ4h.òЇôâ9xð`•ÂÌ\̹BmÌ/ øBúI*Ïgœ—_þA%Ô‰þÊ€¡ŽÏ©m0d<0zH¬o¿ý¶ª®óçϯÏM­Zµœ?þX/-ÿy>¸×à¾T©R’Yñ=)ôÿûŸ¶±Ï ÜSˆðäÉ“õ™|á…ôòlvéÒEµ<0 FeÞ°aCQãÑL‚ˆªt¿:²jժμyó”È >\Ÿ˜aBa( ²0ˆœÇhÜÑŒ;VÇ|õÕWõz¦M›¦ïÏn Ê[`¼3àâÌ;pÁèûaÌ02%K–”ÒÐ ZïŒ7N Þ®™óöêÕKqÇó â…³Ï>[Ç[¾|¹2±þ±8þ¤“Nr` Ñ@ôÁ9ï)¡½×^{­¾»ŒÉ{Ó®0‡e…)Ä{-±ø] @~M”…ÍIž¸}oÑÔÇ8ð•(0T¬x´:üÕ«WIž…Õ°ùÄb.v ‹xb _F¯[·®.k×®Ui˜Å{#jôÓN;MìSOêBs€š醅 æÉÕ%¸~ýú:…Š+6úV®\Y?Ëù4G}´JZ0œÃ›[ÀüFr‚À{‚C;Ìà‹…™}…  Æ9h‡àñ)a!h×®pÿeUâ4„$x`ˆ+Vœ"vÕouQ ±;ØDˆPùò=‚ÿùQ@ÚðC¸öŒöã¸HǤoÑ¢)lÒ46Üo¤h$bîÿgœ¡öe$zTôHµŸþ¹óÖ[o)ÓõÄO¨ÄŒÊ‰í R(Œ3Œ˜Ð(  `?. fôòË/×®¨Ë±os>$_l бaa>  }âX$oˆ)L P¬X1•œy .¬Œ*Z lçD˜´ŒÅ3Ä»qä‘GªæfmZ20/0^ð}ïuÂÌ‚Þ?ÌiÌ zõêÕUû³m©‚n˜mÿX¦Ÿw‹V Þ?Äš÷Dò˜1e Áß·ï€Úì7nܡҾ×Ä–7o@)JŸ;ö¨šÓ¦r_jÜ>Ž·8÷%:`žb…áÎ,à'5qâÄà00Ê0õþw;Ø!„h‘Ñbù™U†À¤…)‰OVó™ š.4nÐSCÓ› J3÷ôúÆsÔêýH&ÃB†Ý•!Ò Ò6H$+Ô¼,êø@@‘àyý’XTP¥²À#­< ‡ž"ÒÀX,¨ÞßH眛$ƒ€6I" „‹ÅÌ ,î00œ“¹óPÃÈdòæÝ/Î…MEÒ{H➚ؕbá„hÄåvddšY~ 磌®RIí ÿQ-³° ñâ´ !ƹ 0f$ÿdñä>ýôS5ÓðÛ8eB!Úœà7Z*Îc| tÇ_x»#Õ óàÀÕ‡sN$­vvTÿHÙ<“\ û‚rxñ†ŠŸ{žÔñ| PÜ;lü)Âä!ý#©ð,y ¥Á?!i˜`xa Ø"ó\Ba. ÄŒ!Ò cá<ÈýõçCºä‘G´ʇgBK(¨yνǙßfN,dÆ;–Å‹s„ò.ð|")æ3F¨-Ì0Ï!Ì Ì5Ï+[L˜>HxÖÑ `BA2á=„Hó^±X³˜¡ÆâÄL€?4ø$ ¥ƒQÇQÖÞûéß—ÈÿIŒƒêžÜúhÙˆÁ?öØ:Á)Cô Ì/D/þ€ÉæÀ„ïQU3€? ëš |4дÂ0¢-ãù'Ê À¼È=Çÿ? žo­iƒ9Æ<Åó† ~!Ðxro„fΜ©æ-ÎÇs s€TŠð†S(ïýÐzaÊA[˘¼8œàÙ‚ÙD°‚ÑÄqšç‹wˆëB¸cNОG´Yh]ÑÃŒðl™pR®À\Œó7¦5€õu¿Þm$oÞ!˜^Öcaø7Ôºƒ ×ÁÀ¾iøþ¬ ¼_Ì5†õ?$h &H¬\+ŽÂhÁÐâ±ö `\4‚0GÌ šÅõñnAÏðo‚qÆt AƒÉ…-š@|zŒΜ/Û#ä‚\3R8±‰›öh·8·±p#¡±Üx0’¿±#ÒŽäÁG2,X6R ‹ý S€Ú“›º×< …ùbÉ@°‡®áÆ2jKï<隟‡Ü;í‘//öÜpÀí˜ï–õ F/œÆÓÛ×ó{BL%}æ„Ó1†àÓ΂—ã„ÚÏÃÍ ñunÎj,ãäçŸW4çôéæsÖYÇEÚ=iúÁ òb±ÐxâÄKé^æPö>ÓÏØªÍ¶¼œ|2 Æ„q¼ÏxzãB\‰ÊÛ×h¼m‘üæò|Žƒ %!píh'BA¨±˜o(uÎPýrRÛš5[õ½ÃŸ;K–l5&௄­Ÿ=@¾|y” àwÉ’0}»DJ«©ýi‹ X ‡r E#„TH„÷ mÌ-„›œ$mœEaL!Ò@úMâžE¿s+}üް´Á ð ¦&U"j}†ƒÿ0h²B9•†r„E3ÐD˜$fÀ«]Ò†4¾Òr7R‘¦¹~]4p}? 0°þ°…† úלœès¢ÏgjÑñ#ÕûŽÅ+A‡º ôGåaìÞã3ò;–ceäüö˜Cà~ÃÁG#=BÄü¶=¤ / 1Àµ'°ÀÆê=ˆåX9ÇýÆkˆ´ù«HÏ%5?1ùÀ–-»DÃ`óçÏ+‹ IS úÞY·ŽTf€~˜2 HõáœB)B‹€Ào¶ØÑ‘ªÑ E£þG=ÁüÚÚ¼k´×¹Õ´{Ûè èkL ì'D¡ô;•†r„åùó2Ò¡½Pç¦--çàPŽ­8dÓÎü$uˆ¹Ð$û!YbéýW˜ÁÿH桉f{ï"N*‹æHïü±+½s¥·Û`nŽõEU Á7ø4/¯ùÏ=õK¨, y&͘‰¸õ_wfæ˱23ì:vÛ¶=BUuM Ã\*Ä*¯h„ò ¡ ÈDxë- úùòåB°ˆ–*UT%}æ £@Îþ¬ìÇdcãÃoL]0̨…1e¡!@#€ZQ3ίÞù…sn å‹-Þ$†BŽz<àôŒÉ+œS)ªl¿#¬qÎå8Læ<¡Æ¦-Ô0`†D­à“ƒIuæ&ó"¼ŽPÏ'ƒClÌ%}ƒ(» ``÷îòÒý+>{Äô±Kb|Ë'þ¹ØV×Ë ¹Q¢¶ÉK²S’>}Z‰ZïPx¡Å¡Å€Å@ü1€ÓR=R:1÷¨ì ‘çìá,.€”ƒ áïØ ¢¿YÌ'pfíã/$z©˜ŒHïwÓ#¶¨òѸ þh ˜qÄC9·úa9‡SìÎØÑ±ƒã…¯€`®a<Ð6„r*…pòñ:Â"ý〉†S¬™£üHþs,pjäï ’ §DÔõ0Oà {:s@CÂÏø1€G«¤pˆÅ‘ÏÀ„ `asü§D‰¦î‘G–;ì:J–¼Ì=úèËÝ‚SÜ#ŽÈsØþx\û±ÇvtË•ëî–-ÛÙ-S¦³[¡B7ýO›÷S³æýîçŸO7·"GmÅù.KpûcÇÌž÷]Ì9 óŒÿ·Û¶í0OïÞ»-[>ë6lØ78¿ï¾›ãvè0Rÿ‹w¿ìë§¿?ø`ªÛ­Û»úûƸ¯½61xL¨"Aº’{?Ô®¨Û$|Ò•HŠTlj?•+jª6 ÏtE‚vÅãÝŸ™à>‰Fr…к¢ p%#Ø.®D ¸¢!pEClÏèÎ-Žª©M„+Q'Ú&jtWý- WœSSõÅŸPs`\ð%&ŒT§ ¯Ä™8.À™h;‚×`ú‹FQÇÇcÓ¤[Î!ÌEª6þÐû“QfÅå~E ãSIúp32€¬ƒ9N;­¨¼ê‰§üÂAÖ^Œ¼¤ûý¡pǵ…t$t«xG6”Ä;ƒ}bý;^¾³f­oë½Âq‡>ÎBx çDÀŽÈÇ‚Å@NÄÀêÕ[TÂgîçŸ_GÃf>:i‘6ÂùPåhípæ¼Õ÷*V,)kNÖ¨÷‘Îq0#ÄÔ ØœýžÉ,œ5”#¬ìHþ#ùûMk^û½×6^9B͹‡Â—®ôóûåt‡Ø˜ÛôARvÃÙg×TæåúëGŠSÉÌàtÚ´9]Â.Ê+ñݾ}fÅkÕjˆÄjöÑÔ¸ñ°É¡2üä“;Å+½:‘ã;`G|÷Ý)¢B#y 8T?Ûf1`1[ x‰>‘3Û¶í–õãwN†>bò„"ìúê}*ï0 ôË @ÅŽÝÝ8éErNòD Ö6ιGXoSÓ?Þ[ÂrceË÷ÏÕDøÛcý?§8Ä&%ѯS‡\ùÄ^C„·%æÿP\ü!t7®ËK?dÈÿD+ð¤8y<#1¢Üå±|(.¿üdIñ¨pçõÅIèÈÆ®_¿Š, û”ù¨[··8—<#‰!ƨԱbÅឤ‡ `,,2„Õ«·j¬=#Å)RP z'møÜIŸÂX$é(·Ë”,(Ä£âüEl~´€fÀι5”#l´çÊHòÃŒ(`’bÅclï˜9Å!6)‰þqÇ•Vï[n/壎UbʲàuêÔX¹tþ ßÞ½û%9Ã*qèª*=³/VÛâÅ Jƨvâs‡$Ø()j£@6Ô„-[ž$2—‘ï*•ÑúKéÙÖŽRZ7Ì–XÚÁ’hã1‰Ÿ}]’[Œ—lVK%qQ l(Vs³ãX äV $ýCùBˆ¢AÚ7€ÚÞÄìCô)à õ9³oŽIæ- qÐ à?qáƒdÍpÐó—]Æ3ž]ÔüxØG^3YõRRRt!‰Tqd ÎAˆy; ƒ€7=‰}pÀ9r¤ž“PÃp%«é@ôa†Æ+_ÊE_IKô‘â @Їý^ò·¬M÷Þ{¡ÜÃ¥mvÂÅ{W³7cÄr{ê©)’êaI¦q^Pj ÍÒFýú•Õ“øðŽò€?&qæÝUK€ ‚ë¨]ûAùÿ‚$—øTuÌÒ!æx»µ°ˆI?P¤ ³úû÷ÔÊyŒSP¾|`?y÷½žýæ,Äì£HV€Á¨“@Ó¦oaBúÈ öfBúB•]U2{Æ ^H6I¼ê ¥#¢NæIÆ£Ö)‰IKZwBÉàI^ò¼ÀhPjóG¸’ÕÌX}2ëÁXp.ŽÜIIô‘¢qŒóªó÷ßÿU’·4þvðàö‡Iû0HÛ§Ÿ‡:ûÝw·<Õ÷IHÈÙé:RÊAß¾­¤xÑÝbÿê'©/Q[â‡N•œÐOɼûJ®Q’–r¢äÉ^™«ãþ½÷Þþ¶H ^›þÂ…ë$ÅliÉ’G’ÝÌ‚Hú¤Ú¼’>aaÆïõþ¦MÉIô!¼¤˜%´BLì?D3='AðŽH'‹$NˆÇâ@GŽ{rØSÒ©ÜDl®Äû“£ß[Á¤–€q~úéPÖ?r`ö cf‡GŠvùñIóKÂ.Ì h #4L‹¿²ýOJ¢ÏƒV¦Ì!u¹iØïQ—ßyç;B$kI1’êzÈ)§Y³Ô¹¢YU«–r{ìò¨O‡F‚ùßyg3)¶r“2ēÖnwäÙ~Wæ%c׋’ÞöKÉÏ<'i¥¨‘g°øHôm`Ñ¢u’žµŒJú|ð«ÚöIœEü>Ñ/^<³¯ ÿ}•(QXböùx÷åôßä̇Ȓò–Üñø¤þlv†9À©©­BÝjPÈÆ¦¼ã xµ þq˜“Éú‡v<õ”’öføó—¬6ã²%ŸkBò§”%ú^ìäÀßÇH®à:tpðÇ؇G}¾|y•ðSóÅ;ˆÝüç’K‰>×{hŽø]­Ú±’Gú4Qu]#î“}Äv\_>a &IŒ~ê¬(±ÅêÜ8wî?9âºì$-â…u붉)¯Xpxˆ~eÕ솀YÏ}#lذ]sîs€Èúá7š;ül jÉÔÃ@‚&[R1 oPµ{@×HÚiA¨’Ù¦?ã™@ùg2ÿQ8(„ʸ‡=?½’Õ0˜(â…I€ëÁ|«0ÅpóM”öTqú‰2©XÌ㤓*HøÛ<ÍtgÒiÞvÛ¹"Ÿ´ç“…‹ÿO?ý•:Ðñâ^wÝ™ÖWAæÚ´9Cª&µPU,æ”ÕcP”b | Ì›·FI7úÊ+? ·½Uý4H‘²)b/K f3ÇØ­Å@²b€|ŽÇ5Ο¿Fy¨é¯C‡³DíûšºCÕ.QáW®È‚G¸ž7ׄð…óÊÉ8DÆŽŽUê®»î:uØ3¤¨ŒG‘ *ÞáÅñöX>¡Jf›ÊšìÃw€ã‘ìÑ* !ðã„˸—"¶úP%«Í&‚9ã:¨Ûàpl& xQÉ‘ Á‡x£²'–ÖÿBvï~¨Â/HuÕ8Ñ}ûmOçÖ[ßr‹ÃÅc¾cÒBð§}û†zÍ„&M›¶DáÃ'ˆÓà2uZ:å”*ÊÀÔªU6Ç2>©n¬ýc1àêûc=$éÿõ×jyÞËë:Q±âÑ’¶”æõ0‡AôY„ÉÑo€(ÚükŒÙŸ [’×ôèÑCËôzµÄö“˧;Rìlæ§:Û™?xêó1%³6 ¬GTÄãÈ!êÕO9[Êø’ØÎ„¦"UûÖ½¥¤Iòƒ½?\Éj C1füdßzb“ìJ/º¨ž¨‰æI¬ûEZ ñ þ6y´Óºd¼q?ü°³ÚÉ™9ò§^½Ji’#÷FØ´imýp¼ÈF@hàˆÄF¶UB«hÆÀ“O®¬Ì@,ª‰åH„ÙI'ôË”)®×„äN- =„[íÚå5W†IЃ‡¾Ñ ˆþ¡d[øÙ˜d=I…¤c¤vï. ¦y ¾wŸÿ7|¨’Ù8ãaN@«0}út-ìµñûÇḌ{äÓ¹™àƒ¤%úpÝC‡¶ÞsŒ¹>,dÜAÕ/yñÅw¢¤0XSJÆG´Gú1´Dß¡ü'>ÿœsúK8G#'%%PO9T?[óæu$oµóÿúëbaÚîç?&™þ£ñkæÏ_«&?þXê¼úêOºÖ¯_)Èà€¶Ä‚Å@"c`ëÖ]AÍQ/Ç_N§KZl$ù%K6HhY[ {Ù4iúÀà @ཪüÜ\[Ã/Túâƒ\Eô!B]º4ÓÒ¶¯¼rcT­TéhM#U¸œ-P?Ý ÒmTƒ$Ig´~ß’šüþû2ñ Xê¼ùæ$‰xGÕ ˜þU¤ìhžH4ØËH lÙ²[|XJê•üý7ö|Côói®Ê_£Å8°µ”ªý@ ½1¢%¾—h±—ÄÈUDŸûHHÞ›oþ¬…mPÛEpÿ^ã|ú韒 âEI:q±zûG3F²ö-V¬ Ó¤Éñú1׈~0o¿=Y)ëÖ­(LQU4ZÀ¤75ÇØ­Å@Vb€t»†pÏ›·ZÖ‡sõô¼ë«VmÖðé¯o¹å qæÍŸÊYÇ>“¹/xýa1`ȵDµóÕWŸæôïÿ¥¦­ÍÌ}¹ð“TÝûíoª‡ïóÏ_×*}™™k¢ûÕW_peªiæÍ[LBxÊI¼tY‘Êʉ3Õ2IÓ9%Uû'þ1b„f]‹ÿ™²î &ìnêÔÅêhjÎŒŸð<œø @ô û½ì²úò<®• pÓ4á—ÙOŒ>Yù,X $2¢7h'òÕD9·ž=[j!šéÓ—GyäáÝ©‚÷é§w©ŠÿüóŸ–Ü÷<Ô‡÷´-iaà矖´ÈO«íû'Ÿ¶I¦¯ybCýQÊ`¾/ÎT“Sí7ýì6€¯xàd)¿ýö[Z·.Gî£'ûܹ«SÙïÉæ‰w>ÂåË7ªVŠÿýû_-ÌçgذÌnM̳`Áb ‘1«‰>¹é{÷¾T¼ðÇÄÄÁ›ŒÄˆ7Ș£G« C"?vn¹ü«ÞôxîשsH½¿}ûnÕÖG_)òòS˜ €àS«cöì•ÎàÁ3»víM·Ÿ›ñj¯=q1«‰>·[2f£FMŽÙ]:ýôªR¥ï>‘J·kL¿­f3ÔÚ,bŠï8¨½fÍC…u¨IQºô¡òÜË—oÒj|h€µk·J¸ÞQÎûïßá|òÉš±? ‰Ž\Oô¹A\­•ö(¦+ ný¥—:H’šó%ßÿKR¶÷0Vç°ãX X dhçˆ !ù–©ÆÉˆ7nzòó)¿fÍ€”ÏrôãéO¯>ê"çfi/öY°Hd X¢/w¿uëÓÕS<Ö7 Mû°ñ_uÕ‹ÎÊ•›c} ;^Œ10sæL)2´:f£nذAËx~ýõ×b÷Ýv\öQÌÀúõë1cÆHÚçç/¾øÂÙ¹3r¦”b%±¼3§dÛ’LgáÂõ&zHµÏ5®_¿#UâŠPycò±ïW¨Èäá1âzÕÜ{ï‡É†"{=I†Kôÿ»¡={¶p~þyóË/ c~‹Ë—?J¥-N” g5;]ÌObŒp$üá‡Øhfðx¿âŠ+œþùG=?•(º"%® 9WúÜtÓMºšâgœq†Ö§lè°aÃ$ѩάY³BKã+¯¼"Ú¥—tÿ”)Sœ+V„íkw0/_^ Í[+áz‡¼ô±ó£õóf‹¤Ö„WÒ‡y¯X1@ô‰Ð?K-Z´NJr¿i}yì–°°Dÿ¿[C¨ ¹pêûöŒË »õÖs±cïrÞygŠÔ³®6ÿ¸œ(ɽûî»%]êÍZg»iÓ¦êí_©R%笳Μ®ÊG¥HÊsФçzõꉺv£äN¿G¤³ úŸJ^À /¼ ªÝJÎùçŸï\xá…©ˆê«¯¾êtìHÒ¥zRnµªÔ^ø\øÞ~ûíR’µŒ„}^­5ÄÙÑ¢E ­6þ|ÉØv‘ö}ÿý÷¥¤s+硇R Q^*5ÃPó¡§±o¼Ñ4h}®çË/¿tÚµk'Ž¢=5•+ŒDóæÍE-+ ¢sþúë/)#ý€óÈ#hß%K–ˆ÷ùfe6.¸à-?Ú¬Y3 C[Å)´f9x¤ö88ܲe‹¶ç¶/üyæÍ[›Êsÿ¯¿þÑ"<ƉœÔû‡lþ+VlR“€Á×–-»ÔñïƒîP?Òtã`Áb Ñ0`‰¾çŽ4kv‚&è<ø;OklôÅÝ´6=™üHGk!: @¸þøãU}#¿ýöÛ’ é+IŒ’ßùì³Ï$¯mcÔï¿ÿ^bû”¬¹’Aqœ3gÎ%äƒV¢Ø§OíÛµkWç›o¾ pŽ]³fƒJþÃ?TÆâÁ¤Y‰.e?a`2hذ¡¤c.¢ŸÓO¤îÞ½»0’÷ª”Þ»wo%ÒHð'N:ˆ|¡–Gê‡H{¡I“&â->ÛÙ±c‡^g—.]T##AMq¡ë¯¿ÞÈÃX@ôaj`N¦Nª¥J_~ùeÆd×®]jN€!¹ð½! 71ɡʔ)ž*¢‡¸|¯¤ï'ú›7ï’{PX“óàËsöÙ5„‘|Zž‘å¹­öš–èûnN¿~WJzÞI¢¦[ïÛ»¿HÝ»7br‡Øz'Inú—µ¸GìÎü#µmÛV²£Õ—T½§ˆ?FkçÄOTu8ĉ{Ñ¢E*Õ"#SªsåÊ•J€kÕª%6ØJ0Ï>ûlçÜsÏU|5CRúñǯc@l—/,âݺu“êlåN:‰> ’3Ú¤oà²Ë.S†ƒùþøãª5€à‡š _Ð0²={RKŠ˜``€š5k:—_~¹«œ‹/¾XòM|§ÌFáÂ…ƒ}èCrÿý÷kæ÷ñÇÓ¬ãÓÎ5#éçVS@ùÅWbo*©Ý}E”|‘¤§dI˜¹¦Iðµ)³O#)yéc W¯‹œ'ž¸R˜°‘ÎÈ‘?šf»µÈv X¢ï»pøÄÚ“_;Þ@qqãz8çœSSTµÏ:¯½61•tïóçäñ«U«¦ÓÏ“'xPêR ( ™Ó.Qu<p}ˆñ¤I“TÚEB¦:„Õ¾Žó´}ûö©dÏÓNÚ†PpðàAÍ`‡iµ¹S“]vÙ Î!ßçZé+Ä-‰¨‰ûÆ€ oڴɹöÚkõ?öqTýèöíÛ«äÔŒ‰yãÆ#ùr€“ªtýpÆ£&'<$xæ°Û8ï-\¸P™‡K/½TÛzõê¥DÌ^õO<ñ„ÚëýóásÞ )­LKJJŠúp~Túj~ü0à€X¥Jçä“OUòÈ ¹~wÝu—þçG³fOɳµ*U[¨?R¾×}öÙ¯ÝO|Øe}SA¨n¶Íb ^o%ý4x¬.]šŠ u›VÓJ£[Ìw×T@™ÞN^SÿB‚,D†ÓàÁOÌ;Ò²ÔêHú~Û=6o›9†í1Ç“J @cyýhK èëµÃÓ7Ü|¼ãp šìî~(X°`ªëc?Ž|˜ü€–è ©1°zõVuä3­¿ÿ¾T´*)ªù@û! ¸à-_*Õ=‰zü’>6}üÒ¤þ»ïn!f¡îê+ШÑZô+½ãì~‹XaÀý40‰—=erûôùÌÙ°aG=㳫U«S$´ë‡Ê]÷—<ß6¼/LC$±Å£FσY0УG}7ÿÍ–ºP„Õì÷–?“3 ÞçJæñ1Ýá‘co`Ú´Ñ?x0PˆgæÌ•©ìùô£8N¸Dz?Ž=‡9ò™ý¡¶ø¼òÊR¬§½¬1_™ cj±Û€ÉÉâ!€c. õ,EÛf‰~:;ñÄ N‡g9½zÅß›?ÔT¨øøã­Ä‰ë‰'ÿEBÀ^'®Buµmÿa{÷±Ç5>ª½5R3?ox{VýgŽ~­AV;™Î³`ÁZ%ÞØõ‰³_¶l£h|ò©mžÒºØõñä÷ÚóEçêpœ·8Ç™”¼Ñâ§aÃêâr²†M2¶ýXøŸßÿ]ã}¶Âõ·D?f<í=z4×aôèß<­Yû“ä!xø·m{†Ó¦Í0ɼö‰x„ïËÚIسY $.\'Ž¥ÅäSAéUªý Rô ‘ôóæ=BTðHú‡œø–,Ù jüŽ©¶Ggbö‘Ü-X ä X¢Á]Â7tèu"q–eÞüá¦Õ®]CUùZÔ¨Q ÃÊ>F$Ü3ÓN²2ØYµ^b©7o»í6É"yZfnm‹Ä^£FÁŸ;wµýebϯªó HúyÔî~òÉ•ƒsÇžw¿(¾C•> 9–èGx—°áÝzkqÂy?Â#â×tŸO=ÕZ’ùtÒ\-[>çüöÛ’ø0 G&ž_½eÿ'†ÊS¼÷³ðIˆÿ©ýrÎßÿ#©Š c“¢'&,sãÆâÀYP9%ÝýT‰zè¼|¹•ôiö+G`Àý(nÞü8ì¼ùæÏQ¿®Ø?ÿ¼›$l9OüŒrºt¥ªÆøÑŽl1<X²d½Jú˜ÎfÏþGr.lÐJy¹¬êV@IDAT\!’>•ôN;- ù›«ž5ke°i[¹r“äIÈÙê}òQP×!@r*j9˜+É™‘“€Ø8öRÖš¤X¤÷޽¬µ%ú‘ÞIé‡cÞ¶Ï<óµÚø£84®]¯¸âdUùã\„ÔÿØccÕ1)®'µƒ[ ä` `Û¼y§†ÙÁÒ"V{"ƒ$€¦á¼óÎÓ¨æNjl¤kÒF©bÊB/^¼XÇ HõÈÎ;ëñ”‰&û$59j×®­U8Ùê\Ôª€À“ƒL›\ Y:ß{ï=˜Ó0]æòí·ßJ¸vÉ™òŽ3jÔ(­£±wï^ÍŽé/­í=¦‡ —¤ÄƆó„Ú€$Ö3qö•µ¶D_oCt_äæ?öØb"ñ'^9RòˆSÝ O<Ï<ó ­äG,±‹‹–.Ý(¬T’‡'Oå½mÛv§rÚÞÒI‡rðs0žû¬0Ýñˆç AƒT꤀óÊ+¯ÔôÊ”u¦ÆjtúŽ;V¢ê:wÞy§æt€p™¼䟠èm0’q28õPe›©ñ@ziîäÉ“5eµÑ @`©6 xSk‚’×|úöí«B 1‡àxjR¦úï¿ÿÖTÑ030œùÓÇ_¢ 3ÃXÔ¯€‘!oå¶ýõW-RE® É ö\0”ØÆœA_3—“N:Iˆ ‘ƒðƨü©ÑÁý¥µ¹s<šî³~ûí7g„ šœ4Ú@v—µ><Í—÷Jíï°4èZá>Ÿvš4©%uÔ«‡í—];RRJÉbp½<Ø«äåúJ¥~B¯½öŒ\›g=»î…=oâa€Øzc‡'h01@9?„f…± ˆ02Å‹Òcà7}M",oYhoa,UabL»i u.´0=æ\Ì|x”Õß}÷·I™‚Šš/.•ÖF+`æÏ`h9¸À?WmÌ¢/Kô3èsÏ=^ê¶×•Ї™%ke±"«ùÆ›)Ú‰¾ªö§´¨‹Ü†<ó!ô©wÏ8£š¨tO‰s¦¶mÚ´Cˆ~êxü?þ¤èÕÿ}-X°N$ÑÔDû?+_qŪFÇÍolâmÚ´ÑŠØýQ›c_FõA„Aý®l3å¤ÌŒ  "Gµîÿ­ ž/|PycÛ§üt×®]µ:%ªvlߨîfí BfËB‡: ã¢Y 4ö°aÃ)ª¥35e©‘Îñ0Ñ RlKµ)„¬šôÛ¡Jk›ãÍe·hÑB¯‰óÁ€fíKvƒ%ú™¼=t©ØºÖ嘼ø TIÿVñŸ8q¾,v}ÅKõ±îÌ$&ìá9¨óK—.¦ž2…øüªBêŠ*{¶jÁ¶nÝ#6ê²Á B_¼x!!š‡böÙ‰–À›‡?x@þ0&ROS^™Ú wT圢¬2¶kTù¨Æ) úµ9Ò¶3Ò¯¿l3}ð^ç˜gžyFœ†»éa>ø 3f̘Ã~kƒç ɯvæƒjÉŸyÑŽ?> #FŒÐ"Vø Ê¤,4§0óöœNÛ õ?¾ à•ûÿÙ;ð(ª¯_¥WAPA¤)EP@A¥ØÀ† l * bÅ‚Á.6,Ÿ½bÅ®Ø@lH“¢ˆ ‚JoÎw~'ÞÍìd7ÙM² ç>OØÙ;wîÜy'äÜÓÞCPÏ…Ëaذaº¡!Po=öÐ1X˜>|¸Þ"Qiíðõ~Ä[°Ñ¢7HÇ¢µ'Zt\Z¿‹iÄZ˜3ç€ò›Â‰_À™ŠþrI7 ÄR4o~ypñÅÏ’ºTô‹°;EŒ@›6CüzWŽ%=OJoZ¶¼2;všü¸,7îÇØªÆŒ™œuÖ±ïþ`§.•²Ëñ¥šý¹T?%à+|ªÃs'Úe Apqc(«,>é¸>JE‹æH ”;—¬l³¶¬S, K7Ç&Hñ€{‹I?Çèè:PвЩÞK¬qe·)]-Ú~ „¸uŠû aiíèõþ"Êj‡KsûþT?%°0Í\ªÃóg¥uÓ±ƒ"ïºëŽ’”Ž‘nÕª’Ň÷ø-·ôv&\)A55$æ> úyÈ}öYVJN:ð±9 LBâÒïÐôIÝ#e4¼råÊHàZ÷ôÓ•‰¯|ùìÀ>\ž—ß?˼yKÄ·^UÆVð]Åú‰vNÀ\´">êh >eï—N´èDe›‡OÛ›¸]—j÷FÓ¶è:9_вЩދ@¼pŒj‡/?Úˆ‰ˆ–ÖŽ^ï¯aœ÷áû¾âü4ó~šÐ§ n§NMÄ„“œÀ!M·*”iL¼à‚%Âw¨˜w“hÙWåynШ3ý ä6i1!@d~íÚÕÔ¬ }u˜€ç„:H4ù-¨CÅ=ߦL™/B?>ˆoúôEq)}~lq}¾üòË_³ÒKeW]u•šÑýØde›1ᓎ6a„3ôñœlpŠ£wií‚>³ ý‚"ºmŸ?DÇ—ÔV¾|ñií)Ñ«»{ï=IòsÿPá/¦MýcXRŸËÖmxˆÐßn»¬Hñ/¾˜+þëÆþ”ßì ébägc,÷žj–?ý´XÏÅÊÁôé¿j…¾p_q“þ–߆[©R¥ØeD¾'²lµÕVš’X€üæäɤæ(È\ù½6‘Ÿßk3a¼ ý4¾4ƒGéënºi¬ ÿ4N],SQ]lĈã„`b¨üaÜÑ]qÅ‹4\6j^s±,Ênj4ýí·¯¡³D5ý©Sȹšjþ¯P!‹pgêÔŸE¸o喝nÓ¦ý,éfñd=áóvì4;À³æ…ñ€[€¹víÚÉßÊézŠ´BLál^°£%båÓ‘ ó!ÀÚ\k¹#ÿ[œûX;›ø÷o¼ñ¡y|L"D‹Çü”Â2ó5¤ZµŠ®oß½Åtx©lŽWzÒîÝo‹Àý¹;YR€JVC¾Þ—:àÕ zÞ?ÿ¬☿DƒÏÖ1ítЮb:^/ç–é³cÚ÷%wÃ`ÀxÙºµ ý0&ClóØc ‘Ñnòw£¯RîFÇ œ1Ñ“£÷ÝwË»øG xyäý~ã7j„}"V¾è\|oÞ¼¹’ü4ÂHzüF"ÑØÍ½Ï„~!üà?ðÀ]¥úÝã1âˆB¸M±L‰_“À¿©S¯•Ô›N’‡:MþsºÏ§„÷¦V'+–…ÙM €^·zõŠB¶3O„vý¸”©‰g Íl3 è*/²_èŒ&ÌÒ<þðô‹/W7@˜‡?|~s=¾öÚk5ÍûȆë wôÑG+ó ¹ôäëÃ^GJ¬|Pï&jPûÜzRáê'ßçÚ'ºfsí3¡_Hoþª« x½˜œÞ)¤;ï´øþ‰t5êtÙa‘üàîæ›ß”?¢W¹K/}^£ÿ‰’¶fd’bç°^aÚÔá÷­Zmë>ûl†cù]ÆÍËAµiŸê|Ö‸F= ùÀ_Ÿ,¨Ð“Ô!/9fÊiö•“ ÙM2V¾ø»f#»€{zè¡jI`Óa-úñx¤íi@?|ªZ|!,Y ZIÛ¢ i""ÿO;mÑú/]ûEBFQ[vùcåâPÙ¥¿ H éÖ6­!o0ëC´ƒ¦ú_½@ÒȶV+ÀÚµÄE·¯T]{U4×Zn«­²ƒÝ¸!%vMèç„~òäÉê‡Èò›Ë/¿\)v£#ÑîihîlÐð1÷cæ§âD>ô§ÊÊ» Ôà„?˜ ­Å#“ßoßÒ€ÂðÑGOsÿûßCB]IÙÇmÒ0kú¦€ïXaµ²e·žëf²ù©+):¯ÖmlÞÍ*–Qt%?mùòÕò{_K7£áÜûñãgI¦JSÕ<)›}æ™ÝÄu5T¸ë[ä˜þN蘣sï€]®GúCU>‚ó(Ú5³S€BÚ`Lý]»vvô·hë0êÁÊ;®bë[˜É6?æƒÞ— |d!XKŒ€!“—´õ¢ r˜´<*Ÿƒ$=¦|Úæ.èD}üh¾ÎsAç³ë ¢Da²iBð¿¯ô­â4x„~¿~]D¸lÐt½J•ʉƸuÂL¬d¶XKŽ‚ˆ¨÷ôµ~¤/fCd>&}_¹Žr¸ðÁUÀ§Q{ž ¹ù@€CC‹·þýûk5ÁpŸ'FÀÌû‰qIk/yï;7•?(£,Ð-­ÈÚd†@þ@‹Ÿ;÷8†½õë7j=üùDî“~‹ÿçŸÿASÖ=ÿü—±ÁÄW¥J·Í6YÜý±vdZ7µ¼À÷R3À |ßÇg^¬|ÉîžÃ޳0¡_D¿ ×_”ò€éΚ!`ŽQ@'œ†‡æÞ¼y¥ÔÅŸOŽ>~{4ý#Žší×c%´ ö‹–Ø-¾§±;ùCÀ„~þðÚäÑ[n¹…öI7zô„MžÇ.4 ‚!€?wî’¸ >jMì½wVlÀš5ëÕ¼OÎþ^{5Qž^½vWjjîŒ?? P°ÕØÕ†@Ñ"`B¿ñ&Mhôè~îÖ[ß¶‚6ÿáN¤n4ÈgS_ „ãÆ‹»’Ž3fÄõåõeîܹZo›ùÑÄIDׂå„÷{üñÇë\lÜ(ÑJJeY™‡æØÒÀV6,`®ü°(¬÷>•ô|CèC›íÛªUëdã¶J~¯›û®ØçäÉóCÜõ׿®•÷:uj;g†@I@ 3¥LI@.Mk¼ùæÞÂUFL¨Ï¦iÆôO)y°¡ªU«Æ2ü0ߎ;V5{ŽùÙ!ÆÎr„fpæ U¨PÁ_û ×ñ^·n Núþp_ì¢ÐfÒE‹I!”ìªh°2ÌÓ˜•kÖ¬©kB(ýý÷ßúƒÀÂJAÛe—]ÔZÁæ€66¾1gasmQ^ñD÷AÈýöÛo±œd9>æô8!0iÌ0÷kE£FO4– B7Ü0µ³¡Z°`¢øsX °DÐx·4ÞuxóíO´¬~s° ×i§Æ¦†wà[*÷÷cÓñI߆ åw*‹V­ÆŒßâ¢ñq¹áèØ1ë=ûûõOéÝž=[˦èÙÔŽ–ß·¿ýiû4J&ô‹ù5LÄŸ~Z,~Ð7Šy5›v{ø­¡Çä‡c4Þc=ÖaÆE3ÅtÀ,ŽÀ@È`Ò6LÙŒE°! Ù@Ð|äøÆq `Ù$ÑöØcÕÒñ¿#ÔY Ëld¸ ˆ‡ÀµÐ¹sç„cîàè± à×§Ìi"Žsb6òÓ­w®Þ!t©˜õ±BÐÀÏ7â9x¿¸Qø}`³xÀøÓ…þIÀÞvÛUM~µÞ‹ªzDâ‡}ôÓ§ÃW5{&ùùÔ•¨Zµ‚à8p?±d=¨î€B_¸ÝÀH&ôÓdA¦©X±œ¦ò½õÖ7ÀôiA¦*Òk½Éa‹‰šq„;¦xXµ°ðÇS>Á]l0ÿc¾å¿o~´nèÐT”\C#*k ôôe:¯¸â -°Áùð1AƒÄ p-Úú©§žªq6üáôár ¤'kÄwŽ)žµ²a FõŒ9R­¬‰¯‰s¿dÍ?÷áþPŠ„˜ì>¸+ðw¸F #ףᓀ‹ú1óó 3Ö|âh҉Ƃÿ“O>©‚žcæßk¯½´òX˜ãœXˆƒ>8fm?—–h_nk!È“ùxWlØÀ€÷ûeéÒ¥:×B0(Ïdž„x‘hKtÿè˜Mùþí· ÅêSC~ÿ²hÇÏNÕóóýøão®Q£Úþkì3œÖGg¿~ûªðïßߘ6c ÙAæ# Z†µ Aà—_–íÛ_åg‘¬H´í@ü»i¹—hñÅÍ%ùåüQë_s A[h¬‰Ø9Ñì‰Dû DCŒõ‹pÄ÷ˆ… í8ÖŸÛ¤¬pˆ¦7Œ~±¢‰Æõ³©C×WÐ/b…$2nšD÷-8“{Ü8¾ˆ¹<@ÇýbÏÑŸl,37˜Gs‡qŽžOå{¢µ€­hüq—óÜÑÆ8 | Ä¢=•òwÙ`b)Hy<%U68÷Ü'ƒaÃ^ÖëößÿÖ@ØøâæhÓæªàÒKÇÄõñ¥wïûäwñû¸þÿ DÛn¹å­¸~ûbd(Y _íËêÕ«!ZíYîQs#,`%¡¡W©RE±ÂëE+¶°ß7zŽïÔ׿'ÚÐVSmhËX ¢~4ýhCÃ÷qÑs›ú ;ÚÝÿ9AqÑæ}ùÑþp@¡?—l,çÍM?™‚¶DkÁ2×H„-cˆÁ(êöÿº>}Ú‹eågM—]°àϸ¹øü1ýï¸ã¶qKƒ›Ê”y¢ÙŸןŴÙWÜN÷IPæ$÷å—CãÎÛC Ó0¡ŸaoŸá˜1gIJÖ½šܣǮ¶ÂœËÁ/Hä™ÝCιV£×fñh#ûLh¤¯£€¯@<‚ûR1C7@š[80žgs[‚{þü%*äß{ï{ÉÔ˜-î¤ã²fˆäßvÛj®Zµø@Ó,nþºZh'Š)|Ï??P61—HÊâËB²tdtˆ}72óégÌ«È^ô Ï?– X a$X¼~LÖX,2•®Ô¿¬\¨ü–-ëJ i É"Y*B–X˜â]P~8]£ó«T)7S4ˆ/îä_ˆêñÅs´®Uù¬™ˆ€ ýL|+ÿ­i÷ÝAÍ Iå["4þ †²@Kƒx†HwŸï'ëÚµ«¦’[‘ä:¤Æ‘M@ja&²ÑùµoŽŸøó[´Ø^ãejÕª"›e¡_/ÅìÙèF—MåÊÙBŸª{¤úá È«mµU%É*è öíßÿqeöËë;o%&ô‹íM¸W½z5…æöûìîÂÙGˆ|Fº#Þ‰£7öcìÓ(JLè%Ú¼Á}ø ¯¹æU:_p6»Üúääû6iÒOâï¯+©z¥áj æãÜ?ÿ¬‘C‹”ª×Íïg÷î-¤zá%º©8æ˜û$–à¯üNaã ´!`yúiƒ²h&"ïå—Ï‚‘û”D*Pk…¤>”åE¸c¾÷EwüÑøáï‡tÆQ–RÄl|ÉÞ¨u€ú¤rÚ&©}¾‘Ê€µô"€Ð÷¦ý‰çH¨Fb•™/Ö™@‚÷¶pãÆeùó¹+‚¾zõ,MŸ¾vŒãæß”•m³M5õó?ðÀGRkàV)3} P)ï«÷Þ”ùìC`S0MS‘+ÆëøãõÊ+牟‚ð˜¿b&Ã"|0F¾¿=,w^àû¾°¯ß÷y6º°yÙŸ³ÏÂA`îÜÅòÞ¶ÑÉ?ÿ|Ž˜ñ› ¡›±EÚ÷ñÇ3¤.ÄÎêϯT©|ÌôÞ ¤cegžÙMârIqªï¥NÁô¹6ÓÚ†@ʘ¦Ÿ2T™5\ã±c/­ñQ7`À’/~¢h™ö:‹ã-ùÚðÅqo»gjPŲY³::˜ ºn8ÊÍ™ó‡–ÊÝvÛêbÁY*E£(i&~߯›!©w]ý×|}Ž1B‹L%»¨rå–RÍïn·víüdC¬ßÈ7dQä+Y3M?2% Ÿ?NÏ>{¦Ô?ßò?s¿™…‹ãµAœ)TÁÅñü%ម÷wÚi[ Ò›5ë7ÉÏßAýô˜ú?ùd†0ó5WSûòåkb¼lÎlÒ$ùÐÜž}êÔ©JÒ$…WÔý\¹ò{I—ð\t¬}OŒ¡á ôàýÜš ýÜÐ)ç¨~ß}'©ßñCît‹e—¬-Ë·%E‚À‚K5﫯æ«Àçÿ ùÐ뒟Ч­X±F\4Yš~–É?«¿Hi71гÈEq‹+®8T*ªmí9ä÷À§{XÞ̨wþé§ŸÆü—E±N»‡!Nî¼óΔ¦[´è/aT¬!DW_K_Öÿ jI€Þ–îƒ~TØCtž,M?KèãÏ?æ˜v)Íoƒ ’‚€ ý’ò¦RXçI'uRÁÆ#Å—xðÁwÎõ*„>æ1k†@iF€Ô<‚ó`ȃ]¯oß½cÛºu!Ι£A}tX‡ÛŒ¼~LÿìX3J&ôKÓÛ”gFtìØó5À¾ð›nê-t°eJÙSÚã©#€Ë‹}6¸”Ƚ÷Þ“bñ_¾|öŸA4}Ìûpçã˯Q#3Ê:ǜσo¾ùÆm³Í69êFäsN Š0+%Õ5ñ!‡Kdoʼy]óÅ_§ÂRFvLëÖ­•Þ:¯ë’'%2­hƒ2»S§NÑîBû^\%·Í§_h¯´ø&ÆlùƪÖrøáw™Ÿ¿ø^…Ý9X¼øW«VUIÏûMÈ”ª»š5³9QûXö4oÞ/-þ| @}øá‡iy 0RÞ}÷ÝRp¼º!¨êÖ­[¡X yä‰UºO×=xð`÷ðÃë}ï¹çú|Ï­µoßÞmܸ1áÕ«WKðæ'úsöÙgË&ð^=&ð²(Zq—Ü6¡_o¹î)óÁOqG±»ëÑãvÑ\æÃ*ì–†@ñ#°dÉ ú˜ö½?ŸUA·ûÍ7¿H_3É›ÿNšÈWA4Á"ÐZúâ äÎ8ã ±*4qÝ»w×*õë×W“M|°–tf!&LÐÂLþù§ëÝ»·jð={öT-ºçÓN;MÙ"ûõë'釻ǭAÓ¿‡KoÏ=÷t³fÍÒóíÚµÓÂO0KR,ÊCtÐAnöìÙnæÌ™º?Y¯^½”ŽúÆot=ö˜ ËþùGÿÖÊ’uêÔq‡z¨œš6mšüý9ÂxàŽþ«¯¾Z§a­TÁké˜ÆóCfÕ¥Ký:t¨(/oè9ªV²éxî¹çt<¢Ô!Ë:äC”,Àlà@ªNÖu øyn¬ÐiÃÄ}oºé&ýiÚ´©bÉw6~ <÷x÷Ýwõþ¬ƒÍÔÛ܇[`Æ54ÖÁ«Ê 'œ î¡ ×– %·Mèë++½ÿ@‚9?ÿ]w½W(»òÒ‹ž=Yi@`ñâåòǸšúó;tØ)öHpê“›ÔQíÜK/}¥ýhú0ô‘®×¶mÃØØÂ:X¸p¡›2eŠÒ<#<Ÿ|òI!ïyK ˹×^{Mk>¼ôÒKz{>©àÀÌ ËcíÚµ…¡óe½Mõý÷ß×>Ïé×G`Mœ8Qˆ‰ö‘¿wé)sÍš5¦{&ÔÒ´Ž;j "Ù$ø†©5>úè£*\{ô衦v4o„9V®9ÿüóÅÒ¸BŸ!L?š;Õ'Yã—_~),ˆãÜñǯ´ÕÌσþÛn»M7B'Ÿ|²°àoûdã‚p1c†Žmܸ±SúúÁtÇW—ÃO<á^ýu-ýÕW_ âéBa~MlžD~ ×^{­ mÞ M ïjíÚµZF¡Ïûà‹-ž”ÿSWxòŒ¯¼òJµeBÉmú‰Þ|)ë#5éí·É.w¦äóßïÐ|¬› ”¶ÝvÛjJÄÓ¦MýØcC¼C Ìî"Âf^ÌÌÿë¯iá2eŠæÏãqÇçvÛm7G‘¦>}ú¨ðèСƒƒªÁEãmœªl ÿA¸"ÌÞ{ï=wâ‰'º–-[ª†{ÈÐ…pÝŠ9èÇRà…>Â!Іì5tÆ#0vìXÕÀÙd`• ±´yêS „±JШGu€u¡‘¿ýöÛzîÕªU+7dȵ: µÃP‰;Ó<¸/|éj,ôýÕªUSm}¿ýöS=‚K?s±™Ac‡ûé§Ÿ–ÌWõ|hš‡~ ¾`VŽÒÁ¦ƒ IçΖ‚ŸþY7]”ÊÇÑ£Gë3`=ˆ®­bÅŠúLÅYr»h~«!g}EŠ@:[I‘ž³åµ‰…¹U~I­Do‘¾»Y±!@råÊŠFö—¡¬I,&«”îÎŽ2¸ÜZ4æ)š§?{öbæ-|Ó¾ÄÓ:·õÖYUý94n|ÐU>Ѻ¢‚ê(ð„æà"š†`IÔ<%t´ôs¸ßk¶‰®§×Á³Ï>«Zî¨Q£Ü3Ï<£C¹?’hÄÕ«W—Új¿Ÿ›/þ¾ ,Pk„0…ûꕹ1Éùñ˜ÒùÁ5p饗:´r¨­Ù,D7§¿þúKÜ8©Õ)I´HÈüaªí²eËêÚçÏŸ¯ÏÍy6õ¼ÖÆXÏÂÅ7°š¿÷IW¦• }ôfðÉ.ö‚ _Üiâ{]´„§Õ¯¹<º=âfŒõ–-[)ô1N ´ùeËV‰àØ^‘9þøbª¯|3f,*R¡ŸÛ«áÿìÑGíÎ=÷\Õòù~É%—¨é;š2¦sÌì>"­?QC §¡ñbfö~|ßø­¤´Ï>ûÌ]މžãD çPhñhøW\q…Æ'xMÿ‡~PíšÍó`© ^k÷díX°*D[¸,µ?‡&•ਣŽRùwÞQMžM®‡°`äz|òŒgc0wîܸó~ÎdŸîéÓ§ëi\Éï7ÏD;å”SË¼ÖæçÃÊ>¸dØØ1O"·†_ÐOúE°^¿Ç µÔ'éJûî;\‹”Àǰ%)!€¦ÿÛo»°iWn/ߨ¤GC˯U«šFùûsÅñ‰ ᇆ¦ŠvŒÿ›†¦O`.|éª0‡?™ºaÆŠ7?Ap˜Ûñ™cÒ§¡U^tÑE*°ŠTФ@èù;ì0í‹þƒF‹uâóÏ?×5` ‘ =üø4Ìðlè'Ó8áÍ&>61¾ùµˆÈ³yw.îÕ¢E µ<ôÐCz ž»yóæbÍ|^­”µæÀŒÍóá“ÇÿŽÕ$Üü=}ŸÿÞ·o_µ¢°N®MÖñÅ;Ö„»cÉ’%ê¦Émml ¼õ€ëq¡`µÁêC &ÁÑæ×íÏ÷wÙYÛŒ`¦ sç‚ÓN{4óçfŒ„=ziEà°Ãî ¤uðâ‹“cxöÙOO?ýyì;<òIаá%Á AÏÆõoê—“N:) »M½Ø{ï½Ñ^ñÙ瘖{._¾ý-²öXJV)Ýf9Võá‡mm!©q_K`Õêç‹£ƒHx¯±æçþäï‡AiäþG[tœ?O®;þvüõø³/»ì2%®!p/Y ³èŒF€_"6Ùõ©ô³ *H#¸Îsdž’|­ ý’üö iíä-üñe’ãÚFØ¥+À³ŽzäÖ ’ˆÀºu´œ®_;¦}_J×÷ñ +Á­‡¶›h·„OmVÇD¬ßpà mÙ ì{úà€„—hmÚ´Ñ`<´o®Mϳè‘Ï«®"Ñþ䬳HÆj™kÉ­'o?܈ø‡ñV=rØ„06ÃÙøar‡£€MH¢F~=L}›K3¡¿¹¼é|>'¬dTí›8qˆ+9ôÐ;%mè)õæs*n+ë×otei¾Ošô“ðUdGîûÅ?K ìœwÞµ=QÉzü¹ÍéwñÑ4º®]»ªi~HvÆŒ£B™4=²¬žE:­ºÚI“&©¿ýHÊjÆDõ_wÝuåÏ>>цŸ|ܸqšßNša2†?²¥1:k'nB¸`Ý+ÍÍ„~i~»ix64üý_|q•üÇ®#»ëÿ“]õãâ÷ü- ³Û†@á#°aÿÂb—åϧ¿ÇÕ«ÇØ|ýõ!T©,dv[Éïy[Ñj“çfþª‹ïhÄIžc°æy†<´lRäÈ»GÛFƒOÄ¢GÊ®+,žR˜Ô½0«ùü§žzªÒ “žÈuäúÃ?m¤ø±`<æzÆ’føûþûïÅ:9OI‚HßC›÷÷ŽÎGý¬¬´CÖ†¥£´6ú¥õͦù¹ªT© šþ~²c*;→ÿú€Rú¾÷Þ÷ù ðIó²l:C O6lØ â#??µÏøóÛ´ÙAüø~ÑE‰&ûåféÖ‚æ÷Ûo¿+£ &hÊpÿÓ¾zÏ´§'BÿøG@¡HÄ4Çp"í%•Nóçɧ'·šD CŸ @À"÷`“àïÁ5lZØ„$c¹K4/® ÜÜ›ìŒJk3¡_Zßl!=Õû èªÂŸ§;îxWL¥7:Éq¢Ô£{ iy6­!‡ÀüùŠ/z ‰PÏúSG‘NšÄá B¿Y³º¢íg¥›m½u!Àé¦Ì•9—òªÑ!Ü©j‡ ¦Azƒ6ŒvMcÀ9ªÙ¡á{®zLú¾‘:ÉŒ Ì‘ŒiW‚=fyÜ ÄDiñécÎç> Bh“ˆáû¤Êr)”¹ 4ÐÂG÷ß¿²ûùç(mŸeKÛÙó¤Ì\ž,¯Ë—ß^($'¸sÎ9Qüa¿ä5ÜÎùBß®gxË×…27T… åÄ\½^¾ûî×®]£¸i ã5ëw)XÓQ´Æ?cçúõë"7Iû©:·S¬¿´ õ’âGñ4z²Ш1£ãŸ§‘ú†Éö9üöx´t|ã”Æõò´˜Ö1—ã2ð¥jýyÿÉõhØøàù?~¼ã½SD?»o¸`¿ƒKŸ`>X÷ðÁñs.˜ñ˜Ï³Ü±Q p6œ 7²`ÄïÏ¥½™Ð/íoxŸhÝ;ï¼3F×¹‰ÓØe†@ f{2î÷T&FèW©R^>þ|ø÷)°n}4]ªê5®ùµ1MŸó*”au´™ç”À >‹Í¥ÁÁ_áŽùÞòÏÆe/„2>¥þ}ÆÓ‡ð¥Á«OPßœ9sT“öiƒá\yÊéFìø‰FÜS€ ÷hÈ p6¸0éûõÑÏ:É hÔ¨‘Žõ›ŠðýX .†Í¥™ysyÓöœ†ÀfˆÀÌ™¿ £Z%\%0l¶ƒ2Ú>úèG×­[ Í͇´'Üöß¿¥¬ÕÙlSø¬QïñAÓöÖ÷%cÑ#NÀ |?6•ÏDÂA›Ÿø~žD ©°Ü%º‡Ÿ³4~šÐ/oÕžÉ0„>ù0òMœ˜ÓŸÖˆ¦¿ß~-ż:ȆïºëŽ’ÜôOŧ½8ܽÙSÑŽœ|k%ú%ó½Ùª C æÌY,t»5%ÿû‰H_(þüxŸíÔ©?K4xuMÓûçŸ5 …>t½ƒ,qOZ°ª`Ž6ϵ’‰€ ý’ùÞ6‹UÃê7x:~C¢ƒ}ÃWøÖ[oÅ¢“}^Ÿ—pÿa>Â9¯k ã¢ö»wo¡]Ë—¯Vržðyü¿ÿí%þâÊ\¶ù2õy,ì³d#`B¿d¿¿R½z(8?üðô<ã•W^©©>~2E|ä¯ïKå“4¦»ï¾[£‹¡î$:¹[·niç*@xt”[û裤&üÞJPBmîsÎ9G#¥s»¦0Î…9×áj{)Œ{¦2'ÔÑ ÖÖ*Bû[ÒT=/ô‰â’ö„ïsÛmÇjjjªõ(È5‡®ß³ýEñ;@P¢Ï°ÿî†Mè‡Ñ°ã|!“Ô›”ÓìÞ½»RrLÓ©S'·xñb7lØ07bÄSjj+W·Ô›Ö<\RhàîFs¦‘öõäÝ’B9ˆo‰¸¾9×®];rü’à &u¼õòvgÏží¨†`Ï«a ÍÒ„8ßc=V£=ôP¥õóôêÕKs˜á$'ºü“O>Ñ|bXÅxvžy°&Û ç8 f0}QÈ„g¤*yÈ´Dá'žx¢{æ™g4í(ÙZúöí«øJÍvõ±¾øâ‹Â<·“FN'š3ç9ï‘õ°E~ô”)St]ÌëZÓ¦MÝÃ?¬}DM³É •œjÞS˜sœg©žs ؤp?ò²ù!õª°éwýí¶«.ïáw âkw«¿þZ%ý¸vÔ~ŠìÀÊ—¬aæ¿ùæÞ²{LXèò¦jå9‰°à(ԘȫAÚ3räébêS,$?å5ÜÎ…€ ýŒz¥o1z„*&g4j/(1C‰‰ÐÂ<ÎF“2<&àhKÆõ&Í&Z7,b4悹‹`=ŽiX ¸·wŒ9Rû8O7?p„ãGË…]ŒeC±Nx­ñá†û€û°Àÿ¿>¦küÛy5‚½ª˜ÎÙ0°9b-4Ïcžl-PžÂî7;XM° lμÖãÏW†¸[`^Ã=ÃzXk¤áwš_+Çhó©r®3¾°Ú¢EË&³†ÄÀWVÓöü½¦O_$XU Y-íJUË÷×ׯ¿µ¸hNrýûÉß¾Û> ŒG lƯÐXâðQª,î#ËùŽPÅ÷ m&Bm´k„_Ë–-Õî5AÆ3 8Êõ‰ï¡‹f‹ §áWÇ7ÏfNm|ÌDÂcrÆ,‹9Úó€}ôÑ®uëÖº,¸XžR8fÿD m ž¨õ«®ºJ]Œ£˜÷['ºŽ>.6 aŽpxÊ1­ Ù¿ÿ„káÏÏfƒ†–þÜsÏ鼉æÄºmßp?}X(}Ê;a-¸^ˆ•à}a!ˆ+.pÜÎuÿüá{§óø÷ßÿ–÷]CŠÂ̕۶J®CN>-±i?y_¢uí³O3quts}û>*Æótc‘hœõ…€˜â¬9hî@¸÷sôç·C4ë@´ü@¸¸c—Šp $µ$aëã@LäÚ'1ÑØ9I“ † Hq@JpÆúEÈ"¤±Äúò: @ æûÃXŸ˜®sôÏš5+àRm¬gÆŒϘŸ]ÈF&vs…1J¶ƈU!îZ&I4glòÀ+.²Š›A¬lââúø"YúŽrœH±C‚!ÉRHqtö°uë6 \,\¸,hÕêªà¢‹ž ž~:ûwªOŸû‚wßý.vÁ×_ÏzöûžŸƒAƒž N>ùayçÙï.?×ÛXC øÈÌûµ+]‹!Èà4´ìp š1¦ø¨ïp´/ŒH"®oæ Ç„Ç':&€`¶hc}øÞ£ Ó>Õ¿Rmøë±H°®ü4žwBXóf®0ÉÖ˜FÅ]˽Í™Ÿ51¼áßÀr⃠Ã÷ØTÎõð›rüçŸ+„~·ªd—Ì—ßÁ†òNêH¦Á¯:ÕêÕ뵿s禱©ókÞ](·ÜÒG¸ý7¸!C^ wÛ±!‘˜y?#_KéX¦a|ñätç§‘V6ñ‡ƒèÂóÀ@—HЄǤó˜XJ~@ŒÀ¾ûî›CÐ&º¾qJ„2ÞZÑ @ŠBŸÊzmÛ6’÷UO2¾Ñ›ÃÁߦM}qñ”-&Kèçϼï/.SfKIs:<Ú_ß!Õ!¸ ß=¾qÒÎH9#ž YÃ÷Múv>~ ÙXëO/^Óÿê«y’IÑH,Kõ„"KÓúó¹óß)äèç¶B˜üžþl7fÌ$©È—Q‘Û5vÎ(²ÿ²ÇÝ힆@ @`úôéRWýÍ* åÐ7‚aÕÃ5@Ðî <„C/B~Ct;YÑÈ& ÏÜ÷£Ž:Ê=ðÀJnôÞ{ï)á DD×^{­òøûØgþ€m¯FÊîË/çŠVß@9÷áΟ?ÿO â»ï¾“ã&-ˆyßO„eá…J è=òþWJ`çaþ”}ƒ€ ýŒy¶LEÆ?èißµvíÚU ¹|§î¸$üÐÒ’æµ/Œ|a¥`ã@óLy˜úÉÀýAvÙÌ3ÞÍ7ßlB_ÑÚô–/_£~v|ùÝ¡¡ñ¿ýö·Bý»ZÍýáÙúl ÚÈøè£Án=†‰ëljŸßA1µëÓ‹€™÷Ó‹§ÍV  µP"ás<™DüÇX袌PÔâÞ€¼Æç寔Gjaûöí5õ bkC`ÅŠ5Â3°6N¸ï¹çŽB\ô骶ð@IDAT°?6É1y:4}?iùòedx¹0ΑšO'd‚ôcíÓ(jLè5âv¿‡èhð˜Þà -Žšgä˜\|´åƾç=#^ôZûž?Ðôä­Zí»¡O‰ÝpÔ¾?ùÏ?éÑôý|Tö{ñÅŽr½ÿûßCjî÷çìÓ(NLè'úvïÀ^{í¥Â²ºÑ`¤j&zZ2ÆÀ0S]nì{:‰ý“6Ðò—,Y'ô[´¨+™kãúü ‰¨^=õÔL]nŸ+–“*Œ§‰kh{a(¼M28²i s»ÎÎ…‰€ ýÂD׿.sO%A(Ñèaõ£- Ð Óf~Ï”›LÐÕF›wDûí{ê¬Y³Ahw—K¼Åö±‹æÌY,L‰eÝŒñdþ¥Wè3/ï¿>¹ü§žúˆl>¥Ûš!PlX _±Ao7.I@&D>Âó½/4䟎zq¼©ž€ûÌ?‹/—tѪò>²ÿÄ}öÙLññ×—ÍÛt¡n7i–O¿à|q“†¾tïÞB‚/rgŸý„Ô.˜æî¼óøïh˜…Ž€iú…±Ý 4!°Ã;äøþù1†}ý~\:˜òü\ö™¥K—k±ðÙO?ézõÚM\13r×áÓO·y?|oŽëÕ«á^~ù\á{h%?wH±©¬ŒŽè8ûn&ÙÛ་Ím”b’1–âGÎøG[ºt•Äads*°à fK¡ £¥,ò$!Mšë:tØ1öY){é7ïÇnðßÁ–[náúõë"Õ wq·Þú‚ jbß \ ›¨ L¤¦éç ¯4òF c`ÞWÚˆÂB†½ºu·ŠMOyÝm¶©&DJÕ¥lr÷úëScçˆô¯R¥|,µ2v¢5ª-ë[¢ñRlE-öi8äõ;@0B¿ Í„~Aгk C #øçŸ5qæýñãg¹½÷n¦k=üðÝÔ¯ÎXZaûóõ&ö!!˜y?C^D¦-ƒ4µã?^ƒÓ2mm¶žÍ {î¹'_LºÞúõ„)Û\ÿé§³$_~/-{Ûm«i1žöíÿ'ô³Çæëf6Ø(a˜Ð/a/¬¨–{ÜqÇ9~¬% Ù³ÿР<©o¯KG£ŸØÝvÛmy>“/}Í@H´¨n°iR óœsΑêŒóõ¹øNѬÜ546nܨŒS¦LÉmh±œ3¡_,°ÛM C °@Ó¯S§ºÜá“&ý—žçï{Üqܘ1“ä}áçèû{æ÷óÙgŸu'œp‚cÚu×]ñ -[¶tMš4qãÇwÆ s#FŒÐiW¯^-e„Û(Ó#‚©^½zú*‘´»îºËÕ¯_ßÁÙ³gO­'¡'ä*B"ø¸¾qãÆ’Ýðºžj×®–‚†yò˜cމG]vÙeJEÍ ƒ:ÈÍž=[6P¯êº®»î:­ùòË/‹åoçÅ_tÍ›7wM›6u?ü°ö¡YŸ~úé~ Ö4kÖ,÷ä“O:è®iÔ¯èÖ­›wïÞ]‰®=ôPóØc•w\Çñ=¬Õ5J‡¨¥ÁSf'šóñÇ×Ò×<÷ÁBfTÒd-¬Ía?yòdaT¼Eµ}ªgŽ9RŠ)Mtlú÷ïï6l(›Ê=uýÔñ¬‹yÑöi÷ÝwŸbÏ;ñ1*ƒ RfOˆ¾¨âYTúúJìCÀ(-ÌŸÿ§˜ók(Ï>Ï”¥éï˜ãñöß¿¥0,.UZÞL5ïSvùµ×^¿;Å2ÑÉ]|ñÅ*4Ñ8xàÕ3BöÁheÇ~øA)¢aDß}÷ÝZ¾ùšk®Ñ±h®ï¼óNL€s-Ť0q3FønÕòÐô£½×¬YÓ±q@ˆA=MCHAGMëØ±£¤¨ë-ìLè6Â6¿!`)óç/QþªUëÜÏ?/•?ÚÎí°CÍk€(çŒ3º¨% “Íû˜É;wîìºvíªÂÅC化=gÎ hçh®X ‹¾ä’K´PÔC=¤’ëºtéâŽ8âÕ¸£€DËC{-¡Š€?í´ÓbBŸÍóÑhhÈhÞ2¬îÃ?\µöO>ùÄÁeÁ:Y3Ú.‚ÁzÒI'éµC‡ÕMCtMþ;5 ØŒà>`ĽêX%&L˜ Ãذ4hÐ@74hÏ£Gö—çø¬X±bŽÒ×gŸ}¶ZQöÞ{oÕÐS)©}Æg(6¾GµjÕt“ÀFÉ76"l xWG}´âÆ³ÓØ ±V6GEURÛ„¾3öi%ˆv6løWþøo­w0íSR7Y;ᄎº1Hv>ú}4È­·Þ:nIP:cJFà;V…>ø³Ï>S s3‚‚iß7®‹¶0et¸<´ï§/ê÷Ï–‹vß·o_5ý¿ñÆjÖæÞÊ`2ç‡TàÖ­[ëØêÕ«ëœ÷Å«üœ¾P•ÿ¾í¶Ûê!ó¡•3×{FLLû]/ì_zé¥8kGçôsóÉf‰æË[SRnX;°¤DKj‡ñ ç˜ÍÖßp;x‚_§ÃßÓ)ÌOú…‰®ÍmEŠÀ‚Kµ |”Öý⋜A|áU­ZA´ÆîóÏ w—¨c´û›nºI…&‚ a‡Ä”N hÌà=zôÐÂ!„¹<Ú’•‡F£&0 !Ná)&y´zŒ•+W*5,Z¿Ï`ƒÀF…øÎãV (&t„$&Ñx™ûþûïW_<æsLúôE®ÞLþ9äCTÿâŠ+TP£écjG3ÏO<1dä6g¸ôµŸßb…À:ñÜsÏi â(‘Ý¡Cíó.âpøž ŸqàæóÏ?W·[ÔŸ–§_ÔˆÛý C ÐX°àOÕò‰Î_²d…šîO>¹S®÷«Y³’¢Ä—»J´ã«´—ë"6á¤/ÁŒ@GƒE¨ÒðC_zé¥9'ÍaEàÚµkc• ïçñå¡IµÃ¿N?Z)nø 1YÄFCàrLÿDËúé§jªgƒÑ¬Y3µ* ¸ñS£¡Ÿ|òÉzoRúp1€ƒè~á0ÿ#8ÑÜÑÔ)lEЂÖ7¿N‚ç¨j‰Û‚òÔv|è½zõråÊ•óÃÕA¼ƒ‰æô¥¯‰+ˆ6î…«€@JLø˜ïÙ¨°&Ü ¾±!`ƒ@÷›æ“>}úè00Ç5Ã; îþoµðóðéŸ/ÜWÇ[¨Ù¨ÆlNCÀ0ŠêÕÏ»Ä]vÙÁ"䆉¦¹…›>ýFýL¶„.]†‹»½ªZvH²aiï'J!è£Õ7õDíãÛ&çÞ „õôéÓU›òè˜À¼v¯±Þpà º–hyh„(¥žñчݹ­õ¯¿þRáO?ÂanlX¢n ‚éÂ~ñðxŒvO|@¥J©±)&š“5y÷…Ÿ7ú –Ü‹q_ÆpÀò{v™Zp©ø"8>À›îý|lPØ…çðçRýä]‚aø¦zíãÆ™y?ŸˆÙpCÀÈ\~ÿý-¬S¥JÕR[·®Ÿ«ÀçIÈç0 ›hƒ4g?sŸ.çʦNª‘ߤ¾…… fuLñQá€o9Úž5QyhæŠ ðð5Ñc„c¢ñôG>×F>}y |ÆàƒOUà'›3/Ïuý`›lÎU3ó~Q!m÷1 BGà·ßþ–èè¦zŸªU+ºvÚ&Ï{’§ß¬Y1ï!)UﻡCÏóšL€é_ü6Ûäýœá5“žL>.<†cüóa=¿)ßñÁcêN$ìS9)Œ¹m`RkSǽðÂ ê–ØÔë‹ë:Óô‹ y»¯!`¤4ýí¶ËŠÇsY³f•\ï±~ýF‰¤Þ(c9ñ}÷P>~ÒüJJ#ê=¿ŸgCÃE#õ-YyèpÔ¹[ÐORúùÑó3/1ÅAó^#‚á‚ð¹L>6¡ŸÉoÇÖfùB ,ô)™[¾|¶`K4Q¸¬îÖ[Wö¹nî†Æ&j}›€VòߣíöÛo×lÿˆ= %b­#¯ß9›}Æ@t>‚ù ÞÅGo-wLèçŽ5 „ÀÒ¥+ÄoZ]ƒùðë/^¼<×Õg ýì@°º Û<7uê‚\¯³“É 8 [²ÈÙ'u.ÚΘè[µj¥,u§%b­#ØüýI“&©ŸÂD{@øÓHØá%ð‰Dc7÷>ú›ûo€=¿!PŠXºt¥–Éýúëù’"¶½üñÿ5קß_½z¶Ð¯P¡¬»òÊÄÍnŒZbS®à%8 M.)xpí“@Ô»§É ' ŽxÒ ¡NÆZí/òÒ±) ?Qƒ˜{€»«<|·€ ýx<ì›!`”PV¬X+¾ùòx¶¥¤¯ý"}M„ã}Q®OÕô|Ä»KY)Bói®×ÚÉœkOJ ¹è®!ò=Q#Å.±‰Xë ¸}ÏÇ„™ìÍI‘ôÜ–B, l:¬Å#øÄ±o†€!`d<ýµJ|¿Yä:ß~û‹k×®±Z•uøù“µ¨¦ïÇ Þ[òØß•üô¬*q¾ß>sG€ŠtT‘ƒ´ÿòË/×JuÑ«Ðîihîl±ÖѶÎF‚» þýDÜx¢é©ÊÇ56 Ô°@îQ.ñcí›!`‹B öÝw¿¸]wÝARÃêj=Ñ]|2¡ß¸qma}ÛÛ]uÕËÂèvjô2ûžXå`ä‡ tçA›5³S+€¾|Xù’±ÖÁ„wæ™gª«€XÆúf°ƒù`%¤pP83Á·Ï,Œ‘Ï~ C T ðùçs„oþ-ÑÐO?üÿ'u͇¹o+¹Ôå…óýÀ„Ïxï½*!Ï•Wšã<é|t»’ýÜQGµÍq¾ ébä+è: ûz´ðDB˜È|L÷¤ú–Œµ|ˆ}’¥È%»‡Ÿ·´|ÂK`Œ|¥åmÚs†@X½z½úô¿ûn¡°ÑÕÓ¹vß½¡›2eAÒy“iú\P®\1UÿOJžbfþ¤æ}"‘Àç*Êõ†>}ÉXë($”Làs]²{pÎZ<æÓÇþ†@ E`õêuJ²óý÷ÙB¿m[„þ¼¤O”½HÀgìë z6zʾ%ú%òµÙ¢ C Š@–Ð/¯ûС‘³OD2–½åË×HŠ_î•õÎ=w©Ý¾Ú=þøøè-í»!Pâ0¡_â^™-Ø0!€yBž3~S.}?¦C‡¥æû,ÿ5îó~Õªâú¢_¨Ô÷À' ãÛÛ’ øsô´}7J&ôKÔë²Å†@2àЧPø/¿,•ZíÙhöÞ»™ý™ /CÓ¯V­bÂsáÎúõ·– Á>®_¿QR[~møÔ&ï»ï¾•Nºý©ü¬[·®Àñ &ô7ù¿¬]h™„ͽaÃÚJÐã×¶Ï>ÍÜ'Ÿ$ú”Õ 3òùk}öìÙJrÊwI›¡1ýùù(hÕCú‰þw[Ÿ!`”8øÃù÷ß«„ë½NÜÚëÕ«¡‚=;ßòå«SÒôý„ÆõRKÂý÷ä»ìÓ(Q˜Ð/Q¯ËkÉ€+Ÿ€;y¢mß}›IÝùÑn—ªyß_X¾|7räé>v~˜UΟ³OC $ `B¿$¼%[£!`¤„@–y¿Vޱ=z´ro¼1-G?þùT|úá a÷{ôѾRHæi7gÎâð);62úÿŠl†€! éwâó×uîÜÔÍœù»[²d…ïR-?¯ÈýØàÈÁ{4tC†&T½¤-°/r ûj &ô V›Ô0ŠŠËi _ãÆÙ‘û~ eËn)åV[¸·ßþÖwÉØÔƒøb…Ž=vOá˜oåN<ñA·ví†Ð;42ú™ûnle†€!àÊ—ì7!ÛḬ‡€ ý+ÖHŽ~Þéz¹-Îþv¨é­Qø¹µs†@& `B?Þ‚­Á0 ŒÀ_­ö½äD;°‹ûê«ynñâåz¯,Þý‚ }&ºë®խкõÐ?ƒM`6&ô a›ß0ŠÒõ*U*—ô^˜ÿ{ölí^~yŠŽÉoä~²‰q<ýô™îÏ?W¸«¯~%Ù0ë72úñl†€!PPˆÄ‡ '·Ö»w{÷üó_ê‚úôÃ÷!•oæÌá’8SËû†ÏÙ±!I˜ÐϤ·ak1 MFsýÆÿæzý^{í¤>ðó§Ã§¾™/¾8Pãî¸ãÝð);62úó*l!†€!P–-[)Qôëóœâ¸ã:¸Q£>ÓHÿêÕ îÓßpë­«¸—^:ǽùæ7î’KƸ rß„„¯µcC (0¡_(Û= C ÐøãD{_—ç}N:©“{å•)êƒÏ«¬nž“%P£Feüøø{÷¾WY ³.C X0¡_,°ÛM C Ýüþû?®W>O²œm¶©æºvÝÙMºÀU®\>ÝËÐù`ù{ì±Ó\ÇŽ;¹ƒºÝ}ÿý¯…r›ÔÈ/&ôó‹˜7 ŒC_>l|uêÔp .Ës}}ûîã¾ûn¡äé'OñËs’ |°#—ÿ¸ãîw÷Þû¡åò§€™ )\Lè.¾6»!`˜Òñ§o¿} ·hÑ_yÞqÏ=k ûyó–ä9¶ ;l7÷Î;iž#¼GÖ÷wA§´ë MFÀ„þ&Cg†@¦ °xñ ‡Ù¡¿paÞBŸuׯ_Ó½õÖ7Eò¬‹Èþƒní<ð6w÷Ýï»uë6ɽí&†@úa4ìØ0J$K–,wµkWsu릦éó•+WPÿÿçŸÏ)²gîß¿‹Tû»ÀM›¶Àué2ÜMž<¯Èîm72@ ¬Á`†@IGó~íÚU]½z5Ý—_þ”Òã¬\¹VŠåtÝ÷4à.¥‹6qЩ§žêüñ¸«+Th(ZÿD·lÙqýöÅÈ/3fÌpÍš5Ké2ÓôS‚Ɇ@&#@_­ZUµ¬.%tSi+W®s‡¾‡›3ç÷Í7?§rÉ&™;w®7nœòBÈÏš5óÜÒ¥cãúü9ûÌÂÈpȇC9DØ g¦ü»iB?e¨l !`d*ðè“~פɶ*ÄSY'Œ|5jTrƒõp×\óZ*—ØC Ä#`B¿Ä¿B{CÀð<úDðÓ–.]™'(«V­S¿~Ÿ>í1ãÆý˜ç56À(é˜Ð/éoÐÖo.\1¯iÓíܬY¹›øÿý7ÊÞ Z•oË-·p—_~¨»þú× IC Ô#`B¿Ô¿b{@C ô#.žƒÐÇOŸ[#ˆ¯J•l6¾=vU÷€/»›Ûµ%õÜG}$µi[þ’%KÜÈ‘#¥ÀÐÛnõêÕùš÷?þrÄO»|Px Å®ù$묳ܤI“¤ÈÓ?îÝw‹¹£DGZ3 C D#ЧÏ}Á'ŸÌÐg˜2e~ 8¹>˜ÿƒ}ö¹1ǘ /|&¸æšWsô´cß}÷ $z?×i:wîˆpêÕ«ôïß?Al»í¶Á)§œü+þ4h£:‡©àÐC DˆÇsLP»ví GÁŸþ¬[·.èÛ·oP·nÝàŒ3ÎvÛm7½f‡v~ùå·_¿~Aƒ ‚öíÛ¢µ¢Õ½zõ 8à€`»í¶ † ¦×H*˜Þ—/áãnݺ·Ý–±²@„¤®sÈ!÷jÛ¶m0qâÄà‡~ÐõÕªU+;vlаaÃàõ×_×ùý?·ÜrKðÛo¿}úôÑuì¸ãŽA‹-t]Œ¹ûî»IIÓ>Ù<èe"°ƒAƒ7ÄZ0Ëk-]ºt ž}öY¿Œ`Þ¼yAÅŠu-—^zi VŒà…^PÁJ´û jÕªX#b×p B?¸ñÆÙP²¹ d4jÔ(xíµ×‚Q£F•+Wêׯ|ùå—l–ôZÞå.»ìÔ¬Y38ýôÓƒõë×Ï<óLpÚi§)vü<úè£q÷IôE¢÷sà™hÜ}™¦Ÿtof' C ¤ °~ýFW®\]nË–Û«OŸ¾d-˼¯é3vÈÃܘ1“ÜìÙ¹»’Í[þY³f©™üå—_v£GVÍ­˜ï?ýô“Ûyç¥zßKz >ùNî¿!÷ã? OAm‹¹Óôû￯}œ ·Ù³gë|"Ý>ûì#<wé½D@¹ ]ð‡ª•c‚¯R¥ŠÛsÏ=õòðñ\ ¥ƒ/qíÚµsW]u•Ô<¨ã:tèà¾úê+÷üóÏ;êîè£ÖŸ&Mš8Ù|8, "8ÝüùólpÂKÒ¹d³¡}"xk騱£»ÿþû¥âŸN6!úì"€¥–Á•’î¸F˜jßwÞ©®‚(y­E68qkà‹lH„ÙqGÞ;ëX¶l™ÔtøKqÁì6nÜèd3"$Puã®íÚµ«ÔrøÎÉÆEÝcÆŒqX-®¸â wì±Ç:Ù¹;î¸C\H•ÝôéÓõÚ‹.ºÈ1ç{ï½çp3à&à~¯¼òŠ>7„›o¾9î>éøbB?(Ú†€!P¬d ý,®± Êj¾þôéÉ}Øð©„mDÿ_tQ ì{!zªH¾cF0Ц¬&ï–-[ºæÍ›«½wïÞ*LYBU4|·ÓN;©€1b„;ÿüócBäÄOt\{Þyç%\7Bxûí·×óo¾ù¦ŽÜE´}½ŽÜo|õ¢mº«¯¾Zχ?üp'¼:N…U›6m>q„µh´j.¯^½º l±.èæW©R%+·æ ØvØanÁ‚RSak÷ÙgŸéü˜àñ»¯ZµJçáùXK"òZKùòÙ1:ÙÿÐ_­Zµp—šó  Ërºáˆ;)_pmøùŽ<òH}g¼Lþlž8·ÕV[i½®]¼x±n*.¼ðBÝàÞð:ž›ß“N:)¡{!zïü~7¡Ÿ_Äl¼!`dYB?ûÏÙî»7ªÛœþX¿ðU«Ö:6‰Ú)§tÁ²Jþ•èt¡ö‰Y[çßrË-UØ…o†æ‹°D˜ñ‰ŽÆ*€†¹ÿþû»'Ÿ|R›š˜ªÃSÄŽkÔ¨¡Çâ PÄßÇq¸Ÿïᆶ+î'fuwñÅk`-Z9>ð2eʨ`F8:4N€"LÅe¡Ö?§˜]Ó¦M…’x²va •-[Väš<+›ŒN:Å=sÑ’áÛZôÂÈ?lPøaÓnþ>l.¾ýö[Å;|-Ë -¹‡˜õcSˆ+ÂmذA¿c± ùç×/iü'ûI'µ© CÀ(Jš>÷íØqGÑg%]ÂêÕëEëL¬é‘Âw×]'ŠIùÑàþI:GQŸØb‹-Ô\~î¹çª–ÏwLìh“âû×ĦâÛWí›õa:NÔpÐÂÃüLC¨"`ÖhÖ^Så˜Æ}8Fa/~øXÔ>jlT°   ‡ÆÎ†ÄkÍâ³ÖyÐ`Ù p  @\¸ 5*‚â×W-ŸB¸%Â!•µ„çàÙÅŸîŽ:ꨘÖ>Ïñ^{í¥Âýúë¯wjî Ü/P-ÓX/çØÄð\{챇öûçç‹ÄY(θ^ØÀI¬ƒKänÐ Óü ý4jÓ†@Ñ#€([6ûÏÙ^{5‘(ðÙI²fÍzÑË%=ߢE]ù#¾·»ôÒ1IÇå < ?&ïã?^¿£áâÀŸNÔ¹jTý´iÓÜ®»îª¾ð°€ôó<÷ÜsÊÕ.Áxê`2LÐhÔhÚD§ãß&5 s3-|ŒPgÀ)í—H÷n¸Á±áàô!¨ñYW¨PÁí¾ûîº>\ øçѤq[àG€úÈ~½QèæBâ¿Gx²ÞV­Z©¿œaþyáÊZ˜ƒÍ |õÄE° ‰6ÆWÀ¦ >ì"ñ1 hñ¸J°¼Àµøô% S³˜›>Ü&ŒÁºCܽmìùrœ(H‡üBX3 C D#°ß~·ß¿0î:t¸. J?Q{â‰ñôD§b}b=¨ì[‚_œëÛÔƒT¢÷S™›hxïÇ‹®òD«‡›Ê€sD£‡›š@‚ü1ÅbRÖS¢Á’FˆÖˆ:<<×cÙ€|–cŒ>Í,ŸõØýè—`¼`îܹñ—èX\ ÷¢‘ ֈÒáÊZrL–BøÍ™3'n¤l`4c€¬ŠåË—ÇK„ˆ• % â& }Éoô~b§VAvv­!`EŒ@Ù²eÄ'šenõ·îÔ)KÛ‡?ÚÐô+UJ®é3ËÁwïþ÷¿‡$ʽ™DuÇwEç,ìï˜ðÉ¿ýöÛãn… -5ÚÐB‰rOÖ¼ß?|ž€dqáqþM?Q#è/Úä 7,5 w%=FÃö÷Â}ÀO´%Ã!•µDçJå{"üüu’žècŸa_¿ïb#в™Ð/J´í^†€!P(à‡÷>VƒÎ›ˆOûIëä»bŸøôs3ïû­Zí Ak]Ü€»_X8æV³<>1íã÷^y ×Óp‚ë ótTã #ÀZÁ ?Ó[¶,ÓWjë3 C eÊl)9ÔñÁ]Ý»·”À¶éŽ ¿h[½z]Ò@¾èØsÎÙO´þ2¢õ'Š‹Ž/¬ï¤ÀåGàûuà§7RÇ¢š2‘â‰4Ñðuvœ7l¦¢ª¼¯*Ú&ô‹o»›!`óD5ýš5+‹Ù»n€¾¼ù¢K¼÷Þÿ¹Q£>*Õ¹ÑSöÝ(Q˜y¿D½.[¬!`$Bÿ<,{ÑvÀ»ˆ‰ÿ{×¥Kó¸S¹¥ìÅ üï þü;ï×wë¶³¤Ãí.>þ‘bUˆw%Dç~5j”æ–Kе}iÿ E0ÕfB?U¤lœ!`d,U«VH(ô›7¯#d2[ ßyvùV"˧Ÿ3<¯¼üòC$§{ ÉI›×P;od$&ô3òµØ¢ C ?d ýÄéiG±‡°¦}7ݦhúL©Êý÷ŸìÞxcšÐáN›Ó¾%ú%á-Ù C WªT©Ð§ÏEGÕV*—M‰»>¿>ýðÅ5jTv#Gž.Ô^êvñ„ð8;62ú™øVlM†€!/ÄË—'Öô!ç©]»ª›8qNlÎ5kÖ¥”§» r@VÀM7#¸%KVDÎÚWC s0¡Ÿ¹ïÆVf)"€PÏ­8ΑG¶•ZóÙUóÖ­Û˜rž~²%vØnRþ´“;á„4F Ù8ë72 ú™ô6l-†€!°IÔ®]MJÄ.Ozí‘GîáÞ|ó·vmVùRùÊ—/“t|ª'Î=w?)³ƒ;óÌ'òÑŸê=lœ!NLè§M›Ë0Šm·­.ea“—Á­Sg+×¾}c÷ÒKYÚ>š~ùòé¡)¹å–>R~ƒ”¶}©XžÝnjäúùAËÆ†@F"yNnš>‹>ùäÎî‰'&èú×¯ß T´×ô™Œ”À^‹ð”+—>¡ÏMkÕª*îƒs¤ßdaï»%é:ì„!Pœ˜Ð/NôíÞ†€!64¨åæÏÿ3×ùN<±ã}ëÓȽ‚ÿ½÷.q3f,rƒ?Ÿ«å!z­}7ŠúE²ÝÃ0 † óú[o]Å‘jG _ÅŠù§áMå!pÌœ9ÜÍ»Äz꣱ŒT®µ1†@a#`B¿°¶ù C Hhذ¶[° wMŸ…œyfWÕÀIÛ+¬-ð3Ï P—C¯^w§´®ÂZ‹Ík„0¡FÃŽ C Ä"ŠyŸ‡«W¯¦ÍyòÉÏ õY‰ê'ï˜cÚ¹ƒ¾C‚ü&êýlrC Lè§‚’1 ŒG qãÚyúôyˆ ÈÑ/ãzh\‘êœqƾÜwŽ»÷Þݹç>%Y‰é‚3`[`©@À„~©xö†€!ЬY  Ë«Öý† ÿJŽ~Y׬Ùvî©§& p”ø}ûíAŽûìs£FøÉí&†@ú@ì«!`”L*U*çêÖ­á~úiq®€Ð/[¶ŒD×âî¸ãÝ" ´#ÀïºëŽt£G÷w?ü‰Tÿ»'ieÀ\ÀN@ ½‰ªXˆ]j†@A úÝôé¿:*ë%k7þ«,z­[ïàÚ¶m$er?•à¾nɆ§Ü?hÐ ÙDÜ‘Òx8*Wn-ÕÿF¸5kæ¦t 26¹sçºFÅ.5M?…†@IG`çú¹×¸Ç§_¶lÖŸ¾ÁƒV_ûÊ•k üè3fÌpcÇŽÕÌ€ rýü÷ßÝŠS¥:ßO¹ŽËk;Ÿ;Λ;>]ºtqóæÍ‹ûÝ6¡‡}1 ’ŒšþÌ™¿åú71Þ},ûïßR‚ú>Îõ;i”Lè—–7iÏa®M›æçŠD–ö—=äâ‹{Šýc·hÑßÙvd”RLè—ÒkelŽì°CMIÃû×-\øWÒÇçü–[n;_¯^ GZÝ5×¼ë³C ´"`B¿´¾Y{.C`3E }ûÆnòääÁqânwÒ…ÛÙgwwS¦Ìs_|ñS¸»ÄôÑG’PðøÿàK–,‘@Ç‘’nø¶Ä¬öÝ)}þñÇîé§Ÿ–²ÃŠ%;ÎbòäÉî×_MiŽt š0a‚ÄyLM…¥ç­·ÞŠ}O÷ÁÌ™3³{ï½×}üñdz‘Ê=V®\é>ùä“T†hŒ ýÁg†@¦!@DþW_ÍKº,òøÃš>áá6¬—»òÊ‹„°'éâ xâä“Ovêt´‡zÈqÄ* _}õU׺uk÷ûï¿'ú‘Gq÷ÝwŸžgó±÷Þ{»wÞyÇ-]ºÔsÎ9’!q¦ž»õÖ[‚¸0[x-矾# í¯¿²¬?ëׯ†ÄƒÝÆÓ¾„áÇ»ž={ºÏ?ÿ\¬M Ýe—]æºwï.A›+’Þ묳Îr“&MÒ¦ܻロt\ÚNȮǚ!`¥ÑÖƒž=G$}ž9sþ:w¾!áù£¾'=zBÂsyuŠ $z?×a^xapúé§;í´SЭ[·à–[n vØa‡`¯½ö D3–u÷ >ýôScüøñÁ¡‡ˆŽ9映víÚA=‚?ÿü3X·n]зoß nݺÁgœì¶Ûnz sýòË/Ø _¿~Aƒ ‚öíÛ¢}S§N zõêpÀÁvÛm 6,¶Ö<0˜5kV ºN°¾Ûn»-6FR ÂL¿¿ð A³fÍ‚&Mš²9~øá]_­Zµƒ† ¯¿þzìZxÖß~û-èÓ§®cÇw Z´h¡ëâüÝwß­sÒ'›º‚Áƒ’ 4nÜXŸ™ãí·ß> H0eÊ“×ZÚµktÐAŠˆ%Dl=.ذaCðóÏ?¼·m·ÝV±åÌ™3'AȆGñ»é¦›‚ýöÛO±f´ï¿ÿ^ßk9÷ÜsÙH(U«V ÄŠ¡cü?Ìuã7² dS¦k—ºàµ×^ FT®\9¨_¿~ðå—_ê=¹Žß]vÙ%¨Y³¦þ¾0ÿ3Ï<œvÚiAÛ¶mƒzõê>ú¨¿EÒOÙì² ŸÿÈ4ý´mŸl"CÀÈÚ´©ïfÏþCòß×'\N"Mß>¼·>üB êCûa%<ü/¨f÷ä“Oª©¹\¹rN„€ÛyçÝK/½¤Ëá“ï?þ¸aâ~üñGÉë¯í^~ùe½F„¸{ÿý÷µsá6{öl!)úÉMœ8Q÷qwÝu—j›ÜcàÀîÃ?T­<­cÇŽ®J•*ú³çž{jß\à.¹ä'BÓ]uÕU®N:®C‡Bc¼Á¡2§r!9¬q²ùpXd“!tÈó]çÎuÿsÉfC¿’FÆZ¸ïý÷ßïd##––aúì`så•WÊû[£Ú28Üyçª=¿ùæ›N®;å”Sœà<×"½ ˜Î£æsÙÔ8ÙP“ã !vª«®Ü#à#!wõÕW»Ë/¿Ü~øáŠÏK»ôÒKÕZðÊ+¯èœ"€Ý×_ídâóè ÿþéÚµ«ûî»ïœlxÔM2ḟµãŠ+®pÇ{¬pE´U~þ17ÄE]äds(ešß—Óê&X¶l™ã~à…áæ›oß&åcú)Ce C $ ó‚üøYI—õéû¤ðõë×Eþ¨ñ]iÿ<î¸ãœhæn=öp¢õº]wÝU…)~îÞ½{;Ñõž|ІïÄ* rĈSµ'žx¢kÙ²¥;ï¼ó®!,š¨žGXÒD;w¢íëu‡rˆ !ú¯¹æV¢Aª £A'¼c½ø¦Û´iãDU!‡€XMÿ\ƒyšMý•*Uâò\c˜S4Y)s|˜T \à¶Þzk÷ÙgŸéü÷Üsûûï¿ÝªU«tžµˆUÁ‰C7"l†p? Äs[KùòåuŽ *èÆaÀ€q1¢Å;Ñâ…«á^q }åü&¨Zµjò{Ðω…@çg“Ã&€wĺØð¼<·X,Ô]ÁfˆJ´áñë8òÈ#]óæÍõ½bòç~œÛj«­bq&‹/ÖÜz± 醷ˆß‚›ª“N:ɉ•"z«”¾›ÐO &d% }÷m.afÂ%#ðsãç8p?Ñôÿ’?´_%¼¾  Ú–[n©Â.<š/shÁ|¢u#¤G­šâþûïï°ð_LùziÅŠÃSÄŽkÔ¨¡Çâ pšïã8ÜÏ÷pÃßÐC ¾øâ‹U¸¢™¢ero‚™Ÿã?^ýýþz¦˜ËU0ú>±/»¦M›J€eV¥A8­lÙ²è†ðãYÙdtêÔIb,²Ÿ‰¹hhâl Ää­Ö q^kÑ ÿûG\#j9¹á†bÝhì×^{­cS€0õMÜ"º6ÞV,1¾%q¼žK±lξýö[}O~,Ÿl˜Ø¤ÐRÁŸ ÏèÙ&l(h¬…æqÓ/ùüÇ„~>³á†€!ùtéÒÜoòö«&p!”¬•¶¾#Ž÷U B[™lX¡ô³!9ú裥ß¹ª ò³8Z!&ä!C†¨0E€!Lh˜€5‚éháaF¦!T°+(–ÇDsŽË”)£Z-ælµO B@5Æœ‡ àƒ>Ð ó ih¢l¸††VŽfŒ€LÔx1Ù³¡@›Ž¾#´]ñ«KáùçŸWRYKø~Ð$£ÕûF !fr´jÌèÑ{úqáO‰WPm ¦\PÝJ\† ÷믿^Ý\Ã:q³œzê©:ωgóX{h7ޱñ~pÙ€=,ÞMÁù‚6ãÞ/(‚v½!`dðê/^¼\¢Íÿ?rõ¸õ!Hs‘ù:–ëûôiï†}ÙÝsÏÿâ®/Œ/¬‰&~„4 MŸŸÛo¿]#Ðññ7jÔHµ\håaaåçyî¹çÔÿàecÀ'¡ÍæF#šÓ=saBÆŒ¯_8¾{ÌϤ§B Íß=®ÌÙDÆc¡ JaÏwüóø¥1eÓÐLYO¢Æzjln‚ŒmÕª•ú½ïŸ3<š9îh¾X RYKøžàÆC‡Õn Œsü`À݀Ɵ¬ùµã€k††U7"âèG£G+ç½àZñ± hñ¸XȰWæÃ§OŒ±4ú®–X6¼Ü'¸žzê)=ïÿñkñßSþ”EY3 C Ô!pÖYOcÆLÊñ\óæ- :v¼>G´Cƒ®]ožþËè©„ßS‰ÞOxa¤S‚ïbÑøþ”hà.Z¢ïÒO 8'‚'®_F A~.RωH] Úc ~æ¸ñ¹}Ÿ{ ›€Cè“€½¸~ÙLhT¼ï”MA Zp]·?þp/Ù ¢í†Oë1c$(.`ÞpKe-áñác±|(†ôÉÆ%¥µ2–5’íÀš¢MÜšî @ –ÍÆX¾|yøTB|yF±¤¼ž¸ ÿû’(zß4ý”·G6Ð0JÝ»·@µoEsÎöÕ²~Q¤â4ãdÏD@àœ,ñ=¢7v ÔJ64mý˜ðÉõF«7LÁD†GzhÛÉš÷û‡Ï£™†}æás‰Ž%,Q·j³a5ƒª 7|åD»N¥¡)û{áCûÑýõŒA#6Ö‘×Z¢×øïÛl³?Œó¥Ç:“°>´öD-î~“h‹®ó`GLEº› ýt#jó†@F pÀ»(ÙÎêÕë%¢<; ³¨(B)­±yó:âï=È}öhñŸ§%ySºpaÚÇÿî¶R™N@[¸afŽ `Òí|f@x¬ Ä dB³@¾Lx ¶CÀH;[mUI|Ä sô•)³¥ýÔowúéûˆO»²hßï¤~Ñ&ެ^½z¾¾¿ ùûá†>ª)ã+O¤Q†¯³ãÂC€MXt#VxwK>³ ý䨨CÀ(árH÷ÆÓâž‚èüuë²R âNäòå®»NpÏ<óE‰çæÏåíÔf‚€™÷7“milŽôèÑÊÝpÃë’µQ4ß2 AÙ²e$*úß|ÁQ»vU‰â?Ñõï?Jøä/vº­r\O¤ºÐææè·C 8ˆÆT˜¦_œoÃîm…ŠÂºE‹íãØùúlòÛ:wnê è*Œx#^c±öcdÒï€ ýüþO·ñ†€!P¢8ꨶRâõ‹Ø3`Þß°!š¾¿˜¼uën%\ôY9Õ¾ß> ’‚€iú%åMÙ: C`“èÕkwa¯ûQXÎVëõhú6ä_Ó÷7Ç¿¯¿äïû.û4J &ôKÌ«²…†À¦ P­ZE)ªÒR*”MÑËË•Û2Wîý¼îQ¥J÷Øc§¹ë®{]ª§-Ìk¸72 úõ:l1†€!Pôé³§ÐÀNÒ©ÉÓ'/Õ\ýDëiÚt;)‡zœÐÎ>,å_—%òÿí ¼Õ÷ÿ—yȘ1ãM† Q$%i2eøF*¤P$}éR!Cß"¥Iƒ¡B”T¦ŠR‘SH¡”2¤Díÿú,¿çôÜãÜ{Ϲ÷œ{Ï=÷³_¯{Ïsžgïç²öZ{íµyâ’…~\¾vŠH šÎ?¿¦žœw@¶nýɪ-T(¿frìp˜ô¶ëAÿþ˵×NÖƒj§·–#L%@¡Ÿ©¸Ù @V€vߥËYz,í‡Ö|Á‚y5|mÆ„>*Bàž¦M««Wÿ”ˆ·f¶Iúü Ⱥw?Wô=¶õ/kžOŽ,@OJFîd'£Ýy眔²ð> Ä  ý¸yì @, `«]³f5Mðã0Ç3®é£¿¹sç’I“ºËÇoÓ>Kb9ÖM&@¡Ÿa„¬€H »€9þ¹çÞ×SæòEżï»X±‚º…¯Ÿmã{ä‘ÅÞm~’@ܠлW‘ ÄŠ@“&ÕÌ´Øûý•þ½ú¡úWªT™=ûfü×_ÿ\¨,¼GYN€B?Ë_;@$™n¸¡¹ìßP=îS>‡>½ý)S¦¨¼ùæ Y´èK>œQûÒË‘åbG€B?vlY3 @@XÞƒËÆ»bÒ»"E È–-÷ÉÚµ;¤oß©Q]FˆI‡YiŽ"@¡Ÿ£^7K$?©Y³¼Ì™s,B_,ˆ jß«¯ö—@Ì;Î’…~B¾VŠH 5… zõ*ÊÒ¥eÇŽ½©eÊ3ìXºtˆ9rTZ¶/+Vl‰J½¬„"%Kp‘b~ ÈΞ|r™ìÝû‡í×Ç9>Ø%Ó†óÖ[ëdĈy6é9²£TªT2ÓÚfC9žÀrjú9þo€H ç(Z´üòËAõ®¿ÐÖÚ7nü!Ó ´n]OÞ{ï©_¿²´n=AÎ?¿£…ñÅùü!ƒ”þ¾øâ‹¨üRèG#+!ÈNJ”8&ô Î/ƒµ’1cægj÷á䇵þ%KËž=t{ßZ;ê†WþAðßÀ5×\#ú™úO”‘ $bŠɯ¿²!uëÖT¶mÛ#+Wfþ:{ùòÅ%_¾ý‰„–c‰sÔôãü±{$@Ñ'P¼xa9pà˜ÐÇ^úaÃÚÉèÑ ¢ßk$8#@¡g/„Ý!ˆ=ϼïµÔ¡ÃévZÞüùŸy·øI I€B?!_+E$húÁ±÷Gê$#GÎÓ½¥V4!Ÿ-[¶LãŽÚØ6oÞ,O>ù¤7ü±üóÏ?Õ»iÓ&™Â›æ;‘ZÇ0†çŸ^üqy÷ÝwÓÌï¯kÉ’%z S|þQèû߯I€râű¦ÿ§üý÷¿éÌ3“¤yóZ2aÂ[9‚Ý»wW‡Â=þ[é¾F]wÝu—j´_&Nœ(^xaª³oß¾69@ƒ&LаÅdýúõz6ÂFiÛ¶­L™2ÅúâõqÕªU²sçN»ɯÆëûþ[ßû¯VïÑ£GS,~ß}÷i$ÅKm}ÿý÷rûí·ËE]¤ÅßS,ãÇ믿®g.Dÿ@§äz 2‘ @Ž#РÁp·{÷dãÞ³ç7W¯Þ]nóæ“Ýå— 8õÞOµ‰sÏ=שPq+Vt}úôq7Ýt“+[¶¬ëÑ£‡SMÚ©€rï¿ÿ¾Õ±råJ×¾}{§BÜ]qÅ®téÒ®M›6nïÞ½NµO׳gOwÒI'¹^½z¹ÓO?ÝÊTªTÉ}÷ÝwVoïÞ½]•*Uœ Iå°Ù©fí.½ôRײeKW®\97bÄ+óÕW_Y»ø2cÆ 7lØ0wðàAW¸pa·fÍ˃_Ï<óŒÛµk—õS'm5jÔÈ}øá‡Nºå¯\¹²ûè£\‘"Eôì”Ý·oŸ;v¬}÷ú8dÈ·hÑ¢õ!#X 8Е/_Þé„ÃéäÃõë×ñhŒ¸à,À1x¼6l°~ Ïþ¤BßÝ{ï½6€¸úõ뻤¤$7þüdãøé§Ÿò¢¼“ºu뺒%Kºn¸Á©•Á}ýõ×ÖŽ;Ú;Ä{M+©÷¾›6mZZÙÂy¾Œš~$3$æ%H¥KQí6¹æVªT¹í¶ÖªÙÍŽ«qnÙ²E:$sçÎýÏß4N˜»ñ}Û¶mrê©§êBs¬ÏøÄ÷^xATˆ Ìå*ø-/ÌÚ0/^¼Øîá™?mݺÕêS,çwž†)~ØÚRÁ&7ß|³F\*“&Mlr 'ÈYgeÅ+T¨`m*THTjˆã³E'ôèAÑ ˆè$Ct" ³fÍ’ Èå—_n?W^y¥è@zè!Ó¨«U«&:™ tI…¥:Y |ÇÅ·ß~kV„Põa)fy|h,„÷4Ó^3åCsÏ;·L:5Y]¡Æ‹í“µk×¶>û3_pÁ²nÝ:ùñÇõèäE2sæL?~¼õ¯sçÎq€5òaá¶ÛnöòÎ;ïˆNjl™Ë((‹Þú”‘å ù¦Ð‡ó $ø½{“ } ²Gsm;ß¼ykãjÌ0ÃD­¯ Ö:uêH­ZµD5Rð„0E§jørÊ)§„5ï­·Þ>Øó² 9>µ„8ž/\¸ÐòÔ¬YSTÛ·ríÚµ3¡¥VõiÏ1AèÖ­›]?ðÀ`‰œyæ™¶® Ìâè‹jôº5r¥+V̲jõ’?~)^¼¸äÍ›×&6VI¿BÕ·}ûv ps|5Ì$¥€¢E‹Ú}L"‚Sðxaöeš÷úŠòØ`Îõ¯cO'÷IDAT&AÞ8\ Ë%˜ ¨ÕÁ&˜ y³ªU« –+Ô*aýLÏr…5’Ž_ú逯"$@ÙŸ@(M£ÂÚ÷ߥŒõšþ‡=ç¶ŒƒŒõÄOLV4kX ñ BVh¦-Z´éÓ§ÛZ8& H LV‡÷¥D‰v G´ŸþÙ®½{øâ¿o}¿Ôä¯[G›•`̘1‚ïõêÕ“—^zÉÚΓ'n•<`?Ç7aì¯^½ºž|¸Et™Á»eBS—B:ÅAP¦T,H˜H¨Í;P_¨ olÞ¸0YúòË/›??œù0AòÊàÚ+‡k‚öîŸdÀ áùxýCþpúè¯7£×ú%Èò$@Ù’@éÒEÕLü¯w¸ VU³t5ݾ꿷ט¨Àd~Ë-·˜ö‰ïƒ6-ôÙgŸ5Ç:˜æar‡ðB‚É9T²Òk¯½&0[#é:·i³Ø+V¬h¸¸F‚ †ó]RR’i÷°6@ØBc†PÄD‚|ùòÉСC¥K—.6!ŽS84gX2Ægeát‡À®]»šm}¿R«Ï—-Ù%Ú NÁã=çœsL¸cÒâí<À²–Q®»î:+†x¶zõj[æhذ¡Ý÷×Éxa 18÷©_Dpó™þB?Ó‘³A x P¦LQ]K=bW½|òÉ7›?ÅLqðÀ3'ÃÄ¿cÇ’è4}, 4iÒĶÀ© ¨ó˜|þùç¦}«C^2-Ø«[å`·™ËH0]Ãzm^í0Ocí¼C‡öëÛÐ »ï¾Û&'Ÿ|² ru 4S6&hš´:ÁÙròcM_ÍÜ-r0ÑC»/Uª”iú˜$xÉë#¾§TŸ—ŸÈï•A;Ø œ‚Ç‹ ÊìÙ³“hôþ¥ô “0‚åÎ;ï´6¼qxÖ´‹åä•þ­Zµ nÞ¾{} ù0Ú7Ãq÷c H4³gâú÷Ÿžê°V­úZ=ÜG8Þ—j¾Œ< Ç{?œúá ïyã{ùu½ÙÁ]µRï–}ê64‡gjâOv_”S'?§¦s§¦h{¦Ú¼kÖ¬™Sm5™g}²‚!¾À»_ÖŽ{‚]ðl÷'xØûžû½øýÏ‚¯CÕœßU w¿ýö[²G¡ÆëÏð¶÷'µ8ìB@ƒë Ê©µÃ©•à¸wà¯3­ëhzïçö$‚õ‘ @v €¸÷?üðKª]mÒ¤š™ùï¾{Žz²_jÞ¬|><Ô±ÏÝŸàaOôàí5”³š—Ï[÷÷¾ã>)ùøóy×ЄC%8'ÿ9žAË7…ª/TY¬û×ÒýyBÏSºg¡ú<äƒ5VxIúñò&Ø L%pÒI%R5ï{6¬½z33‹u¼Ûqõ Ó>ÖßSj¡: ì5³¶î³O–ËÞ΀dàK¨ñ¦5,xãgçÄ5ýìüöØw t8&ôS×ôQy¡Bù4²\W2d¦ìÛÚñ/݈RAl‹Dà{ÍbO¹?aëœíü r( ÖŸ'»^‡oZcÁ¤(xb”V™xzN¡Ooƒ}!È4æ æ³p¼i5 3×®gk€šiieåsˆkúqýzØ9 X€¶¿sç¾°š@¤>ÆóÄǶ´…U(ŒL.VÎ8㌀§¹çqÎÏcž÷äK^|ñEÛñÆŸSšY¸¦Ÿ&"f HTU«–Òmn{¥nÝ i1wî\*ð»KëÖ¤iÓêÒ Aå4Ë„“!Y™H ³PÓÏ,Òl‡H îT©r¢ ýp;V¡B ·ÞYúô™WÑúÂí?ó‘…>ÿH€r,Ê•¡é‡gÞ÷ µiSO‹­­‡òÌònñ“²  ýlóªØQ h€yûöÈÏ‘¿çžŽ²uëOòôÓÇBÚF»_¬bE€B?VdY/ @Ü€Ðÿî»ý÷³@¼òÜs×Ëc-‘>Øqy ¬"@¡ŸUäÙ. @–¨Zµ´Æwߣ‡§¤~[¨Žb}ÿ©§zè1·Sõ,ø´÷û‡ªƒ÷H ³ Pèg6q¶G$7òçÏ#ضÁŸžtÎ9§èá2-¤gÏgäðá£é©‚eH S Pèg*n6F$oªW/këóéíWïÞÍ¥Fr±/½u° d ýÌ"ÍvH€â’À1¡¿;C}{àÎzžü÷tìËEÎ ú™A™m Ä-hé[¶dLè*”_^zéFyæ™weÚ´âv¬ì Pèóo€H G€Ðß¶íç 3([¶˜Ì˜ÑW†%óæ­Íp}¬€bA€axcA•u’ dµkWPÓü.qÎYüûŒt¼Zµ2²ví=Ò¸ñ(;¯uëz©ŽeI ê¨éG)+$ÈNŠ) eÊUm?}üÁc-W®˜ž?« Úé‡~ *Xµ¹sа¿çËÝwÿ'ÚͰ¾Hà†nРPÏ„=rjúa£bF D&ШQUúÛc2Ä]»vIÆ -Àßÿ)û÷¿e׈ À2HïßÀÒ¥Kå믿Žèo–B?"\ÌL$¨~üxµ–Äæxáõë×˨Q£ä×_•¶mÛÊ­·Þè.:uê$]ºtIv/3¾xýùè£lR2lØ09ÿüóœâ-QèÇÛaH€²ŒÌû;vìÍ’ÈyÛ¶m“‹/¾ØWÕªUå¾ûî“-ZØV¿G}TÞxãdíꫯ–E‹É”)S¤N:‚2S§N5vï¾û®œzꩺ\qº•yöÙgL?ÿüs騱£´jÕJÊ—//#GŽ´g}ûö•>}úX=guV@[}å•WäÎ;ï´<·ß~»ž)0K>ýôSöcÇŽÕó†›v[ªT)Û‰€ŒÓ§O—SN9Åú…ö0†ZµjÙ½'žxÂÛn»MªU«&ýõ—nc¼[*W®¬ŒÎ”U«ŽYðý÷ßkP£‹,Ïĉ­~(P@C'¯×wµÏîyíx6lØ M›6•Š+Ê€Ì:0cÆ ·ÆK½zõä±Ç³þT¯^ݬ(»bÅ {vâ‰'ÚdZü«¯¾*½{÷péÞ½»<øàƒÖÌ¡C‡¤Aƒ>€%&%+&>¿üò‹üý÷߯ý8çœsÔ’ô¾• õÞBõÙ2Gó—šh˜H€H€þÀu×=ãôt¼¨òP“·Ó-{©Ö©ÿá;ý¿ÝMš4É=÷Üsv­š¹›;w®«T©’Û³g+X° S·SAç *äT º"EŠ85¯;&®fÍšÖ†jáî‘GqjÎw*ØN œîåvª‘;j.W®\nÞ¼yN…¦+S¦ŒÛ½{·Ó †ÓI‡Õ9hÐ wóÍ7[]ï½÷žÓÉ„]« ²òø¢‚Ù/^Ü©u/¼ð‚Shy®ºê*§‚ÐÚîÙ³§»ñÆ­ï%K–´{h×Èíµ×º¤¤$÷Úk¯¹O>ùÄé¤À­]»ÖÝ{ï½Nã8˜î¦›nrª½»5kÖ¸sÏ=×µiÓÆäÏŸßõïßßéò‚µ{Çw8@¸Ò¥KÛ÷víڹѣG»?þØúóä“OÛN8ÁÆ BÜéÄÁ®l}AAìN…ºÃ;Ó‰[¼x±±Ë—/ŸC/¿ü²_¤ ¼¼;Œ§k×®®Fí#áý©°w«ÁMž<ÙÿñÇ!ß[¨>[%)üÒ-{î‚ .HáiÈÛ˨éGsźH€²=‹/®£ô—Y2Ž¢E‹šFÙºuk)\¸°@û†FŽ5rhÒÍ›77­>ÌÇ't’¨€‘~ýúéÑÀÛDœüüóÏYð[Q¡-uëÖ•ÿüçø @:9K/½Ô´\4f1À€a¦G!hÆ .4çwžtëÖÍ®{ôè!*xíkëÐèUðËÀ¥}ûöv¿`bGÛ:tPËÉÖ Z.´ëÈÁƒ-?ÚBçÏŸoZ>üŠ+&X¿ß¾}»¨Ð•!C†Xœ¢ñ§Ë/¿\ ½#Íœ9S.»ì2»FÝØÃ®Þ˜À’à-9€!Æ ÂR06ïŒ=vO£FD'2gΫó’K.À˜%{ãaP¡/W\q…=Ç/äOX°œòÙgŸ—ûï¿_O[|Itr#?ýô“è„í¸÷–ZŸ Dá‚B? Y @âhÕª® Œj–ý'ÓU¥JÉ›7¯äÎ[TƒÕ.“õæõ×_ÕØÍìó·ZÌl½sçN)W®œÕÂ0ƒ§%JnÁ¬a‡äÝ÷ß dô]@xABУ]L8`Žÿꫯ,ÌåH‹ê›&è`÷Ì×j±°çøU¶lY»F¿óäÉcL °l¡ Ÿ/&þ¡½qãF㡾¨EÄc,`I $0ÆdÄŸàì¨VˆÀ­þùÇ–pÃëxbÜøx~¡aÍ5×Ìü˜È¨5Å~®¼òJ3õcÂ꽩µ%Å>[¡(ý¢ÐHVC$Ê–-¦ëÚ¥UCü&îÁõöÛoÛ®¡vîÜÙÖÅ¡!C‹„EÂBëÑXßN¾È á Ü\Ë–-³¬ê¨ ‚kçHðþ‡† k4Y$8²!A†JèCýúõE—DÍò¦åc2àOÐ1É:t¨Y ¦M›fVX=ÔDn“ø5ø& ®°P@ë÷üà?Ÿ5û›Õà›oÒ~Ÿð“M›6Cõ–-[zÕ>ÁëÿûŸM®à»œ`U+øZà}]ýõ¶Ö>`Ü¡ÞÆ’ž>·Ö÷¼ieàs Èi í¿ýö:u¼:þ?ô¬`ÍI×ßÍkÚ&„;4PXð ç8˜ÿ‘ ­zÉ«‚š·®-›°D$8íAÀBˆ¿óÎ;vfs˜åq^ép6„×<´ì /¼Ðœaš†S–‚Ú„àÔus3ÑCû?í´Ó^þH^Ÿt­Þ!DÕÁ&'Ìÿê`Bއ°b ŒWÂþ©§žJ&ôQ/œÕ¿—z˜RAQßsȳ!~yub2ƒÉðà|‡å8/zí¡(ú Bõ)°š¼gÞ¤Öô K(xgXîÀV>¼'œÃ€mÁï ÏBõ9DW3v+äR?o’ @&°~ý÷®iÓ±Q#Ž#_¸©ækNxþüpäƒ3™?ýöÛonÿþýN5gsäóžÁ‘¯Y³fæH>/Á‘Nkj!pj!ðn§úyøða§&}§‹Tóá!œòt}ßòéòS:dµ,˜ãŸÿ¡šêeý÷ÓºF;èÚŽ$ýùçŸN—,R—NrœN>Ì2œzuëžSËŠeÅ{AýH¡Þ[$}N#5ýŒÍ™XšH  Ô©SA×£sÛ<8ˆ'^´s¬sÃAΟB™˜áZ‚öë_[÷òzëâÞ÷Ô>a1€S`8 Z0¶ã!ÁŒì¯àÕí:8Á:à• ~–Úw´nÿüõÀÂpòÉ'ûo®±¤µ{8zëü‡)\àáÉÿ^B½·ôö9…¦»M¡Þ  Qóì™ê¬¶F½¸ãGèÃÄJ(¦ö¾`2öÌÎÈפIsB .ƒ@;Ø1*Á1&i˜é!€‘6oÞl&ïP&ýPuDrO5aY¾|¹9éÁK ø 'A(c ;b‘°N˜í³c íu‘GÂ>“ @ têÔP·‘­Í/þ”†©ÀG=Ð0±EÌKÚž—¾wŸØz—’ö­€ˆ€7a„@‘)È ¸…‹ou»!‚Ø ‚Û`+‚ìÀß ¥AïmçÃ.81Æ*Áº‘]>˜PèÇê/ƒõ’ dk•+Ÿ(II¥Õ‰ms¶G´:Ïv NòüöPÑö4ÀyÕcû¶Âq&zpo‹ "ÝÁcÖ \c]…·=áõ~Ï=÷È‹/¾(ðäGD<õ!°h}Ø?m^ôp"Ä69 š##Õ òêË`Ûß°¯ˆG>$ô ÎØºW»vm‹.hrÈ/ ýò¢9L È tî|– “"/˜€%`1b„¨ñAtpûö±D€½0ÏckÂõâv <ØaM€öŽí„>„óÆg[õ°UN#ï™÷¼¿ ÐAôƒp»ðŽ×È}6y@!”ǎ쀥BA}4ÊŸ-h”¼@(aô 1òñxàùŸ“…~NzÛ+ @D.»¬‘iú»wÛ‡QáÌŒˆ|Ь5ìn`t©EÛÃV5X4±mŸC¼{ø`Ÿ:4oø º¾céÂ;AÞŸ0±@°˜Ö‘°eküØÿ¡ï-MxÎrȃûxŽÉÂÉw€ƒ„É4}͉åR€5g¿(ôãì…°;$@ñC páüº×ú ¡zìð—øéYÖôûÑFaq==‚ü¤m/µèw¶â†ƒhãàv/F€7JL нžO"z¼¼Þ'¬ˆÒç%X¼˜ž=üt眗%G|Rèçˆ×ÌA’ ¤—Àu×5Ó5åT`ä,á/hí<£øX–p¢í…ª qênþûßÿÊ’%Kì¤=hçXëGD;$Ý×n„XÓGÔ:$DDðDèÃz=,þ„H~ˆ¨‡|ˆÃÀ>±òè÷·ï×ܲïoˆý#ÈRµj•×Hj¥ô•uz ÊiYÚ—xi|̘1¥ýI-Ú^¨þz‘ï°ÇÇÔb Ìùˆ xöÙg›ùñô1¹€†E{8j Ú:"â¬z¬í?ÿüó&ð±Lß/áðľÇ~{˜õõ4>ïQ²O/š^²› ü%¢%ðø84 È0Å‹7¨³ØBõ(ÿéª Îi8«Ÿ‰˜ ˆá ï|ï ›àÃqR7¶åÁD0´þ„‰yRRR ° žÃ~8ˆÇ°í¢¬ãOXFÀäÀ3éûŸe÷kXî#Z L÷~ç<ÜGò·wìαÉ@°ÀÇ3L Qà{ãŽô“B?RbÌO$# ÐBO‰;vMŽ'ƒÆ5ÞÚ~œt)[uƒB?[½.v–H «tèpº® ÿ—Gîf“¬h×íg÷6)ô³ûdÿI€2…@îܹôlöv2|øÜLi@,PèÇ‚*ë$HHÐöóäÉmñD2@’At:ÏsŸ¹ÈBcdôïáCÔ—Úß&½÷S£Ãg$@$D`õêo5¢ÛTY±b˜zŠs×s~oôÞï÷ÃÞ‘ Ä3ÏLÒÈq•ô€˜wã­kì ¤I€æý41 $'0vìåzPËrç~,–{ò§üFñK€B?~ß {F$§Ê—/®ñç/ÑÈp3r\ìö8}%ìV˜(ôÃÅl$@$à'Э[SÉ›7<÷Ü ÿm^“@\ Ðë×ÃΑ Ä3è,'¾-›7ÿÏÝdßH @€B?€‚$@$jÕÊÈèÑ—IÏžÏé‰q‡#+ÌÜ$(ô³:›$H;ž!çWS š‘8ƒâH–…~¾ZŒH ³Œq©lÛö³nã{/³šd;$.úéÂÆB$@$ð/B…òÉôé}ôÌöåòâ‹«þ}À+ˆ3 'g/„Ý!Ȟʕ+&/¿|“4oþ?=¿½°´m[?{„½NhÔôúõrp$@™I zõ²òÉ'Ã¥OŸdùòM™Ù4Û"°P臅‰™H€H <+–”¹sûË-·¼(K—n ¯s‘@& ÐÏ$Ðl†H çhÜød]Û¿Q|YæÍ[›sΑÆ=ž²÷¯ˆ$È®´§[·ÉÒ±cC¹ãŽvÙuìwâXN¡Ÿ8/“#!ˆCû÷”^½ž—% É#\#'œP {É.åÿH€H€H ‡àš~yÑ& €À²eˤiÓ¦R @Æâ¬[·NrçÎ-uêÔ1°Ÿþ¹}÷ËðõÔSeΜ9V>ñý…^J²iÓ&QÁoyß|óMQ!.‹/¶{xæO[·nµúTÈšÙùᇶ¶T` ´ô¥K—ʤI“D–†>AÎ:ë,+®ÂÒÚÔ Œ- E‹ÉÅ_lš/,«W¯Ö°Ã%ÌŒ“ø'Ÿ|"£F2 L÷К±40uêTY³fÌš5Ë´ùË/¿\ð£W×Д¡í#¥ÅiòäÉ¢ÕÆþßzë­ò믿Ê=÷Ü#*¤5$ò#¢ÛƼoß>u ePwçÎE'!òÐC‰N:¤víÚ¢(ËãýÒÉ-C ,è¤FÆ/:)JVï˨û¶Ûnö¯áùè£äÝwß$YùN:Ù»lïŒE¢ÐUÖI$@ ³0ÌߪýŠjú¶n®š´¨¦)W^y¥ HT³·jø¢¶@X?øàƒ&Ü<¡“;ÖÜ ²7jq<_¸p¡å©Y³¦¨¶oåTC6a¤V9r¤=Ǻt·nÝl-æmÕ‚-O‹-?~¸‡gHXׇ lذ¡}ǯ¢E‹Ú}Õv­ßªMÛZy±bÅD­²}{x¡ŠSãðÀ„éä“O–>øÀ-úߺuk›\¨µ@09 •ÔRaëïÅ‹·eˆP¦yµÖè!°ñŽð>`òÇd ë÷(HXVÁbàÀ6¡À»õ&pU«V,½ O5jÔLŽb‘(ôcA•u’ @T«VÍJC>ñÄ“ÕtöÙg›%B hàÒ° @ã„àU³¯ L ÀB%hãHº ?ÿü³]{÷‚ïÛà_ìªøQ3¾ zh°Ð^Ñ/©ÉÚ»<îÂ-Ož|¸M ŽËâFjœP¯Ú¶­NL& háH­ÛK°(èò„÷Õ>¡õ'Lª¾üòË€5À{ŽqÂÒ‚7hï˜èxÉß>,5^Ê›7¯õÝûÍO ýhÒd]$@$cÐa¿å–[L«Ä÷Áƒ›vùì³ÏŠ®›I[×öMø¢;Ä¡„5Òk¯½fæh\oذÁ´TahìžæŠk$õõë×Û5Lú([½zuz¨°Àj€gi%˜»aMÐu{:t¨téÒÅ&/°d4¡^hø0µ£Ðô¡ácÌ0ócpÊC?¡Ã¤ÇÂ`Vèã9çœcÂ]ýKX’ÀrËu×]g]ÅBKXNð,(ï%xüƒ+–Z0aƒsŸúOx3å“[ö23! ŒðÌÄ0ñcMºk×®V)4}üL˜0AÔÍÖø“’’L€BÐ@˜Aëõ’WÏ+¯¼bëÿ‚vø„IÖƒ?þøÃ&0;Ãã¾C‡z^À~[·Vg4+34Ló~­×0o«ƒ ×\À¼¸¡X/oÛ¶­-Q` Ú4ÌßXFÈèvBŒO M ?ýôÓ¶d0oÞ<[²À:<´slÄ$Vô–XF0&ú¨”6É™={¶¨c Mn •#&7êðhÃÂ$K#ü#ÐydÂ=Œíá`Ù¤U«V¶À*ñýòÞ‘ïVT.yÊ^T0² H›bî«Wx†cïCCÅz¶î4 ! ó5š_`Àš,´ph—^‚†‰mgX‡†ƒLìØƒŽ{Þ 5³¼WOz?aVÇ:¹gÖÆ68,C”*U*½U†,‡E×B… žÃoB7x|˜ÔøÍï(€I”ßtáŽåoiyÆŽkcÁFLX¼1…*{pÜÃ{IÒ‰™ÿ]áY¸ þ˜4á3‚Äw"€Å¬$@$å`‡÷;´z‚IæÁ æöPNh^>oÝßûŽOß”üüù2ruk¿p„`ŽE‚i?8¥4±ø(çøøŠî#…ª7¸<òab€¥‡¬H4ïgu¶I$@é$Ó>¶“ùfZUA€{ƒÃ\­ûГmÒ¤I`g@²1þn¤¾ôtëæðË'Áì’èÈ—]ÞûI$@Jžè‘|šßk÷`ò‡?Aû¥™úóÄâq^¤¾h×uøX'Lž‚'P±n3½õSè§—Ë‘ @$/wìë‡vî%|÷Âã¾ñÆæ‰gÍš5“Aƒ™Ï¶÷a}ëé°V”)SÆÂÚb‹¶ zõÁAkÝy‹îƒ:ÐÖѱ„áM^}õUóI€ó‚ñ a½q à`xýõ×ÛÚ½=ø¿_÷ß¿hTA ”㿟S®)ôsÊ›æ8I€H à©¡ŽmpXŽç6xþ#aKœò °q8 âèCØ#N¨èðxÇò&pŠÃv8 I+ê(ú½ÑáÿÔSOÙþz83ÂS~ܸq6ÑÀV8D.Ķ9”ŲúêO8hâĉ6±@[^|žD¾NN#‘Gʱ‘ DLÂQý† b‚ÂB3œ%x¦c74qhú(*z ×)ux¤#á7Þh{þ½gðÐôa%@=˜HÀ¤®qëÍŽ€)Œ:°wÛ¿ 8¡~ì~@4C,+`÷,Þ¤%8¢}§ÐO´7Êñ @ ¨ „,ö´#Ô,v ¤–‚#Úy“/Ê\¨è^}X:ðïðG# ®}BL/’bè7³KHðHiKÜgœac‚æ=üúÞ[à' @Ž%€­Ð ¿ùæÓЦv‚S w4íÔR¨è^~h݈˜‡À98 FO÷ó÷‰5Ä&èß¿¿ñ‹c|±žH„ðØG|zv¼ 0IÀ’â ƃåƒÔ¶âyeᓚ~"¼EŽH€bHÚ0ÖÑaJ‡†|íµ×Úz½×¤ákñþ±÷Ü[Ï÷žyŸÐ¸ñM¦zøÀù‘ó¼„gˆ˜áÙe—™U‚à„zXKˆþ‡]8—!Šø÷xàã¢ûé±¾6iyþùçÍ!NþÀ=Ám%ÚwFäK´7Êñ Ä-hEäËêB{ÆßIîàtNÜü”¢â:ÄøG, „0Ìø~“ðØáüÓ¼?ì/òà¤>xðûûˆû°„šHàYvJéÈGM?;½eö•H€â€4í`aŠ0¾á|tß‹ˆzü ÎxXN€Ó"éÁÁ.5²Ððƒ>îãÌ€à>â~"|Œ#½éx»Izkb9  È Âyˆ—¸¡ÂÚf zUúü3  ˆ+¡âåÇU³qghÞÏÆ/]'  HPÓ„ó’ @à[x¿3‘@4 ðQ¤‰Þû‘c~  Èž–Ó¼Ÿ=_{M$@$@ Ð @ö$@¡Ÿ=ß{M$@$@øÿ©ÃTË”þ¼èIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1UseQueryResult-members.html000644 000765 000024 00000036220 14042362132 027207 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::UseQueryResult Member List

This is the complete list of members for mysqlpp::UseQueryResult, including all inherited members.

mysqlpp::ResultBase::copy(const ResultBase &other)mysqlpp::ResultBaseprotected
current_field_mysqlpp::ResultBasemutableprotected
disable_exceptions() constmysqlpp::OptionalExceptionsinline
driver_mysqlpp::ResultBaseprotected
enable_exceptions() constmysqlpp::OptionalExceptionsinline
fetch_field() constmysqlpp::UseQueryResultinline
fetch_field(Fields::size_type i) constmysqlpp::UseQueryResultinline
fetch_lengths() constmysqlpp::UseQueryResult
fetch_raw_row() constmysqlpp::UseQueryResult
fetch_row() constmysqlpp::UseQueryResult
field(unsigned int i) constmysqlpp::ResultBaseinline
field_name(int i) constmysqlpp::ResultBaseinline
field_names() constmysqlpp::ResultBaseinline
field_num(const std::string &) constmysqlpp::ResultBase
field_seek(Fields::size_type field) constmysqlpp::UseQueryResultinline
field_type(int i) constmysqlpp::ResultBaseinline
field_types() constmysqlpp::ResultBaseinline
fields() constmysqlpp::ResultBaseinline
fields_mysqlpp::ResultBaseprotected
names_mysqlpp::ResultBaseprotected
num_fields() constmysqlpp::ResultBaseinline
operator MYSQL_RES *() constmysqlpp::UseQueryResultinline
operator=(const UseQueryResult &rhs)mysqlpp::UseQueryResultinline
OptionalExceptions(bool e=true)mysqlpp::OptionalExceptionsinline
ResultBase()mysqlpp::ResultBaseinlineprotected
ResultBase(MYSQL_RES *result, DBDriver *dbd, bool te=true)mysqlpp::ResultBaseprotected
ResultBase(const ResultBase &other)mysqlpp::ResultBaseinlineprotected
set_exceptions(bool e) constmysqlpp::OptionalExceptionsinlineprotected
table() constmysqlpp::ResultBaseinline
throw_exceptions() constmysqlpp::OptionalExceptionsinline
types_mysqlpp::ResultBaseprotected
UseQueryResult()mysqlpp::UseQueryResultinline
UseQueryResult(MYSQL_RES *result, DBDriver *dbd, bool te=true)mysqlpp::UseQueryResult
UseQueryResult(const UseQueryResult &other)mysqlpp::UseQueryResultinline
~OptionalExceptions()mysqlpp::OptionalExceptionsinlinevirtual
~ResultBase()mysqlpp::ResultBaseinlinevirtual
~UseQueryResult()mysqlpp::UseQueryResultinline
mysql++-3.3.0/doc/html/refman/doc.png000644 000765 000024 00000001352 14042362133 020046 0ustar00tangentstaff000000 000000 ‰PNG  IHDRÚ}\ˆ±IDATxíMOS[…Ÿžsúa?-XZ(PD4‚ AWbu`b 77wäHFÆCËÔÂÿà/`vo„ˆAPòq‹P @ ­ûÝè980 îà¤+»§Ýy×^ïZï9SW¹\83g‰3'°Nâçl¹¸_b¯p ïåûÆVÜÖ¡€Ÿ×"¬Ö†X€d]Ðà3“ÉÃÄÌ™xŸ ßMàœ[<çSPkvc—hÈ'…™˜^Åm™hØ7 `Û™¦ èÀåráq›‘œ¾!daeKŸþÆÕ˜:Ì*³_דâèi?I–eP*B7Ÿ¿åô!¹Ýgr6Ër6oKbëþãðôrI”ËTˆüªŒ¨xóö=›ù¢&‰(e+ßóÄkýÇ`ëÁÜb.“¸ÐW×w0¥°jÑzN™¬|©WEãµ¢a¯6[öX†AkÓù*/œ¨‰€ÉY­ ÿV’§–u²jÂ>1W *½·°PGŽzÿ¨/Eg{ ŸÇâaoŠÁVú:è¿™¤1$ôR§W,–ªà¨@ŠË56¾ÀÔÜ-¾,mê¸Î/æè¹– òr5¥T*S(Vf8ö9u’ Õ£w›ùóa=Í<{Ò¡UŒ÷r¯+ÉådDÏF$è°…£é¿`zþ»ÎúöN‘µÜ®0Q3£~_^Ëóâ¯N=ˆvpTà±LžT}ˆîkq†Òm<¼ÎÓ?Zh¿X£ï_þÝ¥[)ƒ `gêÃa_Ô*äÔ2`'=õ´Fÿ2EâÁPú ÷»›l=8‹Wv°%THqÉ¿<"¤ïG¾ÆxH{#ÆÖ«aÔJÕÞ‡—m‹„ çñKsÿàñVŠØ¡°·MâÒ^ TÁ– Ý›r¥ß½ømüÿ_™?ªWİ÷#uIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1DBSelectionFailed-members.html000644 000765 000024 00000014652 14042362132 027473 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::DBSelectionFailed Member List

This is the complete list of members for mysqlpp::DBSelectionFailed, including all inherited members.

DBSelectionFailed(const char *w="", int e=0)mysqlpp::DBSelectionFailedinlineexplicit
errnum() constmysqlpp::DBSelectionFailedinline
Exception(const Exception &e) MAY_THROW()mysqlpp::Exceptioninline
Exception(const char *w="")mysqlpp::Exceptioninlineprotected
Exception(const std::string &w)mysqlpp::Exceptioninlineprotected
operator=(const Exception &rhs)mysqlpp::Exceptioninline
what() constmysqlpp::Exceptioninlinevirtual
what_mysqlpp::Exceptionprotected
~Exception()mysqlpp::Exceptioninline
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ReadTimeoutOption-members.html000644 000765 000024 00000015344 14042362132 027645 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::ReadTimeoutOption Member List

This is the complete list of members for mysqlpp::ReadTimeoutOption, including all inherited members.

arg_mysqlpp::DataOption< T >protected
ArgType typedefmysqlpp::DataOption< T >
DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadQuery-members.html000644 000765 000024 00000015241 14042362132 025742 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::BadQuery Member List

This is the complete list of members for mysqlpp::BadQuery, including all inherited members.

BadQuery(const char *w="", int e=0)mysqlpp::BadQueryinlineexplicit
BadQuery(const std::string &w, int e=0)mysqlpp::BadQueryinlineexplicit
errnum() constmysqlpp::BadQueryinline
Exception(const Exception &e) MAY_THROW()mysqlpp::Exceptioninline
Exception(const char *w="")mysqlpp::Exceptioninlineprotected
Exception(const std::string &w)mysqlpp::Exceptioninlineprotected
operator=(const Exception &rhs)mysqlpp::Exceptioninline
what() constmysqlpp::Exceptioninlinevirtual
what_mysqlpp::Exceptionprotected
~Exception()mysqlpp::Exceptioninline
mysql++-3.3.0/doc/html/refman/inherit_graph_7.png000644 000765 000024 00000005271 14042362133 022356 0ustar00tangentstaff000000 000000 ‰PNG  IHDR·$Ëœ«rsRGB®Îé sIDATxíZu¨]?OŸÝÝŠ‰ŠŠ‚"b‹"ú‡ ‚­`bw‚v€ÝÝÝÝÝÝÞïüÎÇfgã­ovõízìÌÜ>÷7çžšQLdÈ …$ŠÂ=™-#ÜF¢#ÜQûjÍÆŒpˆZb;;räM˜0ÁYmÊ@“&M¨uëÖùóÒÜ>{™Jƒ@"`„;_ša98Œp‡“éáŽÀ—fXˆîÅ‹S×®]ƒÛ­Ë^'Nœ ÆSžÔ³gOúþý»¼ˆåË—Ç5ü¯µãêÔîׯ_éóçÏ®y9þ<=z”J”(!¿|ùòÑ’%K¨hÑ¢„T²zûö­(ŒOŸ>¹™æÿ±øW 8ˆ Ú«>ùòEݾ}[ýøñCݺuKq¾QúÿüùS1еbÍ!uwïÞU/_¾ô˜ÁP¬]¬º“'O*Võáëïß¿WT/^¼P?~T|Â¥}àÀªlÙ²òÌÀ¨7oÞÈzP,øR ¿XõäÉ)_¾|Y>|Xêt‡_¿~)To½Ì¡X[«êÕ«{ŒÁžK•*¥ ( §‘ñgÏžU7nT÷îݳê5N˜Ÿ5œØ“&à€õ_½z¥öîÝ«„º;v¨‹/ZMÀ;qâÄjüøñ²0~šÀK|xíܹ³bAÖÓȘb-ÖàV=ö·gϵ{÷nõîÝ;«þÖ>sæŒÈßõë×=ú*”+WNõíÛ׫‹—ÿ®póMa¦V­ZrÇÁ€Ô©SÇ*W©RE®jÕªªf͚Ϟ=@¦OŸ. ³P©S§V111*wîÜ €ð²3dÈ %J$ý+T¨ R¥J%mvánÓ¦*V¬˜Ê˜1£Jš4©¬ß±cGé·nÝ:)³+aµ¡/„ ÁïxÎ2»ÒÆ ¤Í~ nذAûŸšßAƒIwI“=`­,Y²¨k×®I;0K–,™Õ>gÎiÃÁlß¾½ð$Ii3fŒÅ„'S¦L²/`W°`AuóæMÅZ[Æ€Ÿ±cÇ*¶6 ØÜðêK¸q0Ó¤I£ºuë&óïÛ·OÖÇ{Jž<¹ìu×®]q®Já™[’6mZ1Ù'N$Ö.ÈÚ‡–-[F¬%éÒ¥KÔ¶m[âM 5¿[¢µk×O­Zµ¢áÇ‹/ ³„qÙ²e£Y³f‰éïС±v&¶7äéÓ§2Þ×…M›6MÌï‚ ?>«k®\¹ˆµ;±f ¶"Ô¿iƒi…»;È^F_PéÒ¥ån¿° QÆ ‰…І*û„ïÉÂCóæÍ£#F Ÿ5„58±ö$>°‚Ñš5k¬6~±ÄÖIL;üùÙ³gKö±¸À¥_¿~tüøq™øT¬XQöÅÖ“°kkÁ)66–-Z${³â·¼²õ¤M›6É. >}³¦–;||>ŒÄJàóã²b£víÚ ¿Á¬mç5ÞÏr”l—øjîcÇŽÉ,ÐDÌŒâ@OÊ0—(³ ‹I„æ™9s¦´Õ®][±`È3Ì Nø¨Q£N/\üØ·“ñ«W¯–~¸ 2įæ.Y²¤Õp ±´æÖÖmX".šö~ø_4ôÂ… År±ÿgo&àM­ kjJ‘"±ï©‹’Ñ´±O/Eö‰ýeÉÔèöôéÓ‹µ`?\ªX¸t“hI«àãã ×¼“+W®ø˜Hódÿ,ž#Gé « <.œ|Nü›•!sKà^CpMد¥¹sçkjÔ¨‘ ƒ°*¦”µ±F!×Âðøñckz˜^dO!!â>}ú´Ça°·sPçÑæoN¸#ìË vö7nœ¸ )S¦”ƒdÿL7Ü(ûa „“VÎ5ræÌIì‹»‚l~HǵhÑBÜ7ô‡Û§ n [G]ôºƒz7¼zMj«ÐŠÎ>?Þ)Ê'˜µmÓÅû18‰Œ÷ôÞ៲)£ÁƒËËaWD:é,üíâÅ‹‹–‡À”)SFÀ€O_™£{Ëõž ÂÀŸÆaÿW¿~}«+»42Òcl*©AƒÒ!D˜1¯2´øEÊV‚„_—.]dŽ=zÈÌ…8‚](YV!tCPàû9r$5mÚTüYøÚˆ#F-<¡_ïÞ½ÅòaMv Ê8Ø)\¼b hl`>/\¸ x#N¯ˆQ¹¶}!Ë–èÔ)þü.R@¼ ø¼RÁø¥¨CÊO¢købˆö‘é`m)é:´#[ßcXë(vQ<|n¤‚@È– S û"c¡³ ÚçÆXÌ_þ¾N9jŸÐW¶ssN[qÀ©3`<~ð‰9`E³²?œ ·øD惭´i?Tã„ʺuëZ>zÞ¼yÿ^úâ‚qÈ>€‰hÖ¬™µ®ŽM¤‘/ÀŽpiÇ»ßÏÁºÔ‡^½z‰ïŽqnx…ÏLS ž™3g¶°(T¨•¦ ´6R“À6A¤mÐ_k:É;Û!@†p@œ„\36ŽÃB ã$7Rm˜ùv¤Ð4iáFÒdq‡zœóŽû©S§$‡Ž\­“GzA„2”„<7òóHã9 9wöòéNB~Á¹“ÂÉ+ÖÂ;CŒï N¬B¹¶¿mqLþÎ; .ȤI“¼ú#EÊÈÁ}ñ•ŠóÕóðÇ_MRç :ývôÑW iI¿¦7Ä–Ír7œóóùBè¬GiU_N^±Þ™3pÔ|„{m¬óG…þôŒ3$·Œ MySQL++ Reference Manual MySQL++: mysqlpp::ScopedConnection Class Reference
MySQL++  3.3.0
mysqlpp::ScopedConnection Class Reference

Grabs a Connection from a ConnectionPool on construction and releases it back to the pool on destruction, and provides access to the relevant Connection pointer. More...

#include <scopedconnection.h>

Public Member Functions

 ScopedConnection (ConnectionPool &pool, bool safe=false)
 Standard constructor. More...
 
 ~ScopedConnection ()
 Destructor. More...
 
Connectionoperator-> () const
 Access the Connection pointer.
 
Connectionoperator* () const
 Dereference.
 
 operator void * () const
 Truthiness operator.
 

Detailed Description

Grabs a Connection from a ConnectionPool on construction and releases it back to the pool on destruction, and provides access to the relevant Connection pointer.

Constructor & Destructor Documentation

◆ ScopedConnection()

mysqlpp::ScopedConnection::ScopedConnection ( ConnectionPool pool,
bool  safe = false 
)
explicit

Standard constructor.

Grabs a Connection from the specified pool.

◆ ~ScopedConnection()

mysqlpp::ScopedConnection::~ScopedConnection ( )

Destructor.

Releases the Connection back to the ConnectionPool.

References mysqlpp::ConnectionPool::release().


The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1UnixDomainSocketConnection__inherit__graph.png000644 000765 000024 00000017125 14042362133 033067 0ustar00tangentstaff000000 000000 ‰PNG  IHDR™“Ç»ÜsRGB®ÎéIDATxí ¸MÕûÇ—!’¨4Ï*¥A%¥I4ÏsJ(¥‰¤‘ÒO)Eó, IˆBJ¥¢QŠ”«(Ùÿ÷óú¯Ó:ûîsÏÙ瞃î]ïóœ{ö^{ïú®÷}×Ú‡o™@ÄxñÈŸV”Í_ݾf¯µð óHÈ»<Èò®b߀!&³òÁŸù×A±00vìX )¾ ’,™€ÌtìØàù×AV¸ù曀,É|',鉿ñÈ‘<Èr¤H_Mj x¥Ö’# ”ÏQ=9«fúôéfë­·6Ûo¿}Nê\¹r¥!Öœ5k–Ùa‡Lýúõõ;“Ê?ûì3³í¶Ûæ¤/v\•+W.³Ð—£>Úl²É&™t+ë<ï½÷žŽ¿B… YבMÁ Î’=øàƒfôèÑÙŒ¥P™yóæ™#Ž8Â<òÈ#fÙ²eæÍ7ß4Gy¤8p`¡¼6`]qÅz;~üx3þ|û¨Xßv\sæÌ1M›6Õ12NûùóÏ?‹UªÂ½zõ2ݺuÓÇÆ 3,ºu.î^ó®»î dwé&º0`@ФI“àC öÛo¿àÉ'Ÿ öÙgŸ`=ö>þøc-ÿðÃk¹?þø#8à€‚_~ù%hÓ¦M –Dï§L™¢Ï{ì±`§v Ž?þøà”SN dµ_|qЯ_¿@”\rÉ%š¿zõêDË|ðÁAË–-ƒm¶Ù&hذa°bÅ M?餓‚¹sç&]7nÜ8¸é¦›4Íþ3fLP¥J•@”DÕµï¾û•*U î¼óÎàÖ[o FŒüõ×_A‹-‚jÕª<ÿðõºzõêiýÛm·]pì±Ç¿þú«¦?ñÄÁ^{í¥z‘ Ö4;®O?ýTueûc¿Ü:ÖE‹ ,:è àÛo¿ Ä {ï½w°Ë.»÷ÝwŸfŸ1cF ‹GõyÝu×ÿýw@ù³Ï>;8ñı¾Úÿ™3g[mµU°å–[°à¸ãŽÓ¹øá‡‚N8!Øl³Í4ö¾þúkƒsÎ9GuÛªU+mkâĉAƒ ñ.m¥Ù]<ð€›-ù#„‹"Õ"@Ô*°eíÙ³§9ï¼óL÷îÝLœhU˜gL³ Ö¼ýöÛF”c.½ôR#“`¨§S§Nš÷Úk¯5#GŽ4ÊD~üñG#l^y僸ýöÛõÙ´iÓÌ[la¦Nj~þùg­—‡~¸Á¹×“'O6¢LM³ºš¿ÿþ{U—(Èì¿ÿþæ–[n1XBúùî»ï‡‘ 7²ÀL‡´:¬}àš%K–˜áÇë·Ô¼þúëæÕW_Õ¼aë±xñbså•W&>²¸Íhd±¶‘iè§,.½çXéwÞ1O=õ”jÚi§f¬m÷îÝÛè¼´nÝZ­#ÖkóÍ7×6d±Ÿùâ‹/ŒÒ<þøã€T—ÌÛªU«Tßçž{®ö½OŸ>ÚÖ=÷Ü£s6aÂóÑGÆW²ŠÉÙª„ï¾ûÎÈjÓëß~û͈3'Ÿ|²iÖ¬™‘Õb†jÎ?ÿ|S£F #«E'ŽAÈŠP… HbdÏ=÷,ÔwòÖ¬YS?L:À@n¸á#ÖÃ\~ùå 2Ú°VìõêÕ« ¹À€¢m\®‹:7Úh£`©“B:àãÃdÿôÓO¦L™2¦]»v ±êZÅÚ±è:ùÄaèÅ]<ÔGۀʊX½dáŠÕ2›nº©ÆâèÁµ®Y³F¿Åú@²ûî»›qãÆ™Zµj±žF¬™æ=ýôÓͨQ£tåÊ•KŒ—‡ŒG<’æGW5R¾ë®»‰0„ â¡ÌC=¤ãÔä‰+YÅd )[¶¬A©®T¬XÑœqÆ 0b@â±@¬41Å:€wÞ9Q”raa%Z—¥–‹{›NÚï¿ÿn³úFA(Ú¬OÜ´&gRà¶@ àe²”/_^/±R‡z¨Zoâ¿7ÞXŸ»h“…f?DÔN!×´kë§¼¸=µX,b8,a‹§ÕÛ±pãêKþÿñcª{;ÆÁx·-;ž.]º˜¶mÛªgÌëW²YºFcgÆDã:^xáƒ+4h®D‰Áx eF™a‰}t2'Mš¤À¨S§Ž6ýþûï›þùǼõÖ[FâBMÄŸ%]c}^{í5uôÁ< îx°¾¿š!C†è3æWšJxƇüXOi\ÉÊ]¦j„ héÒ¥†X ¡sÄÄ€Š8ŽU%ÖxÀ]E¶\,.·AA:+É Á2>ÿüóÚ1 1nÈ^_xá…êv'  †Cñ]»vÕ2Qu1!â*+Ä›¸ŠÝvÛMÝd=ì£Ä7}ãÄàÚik€{%¦Dlžo¾ù&É}ñìé§ŸÖböìÙ ,”l´¯Œ‡¾^pÁê®þ÷¿ÿ©‹£ câeÓ£ubEYl²)Ò¼²Ððņ%”¹þúëÍÕW_mî½÷^/ó%ô—zX4ÌÖ‘&¶¸Û€»2Ø]ºùS]ËêÕŽÄ-‰,b û÷¯Ù_~yBœb¥>¯É2„ÀŸþ%»æ/õô~øðérŠþO†%}6² 10bÄr‚¿öUG(£GÏʰ¤ÏæA–!úö'¯kViî‚‚•¦ÿO2,é³ye€eËþ0“'—”sÌ~KöWRš¿‰Ö€Y´^’R‡ ›&¯†’UU¡B9ù‘ßçIùüM´’5§Ô§¾øâØBV« `•éÓgl©×M& ð K£¥E‹~3_}µ82×Ô©óåçÙÿþd<2“O4di@0nÜ\u•U«V2|6Ý´¢~sý÷ß«Íøñ_§©Á?ö'þ`àƒfk®þY#ÿ¨¢—üã—z_¶lÓ AáŸÛdPeiʲ"ç¿Â(‰Ú;昚:¬Õ«×ÈïÏÊ{_Çš1yw™­ú:“4àA–¤Ž¢oä'ïjÉŠÎ埆5àAÖH÷ü^eÍÿ£•"Tùȃ,R->1—ð ‹¡Mï.c(ËÉêAæ(#Ý¥w—é4ý܃,Z/>5‡ð Ë¡2}UÑð ‹Ö‹OÍ¡<Èr¨L_U´<È¢õâSs¨²ÊôG1”ådõ s”‘îÒa¤ÓPôs²h½øÔjÀƒ,‡ÊôUEkÀƒ,Z/‘©Äd|¼ÄÓ€Y }“ññOdñôåsg¡²JóG1”ådõ s”‘îÒa¤ÓPôs²h½øÔjÀƒ,†2½»Œ¡,'«™£Œt—Þ]¦ÓPôs²h½øÔ\jÀý‰su-Ìkœ&•¸ÐÀ•+×)qã²s%T?¹‚€[OA^þ9d\kÁ äå¿¡¸9_~ùå¼tֻ˼¨ÕWêjÀƒÌÕ†¿Î‹<Èò¢V_©« 2ÈRáÕΕ@VúÒK/™gŸ}V¹¹sUo¶õÀÆÙAJ,ÈàÒ†Œ5`…KÒŒ92A )麀Å#"Ü Jó¼®ûM{ë dmÚ´1W^y¥©Q£†$v[ø$áí†a—)ÇDîgžy¦2ÚÂ^ Ý©§žªÓ.4Ð;ì°ƒö¦ZWà;oÑ¢…²ØÂj Ãí´iÓ”·šd¨ž…L6Q*h!Uºj»;¾ì²ËÌ#ûìc¦L™¢éÔå3äò={öÔ4Xr|ŸPAÓï‹.ºH êé/”пþú«R?·lÙRóÁéié›Y´c1ú]¶lYbŒëúb½ŒÉ@Él!«ïׯŸ>|¸¾ùæ›JG w9Â7ôÄL2œ˜_~ù¥’±¾ñÆZ†þî»ïjÏ\0Lú'Ÿ|bêׯ¯4ÓPKÓFëÖ­•S¼[·nÊÝM¹Ã?\ùÎ+W®¬„õLŽ°Öšzõê¹Õ*4‚¶šï‰'*]u÷îÝÕMÃß Èè{Ÿ>}Ôµ1æ &h_áÇõB—ÍB 8Úo»í6ß{ï½gf̘¡üéäµÏ¡›†~Ây@Ƹ?ýôS%¢oÒ¤‰éСƒö“c$øÏÝ’%KTOIX‡7ë dŒ±qãÆÊC_w£FL­Zµ ä X,ÖСCU|ÃŽõX9ðÕ•>jÔ(]á¹b%¢‹‰¥ãùÛo¿­Y`½…Tžr§Ÿ~ºüwé#4½S§NºúwÜqGµp–ÀUh—£ªÖúÚµk§,º”µ c×]w5¸lÀ‰…š?¾–PX2ÆG €ÛÞsÆM»,\³fÍ´/;vTk¼Ùf›é"dXaÏiŸ~ ¶¶-M\Ö+ÈŠ/+±aÆæºë®S+Æ=nW×»wo]µLü)§œ¢tÔÔ…U‹wdÈ!æÂ /Ôë™3gª‹dr‰ý°”×B ¯íؘ‹òÌ3Ϩ['O=Ô¥Ö­[××Q/2hÐ Ïô&Ã?Än´wíµ×šo¼Ñà&=õbÍ„È^ÛÆJ!Ä ®C6Ló¡bLâ° IòòZ©8L|\ÊOJúæøgC• Î]ZEá*‰ŸlðjÓ‹ú0Ò®pD‚»q…¬Ý¹ºéþ:?Ø`AfwVq‡mwz¶Ûþ°SEYp>Ÿ l°»ËÜ Ïײ!h /–ŒƒN8Kš”-[QvxäèÙÅ®=+Ictw­¹—'ðŠ¡Í'Ê»ËWåOSy—Z;FÉRu…w—1æò•+ÿ–÷¬ŸÄ(å³zeˆ%K äeõÍ Çåòå©K2¬²Ôdó ËpªžbìËò ÊË«œi–ôÙ<È2Ä@ß¾ŸÈ‹ú¿4÷Š«äUÖ¸ Kúld``þü¥ò›²%I9gÎ\(¿èXž”æo¢5àA­—¤ÔW_”tÏM¹reåÅôÚ_¶zè’4àA–¤Žè›þýÇ˯]“bƒëÄ…zI¯²4:š5k‘üÜgEd®ùó—˜ï¿Ov£‘Ky¢Y"¬;J>åË—K\¯ZµZ~ÁêA–F…ÆŸø§Ó<ÿý÷µgb«W¯‘“ÐQÎË:k)ù- ©Reã j(ÕYVäåÝeISiÕªkÈ{_ÒÆ™¯ñxwC³X®²e×þ45‡ð ‹¡Lï.c(ËÉêAæ(#Ý¥w—é4ý܃,Z/>5‡ð ‹¡Lï.c(ËÉêAæ(#Ý¥w—é4ý܃,Z/>5‡ð Ë¡2}UÑð ‹ÖKdªÉ"Õ’6у,­ŠþÍàc²uçʃ,޶|Þì4f–n˜¦ü'…Ê—¯æu“B7àF(#Ã*ÌHG"Ìl°£yñˆ£ø \ ‹w—aøûœkÀƒ,ç*õ†5àAÖˆ¿Ï¹68­ZµJ‰ès5R¸Á!)µ%ÜÞ©jeHäS âö3{ö줺S•É&=]?¨“qAü 9ä°qä0áYÜ:2É¿Áì—_~QÂ÷L:ŸIžÛo¿Ý,]º4‘€=õÔS‰ûðÅ¢E‹”Ç;œnïáõ†zÚ´i¦W¯^ʃ p®%]?„_Ó\uÕU C´ ¹+ýŠ#cÇŽUvàLÊÀû>kÖ¬L²Ê“ÕÿOÆfÙqãÆ)Ë,¬°°ÝBñ×¢E sóÍ7›nݺ)—$T€°ãò Še!Uâu”ÂnÆ[V”§*‰{ãÆlÙ²¥²åR7¼ÜíÛ·WúäéÓ§”L½Ôsä‘GêŠ<÷ß¿&ù›o¾1Ü%ŒC¶ÜZ' ¹÷Üs2cE„Ö0 ôâyì©iÚ´i‚3&`˜„áçüüóÏ “ÁBiРiÓ¦RWSÏ‚ ÔòœuÖYÊ´ W8€… žºa†‹&^؉—-[¦L¼ .4=ö˜2 ³@¨÷¦›nÒ¾í¸ãŽ rúÍ4cF`òíß¿¿²_tÑEæÜsÏUZéG}T-ßž{î©uhfù#g†g0ó]qÅæ¹çž3#FŒÐ1Þpà ò_–~¯,ÂãÇWjì¸ {YY2†[cR 0†ˆžN®!U˜¾l€H0Ó¯¼òŠÒ#SÀ1¹®$ø.{öì©JÇMa•pMµjÕJŸQ®KK¶ á.»ìâVyMÔPFS?n‡¾㯺M&ŒçPE[²·²ýöÛOI顦faA/ýÐC¬ÛgŸ}&Ì%Ëu1Â1N^ÆÏ"¬_¿¾ÑÞóÏ?oî¾ûnÓ©S'µŽ¸AÛ8DZPä'ú6_íÏÔ©S ‹òñÇ×…zÌ1Çèƒ6¾vQ¿~ýtN¦L™¢ý¤-æãµ×^K ƒÅ  ©ž3gŽ.Œ.]º( ;vìh¨—2­[·6QÔŽ‰ŠR\deɨ‹Õ†Øzë­ «³ºpËèVŽŽ m³9äCtðvc}:wì“&MÒÕ 1;“3räÈBÝ„€öZV*+ †^ˆø0i€sÛm·5Í›7×òX=>H0°«9üA¤Ä÷–€–^ˆç±6XJ¸Á£&ÝJ•*)˜°ÈÁ"è„E78}ÁbÑOÜ ×èE†õxòÉ'uááöH336(‚õZ¼x±.(¼Ä˜1cT/:tP Úƒ_Áª³xXØ'žx¢ò˜&,$‹‹EœŠåƒ—«Ëœb•ы猓Ÿ —ùZmkwâýa²&,L€Ê„ÜÌG¡Ä6jÔHÆ ™,DïH*ÚcËÜ‹{á ±i\“ŽkI%˜¶¬Ð¦í;iŒ¸ Wb¿Ýgöš‰‚šzÝlêº!¶½(]1Xäyóæ™ZµjéDÛºí·í#÷¶Ÿ/½ô’ދŇ„J« ]kcû ÖFÐõ[l¡×ÌsÈÊÓ`çÃ\Ù…§²ø“5ÈŠj ¾oü6Ǫ!mÛ¶U‹FŒsðÁkàÌjc’ë^õÆùƒK`²-Ö¡ŒÝkЋ›Äbâ¦Y}nwˆX\6‚be“–NÈK¬è.Ú&wN,†k­Q£†)((P·ƒ faÁÓ â[bK…){T·ˆç@iuëÖ5èŒ{ô€Û®S§Ž¦cÑÐå!C´ß”ÃJc±Ñ ›Èš4i¢±3îÙ‚œdí.S5fÍ)à4h޼X7‚JÌ9q.7@ L¼†‹°dí¶”Mœ€°·Ýv›®V”׬Y3[ˆuÈO|ÅÆ`ذaæý÷ßW÷€[¾úê«àÔÔCÜÆuX¨Ã¶Ë3 ÷‡°ýäYÆ ùR7{ÒI'i|Ä}sq×,&&—È8^H%´GžîÝ»ëN‘ÉeV ›TB9Ú%κøâ‹Õ°èØhT—…È& „å?î¸ãÔj¡b;b8,3‹p…ºð&xb;a âBÆ„e!§½ð ±©µ ýë˜Z‚E×ô§lQé˜s‚t@`×€…pÈ„àîˆGˆ1xà›Ýüñ:`ê±nµoß¾Z±ƒ·«,Q(ÅÀ$¿ëJRd-V2ãúç¹ -ªRÂŽ”1b-°fÖµUŽgXOÀdõcóêµnѦc…ÃûÌýŽÒm¹¡Š›ŸkʰÙpÃIÎϱΊ`•°Ër%<`ž±z·ÜrK™›×^Û•fïíw\°`YÖ…dâÀ8‚›³ ÁeòÉT˜ô¨‰O¥ŸLFÛQúŠj'“~æÅ’ay$ÊTXÁ¸Lw ¬Æ°²ì΋X,•Øs4\Ç«©êÌ6ͱý(é’Ê’å%ðçÈ!ÀP>«×ia€‘¸R ×ËùY=4ž нæšk‡””_WbOÈqeXõÒ,™Ûåÿ€–ØE<û쳉޲câ$œ\ÔIøÓO?­:»A¶öwÜq‡¹Qoˆ“§áûîv±çc¸veìˆ9°¶;ÝTo!1)à²Ë.Ó3ÃÄJÀE^,ÙúÒ G œ5¹R³fM=b`KuNÀÍ;9vUä:t¨zuNp ¨/½ôRóàƒêë!\£=!g'Çi:’ê/¹yUÄÁð€4oIúS¢,´=° OÖ"ê$œ|¼½àÀ”m¾ŽðÛÞ»†OÃçΫ֓0‚EÃí‡OÈÙAce£ÞpVÅÛÎ9Î(iR¢@Æ+^Õ¸Âk^ïpväÆxö$œ¼ö„8Ò= §»§á”ã, ió‘FQoŠÝc¡LÚ§¾’ %Ê]Ö«WOß³}øá‡:7ìN9ØäÕKª“ð8“uNLÆ’×Bœ‘ñúŒØ qOȳ}#§jÞeÉøõ/Š9­ç—ü‚—ÂQ'á቉:@%¯Á§áìt/Ò‰ÏxÓÁA¬=!'ðG(ß\NÏÓ½ˆj?ÜÇÿÚ}^ÎÉ6%àÚpO®+£_©NÂãô9ê4+ÆŠÛ^Ô y6oâôm}æMuNV¢,™«`{‚î¦qíÆeág™ÞG†sÒ–ð¹ϳy#®÷¿v_¢b²ÿšòKK=ÈJËL¯Çqz­Gå—š¦å¼&Iüÿ…áÿÖÿßGÔÿ…QhwYjV—èºÒÀ ï.וªKq;d¥xò×ÕÐ=ÈÖ•¦Kq;ÿ71ê î’ÔIEND®B`‚mysql++-3.3.0/doc/html/refman/tcp__connection_8h.html000644 000765 000024 00000010541 14042362132 023223 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: tcp_connection.h File Reference
MySQL++  3.3.0
tcp_connection.h File Reference

Declares the TCPConnection class. More...

#include "connection.h"

Go to the source code of this file.

Classes

class  mysqlpp::TCPConnection
 Specialization of Connection for TCP/IP. More...
 

Detailed Description

Declares the TCPConnection class.

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SQLStream__inherit__graph.png000644 000765 000024 00000007164 14042362133 027440 0ustar00tangentstaff000000 000000 ‰PNG  IHDRwRnXKsRGB®Îé.IDATxí ´UóÇwÓ”Y†(% %™_%cæe^¥A ™–©•R-2$Ã’’%$,Ã2d‰J©4ˆ•X$DÔÓüûïÏîÿ»ë¼×½Ï=×Í{×zïœ{Îïìóûý¾{ïß>ç¾·¿UœŠ$ɨÉQ%ƒ²HÀ°!$àFÜêaÆöÍ7ßÈ?üæ’¤mg`¯½ö’&Mšd­1¸ÅÅÅÒ¼ysÙe—]²¾AÒ0?3°råJY¼xq(eIX5]•«qnåÂ+TopCMWåj\®à~ýõ×B’¶µdõêÕ2eÊ”­¥¾ÂëýOÀ9r¤<þøã[LÆK/½$¯¾úêÇÃøüóÏ¥[·n[\öçŸÊ{ï½·Åñ\\}õÕ2{öì\.-¿kxý˜­Ì™3ÇýöÛoe6× p………®N:îÚk¯u_~ù¥Ûm·ÝÜ®»îêÆŽë&Mšäš6mê9äצMwï½÷š¾SN9Å9õfwúé§Û±©S§ZÛwÞÙ)xnýúõî×_u\pé<í´Ó¬?|°«Y³¦»ë®»Ü+¯¼âºwïîŽ<òH÷üóÏ»sÏ=×twÜqî†np{î¹§kÛ¶­ûý÷ßÝÚµk­m½zõÜUW]åN<ñDkûôÓO»ƒ:ÈÕ¯_ß=óÌ3nÔ¨Qn»í¶s´ûì³ÏÜgœá.¼ðB׿÷Ǹ‹.ºÈí±ÇvüçŸ6<òˆkܸ±éQöcÜŸq4jÔÈúpß}÷¹}öÙÇsÌ1nùòåÖ&Ó/îýÈ„iœ ¸gu–{ê©§Ü¢E‹Üa‡fàÞvÛm6±Læèì>øà·ûî»§ÀíÛ·¯ûñÇ>GHô«U«VnÈ!îã?vÍš5s&Lp>ø ëÒ¥‹Ü±cG§QÁŒ†¶«V­²Ïî‰'žp}ô‘ÓçB"Ævå•Wº… :}œscÆŒqo½õ–;öØc­ÄŽ;îè4”»Úµk;].Æ@ÿý·;á„Ìp0@uEwýõ×»ï¿ÿÞÝÿýî¼óÎs_|ñ…|É%—Xß0ÈùóçÛqöÑ~øáRË–-­óæÍ3g`eI.à†zÎÍ&¾¨UÊ< <—½þúë²ï¾ûJ­Zµ¤Zµj¢Ö)jÙróÍ7KÕªUE=/¥R½ µß¯_?ùå—_dÉ’%¢ÖnÇÕ³äµ×^õp4hÔ­[Wt‚åˆ#ŽiÓ¦‰j÷¡±z¾(²`Á‚”Î*Uªˆ™4hÐ@ÔCE‘¥K—J=D½Tn¹åyùå—E#€pÀÒ³gOéСƒ…âm·ÝV¶ÙfQð= –¨‘Ù˜Þ|óMQÃHÒ°aCyá…ì=}b½Ÿ;w®Íï_Ôè¥E‹67\{ÔQG‰vª¯ùÚÉûš{Ï=÷ÈM7Ý$“'OõRÈwvÙ²e6p€E˜¬L›0&Ñ˦M›dÆ rÎ9çÈsÏ='è:餓dôèѾIj«!µÜQ´Õ«W'b‰z¡¢K‡pÀ{ûí·ÍÈ4¼Ûqkôÿ_ºÄ°|ÄHÐ…1ï°ÃfŒ±FÑ%I42¤îAûýöÛ÷Ö~”wpO>ùdáç7ÞvíÚ¥²U]/ÍZÿúë/ÑP$Xòĉm üÂÒÉn5´Ú>ÖÍ„}õÕW¢!Mt½6½xm4ôKŸ>}äý÷ß7è+¼ÊC/ êZmŽ]|ñÅf ~ø¡EÿÊ5Ý=tý5½ãŽ;dÿý÷—éÓ§‹.9ö&O×]óxÆŠü×’÷°|þùçÛÀðÚuëÖ‰®Gðe—]&­[·MzDÁ{­x Ò¾}{Ñ5N6nÜ(ºn‹&zØž}öÙ¶¯k¤tîÜÙŒÁ÷ý„uÍdĈ¢É¦-E¼¢E7¡—qjò(º6gêŽÝ7¨3cð'ÊZÄKŸË&¡â2Æï¾û®Äå$*VíÉYo6²fÍKÎÔ»RÍIœÈƒÇÔmÃI?\;nÜ8GFí…„ªô“v&!ÑRMVƒtº¦ÛgôkJËe'—„*ïÙr./¯k4ä;õTË„uíuš–WWþñ¾¹€›÷°6r”g{Ö\2fÞ”‘é’)GIb .@òˆ¦/A¢„ij,yÏ–Sš“rŸPž«¯à졼Ü{C6lؤÏÞK¥°°ž>žTËACù_BVFª°’‡¹ ²¶6­HŸ_‡É¨QÝôy¹ieF¨~Ç&,3SŸ'EØÆEbîúõeܸyú&ÊihæWø·Y•Ñ bîĉ ôMÑæ¡T7 +#Xaû pGž®ï£×ÚܬZµF¿l˜vž*eûȃ[\¼N¿ˆ(*Î'Ÿ,Ñ÷Ò›¿‚+q"b"î;ïÌÕGŸ’O|¼Ì;vNÄ Ür8‘÷Ùg ÉkJŒ¼¸x­p<êipW¬X-sæ,M‹aQÑ2ýÂeÚsQ9ipgÍZ¤ß)oÔ¿¨i?µk×HíTÓ/Ö·ÞŸÕV‰üª)SÚó-“ݱãýr¿»~Y°Ù¦Û´ÉþŸª*XaûP2Ó{u%h_XØ8Õ˪U«è_ƒ4I=ó¦NDt'Òa9¢˜e=¬X‹çò~9.+py·ïÀ6›o¬À‹ÇúqÆ Ü$,{Ø#¸MÂrAëb–ãrn„OÀMÀð Dxh±òÜäQ(–œ< Eܸ -Va97Â3À7BÉ·B˜o„’o…" n܆«57yаy'B7nCKÂr„¸IXް%ÇnhÁêVZŒÓÊÍê$Dr[«V §eø"960£žuPJüÇ•V;uê$]»v‘Wökýh+(J¡Q/±Zsý ã²MÀ0Ò ¸·Äš[ÆIÝävÚI¨Fž¡æ3¬"Z®×ªž«³Så\yì…==ôP«}Lg hS¢¾´”¥¯tÛòþ\á<÷Å_”O?ý4/ógÑW\aUY1šë®»N”ÔÂt“€PÝ­ýlŰáS *;Ç{ì±-úP–>8(ú]‘$´çRvžòðX6VL%qˆ*à€ B™DŒHB™8DÙHŒBFDi`¬d=žC;H"(=·UÉ©žJÕr/ð @þÀ„R`à `)¥KUu*’ß~ûíÆ!@eòÞ½{[Ås¿O?©€î9‡ ¶PÖÑBßÖzò7Þh$ž‡À÷Åo3é:t¨(ë‰õrއzHjÔ¨ae~©O•tˆ;”’G®¹æSG›™3gZ5vÆÍX”ªÇª¾SJÿ裶(Â8!¸¸õÖ[í³ïK6ÛО G7ïÕ«—(? 6ÌØF”šE`êPª?~¼Ý¤r “É@”ŸGN=õT#ŠB%ìï¼óN+•G:½¬X±ÂÂ)eó!lzòÉ'í`CDÁgÂç¬Y³ì8eu=…ß§œ¾rñ#ÈÃ?l¤ÊedÄTX”(-L™L—™ôQ Ÿ2öDx+„”ö>|¸5pà@3VŒvÆŒvJçóèÂ< 8 1`À#»"Š`œ {IhpéVFÝ~H&Øú}jüÃæAG ŽÁ°\¼‡Ï“Šu/°¯À¡žŠøãó|=v¢Ô/Â.5¼EÊ>fKý‡³ŠàaBa ±Ê$™ô•nÏœ°ÌÐ_úˆ7²´°œ`È0±ôë×ÏXVHâ‚RÖÜÛe³Ÿ¸ÿ¤@YcáÂk!OR‚[S™d¬Þ(hð<ÒÓ»uÃÑ- eê±~B>B¨å:¼ËFÐ…w÷1>Ba‚9Ær‚7ÀIäõ°.Ã3tæ™gZ[*Œÿ¡™ôÙú‹¶AI…ȳ Tp þôÓO–Ôap—_~¹}æ^[C2Ç îæéSŽ@;ƒ@ÁÂÚC²ÅdÂÛàáá!d²Nù¼¼Ê¼Š5žãLdNIØ#Ñ@ØÂãƒN¿{†¤´p%ˆ¤ 02¼‡u#¤DFHàGòBB—Im0<îK2çûÏqúïÙΈj¬ýD»ï¾Ûòå´ÈA²V–u–Õ.x®D©":A6ùoß-†.½ôR#vò¬^L,‰žÌ ½À’é ç`m$g}¥½"ªwß}×&$Ö½¾t[H¦ßéÚc@œ£_Œïó}H§‹céôa´ô×÷3x-:ñXîa!'óÄ3=û„ñ༯ÏfŸ%]Jþ˜jžWÏE+Ù,Ù™¢–ã *ÝzV:c¥mPÒÇŠÓ¼.¸Ïí×éàqöI\¼ø°ï?gÚ¦Ó8é€EIË@PhëÛûmð|>öó.ÄŒ„¬(Œ`qÁA*…iÚË!kd"ùçÈ;¸¬[a¥›¥=Ë?³–B:O.Ý&ù¼y¶J¶œLn™à7÷“#þ—:å‘ý+ ÆVú/1JdËÄÞ’näi’°œ§‰¬ˆjp+"*yêSnž&²"ªù^Â2­›b5IEND®B`‚mysql++-3.3.0/doc/html/refman/hierarchy.html000644 000765 000024 00000137012 14042362132 021441 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Hierarchy
MySQL++  3.3.0
Class Hierarchy

Go to the graphical class hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically:
[detail level 123]
 Cmysqlpp::AutoFlag< T >A template for setting a flag on a variable as long as the object that set it is in scope. Flag resets when object goes out of scope. Works on anything that looks like bool
 Cmysqlpp::BeecryptMutexWrapper around platform-specific mutexes
 Cmysqlpp::CommandLineBaseParses command line arguments and holds the results
 Cmysqlpp::examples::CommandLineCommand line parsing mechanism for ../examples/*.cpp
 Cmysqlpp::ssqlsxlat::CommandLineCommand line parser for MySQL++'s ssqlsxlat tool
 Cmysqlpp::Comparable< T >Mix-in that gives its subclass a full set of comparison operators
 Cmysqlpp::Comparable< Date >
 Cmysqlpp::DateC++ form of SQL's DATE type
 Cmysqlpp::Comparable< DateTime >
 Cmysqlpp::DateTimeC++ form of SQL's DATETIME type
 Cmysqlpp::Comparable< Time >
 Cmysqlpp::TimeC++ form of SQL's TIME type
 Cmysqlpp::ConnectionPoolManages a pool of connections for programs that need more than one Connection object at a time, but can't predict how many they need in advance
 Cmysqlpp::DBDriverProvides a thin abstraction layer over the underlying database client library
 Cmysqlpp::equal_list_b< Seq1, Seq2, Manip >Same as equal_list_ba, plus the option to have some elements of the equals clause suppressed
 Cmysqlpp::equal_list_ba< Seq1, Seq2, Manip >Holds two lists of items, typically used to construct a SQL "equals clause"
 Cstd::exception
 Cmysqlpp::ExceptionBase class for all MySQL++ custom exceptions
 Cmysqlpp::FieldClass to hold information about a SQL field
 Cmysqlpp::mysql_type_infoSQL field type information
 Cmysqlpp::NoExceptionsDisable exceptions in an object derived from OptionalExceptions
 Cmysqlpp::NoTransactionCompile-time substitute for Transaction, which purposely does nothing. Use it to instantiate templates that take Transaction when you don't want transactions to be used
 Cmysqlpp::Null< Type, Behavior >Class for holding data from a SQL column with the NULL attribute
 Cmysqlpp::null_typeThe type of the global mysqlpp::null object
 Cmysqlpp::NullIsBlankClass for objects that define SQL null as a blank C string
 Cmysqlpp::NullIsNullClass for objects that define SQL null in terms of MySQL++'s null_type
 Cmysqlpp::NullIsZeroClass for objects that define SQL null as 0
 Cmysqlpp::OptionDefine abstract interface for all *Option subclasses
 Cmysqlpp::CompressOptionEnable data compression on the connection
 Cmysqlpp::DataOption< T >Define abstract interface for all *Options that take a lone scalar as an argument
 Cmysqlpp::GuessConnectionOptionAllow C API to guess what kind of connection to use
 Cmysqlpp::NamedPipeOptionSuggest use of named pipes
 Cmysqlpp::SslOptionSpecialized option for handling SSL parameters
 Cmysqlpp::UseEmbeddedConnectionOptionConnect to embedded server in preference to remote server
 Cmysqlpp::UseRemoteConnectionOptionConnect to remote server in preference to embedded server
 Cmysqlpp::OptionalExceptionsInterface allowing a class to have optional exceptions
 Cmysqlpp::ConnectionManages the connection to the database server
 Cmysqlpp::QueryA class for building and executing SQL queries
 Cmysqlpp::ResultBaseBase class for StoreQueryResult and UseQueryResult
 Cmysqlpp::RowManages rows from a result set
 Cstd::ostream
 Cmysqlpp::QueryA class for building and executing SQL queries
 Cstd::ostringstream
 Cmysqlpp::SQLStreamA class for building SQL-formatted strings
 Cmysqlpp::RefCountedPointer< T, Destroyer >Creates an object that acts as a reference-counted pointer to another object
 Cmysqlpp::RefCountedPointer< MYSQL_RES >
 Cmysqlpp::RefCountedPointer< mysqlpp::FieldNames >
 Cmysqlpp::RefCountedPointer< mysqlpp::FieldTypes >
 Cmysqlpp::RefCountedPointer< SQLBuffer >
 Cmysqlpp::RefCountedPointerDestroyer< T >Functor to call delete on the pointer you pass to it
 Cmysqlpp::RefCountedPointerDestroyer< MYSQL_RES >Functor to call mysql_free_result() on the pointer you pass to it
 Cmysqlpp::ScopedConnectionGrabs a Connection from a ConnectionPool on construction and releases it back to the pool on destruction, and provides access to the relevant Connection pointer
 Cmysqlpp::ScopedLockWrapper around BeecryptMutex to add scope-bound locking and unlocking
 Cstd::set
 Cmysqlpp::Set< Container >A special std::set derivative for holding MySQL data sets
 Cmysqlpp::SimpleResultHolds information about the result of queries that don't return rows
 Cmysqlpp::SQLBufferHolds SQL data in string form plus type information for use in converting the string to compatible C++ data types
 Cmysqlpp::SQLParseElementUsed within Query to hold elements for parameterized queries
 Cmysqlpp::SQLTypeAdapterConverts many different data types to strings suitable for use in SQL queries
 Cmysqlpp::StringA std::string work-alike that can convert itself from SQL text data formats to C++ data types
 Cmysqlpp::tiny_int< VT >Class for holding an SQL TINYINT value
 Cmysqlpp::TransactionHelper object for creating exception-safe SQL transactions
 Cstd::unary_function
 Cmysqlpp::TooOld< ConnInfoT >Functor to test whether a given ConnectionInfo object is "too old"
 Cmysqlpp::value_list_b< Seq, Manip >Same as value_list_ba, plus the option to have some elements of the list suppressed
 Cmysqlpp::value_list_ba< Seq, Manip >Holds a list of items, typically used to construct a SQL "value list"
 Cstd::vector
 Cmysqlpp::FieldNamesHolds a list of SQL field names
 Cmysqlpp::FieldTypesA vector of SQL field types
 Cmysqlpp::SQLQueryParmsThis class holds the parameter values for filling template queries.
 Cmysqlpp::StoreQueryResultStoreQueryResult set type for "store" queries
mysql++-3.3.0/doc/html/refman/stadapter_8h.html000644 000765 000024 00000011336 14042362132 022051 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: stadapter.h File Reference
MySQL++  3.3.0
stadapter.h File Reference

Declares the SQLTypeAdapter class. More...

#include "common.h"
#include "datetime.h"
#include "null.h"
#include "sql_buffer.h"
#include "tiny_int.h"
#include <stdexcept>
#include <string>

Go to the source code of this file.

Classes

class  mysqlpp::SQLTypeAdapter
 Converts many different data types to strings suitable for use in SQL queries. More...
 

Detailed Description

Declares the SQLTypeAdapter class.

mysql++-3.3.0/doc/html/refman/exceptions_8h.html000644 000765 000024 00000033034 14042362132 022242 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: exceptions.h File Reference
MySQL++  3.3.0
exceptions.h File Reference

Declares the MySQL++-specific exception classes. More...

#include "options.h"
#include <exception>
#include <string>
#include <sstream>
#include <typeinfo>

Go to the source code of this file.

Classes

class  mysqlpp::Exception
 Base class for all MySQL++ custom exceptions. More...
 
class  mysqlpp::BadConversion
 Exception thrown when a bad type conversion is attempted. More...
 
class  mysqlpp::BadFieldName
 Exception thrown when a requested named field doesn't exist. More...
 
class  mysqlpp::BadIndex
 Exception thrown when an object with operator [] or an at() method gets called with a bad index. More...
 
class  mysqlpp::BadOption
 Exception thrown when you pass an unrecognized option to Connection::set_option(). More...
 
class  mysqlpp::BadParamCount
 Exception thrown when not enough query parameters are provided. More...
 
class  mysqlpp::UseQueryError
 Exception thrown when something goes wrong in processing a "use" query. More...
 
class  mysqlpp::BadQuery
 Exception thrown when the database server encounters a problem while processing your query. More...
 
class  mysqlpp::ConnectionFailed
 Exception thrown when there is a problem related to the database server connection. More...
 
class  mysqlpp::DBSelectionFailed
 Exception thrown when the program tries to select a new database and the database server refuses for some reason. More...
 
class  mysqlpp::MutexFailed
 Exception thrown when a BeecryptMutex object fails. More...
 
class  mysqlpp::ObjectNotInitialized
 Exception thrown when you try to use an object that isn't completely initialized. More...
 
class  mysqlpp::SelfTestFailed
 Used within MySQL++'s test harness only. More...
 
class  mysqlpp::TypeLookupFailed
 Thrown from the C++ to SQL data type conversion routine when it can't figure out how to map the type. More...
 
class  mysqlpp::BadInsertPolicy
 Exception thrown when an insert policy is too strict to create a valid INSERT statement. More...
 

Detailed Description

Declares the MySQL++-specific exception classes.

When exceptions are enabled for a given mysqlpp::OptionalExceptions derivative, any of these exceptions can be thrown on error.

mysql++-3.3.0/doc/html/refman/functions_g.html000644 000765 000024 00000007034 14042362132 022001 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
MySQL++  3.3.0
Here is a list of all documented class members with links to the class documentation for each member:

- g -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1MultiResultsOption__inherit__graph.png000644 000765 000024 00000014034 14042362133 031464 0ustar00tangentstaff000000 000000 ‰PNG  IHDR—‰!Cª’sRGB®ÎéÖIDATxí ¸MÕûÇ_¹Wu+ h %I’E‘()" á)•FQ‰JÃSyŒõ˜EÉP™Ê $ 2¥B¤BI¤ Rdÿ×çõ[ǾÇ>ǾþGçœÛzŸçÞ½ÏÚk¯½öw}×û¾kŸ}ï7ŸgLœ9ÀŒŒÄ·éZtìEÀ‘Ë1á!àÈuÈ u Hß~û­œ~úéɺü⺇v˜üõ×_I»×¤‘ë›o¾‘Ë/¿\Þ~ûí¤Ý|^¾ð?ÿü#+™æÂb2ÑÏã×väÊãœÌÛsäJ&úyüÚI˹R×õë×˶mÛ¤|ùò ëÎÇ,K–,‘¬¬,©R¥Jè¶¿ûî;ùí·ßäì³ÏNX_’ÝÐÚsÍš5Kú÷ïŸ1صk—4nÜXÚ¶m+ëÖ­“Å‹ëç:Äm¿råÊBòÍêRæ%Kir;VZ´h! ÞåÙgŸ•råÊIéÒ¥åÃ?”7ß|Sn¸á†ÈxPwæÌ™òÒK/i½’%KÊÈ‘#õøÜ¹s¥lÙ²R±bE=gøðá‘ó>ûì3¹öÚk¥N:R¬X1yê©§ôØÝwß-wÜq‡Ð^hõêÕZÞ©S'™0a‚î_yå•òõ×_ˈ#”T‹-’gžyF $ .”_|QðfAmÝsÏ=BýúõëËæÍ›ï… ¹úê«eÞ¼yrî¹çj#ôBñt„grFkAm‘?ÑFÓ¦Mµ –š5kª·ãÑ î'Úl¿£ËSê3/ &ÃŒ·ñÌw‹ ¹´™ížIæs´eVpÞ/¿ü’£Ì –gïá‡öL29f¼wÉ%—xÆ»y&GŠ”Ó?“@{&¬zÆãEÊãí˜Ç ÞªU«r´CýXm¯åѯh3 þ~mD׉÷™þšT"^•C}lzÚz.;Cñ6¬Ö®¹æ[¤Û 7.lÎ’£¢ïCff¦ðm'Ÿ|rtQÌÏä†,bYt[äOAý²^8V;éPžú&££„žÙPs°} ÷áyPnŒÐ xŠŽ‘‡ñ8Â&ï¶-ò¯Â… KÁ‚mÑAoÙV˜NØ·"Ø&Éf¤½çÊ-±Oç7¼G4±8ÎsªDY"ÛJTŸu;i¿Z<Ô¹ö¤…Åt{5##Ëäc§›GËÓâ”Hò›¨Éû뎒î¥ËÏС³L˜¼\Ö¬Ùœ6}Næ+ÎÛ…EPa£F}dæÈŒ‹+M)ñ¯ÂѸA_0•-#„ÒæAêã©ÜMÕ‹üñÇS¢)A.TÅÐ-D×ÐÙÁ#€šG©b.,¦ÊHäÁ~8råÁAM•[räJ•‘ȃýH‰œ+ ®ˆ?ùE¨QGÏ0·ÆâaÛ¶m*ÈžÛsƒê#=üÞ{ïÉ—_~©rÅH[ýë úþ2TaÑT<ûì³ýÅyf?m<Ê©ˆ^""Nâ &✨åÆfÍšBÏÍyAuÑÍ®ZµªôéÓG ‹p'BïV-6èÊFFM ‰š%K–Ī–þåæá`Òí£>òÌj1n?æ4hGê˜å¶gÔÆThÓÈâ©X¦QójÕªåï¤õŒ‚«g¼‚gʽ֭[{gÕ{Ϩ¹êñ‰'zFÑ3^Ð{á…´ áNCbϨ³zuëÖõŒ4±gä…ußÈk¹2׺FÅÕkß¾½îÛ_ï¿ÿ¾wä‘GzÆ£ywÝu—wûí·{fçBy_}õ•g„Ýõ>h{üøñ^×®]õÔAƒyF‹Ñ3^Ï8p –Ñv»ví¼R¥JyeË–õ/^l/¸5ÙËÎÎ<–„Âéiã¹ì4FKºE‹R£F U°G³ÿþ*¾`ÁUºþùçµ:ÒÆTNñx~mkÂ,j÷œ‹î£Q••+WJ¯^½Ä ¦µW)^¼¸ 2Äü_Ô¿dæÌ™Ò¨Q#yýõ×eäȑ³$3Øb`m×t{ñÅ ¡’gÔjÕ;ái —\Ë(ÔªÖ#m5XÕÝÆ+wîÜY ñeÀ€Ò½{wõÈhIÒo£V+ÈÓ—t²´#×UW]%õêÕS‚â–.]*Ó§O—N:©B+ƒ6oÞ,„-3ûu`ŒÑr;8ÆÃ¨P'¢çˆ®£Û zôè¡úÕÆ“(yUÇÐɾ馛òëñl‚B$¿«‚è(†ah^“ƒ¡{M?WÓ7Z7œF. ùOG_›k̘1C3ájÒ¤‰^3rRì¤MBo±ÄkYûâ‹/TÜœ>î¸ã´qtÄÝ?€¶ÜžË9€XóæÍ¥B… òÐC‰Ñ¼––-[jndëû¥‚ÿ4aF:†7¶ÕÒ"j冭H(‚ê>Èðr¶ÿ÷÷Õ^×^3èüT-K;Ïe4yš,[¶LWZuêÔ‘)S¦è¡ &ÈW\!+VTâêŒ0ºù×ÞÓ´ÜžDޏmÛ¶rÿý÷Ë»ï¾k„£þ¼áÓO?­‰bÙ­·Þ*¯½öšöƒ:¬üz÷î-&Ï’üùóëisæÌÑ-ýkÖ¬™îóËä‘}<õLŠùóç«÷ŒTHÓ´ñ\ö#ЦÆðJ„† jØ!ìuëÖMÃÔ[o½¥¡ç©§žÒœˆ•aB>Ú2 »†¹råÊé9¬<ù ÂðCøâõɵ¢6 Î?ÿ|ÍÏðL×_½æU¶>+ÇI“&)qì£ò'V¾M›6Õjô¡fÍšb’v%¨Y(hÿlvk1°ŸS~›„UÄ~— ³ZÜ豈“@{Æûä8ªÍ,ù=jr”Û[·nõÖ­[g?ê–¢yÄ¡û[¶l‰y®=ÉxFÏxÑÈ9¶Ü$ûžIÆuEkBµ-ÖU«ñr‘ÏvÇ$øÞ¦M›ìÇ\oSmµ˜6ž+Ì,%жB… éê/ºÜ~&'²y‘-;þøãín޼-Rµ“™™÷A¨Í¿ìiäO6—²el=öXÿÇ´ßÏSäJµÑ0ÏÑtEšjýú·úãÈu‘6uaë©ßtÚ®SZ×Ôð\¼…Êò;•WCYæMÔÓÍcåqO$›RÅŠKv"×O ÏEÂk–F)ý3tè,9ê¨ËeÍšÍ)ÝÏTyņ¥¹"TOáQ£>2Oô ÈĉN‚8ì09r…@jýú­²nÝ/æ þn3Æ)Ć€L«8r…@jâÄE‘LªT)|¢+)ñÝbªŽEffAó†è™Ú½µk–¬¬}ŸSµÏ©Ô/Si4òX_¹B(oldd8‘ƒpi5G®h‘š²JtG®ðX¹š¹DÀ‘+$`.,†ÊWÍ‘ËF¼]ã¡|Ì‘+Wš¹¢k"G®`\\ipäJˆ®‰`¹‚qq¥ @À‘+$ˆîQDH |Õ¹|`ÄÛu"â¡|Ì‘+Wš¹¢k"G®`\ö+%çâÇYx¹BbEÎųð8r…ÇÊÕÌ%Ž\!s"B嫿Èå#Þ®{àcŽ\Á¸¸Ò àÈDC嫿Èå#Þ® ‹ñÐ >æÈŒ‹+MfFFÌ(žò Çý`‘‘é.\Þa€åŒÕ¹ü¡¦çø‹kät‘}»å–[Á[ׯ#:ª¢Xh,YsaÑ"á¶ GÀ‘+áº-Ž\ ·M8)G.d‘òM„©;A÷ÚoèU#Òi¤çüÅ9ö?ýôSöô¢gçÆõ|ÚàAQD@aôí³Ï> Ýj·È£çˆ³I¤C‹¸in®ªÑ€J)G®±cÇÊ’%Kºšû"ÔY­0º=ûÃ?T=l”fcæÈ¿ùæ›2yòd­†þ5$â¼Áƒ+© ÖÔ©SU²8Yc]'ºAuÄܱ;ï¼Óü碫D>3FïmÅŠ*Äþ /¨º-ĉe}úôQñÑ;vÈ¢E‹bUKXyŽÕb˜VgÏž- r¹€Ý At¥1§Óh<£‚ÊLlÓ¦pS£GÎEÉ‹zˆ#‡’j‰%T¶µWk ì矮 ÷È#@^­Z5ýÌ3Ï”yóæ©&õ#! ¡tŒ4À(Óê>¿î¸ã}1ñÑGU’Dc·zõj)Y²dbqºÞ&»ZµjéØÜsÏ=‚À)¢íÄ…8½zõ¼ ᕱAD¾}ûö‚`=ã`,×äâ"¨Ø&7ÃÖîRåÊ•eÆ ªD ÑŽÆ› ÿ ñRâ•/_^Û¸ä’K"jöþ›¨^½ºÖ§ ܽ =èH£f:Àc<›³J«þ}´°Qòb†ý³:ÙþkEïS'+ ¥²L)X°`ŽÃÌrÂ$÷G~Ù .¬•Y®ÅgÈË@8 o.`p ã\¾ËÄ«aɃò<#©¬“™ö£±ã÷A_íµô‰Ò¤I!…ˆ“o½‘eÖ²Üþ:(r1«1 ;;;Ç5qÙU«VUðˆÁ 8PÁä¾}û*Ù1·=€”û¥zñ,€á/§ Ïp £„•9sæh‚ê3[Ó¯DÅ+1@„!þüê!ñ’<&EèÙ³§œwÞyBHè·Ë^/Þµƒ°ë¡llñ:L^,vzð¿˜ðØÞÝzg&Æý„](Øvìö ÈeO޵e0ɱðÌ<ÂyÀvîÜY½V•*Ut†s3x$rœh,bÕªUêA¹Þ‚óðZ§žzª–á-l2ëßç ³r­\¹RÎ?ÿ|­Ï/žëÒV¬Ç3rH›°Æ¤b0š7o.„!Â&äçž›5k¦Œ  rmÒúL8 2®„é•ä]–¨|»‚^ݺuµ©XØùï‡~"Éq¤‰²‰jˆv¬»…8„„Fió è!CtH€f†qs­ZµÒ%¾)þv’mVnäx´Ï,"O`P˜u¬1¶ Ð6í>õù!„r=H@h­R¥Jš;¬æ£=Æyô\éÜsϵÅ[¼!\Ïš5KWôùæ›oÖÅ“Œ¤Ÿ-á†Äóù±Æu1&÷ѵk×ý°#b@X~êׯ¯á\ð,$° ìh“|„ãZô±C‡:ÁéëwÞÑãö—í“ýv›ã_…ÓYVEÿß7|øðˆº=3Œ™Š'#tZc Öý÷߯"1ǘ•ä õ-ùj×®­HÒê«¶½ƒÙ–üáÁ߯Î;5WÁ#…5–>û5®Y,p Á!ðÞ^ƒIÈýsß±°£.×âù›MU(‹…ÇðTþI×!_&7=X"ñÝâ°aÃä /¤I,ñÿ*œÕ3ƒ3Õ³­T©Röcdë€H¡o'è8$ŠX\*±8fW ì‡5<@´1©¢ÍN˜èr>Cf{<vÔ ºåXvÑÄ¢Á>žás¢l_ŒHP‹,‘IryÖ’ãyŽ“óUAöúë¯+ðAÇ\Ù^ba÷oã“práæsK,n:zFÅòA³ñß-Õ¯ »»ß‡dµøoß„»^Š"`V{Ͻ‰êÞ4󦩡p\|Ìc—ÌÎô«Åå¿ëVz"0Ã…Åô¸´èµ#WZ SzvÒ‘+=Ç--zýkjœ> ‚SIEND®B`‚mysql++-3.3.0/doc/html/refman/bc_s.png000644 000765 000024 00000001244 14042362133 020207 0ustar00tangentstaff000000 000000 ‰PNG  IHDR€_ kIDATxíËkQÆÏ¹É̤I&“¦mš&156*nÄ…”ܸR,4 +Hµ(U­b”ª1‚ŠˆJ.º(E·mßúhëJmKS'C›(‚èäÑ…¤ï &äÖþ ‡ïrÎåü3gö(z÷ýÒ&_9ó}’ÕŸ@‰mÚu ` Øh`ñ÷Ô¯  „ú&·ññ×Ù~“½—Üò‡ÎÝÑM4¸%‰3²§?Êêh)€ÿù™\ÄYi>Jb @gûßiÞˆú²Ñkg§ãê\è½­šEUæv+?E€î"pæÖÛB\ƒY&ðØó$vM+ê’Dn¼)}òþ:§Xoâ ƒ3ŠÚ¯'¯¿.‚fÁ0ìuŠ9òLýj€f6¸%«3Gf”Ô#Ôsm(,ùÃk*Ê’³Jª…¯¼JË¢o䆔¼u_~ °r]%%mnu]z°r5[ÍÆ°«Úò•Xeµ’†Iù<ÈèÐÅg@IÔÚÞàµë3‚:/<JÇ’ÐQ) ñ¹…tÚß÷(Mû\63éCgl!ýí;ÿ¸4Ùhâñ=÷Zë29­w’ÝÒ´·ˆV;ÊL3ƒj&7©·º½÷a!I†)ëë$-öÇÓú³›‹7tIV¾VàñÔübf¨8¡ÈƒB<﫵imnÿœÈ‡„ lߣù‡ÛD —#É5“­'Æ4?쬲øM’™›°»g¬‚|5Åçµ½GNdÓÐr|ô”Ã&„ì"7+'³@ 5‡G➑Džâɬ^;õã–.3Òr"ý_R³¿Â@²oI¾å$IEND®B`‚mysql++-3.3.0/doc/html/refman/nav_g.png000644 000765 000024 00000000137 14042362133 020373 0ustar00tangentstaff000000 000000 ‰PNG  IHDRô1&IDATxíÝ1 ÁOHf„á_ ->~¸åM iËMèÀƒS½ü‚<IEND®B`‚mysql++-3.3.0/doc/html/refman/functions_func_z.html000644 000765 000024 00000006164 14042362132 023042 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
MySQL++  3.3.0
 

- z -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1UseQueryResult__inherit__graph.png000644 000765 000024 00000016026 14042362133 030603 0ustar00tangentstaff000000 000000 ‰PNG  IHDR™‰?Šš!sRGB®ÎéÐIDATxí”EÖÇï ¢ bN¢ëª¨»‚"b«bN» GD]1'Œ»k8æˆ8KTÌ¢HXD KÔDÅ„Ž:#"¡¾û»Zïë÷¦ïõÐp¦î9=¯»ºúVÕ­Ý{«çÍüËœŠ (*ë”NwÐ,ð‹ÈJn²’›84 äd^FE~Ž`ƒ•ÂÀ˜1c<¤ø¬Èòd 2¹é¦›^8‚ ª…+¯¼RdYî; dYwÂE°@J KÉAM~ å·M¸“’ÖNIOjj¦N*›o¾¹l½õÖ©èüé§Ÿ„\sæÌ™Ò¨Q#9è ƒì³å“'O–-·Ü2•¾øq­¿þúUrúrðÁKýúõ‹éVµëŒ1ÂÆ_·nÝjë¨Îƒkœ'»ûî»eäÈ‘ÕK•gæÎ+-Z´ûî»OÊËËå•W^‘8@žyæ™*u}À:ï¼óìrܸq2þ|k¥>ý¸fÏž-gŸ}¶‘qúcÑ¢E+¥?ßÃ=zônݺÙíAƒ ‹n•Kt¯yË-·8Ý]F‹ªœ?ýôÓÎrûí·Ÿûýïï~øa·Ûn»¹vÚɽõÖ[öü½÷ÞkÏýøãnÏ=÷t_ýµ»üòËz»~ï½÷ìþ<à¶Ýv[wØa‡¹£>Úéjwýë_]¿~ýœǵk×Îê7nÜØ)@ì™}÷Ý×uêÔÉm±Åî”SNq•••V~ä‘Gº>ø ëüÌ3Ït—]v™•ù£Gvl°Sc»8]»ï¾»«W¯ž»ùæ›ÝÕW_í†ê~þùg×±cG·É&›8î¿ñƦîÀ4ý[mµ•;äCÜ·ß~kå=ôkÒ¤‰ÙE'ØÊü¸Þ}÷]³•ïÿTpÛX,Xà>ùä׬Y37gΧ^Ø5mÚÔm¿ýöîöÛo·êÓ§OwºxÌžûÛßÜ’%KÏ·iÓÆqÄN½¯õÆŒn³Í6s›nº©S€¹C=ÔæâÓO?u‡~¸Ûpà ­Œö>úè#›ƒO<ÑlÛ¹sgkëwÞq­Zµr]mÝ]º»îº+Z-ûF1WCšGP€˜W`ËÚ½{w9ùä“åñÇ8Q˜*Ü3®Y+ƒ5ŽœsÎ9¢“ è¹õÖ[­îÅ_,Æ e¦ Ÿþ¹è˳Ï>+x믿ÞîM™2E6Þxc™4i’|õÕW¦—Í›7BQô|âĉ¢Æ´2ÿCa«ùã?–8]j ùÃþ W]u•à éçþóQpˆN¸è“®]»š:¼}VàÊÂ… eÈ!ö©•_|Qžþy«›ë=¾üòKéСCæÐÅ-{íµ—èb¶è‚ú©‹Ë®y­ôïÿ[yäQZÙ±Ç+/¿ü²µÝ³gO©¨¨°y¹è¢‹Ì;â½6Úh#kC«(ødÚ´i¢€”|ÐÒÙ’y[¼x±Ùû¤“N²¾÷éÓÇÚúÇ?þas6~üxyóÍ7…1'•jådŠl3¼yóDW›÷Ýw¢LŽ:ê(iÛ¶­èj‘W_}UN=õTÙyçEW‹MƒÐaÁä"È.»ìR¥ïÔÝu×]í`ÒÒ¥KQï!çž{®Œ6¬¾téÒ*á0`hŸ—äêBç:묓,:Y ”>&û‹/¾²²2¹öÚk ê%,´ª·õè6ùäaØ%ºxÐGۀʋz;eáª×’ X©À€°BëòåËíS½¿’wÜQÆŽ+{챇¨÷õfV÷Ïþ³ >ÜÆ±ÖZkeÆËMÆ£Éêc«ÓO?ÝBøï~÷;óAª Jî¹ç ¦NR©VNÆÀ:uêFʺë®+ÇwœŒÄcx<+M]± `»í¶Ë<Ês¹ÂJô¢!Ë<×¾œ²ï¿ÿÞW©ò‰0tTð:x< ÓV\Œ.ÀíÀC€—ÉF²öÚkÛËK¼ÔŸþô'óÞäë­·žÝþ Mš?<ˆÐM!ç´ëõó¼†=óX,r8¬i‹hˆ3õ~,\Díe7ý¡qÌlïÇÃ8mËçŽ;î+®¸Â¼8 `®z÷¤R-j`Ñ9vfL4¡£W¯^B(zî¹çl%jfÀc€3Î kîc“9aÂÆ>ûìcM¿þúë²lÙ2yíµ×DóB+ÄšŸeã}^xá Üøá‡ÌÛžþùÂêFât1‰QÁ;³`ho‚Í·û¥Ïš‡ZJXðbLlT¸¦èÁ}&O¤ù—yæ½÷ÞÛ@EºAÈ%´xwҀ뮻ÎÂ3Ñ¡ |؃y@¢ãÁûjþ*´{Ì¡4ŸpƒúxOiR©V¸Ì×@Ð7ß|#äZ#× ¯Täq¬ Œ¨‰´åÑUäõb „ òÊYyL9žñ_ÿú—µAŽBÎ@òçgœq†…À (Èá0üwÞiÏÄébB4 ò*/䛄ŠvØÁÂä“O>éoe>éBh§M¼ᕜñuþ÷¿ÿe…/î=ú裖BÌš5Ë€ƒ‡ÒÍ‚õ•ñÐ×ÓN;ÍÂÕ7Þh!Žç¯›Ó‰e±é¦ÈêêÂÒŸ–ðÌ%—\"\pÜvÛm^æ%Nè/zX4ÌÞ‘&±D··±»ŒÖÏw®«×v8š·dª¨pšxÚ®.S¨':ñV¶ÿþû;}e¹õÏþÓÝpà ¶R”)׉³Ýžz¿LY¡ -Ö¶3«j>]jÌ*ýäAÚŒö%KY䂱úþ¡K=KänòSv¹}G¯ÒÑ¢žËµlÙÒ1֨ݹÇ\7§Yòᇚ-³ c.Чùw̪Eq»ËT=ç=ïxפ¯2 '×ð¡-S¨'>7ˆ–EÏÉCr]Ñ|.÷~î5«=®mêÅé"ñ“bÛŒêDW>}qmÄ•‘¯ææ¬èÄËç cåˆJ¾—¼¤2ÅHt‹©Ÿ['uþÈKxkŸDx] ™ú~+öq¶ð>ŸŠ­ 0M] š-IU¶Ù*‰ò•Tš:ÈHv“Œ1DwF\ç[}…<Ï+iê*¶ÍRÕ#ÿ˵a©ÚJª·$»Ë¤õk¸¢©Û¨ðÍXÞ5ä=ÊÊÖvõëïéÊÊÖÊ[gEÏ×–{¹ßŒ-d5|¥6¼áçKûö=õì¥e˪¿¡H­¡š¥(üI\’ùìßœU0`|’Çj}Ý“ E‹~Ö]óûöö~È©ú}Y‘O†jdEb`èÐiúÿ—_Eñ eäÈ™E>ª‰¾}Çê¯k[튊Ÿ¤ÿ·‹|2T +åå?Êĉó²jŽÍwÉ~Î* ñ ‹·KVé ASôWCÙ¦ª[w-ý’߳ꅋx d[.¾N­/íÝ{L¯UQ±XúôSëmSŒÈ XiÁ‚ïäÿŒ­5iÒ|ýzöÿe<¶R(”² ;ö • ÖŽ ÖµOΗ,Y*ãÆ}T@C¸ÞøQ£fY­eË–ëUôÐ?~éh×uê”I«VU¿nS„ÊÚT¥2õoaÔDëµn½« kéÒåúý³2ñ×5q¬¥S—¥°jЙe²,s¬øB¿ònžlŵÂÝ\ åZd×|_eùò𥕘(öVY¬YBaš K`Í.+R5€,bŒB§!\²Püý²x»„Ò-@–¢1ƒªx ÅÛ%”¦h²TÅ[ €,Þ.¡4E %0fx…‘ÀX‘ªdc: ¯0 Y(þ~Y¼]BiŠ KјAU¼Èâí[JNÆ$™ÈØ‹œŒ#H2 %³W¨] %0Zx…‘ÀX‘ªdc: ¯0 Y(þ~Y¼]BiŠ K`Ì.+R5€,bŒB§!\²Püý²x»„Ò-P’?î…ØŠ”š&ÐÀÔ¯ßÌèkjÚØ¤Ê>’úÐJ2ˆ®à(âËùmX¶=Ïœ—vC¸LÛ¢A_ U1I(HÛdi[4è«b™4Áj g84Öi䞘”ä®ðêÐ$ÇõRW~£,p¢B‹À’‡åoYJòÿÉHøaš]]‰?¤¨»B4š†0ÑšBøØ`">óÌ3ø•è •çS† b;ò /¼ÐHL!emܸ±‘ÓŽ1BúöíkD­+Û^¾ç}â¿"ºí|Ï(¯„ü uÑÿsït2V¨WIîr‘»m¶ÙÆuìØÑ)“¬Ó-´;çœsÜçŸî”ñÖÈ@Qrÿý÷;%dwJìîÔ;9e¡sÊßmú•Ý×)+­Ó qíÛ·7]…î¼óÎv_)•]§NL·²ÐšÎ=z8%twÊHkϽòÊ+VwÀ€îú믯r®<ënæÌ™VΞWF\»ž>}ºkÑ¢…kÔ¨‘õ‰q+Ó°S†`§ t v·páB§ q J{F)œ]ëÖ­í\wtN½™ÕU0;¥¡¶±ÃsåE¹:]¿~ýìò¡‡rÊséÔ›ºnݺYYœ]ÊËËØ¹­’ÞW!Zõºý'įl°¿Ló³bµådxÂÚK/½d«ºgBלã SˆØø·ñ B?~¼QAÃ[~ï½÷g7ÜàóçÏ7>óèÊš2eŠÑHOš4Éè¡, býÏÕCåÙgŸ5êf–=¢@1d.¢ç\+­:Érß}÷ ÔÓ´×Ð7C MsÏž=¥wïÞÆÝùþûï›÷cLÐeÓ.‚7ŒzÙwÜQ:tè ü ¸2=4¡”gO8ᣆ¶OúüóÏK×®]-bÄÙ¥{÷îÖvYýõ¥K—.Ööêø±Ú@Æ`Õ“ÉÿøG{?'6„¬¸öÙgž^}õUùôÓOõhƇiöž{î± eRa®>|¸~pØ‚ãˆï—6mÁI¨•ÎY:è ãëæ~ôœkd÷ðuÃ!=$ö~Õ›`;v¬ÐO@ i;_¿Ð‹Àpàø„/iÞ¼¹÷¬³ÎÞ;öêÕKÔ£=\ë<òˆÚÓ‡8»ÐþV[meýÆ6ôkuÉj“‚@§Œ£Âä¿öÚkÆF{üñÇ›ñï¸ã#¹×Pbgîܹæ½*S^ÝôÏš5Ë©—ʨÐ<ÏŽzËL'%ŸTVV:Ʋ"¡ ?ÚHœ](× †SÇé ¥” [c_Æ^|ñÅVrC ßÈç­·ÞZØIÆ 9ŸÏÛ¢÷yÿ•†¬³Î:¶ ‰ê"‘ç¥m®¨·Ê-Ê\“ø’èXh—‰³ å„ÊÕ-kìËX¾rÂËOT¬Ó§ÿxÑwV¦Ç_óI¤˜IµŠµà"¾…á7F)yÍ%‹ØrË-“U j®påZ¤´×kìî²´ÃÚW¥J’“â|®°*Sê¶ÊÊÖ–zõv×÷bÓuÃTó8Èóåu+k×’x²Å‹³k­qǰa“e£x?7³Æù".…”d¥èèš ³ÿqÖƯ ÝùÍô!€¬È©Z´ègyã÷̓ 2Uù\óÂe‘¦H\-€¬H“ :M¿òËërΑ#gùd¨@V$úö+••‹­vEÅOÒ¿ÿÛE>ªòòeâÄyY5Gž­/ukÞß–f 2¥‹²" 9hÐã!V­[w-ýâã£Eá<Èò&ZÜ»÷˜*^«¢b±ôé3&Z-œç±@YÃøâ ¾Óoæ~é/³>'Mš¯ß+ûå÷ Y7ÂE–ȲÌQõbìØ,T6lXO84X×>9_²d©þ¥ÑGU %Y(É·0²Z¨£FͲQ,[¶\ÿ¥‡~º£]שS¦ÛÙ¤Œ°¤CXs¿…QÒa'TÞºõ®öÄÒ¥ËèÞ_'TSk«‡pYk§~Õ <€,­õ?˜'KðH¨ª Ký¢‚þ…S`‹H`2«@–Ôb¡~b %0Y— Œ©@1F¡Ó. Y(þ~Y¼]BiŠ KјAU¼ÈâíJS´@YŠÆ ªâ-@o—Pš¢È3¼ÂH`¬HÕ²ˆ1 †W…,?€,Þ.¡4E ¥hÌ *Þdñv‰-%'ã’Ìd ìENÆ$™È’Ù+Ô®†È-¼ÂH`¬HÕ²ˆ1 †W…,?€,Þ.¡4E %0f— Œ©@1F¡Ó. Y(þ~Y¼]BiŠ(êâ¦\ˆ)6ûÛTkoýúÍô…lx#Ë Bœ›4-:ÃE ªbþþsÏ=}6œ×b wÜqÂ? .d!\Öb ¬ª¡­*K×âvÈjñ䯪¡•“­ªÎ¬¨â?œÞ{íµ×Šªu ”Ó{ï½w¦¾ÒZBísõwòäÉ‹0y+¤§q|NItÆÕ…xêÔ©™[0¾À+oG;„³žž: ^ÇoÆ“Áöv×]wù~¯Ô'€¸óÎ;³tÀw®|™Ye…. ¾è¢‹Œºæ9x¾¡P„©7mY°`@r?mÚ4;”¨ÕøÒùLCn¿ýv£’†Ý~÷4%5O9=$ô0°)‘§ñpOœ8ÑVø_þò㣄»ò¦›n²þ++¯uÔQ÷ÓO?mÛaˆè)Ã3@Ϫ³ì»ï¾Y^§S§NFRá;žjæ#FØJÇC)9©\rÉ%ÆÓÍ„CLß¡CyòÉ'—²§éÖ­[†ÒùÚk¯¨ª¡“îÑ£‡QJC>Ïî }Ê +;þòOñÞ†gZ¶l)?þ¸´hÑÂêîÑ÷|º”PUÜœmÛ¶eæ5@õïß_Î?ÿ|³íyç—™ÿòòryï½÷¬8xþÇ{LðÒ‡z¨Ùjé¸>¡JlÆ„ÀÒG½4$5O×$.£·oß^ºwïn“ Á: ‚Cû­·Þ2>E^‰pÑýƒ>(¬"¸ºûõëgczôÑG0¾k×®8Hä£4h`m`èñãÇXßyç[í;w¶{< |䳑*@7nœôêÕËÁ<¼áÝC:ÁÈOÆŸ®TÓyuR‡E ЗRLÇö‰vF ÜåGy¤ì·ß~¿¦ð35OF_êÕ«g+xÞŸ´iÓFX .4Jò)û,çL8Dž<ð€‘Åc @CR.p«wàÆóÔSOåù–cŽ9Æ@08Â.©ðtÈÑGmŸ3gƳ‰Ð¯m¶ÙÆ&‚çÑwòÉ'#ðzë­'ÊnÏÜéÓ§ÛäòB2*ž¸Li©£Å™sØ…ãtQá”SNÆ«œá¶ðÅ„`<5ÂBöá›r ¿g>Øä™gž1Ï®”Ø¢üç¦'ßÆÏ¦Íò—š'£ã¸X:è;›kèƒ>ØŒ„á8çÍ9¹Q³fÍdàÀæ%ðP(£ÉGiˆ'C±gâõe¾ÀÆ TÒ~’ü}< “ð~øaû àǃÑ'Æ‚7âPÂzóÂÔÇ{z™3gŽ”!7$㽑|º¸¸¼>Þp̘1öÂÓÓL3>Ò "¯›O'aüôÓO·hЮ];[¼ÖÀ¯?|Ÿ¢e¥8Od…:Hž2aÂ;8'|Üzë­rÆgØÄ vK>ÜZòñŠš¹‘7nlM“Ë)±¼(é¼y‹&Mš˜Wbò>“É„5ÊÊIªyv‡v°05tèP<}#çÙÿý-g<餓JàÆ3ö ßx•o¼ÑÆÃÄJxÈɇòS$Ÿ.»ùë_«V­„üÉ/Æè}Þ´iSa§œOçW\aaï¶Ûn³¼[ÆõÉëóŸŒ-M‰÷éi¶ ºüïú˜\’è(3^‹Iáó€0—Îu—.]¬„/^e$çlëùê5×\c;"DÂLÇ.ú¯¿þºå#„ òÄ}öÙÇ€BúûßÿnÉ<à&<ãA˜4r. fÐ7òrM¡žºxr3ò4<Ï Ùh:B9›¡Áƒ[X#ŒçÓÅŽÎñ¶nÝZ^|ñEóš~ü¹Ÿ,v›lâú@¹G»ô‡ðOÈÌí“×Kû¼!GfŒÍ›7÷·V골±ÎJ'¯Iãw—W_}µœp ¶ûò='×,Ñw>ˆI~ê©§Ìëœ}öÙ¾º~ذa–ì{¶Ù¾}ûð4ìJÉ- ^±èïà(Ç‘ŸEß"Âe.?:Àc ,"Æ€'`„|Æ@žË{žO—ïóŒ3l‡Í޶X‰ÓI~Lÿ¢}Î×'ßy&Ž€Ô'Ÿ°»æBtÎòÔ]µÿbÏJÇcE…ÉÌ•B aÕy€EŸÍ%ºÞË=qmSNèÌ<G®Äh}vh^˜¨\€q/Ÿ.îñ®ŠÅuá…rY´ÄéÄsæJ¾>ùzÌQš²J=álóÍ7OÔ<“õ4„Ã\0ù]^ÚJÔÙ”*ã-s¡…–RsÕR³Æz²¤côq†Îõj¸Br^“d•î.k’áÂXŠ·@Qá’„2|3¶x£Ö–šE~3¶²(Õ£…q–Ä•!\–Ä®AiÔdQk„ó’X €¬$f J£ø?¼®íÿ¸:îIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1FoundRowsOption__coll__graph.png000644 000765 000024 00000013741 14042362133 030231 0ustar00tangentstaff000000 000000 ‰PNG  IHDR–‰ÎÁ¬sRGB®Îé›IDATxí] ”MÕÿšS"zy“H!‘GüY éé­‡ñ(‰¼z‘P–%j"–QZ^¥HLEÞò(²$½T4cSÙÿï÷±OçÞ¹wî>Ó¹÷š½×ºsÏÙçÛóÛ¿ýíoŸ{çþÎQœÈ&‹@xx+.¼õÙÚ,§°Ä²LÈ,±òV[iĈղeK:çœsì+1X¿~}Ä1býú믴mÛ6ÂÞÁ¾ÂÁ€¨P+bSÉ6\ DÌcÈÝÙF"†€%VÄ ?».ÔÄúôÓOéäÉ“aá]»vÑÛo¿M'N¤•+WJìhZyZZegg›šG½]¡&V—.]è÷ßË ½ôÒKÔªU+ ˜þùg^|ñÅŠI¥`‹¾3)Õm·Ý¦.¼ðBÉCÿ¾ýö[¹—Ö­[Ëý“P‰w…êµ×^ e–_×§EµÇÚ½{7ýùçŸôÁÐŒ3döcùÂùÞ½{éšk®¡ùóçËdÆ;ΧOŸN<ÈôÍ7ßœØ.Y²Dm,_¾\òpÍöìÙ#õ­[·Ž7nLãÆ“¶.\H}úô¡+Vˆg9pà/^œ4h ÅË—//mnݺ•®½öZb⺫¥¦M›ÒŽ;ÖUªT)b’¼&“Wìþúë/i›‰L7n¤Ò¥KÓäÉ“e¹NMM¥6mÚÈý¦¤¤Ð/¿üâÓVÔäeCÕkâ±à6lØ UU­ZU­^½ZŽáUV­Z¥Ö®]«ªT©"yW_}µâç6êÃ?T]t‘x’M›6ɵ¾}ûª1cÆÈ1¼JBB‚k1kÖ,ÉÛ·oŸºòÊ+¥­jÕªIþtëÖM1is÷ò¯»î:w–3)¥ú¨®‘#Gª¡C‡Š-î•É¢jÖ¬©¶oß.yLJU½zuñˆ•*U’<üÇÕ¸8™~Öc…˜j•+W‹¸¸8bÂøXßtÓMâÑàYàÙàIxùLš9s&ýøãÄ$’²L*Ÿ:ô <èƒʱÎóÏ—‹®?W]u1mºxxQ$“º˜ÒWxZ$^îéï¿ÿ–cxaŠ)âic Ëä{T/…¡€ÀGBíÚµ£~ýúÇUòñÐÀeé™6m 6L–1޵d—†ú–-[°Z,±H , N:É1ÇA„åïèÑ£Ä^GÚ@0Žc$Žè믿¦›o¾Yô /pmÞ¼y²¼²§Ã)ª ùXþtÂý´hÑBú€<Ôe2S‘Xì4úŒA@êС?žî¿ÿ~9‡ÇÂkìØ±täȉ¹Å‹ñ2CÿüóÏl×õÌ™3Gâ±ÌÌL!Þ‹-*^ðøñãB`^ŽhË–-t÷ÝwÓáÇiîܹě)÷Þ{ïQÇŽÅ3Á»Àû,^¼˜/!† TW:u())‰š4i"}ÇŸþýûoRhÔ¨Q²K\ºt©sÍ} ûí΋ªc¿¥¹ÀNMb,“ÎpÀíìò´={‰K°st'ì¸pMÇXúb,ì/™Š—ÉF\Ô¨Q#ÅK¬úí·ß´iÈwÔ]œ;åV“ÖiÓ]†É(»Ywž—ãHÇX1ë±0;±Üáù¼“;aç†]šÂ..·gE:s—CL,.sÛéã@uèkê:ÿüóõeŸwÄm±œbšXX¹ÛPƒÁE0ïNXÆüøÆo¤>úÈm–çãpÖ•çNpÁ˜&VÉ’%ó—ÞuéÂü0R:ïØy¹wrÎ…<„³®<4‘"1½+Œb¶Q#"æ±Ê–-Kü Ï¨“Ñ`”P…Ÿ)eðëp4tǨø$!Réì4"Õx¬´›ý%&>MmÛÞ@o¼‘+ÝŽd?í¿™ Ÿ–¶“?#,F©©;ø9Ø)“"…ÞÆÆX˜1c-?~’âããø ~ºA kb‰‚ ÔÚµ{Ä*+ë½ûnäþó%DW£ê²%VˆáX¼ø+:÷Üx±B4ºbÅN~Èúïç{!ŠÚË–X!†>%åô2¨ÍЧ¥K¿Ö§ö=–XA€AvFFæ'‹cÇNòÚk}òìIN,±rbâä,\¸Mv'ãÌÁ¦MßQfæYôýtÿ ù%V. ¦¤¬á/æüÏÄ\‹mË¥¤½d‰„dRzú¯T²d¿Î㺨D‰ÓÇâ““?RÒfûä=ìØñ3ÿ{Øéß;6•¿w Õ«—(%jÕºœ¿*]<—Ò…úÒ[û¬0`¯Y³‚ÓÍéÓWÓu×Uàÿ¼©æäÙƒàØ¥086öÊ@À˼¸¸Ó¿åeh^èÍ,± )À_Ÿ÷ù' Ãb…ÖÌ«Ð}þÞ¸%–!¾v)4ꌙ%–!^v)4ÊËPÖÚÖcyÃËZ"`‰e”5ó†€%–7¼¬µ!–X†@Y3oXbâ…_wÁ#›Ì°Ä2ÃIžºã‘ƒMfXb™ád­<"`‰å0kn†€%–NŽJ™¡y¡7³Ä2¤~âÂþÌ…!Xlf‰eŽ•µô€€%–!Xöqƒ!PgÌ,± ñÂ2h7‚Åf–XæXYKXb‚e¿ègÔ3K,C¼ìý ²Äò”µöˆ¥O÷Ýw>„‹êWBÂUªH‘RQÝG`¸yóæˆ'w :ô øá>âÉCÈh|ÿóÏ=,¨t8jûÌ~øaÑúñè[òÅÜÆXù«­ÔËr _°ÄÊXm¥1ók3ŸAÃæÅ£ÀÁS² +Õ­[—¦L™B[·n±ÍråÊùÔÛ´iSbõyOMMyßW^y…† BLXêÑ£ÁkBëvЄÔד'O²ÄJ*µiÓFú“’’B¬rïÓV4ŸÄÌR¡Z2@ÿÚÎï¼óŽè77nܘZ¶l)ºÍ 6¤%K–ˆ3–& &ˆ²èÅû+V°>Nqñ*W®Ìêkù§/’çiÐy~ã7Dd±{ ±ƒø&„4¡.H­•e~Eÿe@ŠjÕª9"å (Ú„è¦;®‚vt ¾Bƒ$Ä=U­Z5‡€'ÚˆÖ3Á;ä¥ÍG˜ûý÷ßaq·°%ë@‹Ààë|ä:Á3ÁS€`xÕ«WO¼ë4h@=ôxÅéÓ§ë"ŽŠ+D-yY!Hënß¾]<$òtZ¹r¥xU´çÒÌÎΦƒj3çuë«[9V·ëŒòƒ˜òXËï¾ûŽÕ!–RõêÕÅSa§‡%‘c' ¤AÀ-ZЂ ¤È¼yódéÑå¡Û O»gŸ}–…2u‚É’ o…”8>#Ž·Ë3ˆ‹„vöîÝKݺu“sÔ‡k_|ñ…xªn¸AòAjðÂÜúªíbí=f<ñ ÞÏ;ï<ñ(ˆ[@äcñ8‚?w$v©ÿþÔ«W/5j”,Y ¢N¨ã¹çž£Ž;Jt¢g{î¹4pà@à!xÃ@ˆüÊÇÅÅI†:à™à]@B,keÊ”‘" :–bìBG¡\:u())ÉÇóæÖWwÛ(3‰Áˆx2Ù†ê$vWßä0Û³gâe(G>2Ÿžž®8^s®ã˜?»”s\?zô¨s-Ø/e »8wbO¦† ¦Ð/&¼û’:~ü¸â¥Ò''¹õ5‡q€ŒhÚÆŒÇ 5SñÐ4PB,,ÁCÁ£¸<ÑW\!Y¸ŽW¨¯,ê‚÷@)·¾²æ¼³†XÑ2?ûж.h,±ò î`^)Ÿš‹ºjcrWu(Úå@ *MmÛÞÀOä“ Jz“·ìRhÀ´´ü€³v·ƒ?J:ý0Ô X¡6±Ä2~HõBÍ>>>ŽŸÎ§”°&–X!8B­]»G¬²²Nлï®QÂ^–X!x°xñWü4^¬ð±áŠ;ù#¢?ë Q¼Ð^¶Ä 1ô))§—AmV´h<þµ>µïA°Ä  ²32²ø«1?ùX;v’sÙ”;–X¹à³pá6 ØýM6múŽ¿¦sÂ?Ûž»°Ärᘒ²†¿˜íŸ-1×¢EÛräÛŒ°Äú Ÿ£2)=ýW*Y2_çñ÷­¨D‰ÓÇâ““?÷±·'¾Ø'ï¾xøœíØñ3I/KòÆŽMå/ç]Ã_cN”óZµ.çïÈ÷±·'oEÅg…Nw¢ì fÍ N¦O_Íß(­ÀßV­æäÙƒàØ¥086öÊ@ÀË<ûS‘†@1³Ä2ÄËþT¤!P–XÞ€²ÖÞ°Ë/»uÆÌË/»e‰å (kí ë±¼áe­ °Ä2ÊšyCÀË^ÖÚK,C ¬™7,± ñ:ý 31ôk/†÷•_f–X†Èò»X½BC¬`f‰å,kjŽ€%–9VÖÒ–X†`!ÆŠ©_Ô3¼¯ü2³Ä2D1^6™!`‰e†“µòˆ€%–!`öqƒ!PgÌ,± ñ² ²Äò”µö†€õX†xÙ/úuÆÌË/ûE?C ,±¼e­="ÀA©“ ÈÅí+ W©"EJYl`Î9rÄáLóùOh&–ȘuïÞÝ#=­yaF2, C,:êÀ`c, {N,±Â‰¦­ËAÀË„Ÿ+œçµ.–gý¿@ªY^넆2KÄùƒêj¸U¶ÐF||¼Hÿ~õÕWN{P«R¥ ÿ¾VI'/\,–N»ví¢bÅŠ‰:, ¡U EY”»þúëìójuköìÙ´eË–¼ÞO9ˆ[¾ùæ›RêÄëûï¿÷± Ç ^¡¦ "C¬"âx­[·ND/ñ®I`ˆxBXúÓ Î'Mš”k>ú¨èhC5Нù<{,ˆt¯Y³Fdr¡s %y(Áã†!˜­ej¡< %vh»¼úê«üûèïŠÀ7v°ƒx6”âçÌ™CÐÒÁŒ‡"ªNü1aö³8$ÿxÿqQLeÁL@Ý… 8dv!½ …T(£>þøãT¡BçuABáîÅÓ_|‘±/]®£‡ƒ„£GÓgžy†ž|òI‚gÀ=Á“:tˆ°c†àù¶mÛÕTx$hI#Aõ‹)åx.„†Ô/p¼§|PDÄAŠÉ“'KS§N•cz×}ûöìÐî™…5 ;wjÊ”)Î÷ò²²D€½I“&ôÉ'Ÿˆ\ð¦M›¨téÒR8£NÜ'äî SŒä߈£c|ݯððdzǂ<.ßqÓ5jÔÁxúé§ Jò .”Z¶l™t¸ðëׯ§wXujó õ@Ì{èС¢ö ܪðD(ÌÀ DƒL.Î1h6l|èCƒ`Hîcò»ú…zÑ>ëA¤%JH¿1Iàqt‚â<& ú¹zõjx€fÍš%&˜,Ðr0`€ÄdÂýã•’’"ƒl09p¿˜ýúõ£™3gJÛУ†ØøÖ­[i÷îÝRpƒü/H™bÔƒ ‰É‚@ZØý¥Cà‰ Â ß¸‰'ÊÄýöìÙSì!uŒûÄÒ¨?X&ƒÝ¯ÆÅôÝ3±P1<ô’k×®-ïú Õ¯_Ÿöïß/Ší f¼Ü1ðN "À«Y³¦Ôå¯@*¥Ø£Ü4f*RûöíE¡¾U«VBXäÁ“è¸Ì}\¼xq©õà…¸$I ¤ ap Xn žšÓÍ›7'(Ýã^>L:u’XE{+Ô!q,}xmÞ¼YÎA xà[Üî“$Ù¹s§, 6”÷íÛ·Sݺu©|ùò2‰!bŽ{¾óÎ;e99üúƒIŒ;Ä’mÛ¶•{…1‰t Ö\÷¿_]ÆË»ç¥•㆑ së˜Býn_ƒ‹X>aÂZ¾|9½þúë‚Mˆ‚ëH"3Q'xx($<Ä ¹¥ÄÄD!€¶Á2bè‡y8gh}ÙyÇÌÕ ^ Ë5ìáõp߸$W'ôíùçŸ×§Ô§O\Øê6qQ· b}ùå—"H¢b©ƒçÂj,AÄŠO=õ”xG`¯WÝpÙ·oŸLä¹ñјi[ýŽ ¨?¸î¿ºŒ—÷û—÷À=B‡.]º)1ຠ´ RÁ b"‚lHƒÎ;Wȉà±<"bF¬XzFèMÊa—Šåäǽ!aR­U ¬?RàÌŸ`÷å¶ tìósÜð&˜…ÿõ³B°øühÚ´ixð<âf£NøŒ ¤ÂŽäѳnÆŒ2èˆ-`¯‰wë­·JP‹åȽ”êú¼¼#ÐÅ@éØeá]ôRª.Øb¢¸—”Pep¿ÀB“*”=&–-LD÷ £ô}u×…%ñ#ì±Añ‘ÐOL"£n×kt9÷;Æñ"Ú<“ÂÿsÜØµ9R¶äîÆ,ô/Ô º€ÿ+©HîŸLI…r^lu;îG_ ô"TªT)Ç%à‰ÍG°t饗ú\ÁüI¯ýñ©4—“°.…h `/UªT.Íæ¼ôòË/ûÜx‡rqÎüùóYРgbÕÑ]" E؉…ÝWRÿÙ œüša‘„p¶íc8ëöRW¾ì ½tÀÚž¥ð.ËI¼õ¶ß ò I~‹M.ðó2‡G|0ÍgWx–Î{[À[v),xÐ E‹–X…b˜ þ&-± óBÑâÿÉ~ÀÕYaþsIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1NoExceptions-members.html000644 000765 000024 00000010115 14042362132 026637 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::NoExceptions Member List

This is the complete list of members for mysqlpp::NoExceptions, including all inherited members.

NoExceptions(const OptionalExceptions &a)mysqlpp::NoExceptionsinline
~NoExceptions()mysqlpp::NoExceptionsinline
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1StoreQueryResult__inherit__graph.png000644 000765 000024 00000024122 14042362133 031137 0ustar00tangentstaff000000 000000 ‰PNG  IHDRý‰ç†>+sRGB®Îé( IDATxí ¼LUûÇ÷r)ºG¡”ŠJEE"’"Iº’B"¤To¡ðÒ *zÛBTê_é"$¹E•rKT$ä’ûuÿŸïãÝÓ>sf8sÌœ3ã¬çó™™={¯ý¬µ~k=—õ¬µ×Îå)‰#‡€C Ç ;ÇÔÔUÔ!à0œÐ»ŽàÈa8¡Ïa îªëÈ„૯¾’5jO¹c‡@ÌL›6M.»ì²˜ïs7d i,ý¤I“äÉ'Ÿb{îã0ÈLxøá‡¡w”¼¤úä-¦+™CÀ!/œÐÇ IÇÇ!"8¡O‘†rÅtÄ 4¼x1=>ß}÷üñròÉ' ›Ð½;vìb?ýô“/^\ªU«f¿¡8˜7ožœxâ‰q)‹_¯B… Eó^qÅR°`Á”æÐ/}ñÅVÿüùó:3Ç!eH:Kß»wo™8qb\]¾|¹T©RE^xáÙ¸q£|ôÑGU~ûí·£òGЛ7on×g̘!¿ýö[Ô´±\ðëµxñb¹ýöÛ­ŽÔÓÿlß¾=vN;xð`0`€¥ÿøã%è(g#³Ð5Ê:íÅ_,çž{®¼üòËR®\99ãŒ3Ì‚uíÚÕ„ XéÈ*T¿þúK:vì(%J”°ÿsçÎ5Ôûõë'§žzª\uÕUR·n]ùþûïC­1dȹ뮻,ýi§&cÆŒ±k•*U’ûî»Ï,p£FdÛ¶mvþšk®‘¥K—¦9~üñÇ¥fÍš2nÜ8éÞ½»Œ1B† &-[¶”;wJ$^wÜq‡Œ9Rºuë&¿üò‹lذAvïÞ-­Zµ’c=VÊ—//“'O¶|.¿üry衇̸òÊ+M±pᥗ^’³Î:Ëp8p ¥ ~Á%üüþûïV×Õ«WËÊ•+墋.”Ó¨çœsŽ”*UJžyæcóã?šòÏöíÛËž={dþüùÒ A¹úê«å¤“N²òãÝ€32Ÿ|ò‰àmP—U«VIíÚµ¥hÑ¢R«V-ËoÙ²eÖ7Þx£aÛ¦MËkÖ¬Y‚r 'X^Áz¸ãÔD f¡G°˜}ûöµŽÇÍ Aƒ¤aÆòꫯJÅŠeøðá†î$®$ôÓO?• ˜ ÷ïßß„ A$mÛ¶måóÏ? 07ÓùÇŽ+ï¼óŽ G§NŒ'»X±b‚âX»v­ñåBåÊ•×9xú¨)ÊYºtiûТ¸P°üñ‡»öÚkåƒ>°¼Q[¶l±v¹ÿþûÍ{Àº#ÔäÓ´iSò~øÁ„e˰å›o¾1,i7” x#ô”ýÍ7ß´¼zôèam6sæL™2eŠPgG©@¦ÆôÕ«W:åŠ+Ìr¼iÓ&yþùç‹Û¤I³Xg¬1^– A¢Sµk×Î:(÷aE 3Ï<3’¤Åbòá^zàÌšÝsÏ=&ôäñÉ?Ɔ ‰µóǵá¼à™/_¾' ‹ó(>ߟþ)¹rå’Ç{Ì„KÏPà˜cŽ‘©S§š0bYÁÅ÷Füò‘7BîÓqÇg‡(Ò³Ï>[ .l1ˆuëÖ™âAÑ@ öíÛg¿Xh„öôÓO—éÓ§›×U¶lY©_¿¾¥­W¯žŒ?Þê‘'OžP}¹H}ðfHV76ï oÑÔ§L™2Ò§O«J†4ŽR˜-=Õ¥£A¹sç¶Nnþ÷U @¹îºëÌg ‰@”C°ªX¢Ö­[[‡Âµ÷‰û KåÓ®]»Ì²óß?Ϲ¿ÿþÛO’î—KÇVà”SN±Óá…²ñ“›P&„€ByóæµMXñK.¹Ä¼V¥qÄv=øEž(>ÿã 5<À¥À1ùúü¹Ÿa¥ÅÐ …·òëÂq/þûÄ‚„Ù¯õ >P0/¿> )šáå –ëÃQj#)¡?X•t: .$‚‡»8tèPÁu~÷ÝwÍRÕ©SÇŽÎÉmdqéñ.üxF´ôî|ò#)÷>ZµèP½~ýz«óŸÎÂX•q)BN«A§&Èx2he|> pAqs‡r%€p`ñð^ýu²ƸŒ9q›ýã[n¹ÅÜd”BJ AxöÙgížH¼ŸþY—ûD¼×–€"nýk¯½æ_ ýR6>CòÄZ2 `ùišùà ŸÁ+¯¼bCžE‹™ cÁï¼óN++õ¡¬7ß|³¹×O<ñ„¹äÜ‹@—,Yb<ñ2P~7Ýt“¥½ð m¸å£¸‡àÁЧžzÊ” í‰(/|Pb´ÞC.G)Ž€ZuëÖÍÓ QèfÔºyjå= µ’žZ\O-Vè*ˆvîÒK/õtŠ,t­gÏž^—.]<xO-tè¼ ’§ÏSï tî`ê [Þª(Ò$Æ þáåäFò –% ³Àêê—^jyWc?¤,áe‡¯*¼ µìžÎ&xÔ5ˆ;×T xªl9LC:ÛaX¦9áü4~áJúSªÐ=õèÒ_pg’¸ZzôóÜÌC3×Í4OŒU}WÜ?ǯ?¶ ž 3Ž 'xãá×Ãÿc #åMºH¼äE¢Œæä ¯hü"åéñŽð˜<ñ‚‰ºò R´E? ½2BÁvÌHz—&¹ˆ»Ðã®3®eU],ÄtQÐÅðÁ#ÞΔ•?˜ †“ñäC¶ IªžRh-CB2pLâ.ôŒUcxÐ FžùÍ:Ì3àÞŒRƒ 2vìºÂnÿÒ]¦ 'Nü)ƒwºdäBÀ }Ûcذ麼u§¥Þ²e‡>›ÿuïtÉÉ…€ú ´ÇÆÛdΜiRNžÌ³ô»Òœs©€€ú ´ÒÇÏ×¥´i¡ÊŸ?n:ñÏN?`ã’8’´=9)Š”|…xãié¬ú–-;uw™iÉWXW"‡ÀApB€þøc“î½·&bª¹sÓm¿öïÑ1;éHBœÐ¤Q¦O_b®ýQG)| .`¿ïÞ½GfÌøù Üe‡@r!àVäe =&MZd©öîݧ›DÖÍ<ïµÿ¹sç’êÕÓ?Þš–.‰C ÛˆûSvÙV“f\£ÆYÆ}Ïž}úü}.}>aÿÿféX;†€sï­cìHNœÐÇÐ.ºeœYúnqII‡€úš„‡÷í =‰Ã.©C ypBŸ\Ý”] `¹¤I‹€úšÆMÙÅ–Kš´8¡OÚ¦qs$'ô‰ÁÕqu$-NèchÆô|9R'ô1´cz>Ž©Œ€úTn=Wv‡@&pBhnÊ.°\Ò¤EÀ } Mã¦ìbË%MZœÐ'mÓ¸‚9ƒ€úpuî} `¹¤I‹€úšÆ¹÷1€å’&-Nè“¶i\Á‰A !/»(P €ìÚuø½Æ9—ú÷ ^¨ tÏ:'œp‚üù矇ÜÓ~þùgùí·ß™cN;í4)UªTˆYB„~ïÞ½úž·Ý’7oB؇ ïâ‡Àßÿ-§œrJ\nÛ¶MÎ;ï<9öØcãÂÏ1É<k×®>Arî} wìÈ8¡Ïìªè"à„>ˆ†;väËA÷öíÛeÖ¬Yúéêqi &XŒfñÎ9çœ4‘CÉäË/¿”Ë.»L~ú4uêTÙ¼y³ýe\|É%—ø—räï¢E‹$OžO§Œ¼»îºËS-éiô×Ûºu«ñxñŽîÝ»{ß|ó§ÖÛ;þøã½víÚÙµßÿÝ»âŠ+<¯Y³fÆkéÒ¥žZ»®À{­Zµ2ÞÚÆS;—×´iSO…Ëîûè£,í¨Q£¼N:¥;>æ˜c¼Ÿ~úÉÎóÅý^x¡ý_°`W¥JO;¹•‰z¯[·ÎkÔ¨‘§JÂSåãýõ×_ž ­§JÂîY³fW£F ;Öˆ¹§ÖÞÒªrñ>þøc«»v»ÎWùòå½áÇÛÿþýû{eË–õÔÛð `ç"á²qãF¯qãÆÞ‰'žèÕ«WÏÓ©8KíkÓ¦M^‘"E¢]Žéüwß}gè¦ð2ÿøãi0êM?«gŸ}ÖØ]}õÕž*sO­¿W·n]ïwÞñš4iÊŠãO?ýÔ‹Ô.$êÛ·¯wòÉ'{*TðhwU²<,mí¤ÓÌÖho﫯¾2¾5kÖô{ì1Ã1”‘~Ĉ^¯^½‚§½† z S#dyÐ&+W®ô®ºê*ïè£ö®¼òJþ«ÊÌ{ýõ×-ý 7Üà 4ÈŽé£jB|À`äÈ‘–oèäAèk`¤ló7°Â¸áÿ÷ÿgVlË–-‚«ËŽñp«!íð¦5±¬ªdæÌ™2eÊY¼x±<ÿüóR²dI™8q¢Í ÿúë¯vÿ5þ|)V¬˜àr¡õ´C˜ë5vìXÑ#½{÷tKŽu:ûì³ÓsB;ˆ•C…N^xá¹å–[,Ý£>*×^{­|ðÁ2yòd2dˆ¼ñÆR¸paY¸p¡yÔ ‹í»|Lg½ÓO?]Z´h!ÚÈR»vmãÛ³gO¹óÎ;Íõç^í ¢ÊCºví*x£G–Î;›G í8æ•€K¡B…ä0¾Éò^fÊÄ@ ‚áñòË/‹*„P±+W®lõ¡N {ÔxÈ»ï¾kÃ!*ë? —"µ ^ÌSO=%ãÆ5"òøã‹ ’¹Ýo¾ù¦õ7†…XäÛn»Íð%cúçñ8 $óò˜û¦|LO†}”~K¸ÿþûÍóTA—~ýú‰*bQ¥gýòÕW_ÚÿóÏ?·~?fÌ¡oîÙ³GÔØ°ÀçM>ª´Ì¤áSq~ºƒýf똞†Åµb~X-½à‚œuÖY²jÕ*s§I-· J OŸ>¢VÉ„ ÐÇ/C‡ 4oÞ\h¼p¢ÃŸtÒIrÏ=÷˜Ð—)SFn¼ñFË‹üyäAYT«VÍ>Ü<æ? ‰FC!-[¶Ì .BU«V-kDWN5½u.”yWªTIPÑ·’NÌoþüù-›Ø‚Ž ŽmÛ¶Æû(µ¦†e >Ḡ¤GRn°Q -ûl9©Ì>‹„~øaH†j>!¬>uëÖÍéCÍÎ;E­¨äË—/b»¨‡(ê.`£ßp'NƒaÀ ÐG.>4åà:ÆÕ›4€ Oú .¸À/Nš_Ú£Æ"µyóæÉõ×_o×¹‡¶PoÍzcB?úé§­‘…Á=”L|¸ðùöÛoå•W^±þÛ ASGu”Ÿì ¿Ùfé)BàP—ÊŽý/uå“O>1@axæ™g¤cÇŽ¦‰±ÈË—/7ëθ Ã|>ü-ZÔþÒþ˜Õ?ÇÎLkêCÔý7íÛ¡Cyë­·ì¬6‹"B¸i„úõë›÷‚e§¢ñƒ„å>qßí·ß.:Œ‘.]ºÈ{ï½gë†åÚqÄÆ&.êÒY¹è>øàÁ²ÌÒë‘ÊìÜè~à e{ ÂëÂ*~øá‡k¡-#µ ý%(Ø‚«+QüÄm|ÂÚ2&‡X­H£Luhgž@4'}Ë–-­¿à•¡°tÚƒ•Š~ð&ä€rV‡b‚rÂxÑ"ùSB1áaú}:RÚHç²Uè#È?wæ™gZåéÑ \_>4.Ö‹‡˜¤îäìOà kÇ*A”ˆŽ튎׬AgÏžmÚ”À™Ž¯DÇ?v=x`e‡Þ† ,‚§@ãà*b•ùåóðpíX¼:..=åÀ;‰DtÔp‚î(^e&ȇ׀ÄÊÓ‘"áBçÁ21t!ê’L©Ì” h f/RG™>áéh¬Ç<.Ž!ßê2äÃ@àFjذ!ÁÓ‡|"ßk®¹Æ”mD›áâ ø_“›2Æøà‰½ôÒK:ú ý¾”þ 1,ˆ>D “á ³NÿùÏÒ =J‡á &ÃAÊóJÊà?^Ç ä´SlYjyr uÕqìàüï§‹öä-Møy å‹…2“O$¡Ïk¾E~´Â w…[…0Ü0"õ‘ˆ±¡?î^gþ=DàˆÀLÀàþ…£h¤V=Ú¥Ðù`]È— Î'ó‚–Hebp°±<õ;EjÒ‡óe¦ˆÙŸ"õÿZ¤_î•dÆJ™É'RI»8G­€<茒jBU-E(pâóaœ;˜-§þ2ÎU7ö ãÓŒà“ÙÅ9áíÒĆAM>ÁÅ9±«¨ØòÌtjæ2c%4{Pà¹ß”y9a¢áŽsI½Ïi áêëÈ*béqÉý±fVU$™ò)Zô]Qx”NÓÌÖ#ËmZ-™Ê­,‘ÆØÑÒè<ž.~²ÑÎ{tý*yíµyºJ®¢®u(‘lELHy˜º RBÆôÁ râñ„ ?êÊ®!ºx†@[^iÖìriÒ¤ŠÎûx‘INÄ*+ê Û¹óõЋ¼Î oÞܺnû'ðqÄ¿bÅRæ=ᇴ”)s|ŽxpqBÞ;âø¿hÑ‚úðM]ôÏVX°§S¶iSK©ÇÜ+èÒåz©R¥Œ>”VÙ(W÷A¸Í¤8¡Op7hÞ¼º.úgÜŽÀŸ{nΘ*J0´ÙÀÛ´i»nTq´Îœì|þºë.Ð',‹G¼'§tBŸàgЍW¯Æúøn}Þ?Ÿ>}Š>[}Ÿ>.ú£n°ñ–>O½ÿyí#G°_¶l­n2ñ¢Î¿—Ñ=Re{¤ïiƒnÝêç 2RI'ôAéÓ0EW¸ðjyr›À,˜_7Lh«ÏŒïÐÍÚï!f‘ãoŸ9s™n`ò’nrµ<öX=Ý„£î¦ó°M•¶o•ýÏñ ý½ÏÆž@„¹{÷uK«…ºO+],â¢ø™iæã{ö#6U+FfXä¨{œÐ'As:Uç–ÇëI-ugœø¼O. ª•%EèÕë3Ý ó[1â^Ývêø,É3Õ3qBŸ$-8~üuMGªðß®Û$ö(O’ò%[1víÚ+:¼¥[œ­—¡C[8÷=†rcúÀJdÒڵ˛‹ß±ã(íÄS™UÊó^¿~«Nw¾lãõÑ£Û:±E¥°D'_¹rƒî´úªZûòòÄ×§Ù­5Ñy§–77m:H·0¯hk R¡ÌÉVF'ôÉÖ"Zž¿ÿÞaOé+VH÷^¿S§úòtÖüÀEš6m‰´n=̦ß6¬xàÄîjTœ{šì»ÀC8£Fµ6aoØðe}Jlkö&Ir5êøAƒšéËDœÀJ³8K(èeÁ½½{Õ]̶ñ~NN?ó /=™§úVº—ÿ?/£ÈøË,œÐ§@³¾óÎþyèÁƒïÖ÷·¥Ý%ŠŸé"ò |ÿþä믗Êë¯7×7|·àLg–ƒntî} 4vãÆë»ËîÔwõýWߎ27J|èE\·n‹Fè_Ñ×@­×¶qè†88K‚"ù-Z­o²}MßÜ[U_fY+ù œÉ.^L=é,Æ¥¶¬6“lÜmQpB˜d=½fÍßrǯéKKék–vÛnMž¼X7­¦¯‚n¨ké/LÖfHér9¡OÁæc ¨-†Ú’Ýví®ÒçõÓo‘‚ÕÒ`å yî¹Ou_»»õæ9'v‘ÕmåÆôYxòã™üaÃZê›s·éN0ýdõêMqàš},xð¨G1ú¦ÖIú*èœÀ'¸)œ¥O0À‰f?pà—úJìÉ2|ø½ú ã^«œè|ãÅûöÝÒ®ÝpS`DèÝF¡ñB6:gé£c“WZ·®©+ÔH£F¯èûë¥D™ýB®]»Y—Ó¾d{ ¼ývk'ð>0 þu–>ÁgûÙ³—ëÒÝÿJ§N×鯗dU¶™Îç§ŸþÐYˆÁ¥¯"lrá(ëpBŸuX'<§åË×Ydÿ†.ýëÚ„ç—Ù Ø4¤}û6ûP¯^…̲q÷e'ô™.YoÛ¸q›=…V²ä±ºÇûm¡Í!“¥¼o¼1MË5N_3u\tQ©d)VŽ*‡úð¹y¹FÛ¶ÃeݺÍòÆ-“f¬Üµë2iÒB[Cï^ð‘}Ïò²û„åÌ£¸êÖ=/áù¹ 2Ž€úŒc•ò)W­ÚhSzÕ«—Õýö$¬>C†L‘&Z„¾B…S–cœ9œÐg·”½këÖÒ¬Ù©\¹ÌÿÞðš/nuÙ·ÏÓ7ñN°}èyyGñâEãÆÛ1ŠNèã‡eÊpâýy<ò¶FÓW˧ŸvˆÛŽ»<ëÏÃ3¯½ÖÌÞÝ—2€ä°‚:¡4øºuëäøãsÎ[RŠ©,Û¶-½{7PÈÜa®\¹u=@MÝÉw¢ ~渤Ö]›6mÒ:•Z…ÖÒº½•M†Ð—.]Z÷c{=pÖƆ@—Ø’§hê[o½U_‰šBïæéS´Ó¹b;2‹€úÌ"çîs¤(NèS´á\±™EÀé3‹\‚î[»v­lÙ²E_êŸ=∦ÿðò|ùr}ªí")Q¢DÜK¾`ÁY¼x±¾‘§€œsÎ9q+{xAçÌ™#{öì±Ó¹rå’’%KÊI'ž,SÿçÎ+åË——üùý‚³ôB'®}óÍ72zôè¸ä¼}ûviÙ²¥î¨ó•¾k½ôîÝ[·Öb¼?ùäùàƒ)ð‰'žÐ=ù_‘5kÖ˜àóÀ€‡Ä7ÚÍÝ»w—iÓ¦™CH;vìªO´{2zþé§Ÿ¶À\ÄsÎñ*ýõW!ÇKáúW\!_|ñ…T©RE7º¼XßRóµ•^(¡p^”%2eÊ}cïUR¤Hiܸ±ìܹSµ±òQÞF™…çø”SN1ÅÕ¼yóˆ<‰®ƒ/8ŸuÖYÒ¥K™9s¦n$ºZ—$7‘7êVcݤoß¾°ÓwÝÿnØq .”ýp$'ô1¶êîÝ»+Ó¡C©Zµª®-ï¥ëÙÛê^o7J¿~ý¬3wíÚÕ„áiݺµpŽŽŽÅå²Aƒº‡ý…fµÎ8ã 9ú裭DXi¬JƒÎM~(îGÉë—_~ÑGh™ÐwÜq!×rì±ÇÊyçgë”Ê•+›ðÁ#Ož%3nÜ8yþùçM~„‘rÜ|óÍvÖöÌ3Ï”K/½Ô< OÁ ãx! 'Î#¨‘hþüùy‘ö¦›n2víÚ%¸Û(‚éÓ§›×àóBá¢XPŠx]Xäh<âáÇ åEñaíß{ï=ŸUº_Ú¶—|ùâ·<9]FÙ|"rËds¡’={:Ãï$tp„Þ'\[ÜY,=ÇübA±œ~ø¡îY?ÌÜÜox@‘:Û'øãŽB‘ÎS¦pÂËÀš×¬YÓ\UÆ÷÷¯¿þJŠ`áJûDà¡…ŠÝ¿vžñ:uDA@µjÕ’ÓO?Ý,÷رcí_+V¬cŽ9Ɔ"±Ê>mÞ¼Õ_4^(??‚i¸Ö`ȯÆ'¼*”Ä`„ †q¤ò!䜟ú¨ O(7ebìæ´Q$ *ðH×Sýœ³ôqlA,:„ÅÂ=Æzûct:/cT~ ¼1ÕÄßú`a}òùp?ñ:.BàOO!àŒ± TaùHÿå—_Z ¬gÏž6ÎgzÅå'€F¨o¿ývj ì¸Ð Eši€H8‚À³ý¤I“BâPfÆÎ¤CQqO¹råì:Kf0ÊBaÌLëÖ­kAO~à€…ŽÆ‹™¿ÞàpÉ%—ظEðxPŒLF*бsçÎúÖÛwL9<þøãV?”C®p܃¸0¤:É=phÕ… ZGÇÚ{¬ ãcLN6Œ‰q¥ƒi ÐÛ[o½en;B aÙq_ãV#,CÆ f z0ÂÅgÜN' ÖÅÂPžÄ$P,Á4AÞXUÊ>”@¸¨®4³( ‚“:uCÙ0Û¤h¼ü4ÜÃ,SŒ~ÝýkÑ~#ñ_¼)N°^¸öÁaMg—àùà13!³fÍâ.©FÎÒ' Åî»ï>s»±èAŠä¦LhìH F|"È?Ú1‚©s24ð‰<Ø–5OðÓb݃ükÔ¨á_2….ð\ŒÆ‹k G˜µ`F!£'ø–*UŠËi(šÀ“(ˆKš›“?ÎÒ2^–×6ÖGt±H®*„…ä\¸ùÑòùcâ™àQø½@%Í¡³ôIÓÉQXžR‡[|\îp'Ýá,ìÔÂ3Ifß_ÊÔývÑûÔm;Wr‡@¦pî}6¦Ö2c¥,ÜaB U7ÑpBŸƒ:©«ªCœ{ïúC ‡!à„>‡5¸«®CÀ ½ë†Àÿ}Ö0Ÿâ^cIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SetCharsetDirOption__coll__graph.png000644 000765 000024 00000014333 14042362133 031005 0ustar00tangentstaff000000 000000 ‰PNG  IHDRŸ‰2”êfsRGB®Îé•IDATxí]tTE¾€¡I.Hï]AMi " E)Ò»tAà A¥( ‚ôGŠ ‚J‡DéTj€‚ùïwùg}»Ù$»ûb²»™{Îfß›öf¾ùæÞ;ï½ìM¦XȈA Hž×4—4†|†‰†€!_¢Ao.ü˜¿@IéÓ§÷—îm?._¾LO>ù¤_ŒÏoÈwëÖ-Ê‘#ýñÇ~L0v¢X±btåÊ¿!Ÿ1»ÁȲ“!_€LT0vÓ/g5@ÆdÈg™¨»wïÒ–-[,)öwîÜI_|ñ}ýõ×tàÀ¼}ûv¼÷Åã‹'PAC> Ð/^¤Ž;ZR|?ü矨I“&Ô«W/:{ö,…‡‡Ëù€bm´{÷î´k×.ºyó&­_¿>Ö²Ÿ‰Çkþ <ñŠw»±våäÉ“ªV­ZªqãÆ*oÞ¼jÔ¨QªvíÚ*gΜjâĉêÛo¿U-Z´p´ÑªU+õÝwß©™3gªâÅ‹KÙ³gKþ¦M›TÑ¢EUÙ²e¥ÎôéÓÕ‰'T¡B…$ÿ™gžQ]»vUÙ²eSM›6U¬‰Ê´mÛV•)SFåË—O­ZµJÊ.Z´H :Tެ–,Y¢¦Nª*T¨ >|(éø¡2eʤvìØ¡ºuë¦:wî,}zî¹çÔ±cÇÔ¬Y³TÚ´iUž—.]-òàÁ©Ó¥KåŽ||ÏQòA¨öíÛ ù  µ@û±IÕ§Nß(ß»wo§4œ@ƒ¡=Ú ræÌ•?~9†&ß°aƒÂBYÐWh_-Ÿþ¹êÑ£‡¯]»v’Œ1a¡Å%þF¾€óùØÜk%b²k4 qr}š5kFl~iõêÕ„ãdÉ’Ñš5kˆ5±Æ$6qôûï¿SöìÙ¥ TN•*•Súä‰'žC&¸ø`8Ñi8F:ž¸“‚ “È) e™T„›½ÝVlíœ?žØT;Úa3NQQQrŽñC€OŽéOÀ‘/.pÙGÎ:ޱ‰`?àèoß¾X“P–,Y;[¹yóf·Ínܸ‘X; yYcI”ØÒã?Nì×ÂfRò±£e­LmÚ´!öQiñâÅ’rŒ1‚Ê•+G•*U’4´Y¹r¥ôQNø6+ZPþÆĦ^úŒ…õÒK/éì€þòAÃA²fÍJlfe‚A²\¹r›-‚Ædçœ5jDO?ý´±zõêÄ> L®žEݲ9¤Ó§OSß¾}¥ˆ†:l6iذa¢YyƒAÇ—|Þxûlr=Þˆv¯Ð²ìŸQXXñ&E_Jˆ‰¶ÆŒC}úô‘tô‘Í)±Ï*çèÏûï¿/×+P ±?KìB8Úкßú< ¾ãò*ߟÏÓ¾Ô­[W­X±Â©8v²ØˆX…Ÿ'«ëׯ+ìPáóYø“çÎs$cÃÁ$“ êz"ð+=ªþúë/§âðù°q`í«Xû:å¡O®ò÷ß«S§N9íž]ËÄuîo>Ÿß¼X_+•w†b6lèÔ$|0WÑ>“kº>‡_É·=ô©ãÕSAÐn1 ïÒ£ei_К¿Z8˜$V‹? o³À²ûV ü-¾ïåÕð4$ᣣž»·?îܹ#ù¼Ëv”óõ~ÚqÝ0ùÚž'õ°Ña‹àØðxRç¿,tšÏ[â\l\ÅÝ;oñA:}Œ3êÃ$û4Ž$;ƒÛ¶¡ŒkÑwßí ˜>[C¾ÄZjñxÝE‹~æMJ2š?g<¶š´šòÍH°GE=ä§¿ò“ÅïÜ£;wîR÷ý¦¯†|>LÅÆ‡ùyj ©™2e Z·î7Z1U ù|àÀüùatëÖßR32òÍ™³Ý‡VLC>/9p÷î}~áˆS­½{§ë×Ý€vÊ0'±"`È+<Ñ3×­;à0¹:7$$9¿ÂµOŸšo0äó(]lîÜtûö=}*ߨp ݈wòyWDÄþG ³nkœ8ñ?—¾á6Ï$ºGÀÏ=.nSÃÂNñ‹žQ”!Cù¤K—Êq’‚¶m;æ¶žIt€ß¼Õâ¾{þ—Šûz¸¿iÛö+š1£¿™òè¶KEý¯Ã~Ü#¿y¶ëÇ9u-4ôßwóð„£zõ¢„{}F¼GÀ˜]ï135â C>@âßF ýŒø†€!Ÿo¸I-¼®ý?Í$Ùª†|Ivêà†|6æ&÷ÿÿ±i£•¤[ÕÏÆÜÃäúÇ¿_ÙD"V5äKDð“ú¥ ù’:qü†|‰~R¿´!_Rg@"Žß/ÁOê—6ä³Ás«Åx\ÕÏ~æV‹ ð ùìgjÛCÀh>{ø™Ú60ä³­™Çk¾hÈç;vòhÍ<^ó@C>ß±35m"`Èg@s«Åx\ÕÏ~æV‹ ð ùìgjÛCÀh>ø³k<®jÈg?cvm€gÈg}ºâ8·jêÔ© é ÇùUY³fÂ;vL±ÆT ,"×®]RÞ»w¯*\¸°Z³fvˆ*ŽvQ‘ʇ ¢8þ¯ UK—.U¬a£V‘‘‘ªyóæjáÂ…jíÚµª|ùòÒÏ#F¨ªU«J›ÈGÙ“'O*¾¿©@ÐØ$Étf·Q£FtèÐ!bÍÄñ26SÙ²eåÞ ¢ZâFl¦L™ÄÒÕ¯_ŸX3Òµ Ÿ CL,bm(f‘CÑSƒ &åsåÊ%Å94}4S}õêUþÍæø—JSJ™>}úHù:“Œf”àÎÖø¾HG>k-âÅBÇw¸ Ý»w§ Ð믿”&:¨È®sçÎ~àÀm :”¦L™¢ùåøfmæ8¶ ú%„5—Ü<R§Ní(ÂæQŽ ,H6lp¤ã×±tèz®þþýûÄÖ©¬>9wîœS$HúáÇ’íÚ]'X¾ƒŠ|)R¤ ì8?ùäÇ.“ŽöZ ™¼‘¢E‹ÒÆ9ÜÕ-:pà=zTªC[-_¾\Ò€ü±cÇ ùÑêaA°y¦’%KJšëõñH ”cÿ“Øß¤œ9sJÙ`ÿt?>xð`êß¿?ñ&AÌ\–,Yˆý-™GÞˆ mݺµ˜àØ&&ŸW_}•xÓB !44´b‹-èðáÃT¡B!ËåË—©Y³f4zôhiÚkÀ€Äþ˜zÜúñ؇#Þp8.ݤIZ±b…hkìʱ[w'èKÐIlN¬¿åy²áÐ}fsæØ­ê4ž|ÅJŸzô}úôi5wî\Ù•r$tÅÁ’ÕÝ»wuqÌQ6ŽD>À†ƒÍ­B?¬‚4ì†]å¼í›µ ³á𣥙'OÒ>—î4–ö£tZ\ß¹sçsŠ H¡B…ds`õq “jÝDè6aîÑ«ðn˜R¥JeM’c”ó¶oÑ °„ 3»ñ?È·Vèĉb>aÆ=¾uCÚ÷ó¤|R,cÈçá¬Cëy#lž½)ž$Ëþ» L’Ã7ƒNLJóñ#.ªV­Zbâå¸v²d)(Mš’|Kçߌr¤'æA:uóò^_Ûþó²Gvì8Á·V¾à·g:òëë¥|l%iW3f×Çù_´èg }5þN[0Õ ù|à@TÔC~jñ«„¾BTD7â=†|ÞcÆÍóSŽGÐîtݺß|hÅT1äóóç‡ñ³ÜG/ŸFFÞ£9s¶ûЊ©bÈç%î޽ϯjqªµwïïtýú§4s7†|qcäTbݺ“«3BB’ÓêÕûô©ùöC>ÒÅæÎÝA·oßÓ§ò Òx‡€!ŸxEDÜ¡ðð³nkœ8ñÿ7Ú ·y&Ñ=†|îqq›vŠßÉ‹¢ ÒÈ']ºTŽã´mÛ1·õL¢{Ì÷¸Ä˜Šûzøi4HÛ¶_ÑŒøÿ2Ýv©Q£hŒõLFtêÙnôî'|JhhÇEñãÕ«åzD>G†9ðcv=‚Éú/0ä³*þ­Úψoòù†›ÔBíÿÙh&ÉV5äK²SŸø7ä³1æ×èm€ÇU ùlàg~Þx†|öÀ3µí!`4Ÿ=üLmòÙÏTµ‡€!Ÿ=üLmòÙÏTµ‡€!Ÿ üÌ­àqUC>ø™[-6À3䳞©m£ùìágjÛ@ÀÏxx«%0Ô$^U5äó .çÂx«#¾!`Èçn¦V< `ÈgDs«Åx\ÕÏ~æV‹ ð ùìgjÛCÀh>ø³k<®jÈg?cvm€gÈgûÌ‘a|>æ ¡0äKhÄÍõò9 0 €ßýJâÑ"Z¤§öâ Q¾wíÚ%!骡æ=Ôݽ{7q¨S*_¾¼„œG]œß¾}›mèç!µjÕŠ^yå9r¤Lf¶lÙD»!Š8&P êànäèÒ¥ ÿ ýui¿^½z²hÐ&¢ŽW®\Y"ž£4/ÈÉǤC+qõ×+V¬˜c ]›6mø—P·ÑƒÚÚmüøñË7_¾|²8úõëG ÕEæÌ™CS¦L‘~Ìš5K¬ƃ9¬Y³¦#ÊyöìÙeœ˜S,ÂQ£FÉ.R¤oDLÇ®5eÊ”tðàA %\Ë[ñZóq4lÚ±cõêÕK‚c0”€|«V­"t+ 3qöìY # ¸nݺ´|ùrŽcq‹fÏžMÆ £×^{M4GàvôÿÚµk2i |õÕW’‡IGPdœÃ¬@ AJ”(!$´7lØPbå¶lÙRÂÞÃ\Ö¨QC& Õ»wo!ü—_~Ié[&¥@Â×)UÊ9¦ZõêÕe̸´)ê·mÛ–,X€$š-Ú ³qãÆ¢ í¬úå—_&|öÙg¥ú†¹Êœ9³6}úô„9Ƶ Y„ñÃ?¤õë×Ëõ¬×òäØkò¡Qø¥K—& ßú†_uñâE$Å„Aû@€¨ðW@V“‹6ªV­*>‰k‡18”G0wXáfÍš ÈÐd‚{“ÚOÔÇ Úµ]»v2ƒè²^ü hKøRXÙ˜0¬`‹~¢„CsÇ$zì ³îL64)îiA#â©T©’høˆ®8À'‹«/îú_,mÚ´NYè?ªŽ°îj6ÑŒ‚ÈæÀZòùçŸç:—q£/V?ø¾ñÆRþ­·Þ‹ƒúÐŽP$˜{Ì/4¯·âùråÊ%×ÁeÈÁéšPÅXy0/ø€8 ŤI“+ê+“ó¦Å:`f ûMÑéHƒ³“@#AÛ¤¸>zôhq&æŸÚµk;6º-ŠãVùøãÅM@ò!p`ñÁ¢‚;€qé|”Ñdp‡ƒ'}A®Òº Æ\ ?XLÀ„²Ê¾}ûd1#Mcˆc+¶8ׂ1ažô& çІëÆEc ëyúíùâj„ƒ—)S&™„-[¶p|²ubâ@h½Š+ŠYÒ>‹ÞÍYÛXÐ$0qX‘0éõ°*±r!0qÐŽÖc,˜vhdˆ†4h"˜x˜{hQôÑß0?ð©`Ž!èÎcŠi‹kÀ½>|¸Œ f“ew8xÒkè÷´iÓ¤íâÅ‹[³Ç ƒvo"##%}Û¸q£h`$œ9sF43òæ ¢Çc˜w˜`Œ‚ÍÎãK¼ÞpÄvatbݼyS&çð=àWa3Ò´hÑBV V.L"|ëJÒí`ÕÁ±†_é˜PøV 4éàÁƒq ùž8q¢h¤áD±Z·n-ÚDîß¿¿, ä½Åf¦©lÙ²âCA³Âe˜9s¦˜qô6Ê`’`Ò° \ý‚¶Á¸± Aa–±™‚¥Çã´W_PõêÕòFƒ©1b„ÃÇÕýÑ×Á967ÐôX`и[§NÄÔ‚lh㎠^Ž9»>úHðÐm6mÚTüÂyóæ cÆŒÑYNßÖk;eÄròŸ<Û…¯„$o=Y˜x¬>˜#˜f- ˆ‡Û i|3L:4ÊkrÂD‡g5Ûº=wß ̳ky¤CÂÑ‚•¾ê>‚H $ÊhI—u÷_ÚcÓ&K— Oú¢Ûðæí¯…‡>A@>hϱcÇÊøõ!šÄÔe‘ì)j8ÿu÷l7^5.sƒU‰ÝuP0wùóçwNŽkwùXe®Dr­g=‡cõqtž»tW‚áZVÿM×é[ßüE¾»¾Ç„ƒ'}‰éš±¥»kW—ÇÓ‹L§Á½q'Þ`ா»´x×|0¡Ð&ÚÉvwQwiX¡ÐnzÅéÛ.®`¸Ó&îÚ3i1#׿ÖÝ‚Œ¹–½œÑ|PÙÞÃr•tzèî´‰Î3ßž!€g5ã·Ô²Ûß.šÖ‚v¨Â[ióV®‡oå2! V^bë›ÌA»ÂÌÀücvýrZ’F§ ù’Æ<ûå( ùürZ’F§þŠkÑ=giIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Row-members.html000644 000765 000024 00000051531 14042362132 024777 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::Row Member List

This is the complete list of members for mysqlpp::Row, including all inherited members.

at(size_type i) constmysqlpp::Row
back() constmysqlpp::Rowinline
begin() constmysqlpp::Rowinline
const_iterator typedefmysqlpp::Row
const_reference typedefmysqlpp::Row
const_reverse_iterator typedefmysqlpp::Row
difference_type typedefmysqlpp::Row
disable_exceptions() constmysqlpp::OptionalExceptionsinline
empty() constmysqlpp::Rowinline
enable_exceptions() constmysqlpp::OptionalExceptionsinline
end() constmysqlpp::Rowinline
equal_list(const char *d=",", const char *e=" = ") constmysqlpp::Row
equal_list(const char *d, const char *e, Manip m) constmysqlpp::Row
field_list(const char *d=",") constmysqlpp::Row
field_list(const char *d, Manip m) constmysqlpp::Row
field_list(const char *d, Manip m, const std::vector< bool > &vb) constmysqlpp::Row
field_list(const char *d, const std::vector< bool > &vb) constmysqlpp::Row
field_list(const std::vector< bool > &vb) constmysqlpp::Row
field_list(const char *d, Manip m, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) constmysqlpp::Row
field_list(const char *d, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) constmysqlpp::Row
field_list(bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) constmysqlpp::Row
field_num(const char *name) constmysqlpp::Row
front() constmysqlpp::Rowinline
iterator typedefmysqlpp::Row
list_type typedefmysqlpp::Row
max_size() constmysqlpp::Rowinline
operator private_bool_type() constmysqlpp::Rowinline
operator=(const Row &rhs)mysqlpp::Rowinline
operator[](const char *field) constmysqlpp::Row
operator[](int i) constmysqlpp::Rowinline
OptionalExceptions(bool e=true)mysqlpp::OptionalExceptionsinline
rbegin() constmysqlpp::Rowinline
reference typedefmysqlpp::Row
rend() constmysqlpp::Rowinline
reverse_iterator typedefmysqlpp::Row
Row()mysqlpp::Rowinline
Row(const Row &r)mysqlpp::Rowinline
Row(MYSQL_ROW row, const ResultBase *res, const unsigned long *lengths, bool te=true)mysqlpp::Row
set_exceptions(bool e) constmysqlpp::OptionalExceptionsinlineprotected
size() constmysqlpp::Rowinline
size_type typedefmysqlpp::Row
throw_exceptions() constmysqlpp::OptionalExceptionsinline
value_list(const char *d=",", Manip m=quote) constmysqlpp::Rowinline
value_list(const char *d, const std::vector< bool > &vb, Manip m=quote) constmysqlpp::Rowinline
value_list(const std::vector< bool > &vb) constmysqlpp::Rowinline
value_list(const char *d, Manip m, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) constmysqlpp::Rowinline
value_list(const char *d, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) constmysqlpp::Rowinline
value_list(bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) constmysqlpp::Rowinline
value_list(const char *d, Manip m, std::string s0, std::string s1="", std::string s2="", std::string s3="", std::string s4="", std::string s5="", std::string s6="", std::string s7="", std::string s8="", std::string s9="", std::string sa="", std::string sb="", std::string sc="") constmysqlpp::Rowinline
value_list(const char *d, std::string s0, std::string s1="", std::string s2="", std::string s3="", std::string s4="", std::string s5="", std::string s6="", std::string s7="", std::string s8="", std::string s9="", std::string sa="", std::string sb="", std::string sc="") constmysqlpp::Rowinline
value_list(std::string s0, std::string s1="", std::string s2="", std::string s3="", std::string s4="", std::string s5="", std::string s6="", std::string s7="", std::string s8="", std::string s9="", std::string sa="", std::string sb="", std::string sc="") constmysqlpp::Rowinline
value_type typedefmysqlpp::Row
~OptionalExceptions()mysqlpp::OptionalExceptionsinlinevirtual
~Row()mysqlpp::Rowinline
mysql++-3.3.0/doc/html/refman/noexceptions_8h_source.html000644 000765 000024 00000056371 14042362132 024170 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: noexceptions.h Source File
MySQL++  3.3.0
noexceptions.h
Go to the documentation of this file.
1 
15 /***********************************************************************
16  Copyright (c) 2005-2007 by Educational Technology Resources, Inc.
17  Others may also hold copyrights on code in this file. See the
18  CREDITS.txt file in the top directory of the distribution for details.
19 
20  This file is part of MySQL++.
21 
22  MySQL++ is free software; you can redistribute it and/or modify it
23  under the terms of the GNU Lesser General Public License as published
24  by the Free Software Foundation; either version 2.1 of the License, or
25  (at your option) any later version.
26 
27  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
28  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
29  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
30  License for more details.
31 
32  You should have received a copy of the GNU Lesser General Public
33  License along with MySQL++; if not, write to the Free Software
34  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
35  USA
36 ***********************************************************************/
37 
38 #ifndef MYSQLPP_NOEXCEPTIONS_H
39 #define MYSQLPP_NOEXCEPTIONS_H
40 
41 #include "common.h"
42 
43 namespace mysqlpp {
44 
45 #if !defined(DOXYGEN_IGNORE)
46 // Make Doxygen ignore this
47 class MYSQLPP_EXPORT NoExceptions;
48 #endif
49 
70 
71 class MYSQLPP_EXPORT OptionalExceptions
72 {
73 public:
77  OptionalExceptions(bool e = true) :
78  exceptions_(e)
79  {
80  }
81 
83  virtual ~OptionalExceptions() { }
84 
86  void enable_exceptions() const { exceptions_ = true; }
87 
89  void disable_exceptions() const { exceptions_ = false; }
90 
92  bool throw_exceptions() const { return exceptions_; }
93 
94 protected:
99  void set_exceptions(bool e) const { exceptions_ = e; }
100 
103  friend class NoExceptions;
104 
105 private:
106  mutable bool exceptions_;
107 };
108 
109 
118 
119 class MYSQLPP_EXPORT NoExceptions
120 {
121 public:
128  assoc_(a),
129  exceptions_were_enabled_(a.throw_exceptions())
130  {
131  assoc_.disable_exceptions();
132  }
133 
134 #if __cplusplus >= 201103L
135  // C++11+ alternative to the hidden copy ctor and operator= below.
136  NoExceptions(const NoExceptions&) = delete;
137  NoExceptions& operator=(const NoExceptions&) = delete;
138 #endif
139 
144  {
145  assoc_.set_exceptions(exceptions_were_enabled_);
146  }
147 
148 private:
149  const OptionalExceptions& assoc_;
150  bool exceptions_were_enabled_;
151 
152 #if __cplusplus < 201103L
153  // Hidden assignment operator and copy ctor, because we should not
154  // be copied.
155  NoExceptions(const NoExceptions&);
156  NoExceptions& operator=(const NoExceptions&);
157 #endif
158 };
159 
160 } // end namespace mysqlpp
161 
162 #endif // MYSQLPP_NOEXCEPTIONS_H
163 
Disable exceptions in an object derived from OptionalExceptions.
Definition: noexceptions.h:120
NoExceptions(const OptionalExceptions &a)
Constructor.
Definition: noexceptions.h:127
~NoExceptions()
Destructor.
Definition: noexceptions.h:143
Interface allowing a class to have optional exceptions.
Definition: noexceptions.h:72
OptionalExceptions(bool e=true)
Default constructor.
Definition: noexceptions.h:77
void enable_exceptions() const
Enable exceptions from the object.
Definition: noexceptions.h:86
void disable_exceptions() const
Disable exceptions from the object.
Definition: noexceptions.h:89
void set_exceptions(bool e) const
Sets the exception state to a particular value.
Definition: noexceptions.h:99
bool throw_exceptions() const
Returns true if exceptions are enabled.
Definition: noexceptions.h:92
virtual ~OptionalExceptions()
Destroy object.
Definition: noexceptions.h:83
This file includes top-level definitions for use both internal to the library, and outside it....
mysql++-3.3.0/doc/html/refman/nav_f.png000644 000765 000024 00000000231 14042362133 020365 0ustar00tangentstaff000000 000000 ‰PNG  IHDR8³»`IDATxíÝK€ EÑ–·[†øBÑmkâÄÂH—prÓ¼.‚Žó‚ꎤR6Z VI±E‚5j³„lóš›iI˜¬ÞêçJ0ŒÑÑ/Žû›™uøñóÞ¿6sH ÝõyIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1mysql__type__info.html000644 000765 000024 00000074343 14042362132 026325 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::mysql_type_info Class Reference
MySQL++  3.3.0
mysqlpp::mysql_type_info Class Reference

SQL field type information. More...

#include <type_info.h>

Public Member Functions

 mysql_type_info ()
 Default constructor. More...
 
 mysql_type_info (enum_field_types t, bool _unsigned=false, bool _null=false)
 Create object from MySQL C API type info. More...
 
 mysql_type_info (const mysql_type_info &t)
 Create object as a copy of another.
 
 mysql_type_info (const std::type_info &t)
 Create object from a C++ type_info object. More...
 
mysql_type_infooperator= (const mysql_type_info &t)
 Assign another mysql_type_info object to this object.
 
mysql_type_infooperator= (const std::type_info &t)
 Assign a C++ type_info object to this object. More...
 
const char * name () const
 Returns an implementation-defined name of the C++ type. More...
 
const char * sql_name () const
 Returns the name of the SQL type. More...
 
const std::type_info & c_type () const
 Returns the type_info for the C++ type associated with the SQL type. More...
 
const mysql_type_info base_type () const
 Returns the type_info for the C++ type inside of the mysqlpp::Null type. More...
 
int id () const
 Returns the ID of the SQL type. More...
 
bool quote_q () const
 Returns true if the SQL type is of a type that needs to be quoted. More...
 
bool escape_q () const
 Returns true if the SQL type is of a type that needs to be escaped. More...
 
bool before (mysql_type_info &b)
 Provides a way to compare two types for sorting. More...
 

Static Public Attributes

static const enum_field_types string_type
 The internal constant we use for our string type. More...
 

Detailed Description

SQL field type information.

Constructor & Destructor Documentation

◆ mysql_type_info() [1/3]

mysqlpp::mysql_type_info::mysql_type_info ( )
inline

Default constructor.

This only exists because FieldTypes keeps a vector of these objects. You are expected to copy real values into it before using it via the copy ctor or one of the assignment operators. If you don't, we have arranged a pretty spectacular crash for your program. So there.

◆ mysql_type_info() [2/3]

mysqlpp::mysql_type_info::mysql_type_info ( enum_field_types  t,
bool  _unsigned = false,
bool  _null = false 
)
inline

Create object from MySQL C API type info.

Parameters
tthe underlying C API type ID for this type
_unsignedif true, this is the unsigned version of the type
_nullif true, this type can hold a SQL null

◆ mysql_type_info() [3/3]

mysqlpp::mysql_type_info::mysql_type_info ( const std::type_info &  t)
inline

Create object from a C++ type_info object.

This tries to map a C++ type to the closest MySQL data type. It is necessarily somewhat approximate.

Member Function Documentation

◆ base_type()

const mysql_type_info mysqlpp::mysql_type_info::base_type ( ) const
inline

Returns the type_info for the C++ type inside of the mysqlpp::Null type.

Returns the type_info for the C++ type inside the mysqlpp::Null type. If the type is not Null then this is the same as c_type().

Referenced by mysqlpp::SQLBuffer::quote_q().

◆ before()

bool mysqlpp::mysql_type_info::before ( mysql_type_info b)
inline

Provides a way to compare two types for sorting.

Returns true if the SQL ID of this type is lower than that of another. Used by mysqlpp::type_info_cmp when comparing types.

◆ c_type()

const std::type_info& mysqlpp::mysql_type_info::c_type ( ) const
inline

Returns the type_info for the C++ type associated with the SQL type.

Returns the C++ type_info record corresponding to the SQL type.

Referenced by mysqlpp::operator!=(), mysqlpp::operator==(), and mysqlpp::SQLBuffer::quote_q().

◆ escape_q()

bool mysqlpp::mysql_type_info::escape_q ( ) const

Returns true if the SQL type is of a type that needs to be escaped.

Returns
true if the type needs to be escaped for syntactically correct SQL.

Referenced by mysqlpp::String::escape_q(), and mysqlpp::SQLBuffer::escape_q().

◆ id()

int mysqlpp::mysql_type_info::id ( ) const
inline

Returns the ID of the SQL type.

Returns the ID number MySQL uses for this type. Note: Do not depend on the value of this ID as it may change between MySQL versions.

Referenced by mysqlpp::operator!=(), mysqlpp::operator==(), and mysqlpp::SQLTypeAdapter::type_id().

◆ name()

const char* mysqlpp::mysql_type_info::name ( ) const
inline

Returns an implementation-defined name of the C++ type.

Returns the name that would be returned by typeid().name() for the C++ type associated with the SQL type.

◆ operator=()

mysql_type_info& mysqlpp::mysql_type_info::operator= ( const std::type_info &  t)
inline

Assign a C++ type_info object to this object.

This tries to map a C++ type to the closest MySQL data type. It is necessarily somewhat approximate.

◆ quote_q()

bool mysqlpp::mysql_type_info::quote_q ( ) const

Returns true if the SQL type is of a type that needs to be quoted.

Returns
true if the type needs to be quoted for syntactically correct SQL.

Referenced by mysqlpp::String::quote_q(), and mysqlpp::SQLBuffer::quote_q().

◆ sql_name()

const char* mysqlpp::mysql_type_info::sql_name ( ) const
inline

Returns the name of the SQL type.

Returns the SQL name for the type.

Member Data Documentation

◆ string_type

const enum_field_types mysqlpp::mysql_type_info::string_type
static
Initial value:
=
FIELD_TYPE_STRING

The internal constant we use for our string type.

We expose this because other parts of MySQL++ need to know what the string constant is at the moment.

Referenced by mysqlpp::SQLTypeAdapter::assign(), mysqlpp::SQLBuffer::is_string(), mysqlpp::String::it_is_null(), mysqlpp::String::operator=(), and mysqlpp::String::type().


The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/tabs.css000644 000765 000024 00000021740 14042362132 020240 0ustar00tangentstaff000000 000000 .sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}mysql++-3.3.0/doc/html/refman/functions_func_o.html000644 000765 000024 00000043711 14042362132 023026 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
MySQL++  3.3.0
 

- o -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1TCPConnection__coll__graph.png000644 000765 000024 00000023137 14042362133 027560 0ustar00tangentstaff000000 000000 ‰PNG  IHDRò”©ÅtãsRGB®Îé&IDATxí ¼ÕúÇçC)dˆDÑ5dn…’f)’¡L%Ý ¥™LEEÉM7RJ\…܆Êx£Q’(†Ü̧̊Ãû_ßGï¾ïÞö>övö>gëù|ö9ï»Þ5<ëYëYϳֻÞõËçKVV -´„æÞ2o%`% °Šl;‚•@HÀ*r4¢­‚•@†WóçÏ—Æ{ƒìµ•@ÄøôÓOåâ‹/Ž87ÁÁƒeÑ¢EÞ ¸¼¦ž ÈsÞüyÞ¼yòè£Êc=–çŒYS½zõ’h(ò¤X±brÎ9çÄ­ –-[& 8ñ ÈÖµŽÛnb³_V‘וi%·°Š·Mc³_~säð“Å.æ7ß|#¥J•’ÓN;-*…0×bî¿zõj)[¶¬4jÔHÿ‡“ù×_-¥K—Ž /n½ .¬sÈÀò/½ôR9ñă£z?wî\­<Ìé¢Z±02Û»w¯,]ºT.¹ä’0b'^”¸³ÈÿøÇ?ä£>ŠŠ$×­[']t‘<ûì³²sçN™6m𮦾ùæ›!óGy»té¢Ï?ÿüsÙ°aCȸ‘ûl9餓´Ómß¾]=|ø°þÇb ˆgu–|öÙgêÑY›7o®q¯»î:ùàƒ´ééé¾úòúàuYµiÓF½,¬>JÑÔçoû›<óÌ3ZâÄ ëW´í áéáMḬÝè[wÞy§¦ôµ·ß~Ûžÿ#¶ÈÔŠÎ1òÑq½T°`AukPbæd( Wtn„‹ÅÀu¡“àV»Dº@¢¸„냆Üp˜û„":!ÙKXO,w¹rå48œ¼hdWÙHÄBA(”‘‘!|H†µÅ•sÝßB… ésïÊd0s®¢’2Eѹ¦\7Òã’cyˆ˜¶0H0=À¥†Üºpí•÷.Á#²wëC=¨ä-Ë­î<î+ÞƒÌ:ã¥Ä ëW¼1%Fn]Ýzþøãâ¶²qÛ7XÚx ;.E>VEP^:îÊ„«öꫯ n+#–åšk®Qå¦Ñaƒ¹lÌ(s”y#Ä|‡Å æ}ÌY! V&½×XQæI¸”ÐîÝ»Õk`ŽŒ•‚‚å…¢x /ƒA‰2á9h¨Uux®]»¶NPH¬qà—¢ÜS†÷Gy( •y–’]M(.ƒžÓ: Sæ¿xÌå!â1 àȃv€¼õÁ1ž:uª>£=˜/‡"žñ#>^€»>*~n†ëWnùÞ:»aÙýG¦´1ý)j"Ñq¹Ö¡*H'PÒß~ûMç¾ÜÓ˜û1Aq™W3ºÓQY(c~æŽÄwóÁÇýÃÅd^G8‚¦ÃÓÁ±ðãÇ'‰0gd΄Ëê^·mÛV]*‹NçfË‹ðóÏ? ó\—˜ÿãV²è†K=fÌ÷‘ï?¼ñ£ÓãšQ&£=®8‹Z‡…%×µw3xá…tºñý÷ß«rbi;tè ¼Rxmݺµº¶<òˆºÃ¤E±Q., yâ 0 ÝtÓM÷ÜsÏÕ©Ž;…! d,2DˆP«¹ðK> L´VžéN¼P°~o xÈ ùQ‡ìÈmÚ ™ÐOXDIH™^^ü2óÜPW—?ò2Òó4òKx ä|Ò;” ì˜ÕX‡ºzåÎ3£ØŽ@¹ô#³Ê¯²ô rC~f=$È“£ƒÌ íÏë膘…*Ç,h3U°~eã°ÚÉ›¹ñ¤~ÈÕ,ú9fýÆû8èµYsÌÔ.è³ÜŒªEf$â=,ïIyëŸàª¸n°wÄrçjÞ0ï5óÂ@"/ïü:ðyà=V+XÙÄ – &Á(Ü2½y’W¨ü‚•,ŒõƒÀ5òÄ[ $êÊÏK¡6š0í ‡¼íNüÜŒ¬_á y=¼pøaÈ‚%2á ¯Y‰¢®È¸ÊÌÙ ñêÃ+üûï¿?hr^¿¸óÛ "Œf^“¨Æ£ñ½kIIž)sdÖj˜Ú0…:ᄪÆQWdæi‘*1ó®¸rÊŠË‚“6\Šf^á–«xX¡@ƪ¬dÍ!JDJ¬¥¹D”°åÙJ $I¹[.qãÆÝ[û?B )r©Y•ßfÞñ®>ê•S„Y%tôh,é !NV>Ù>«€:ý°œ|¾ÿëÃX 3^NñSäXV8òîÖm¢Ù5µ\*T(iÞW·•ºu+¦Bµó¼Ž?ýçwYôÌÉ:pX.î]^ª6?z4Ï™Œ1V‘£(àŸ~Új6[ 7ïf3ÍbI~³µ²<ùd+³‹ìÈvÁ(e³2ؼl,¼^ön3›kö–ŒBiÒé£:’^0ûwÇÉ(<«ÈQnÕ+¯ü‡ù8d£æš‘‘n6…¤Ém·54›X®6»ÓŽÞ†åâS"»]¿”O‡þ"[–ïU+L¥Óò瓳[””}þ·í7%„ñW%íbW”[»{÷&>…ÍÊ:d¬óŸòê« ÍN¯Aæ3ÊEQ.-u²sÌçÅwR üÎÍ«dÓ’=>%F iiù¤æ-Á÷U§‚”¬EŽr+<˜e6Ÿô7{¬3Ê‹¼wïAó=ð?zf²—Àî ™òÆ+%ÝXÞC™¾õY_¢Skœ(Í'œí»Oµ k‘£Üâ f˜}ÐuÕ¥Ì:3óÈWFáöþØÈRš¤›iÊᬣ•8át©}k™cg’Ä1¬"Ç qo¿ýý`›u¡BùÍG %Í—Xƒ½Áö:L :%Cnz£š,j>õÌð_Ì⻈ ÿ÷Ék˜Y&U4«È1hÎJ•N5‡)üo‹*+ØeË3ów3ßoŽA‰©‘eÑ ¥ÉàŠRð¤ ßÊtz4©Þ¦”ä;òUjj"H-­"J4‚ºu»Ìl3- ¿-Î3«ÖטFšï…C„r“9õóvɼAëäºW*KÉ*'JFAÓ}§]½õÿÍd®vu³‹]ÙI'Ïvt¥šWO÷ÝwäÃýQ£æš×—Ë»ïÞmÞ3ÈAî©—t늽2ûþŸ¥é¨ÊRâìÄ1Ë ïßû£”ª^X.¸«lê $ ÆV‘ÍÛ ~3Ÿ[ú…Ô»÷[fÕz§9îïúÊ$šå%k^»Ö”éwü —=QAN¯²_53w’'§¸_m$bÙ¯[ÄþKݱã+æŠSÌÑG­c_`‚—°G–L½í{9¿ëiR¹™ÿ ˜àU‹*ûV‘£*Îð2Û¿ÿOsdÎóæÂ:æ8¤ËÃKdcY d#»Ø•pbõˆUì î0¿OÍY`GëUY6ßÔ€µÈyØÎ?þ¸Åì?Êð›9`?¼cwò][tKÀZäªç‚ã%nt°0`@Æä|!Ý<®P¡‚†cö˜]À-¾38^aSnC[ØòŽ-M›v:çŸ?È™>ýëcGNÂ@¾˜³Ñƒ7í 6Ç`|9Õ1XNŽéüŽ”sÆŽë´ Ç`;;FYƒ†¡P/€Í1øM ã ÚÅ@Ê:Kái f”cp®œ+V8:XËÅËõ×_ï\jÇàx9ÃLá{‚…Ø^Ç :gÛéܹ³cð¦õ~ ,®òo”UË7ƒˆc°µÈîÀ×Í7ßvëFý€ú°G1¤Ê”)jŽêj(xÑŒäERî4N@é(LÂÊ.Ztä˜$èn¸áÜÝÅ>Æb6jÔH±¹‰Ü  óGoBü1 £€‚ïÿ\³fM¹cãÆ Œ eq£ƒ…J Š }€§ƒ¦òá‡*È\ݺuMÛÖ•Ç\9›6mš– B(h`X‡KÖµWR¹¯jÕ2ÆEì`0´ÆËš5Gp¡s™…<+üfKp5ù "$äÅ¡r¯zñ¢†€\éb>»q²«Lvxß¡x †, Rì.”òb1sïbŒS–1ÁZç"EŠH(Ø$Ò’Uä@‰ÄÑ}£FUä‘G®7ù%S»7Ž8‹-+XQ aï¾ûnó è}2wî\…t U*øÕX1@TO…ò ?’ðP¼Ã6{ölyúé§U)/^¬ŠÊÜ~Á뻼)ˆ¹4–¸_¿~:gÿì³ÏÂfÕºÖa‹*o"¶n]W֯ߡï˜ßyç.ƒ´)2o¸‹¼Ô­+öÉ–¯÷èaé…üìqsÊvêÔIq˜xÛ¹~ýú‚–·Ø½¯ „0œQ\e×»qܼÃýO:~¡x † &x –4îùí·ß.'Ÿ|²"‚,Ï‚ü¢Ð¸Ú… Ö£¡î¼óNstòmŠ¿ €=˜Üá’}®¤ò8Þ=÷L6VꀮjoçÌã*>šó¨›7ø´c¬`0’ÕÊžqÆa±Nç7xÉ>%ö&š5k–ñj~ó©r5oÞÜ/,ÔM0^XUf ñò,Œ•jæÙ(¬YôòV‡jxbNŽ[íÂáÜj]’yµYè;Š­–-[jžî«È®$âüÿ¡C‡Íî¯1ºQdòä®qÎíÑìåõ†€Åû1†â°¨•ÛdVÂõµÖ<ñ=z¨ûŒü˜.Š3Û*r „âø~Ïžƒrýõ# |=óõÒ8æÔŸµìNøð™ZwX^ójMJ”È9V•Uäë;„2ÜÒ¼Z©÷Üø=KfvÿQÎé\FþvµÅÀŠUƒYEŽ•dc˜ïªUÍüj´¢¹CÎ?ÿÌ–d³N Ø×O‰ÒR>«W/+Ï?ßÁ¬†Ž“uë¶{žØËT•€UämùÆ«ÊÃ7Õ°TzÇœ Ís¶­"Ç\ı+ ]»úæÐûó¤sçqfÄ+´”²°ŠœàMß«×5 ¤~÷Ý“t×P^WÌâ¯ÿµY°'|äf[XEÎMiǨ¬çžk';vì1{z§Å¨„ð²eÃLJ¯‘J×—P»¶ÂËÉÆŠTV‘#•XÆÏŸ?]8Uä£VË¿þµ O8dÃÇ'ƒ×Ë5ÏU k×Vž0™Ä…ZEN’Æ-R¤°ã |©Ù³Wæj­ì ¹*î …Ù÷ÈAÅ’¸+VüW:t£ØRuê”yEìÌ’÷{þ,µ;•–³®LmŒâ˜ ;›¬"g#œD}„‹}ÿýÿ6È÷"—¨u²|g/ëZg/Ÿ„|Ú¤I5éÕëZ=+{×®ý YËtd°Š™¼&v‡™£oj™ï[ÇÚwÌ ÓjÇϨUäã—]ܧìß¿™9‘±¨9‘ó£¸çÕ2˜3 XEΙüâ>õˆíeÞ¼ïdÈQáuóW{déK›$ëÀá¨äg3‰Ž¬"GGŽq›Kéú•Ôœ9+eâÄðÏ€ V!6|Ìí»Vª6/!…l× &£¼ ³­‘W’ÏÅr‹=A&MºS†Ÿm²[u\%Û Ç%¶ÜKö Ø6¢J€ÇMë$ä/=½°S¸ð9ÇÅûe¥Ú8% žv\iãA^LêlOÑŒpÌÚcæÌ™zÀx„Imô<’€AŸÐCëó¨ø\)ÖºÖ¹"f[ˆ•@l%`9¶òµ¹[ 䊬"犘m!V±•€UäØÊ7&¹7rðàÁ¨åÍ¡ê“'O–—_~Y6mÚµ|7#ÎzŽ>Ž—ÿ¼Hg9/¤žÃ2SÙ¾=:‡î1(4lØÐ|ú8[QÀ[êÖ­[9Œ<9ÊÛ¥KMvÈ –—€UäðevÌcg7mÚT.\¨ùÔepuÍ ;¤uëÖbp ( À *[¶¬‚z_?ºwï.à à7(Ë—/7çxµ«®ºJ³ äK؇¢³òÁì•gŸ}V^{í5éÛ·¯‚ƒºeË…˜¬X±b Šö믿dÈ5ÊŸÁñUðnP ê ä)ȆժU“eË–ix0ðÌÌLUZf¿âŠ+”ïöíÛ+Œ(ü®]»V¡U¨×®]õ÷5j(Ä)™2ðPžÁAVpr XR¬"Ç Ðáéȼö!pÒ¤IŠ×k€¹ \ÀÆ €·–ÌîQ$ D¾ûî;…}÷Ýw5 – <]`Cyæ%”Å;|à#F(, epmsbÈG |†ë 3þ?X¿~½4hÐÀ›­ùrª—*)ù•.]Z ·""PquéÁûE‘á}„ êSgÐáÕ†«›´)ƒ ù 6Ìœúù°ÖtEæ­H„ÄuŸ×ªUKË^·n*2y-Y²Äl1§Ðªýû÷W>ˆöíÛ§ŠÍèb!ûU"Ån¬"ǨÁ½àÙ}Þ<Ë;}út-™ÿ­Zµ¬ ˆu4›NÔb}ðÁæSÄöŠJˆµ FwÜq‡ZlžTU©RE'¥¨Nzì±ÇÔŠŽåKOO×ðýûƒêH~}úôÑüHë>x¸÷ •+Wö¹Á(-™úá{ËA%tËQ¼Ž;*/>ú¨zE‹:—(0`€Zn<@ìà‹²›4iâ+ßM—Šÿ­"ǨճÏÆ2¢<(.ÿ±Ž(ÞĉeóæÍênbÅQ†råÊ)‡.R_ »¸½î*¨Ƶ7œ{/õ l(–Û%³ýIKHù.€¸<ÏÁ¥ŒŒ ßén¸Fú`€åX\€¼!žcõƒQ €9> À²‚¥O¥0«ÈyÐÚXðu{öì©Ö˜{ÜYÐǧÖåºæškdþüùÊ!Ö9±XM:Ua:¹^µj•àNïÚe`LÍ\‹q €8å¸st,ãèÑ£u @œ1cƨU¬[·®Î³É×—ùr$ $œù;VTÊÆÚB̉½Äœ~ÆŒy”)SF­¸7޽>" +ˆÜ“ ËÂý9r¤Îý¸Ç"ó>|¸Î]™3W¨PA­4ø¹tz¬¥Kn>o¾ù¦0Ÿf.޲ó+‡•Gi0p…!¸,X y±ÀV¯Ùƒ¬ÀÛ€nCXSò„p×YÁ2dˆâÏ™3GÃÿ¸¼xà Ž·B^ðn0ƒ _@ˆÂK`ö]±bE]|c $Ê V~`¼¤¿Oêä1¨œ±2ŽÙkãœÍ•sÎ9çøåc,¥c¬©cÜG¿p³äð̸×~áfÅ×1 BŽqaãvê3ci³ªë—Ý1óI¿øÙÝÀnǬU6iÌ¢šc\ôì’gûÌ ŽYT;*ŽY¨ò £ ø$ãb;»wï ûÞxŽÐÂŽŸˆ­E΃¡÷yèСj}½Å³Ðë›@âõ“éàÁ¾{wí 0Ì©CÍ«½ñÜk@³ñ‚ q9!æìÞy»›WñâÅÝKýÏbW0*_>ö§+7‘¬"çAkáV·mÛÖ·` (%‹G^âõ®©—êÕ«ç[÷†Ûëä–€UäiР”(QBãnÚ´ÉÀªþâKW¥J9å”S|÷¡Òù"äòÅO?ý¤ü¹üçrñqUœµÈqÔO>ù¤ìÚµ+ÇýöÛo²|ùrýõíÛW>ûì3½Þ¼y³.æ°B¿dÉr¾[FŒ!Ï>û¬–ùÉ'Ÿ°ó—dåÊ•¿OŸ>2nÜ8}Æ *]ŽŽ ”wذašbÕªU:hE|X• ‹HšÈ«¯¾ªÿ׬Y#7ÜpƒÜvÛmš¦W¯^rß}÷išQ£FÉÓO?-gŸ}¶>{ë­·ä–[n‘2eÊèýÍ7ß,÷Þ{¯\tÑEzÏŸ7ÞxCP~¨råÊÒ¥K½þæ›o¤_¿~zOž¡ÒÁ++þÔ+ÎàñçŸÊsÏ=§ÞÅ·ß~+—\r‰Üÿý‚ :$‹-’üùókÝHÊ12 /ømÖ¬™æñÏþS.\¨|‘~ðàÁ‚ç€ü<¨õÊÊÊÒ‰<Š/®åÔ©SGä0wî\9óÌ3å‰'ž“N:Ië–l¬EŽ E·oß.?üðƒ<öØcªÐ|ðZ‡ŒŒ ùôÓOÕmŪA ,ÐûÙ³gË 'œ &L¢E‹jøâŋ˂2æugIû믿jg¥Ó×®][‹ýû÷k-Z´Ðá½÷ÞS™øÕ«W—B… é¯Zµj¥={öÈ–-[¤fÍš~ÏQnâ9u˜3gŽŒ?^.¸à9V:3Ò=ZN>ùd™6mš*!V¿Q£Fòøãk~;vìd¸zõj­;ÛôéÓU±QX,~·nÝäå—_V™,[¶LÖ­[§| ì”ÓµkW9묳¤mÛ¶‚‡oL¾ûî;8.¿ürß ¸aÃUö‘#GÊü!È=YÉ*r„-Û¤I©T©’ZˆÆKÅŠå¡“r ñÿÒK/•²eËêõÛo¿-­Zµ’ë®»N¾üòK¹âŠ+¤B… rÓM7å€x%K–”–-[Ê矮qÊ—// 6Ôt¼ïÆ¢C;wÖyn©R¥|VZüIK;ÒÜX²PÄ 2kÖ,ùøãÕj?ôÐC=ûtð×®];?¼1¨téÒrõÕW«‡rúé§ûÜàæÍ›«\óy¦ D”¢So¬8Šwå•WjÝ:uê¤V‹ÊÀÉàèå7mÚT¼cÇŽš›<à«\¹rrî¹çúÊwÓ%Óÿ#-”L5Šq]PLˆÎ]¤H¿Ò°Œ™™™j9QÅÃ=¥c=øàƒ‚ß¶m› tP¨…-×Ämܹs§Æuøñ†ëÃ0þàÒ+VÌoÓƒc6Y·oß^Ýb²8ï¼ódèСê*·iÓF]ÑìÒa ©žD~¸ÎWÙÒÓÓõ™7Ü C™Qν{÷꫊ÕÅâ.\Xó ÷.¼ià_Hï–OåÃäòà–¥IøÇ*r À\WkÃ=î&nqïÞ½k»xá…ª¢h¬s0rwá²ã@¸™¬ãN®X±BË œkÊàÇuvtÕUWÉÔ©SUaˆ‡kKgÇÍÍŽB¥cŠûÍ<š7ožÞg—Wà3ÖX¸ñÆÕkAF TuëÖU«Œb³»ðÆ3/97ñH‹›Ÿj+Ùv±ËÛ#ŽóÚݧKòÆË”)S«a‘û÷ï/,:¡€,±ðÄ—ص^Ùü!/וWDÏ<óŒ*V©{÷ îÖÃ?¬ƒ Eä?cÆ Í#ØŸ[o½U^|ñETxŽ¥8p`°¨~aÙ¥czÀݤI“Ô#ß`äÖÍûŒ0,-n9 Ux7¼.cžÍ¾`Á‚‚"^ÐÆuÞìæÃàÉ@Â"žO yÛ(ðY2Üç3.È$j“ƒ:Б°|9ÝkÍ+:µwK‰ûÇ;\ogf>ˆëÈœÅv‰ŽÈÜŽøX” K;fÌ]$ åfºyë? ƒ»Ï<ÖËSNÒ1Ç%?Üäã!:êF^b¡Ê;Á"3hNK1‹m®;íÍ#œkw¯5 ‰‰FÇ'ñD«e.ñ;sæL™÷š<\‹nâe—Ž­œkÞu7/¯j à•Tª’µÈµ|4,2Ö„E°H-›@¼‹5X&Vq½Ë¬£§jçv½­E޶D4?w…5Rö½JLÚ`ÊŠ{,<Ò²lü䔀]µNÎvµµJ1 Ø9ò_ ÎëV|-¥¶Ø›ˆdçȉØj–g+ X×:@ öÖJ %`9[Íòl% «È±·V‰(ÿøCä("9‚àIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SharedMemoryBaseNameOption__coll__graph.png000644 000765 000024 00000015520 14042362133 032273 0ustar00tangentstaff000000 000000 ‰PNG  IHDRž“ ¥sRGB®Îé IDATxí ¼ŒÕÇŸˆKE)Ú¤$EJIe©D”5­hßPÑB…J«e«O–Ò~³¤ìiý·\ÅE„HIˆB¶Páó?ß'gzgîÜ1óÎåÎÌ=Ïç3ó¾ïÙÞó>çwžåœwæÙ'`H9ì]l*²wïçîæ8ð/ð „xÂvwÓ¤ÞÓO?-ûì³ûìA¼üòËIƒø¤Þܹseذa‚¯ã>ùσ!C†ÈŒ3𒆮#¤‘xòôî¦Æ¼c}á¾±žgü?ÿüsÉÉÉñ¤$vºfÍy÷Ýw¥_¿~2qâDùûï¿cnpöìÙ²råʘ˧ZA<ψ]ýõ²víZOŠÿÓ?þXj×®-ï¼óŽlÚ´I $gœq†|÷Ýwy6:tèP8p ægggËòåËó,›ê)¼{î¹GÚ·o/•+W–† ʳÏ>+*T³Î:K.Í›7—¯¾úJÇdÊ”)Ò²eKY·n´nÝZÊ•+'Íš5“õë×ËöíÛ¥mÛ¶rä‘GÊÍ7ß,§vZÈ8vìØQn¹å9æ˜c¤V­ZòÓO?i>ÀéСƒvØaÒªU+Ù¼y³¦7iÒD-Z$ .Ô>à•ßtÓMÒ¿Þ£>*ï¿ÿ¾\}õÕÒµkW™3gŽ\rÉ%Ò¸qc9üðÃ¥G²`ÁéÞ½»<òÈ#ZvÉ’%òÇÈŠ+ä‚ .ƒ:H5j$¿ýö›ÞóœsÎøqÄG(/6lØò É~‘RÀƒé³fÍRõ…ÉÌÌ”>ø@Š+&ãÇ—ªU«ÊèÑ£•ç¹~ã7ä€~øAÊ–-+cÆŒÑ:¨²O?ýTÓÈó Z¼x±L:UêÕ«' ÐlS¦LùöÛoè“&MÒô:uêÈþûï¯€ŠŠ0ÅK 4yóæÉ_ý¥ý½ýöÛå³Ï>S)°˜TH]€¶téR÷èÓ§O×{ùD®¹æ©V­štêÔ)âx$"ù`¤ Ò‘˜6ý±ÇSÉS¾|y•^ÿüó.„oݺ5¤íßÿ]Š/®i'œp‚\|ñÅÚ‡-ZhŸï~ûí,CAîqÿý÷ å¹X,¶“~üñÇ«ÄK5µœrÀ«T©’\‘"EäàƒÖsû…äÙ²e‹#Ò‡Á}ë­·dÕªUrþùç«”dŽ:ê(­V¢D [=䈂¶mÛ¦ÒÍfzÓ‘º‘fdd¨Dõæùå—*…I³íp~Ò T6}ERC;wî@m Ií»ï¾ZÖ¦§Â1倩HË/¿\î¼óN•v\wëÖMUÛ+¯¼"=ôª¶¦M› €~‘7nœ\qÅÁ"¤ïرCí°“N:IÓ±+ñXQ¡œ-ZTU&jÒÚ^Øp#GŽT‘Jßÿ½¬^½Z6nܨuÎö§%úH Q£F©¶ù©|Ü7•;oûÎñP·Ï?ÿ¼\uÕUzÄãÓ§O6_ÅŠU ¢¦’Å’m`"Õ,8‘8]ºtQ€aë½öÚkZ §fòäÉÚ NA¯^½äÆoTû çç©§žÒ¾|ýõתN‘È–É‚#ƒ“sÝu×IýúõmwTÕãÐôìÙSPÝxËáä}þ𼤽6LO 2¶[ÀìÕ&Ü㌠Ҏ‘D#a8!éÆY gÔmHºQÉãxŒš ÕÌ3*-`Ôb`Ù²eÁ´ÝæÏŸ0’,XÔHÅ€ñJÆ»/˜Î‰bÈ=m¦qxôÞö:Þ£Ù« >Þj{ªüÆ´xvV£NŸyæ•n6#Fû‰'žèMÒsœ„pÀ[ÈÚÞ4lK–pb%l9¯=ç­‡}ncâ\D"œ¤t¢´j{Ìݱ î²Û ,“`¿%J,,[ï;ѶRµ~Z¯téÒ¾ÆÁz¶òhOCŽáåB2ã¸À ÍK ÆÑLJM+¯6¥G¢u>i$Þ)§œ¢[Jl+¥/Î:à³—:ù/½ôRÒ°vÜ–¤éM u¤zõ‡¥T©2eʃ)Ôë¤éªûy£Ÿ¡X´hµYË1{²Ìg£Ÿ& }gãù€À¨QߘÅâºh=zôL-¸*x>00bD¶ÙÚÚaÖ·ËÛoOõÑ‚«â€'æÌYn^Gúï-åU«6ÉÏ?¯‰³WÜ/N Œ9ÍHºÿÞA厕k»jxÂ<ŸlwªÖ'ãvUsÀóÉ?§j}2Î/1ƹډqÀI¼Äøçjû䀞Oƹj‰qÀ/1þ¹Ú>9à€ç“q®ZbpÀóÉ?·œâ“q»ª9àùäŸ[NñÉ8¼Äçj'Æ'ñ㟫í“x>‡ÇÇ‘?8àù㛾ún_÷ÙD¡®æ€W¨‡¿àÞÏ'ïªõɸ]Õð|ò5ëT­Oæ™jxþyçj&À<ŸÌs;>·«šžOþ¹ ŸŒsÀKŒq®vbH™ ´g¤ )‰=¾ÿÚÅ‹—7•ùóíUþÉçš?ÿü³Ø ƒùÜt~7—:ÿL:‚ [o² 99¿š0ò+“¦?D¦x©BÎÆK•‘J³~:à¥Ù€¦Êã8à¥ÊH¥Y?Óîߢ°ý¦L™"&T§†L¯\¹rÔ!›={v0¦lÔ‚2.\(Ğݼy³†¨?÷Üsczc…µ3gÎÊVJ+‰G„l‚ }‘PðíÛ·×¨Ü îСCeàÀ¹Æ9;;;WôÆ\…"$ž´Y³fæïʲÅĽ•ûï¿_Nò¢Ž;ÊôéÓ5ør¤€ÇyÕKÇô´’x³fÍRÀÍš°Ÿ„…ÀýÀÈŒ3„@Î;wÖIÁòD¨ùvíÚ©Ú%”ü—_~™g_´Bš|¥•ªeLLhxÉÌÌbÎÞ}÷Ýrá…jpc¢t#‹/®vسÏ>+5kþû7²v,[¶l)gžy¦\wÝuª~W¯^­’ŠëóÎ;O7n¬EM¸øˆ‘½M˜wmŸB—^z©T©REZµjeþù/¡-îM¿ì›ËkÖ¬‘¥K—j?O?ýt•|HC(¼/š˜F_i¼qãÆ ذç/^¬6Ø?þ˜kÈP‡ád#{È'…YÀbéCÑS´#ɰ#½„´ªZµª&y!oÛ¶MY8ýúë¯R¦L™`2’PCá} J““´*¶Gj[1>ØWjÚ¾}»cý`€à≢†¡ºuë*Àž|òIU»¤5JŽº„!@úæ›oik¥«·5jÔ7 Û[¶l‘‰'ª)  ¤ùWZÙx¨Ézõê©Z<üðÃu™oóøãWo•Y¿~}R«îò_ò‘Šýúõ“¦M›*h322iqÚ´i£!Þ‘NHÈI“&éÒ m"ÍN8áY»v­ 0@Õ+êô†n1cÆûÀDa»kÇŽR¾|yUço¿ývH·v×שra–dThÀìÕÆÔWãDŒ” ‰RÞH­€Qe!iÑ.Œt <÷Üs#f­.`œ‡€ñ6Cª,_¾<`¤bH𑄇z(`@øóÏ?CòŒrÍÅÖ­[Æ,ÈÕß\£$ðÌM”I•µ1­$žìØeH›p¹ˆ‡n?ýô“ÔªUKU"Ë.çœsNHx»y‘µ ½ù^ÛϦ#Ii»0QZ/?u@¼U#•„5ÀXoÚQt8àEçævØa1”ú¯H¼’õ¿š…ç,­¼ÚÂ3l©ÿ¤î dŸcXªT³\²Í,³ÌòÙBþWcé'UÞ@Nàåÿ0%Öb¥J÷šõ¹ ³üDb ÎÚ©óê{2ÏŒKtnË–m²`ÁÊdêZÊôÅÙx>†jøðif§!Ç,*ï”wÞq’}°Ðý“@¼L#`ò„ ³}0ÀûÇl•͈· WÞpÀI¼8a0yòÂàÛ%TÍÉùÇìÇ.³WÜ/N dff›×œ¶kaç ž¼v'±qÀ/6>i)¤Ûÿþ7?¤*wüøUoH†»ˆÊ¼¨ì Íüä“ùæm梡‰æŠ€ÉYY¹ßùËUÐ%9à€dÅîO23§5›“« iÆ9u›‹1QÜ^mæx³P³YY Uâñ~œyÉH³9GÝ~ôÑùçl<ŸŒsÀKŒq®vbp/1þ¹Ú>9à€ç“q®ZbpÀKŒ®¶O8àùdœ«–ð|òÏ-§ødÜ®jx>ùç–S|2Î/1ƹډqÀI<ŸüsªÖ'ãvUsÀóÉ?§j}2Î/1ƹډqÀI<ŸüsªÖ'ãvUsÀóÉ?§j}2Î/1ƹډqÀI¼Äøçjû䀞OÆaãñŽüqÀÏßô‡>üÛ‘?8àù㛫•(Œw¤/¾ø‚)ì>1ð H‘’>Ž_±áÅDMâÌœ„Fö1À“믿^nºé¦Dñìê;9@< >hªµœpǽʼ½Ênw3Ë<Ë wÜ«H:àfݺuùÆ¢cõÕWòé§ŸjF&(ñ¬Y{."Ñ» ¿~ýz™6mš˜Ð¡!Ï3{öl ’¸.lè‚4%ðFŒ‘o X´h‘Ü|óÍa@wêÔIf̘!«W¯–^xañüÕW_•e˖ɼyó„@Íï¿ÿ~ð^N&ºcfff0moÐ?/X°@CÛ?üðÃÄyoÝß{Ÿ¸ÿï³Ï>“¯¿þZ#P#M.ºè";v¬˜ÄÊd èÕ&`±ÜvÛmÒ·o_!ê4u<ð@-GÔl¢\9RŽ>úh”Ó¡C‡`߬¹sç à!,; 9묳äÖ[o•*UªÈäÉ“å”SN‘îÝ»›ÿ©+!ݺu“»îºK£\ÛsúIÔëvíÚi»Íš5Óðí\ ‘¨KXvY:wî¬Q²˜ììlÎM¸@9ñÄeÉ’%òàƒJŸ>}dΜ9Ú{ï½WÊ”)£ÏÂóqÄ!›kžûÊ+¯Ô>°r@š%BÈ:TÃÈ_uÕUrá…Ê‹/¾¨ÑÅ‘ŒD ¯]»¶¼÷Þ{zÞ³gO Ïá©Yšk®¹F.½ôRy饗tàM… „ˆäÕ«W× @YžŸÈå6|=}áÞК5kô¹L€ihþÀè}˜kÜ"õÙ>O¬Ç¸%j×øŽ;î“N:I $]»vÕìãÇ×Å&еÞuF°á_~ùEóõ×_—&Mš(iç7ÞЄiH"bÂZB-LŸ>]}ôQ騱£¼üòËš ÅÎõ† TeQ­Z5 ÷¼eË–òí·ßê ž}ÕªU 2Ê yÎ8ã a ?üðCU‹S§NUp1€-Z´ÐþQ–0ï ËLL&“ À#9éëk¯½¦àåùLÔnª)|é[Û áóÏ?W^qN8x€~çwší C† QIIß.\(=ö˜~öîÝ[yÉdb"Â;&u‘ž˜€'++KdžغœC‘É 1<3|åÞðB0!Þzë-!Àó„ tâ3 ½ã–WŸµ‘8¾âm#˜I5jÔУ=Ç6;óÌ3eÅŠÊZ¿~}•:0€ (O>ùdmƒ¨×‘"]׫WOËÓŒ%`1ÔªU+)[¶¬Î` Ûž|ðÁ*‰n¸áÒ ÆB%K–”‹/¾X{ä‘GjÛuëÖU‰Š=ˆ]h¸kY¾Q¿xÚÐ ÔüùóeæÌ™úÔoÚ´©J¦`EsBÿ‘zÓ¦MÁ‹HMÀûÛo¿éDà™hjذ¡T®\Y¥™ÞH]xŒVa ˆNÛð› ºüòËåì³ÏÖ ÿ!;œ—.]Z%(Úƒ±pL$L’š5kʘ1cô<;“&|Ü¢õ™öc%_Àc  "EŠèƒxoFXvéÁÆ$C©R¥¤ÿþ:Óx Ôˆ¥bÅŠÙÓàÉf æ á ›NÚæÍ›m‘\ÇaÆé`£bÏ<óŒš$ø1Ò*Z´¨ª,ÀÖ£GUçžzªæÙ/Òûõ†Ô! rëÖ­Ô6Ÿòûï¿¿­¦G {ïÍyÜÎExÞkûp *†BˆpìT|ÅWèâJPƒØ@¨>K¶˜ŠŒÛMI: ÁàdHP;k9ÂdÚ´ç7ÖÁ$HWÿž{î±· 9Ò6çñÇWµ…DÄvCb@¶OÿHΉ'j¿ž|òIUƒ˜Üé 0)o?ÔØjH<^ˆ‰I1ö‘NHY$U^dÛ«h&fÛ›H|Ô2mA¶Ÿœ7hÐ@F­ÏeóP•çw—Ê„¦CóæÍÕŽd˜(8˜"áãoŸõF¾B /^œð^-¢í•W^ 2„AǰE"Î-*pYÆc‹1Ì@Ê[`Ž>úHAáUÕ¶½HGf5KyMÿQYœ$omûØeØd6I%+f€7-˜å„þ!½{<ïà«]x]$Nõ\Ãóï1eè;¼Fzó,LôHãOŸQãHé.]ºØ[渼Î'žxBg—!¨8fR8ym•ð<®#å3«c‘mZ»Ð¦åu„éäö©,(œ¬sž¾»ëxúçm+ol>Þ76.ËY±’µ)6àu¤qóÛgmÔ|嫪¥QÜx–.¼aoíÈrw 1Ú#ª)‰PaHÔž%f= ‰6H¶l¼G$ª ƒ¯õç}†híá ã™Frª¢Õ‹55‹ ޵?±¶›_åò¶´}ÞFÆ :nÅ ò g‚O8E³œ…f»$A]c‘ÂùMã¬/².‡š7nœç˜*yýcáÂãÇ”ØS„g¬ ã™ó]âí)FÆÚ.‹ÂÏ=÷œ.0ÛåêâÔDÚ•`¶R¥JºÖU§NU-x{xoÖqa ¯#œ–&zõê¥;¬™YzóÍ7u­ïEW|xHW¢íJàL`—~üñÇêPPÀÇB8;xx€<òÈ#º„Á Þº—Pµl«á”à _rÉ%jÜ#å@ì†àÅ29(Çd`+ @³¸Ž]ÅîÀC¢²æ‡—M¿ì’÷~©|žvÀc0n¹å]÷n]EÛ•`Ù€eŽråÊ©tb¹‚½N‘ÎÚ Æ,Ù”pUÉj¿•²ÔgG†¶¤Øt¨>̯]ÇZäÕW_­÷cYÀCHE¶ß°W±Q±#Ó‰ÒxH“Í|– h»»Û%ÀöÄŽãÃÚ@<€ÉK,"Û=Q¯íÝuñ–§o¬UZ»•k¤ äµÏ¸¿}oýT>OKà1 ,^#xŠeWB †}!)xÖ%ñQ{€Ê¾ìÀzÄZŽöÄî|¤%»9wg‚¥ Ô.“úÂl©q](mXp,±ðó¼F†}Gû‘ˆ>¤í‘‹deP¬»‘úJpV-Ú2H4 MySQL++ Reference Manual MySQL++: wnp_connection.h File Reference
MySQL++  3.3.0
wnp_connection.h File Reference

Declares the WindowsNamedPipeConnection class. More...

#include "connection.h"

Go to the source code of this file.

Classes

class  mysqlpp::WindowsNamedPipeConnection
 Specialization of Connection for Windows named pipes. More...
 

Detailed Description

Declares the WindowsNamedPipeConnection class.

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1MultiStatementsOption.html000644 000765 000024 00000031104 14042362132 027125 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::MultiStatementsOption Class Reference
MySQL++  3.3.0
mysqlpp::MultiStatementsOption Class Reference

Enable multiple queries in a request to the server. More...

#include <options.h>

Inheritance diagram for mysqlpp::MultiStatementsOption:
Collaboration diagram for mysqlpp::MultiStatementsOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::DataOption< T >
typedef T ArgType
 Alias for template param.
 
- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 
- Protected Member Functions inherited from mysqlpp::DataOption< T >
 DataOption (const T &arg)
 Construct object.
 
- Protected Attributes inherited from mysqlpp::DataOption< T >
arg_
 The argument value.
 

Detailed Description

Enable multiple queries in a request to the server.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/inherit_graph_6.png000644 000765 000024 00000011345 14042362133 022354 0ustar00tangentstaff000000 000000 ‰PNG  IHDR=1¨.~RsRGB®ÎéŸIDATxí ÔUSÇwR’„JƒyžËQV‘¹¾eX†2[dJ>JdÊLE"²ˆ)ÊBIB¤ÁÜ€’ ¥B…Ríïù=}û®óÞ÷œ{Ï}»÷vï}÷³Ö}Ï9{ﳇÿ9ç9Ïþ?Ï>o+b¼x<J‚@ÕJ2N?L€GÀ# x¥ço€G R!à•^¥ºÜ~°€Wzþðx*Õ“Gûâ‹/šÓN;-9Ù{²†ÀªU«L5²VŸ¯È# 唞;yøðán×o=YAà“O>1÷ÜsOVêò•x*Š@¤Ò;õÔS+Z§?Ï#Š€·îBañ‰yFÀszyÜ7çðlX¼ÒÛ°øûÖ=<#à•^ž÷Íy<HNoÃvË·î(<~úé'3iÒ¤Âë˜ïQ$»ì²‹Ùwß}Ëæ³ö6(âµe-n0© ÷‡j/»ì²¼ôQ¼ö¤“N²7¶[mµ•mÕª•3fL^ÚÎU#·Ýv›å&ßÿ½mß¾½]°`AXvÆi¯¼òŠÞ[²’ñ¹…p‚ë?χÿݺu+wë½¥7sæLóÁ”Õä989r¤9ýôÓÍ^{íeºwïnV¬XaH;öØcÍóÏ?¯y9h6çU~ýõ×fíÚµ¡íüñÇfìØ±æ¯¿þ ͯ¬‰>ΰ8®ü!‡ÚÑõæôV®\iæÎkÖ¬YcÄ20Ÿþ¹6ăôÅ_˜O?ýÔüûᅳöÃ?˜%K–”éÈ?þh~ÿý÷DÚÔ©S͇~¨J%‘(;Ë—/Wå¶xñb}çÍ›ÌÖý?ÿüÓð ÒÓY³f%Êp£þúë¯züÍ7ߘ>úÈæD^æï¿ÿN(€àñ?ÿüc®¸â sÐAiØ¿þúëÍûï¿oöÞ{osà 7¸jôüÏ>û̼ñÆfþüù‰ôLpJ×W*_°¢­ Òâ\®2{ölóË/¿è~TyÍ”?K—.5ï¼óŽA ¦0æ%†ªó|žG `H¶ý2ÞŠòPS¿M›6 “Ÿi_»víLJz¨•‡Ñ¶lÙÒ¶nÝ:ÑäÂ… mµjÕì#âˆ#y”Ťùo¿ý¶æ¿ûî»åŽÅÚѼ·ÞzKó‚æÌ™c_{í5+JÅŠB×ñÑO×ß›nºI‹g‚Sº¾¾÷Þ{vË-·´o¼±þ6ß|sņ¦OŸ®}•8KÅñ™gž±©ÊƒÙŽ;îh7Ûl3-/7¦=óÌ3u<®.Qž:êÚtÓM­ÄÛiG}´•–æÅùã¦‡Ü Å(ÅÞÿbÄ|}ú|ðÁÛ°éíz[zN{שSÇ÷cî¿ÿ~3qâDƒeƒ÷ÜsÏ©åöÕW_™³Ï>ÛÈhDÙéirQ:5ìÓ§iÒ¤‰Zjœ·Í6Û˜G}T­¶sÏ=׈bSK’鬳Ø\ÛÁ-–ÊÃ?¬VÛ“O>iø‰RJÙvÛmÕ²Ä ÂjìÑ£‡æ‰ÂÕi+[$xLYdŸ}öÑmð( sâ‰'QÔæ–[n1ŒS¡Z´ƒ6—™ñãÇ'N‰ƒ“+ÕWú|Øa‡©‡åµçž{šÛo¿Ý¦[,nðíСƒŽ1Uùo¿ýVWJ`qs¸fœÊ\pÁ梋.2¿ýö›Z„ò¢ÒñËù}@Á#¬I+jé}üñÇZ•L)Õ À*@dº©Ç¼%åaQ+aàÀš×¶m[+ C÷¯»î:»É&›Ø;î¸C­¬~“'OÖóGŒ¡åøÓ«W¯HKO8·D9vvØaÕöÎzrÖ#y´‰S"<ðÀÚQ¶)‹ŠÒ¶Î²t±:±F¥§t}ÅÁ ÓKK]Â'Ú=öØÃ~øáÚ¤³Î^~ùe×›ª<–ÞvÛm—(+4…Z©W_}uÂjÄÒ»ûî»QàV( ý‰Bµ2½Oœ›n‡{@½®éÊb~±÷¿1ÍeŸrné5hÐ@|õêë|#;ï¼³c!28#S2%þ_zé%µ°€°þQ º¥¸ß~û,(x7Ç‹IIgé‰IDÉ•I/k²$cûí·Oäo½õÖfÑ¢E‰ã¨]wÝU³Þ|óÍrEdÊ«–*d?–îP¦ ¸`9‰ƒ“+ÕWyú$/ Ó¿³zõjwJb ×è$]ù ¶XÞ\;8¾ 8¯S§Næä“OÖß”)SŒÐ Áb9ÙçÞY´hYNêö•V>²6½åa‰#(9áÍÌã?n„¿3¢§¡<„ÿÒ©+αÀÔA€bB~þùgÝòç»ï¾Kì'ïKåE4mÚ4ªº´`>ŽˆT ÔôV8BuN¸4· H§ÒÂu,Ž'xx™ŽÛˆ‹u„õj€Ä¥—^ªShœ>8X¢$Nyçø ±®Õì3é 6T ˜¾ó"â'©N‡Éυ̘1ßôî=Rh…^fР ¹h¢¤ë”Ù–¹üòËs:F™Ù¨!CCØŠêÊ+¯Ìi2­<ž¦Ê´Öåá¿°zöìiø¨LiµôO<¡àÀçÉtM­B VÊ® Î é±Ç‹l… '_‡å!>þøãåej¬õð -q^˜N8AóPN\¸+$xÌO_xáUÄ<øüP<Ô!SA=‡ºà°¬h«©èÇ¢úŠ'Γí¨Q£4t†ö¢$]y,j¸O”¬¿o5á9AalX”ô ëøõ×_W\%N1Xl½÷çÌY(üâXQä}ä!êg† ™(V§™©°Üùçâå¸ÓN;éOh#”Kâ˜t¸}¢" J’çÔåôDYiUb…)o‡…Ñ®ÇðTNà½+Ä%©‡N Ï-žW±®¬X1š÷nŒsÄR²2+ÃéÉ”RË9O¤+‹õ®»îÒ<Ç“q.õÈ4\ùD …ÑüTÞ[ HŒ•ø¼„ç’:𚊲Ðóùƒ7nÍõïª(sÍwœ^œÒõ•~€XÈMgű¡ã‘0õâÒ¾ó¸Òxªòby«÷o°Ã塇Ò>ãQÖ5`Àõ“Æý²eË´lœ?QœØ‚Kí€ãl›6}mÆ]mÓ¦×è–}~ÍšýW¨GÅi"§e¢úÕ¨¼<”O•—…å¹Y€…7G“z ÁoÂÑÊ‹ºLUDÍHƒKå™q÷¬ËàHˆ–ræ2»°b¹k\²‹l€[ÇÓ./G+3+ ÑnE1Y mÒc8ož;Ò‚ÂX8!RAfQ–q…{IœjÁ$í+\>ÂøxF8>Úqäô™>Q²H˜›Ǩú’óÒGqzpme$S¥Wæä˜äa8Š…‹6xy[èEѸ•`“(=Èuêá ^8§HÈk.xðü8û\ ‰Ó›&ù¢s>7a,ÜÐÜ‘8}åF Þ¸ÜL©Pºò<˜<ˆÉTrÿyxPàa×(¹lòqPi,^¼Ü:I^<ýU±5iÒÍ6j´NÉ9eç¶ÅªôÜ‹®ØÃ¹¸Ž]ºtÑKšl ¸ë¦ô!Ä aÃÇ/M^ÚÔ)–“†Ã áÙíܹ³¦"Eh›3`´@Œ?QJ/¯+2˜:ËT>Yp‚H,_r²3   +L=A"?¹L²³#9?Õ1SnÂg¢Ç N˜lIT_q ñsJÒ•—›JW›¤ªƒÝOþÃJ” B9bH%ðß „øÚš5k*'Gþ³Ï>«éüA19«£/¦slyä‘Ú><²Ç¡KtüÔ;lØ0„'x| Ÿ,‹,*¥Ç %ެ"X•9‡›ÅÝ0Á .Z”צAÒQù¼õ‚âär¼q^<øàƒÉYY?N×׬7˜‡ ëÕ«%VÉnâxé-ÖÃxñüN’k¯Š8dlÂâ‹êJçÎ-Åk½ÎéU&×éB;˜ŽËÏPÒµ'L‰ÞO¹N9å hÇÒAPš8æpŒ±ä‘ ~V! 9B©DIò¬!á\QmE¥ãtÂŒ …‡p/8ËŸ)–ž-ѺuëfÅhÉ»÷Ö ¸Ð¶Ü,Eç…*4côgíÚ•âÍna†ï"/À[eK¡-ë™5jT‹QCñašG˜â[8WœqËÄiacù¹ð(¶â`«p$D°ñ®FðŒÙ‡F™‘Ü|óÍ *Àb>óFbßý.¼ðB#DªžÃGÛ „vãÞ¸L­ùÐSŽdá¢Ȳ±(IîST¹RI¯_¿¶ðJ­Ì˜1ÝÌäÉ=Í5×´>t]\f©*ÀT×®Pù賬^JL=ƒá\©Æ³>y𖄃aùbå²Ì²cÇŽå‚æ+ÒF¥RzâÒÏ@±’!ÕT8 HÊñ \€æÍ›«Ãn)ßôÓÕLM™F¸ÿúEüÜ9眣œ $¬„ÓDò!8j ­YéPÙ¤I“zÂõ´•uÛ≠qÝ%²iРŽÂ°jUù'¥„³qÖ1µ•¨u2¸1òEd/aR†¯±Î›i!ŽÖº‹wU90f+A ZVÜ—|!¨~ýúæ©§žÒ—¸| $Qœ5ãÔƒs¥uëÖæÖ[oMäá`À ‰ÀÍc ° J°-—Nš_pŸ|Ò]ž;vçÁûó¼ãJáe‰j™©¼+›ñ6Ùó›•ä6s},Ÿ¸²]»vÕ/“ð•YJ¥ëJ£Úãz -kr ák# Ù«ñDBJ[YÊ¥Õ ©¬1t|‰…°¹y´¬[ƒìƒxÔôK4Ô%ž2+N(§,[ŒûÁ•¸ýŸ2e®¬]a÷”œ•«Hÿ3íL1‡se:Ö8å‰Ó#n/e*Q!+%k鱪€U„ÀàµbÊôg…|m¹ü'¤3|]8/d0 DÖÕ „'ÀE¸)n*/Tr“x´™ó½?ÞrwÞy§zýXïÊÔ¸2JóæÍä-ÿ±€£C1J¹ ¤á\n…Op\.œ+¸Ûå»p.çpéa[ÎŲÊ0ÁĹP(‚ÓG h¶¤z¶**´zøÀ&ŸBb:ɺ^¦´Ù”\z¡ø˜ ¥w,¥#<eHœ–—ÒDÀ‡såﺖ¬Ò#’ïêÁEsÌ1>Ø#ÈPb‘ÖWÂø‹°:ñBaòiy'„>ÈLÝa¹-œ Á£ð.ìóM<¸>/¥‹@!‡s•ê%;½eåÎâå›|ê\@q`¡±%æ.’‰Š€T¦ÆLa ¨/¾øb%‹‰ÎGq{ñxÖ’µô‚ÐÈÚ?ï_¿~ú¥¬?,©¨¨ò0+.èy îÓN:/Ô—_~™ˆ/‚‰òBá±Â›6nÜ8å ƒcðû@v¨‚G$XÖKb’’ƒEJbŸðœùâôXÓ_EÊæ»Où»kgÝŠ†ŽúÙ-YDî’‹fëúsеÊ^ V²û˜¼,¯RXza—&Ÿ öñBñK%ùîSª¾ø¼hÜúÕè>§¨´J¯/Šï[a"€C©Ôg@…‰|v{U²ŽŒìÂäkóxJ¯ôJåJúqx<±ðJ/L¾GÀ#P*x¥W*WÒÃ#àˆ…@¤#ƒ°/l"@ÈŽÀ†F œ¥GXEEÿeᆌo¿°àÓßÜ[ÁÏ v}ïJrÁÉ¥8H?&€GÀ#à(gé¹ ¿õx<¥ˆ€Wz¥xUý˜<H¼Ò‹„Ægx<¥ˆ€Wz¥xUý˜<Hþ-å¼…¾Ã½IEND®B`‚mysql++-3.3.0/doc/html/refman/functions_r.html000644 000765 000024 00000014514 14042362132 022015 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
MySQL++  3.3.0
Here is a list of all documented class members with links to the class documentation for each member:

- r -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1IgnoreSpaceOption-members.html000644 000765 000024 00000015344 14042362132 027622 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::IgnoreSpaceOption Member List

This is the complete list of members for mysqlpp::IgnoreSpaceOption, including all inherited members.

arg_mysqlpp::DataOption< T >protected
ArgType typedefmysqlpp::DataOption< T >
DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/manip_8h.html000644 000765 000024 00000042320 14042362132 021163 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: manip.h File Reference
MySQL++  3.3.0
manip.h File Reference

Declares the Query stream manipulators and operators. More...

#include "common.h"
#include "myset.h"
#include "stadapter.h"
#include <iostream>

Go to the source code of this file.

Enumerations

enum  mysqlpp::quote_type0 { mysqlpp::quote }
 
enum  mysqlpp::quote_only_type0 { mysqlpp::quote_only }
 
enum  mysqlpp::quote_double_only_type0 { mysqlpp::quote_double_only }
 
enum  mysqlpp::escape_type0 { escape }
 
enum  mysqlpp::do_nothing_type0 { mysqlpp::do_nothing }
 
enum  mysqlpp::ignore_type0 { mysqlpp::ignore }
 

Functions

SQLQueryParms & mysqlpp::operator<< (escape_type2 p, SQLTypeAdapter &in)
 Inserts a SQLTypeAdapter into a stream, escaping special SQL characters. More...
 
ostream & mysqlpp::operator<< (escape_type1 o, const SQLTypeAdapter &in)
 Inserts anything that can be converted to SQLTypeAdapter into a stream, escaping special SQL characters as needed.
 

Detailed Description

Declares the Query stream manipulators and operators.

These manipulators let you automatically quote elements or escape characters that are special in SQL when inserting them into a Query stream. They make it easier to build syntactically-correct SQL queries.

This file also includes special operator<< definitions for a few key MySQL++ data types, since we know when to do automatic quoting and escaping for these types. This only works with Query streams, not regular std::ostreams, since we're only concerned with making correct SQL, not with presentation matters.

test/test_manip.cpp exercises the mechanisms defined here.

Enumeration Type Documentation

◆ do_nothing_type0

The 'do_nothing' manipulator.

Does exactly what it says: nothing. Used as a dummy manipulator when you are required to use some manipulator but don't want anything to be done to the following item. When used with SQLQueryParms it will make sure that it does not get formatted in any way, overriding any setting set by the template query.

Enumerator
do_nothing 

insert into a std::ostream to override manipulation of next item

◆ escape_type0

The 'escape' manipulator.

SQL-escapes following argument if it is of a data type that may require escaping when inserted into a Query or SQLQueryParms stream. This is useful with string types, for example, to avoid bad SQL when they contain special characters like single quotes, nulls, and newlines. Data types like integers which never benefit from escaping don't get run through the escaping routine even if you ask for it.

◆ ignore_type0

The 'ignore' manipulator.

Only valid when used with SQLQueryParms. It's a dummy manipulator like the do_nothing manipulator, except that it will not override formatting set by the template query. It is simply ignored.

Enumerator
ignore 

insert into a std::ostream as a dummy manipulator

◆ quote_double_only_type0

The 'double_quote_only' manipulator.

Similar to quote_only manipulator, except that it uses double quotes instead of single quotes.

You might care to use it when you have MySQL's ANSI_QUOTES mode enabled. In that mode, single quotes are used only for string literals, and double quotes for identifiers. Otherwise, quote_only and quote are quite sufficient.

Enumerator
quote_double_only 

insert into a std::ostream to double-quote next item

◆ quote_only_type0

The 'quote_only' manipulator.

Similar to quote manipulator, except that it doesn't escape special SQL characters.

Enumerator
quote_only 

insert into a std::ostream to single-quote next item

◆ quote_type0

The standard 'quote' manipulator. It is the most widely useful manipulator in MySQL++.

Insert this manipulator into a Query or SQLQueryParms stream to put single quotes around the next item in the stream, and escape any characters within it that are special in SQL, if the data type of the next item in the stream may require it. By contrast, Date objects only require escaping, not quoting, and integers never require either. The manipulators won't do work they know is not necessary to ensure syntactially-correct SQL.

Enumerator
quote 

insert into a Query stream to single-quote and escape next item

Function Documentation

◆ operator<<()

MYSQLPP_EXPORT SQLQueryParms & mysqlpp::operator<< ( escape_type2  p,
SQLTypeAdapter in 
)

Inserts a SQLTypeAdapter into a stream, escaping special SQL characters.

We actually only do the escaping if in.escape_q() returns true but in.dont_escape is not. If that is not the case, we insert the string data directly.

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Set.html000644 000765 000024 00000022655 14042362132 023340 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::Set< Container > Class Template Reference
MySQL++  3.3.0
mysqlpp::Set< Container > Class Template Reference

A special std::set derivative for holding MySQL data sets. More...

#include <myset.h>

Inheritance diagram for mysqlpp::Set< Container >:
Collaboration diagram for mysqlpp::Set< Container >:

Public Member Functions

 Set ()
 Default constructor.
 
 Set (const char *str)
 Create object from a comma-separated list of values.
 
 Set (const std::string &str)
 Create object from a comma-separated list of values.
 
 Set (const String &str)
 Create object from a comma-separated list of values.
 
 operator std::string () const
 Convert this set's data to a string containing comma-separated items.
 
std::string str () const
 Return our value in std::string form.
 

Detailed Description

template<class Container = std::set<std::string>>
class mysqlpp::Set< Container >

A special std::set derivative for holding MySQL data sets.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/closed.png000644 000765 000024 00000000204 14042362133 020545 0ustar00tangentstaff000000 000000 ‰PNG  IHDR à‘KIDATxíÝm @!†ÑGk™É7À-`&séts¦Àñþòð@åk}ª2€… P%Á_Ëþ¿N² .:0Dk¥‹Â›x" Ö›)¡xÒ5õIEND®B`‚mysql++-3.3.0/doc/html/refman/row_8h_source.html000644 000765 000024 00000234400 14042362132 022250 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: row.h Source File
MySQL++  3.3.0
row.h
Go to the documentation of this file.
1 
4 /***********************************************************************
5  Copyright (c) 1998 by Kevin Atkinson, (c) 1999-2001 by MySQL AB, and
6  (c) 2004-2008 by Educational Technology Resources, Inc. Others may
7  also hold copyrights on code in this file. See the CREDITS.txt file
8  in the top directory of the distribution for details.
9 
10  This file is part of MySQL++.
11 
12  MySQL++ is free software; you can redistribute it and/or modify it
13  under the terms of the GNU Lesser General Public License as published
14  by the Free Software Foundation; either version 2.1 of the License, or
15  (at your option) any later version.
16 
17  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
18  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
20  License for more details.
21 
22  You should have received a copy of the GNU Lesser General Public
23  License along with MySQL++; if not, write to the Free Software
24  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
25  USA
26 ***********************************************************************/
27 
28 #if !defined(MYSQLPP_ROW_H)
29 #define MYSQLPP_ROW_H
30 
31 #include "common.h"
32 
33 #include "mystring.h"
34 #include "noexceptions.h"
35 #include "refcounted.h"
36 #include "vallist.h"
37 
38 #include <vector>
39 #include <string>
40 
41 namespace mysqlpp {
42 
43 #if !defined(DOXYGEN_IGNORE)
44 // Make Doxygen ignore this
45 class FieldNames;
46 class MYSQLPP_EXPORT ResultBase;
47 #endif
48 
62 
63 class MYSQLPP_EXPORT Row : public OptionalExceptions
64 {
65 private:
70  typedef bool Row::*private_bool_type;
71 
72 public:
77  typedef std::vector<String> list_type;
78 
80  typedef list_type::const_iterator const_iterator;
81 
83  typedef list_type::const_reference const_reference;
84 
86  typedef list_type::const_reverse_iterator const_reverse_iterator;
87 
89  typedef list_type::difference_type difference_type;
90 
98 
103 
109 
111  typedef list_type::size_type size_type;
112 
114  typedef list_type::value_type value_type;
115 
117  Row() :
118  initialized_(false)
119  {
120  }
121 
123  Row(const Row& r) :
125  data_(r.data_.begin(), r.data_.end()),
126  field_names_(r.field_names_),
127  initialized_(r.initialized_)
128  {
129  }
130 
137  Row(MYSQL_ROW row, const ResultBase* res,
138  const unsigned long* lengths, bool te = true);
139 
141  ~Row() { }
142 
147  const_reference at(size_type i) const;
148 
150  const_reference back() const { return data_.back(); }
151 
154  const_iterator begin() const { return data_.begin(); }
155 
157  bool empty() const { return data_.empty(); }
158 
161  const_iterator end() const { return data_.end(); }
162 
169  equal_list(const char* d = ",", const char* e = " = ") const;
170 
191  template <class Manip>
193  const char* e, Manip m) const;
194 
200  field_list(const char* d = ",") const;
201 
208  template <class Manip>
209  value_list_ba<FieldNames, Manip> field_list(const char* d,
210  Manip m) const;
211 
220  template <class Manip>
221  value_list_b<FieldNames, Manip> field_list(const char* d, Manip m,
222  const std::vector<bool>& vb) const;
223 
234  const char* d, const std::vector<bool>& vb) const;
235 
244  const std::vector<bool>& vb) const;
245 
253  template <class Manip>
254  value_list_b<FieldNames, Manip> field_list(const char *d, Manip m,
255  bool t0,
256  bool t1 = false, bool t2 = false, bool t3 = false,
257  bool t4 = false, bool t5 = false, bool t6 = false,
258  bool t7 = false, bool t8 = false, bool t9 = false,
259  bool ta = false, bool tb = false, bool tc = false) const;
260 
269  const char *d, bool t0,
270  bool t1 = false, bool t2 = false, bool t3 = false,
271  bool t4 = false, bool t5 = false, bool t6 = false,
272  bool t7 = false, bool t8 = false, bool t9 = false,
273  bool ta = false, bool tb = false, bool tc = false) const;
274 
282  bool t0,
283  bool t1 = false, bool t2 = false, bool t3 = false,
284  bool t4 = false, bool t5 = false, bool t6 = false,
285  bool t7 = false, bool t8 = false, bool t9 = false,
286  bool ta = false, bool tb = false, bool tc = false) const;
287 
289  size_type field_num(const char* name) const;
290 
292  const_reference front() const { return data_.front(); }
293 
296  size_type max_size() const { return data_.max_size(); }
297 
299  Row& operator =(const Row& rhs)
300  {
301  data_.assign(rhs.data_.begin(), rhs.data_.end());
302  field_names_.assign(rhs.field_names_);
303  initialized_ = rhs.initialized_;
304  return *this;
305  }
306 
314  const_reference operator [](const char* field) const;
315 
327  const_reference operator [](int i) const
328  { return at(static_cast<size_type>(i)); }
329 
347  operator private_bool_type() const
348  {
349  return data_.size() && initialized_ ? &Row::initialized_ : 0;
350  }
351 
354  const_reverse_iterator rbegin() const { return data_.rbegin(); }
355 
358  const_reverse_iterator rend() const { return data_.rend(); }
359 
361  size_type size() const { return data_.size(); }
362 
371  template <class Manip>
373  Manip m = quote) const
374  {
375  return value_list_ba<Row, Manip>(*this, d, m);
376  }
377 
384  template <class Manip>
386  const std::vector<bool>& vb, Manip m = quote) const
387  {
388  return value_list_b<Row, Manip>(*this, vb, d, m);
389  }
390 
399  const std::vector<bool> &vb) const
400  {
401  return value_list_b<Row, quote_type0>(*this, vb, ",", quote);
402  }
403 
410  template <class Manip>
411  value_list_b<Row, Manip> value_list(const char *d, Manip m,
412  bool t0, bool t1 = false, bool t2 = false, bool t3 = false,
413  bool t4 = false, bool t5 = false, bool t6 = false,
414  bool t7 = false, bool t8 = false, bool t9 = false,
415  bool ta = false, bool tb = false, bool tc = false) const
416  {
417  std::vector<bool> vb;
418  create_vector(size(), vb, t0, t1, t2, t3, t4, t5, t6,
419  t7, t8, t9, ta, tb, tc);
420  return value_list_b<Row, Manip>(*this, vb, d, m);
421  }
422 
430  value_list(const char *d, bool t0, bool t1 = false, bool t2 = false,
431  bool t3 = false, bool t4 = false, bool t5 = false,
432  bool t6 = false, bool t7 = false, bool t8 = false,
433  bool t9 = false, bool ta = false, bool tb = false,
434  bool tc = false) const
435  {
436  std::vector<bool> vb;
437  create_vector(size(), vb, t0, t1, t2, t3, t4, t5, t6,
438  t7, t8, t9, ta, tb, tc);
439  return value_list_b<Row, quote_type0>(*this, vb, d, quote);
440  }
441 
449  bool t1 = false, bool t2 = false, bool t3 = false,
450  bool t4 = false, bool t5 = false, bool t6 = false,
451  bool t7 = false, bool t8 = false, bool t9 = false,
452  bool ta = false, bool tb = false, bool tc = false) const
453  {
454  std::vector<bool> vb;
455  create_vector(size(), vb, t0, t1, t2, t3, t4, t5, t6,
456  t7, t8, t9, ta, tb, tc);
457  return value_list_b<Row, quote_type0>(*this, vb, ",", quote);
458  }
459 
466  template <class Manip>
467  value_list_b<Row, Manip> value_list(const char *d, Manip m,
468  std::string s0, std::string s1 = "", std::string s2 = "",
469  std::string s3 = "", std::string s4 = "",
470  std::string s5 = "", std::string s6 = "",
471  std::string s7 = "", std::string s8 = "",
472  std::string s9 = "", std::string sa = "",
473  std::string sb = "", std::string sc = "") const
474  {
475  std::vector<bool> vb;
476  create_vector(*this, vb, s0, s1, s2, s3, s4, s5, s6, s7, s8,
477  s9, sa, sb, sc);
478  return value_list_b<Row, Manip>(*this, vb, d, m);
479  }
480 
488  const char *d,
489  std::string s0, std::string s1 = "", std::string s2 = "",
490  std::string s3 = "", std::string s4 = "",
491  std::string s5 = "", std::string s6 = "",
492  std::string s7 = "", std::string s8 = "",
493  std::string s9 = "", std::string sa = "",
494  std::string sb = "", std::string sc = "") const
495  {
496  std::vector<bool> vb;
497  create_vector(*this, vb, s0, s1, s2, s3, s4, s5, s6, s7, s8,
498  s9, sa, sb, sc);
499  return value_list_b<Row, quote_type0>(*this, vb, d, quote);
500  }
501 
509  std::string s0,
510  std::string s1 = "", std::string s2 = "",
511  std::string s3 = "", std::string s4 = "",
512  std::string s5 = "", std::string s6 = "",
513  std::string s7 = "", std::string s8 = "",
514  std::string s9 = "", std::string sa = "",
515  std::string sb = "", std::string sc = "") const
516  {
517  std::vector<bool> vb;
518  create_vector(*this, vb, s0, s1, s2, s3, s4, s5, s6, s7, s8,
519  s9, sa, sb, sc);
520  return value_list_b<Row, quote_type0>(*this, vb, ",", quote);
521  }
522 
523 private:
524  list_type data_;
525  RefCountedPointer<FieldNames> field_names_;
526  bool initialized_;
527 };
528 
529 } // end namespace mysqlpp
530 
531 #endif // !defined(MYSQLPP_ROW_H)
Interface allowing a class to have optional exceptions.
Definition: noexceptions.h:72
Creates an object that acts as a reference-counted pointer to another object.
Definition: refcounted.h:83
Base class for StoreQueryResult and UseQueryResult.
Definition: result.h:111
Manages rows from a result set.
Definition: row.h:64
~Row()
Destroy object.
Definition: row.h:141
const_reverse_iterator reverse_iterator
mutable reverse iterator type
Definition: row.h:108
std::vector< String > list_type
type of our internal data list
Definition: row.h:77
const_reverse_iterator rbegin() const
Return reverse iterator pointing to first element in the container.
Definition: row.h:354
const_iterator iterator
iterator type
Definition: row.h:97
list_type::const_reverse_iterator const_reverse_iterator
const reverse iterator type
Definition: row.h:86
value_list_b< Row, quote_type0 > value_list(std::string s0, std::string s1="", std::string s2="", std::string s3="", std::string s4="", std::string s5="", std::string s6="", std::string s7="", std::string s8="", std::string s9="", std::string sa="", std::string sb="", std::string sc="") const
Get a list of the values in this row.
Definition: row.h:508
list_type::size_type size_type
type of returned sizes
Definition: row.h:111
value_list_ba< Row, Manip > value_list(const char *d=",", Manip m=quote) const
Get a list of the values in this row.
Definition: row.h:372
const_iterator begin() const
Return a const iterator pointing to first element in the container.
Definition: row.h:154
list_type::value_type value_type
type of data in container
Definition: row.h:114
Row(const Row &r)
Copy constructor.
Definition: row.h:123
value_list_b< Row, Manip > value_list(const char *d, Manip m, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) const
Get a list of the values in this row.
Definition: row.h:411
list_type::difference_type difference_type
type for index differences
Definition: row.h:89
list_type::const_reference const_reference
constant reference type
Definition: row.h:83
value_list_b< Row, quote_type0 > value_list(const std::vector< bool > &vb) const
Get a list of the values in this row.
Definition: row.h:398
value_list_b< Row, Manip > value_list(const char *d, Manip m, std::string s0, std::string s1="", std::string s2="", std::string s3="", std::string s4="", std::string s5="", std::string s6="", std::string s7="", std::string s8="", std::string s9="", std::string sa="", std::string sb="", std::string sc="") const
Get a list of the values in this row.
Definition: row.h:467
const_iterator end() const
Return a const iterator pointing to one past the last element in the container.
Definition: row.h:161
Row()
Default constructor.
Definition: row.h:117
size_type size() const
Get the number of fields in the row.
Definition: row.h:361
list_type::const_iterator const_iterator
constant iterator type
Definition: row.h:80
value_list_b< Row, Manip > value_list(const char *d, const std::vector< bool > &vb, Manip m=quote) const
Get a list of the values in this row.
Definition: row.h:385
const_reference back() const
Get a reference to the last element of the vector.
Definition: row.h:150
value_list_b< Row, quote_type0 > value_list(const char *d, std::string s0, std::string s1="", std::string s2="", std::string s3="", std::string s4="", std::string s5="", std::string s6="", std::string s7="", std::string s8="", std::string s9="", std::string sa="", std::string sb="", std::string sc="") const
Get a list of the values in this row.
Definition: row.h:487
value_list_b< Row, quote_type0 > value_list(const char *d, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) const
Get a list of the values in this row.
Definition: row.h:430
const_reference front() const
Get a reference to the first element of the vector.
Definition: row.h:292
size_type max_size() const
Return maximum number of elements that can be stored in container without resizing.
Definition: row.h:296
value_list_b< Row, quote_type0 > value_list(bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) const
Get a list of the values in this row.
Definition: row.h:448
const_reference reference
reference type
Definition: row.h:102
const_reverse_iterator rend() const
Return reverse iterator pointing to one past the last element in the container.
Definition: row.h:358
bool empty() const
Returns true if container is empty.
Definition: row.h:157
This file includes top-level definitions for use both internal to the library, and outside it....
@ quote
insert into a Query stream to single-quote and escape next item
Definition: manip.h:72
Declares String class, MySQL++'s generic std::string-like class, used for holding data received from ...
Declares interface that allows exceptions to be optional.
Declares the RefCountedPointer template.
Holds two lists of items, typically used to construct a SQL "equals clause".
Definition: vallist.h:61
Same as value_list_ba, plus the option to have some elements of the list suppressed.
Definition: vallist.h:227
Holds a list of items, typically used to construct a SQL "value list".
Definition: vallist.h:187
Declares templates for holding lists of values.
equal_list_ba< Seq1, Seq2, do_nothing_type0 > equal_list(const Seq1 &s1, const Seq2 &s2, const char *d=",", const char *e=" = ")
Constructs an equal_list_ba.
Definition: vallist.h:553
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1UseEmbeddedConnectionOption__coll__graph.png000644 000765 000024 00000012072 14042362133 032465 0ustar00tangentstaff000000 000000 ‰PNG  IHDR¸\ÝæSsRGB®ÎéôIDATxí”EÇ‹ã8$H’ Y‚$ ¢ JQy(I‰¢">PQ¢’•ð@y (áS‚d”œ%ç¨$É‘ ö›_C/»ËÜÝÞÝÞx·ÛõÞìÎôtwUWÿ«ºº{v'‰Ë"1d4œèœí2­2¸£pƒ„ Ö€xPw¯i\¢x™2e$I’$æˆGlذ!Q[I¢øÙ³geÏž=Â<Ù×Á»ï¾+à‰Ú¾ðÁ®DíÁƒ½sLûâ®ð¸ëÐÔ€5`ÇÎY¼x±\¿~=޵Ü+¾{÷n=z´ 6L–.]ªæ÷îF}¶páBù÷ߣÎbw ÀãØá7–3gÎı–;Åûôé#Õ«W—Õ«WËÑ£G¥cÇŽR±bE¹téR¤õ5J†®îÏš5K®]»iÞP¼ì.W®œ-ZTf̘!5jÔ°°0™2eŠRß¾}¥J•* P)S¦”AƒÉ… Ô½:È®]»¤~ýú2dȸ ÈÁƒåù矗ˆˆ1b„[}-[¶”[·nÉܹs%K–,2~üx¹råŠtíÚU}oݺUZ´h!ݺu¼t»víä×_• &÷6l(_|ñ…º—5kVw½•*U’¡C‡JæÌ™eÙ²e²yóf%#2åÏŸ_:uꤼ|îܹU=7nÜcÇŽI“&MdݺuR²dI3fŒeZµj%<ð€¬\¹R^ýu·a¸™áIÐ{p–¯^½*S§N•±cÇ*oHXÁ5ž1<<\,X ºvܸq ={öTY³f,_¾\nàÀ’+W.Y´h‘>|X:䇽{÷ÊþýûeÕªUR¾|yåêÕ«§Îwîܩ’óçÏËŠ+ÜÞ—sèÈ‘#²cÇ)[¶¬2¦^½z  „&Mš¤Âž¦M›ªkVU¸·~ýzå¹K”(¡Ò K4ñèBÕªU• ¤Qm U úIfT  €ýõ×_KµjÕÔ50&¦xN¼.¡Ã;“Ä=z¨I#¡‚&]Fb{&ª„4|:o_¾|YMì¨gãÆÂhqîÜ9SçSnòäÉR·n]å©ñ¶xX âic ì`Õ†8¾Å‹W!N… ´8*DBV&­¬ªÌ›7Ï}ÏóDËí™tç–-Yú˚DÆY~Ë{»¬U ¯z¬Ø×e­˜x¥Yq²ËZ¡pýöÛo.Ë£{Ý«\¹²Ëòì.+¯ì–gwuéÒÅeÛuñâE¯{–ñ¸yzÞ°æ.Ë@=“btn=‹â²VŠbT&eîÒoÕºukåmñ¸žÄ²œ/%MšT­rlÙ²Å÷–ûš‰¬/±4Çá/ÙÕ¡Ë>ôÐCúÔýÍ$ÓŽˆëC’`q‰U ¬³*Áwl‰U &d€×_"æe;mÚ´î"ÄØ-Y²dî4VFXŠôœºoÆð~Pd`Žau~eoÞ¼¹<õÔSÂw"¥~!ïÁu|“Ğবï5i¬TÜÔå$°á,ò«(ÁÒ‘¦öHÔœx”e¾ÄBéÓ¿l…6[¬]ÅÉEdyï½÷¬v‚&êÜ®A 5íÔ© R¬XWk7óI9²iB3Øä2áTN›¶ÉZII& î´<øM§Ø†<ƒ;qãVY›.7¬U–¤ÖN臸6à`ààÁ³Öó!+N/^ÀnÈ €; çÉ“×Y\îm7¬ZµÏZܯ€hB¢eaî@×ýïk¼â¤Ö3&[àlX€Ç3vì8&çÏßÙ…Ô¬ðÞcÆü®/Íw.Û·‘³g#ÿ­å}LB¬4`+µù_hÒ¤u¶çÙ—éÓ7ù_‘É+ €ÇJmþ:tè¬üóÏë™ðpu°DÈÁõõë7dñâ]þUdrÅZf'3Öªó¯àÕ«ÿZüÎ/tš5ûÞú=çsÖo"ï<ý˜*U„õ£ñ1þi2V¹ÌÓ„±R[ ¥H!)RÜ)fýÔ,BÒ¤ñÿÙð°2Ym4`܇Râ+‰_È……Ýù™\|ñ0õzkÀÜ[ñzÅOKnß¾·á¯ÌLåJàA­ð î^Ó8p1@ü}÷Ÿ*äÚ¬ ÀìâïÄûo@VàT¦©*áiÀ<áõ‰‘(€0 2MU Oà ¯OŒDÔ€x•iªJx0w°OÌ2¡ƒÊ¾ËÊÜA›eB•mî¼² Gç5`<¸ƒ:7!ŠƒÊ¾ËÊÜA›ÅAe€;¯lÃÑy î ÎÍTö]VàêÜüàÁAe€;¯lÃÑy î¼Î G5`î ²M î ²ï²2wPç&wPÙàÎ+Ûpü4àùfÚ%K–ðŸæˆ'$Mú +I’dF¿ñ¤_°ëófgï7[—ÆË[o½õ˜šai47 X¯W·þ&×ÄÜ{¯‰Áã¦SS:kÀø М9s$C† Ò¶m[)R¤ˆ*]©R%©R¥ŠWMÑéâ‰'žPÙ³gOå=‘÷ÓO?Uò>_>È‚&±¶<Ó¤I#¥K—VüÐGÖ¬Y­÷úœUi—.]’Ê–-[”üü±¤OŸ^åóÍ;jÔ()Q¢„´lÙÒ-?Ƴÿ~Už\Óæ?üPž|òIùàƒ¤P¡BÖ›™Jîܹ…6\¸pA d½¡"BvìØ!Ï=÷œÊ•,?ýô“’«Y³f²víZÙ½{·ê³—^zIðâ>¬%kiРԪUK† ¦t·jÕ*µ*Bÿ(PÀ-¿¿'1öà/^†ÝÖ­[Ëc=&ß|ótèÐAÊ—//3fÌPBÌŸ?_ñÇÓ…‡‡+o·zõjÁV«VM~ù塞üQu8 bø¼víš[î¿ÿþ[)¤k×®ªcFŽ©îx†g® Ö¬Y£Ò"@‡<ÏU‚ÍÇܹs­?¦Oa½ílŒ2: åÓѽ{÷V÷ùçŸ[w|çí ³fÍ’þýû»¼OtºÐlÓ¥K§€qúôi¡Ã"ãƒ#¨Zµª2,=B ‡Ñ£G«4twøðaU-§BÚ=tèP‰,/:{üñǵ8ê»B… ªÿ6lØ F4€‹c |ï† ¢€žY‚£Ÿèë=zȼyó”ÁÙÉ‚S7nœ 0@š6mªú«yóæÊx;wîl½yî¼ òœFEFF]»v)#ơ͜9SÉÓ{pà‰ðNX C çJ8PªT)ùòË/•ðŠ$ޤ1Êyíµ×Ô(€Ò‹+¦dΑ#Ç}²“—x™ƒ²Úâk×®­¼MõêÕÇçÚ½>gT°£°°0É–-›RfÆŒ…úP"^5S¦LBìš2eJÕ±šg–,Y$_¾|îꥠ¨t¡3ׯ__ÕË:-9pàÀ}|vîÜ)çΓzõêY’æöÞ•-[VUØ!FQbñM›6)ÏŽ§,/õV;BxSæ)„b £È›o¾)?ü°ŠÙO:¥æèCƒèWÒ#“…‘9˜³`ˆÔËH©‰êÑŠQQ;­š5kª~¢8à€PC©'1|Ñx*†?‡‡Y°`òd%K–TΜ9³»¨çâ¼NôœHá­ôDO§“ÆD%2bH×ÊÒy04ä§s]–-[&íÛ·W’ÎÂ(0VˆM/€a¸¾! éQé‚ûÔ‡‡Ð ðˆ.Ñ)¤ °éòžéÔñÈ#(Y‘±N: ˜vyi+†P¹reU7}ûöUå©¥‰ø!F8ˆ6ø¦y¦ÛÉÂdV·¼8ÀíK”%lÕd€ìøë|þ~Ç8Dñ§b,Ž˜Š˜å"âMbìîÝ»«I‹§¤1xIbz_"&%D`ë×1E9¼ QC›ç9žƒ²zXÇà^‰üÄ®5R2a˜tæo¼!+VTC°V2ü0(}èNP £ø ž•rðǸíøîa¬ÄÅ„jz¢žÐá£%Þ¢ ¸aÆJÇÛ·oW^Ð./aÏŠ+Ü“StÂ5é.r!'<‰Ãcº‚e' õ2‡ÂY°2†Ñ„.4‘þ$·‘ŒùB (V!Jd̵…Ò)LHˆ­!1b„š€¢H†a–ٚ4i¢b; $òëzh0à#^#æ' >|¸'CÝ'Ÿ|BõM¼H¤ésÂb?ò&¥€¸\¹r*þ'¬b’D:AlÎDžM­Ø¯ áñ84ÑÆ¨–ÿt™0&x࡟~úi5røòÁ€Ñ“<ädÔLxX€L: &ýå—_–>}úsdíÕ«W¤y :§, NEÀŽQ"yQ·~v•,eÊ”Q:¤üÈ‹“¢^xáUÝ#–ƒ"c´ÄÀq,ÈåK‘ñ÷Íç{íõA¼+Dǰ¾™ý½ÆK¢°ï¾ûÎ-,ž˜‰]ƒ†úèÀÍ  Ö«cÇŽUA|L~mL„C·gˆ•lt*C!à$šðà¤clž İàé9tê2±ùÆ(©“ø>:>€'àË›ÕB³äÉ“{‰ÀZ?ÿgzdy‘ãØ±cBMxæIè' õìyÏßs;Yhuj½Ó6ú×8#vàö—?sp¡ÃJ«\à_#ÈŒ%%&.žÂ[â|É·#ý¹Hü7õV»I,Jf Ì—b )2yíøèù…/ÿȆ/E–9ìòS>&úô姯íêöm@÷7å£ÃæÓoo3Žii›ü†‰¥çdÇ&Û}Iýúõój8“&;š2eŠÛØÝw2µ`–üðž… ¶5`;y˜s8±‹gÇ;ÔÒ>É$æŒ)¸Q:–®‡1®‰I9|)¾,Ý—OT×L’>ûì3eÈ€sÍÜ *rz/*YBå^À=x((Ž-o€ÍÄYÇÔÄšÌ;XAbŽ@<Éš7a»pì.bLôœÚÅ …¾ˆ®÷àÑ1 †û••! nÚÄÄãýõ—0ÙbIíf61عý/vñ‚A×qmƒx,4¨W|‹²Ì¦W'jÔ¨¡V7صe½ž™=Ù.žŸ]½1å¹‹Ç ‡¡ØiÀ<zc÷’-fOb—•M–!½z@¼®w`=ósp=çÞÅóåŠ×à±èuvYOæ¹ `òЛLzŸÝ9ˆç4ؼÐää.žæÊßf’‹Þg£„' yºglxÊŽuv2ÓÄóÜ<¡Èr OÔANïâiYBù;^v2CE¡¬”0¡$ñÜÔb»›'ñWx¶C/êØÝw£#»x¡¢ó¨ÚéÈNfTÛ=vgsæÌi³|w*ÞÅ‹T°ºaB”xèlžé±Û¤ŠV¦Êh4`‚bs[¯ Ä¦¬)X ˜U”ÀêÓÔ–Ð4`-q¹i‰ùoBó¿ñø¿öã]¿Ö£¸n<['}½VQšñyŒâ¨~&D‰£Mñ„­ð„Ý?Fº8jÀ<Ž 4Ŷþg¤•_†}/IEND®B`‚mysql++-3.3.0/doc/html/refman/inherit_graph_4.png000644 000765 000024 00000012443 14042362133 022352 0ustar00tangentstaff000000 000000 ‰PNG  IHDRY1p"ÚXsRGB®ÎéÝIDATxíôTÕÇ/*¢Ø€ŠØö1Pl TÌ¿yŒ£ØŠŠÊA±;°»PAE 0 ÁÆï>ƒó|û~ûvßoÙ]vÜ9g_Ýžwßܹ3ß{·™r*ÂY*’kÈ4p p p p@9„lèä@²dnÈ:p p p ÙÐ*ÈÙ’yßsÏ=n×]wM>÷eãÀŸþéš7o^¶üBFµÌBÖ*{÷ÝwÛe8”…ÇwçŸ~Yò ™Ô R…ì.»ìR/mõ¬íµN^T¨fY9l²eegÈ,p p p —AÈæò#Ü”•AÈ–•!³ÀÀÀ\¤Úds£…»ÀÀ¯¿þÚ½üòË©hÓ¦Ûpà sÂë^ÈÞzë­îµ×^s—_~yNÃ*q3bÄׯ_?÷æ›oº?þøÃ­¸âŠîä“Ov[mµU%Š«Jžgu––sÊ)§4(ï³Ï>s‡rˆ»þúëÝ¢‹.Ú |f{ðúë¯xãÌöÒÙ^dÁc=–“ªî…ì|à^y啜FUâæÁt»í¶›[yå•Ý 'œà~ûí7dz­·ÞÚÝyçV‰r+çèÑ£Ý?ÿü“·˜ŸþÙ=þøãî÷ßÏ>³> 8ß™õÍn÷þûïïÆß ÒtÛdÑèÐx¦NêÆŽëÞyç-„÷Ýwßuo¼ñ†û믿ôÙçŸî~øá‡œJ|ùå—î§Ÿ~Šž¡%6L…XôP.~ýõW¦ßÿ½~ôãÆ‹ëõ¤I“‚ò˜Ö}øá‡Q>Œ &èý˜1cÜ«¯¾êxfÄfd“'OŽNü~Ê”)îˆ#Žp묳ŽÖë“N:ɽôÒKn•UVQmÖò¡Ý£Fr>ú¨ûâ‹/ì±j¾YùT¬®dJ9ðвâB’´”}ôÑGî›o¾Ñë´ø(‡üÑ=ýôÓ¡[ˆà1ƒZ>þJÂfZ°Õaœd[Ƽa¥ñ7ÝtS=“Vl~‹-¶ˆî×[o=/¿_ýõý&›lå7qâD?묳ú+®¸Â¿ýöÛ¾}ûö~î¹çöÍš5ó‹/¾¸—^ã>ÿüó~þùç÷³Ì2‹Æ_k­µü\sÍ¥a2Íõk¬±†^ï¹çž~¥•Vò ,°€Ÿ}öÙµ|]4ìÐû6Ú( #®B ê©§4ü¹çžkp/Úœ† :TÃâ‡?þØ?ôÐC^„˜—DÛG=­¾§žzªFo ŸŠÕõ…^ð .¸ oÑ¢…þZµj¥ü£ ‘#Gj]ç¬|sŠ/ž-³Ì2~žyæÑø¼¿=öØCÛcy‰°Ö6WË–-½à]µŒ®]»z 5,ËaðàÁšŽ¾PTïõ¯Gž×S÷Ûo?/æ‚UžnMÖF§yç×}õÕWîâ‹/v/¾ø¢jnh©wÜq‡j¦ï¿ÿ¾Ûk¯½œ|ðN„«&“NëD éT»víT%]ëÖ­ÝÕW_­Zé¾ûîëDª¦ŒyÀ4R+;~FÃ>‹Vzà 7èO„`e±ÅSÍ-­¸wïÞ&^Íœ¡ø=q¡UW]UÏñƒ(×½{w'ƒëÛ·¯£"xUc8p ;óÌ3ݳÏ>%ÉÂ'‹œVWêܹsgÕRÑ,;vìè̶ji™QÀßvØAÛX(þ'Ÿ|¢+±˜Qðxg¤q8àwàºï¾ûN5^µ}ñxá:p p Á¤Ø-U“§€f%StÕVÐz ™¾ë=Z€|œª]uÕU¶ùæ›{Pz}â‰'ú9æ˜Ã÷ïß_µ1´~âÔÒô÷ÝwŸÆãpÚi§¥j²b3âq±ôÒKûc=Ö›vhÚ1a”‰Æ\Œ  uá^0ª Þ4g‹ˆV¶mšl>««˜e¼L×=y‰=ØwèÐÁo°ÁZ¤iŸ÷ß¿UÁŠ&»ä’KFqÅì£Zø1ÇiÅh²çwžò@ /& ý‰÷b.‰Ò» H÷Ó÷Z,n-†×{ýk‘§M©N×d.@³Í6Í—¶ÜrËé=$Ìt2ÅUGѽ÷Þ«ÚÚ-„w›k4áÕW_Ý¡!b75»f§N4Ó6£± ª±;ç^xáHs&`©¥–ŠÂYd÷í·ßF÷i+¬°‚=ñÄ ¢ˆ A5qœChòk®¹fNø‚æg”…O7­®2à8ê$ƒ”»ä’KÜßÿmI¢3¶b£bñã¼efÁ»ÃF'³Áî½÷Þnûí·×h 1ÛÄ£UäzêÔ„‡¿V$ïià@¥9P6sgBŠÝÓ]wÝuNì¯n»í¶Ód+±_ª)g™h˜êPBBq¯Ý§Ÿ~ªÏòÀ2!øÞzë­¡ÇqUH`[>˜ ÄÆ«Î,{fgÑðÔ4!¶Jè8¢Œ@ `Þˆ—‘•O䑯®˜Z€VáDÄIˆC.²Ä7GyÈìA—ñ:ó¼mÛ¶ÊÌ! |üDãVóá• áÃÇJ[ïçb7hÐk•(¢Iç ¼ñðïx·ÙfUž@Úð.2õe-œA¾WŒðà[9ùΘ<òÈbÙT5<›d,c•°_¢ýôéÓDZ ˜4w°˜0{¬LUëEp¡Õ¢b+Äfˆðšk®I­›"öV„6/nÛm·â‹©AóaKGqv¹nݺiÂò±=Bñ{ õ½ë®»Tð#hø!èÈC¦Öš†¼°e¢9R.Z9Têf;iu)€ÍšóÃ?¬P²B´X|f دêbZq )€«Å‰¶¡1S'´ÿGyDùšÄÆÓ”r=zôx׿ÿ±ÁŸ!Úò¥î¶Û^q“&M)%«™> }¸ðFú>|̰ð™€Àg¸¼»I™ÞÊßd1bð_vÙeõ'f0vÙî9ƒv¢.5EI›H©6YŽš•h™jwà “õ;£vKa‚—`ÔŽMdÈѽhiŽwÛ&iDô2½Í±ÉÊ]ã™§Üââá?çœs4Ì윤%1k¨=X a^]@…yÁÇFžuòÀ«/ÂIÓs-mÔê‰÷_ 7›l>«+õ€GðB:G˜¶G`eŠ2 |CPx¡ø2³PthãËe—]¦uñÏëÊ+¯T4Ïø ùå—_4n–CšMsܸïü€C}çÎgù¶möíÚ§g®ùµo¼¿ôÒ§²QÑ8iõO+T+µ‡Ëàäù.d–£Q±{‹cÒ‹¹%²OccÅ '+/¢áEϰ…óÍXŸµÞ@Õç!³'/3 Â`È|# Ad0ö2ƒó"€-¹Áäê§÷ø,øîx'ÚBZ$Ì=í€è ²…¥^ÛALkúüŒ3ΰGz¦M ]¨§metÁäô'|zq¢«_ÇâÆÏô]ìñGÊ|?ü䛤žø/̧BÙð€w’¤be&ãÇïÓl²ØJs¨±B6'qÆœ*ù&2:K¾ÆË褡`3W¼H„,Îò¡CÇ;Š .ÂD[OŸåš$øTí¤ÖÉâéè€Àºø€èˆ¥P–ºÒ‘â ©À+AÀ‡Ÿü€“õçceÀÈ÷Ž’q“÷q!5qâ$?pà ¾k× þ¬ÇæV°õ,dm`­wx#ï…åÐCÕWšTHò Y".±Ä äš~%f-¼‚°Q¥àì³Ï&È‹«ÏQÎ=÷\ýn÷Ùg}\lÊ’&ø÷OÈâäâ qâ†c—:’?m°òx†CBVd)S#§Ò„lUW|1ðŽi‡M’pš –6ùXï1+äƒPå‹L>qÇO2NÒ9– /t 8YáèÃiW.J«+ND~F˜T Q±øÒ‘u5[¡<‚¶îºë‹–7|òä¿]Ë–Ýÿþw85?ø^31yÐÿ˜"ò¯:›–‘wcÆŒwC†¼=ívGŽüÏÙ˜*lO5- V[ÍbÀ“¬¦'|ØO±¡3uÆì$BAÍ6|°Âe`SØ~ ll€nðÆo¼QáŽLÑÓx#¦4LA7ß|³Ã¾‰ÓÈ ƒ8püÄ® aJÃtÉì)î¨ó6Ûl31÷ܦf&àŒ@!©ËÑñeoĬ€y½†oºé&'Š’»è¢‹´ž@/±÷Ò6 ƒä·öÚkç))ý¾A¹Ýwß]ë2s¢]ë{ O|C½zõRØ'¼)G™ÉÚTUÈbo¥‘¼<5’uÉ|O'ÌçìY~ùåS—€"dð¢Ú!sa3 b=Õ5+{&L˜$܇®U«.⬛f÷–Y\¦äLH~C™T(R‹³–”3ŽJö~À7€ýžf¾‚±b[ä/ŸŽ:ê('Ð;‡PÅ>É:xúƒö!Cœhy*tpvB8uI+Ól'Z£>Ãétá…êuòÀ’p„ D<„œ,ôq}{ûœsΩ6NÂo¿ýv}ÎÁd„퓺#„©˜Ìt°`Áƒ½{þ{ï½çdæ¥6Û$BeРAŠÒGø`Pjp’³Ä»±B–Áao¼±¶¿ƒ,¾qbîR~ÓŽr–™äKU…,g²¾§sZ'¦“@Œ~¢ÑGAÀ¦Ð¾ÐÐØ²ÞN^>¨‚B„FÀÞi„Ó‹†QgU»®¢²Ä­—8­[Ï+Â¥ƒÛi§~âd*ûM7bÄgò>šÉ’lŸó¾’mb`ìÝ»›h=]’AU½3ŽëÑ#¿+T‘,°=„)Þrà;ï¼³.`A³‚Ò8rq¤²!‹v€h½P‚‡PI£ä¬¨ðÆ´²xη¤-œo-eh¡…JM \PÌ 9Zö|óÍW’‚„ÓÚˆ. ¢_™œ(g™Vž«Ž.°‚+y®¦·Sœl‘wÎh+±èæ: þ@ì¹0E¦Èë "âHÙ×ât Ýeú8íChÞ<ÛXo|DÈd!´½zƒ7¦µ ¡Å dH´d0ãh±Ç|ZRÕúÑ2™êÛOœ±%¡t²Î\™i”«Ìdò½ýdªºGVÞÚ9b…í—ÍZ˜¢°iŒÁª,& –ƒ©5b#F86WA@ñÂÁÖÆa)Lèü:è zúé§GÏL“e× ü ËŸ š&BÙÔ©_’(«Ø†,iöŠíÛ,¦ Èú.ÏÑv"bs‰VÏ’ñ=z4X £”éPÑ2“޲j  ’e6ö8‰ØP|—.]<°¥$ ß@JˆSio§l}ˆÂ †6ª’y˜E€6ÊÛIY7dÛ—ïÙ³§Á•[‹qtA¡úõ…ïÛ÷AA ô‰õá²wŸ¶gü¨Ex#u+†. ßÛo>íecÄæJ¢h¨‡ŸåóbÚób>ób:Ð(âŒÓô @åì¸ãŽQ~¶ÜÞò²³¬>lá:î¸ãÅ@®ÅgÑU&ˆ9%º¥rÊZf”8υرónƒÆ–Cµ,deëDôÑGëT2 ÷0™µúIJ²â‰Uè0.ÑpµãØ^@G؉ ¨ ŽV<£z-޽g·- Nâ‘Ô`ûh$9d²Ô½€\±‹÷âTP, 8?¼,iÕìè `aÅ¢aÔ“N)Ó,+.:‹]Xw8#/ñ{Ù '_EœÁY…¬U8ܰaû^½î–ç?Lµ…WûÜØú—R¿z†7k/ߨkƒV"ØdL” ¬®aqyfÌ.»ÛU‹¦§Ì4![󿼑¬FÚ…w”i¶ŒvºÌö–[nq«­¶šÈ–l”ôv²öžiLÒ̭ۙç1·Ø½y;q:àÄûŠ·˜6!3àefêÄ.Zìê…IA¶ŒtùöO©¹}rñH þPíZì3€y£^ {Z§NËÜg߬W¯ÍÈToà×^{­Âma<¡ÁãûYX¸ÁÍ¡cÏó Þ˜æÐÅ9†i«DÙ¶Dü±ÑÆS8†1áàæ+Z´=ªø¹eV]P ‡Ø˜š-öp0±¿›¢”Jõæí¤Ê8±§C±¤Ëd Àl¾ØºÕ6¼±¶ßÏôÔ®æ…,hö‡4¼å–[*  †pF¬dÞNÀÏPÜÛ €=€xå#N4EÈ`¾vΨg5o.uØa‡)æŽ?Ld:ƒà@qf£–|TïÞÎÆlÈSSIVè€r@3bÕS ÀÀȤA¹–_VWœSl¼"öÝüÄžÛYØy&¹®–·Ó_æL£>æa]Ðo'i³nÈ"+‚<ë¸cI²š¥j8Ž*Ùøz¯%yòö>ÍñÕ æÄe€îIRÝ ÙdƒÂ}à@¥8€#±^fx•âAÈ·ñ¨yÇWã›RÔ‚­wj88Ð9„l|©¡IµÃ dkç]„š4A¤:¾€q ('€¿ ˜Ù8Ð@“¢Tê_XÏlÌ ímø;úVÖM¬—{ˆ8P›h°¡6«j888PŸh ÉÖg3B­j“AÈÖæ{ µ h"B¶‰¼ÈÐŒÀÀÚä@²µù^B­šþm§sOk{hIEND®B`‚mysql++-3.3.0/doc/html/refman/functions_k.html000644 000765 000024 00000006527 14042362132 022013 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
MySQL++  3.3.0
Here is a list of all documented class members with links to the class documentation for each member:

- k -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ReadDefaultFileOption.html000644 000765 000024 00000030724 14042362132 026752 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::ReadDefaultFileOption Class Reference
MySQL++  3.3.0
mysqlpp::ReadDefaultFileOption Class Reference

Override use of my.cnf. More...

#include <options.h>

Inheritance diagram for mysqlpp::ReadDefaultFileOption:
Collaboration diagram for mysqlpp::ReadDefaultFileOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::DataOption< T >
typedef T ArgType
 Alias for template param.
 
- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 
- Protected Member Functions inherited from mysqlpp::DataOption< T >
 DataOption (const T &arg)
 Construct object.
 
- Protected Attributes inherited from mysqlpp::DataOption< T >
arg_
 The argument value.
 

Detailed Description

Override use of my.cnf.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/sql__types_8h.html000644 000765 000024 00000010110 14042362132 022231 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: sql_types.h File Reference
MySQL++  3.3.0
sql_types.h File Reference

Declares the closest C++ equivalent of each MySQL column type. More...

#include "common.h"
#include "tiny_int.h"
#include <string>
#include <stdint.h>

Go to the source code of this file.

Detailed Description

Declares the closest C++ equivalent of each MySQL column type.

The typedefs defined here are only for the "non-NULL" variants. To get nullable versions, wrap the appropriate type in the Null<T> template. See null.h for more information.

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1DataOption__coll__graph.png000644 000765 000024 00000007602 14042362133 027153 0ustar00tangentstaff000000 000000 ‰PNG  IHDRŒR†ôZš7o.‹/Öô²ðUf€¬Ô_|QWëÝwß-¯½öš\qÅòÊ+¯È 'œ #FŒP̦M›&ûì³äççË„ ä믿V 8P'‚I¤l¿~ýdòäÉ‘Éçä_~ùE&Mš$ï¾û®`u|ðA­sÉ’%R·n]tëÖ­ÓzÉ`ÂØr§žzªì·ß~²hÑ"%£&†¿Î8ã a›úñÇÅU×€¤uëÖrÏ=÷Šñ~òÉ'òùçŸëÖÖ­[7y衇´¶5kÖÈgŸ}¦ùŒ{ذaÁ¦þÓx™! (œ}öÙðíÛ·WŸÀƹÇÀêþî»ï0± X¬ÏO?ý¤“pì±ÇÊ«¯¾ªÛçsÎ9rùå—KÓ¦M‹Ü©S'iÖ¬™Ö±iÓ&d ÝvÛmJŽž={Fƒ5¢>DÄÚ¹s§’CÃ_X;,D&ÄÖµÿþûKÕªU•páS´ Ú‚H?ü°¬ZµJ~ýõW;馛ÔÂtéÒ¥Lm_eŠ0˜`BåÊ•å€иýªV­š\rÉ%J–ñãÇëd3y³gÏVËзo_d|¶#8/6Ô©S'’ôÏ?ÿ¨E!Á¦“ö×_EÊÄF7n,S§NJf;ÁúvØašžL]X£úõëGꈻvíÒãš5kêoNNŽÞìŒú#eŠ0‰°Àª<ýôÓêg0icÆŒ‘7ß|S0÷ø8µ\p’ð™•+W©vÆŒ:1 .ÔIn×®–™>}ºüûï¿òñÇ«OAâ²eËÔª‡œ›7o¬Â| y¤ÿý÷ßòÜsÏ©S¥J’ÄU(°šŸ6éûAT毜ÊÅe5Ï¡á÷ßWß„ãóÎ;Oî½÷^u>!~[Óqǧ3¨]©”·õ°sÌ1²~ýzÁA&•Í…/óÆopŠú8´ÃsÑEɬY³äª«®ÒËiˆ†•ÃçÌÏ<óŒžãª ²°¥â¼Û€öᇠÎ7[[ª+Ø~»ò2žÆ T¥ÌågÈð„ ÏþÆ[ÍÛo«‹p÷QÆÛýêg‘Ì,Lð„ OúøñKÌvTôžË–-Ûåí·çf!5ÜCÞ³a»ó³&uøð™:ÖÚµk„ÿœ—'μ‡’o¾YkÞÙdÞŽÛý\ր⨿ÓeÆMæ¯ ÖèÑÂ…æÉø óBUG=nР–ya÷‹à ³*É[˜ðt׫WSÚ·o¦GÛ¶í0‘°&rœUŒH0XïÃ$ÈgG#à ‡Ễ_#väfw’'Œcþwíâ¸82|’xÂx¤„€'Œ.¿%9@ 'yÂ8°ñ[’O˜ø øœøx Ÿã@ÀÆŠOŠ€'L|l|ŽO(>)>ž0lüeµ”p’'ŒYíÅ&>(>'>ÞÂÄÇÆç8ð„q€Â“jÿ´ÚŒIò„qà“jÿ´ÚŒ'ŒŸoaذí~Ü‘™åIž0°qiíCQž(&aé @S}—ÚHªÍ#÷‡6ÿ$uÄGì•^Al»(¶¡®òÃ?h?c¥¬[>xŒ.¤h$¥+ 5‰Îdl@!ÁÕt†2gaP—M—Š*2{¨È¢ª†Co4›T´¸~Ž´0ZÔñŽàÍ7߬"£ˆqÍ;W¿I£‹òJ'h;¦3 $aø¼ð *ÚEÜt‡”- À ÌÊe¥]zé¥ÚAÑìµ²xW^y¥Jò.“€T/ç"–I9Ä;ßÿ}Õzfå#=ƒ ° Èè!NΠ‘ÍC–mh€Gàe4V6’ÀèáÍC$‰mœºPh³zÑåšk®Q)>ê\4¤Ñ_¢mÄH‘&Í ŽŽ;VµPO»ì²Ë4ýøã4&m ŸŒéÌ3Ï”[n¹¥HÿPÅEJ¾¢ê†•! Æ.ô ™bÄK¬Ä2ú **Šx(êqÁöÈ¢ ‡`:˜öéÓG‹Ð©¨×òƒXÜ‹/¾8J(X&™xÊ}C»ª¶:t¨Jç¡ Œ0ƒ³šX ¶L7“€>#:‡è%RÏ[o½¥Ò»…/¦Õ¤ú,X ’wˆ"IL€@èqŒÈ8r½ô” Nl\Â_HáQîûï¿&dµÑ†€H_Î=÷\í¿%2~=ö˜ªÉ>\‚4p0`öY<¿ýö›³L&m#y¼qãF•ücÐ&ä†dÈ&£Ç¬  I†ÕÕ†T`1Á¯Úµk»Ql/äš»víª ˜9Ù›²…¡V6Ò¹¬L,q@ ¡ò§žzJAX°U."ä‚X¬V¬@£ÏH°j¬zþ¢,Ö‡çÚ•‰¾"ª³ˆ˜CDÚÞ; ƃõG Í$”ííh´ªÑ‘F“‰|ɪ}ùå—ÕÊáW1>Ͷ9‚ZÒYWÿ L­Zµ"§a‰Áñä“OÖ4¬¯%?– ­lÆack¥H+£Y£FH]ÉDŽ<òH%?ó@ˆ©ãG±8Rñ§R¶0tÎ »XΠ˜ V0 ø†9[Jñ¹äí‚JjlyX‚M'Í*ØkF_ìíè]c¢û÷ﯢ mÛ¶-r&b%(±±3ÙÁ@X7+–Lÿ°FÒ,¤#X2°M“Že/, ‹ÈæÛsSù¥ÔñPئR {E˜D @öfÔY±.h:#¥‡Ÿ€X8[+kéÒ¥ –Ã^ÍëæJ…Ö+Vè„Ø½œ.Ö娣ŽÒS¨ “NÆ5Á|aØ~˜Ôî1ïX($…±’¤Û!:ÚøNXKÊàƒ0¶3„Ų²­Y @Wÿ(K½6`‰)‡å‚ ùùùbåmû‹ˆoC?ñÁ°à”O%€– ?mâ ݌ߕJØ«-)^V.2`¦ñM1lØ0]™tgm†•Žò<½ÁUcëHbßïׯŸúLÚ!C”X¬ûî»OÛàwàÀZ§“ùåƒcë|üñÇ•|H 㟰 à8â3±MBJ´± ¤þDïÞ½•˜íÑ£GK¯^½Ô'#ˉÕcX§3^ÿ¨—~uèÐAû ÑÙŽyéXõ,°Ø`±€¼È$ãôOœ8Qž|òI•=v ŒÚs‚uZÚÌ VÊ’;X&™xÔ¿]eõãç$S)«±[·nºïZ°8ZXkÞ© 2@˜)pJ ¹¹¹ê+àPÞЉžã„ÒÖ²ÜÛ àÇ`Î'·}#=^ÿX(œ,KyÆO;'Ò’ “nA2öS%‰}–TXXi"­†Z¹Šacºƒ 00—sÜÇ#½ D\ù¬ ’’…&˜<;ö—tëƒÐgÛÛ’uj)±\ã!ÏÕ?&+Øå®ñíÎ)þ›6\–$ÞY©’%^=i' Þ8jó±j®ñ:`Ó h—.]lVÔ/÷Ò5ø¨ŠÓtPÖûWÒa¦0ø ©’…AØUmdï©Øcû»·+Òž_Ú¿e½%r`I[ñçWŒã yþ;ÿ–]Ì—ææb„D¢®’*Î2ð#)-ü–TZÈVÐz=a*èÄ–Ö°7nœjÖ¬™ø.\XÍž=[Ž=ýôÓªE‹ª`Á‚ªB… jëÖ­RÞ©S'5mÚ4Ù¾óÎ;Õ¶mÛTçÎUõêÕÕ‚ TÏž=Õ¤I“Իᆱž|òIuâÄ U®\9Õ²eKuùå—«úõë«ãÇ«V­Z©Õ«W«ºuëªßÿ]­°#FH[¹îkÛ¶­zöÙgU‘"EÔµ×^ñŒXRñḦ:t¨ŒúöíÛ«1cƨûï¿_9RÝxãjâĉúÂ… UÆŒÕ÷߯>þøcµqãF!ʰaÃäÑšŽÆ·uëÖŠE§Û»w¯úä“OÔû￯¨ºté"‡ dùòå2•™¨F§2½a7Ýt“Êš5«Z³fV ÿýU¥JÅ”YX—Ë•+—‚äˆ6öïß_]tÑEj„ ê?þP¿üò‹:räˆrìØ±Š¶÷íÛW=zTíÚµK­X±B}öÙgrߣFò^*â¶#–T uË-·(:§ZµjÒ±f{÷îÝŠ(±}ûvœèB Š‘+½øâ‹ªD‰jôèÑêóÏ?—:n½õVuï½÷ªbÅŠ%è„ûî»O/^\ê MÔxâ‰'„@D ˆ€ÕhY¯¼òJuêÔ)!þû‹¨yòäI!;EÏ=÷œÔõøãK]Ù²e“Å_ÈfìÓO?•ûäÞxà¹Î¼yóä0‘“HÕ A! 9'?#šT€ˆ1¢sç΀_¦L™dê€PsæÌBÐÁ_|ñ…D¦:‚ÀÔgŒó‚-gΜþ¢¿ÿþ[¢ ¦Ü[æwôl\}õÕ BxméҥŠ( ÅÞºˆH¡ 2_vÙeþC§OŸÂRpÉ%—Hy† dÁØïMªäð":õë×Or:öƒ>PãÇW¯¾úªä=D©Zµj ш&tÚ–-[T»dÉE’ã0•-[V|-Z$Ÿ3gÎT 6”íï¾ûN¢#;øØ±cŠè3cÆ Å1Œ'¹ÁƒKN+eÔER>wîÜ€§<¢™1"~Žˆûõ×_«Ûo¿ÝŽšÏ¨\Rà{C Â8p@r%öé€:H ‰ÈØË”)#I>I³ñø›zèÀk®¹Frr'SÎÓÛ‡~(l"9×a:«S§ŽZ¶l™Ž¥ÈH´$o‚ðäM„å‚©•éîí·ß–ròBêxðÁeŸ¦zÚ 15j¤òæÍ+Ǽ¿Lû¼eµÍKzim:šøôwç|Ypûô•ï·ß~ó×¥£OG ŸN’ýel莖²Š+útðëÓ§¯k×®>,ûtGúËõ“¢O'Æ>=}ú4AýåImè§P¹¶&O€›ž²|z õéHP®£TÀ5ÍAÚâ½'SnûÉuô´këžÚ~½¢2R1*ùRš%‡æÍ›Œfò¯P‹ˆÞ\%Ô¨¾ôÒKC+“…<T˜9sæ×Ævys;Êȼ‘“2,±¶œ9ù¿£–TLäByòäIÊ,x;ò…^yþôéÓU–,YBKiáž={”É­Rzn4úG-©X—J)¡è óf:+1âäȑøœógrQòœ/aDõÓ_„aéšó/1dii+Ì<‘E‹ÅÆfÓ‹˜ùõ×A›£¥Éê†nPëׯG{{‡eúã{º0pù¬îÑc¦^_¬öî]«²gÏ|Öõ¤—ÝôgÑÓÓ§¯VqqõÊý: oçâH• Ö¬ùI¿ipRO}ë7–'ã타#U2<˜2e…þ²øÌW)›6íVûö…þÞ.™jÒÕaGª$ºûôiŸúè£oôwv§Å+66FïŸyG+‰ÓÒý!Gª$(°lÙÿ÷€¸ÅÇŸÔSàWIœá€#U<˜<ùký‰]»ªŸ~ÚPævp¤ ÄÿwâÄ)ýŽÔÆK¬êMŸ¾Êïç6"àH•)Y¸ð{ý…ï™w¡¼.< Nž¼Â[䶃ËâgP"r—܉÷ ²gÓíóémÞ48óמ=‡ÔΨB…þ{K3"o"L Ë×4aº×]öðáxý‡ ?Ë9›7ïѱJuëVOösåÊ¢ÿúæ¿W”STñ…i¢×9âô[˜Å¥©qqë·I¿óïGCûÃÙF—S…ý ôÚŽT–ñï…[ÞGZ¸9RY¢MoUXÞÒyss¤:oЦߊ©,ûÞM–@i7G*K¬Üôg ”#•=PÎÓ©ì±rž–8RYåÜìp¤²ÇÊyZ"àHe ”s³GÀ‘Ê+·¤` ”vs¤²ÄÊ-)XåHe”ó´GÀE*{¬œ§%ŽT–@97{©ì±rž–8RYåÜìp¤²ÀÊ-'X€äqq¤ò€‘ئ[NH ™ÐåŽT¡qq¥ç€€#•%xn ´J»9RYbå¦@K ©ìržö„ýÏÞ‘ßà¢G²ÅÆ^"ÿH6&¦M$7S¡†:j¸-ìÓ}hø1½DêÏ©SjÀÍÛ>pG-=n>ÉõÃNªˆ@Á5"Up¤JU8]e àHåxê„=Q·¹#r¯:BÙg£4…z6hò¥†¡‘LbÌúÊU«Võë+'W?*`u§V[’»^ZŠH…º;ÒµˆS£Šæ1"Û)5„·Q+M Û¹s§ªT©’(Î:tHDÄ+W®¬žLÌ Rrª£Hñ^ˆ¤øÂ… «=z¨W^yEµiÓFÔG)G¤»F¢Ž…b(ÊèØˆ#D_/þüjøðáRf~ñ´ôòË/ËñråÊIs …Ò»îºK"HíÚµEaÅw¶!2‘å™gž‘j:wW¯.í@ {Ò¤Iú?¿+·( RoË–-åTJQ˜oÒ¤‰zï½÷ä>~üñGQ¢Gîö©§ž’È‹N!ÚËXÛ¶m‚àèH£0ïÔâÁ¿¢†T<27mÚTddéØ-Z¬ÈÓÒÙ+W®)Ù‘#GŠ<-=vìX5lØ0Õ·o_‘š5ý°fÍÑXFÔUu~øWŒƒ òþðÃ2-5J«=œPhB*4š'L˜ Ð^jª”OTà™ÑjFÔ iÛµk× 9Q‹GÛ!"Ôè‰tTZýT­ZµJ¦Ñ‡zH½ôÒKRƒƒÈÌqdqiK´XTäT€IEÄ@Åv€Ž1ÅèG"¡GŒBù Bר”)SÔ¼yód›_³fÍ’(Å´š={vµÿ~ýo¬‘oôæ›o iŒØdÁ‚•–ç•ó‹+&Óí€@^£"Z„í»âŠ+D¸›v"à}ñÅ‹ø·9Ï”C6~ˆªf½‰)ŸHÕ Aƒ¨"UÔD*¢ò¶t.ÂÖ|ÁK~E^bD‰6t6‘”Ñy¦Üt$ç zøðaùéÖ­›Ê–-›ˆz÷êÕKH[¾|yã dŠD-Ó'êòF¬Û82u¡o$r`¥ÖO–èiü¼ŸÁm¥ý´3¤6×ôžÉÛQC*¢Þv’crš5kª™3gÊáiÓ¦I~E„Z´h‘t$yI1ù–1ò&"FÇŽEQ\RÍŸ?_ 0@!ËÔy3¢ÎŒ3”ÔÙ,9•‘¶¥ ´wîܹ~me"™×hëœ9sć"[´?FÅôGTâÑqk kò:€d–„˜žéhÁ‚ò]bµjÕT‰%ݨQ#¿x7uÕªUKr#¢VV—Ä™)¢ðÁHš!)¹T°QGÆ e)¡lÙ²B­&/ù^ÿþýÅhÓ®];ÉåÈ­ˆ®jûöíª{÷îþ*ùŠê£>’\ŽioôèÑþcÞ ®5¦GcXM `û4°ç܆mÛ¶ùô4P&ŒOwT@™wGG1>^Û·oŸïèÑ£RtàÀŸ&‡÷p‚íøøxŸŽVþsŒƒž²¤=zz3EòI5ùÊØÁO€å¶úAƧ‘­ûùôë‘Êf„u‚-¹R–‚Í+öM„IÎ2gÎìŸÚ‚}‰¬DU¯1톲`¿P>ÑRu9U´Ë²ƒÉ­¢¥Í©ÕNGªÔB2¨ïÓgС ~בê‚ïâ´¿Á°çT¼õÉJu$?ÝÄÆf“7?ãã7§}¥àмù vR±Ö¤E"‹DÛУÇLý¨¿XíÝ»V¯ÀgNÔÏ8ƒ€›þ,˜0}új—Q/R®³ðv.ŽTÉp`ÍšŸô—Ê'µ~òßú-„åÉx»Ã àH• ¦LY¡WêÏ|µ²iÓnµoß‘dÎp‡©’à€^L×_¡|£¿—;óollŒÞ_›Äî8R%Áƒe˶<•ÆÇŸÔSàWIœá€#U<˜<ùkuìØ‰]»êw¯ö”¹@©ñðï8qJ¿/µ1Ár«Ó§¯òû¹„8R%ÄDJ.ü^eÈ›à(O‚“'¯HPî þC 싟ÿ5%²¶Èx'*{ö8Ý0ŸÞÖ¹ÂEgÞiÚ³ç~ÇüU¨Ðe‘ÕèiM /ÖDH["ª‡Çë?ZøYÚ´yóõþû«T·nõd?W®,ªtéÀWZ"ªñámLo©é€9âTµjÅåh\ÜÅúÒïüû‰œâŠÿEÀåTŽ ©Ž€#•%¤‘ü…å-¤™›#•%Ô.õ´J»9RÙcå<-p¤²ÊM–@i7G*K¬Üôg ”#•=PÎÓ©ì±rž–8RYåÜìp¤²ÇÊyZ"àHe ”s³GÀ‘Ê+·¤` ”vs¤²ÄÊ-)XåHe”ó´GÀE*{¬œ§%ŽT–@97{©ì±rž–8RYåÜìp¤²ÀÊ-'X€äqq¤ò€‘ئ[NH ™ÐåŽT¡qq¥ç€€#•%xn ´J»9RYbå¦@K ©ìržöü1é’%KôLV³?;xÆÆ^"ÿH6&¦M:¹ã”Ý&ú;Fâ…3H…þ *U=öXÊjuÞ鄤øŸ^R¹œ*ÝÒáüݸ#ÕùÃ6ÝÖìH•n»þüÝxÄ‘ =hç‘#GmÁ8»ví’måÇ<´ÁD™ãÇË £ÓP•§-X¨:o»í6Á®U«V"·‹ o¹råDÆbÒȼ®!urÓ6¢ä`ÀÑ~ˆŒ—.]dúG–—A ö >0˜8q¢V´ˆé_„Á1{öl.‘bK1©¸ Fî¾L™2òi¶É…PIß½{·¢ñD´`• !X²dI©ãæ›oö+¤{ï jÕªâOÜ4£«_¿¾¨¹y +Fç%R³;wn©Íš5“N!¢ ÂMD¡óé:m>òZ£F ©‡õ:¢WRFd…|DD®iÕ¦. anTê0”›ÁªÎŒ3Jt€$ ..NÝsÏ=2XòåË'÷Î``v6ò5/†è8÷ƒ63ØdÉ’EêCÚ³ }X¡BéúÁ N®ÉõÀœiølì¬HÅE1B9#Ðk€S©R% ¡„QGg3z¹1¦¢$Ë›7¯ÿÔP2°lŒH@dÂL9eDƒÄlòäÉ _Ïž=¢Ù„}À¢±ü°€W¤HñÍš5«TG{‚ån‰®^Ë™3§ìRÓuщ 4r" ûLkØÒ¥K¢1eÁuR†AFCN©Ü!„×À„èÊ`żØ¼¼þlÓ^ÒcÔ a1ÈŒ™kÊN ©’»Db¾¦SˆR€ ÀŒl:—(Å(Ù°aƒÜ ˆé$ØÖ­['9Ó ‘ÅÌïD@`$*THN£.¢f¶!=aÞ}úˆž2O¢7±:iGbV³fM™ÈM1È0aÂU´hQ‰h”™)–èÉ”jÌ[/÷‰x0¸µ¨·L«Æ÷\?Sœ¨'uA3×Cò: # o¡S蜆 ÊÈ ¦¦“'OúGþ¦n¸iÓ¦’ ÃQ<í@ "_ÇŽ9E>‡ &SÆ6aèl¢"IlÛ¶m…ì{ôÑGe:)]º´t Ä`ªjÔ¨‘Ê”)“ä3D¦-¢OäúrAýË´“i’(8gÎi+"i®R¥Š?ÚpÓï9sæ™wæ™ß<Ï3ϼ÷>Y†Ä‘ã@ì90û¬tïÞ=XÀ%¢á@Ñ¢E%lNFÃIW'*8°EÅ6W)8°EÃ5W'*$²Ù¢j!+­X±BÎ<óL9ûì³Ó¤åƒÊÔ©Så§Ÿ~’ë®»NÊ•+—&íÆ¢‘ùóçK™2edÛ¶m’%K)]ºtð1{÷î•eË–IõêÕƒyá$Ö®]«c§ì)§œ"W_}µäÈ‘#œªi^&î$ÛË/¿,_}õUš ô×_•jÕªÉ;ï¼#ÿüó 4H'‹‰‹GêÚµ«¬_¿^ûKŸ½´{÷n™6mš7+¬ôàÁƒ¥wïÞ²xñb­_¹rey÷Ýwê›Ö…"ÛÇ,5:]¶lY8p \rÉ%R²dIae>÷Üsòꫯj?÷ïß/åË——;vHûöíåœsÎÑßß~û­Þýõ×å¼óΓ믿^j×®-+W® Žf7mÚTË/^\&Nœ¨÷.¿üriÙ²¥*TH4h ûöíÓü›nºI6nܘ(ݹsg©Y³¦|úé§BúÍ7ß”¶mÛ ÒóСCÒ¢E )X° J“9sæh]V~ëÖ­åÜsÏÕû­ZµÒg5kÖL8Ù{â‰'äÁÔñÒ6‹ƒ1\yå•òçŸÊ‘#Gäá‡Ö±ô¹sçj»ÔãÙ%J”‹/¾X¾ùæÍïׯŸ0>Úbq$GÕ«WëmúH{Hê±ëƒÆ§Òð /”¡C‡jHônݺ)讹æY°`Þ0`€–gþ%Ä\5lØPµ s²sçN7 qÂÿE‹iÙH?"Û_ý%Ÿ}ö™À$Ü¡CØwÞ©“Y©R%ùàƒ´3fÌPѽfÍ™2eŠ2 õïß_h e}ôQUu8TF•|ñÅ2zôhPÀ-_¾\òçÏ/–É¥]èŠ+®\¹r%J÷ÝwrÕUWižý €`úôé²dÉÁÝsÏ=÷H—.]´È÷ß/,’ &Èû￯qæÌ™ú{Ó¦M²uëVÊØ±ciCÿ?ÿüsÉž=»ò…E±jÕ*Uy<ð@ÐD=¤ Ï…GC† Ñ1²8Y°÷ÝwŸJ5ÛÏÐoÀ†J„6lØ ‹Œ8xþáÇ……ÁîÓ§<ýôÓ²nÝ:-›4i"uêÔ‘aÆÉC=¤õxöøñã…±0~ž1bÄÉ;·Ö=ãŒ3tܨï1cÆè‚¯_¿¾p=zTÛŽä#*› »Iܼy³üøãšÞµk—¼òÊ+‚„a`0Æ3¹H½_~ùEž|òI©W¯ž´iÓF'†6®½öZí/«1”(‹ÝÂEÝŸþY‹´k×N .,Í›7W°ñ ¯oЦ³e˦À m—߀”úØp\Løï¿ÿ®E™4$7Ò )ÊʧVòÜ}÷ÝR¡B©X±¢àOBÂW­ZUﳘ–#GŽ@úÇO»H6$`c1âD¿å–[´ “aÏuìØQŠ+¦’mË–-ðN;í4ùᇴ ´ÈÂ… 5 o‘R,f$U¯^½`óæÍÓzHzæû\pôìÙSŠ)"ðI†ï©†æÊ›7¯•¹G"GBK6‡aPÖ¬Y¥@š¶ŸuëÖU Mš4IÁ†¸g`H¤GyDW b–üŒÖ|ùòÙÛòï¿ÿª$#Ãæ“‡tIŽy¨ýÀX—•k É`WkJã£|J÷?ùäª-Ô˜Gb@ ªš~ûí7UWši>¼Þv›—Üwh[ð“  áBZ_zé¥ZoLÔ?ê•y¡|•*U­ƒ†Ê™3§–½ýöÛU¢£Y0oÜ”eáÚ¶_žK—.U‰$ØF“'OV{‹<Àl ›FÂb¯Yu‚: ä#a:íÐ$eZì€1ât=Tê§ô<`Œ˜hk“1ú…]i/òR"$ãÇ$yì±ÇTj²½ÄÂÄæfN°»!& EªÑW4›)lægžyFyƒäÅL@5#Õ1/Òlˆw&"®Y]P­ZµTÒ±­oܸ±Úy]t‘ª"TF«]©”·í zK•*¥+ ›‚|ÀÇfÎÁX{Änl KY¾Q‰¨lÁYg%ؘ¨8Úa¢`rjdûåWŽ{\Œ™‰ºì²ËÔ”@zaã†eQ¿û¨9¤ }±Ï`“ì…-éGö¹Œ »~žþù*ý±c¹Ïæ-„z§/l”n¸áí ¸oß¾jJ°ÙA²¡î1 ‚lv˜OÚ¤[ÔOùõ/QžAsL§FDG›0«$`v‹c›0+5` ç€1Bƒy$Œ‘¯yfp³Ú‚÷^xá…€YYíÛ·öìÙÌ7*(`VlÀHÃ`^j Ѐ¢Ö -K;ÞöCïGóÛH†€²V¥íÐ1‡¶ilÁ`|›ÞÛÃ¢Ú $BkÈv€Ø ŸÕf‰•…d %¯Ýz߬ÆP¢-¯½z?ô·]•¡ùüޤ¿ú~yìŠíÎØ+±ýÊ’—êÛ¶=kmZ›—Ü·—¨I.ˆ¾ãž %6ÇCi6Ä8v§‘nïÄ<þøã¾ÕQK«Ž2ÒlØ‘ ¶…®F¶ñ~”š$ô«ãòâƒ1ÙÆÇÐ\/âŽ^ nÖ¬Yü¥•»RàAöìg làx”,†Œ¯Ñ ¯Ä\ænÜ-ˆxêP×®ŒkcŽñ n3.‹BñÔµ¸ï‹S£NÑØ±KÌ®-›9³ý:š®¸[X´èãÙ¯þ5Ê-ÖiQ¶8öÑG‹Í±ÎG@û÷2ožüAmWÔ-L >|ÔœÅ.Ö8pÈœ3.³¶+ØÂÄÁ¬YëŒ3ù»Ž9jÞõúÆm¨ÂäŸ[Œ9r‘yâ`’sçú')è2œd Øg3g®M"Åöí;(}Ý+Òá<7³•9¦2ÛÈÒp<Ó¦­2/<&=5/E˜×ÙW™;¤áÓ2oSlaÌí¢EÍ‹‰ÿšwËôx6ÍFaÓ¦c¯~‡ÑÜI[$ ç 'íèÃ8ÌÚkk×þ&:5oü¶ÑÚ YÍ»ÿ§„ÙÒI]lxš¿õ‘Ù™5kó‡ÿ½£Ÿ;w³+=ö;3Ž7Vcrj4BΚ·£Í+Öÿ½þaÕ“¾¸[„Àè@­:Šœl‘óÌÕˆ’lQ2ÎU‹œlòÌÙl2ÌSÜÍÃŒp’Îf ‡KþeØüùârcÀ¶0Õ5éÏ6¾¸ÜpÀ-LuMúsÀÍŸ/.7p`‹©¸>¸Eζy†ëý'!Óþ_Ü-:¾¹ZQpÀ-B¦¹„æ)îÀæaF8Iw‚—üË8°ùóÅ寀l2Õ©Ñæ)îÀæaF8I§FÃá’6¾¸ÜpÀ-LuMúsÀÍŸ/Éæ:›-YÖ¤zÃ-U%.àl¶Äüˆä—[$ÜreÞÿ°›ÖiZ‡¿yËTW–, „„Ó3՘왨i o{‰ÿóñÁ6iíMl)â_ÚèpIK¸œxá‘ ¸KÌ­X‘S£±â¬k7 Ø’°ÄeÄŠl±â¬k7 2=؈%ä5 â<#3Œgz°½øâ‹n:Îñ”b÷2Ã`ºÿ¶6mÚhÌõ ˆü;wî\äK˜èŽ;ʽ÷Þ«‘~Mp\ùðÃ5HÃÄ6-]º´†—&Š;ª¯¿þZÛY¿~½¼ýöÛÁI¤Úá´ãòåËuÜO=õ”Žå7ÞÐðÚʇ_Df~ë­·4 u54J4§7^¨íG´ßé.ÙÍ}ðàAyþùç…øêû÷ï׉p&°† ž3gŽŽieBŸËàÁƒ`:tÐâÄu/W®œ¦ï¿ÿþ ðl[éñ`<a¤óæÍ›ˆ¬J |$œ4àèܹ³ìܹSÚ·o/_~ù¥2ÜÕ%À®ÙHͨ:žP‹Ø<~xóCëSžûôaïÞ½ªÆè”#GŽD߬[·næÿðþ#åË—×{ö#¥±RÆöǯ/&î¼þ{|žÙаaC.Ož<Ò¯_?Õ öYñö`K‰)Äw¯^½ºôïß_¥¿YŨ[l–&Mš¨Ä©R¥ŠÚ2´…”ó#$pkÖ¬©iì0T'ÀX¹r¥>ƒ¶IC6ÄB5UªTI7n,»wïVµŒº=z´fµÉÀ.¬]»¶4oÞ\˘3m+œ¿>ÚzHLâÉcÃ"Ѱa11yŽ]ˆtEúBœÞ ñ ÆÂ8Ò›Ò}ƒ„*ŪU«–þF¢téÒE'têÔIÕ6*ãÈ‘Äq l;3gÎTûnß¾}Ò·o_•PÙ³g—V­Zéd ¢Õ† ´ÍI“&éöIl&Bzr‡C-£þ™T6·Þz«ôèÑCíÈB… )xJ”\mî×­[Wzõê¥}Ùµk—`;–,YR°%Y`Œû®»îÒ*C‡•Š+ª™ÁF‹ÅJÙô¤˜þkzV¢9Œ?î³Ñ5kÖ¨ïÝ]²RQ+H;Q0rûöí’+W.µŸ%Ôm£F´Ú{Þo6ØžV}³ƒÝ¼y³ö)µgxÛñ¦á%vÒ1¢øÿ×ôìÀFŽ)­[·NÄv£E‹M”Ç&!%'®µë¼™ p')!!A7Þú~iúÇÙo¿r~y~}ô– uaúâÅ‹{‹Äe:î%f†N€Â6Ú¶m›¾©P¢D‰D FÍౄºe' X,¡v@Ö(·ùiýz ØsÒØÏGm³‘ðë£-ëï!Ù’×±]˜í£C†ªÄ¡:eÊ þ±¶mÛjÚ6ëyÊ 4òPm±ÏÁÙËF)MŸ½„ýh74~}ô–ÍèécË<Û ãÃÞÒìÙ³õ€ w~c›±KDj¤æ½Ç ÏÄs*׿jÕªê %ݳgOu-ø à$FBâÈe³ÁÉD©R¥dìØ±z±{Ä_˜!¡Ù9BôãŒ3ÔDÀÑ  cÆ6Ãf£)î%›S7nÜ(eË–Mt‹d™2edÙ²e²nÝ:õ9±{µ›ŠÔ¼÷HKÔ»M@‡ï®OŸ>* ÙI&w*@=œ¼¨!€>qâDU—Ç—víÚ©WË–-‰úêýØìiåØT°sĵ©@ä÷;O[ÞÛNFHgHɆ Ǥø'uêÔQÏ>vÜ„ ‚¶RjÞ{|o¸8[Äe…É„G‡3§øÂðÍY¢]œµ°ø *èIe^8Ä®š3îÞ˜e·Í9(¶&;Pˆ '^»/œ¶ã¡L†”lìÆ¬óÓ2‘CóQ£Féyí5$ƒuª¦æ½Oé~J§Ö¦ÄäYlpyXÂî —BÛpØšl”¸Ö¡›¡pÛNïrl7Þx£ž9Zu€üÊ•+«ÊdxÓ±Ûìôñ0;’SN3°ýöìÙ£>9N),aw᫳—ÍOîÛ‘sYÎ_9fLÔ͈”!Õ(Îb<åxö±yp°YÀ)ËÑÀÃFÕá(M¼NáвÜãB¢„s*@YÔ/‡à+!íØ$ñò—%Nüˆò\Œ‰EÔ̼ÀXÙìp^œ)îýl)1•ÅkHØW¡n Ô‡ÓV-¥ÔN¸÷"=ÀÖc7i=ýá>ǯ 5ÊXcA'ÂÏ–!%›e6+?Ô›nïá²Hk¸¼ö;¥g¤…ú¶íZ®ŒLÒfËÈ ?™ûîÀv2Ïþ »Û føIý8cdÇŒ2ãÿú0`áMÈLy·J̰`ÓÝèI½ŠÝàC90Ü©ÑP–¸ß1ã€[ÌXëå€[(GÜï˜qà ƒxVÏfàIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Query-members.html000644 000765 000024 00000056075 14042362132 025345 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::Query Member List

This is the complete list of members for mysqlpp::Query, including all inherited members.

affected_rows()mysqlpp::Query
disable_exceptions() constmysqlpp::OptionalExceptionsinline
enable_exceptions() constmysqlpp::OptionalExceptionsinline
errnum() constmysqlpp::Query
error() constmysqlpp::Query
escape_string(std::string *ps, const char *original=0, size_t length=0) constmysqlpp::Query
escape_string(char *escaped, const char *original, size_t length) constmysqlpp::Query
exec()mysqlpp::Queryinline
exec(const std::string &str)mysqlpp::Query
execute()mysqlpp::Query
execute(SQLQueryParms &p)mysqlpp::Query
execute(const SQLTypeAdapter &str)mysqlpp::Query
execute(const char *str, size_t len)mysqlpp::Query
for_each(const SQLTypeAdapter &query, Function fn)mysqlpp::Queryinline
for_each(Function fn)mysqlpp::Queryinline
for_each(const SSQLS &ssqls, Function fn)mysqlpp::Queryinline
info()mysqlpp::Query
insert(const T &v)mysqlpp::Queryinline
insert(Iter first, Iter last)mysqlpp::Queryinline
insert_id()mysqlpp::Query
insertfrom(Iter first, Iter last, InsertPolicy &policy)mysqlpp::Queryinline
more_results()mysqlpp::Query
operator void *() constmysqlpp::Query
operator!() constmysqlpp::Queryinline
operator=(const Query &rhs)mysqlpp::Query
OptionalExceptions(bool e=true)mysqlpp::OptionalExceptionsinline
parse()mysqlpp::Query
Query(Connection *c, bool te=true, const char *qstr=0)mysqlpp::Query
Query(const Query &q)mysqlpp::Query
replace(const T &v)mysqlpp::Queryinline
replace(Iter first, Iter last)mysqlpp::Queryinline
replacefrom(Iter first, Iter last, InsertPolicy &policy)mysqlpp::Queryinline
reset()mysqlpp::Query
result_empty()mysqlpp::Query
set_exceptions(bool e) constmysqlpp::OptionalExceptionsinlineprotected
SQLQueryParms (defined in mysqlpp::Query)mysqlpp::Queryfriend
store()mysqlpp::Query
store(SQLQueryParms &p)mysqlpp::Query
store(const SQLTypeAdapter &str)mysqlpp::Query
store(const char *str, size_t len)mysqlpp::Query
store_if(Sequence &con, const SQLTypeAdapter &query, Function fn)mysqlpp::Queryinline
store_if(Sequence &con, const SSQLS &ssqls, Function fn)mysqlpp::Queryinline
store_if(Sequence &con, Function fn)mysqlpp::Queryinline
store_next()mysqlpp::Query
storein(Container &con)mysqlpp::Queryinline
storein(T &con, SQLQueryParms &p)mysqlpp::Queryinline
storein(std::vector< T > &con, const SQLTypeAdapter &s)mysqlpp::Queryinline
storein(std::deque< T > &con, const SQLTypeAdapter &s)mysqlpp::Queryinline
storein(std::list< T > &con, const SQLTypeAdapter &s)mysqlpp::Queryinline
storein(std::set< T > &con, const SQLTypeAdapter &s)mysqlpp::Queryinline
storein(std::multiset< T > &con, const SQLTypeAdapter &s)mysqlpp::Queryinline
storein_sequence(Sequence &con)mysqlpp::Queryinline
storein_sequence(Sequence &con, const SQLTypeAdapter &s)mysqlpp::Queryinline
storein_sequence(Seq &con, SQLQueryParms &p)mysqlpp::Queryinline
storein_set(Set &con)mysqlpp::Queryinline
storein_set(Set &con, const SQLTypeAdapter &s)mysqlpp::Queryinline
storein_set(Set &con, SQLQueryParms &p)mysqlpp::Queryinline
str()mysqlpp::Queryinline
str(const SQLTypeAdapter &arg0)mysqlpp::Queryinline
str(SQLQueryParms &p)mysqlpp::Query
template_defaultsmysqlpp::Query
throw_exceptions() constmysqlpp::OptionalExceptionsinline
update(const T &o, const T &n)mysqlpp::Queryinline
use()mysqlpp::Query
use(SQLQueryParms &p)mysqlpp::Query
use(const SQLTypeAdapter &str)mysqlpp::Query
use(const char *str, size_t len)mysqlpp::Query
~OptionalExceptions()mysqlpp::OptionalExceptionsinlinevirtual
mysql++-3.3.0/doc/html/refman/field__names_8h_source.html000644 000765 000024 00000052662 14042362132 024056 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: field_names.h Source File
MySQL++  3.3.0
field_names.h
Go to the documentation of this file.
1 
4 /***********************************************************************
5  Copyright (c) 1998 by Kevin Atkinson, (c) 1999-2001 by MySQL AB, and
6  (c) 2004-2008 by Educational Technology Resources, Inc. Others may
7  also hold copyrights on code in this file. See the CREDITS.txt file
8  in the top directory of the distribution for details.
9 
10  This file is part of MySQL++.
11 
12  MySQL++ is free software; you can redistribute it and/or modify it
13  under the terms of the GNU Lesser General Public License as published
14  by the Free Software Foundation; either version 2.1 of the License, or
15  (at your option) any later version.
16 
17  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
18  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
20  License for more details.
21 
22  You should have received a copy of the GNU Lesser General Public
23  License along with MySQL++; if not, write to the Free Software
24  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
25  USA
26 ***********************************************************************/
27 
28 #ifndef MYSQLPP_FIELD_NAMES_H
29 #define MYSQLPP_FIELD_NAMES_H
30 
31 #include <string>
32 #include <vector>
33 
34 namespace mysqlpp {
35 
36 #if !defined(DOXYGEN_IGNORE)
37 // Make Doxygen ignore this
38 class MYSQLPP_EXPORT ResultBase;
39 #endif
40 
42 class FieldNames : public std::vector<std::string>
43 {
44 public:
46  FieldNames() { }
47 
49  FieldNames(const FieldNames& other) :
50  std::vector<std::string>()
51  {
52  assign(other.begin(), other.end());
53  }
54 
56  FieldNames(const ResultBase* res) :
57  std::vector<std::string>()
58  {
59  init(res);
60  }
61 
64  FieldNames(int i) :
65  std::vector<std::string>(i)
66  {
67  }
68 
71  {
72  init(res);
73  return *this;
74  }
75 
78  {
79  insert(begin(), i, "");
80  return *this;
81  }
82 
84  std::string& operator [](int i)
85  {
86  return at(i);
87  }
88 
91  const std::string& operator [](int i) const
92  {
93  return at(i);
94  }
95 
97  std::string& operator [](size_type i)
98  {
99  return at(i);
100  }
101 
104  const std::string& operator [](size_type i) const
105  {
106  return at(i);
107  }
108 
110  unsigned int operator [](const std::string& s) const;
111 
112 private:
113  void init(const ResultBase* res);
114 };
115 
116 } // end namespace mysqlpp
117 
118 #endif
Holds a list of SQL field names.
Definition: field_names.h:43
FieldNames(const FieldNames &other)
Copy constructor.
Definition: field_names.h:49
FieldNames(int i)
Create empty field name list, reserving space for a fixed number of field names.
Definition: field_names.h:64
FieldNames(const ResultBase *res)
Create field name list from a result set.
Definition: field_names.h:56
FieldNames & operator=(const ResultBase *res)
Initializes the field list from a result set.
Definition: field_names.h:70
FieldNames()
Default constructor.
Definition: field_names.h:46
std::string & operator[](int i)
Get the name of a field given its index.
Definition: field_names.h:84
Base class for StoreQueryResult and UseQueryResult.
Definition: result.h:111
mysql++-3.3.0/doc/html/refman/doxygen.png000644 000765 000024 00000007303 14042362133 020760 0ustar00tangentstaff000000 000000 ‰PNG  IHDRh ;ˆØŠIDATxí]y\•Õº~45%TL Q”PE"q–Û11±]8a„w*©¨(*â" ˆzÀè`8 ¨‰¢mÅ,’òà„p$%”œBó(8k†Ü÷ýÜû6lòö»§k÷Ç÷[ÏÞß·Ö;?k½ëßÕÕÕPxÑêÏ't´ÏùÈ€zÀÇÅ3_€Q4€g@œmÿ ¾ò‰âci‰ôçÿ{ ðÇð¬ù~½Á€4:õHcÂü ðŸÁ³„ª'ÕPÆæ P7^h،♠zb„cóP¨„ 3‚† Ò}çÿO²qÁºNkÝTÛ(É?d Ç~z<’«4Óǡ؞Þv­zµÙ¦õ¬ZâdÛ,Ë6Ók±]Fz< ¾ZçƒsÕ?ìƒsUø2SÉåwê1”c`[ì—}%ѽ.Ô¼6‚BLZ˜û!F8[ ¹…×TéÛ— »Þ#gó]å:vžu?‡vèbÙR˜?wùŽŸ¾ÊÐgbÑÉÌÕ$kF~Ê;عÆ•¢ïX®?ÉèlÆÙôõà»Nʪ¼­,ìHC§gAz•ÆlÓº­gÑú ]œjÎñåM…3ÓÚæoÒ³'=‘$Ò÷f}G•ŸS_‡öèco.Êȹ :ó£ Ãds®Ù:1=¼{ƒå9?÷ý…zqÛvîÓi‰D’p¿Ë šmÙíoÛâýaÖüEqÒµwÌ}¿~{òj€ç{ôºŸFNëí[ëOq·ÇOSúXO]°>‚‚muæÄ¾e¤“5Ë{¨JÕ¯£(›´«bÂçû’ÍlÓÅ}žïú`éUÞy„ac§Á†ÔCºŠóAkl‘±y¥†ô¢ùôs÷Aø¬7ÄõôoJ±äÄ ù.¥Be. Z¬Ð×ÇÈöå¹­ù'Ù-PëìŠyF.ž‚žÝÚ€lp&.êˆð•jò7’re’z19»ã§HGíø%œüq°ïüz׈c¬_k_")ŸHJnÐÑ~ˆÐÖ˜á´äÕ5 µÁq€ÿ5#¸·îà¶+9T‘‚ ðŽ÷Rܸrz“Ï´Ì =Ï…{ðáO£Èf ¡Íwg|Ž’Ü/¢Þ$÷¯¢ëðúÀ;¿à¨Ö™âÒÆ­]¯ÜW"Þ/< ‡÷DÏà°½üB}çyIEc^—ƒ=[V“Ýh²ëMä$l];Kû®¸ýr¦È*Åò ÿtÒõ$]•MŸ÷´;×I€1èó!‚œõ¸M õ¨(fÌæ<ÁÎÎò5~z¿ù¶ž mÌêÕ >–âÚ©âëˆIÎÞçz;ãu[i·eç^ÆÜÙÓ³NÞëF6B\}7†»+üŽÓ,Ã'a ½˜-yHY¿,‘^—ñfú~ß?Hcø¸…¸ñó{Z+4\såƒû·¯Ù·nߣð«íFÆ¡sغëû§D¾?ò<–Ævkx0ÅM±ælذÁIÓxÿd”žÜÉ÷EE»AªM«g*È£YEí7Û™^[uíý®v[wGå†=Ed¼n×¶ÆæÖÅl¡'¨pGÚk+‹æ¢À¬¨C8ªâš2 dz3H£ß ¡¨BÒûSÃÅù[wŘ ~xpçútÁæmö¤Å£¥iQæ­‰AB1ÉfÙ‰›4u¹ïìIÒ]Ë6äò%ÿ†† 1t.’NJph¬zÌ ÎR1Ž"3-"¸‡‹&ìó°1âüžìó[:‡ï„¼‘……N m–“W0®_èÜœ ×õ6ùò&»)Æìꦬýæ}¬ñ~»{múù]z½£M•ºP~^Îá:eQTÙ_*7ÕÄ9É8—·Ëï 3°¶47E•î¿u÷“SÉ»U¯ _ NíºôW¬e¸ÄNÓ|»;™¿;ŒæÅd"ȉôøòÞµõï¾®½"èÄ´ÖMM+bYµ‘_ÉæEÝüÎ]P»¹XKÐI½Þ¥oE<_¹(„EP±Œ|mÇÁ¡‘Ý,ŠÓ©ººZ±Îߺ§×kÝ,kÍMš`Äø…jzeU»æ ™Át3ÓÀ½˜6—ÒöùË·r¨¹Ñ}““wö:Χùë¼ ¿|‚TܵÉQˆKßç_ÁâÀ™œ”pÑÐóໃ¼Ydâ0!®àa –øöçW$ÃÁ‘Á$/\¬$ð 2ÞímÞLH‹Ÿ èd£HVÜ,:ò½»RÍZšJ­a„z*>‹_…NT(ù‚^SVF­U¹8ñEþôñ܈óùnd;«®8™\C]ø=Èêm¬Æ:‚´ÆbãDd=Áãßžˆ‹UU5O‹|]þð®Pèêv‰á\]2ßìÿ"yÈ[ïyʧz£g{Y«{„Ùø5©ÿ;w{N3é­nâĨw§Á¢ÍK¢Ý­ûÏ29Id¿’ì y)ìPÞò8ŒÅ©¯‰±@mPÔñwjl,6 áhWÕ˜d öà uõmÁp®.™á£Ç…twöR x­BδYcŒxg*vo  yò‘•“[¬?ÜVœ˜0ÒN¡O난~Žó’¯·h#´Hkýœ±8kÓß^Àq@]àÓ“ø,56´¯÷Í-κU»n…[>]@nîøÏœp›[œ6# €4tën¯:ŽÒþ}…—8äT9_žY$/´G’K™©ù†•(óÑ’Mø©`ŸÉdѺ;ùO‹B Ó&P{qöhJÉ+Úé–§¦l2«MïöÝ_1ÑÓ«’t¸½±l€ëØya ¦ô©«®½ÆL^¬žêñš¸ùy.¾Û½Š[ u/]½‹iS}øN>²e1™q‡jfÚ&¢©iT\=kÏ›ÀXô-.84V5ðu!TE˜ þ.ŒOH´¶4—zwTr.ï‰¦Ë xõµ·œÖ„HÆù£žÈHùg Ñhñ’T$ßyq¸zþ¨p¿´ë< q•ró÷š‰wÿÍÑð–I]´–æI²é²˜sÂ"×:Õ–bÕ¦“ÈÙL6¢9VÊÓWž§<æ;”3?ý©Mê3AV#µ±ËÞ¯‘ž K£UrÝ9!›qát¦H£Ù+6ÇV…/TS^pÃùqgLP'Ú5E ‚–ÀÞºîÄ Ën"2|Ÿ;®W»Îý"Ö¬TwÖâµtúŽO'› á+W Ã+¦âZÌ–<ÕÆ&nOÝ,IŠ£06.ÁZ.Çñúøh*INÚ’Oe½ÉgBXÐÔZóäøä9èü“hÒíDSš¥¡Ê µA¯/Ôc¸ö“`A§¯"zå|‘ €ÅŸ¨ú;HÍ#‚Î|%ÄOˆƒ«OàÌÉÐÜD ž mÜðâc–ƤÉÂqm¶uË&~÷núÒË £ÇÏ€ZÕj =«_n[‡‡÷nN§ÏÝ$_¾bE˜‚€Õ)ù8¾?6‘lú“ÍÙæÖ}#bW( œ³d-®•p&¡ý’œÖa”"9öõņÐ$’Ú›AÜ!ä;ÐÑõè{~á¹8‘ÛÞ£1ÛÓÉ0ž`²#´kÒuäNÅÖ Q¹bhæ ”8ûÓMáŽa›•¿”w±h²¢®qŠæ°(bK ‚’Z¾Ò%ÐÆémáãÖË(Éý‚ÛJ)@> þ›7% ï{y Á“¾ÆÒîohfòô>{pÿ.­_Î%±ÉèägëlZØ\B2B #™¸ÚüÒºp‚hÝšü®[¥Ü<‹#SpñÌA7’ãØHƒt4:Ÿ|g¨tÓL¶*($Æ©»ì…®ù’ó÷$;b›ÔÙ`=¶£¦M„MÌÄ5ò«·Ç¾“H·ÌH.¼žHeAîº5}r­dõ¨±)ÀT};€Q5iÖ2…O0ü…0óñÃ;óæ,Š´²µ냔}g‘£]‹7å9ˆà©_{üèîêžC>úhê{Ž .ÈìðIIð€?[Kswz6Òuíý¬;µ€ç§OåâJÉa˶zv°éd† ¤µâ‚l´é舊«Åüy¾c÷ÁèÖÍ'ràúÅ™TWÕôÓ°¡L €|ʽŒ¼ì­høBã ÝTëî'ò]Kø£ìâÏ(=¹Kx €¿ LÌ,Pý¤Êµu‡¹…׈ §Å¾÷à1Ý«Äý;¿pGDäxZYÛ kfæ6¸ùóæ7®œ®þ6·ÕoÚ¾ÔH~ò®Þ¸â 8Uø“p<ºw3¡a£ÏÑ’‘3èÏ"€bˆ-ÎܺÏ_ªÅ]+ËM©zü°s“f-êçhÇãÑýÊãôÿ5}ZQNb{Ó?å%ÿ\SUõعIÓæ}~}p[œoÔÄ„êÐMMZáNÅå@>Œ„²á6(?¡Åé âK½+ü?À%ÝÝ·/Ç1‚9áUø?B)”ÕèâÞlÈÒêÏ @=àùÄÞžk­®ÅIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1UnixDomainSocketConnection-members.html000644 000765 000024 00000043161 14042362132 031474 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::UnixDomainSocketConnection Member List

This is the complete list of members for mysqlpp::UnixDomainSocketConnection, including all inherited members.

build_error_message(const char *core)mysqlpp::Connectionprotected
client_version() constmysqlpp::Connection
connect(const char *path, const char *db=0, const char *user=0, const char *password=0)mysqlpp::UnixDomainSocketConnection
connected() constmysqlpp::Connection
Connection(bool te=true)mysqlpp::Connection
Connection(const char *db, const char *server=0, const char *user=0, const char *password=0, unsigned int port=0)mysqlpp::Connection
Connection(const Connection &other)mysqlpp::Connection
copy(const Connection &other)mysqlpp::Connectionprotected
count_rows(const std::string &table)mysqlpp::Connection
create_db(const std::string &db)mysqlpp::Connection
disable_exceptions() constmysqlpp::OptionalExceptionsinline
disconnect()mysqlpp::Connection
driver()mysqlpp::Connectioninline
drop_db(const std::string &db)mysqlpp::Connection
enable_exceptions() constmysqlpp::OptionalExceptionsinline
errnum()mysqlpp::Connection
error() constmysqlpp::Connection
error_message_mysqlpp::Connectionmutableprotected
ipc_info() constmysqlpp::Connection
is_socket(const char *path, std::string *error=0)mysqlpp::UnixDomainSocketConnectionstatic
kill(unsigned long tid) constmysqlpp::Connection
operator private_bool_type() constmysqlpp::Connectioninline
operator=(const Connection &rhs)mysqlpp::Connection
OptionalExceptions(bool e=true)mysqlpp::OptionalExceptionsinline
parse_ipc_method(const char *server, std::string &host, unsigned int &port, std::string &socket_name)mysqlpp::Connectionprotected
ping()mysqlpp::Connection
protocol_version() constmysqlpp::Connection
query(const char *qstr=0)mysqlpp::Connection
query(const std::string &qstr)mysqlpp::Connection
select_db(const std::string &db)mysqlpp::Connection
server_status() constmysqlpp::Connection
server_version() constmysqlpp::Connection
set_exceptions(bool e) constmysqlpp::OptionalExceptionsinlineprotected
set_option(Option *o)mysqlpp::Connection
shutdown()mysqlpp::Connection
thread_aware()mysqlpp::Connectionstatic
thread_end()mysqlpp::Connectionstatic
thread_id()mysqlpp::Connection
thread_start()mysqlpp::Connectionstatic
throw_exceptions() constmysqlpp::OptionalExceptionsinline
UnixDomainSocketConnection()mysqlpp::UnixDomainSocketConnectioninline
UnixDomainSocketConnection(const char *path, const char *db=0, const char *user=0, const char *password=0)mysqlpp::UnixDomainSocketConnectioninline
UnixDomainSocketConnection(const UnixDomainSocketConnection &other)mysqlpp::UnixDomainSocketConnectioninline
~Connection()mysqlpp::Connectionvirtual
~OptionalExceptions()mysqlpp::OptionalExceptionsinlinevirtual
~UnixDomainSocketConnection()mysqlpp::UnixDomainSocketConnectioninline
mysql++-3.3.0/doc/html/refman/functions_func_v.html000644 000765 000024 00000006677 14042362132 023047 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
MySQL++  3.3.0
 

- v -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1DateTime-members.html000644 000765 000024 00000032524 14042362132 025725 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::DateTime Member List

This is the complete list of members for mysqlpp::DateTime, including all inherited members.

compare(const DateTime &other) constmysqlpp::DateTimevirtual
convert(const char *)mysqlpp::DateTime
DateTime()mysqlpp::DateTimeinline
DateTime(unsigned short y, unsigned char mon, unsigned char d, unsigned char h, unsigned char min, unsigned char s)mysqlpp::DateTimeinline
DateTime(const DateTime &other)mysqlpp::DateTimeinline
DateTime(const char *str)mysqlpp::DateTimeinlineexplicit
DateTime(const Str &str)mysqlpp::DateTimeinlineexplicit
DateTime(time_t t)mysqlpp::DateTimeexplicit
day() constmysqlpp::DateTimeinline
day(unsigned char d)mysqlpp::DateTimeinline
hour() constmysqlpp::DateTimeinline
hour(unsigned char h)mysqlpp::DateTimeinline
is_now() constmysqlpp::DateTimeinline
minute() constmysqlpp::DateTimeinline
minute(unsigned char m)mysqlpp::DateTimeinline
month() constmysqlpp::DateTimeinline
month(unsigned char m)mysqlpp::DateTimeinline
now()mysqlpp::DateTimeinlinestatic
operator std::string() constmysqlpp::DateTime
operator time_t() constmysqlpp::DateTime
operator!=(const DateTime &other) constmysqlpp::Comparable< DateTime >inline
operator<(const DateTime &other) constmysqlpp::Comparable< DateTime >inline
operator<=(const DateTime &other) constmysqlpp::Comparable< DateTime >inline
operator==(const DateTime &other) constmysqlpp::Comparable< DateTime >inline
operator>(const DateTime &other) constmysqlpp::Comparable< DateTime >inline
operator>=(const DateTime &other) constmysqlpp::Comparable< DateTime >inline
second() constmysqlpp::DateTimeinline
second(unsigned char s)mysqlpp::DateTimeinline
str() constmysqlpp::DateTimeinline
year() constmysqlpp::DateTimeinline
year(unsigned short y)mysqlpp::DateTimeinline
~Comparable()mysqlpp::Comparable< DateTime >inlineprotectedvirtual
mysql++-3.3.0/doc/html/refman/functions_vars.html000644 000765 000024 00000021704 14042362132 022526 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Variables
MySQL++  3.3.0
 

- a -

- b -

- c -

- d -

- e -

- f -

- i -

- l -

- m -

- n -

- o -

- r -

- s -

- t -

- w -

mysql++-3.3.0/doc/html/refman/functions_func_c.html000644 000765 000024 00000017522 14042362132 023013 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
MySQL++  3.3.0
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SelfTestFailed.html000644 000765 000024 00000031406 14042362132 025435 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::SelfTestFailed Class Reference
MySQL++  3.3.0
mysqlpp::SelfTestFailed Class Reference

Used within MySQL++'s test harness only. More...

#include <exceptions.h>

Inheritance diagram for mysqlpp::SelfTestFailed:
Collaboration diagram for mysqlpp::SelfTestFailed:

Public Member Functions

 SelfTestFailed (const std::string &w)
 Create exception object.
 
- Public Member Functions inherited from mysqlpp::Exception
 Exception (const Exception &e) MAY_THROW()
 Create exception object as copy of another.
 
Exceptionoperator= (const Exception &rhs) throw ()
 Assign another exception object's contents to this one.
 
 ~Exception () throw ()
 Destroy exception object.
 
virtual const char * what () const throw ()
 Returns explanation of why exception was thrown.
 

Additional Inherited Members

- Protected Member Functions inherited from mysqlpp::Exception
 Exception (const char *w="") throw ()
 Create exception object.
 
 Exception (const std::string &w) throw ()
 Create exception object.
 
- Protected Attributes inherited from mysqlpp::Exception
std::string what_
 explanation of why exception was thrown
 

Detailed Description

Used within MySQL++'s test harness only.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/functions_enum.html000644 000765 000024 00000007207 14042362132 022521 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Enumerations
MySQL++  3.3.0
 
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ConnectionFailed__inherit__graph.png000644 000765 000024 00000013425 14042362133 031026 0ustar00tangentstaff000000 000000 ‰PNG  IHDR‘‰,]ÚÕsRGB®ÎéÏIDATxí ØMÕÆwÔŸHiŽŠfÍJ%E3J4(¢¢4hRô”†§ÒE%4£y$•„’2GšE2$•H¥Ôþ¯ßÒ¾ÇùŽ{}ßýXëyŽ{Î>ûì³Ï»ß½ÖÚç»î»žsf†Àª#ЯԪ_kWË0 €‘¨ÐZë7¤dÇ/în”Èûï¸ãŽ®J•*ÅÞ÷¼ QéÒ¥Ýá‡^ì`”¤üðÃŽ-ÌÂY>ŒB ¨„`>tßH”£PÂû°V’èµ×^Ë»a™8q¢›3gNÞõ«(:T¢IT³fM÷÷߯€Ãé§Ÿ¾BYq@œÖ­[ë­GífΜYÝXí÷,1$ºüòËݶÛnëöÙg7aÂ×¶m[7vìX×°aC÷çŸê`m¿ýö®U«Vb}ñÅ®~ýú âÀ]—.]tÿùçŸw»îº««^½ºëÝ»·ûý÷ßÝ¡‡êìþùç× AGï¾ûÎÕ­[×m±Å®Y³fnéÒ¥î—_~qM›6u[mµ•Þ{Þ¼ynÒ¤Iîä“OvÇ{¬–wíÚUïÓ¼ys׿Çñ7ß|ã~þùg÷×_¹ .¸ÀU¬XÑí¹çžnĈZ·víÚî²Ë.s[o½µ«W¯ž[°`–—„J‰FŽé ä>ùäwöÙg»îÝ»»Ûn»Í•*UÊ=þøãîÅ_TB1ðeË–ÕrÀ/_¾¼;è ƒt¶Ùf·Ûn»).ºè"wß}÷¹Ûo¿ÝuêÔÉ͘1õlÙÒµoß^Ûž={¶kÔ¨‘ëÑ£‡Ûk¯½”$套^RÒA„wÞyGÛ¿ôÒKݯ¿þê^yå%6å={ötÔ§ý5j¸+¯¼ÒMŸ>]IôöÛo»1cƸwß}×yæ™bCøß~ûMIõã?*¡K´ü¶8M‘—Ù˜ÚT¿ÑFùóÎ;Ï¿þúë^<Ö—÷K^TËï¾ûn-›6mš"ØÞСC½¼ ó÷ß¿nBß·o_/ÈתUË 1½ ²^/ðS¦LÑ}ú Dðò>Ë õZ! ßa‡ü{ï½çųeîyÎ9çøÇ{Ì ùýa‡¦åb½x%ß®];/äÌÔÝrË-ýܹs}åÊ•½x+-ïСƒïÖ­[¦NÒŽÔˤJ:µ¦Ëú–O„‹—r›m¶™Îvû¬†’€-¡åøãw¬È>dŒ0ù0òÂá 'œà/^ìÄ#8™ñN<“z¿~ýtõDèiÓ¦^sÌ1Çh{FÅ j¾ÄŸ:wîìªU«æF¥u§Nª! rqÏSO=UËé_ÔŽ;î8m“¡ÜŠIR¢mMû¾øý² g’dúwÞÙï±Ç~—]vñ<ð€6#ùŽ?òÈ#=¡†0#ƒá Oâ1ôü¸qã¼xݿ뮻¼$¿ºõÕW{IÒ½$·¾I“&^¼†ß|óÍý!C¼$Ù^Èá{õêå?øà¿ï¾ûúí¶ÛÎשSGè$Ñ~¿ýöÓþжä6Îh‹0)^ÆKâ¬÷ùþûïõ×]wáL¼¦rzYxñˆ^&‡Ö%œÑLˆ\¢Â³¶X-ÑAꑟüñÇ™þ’-Z´(sLÎB½lLVJ^êlªzItW¨÷å—_zI„µœœHVWJ@ˆ5ò·hŸÃ9 kËõ=”gû™O9Q±ÿ6[7ÎJŒ%qÔÈBA¹x‚èéÔ}r˜h“VY¼Ô § eq#—b‹Úl=Ììó:bm±‘å;Ø|°{õÕW󽛫­F¢"€˜­W+‚Ûå]F¢¼’’סbωx/#ɰ¾ÁÍ7ø~ùe‰ûøãyò…¹üÌ_xÕ¶«|èH>öáž{ÞtwÜ1ØMœxƒ«\yÙKÇ|ìg1÷ÉþËPÚ ð¡+Sf}ù›Ùø´jëü9ˉ  À_Ìuóçÿê–,Y*äý €ZV F¢xðÌ3cäÏ(˾«4kÖÏòWøùÔ´b#Q8ðCùîOøÂ›wÏ=7¶€šVl$JàÀøñ34Œ…S„´þýG‡CûŒ!`$ŠÂá€É·—ÿëû‚¿Ë·f'Ô¶"#QŒòÝ4]ýý÷²ïø„ÓýµÔ øQ8´ÏF¢ì¾÷Þ—±’e‡K—þ#yјÄsëza±¿±Î·xöÙ1úMÃ7ÞPºæeßg¾³½`ÁoÒöÜs›|ëv±öÇÞXÇà_¼x‰|‘~º–NŸþ£{è¡aîÖ[—}K±B…²î€²ÿºI¬éµõ°Ÿy¢ØÐ–/_Æyä®ZJ"ýÔSÿǪÚá¿XNdT(4F¢ùO#¥Jü?GR.]§N‰R†›ï7X›¥#`$JÇÇÎf€‘($ g)àDN‰"`Äw-œÅI>6%ãb¥9 `$Ê,«šŒ€‘(+Í#Q`YÕdŒDɸXi‰RÀ²%~ 8‘SF¢ñ][âÇI>6%ãb¥9 `$Ê,«šŒ€‘(-%'b3KGÀH”‚9›Y:F¢t|ìl‰R@²%~ 8‘SF¢ñ][âÇI>6%ãb¥9 `$JËÂY 8‘SF¢ñ] gqD’DɸXi.dû îÙÖ9'Þ¬¬[éÒå|¹r»¯ÏÆ„_â/b+z•!ÄQÐù’Ž–øméÒÅ"&3µÄ?G ÑFQ›\œL6u-œeƒ’ÕIEÀH” Ì#Q6(YTÖÊ_ùøãU‰±(ÄèD3m…<=YW§!ìǽEgmuÞ¦HÚ^+=Ñwܱœ:caºþúëèÅj{(%²¡²¸º iÒ>úÈ-\¸Ð½ù曫ë6EÚn±énVùKä»tô¿G;•a`}P䯙õ(4ÇeÍ©€ª4×}ôÑ*Í9yòä @}úôQÙM®G#ÈIxàî /t"â«2›¨@cHk~õÕW.*…N9:±ô1l?òÈ#NÒ•í"gŽF ýÁS‰bcæ~q uÚ„,È„¢Ñ†b¶ˆð9Vum¤?gÍš¥r£ÔeÅ‹*6ºkà†Lé€TÆgeH'bÈT-+âwþŠ+®ð²ÄOm)K$0EßÞpÀ^„|½ ¾JdÊàø—_~YÏÓˆ  T±Z$É=ЉHq¢øüÓO?yV M‘5÷"6ãGíÏ:ë,ÿä“Oú›o¾YUž?ûì3/Ú±*íI›"-å‘ð”Ò{rCf)PÑ‹õBd-kРÖiݺµÛøñãUuQˆ©ÊÒU«VõÏ=÷œýW/‚Æú,¼/‘?U˦lðàÁ^´lµ¿Ÿ~ú©Òû£Ž:Jû “Ê·mÛV•‘!¥-”¦ƒÂ52¥¨m;VŸAdѽȦ«ä¨x-í²¦+3äOƒºöÊêæp¾o±åDgœq†ÎÖý÷ß_g#3 ñ9D'$p-Z´ÐÙÈ,gf¢tˆ0B¿7v—\r‰jÑ‹d¸;âˆ#tV¯^}…™H] ݸ5h ={D|[µjå ¤÷¸á†2×wíÚ5³·ˆæ@¨Ro¸á†N´h]ýúõÕ#rÊ)Ácú³°‘“‰F¬+W®œûú믵=Ñžu¢-«ûx¼Vûöí]ݺu5l¢”MûAQÏ,²¤Õk<(÷¡ýO<ÑÕ¬YÓ ÜUW]•éïšÞ)6í´ÓNú¬ÈrÆå1Ë”)ã6l¨áué#Fè€àÖŸzê)•5—Y¬@Fe0¹.nQ1»¨Ôx(§Œü#ÍU;n ƒ$ƒ$Ð9†0äOAB² ¡þôÓOg„ö¢ý¢NÔ˜8H¹Cþœp†éÒâ–@/–œ(’ö‰÷¹õÖ[5o%j}qYs¤Ì! âaÈeâ6|øpý5X ®|ùòχ 6Lsdʃ¶,m±*ŠJ¡S—\iò°q¼dÉ'ªÓNB«{ë­·Üo¼¡yÑÈ‘#•”¬!zAê¡|JøvM›6eW-*ƒNn…Lº„dùößU©õ|²bóDI àƒ‡ ’ó¨~=u\6+H#¹—“IC"¯óÔ03©Úa&ãîçÏŸ¯I/åÌf’tÈÂ,ïׯ—hh‚„P!ù—¶#ù—c 1#’ëh˜!ü(K®£¤ ¤$'yoÙ²¥£¢J­á®V­ZÚÔÀärJ:ˆˆIލ‹Ê1úKheá@¿ðnxF‰õµ×^ë…@Ëɇ“X#5ެøê° hBm;.¡NbM‚v6 ŒD) Ù?œÈ)#QŒø®-ñãˆ$‰’q±Ò0¥€eá,œÈ)#QŒø®…³8"ÉÇF¢d\¬4¢¿é(Š8kÕ\ …zžµQÒ¼°˜p=Š[^ª Y%t(Î=÷Ü\xhu×!P:©œVxl g û\eŒD« ]0$ìs•È»ß'BæŽ$e UyJT ÇŒãæÎëDwÖÅÇUi«(®é-‡pq®ŠA<:mQCP/Im2ÜiPÄö¢Ò£ÑëãûÈŠrÈ!ñâ•ç'BeY„zWÚñl* ”'½ªñŠj¡HF¨Þ*ûkÚPiDô…#”§s59VS° "|IîÁó‹¨sR•IJ¨îmb… söDè¿ÿþû*êË,GÖ›ÁA Qž]ÉÅiUC¼øâ‹Už¥@®E]‡zˆþ"ׄúà;ì ÒQˆäCV L$Æ‘ÔDlÉsa`EÅÚ]sÍ5®lÙ²*0Ü¡CU&D0˜ý'žxBå:QE †–ˆÏiÈsŒ-²VÌXŠQt:t¨ ßtÓMªSÏsá%QƒdõŠ€0š¯¨+2óëÔ©£„E‹çêß¿¿ª:"TŒÎ=Ò¢ô•머ÈrÙ5oÞ\’'†lx… 6ØÀ‰èŸ*GRŸ:x—¨!*ŒJ#úmMš4q5ÒÕ÷ Ôç9‘aÇ›¡C‹Æ.2¡÷Üszj¤Ñãž.zŸ´ýœ=Ñ¢E‹Ü¨Q£TV“NöêÕK¥4EŠ[Õ¡‘Ê R”ÌDng̘áDjÜ¡áŠö<:ñ´ƒ|—.]<Üutf1X€/Òâ*Ù»wo}H…¦Ç,5?üðC-G# 2aaŸº¨6G µhú=nÜ8uõ÷Þ{¯Jƒ0&JˆJþîÝ»«¬&íÓWôa!K\‚=ôÐC)NQxTÂC|/rêîÎ;ïTÉOúÙ¦M•áìܹ³ê¹¢0M=žÂC\®ÁCâ=E[–É‚w°‡~XI q)GéÑo¼Ñ¡¤Í30±)çÁ %dá>LTúf.ñóÏ?×ë‘[U М=ÃÔ¨QCg®“}@yæ™gTõ–[nч€l º¥<„ƒl̼L\Ç’©‹—bãÚ0ƒÆ{ Å 9¹GôÝVØgv¢ ›d\‡W Gbc6C\€„(È“CÍ›7OÅíð‚x(úùàƒ*á™$3èÈ—‹–½æsx4r6r;ÈM»*TÈtÏŽ¢y¯exé0!ð&xž+J"Ê‚Nšm(_÷èÑC Œ—d ¢1ÜlÒ¤IÚ‡Y³fi×Ò×)S¦8´vwß}wí÷àÁƒÃ%9}æì‰h=¸T)*áÍ9Mr†;f€äa‘™Ï¬€TQiN\wÜ¢*Š„K<Ê)#I-È ï„ –;Ý­[7 ¡# ˜­„,H•š *£/Ü’2xxÚµkkêu0,i†ÇïÏ}è–tÊ A¨V³1BÇ„jÂ*쓌{è'¢ÌL&MD`0©ŸIíÅËV‰DñFâLJXÒ3‰®=Òš¸RÜ.3˜8yòdƒjtÜЂ%Nãr™Í„J b8Þ¤jÕªZF[!aû¨6†pÝípL9jÒœvèž-—!ž ‰z4¹ÊÂ… 5i¦]r9 ï€êu0HŒz<õ˜PS§NÍÈ­‡:+ûÄÃ@òEH¡é£×ŠÀ²z¨Æ;¼8ÏK_ƒ€ŸI×FÛ)h•ÂYA&Ó9@¥Ó.Ÿ8Œ gИI @µjÕT¾›/Ì>ê‡v·E‹ãÛµk§åA¼Ù³g+¸Ìبáê!ch?z.›}f4y!ÏExai33yxžø}x~°a WŸ–d,Bx†Óh›ô Ï%çy‡ÆõÑþG¯‹î“/⵪T©Š‹þ'ˆY±,&iC™)q‹æ%ñs'gveK Ú >ƒœd¹´“t=¤L’Fy[¸2ŠĹ¤ç ×dó ®áèK|’DÛ Oñ~qT[~Z¦¥¯…¡¸õ°eÛ$/Å¢ ŸvÚi‰—ò^$ÌîÄ V¸Æ(r±ÊÊ•@qD ;sãíÙqáø/ˆ¾-ka]E@’ÎŒ½kßl,Ô7!…CëÄõòŽ,ÃÙ1IóuÕyás›¤y‚¹Î6e9Ñ:;ôE÷àF¢¢Ãrméÿ²­ MySQL++ Reference Manual MySQL++: mysqlpp::Connection Class Reference
MySQL++  3.3.0

Manages the connection to the database server. More...

#include <connection.h>

Inheritance diagram for mysqlpp::Connection:
Collaboration diagram for mysqlpp::Connection:

Public Member Functions

 Connection (bool te=true)
 Create object without connecting to the database server. More...
 
 Connection (const char *db, const char *server=0, const char *user=0, const char *password=0, unsigned int port=0)
 Create object and connect to database server in one step. More...
 
 Connection (const Connection &other)
 Establish a new connection using the same parameters as an existing connection. More...
 
virtual ~Connection ()
 Destroy object.
 
std::string client_version () const
 Get version of library underpinning the current database driver.
 
virtual bool connect (const char *db=0, const char *server=0, const char *user=0, const char *password=0, unsigned int port=0)
 Connect to database after object is created. More...
 
bool connected () const
 Returns true if connection was established successfully. More...
 
ulonglong count_rows (const std::string &table)
 Returns the number of rows in a table. More...
 
bool create_db (const std::string &db)
 Ask the database server to create a database. More...
 
void disconnect ()
 Drop the connection to the database server.
 
DBDriverdriver ()
 Returns a reference to the current database driver.
 
bool drop_db (const std::string &db)
 Asks the database server to drop (destroy) a database. More...
 
int errnum ()
 Return last error number associated with this connection.
 
const char * error () const
 Return error message for last error associated with this connection. More...
 
std::string ipc_info () const
 Get information about the IPC connection to the database server. More...
 
bool kill (unsigned long tid) const
 Kill a database server thread. More...
 
 operator private_bool_type () const
 Test whether any error has occurred within the object. More...
 
Connectionoperator= (const Connection &rhs)
 Copy an existing Connection object's state into this object.
 
bool ping ()
 "Pings" the database server More...
 
int protocol_version () const
 Returns version number of the protocol the database driver uses to communicate with the server.
 
Query query (const char *qstr=0)
 Return a new query object. More...
 
Query query (const std::string &qstr)
 Return a new query object. More...
 
bool select_db (const std::string &db)
 Change to a different database managed by the database server we are connected to. More...
 
std::string server_version () const
 Get the database server's version string.
 
bool set_option (Option *o)
 Sets a connection option. More...
 
bool shutdown ()
 Ask database server to shut down.
 
std::string server_status () const
 Returns information about database server's status.
 
unsigned long thread_id ()
 Returns the database server's thread ID for this connection. More...
 
- Public Member Functions inherited from mysqlpp::OptionalExceptions
 OptionalExceptions (bool e=true)
 Default constructor. More...
 
virtual ~OptionalExceptions ()
 Destroy object.
 
void enable_exceptions () const
 Enable exceptions from the object.
 
void disable_exceptions () const
 Disable exceptions from the object.
 
bool throw_exceptions () const
 Returns true if exceptions are enabled.
 

Static Public Member Functions

static bool thread_aware ()
 Returns true if both MySQL++ and database driver we're using were compiled with thread awareness.
 
static void thread_end ()
 Tells the underlying database driver that this thread is done using the library.
 
static bool thread_start ()
 Tells the underlying database driver that the current thread is now using its services. More...
 

Protected Member Functions

void build_error_message (const char *core)
 Build an error message in the standard form used whenever one of the methods can't succeed because we're not connected to the database server.
 
void copy (const Connection &other)
 Establish a new connection as a copy of an existing one. More...
 
bool parse_ipc_method (const char *server, std::string &host, unsigned int &port, std::string &socket_name)
 Extract elements from the server parameter in formats suitable for passing to DBDriver::connect().
 
- Protected Member Functions inherited from mysqlpp::OptionalExceptions
void set_exceptions (bool e) const
 Sets the exception state to a particular value. More...
 

Protected Attributes

std::string error_message_
 MySQL++ specific error, if any.
 

Detailed Description

Manages the connection to the database server.

This class is a thick wrapper around DBDriver, adding high-level error handling, utility functions, and abstraction away from underlying C API details.

Constructor & Destructor Documentation

◆ Connection() [1/3]

mysqlpp::Connection::Connection ( bool  te = true)

Create object without connecting to the database server.

Parameters
teif true, exceptions are thrown on errors

◆ Connection() [2/3]

mysqlpp::Connection::Connection ( const char *  db,
const char *  server = 0,
const char *  user = 0,
const char *  password = 0,
unsigned int  port = 0 
)

Create object and connect to database server in one step.

This constructor allows you to most fully specify the options used when connecting to the database server.

Parameters
dbname of database to select upon connection
serverspecifies the IPC method and parameters for contacting the server; see below for details
useruser name to log in under, or 0 to use the user name this program is running under
passwordpassword to use when logging in
portTCP port number database server is listening on, or 0 to use default value; note that you may also give this as part of the server parameter

The server parameter can be any of several different forms:

  • 0: Let the database driver decide how to connect; usually some sort of localhost IPC method.
  • ".": On Windows, this means named pipes, if the server supports it
  • "/some/domain/socket/path": If the passed string doesn't match one of the previous alternatives and we're on a system that supports Unix domain sockets, MySQL++ will test it to see if it names one, and use it if we have permission.
  • "host.name.or.ip:port": If the previous test fails, or if the system doesn't support Unix domain sockets at all, it assumes the string is some kind of network address, optionally followed by a colon and port. The name can be in dotted quad form, a host name, or a domain name. The port can either be a TCP/IP port number or a symbolic service name. If a port or service name is given here and a nonzero value is passed for the port parameter, the latter takes precedence.

References connect().

◆ Connection() [3/3]

mysqlpp::Connection::Connection ( const Connection other)

Establish a new connection using the same parameters as an existing connection.

Parameters
otherexisting Connection object

References copy().

Member Function Documentation

◆ connect()

bool mysqlpp::Connection::connect ( const char *  db = 0,
const char *  server = 0,
const char *  user = 0,
const char *  password = 0,
unsigned int  port = 0 
)
virtual

Connect to database after object is created.

It's better to use the connect-on-create constructor if you can. See its documentation for the meaning of these parameters.

If you call this method on an object that is already connected to a database server, the previous connection is dropped and a new connection is established.

References mysqlpp::DBDriver::connect(), errnum(), error(), error_message_, parse_ipc_method(), and mysqlpp::OptionalExceptions::throw_exceptions().

Referenced by Connection().

◆ connected()

bool mysqlpp::Connection::connected ( ) const

Returns true if connection was established successfully.

Returns
true if connection was established successfully

References mysqlpp::DBDriver::connected().

Referenced by ping(), select_db(), and shutdown().

◆ copy()

void mysqlpp::Connection::copy ( const Connection other)
protected

Establish a new connection as a copy of an existing one.

Parameters
otherthe connection to copy

References mysqlpp::DBDriver::copy(), error_message_, mysqlpp::OptionalExceptions::set_exceptions(), and mysqlpp::OptionalExceptions::throw_exceptions().

Referenced by Connection(), and operator=().

◆ count_rows()

ulonglong mysqlpp::Connection::count_rows ( const std::string &  table)

Returns the number of rows in a table.

Parameters
tablename of table whose rows you want counted

This is syntactic sugar for a SELECT COUNT(*) FROM table SQL query.

References error_message_, mysqlpp::Query::store(), and mysqlpp::OptionalExceptions::throw_exceptions().

◆ create_db()

bool mysqlpp::Connection::create_db ( const std::string &  db)

Ask the database server to create a database.

Parameters
dbname of database to create
Returns
true if database was created successfully

References error_message_, mysqlpp::Query::exec(), and mysqlpp::OptionalExceptions::throw_exceptions().

◆ drop_db()

bool mysqlpp::Connection::drop_db ( const std::string &  db)

Asks the database server to drop (destroy) a database.

Parameters
dbname of database to destroy
Returns
true if database was dropped successfully

References error_message_, mysqlpp::Query::exec(), and mysqlpp::OptionalExceptions::throw_exceptions().

◆ error()

const char * mysqlpp::Connection::error ( ) const

Return error message for last error associated with this connection.

Returns either a MySQL++-specific error message if one exists, or one from the current database driver otherwise.

References mysqlpp::DBDriver::error(), and error_message_.

Referenced by connect(), mysqlpp::Query::error(), select_db(), and shutdown().

◆ ipc_info()

std::string mysqlpp::Connection::ipc_info ( ) const

Get information about the IPC connection to the database server.

String contains info about type of connection (e.g. TCP/IP, named pipe, Unix socket...) and the server hostname.

References mysqlpp::DBDriver::ipc_info().

◆ kill()

bool mysqlpp::Connection::kill ( unsigned long  tid) const

Kill a database server thread.

Parameters
tidID of thread to kill
See also
thread_id()

References error_message_, and mysqlpp::DBDriver::kill().

◆ operator private_bool_type()

mysqlpp::Connection::operator private_bool_type ( ) const
inline

Test whether any error has occurred within the object.

Allows the object to be used in bool context, like this:

.... use conn
if (conn) {
... nothing bad has happened since last successful use
}
else {
... some error has occurred
}
Connection(bool te=true)
Create object without connecting to the database server.
Definition: connection.cpp:38
const char * error() const
Return error message for last error associated with this connection.
Definition: connection.cpp:185

Prior to MySQL++ v3, the object was always falsy when we weren't connected. Now a true return simply indicates a lack of errors. If you've been using this to test for whether the connection is still up, you need to call connected() instead.

◆ ping()

bool mysqlpp::Connection::ping ( )

"Pings" the database server

Return values
trueif server is responding
falseif either we already know the connection is down and cannot re-establish it, or if the server did not respond to the ping and we could not re-establish the connection.

References build_error_message(), connected(), error_message_, and mysqlpp::DBDriver::ping().

◆ query() [1/2]

Query mysqlpp::Connection::query ( const char *  qstr = 0)

Return a new query object.

The returned query object is tied to this connection object, so when you call a method like execute() on that object, the query is sent to the server this object is connected to.

Parameters
qstran optional query string for populating the new Query object

References mysqlpp::OptionalExceptions::throw_exceptions().

Referenced by mysqlpp::Transaction::commit(), query(), mysqlpp::Transaction::rollback(), and mysqlpp::Transaction::Transaction().

◆ query() [2/2]

Query mysqlpp::Connection::query ( const std::string &  qstr)

Return a new query object.

Parameters
qstrinitial query string

References query().

◆ select_db()

bool mysqlpp::Connection::select_db ( const std::string &  db)

Change to a different database managed by the database server we are connected to.

Parameters
dbdatabase to switch to
Return values
trueif we changed databases successfully

References build_error_message(), connected(), errnum(), error(), error_message_, mysqlpp::DBDriver::select_db(), and mysqlpp::OptionalExceptions::throw_exceptions().

◆ set_option()

bool mysqlpp::Connection::set_option ( Option o)

Sets a connection option.

Parameters
opointer to any derivative of Option allocated on the heap

Objects passed to this method and successfully set will be released when this Connection object is destroyed. If an error occurs while setting the option the object will be deleted immediately.

Because there are so many Option subclasses, the actual effect of this function has a wide range. This mechanism abstracts away many things that are unrelated down at the database driver level, hiding them behind a coherent, type-safe interface.

The rules about which options can be set, when, are up to the underlying database driver. Some must be set before the connection is established because they can only be used during that connection setup process. Others can be set at any time after the connection comes up. If you get it wrong, you'll get a BadOption exception.

Return values
trueif option was successfully set

References mysqlpp::DBDriver::error(), error_message_, mysqlpp::DBDriver::set_option(), and mysqlpp::OptionalExceptions::throw_exceptions().

◆ thread_id()

unsigned long mysqlpp::Connection::thread_id ( )

Returns the database server's thread ID for this connection.

This has nothing to do with threading on the client side. The only thing you can do with this value is pass it to kill().

References mysqlpp::DBDriver::thread_id().

◆ thread_start()

bool mysqlpp::Connection::thread_start ( )
static

Tells the underlying database driver that the current thread is now using its services.

It's not necessary to call this from the thread that creates the connection as it's done automatically. This method exists for times when multiple threads may use this object; it allows the underlying database driver to set up any per-thread data structures it needs.

The MySQL++ user manual's chapter on threads details two major strategies for dealing with connections in the face of threads. The Connection-per-thread option frees you from ever having to call this method. The other documented strategy is to use ConnectionPool, which opens the possibility for one thread to create a connection that another uses, so you do need to call this method in that case, or with any other similar strategy.

Return values
Trueif there was no problem

References mysqlpp::DBDriver::thread_start().


The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/inherit_graph_5.png000644 000765 000024 00000005455 14042362133 022360 0ustar00tangentstaff000000 000000 ‰PNG  IHDRÀ$ß 5“sRGB®Îé çIDATxí[u¨Tߟg·¨ØŠÝŠ]؉`w+ØŠ(ØXv‹­Ø‰ØÝÝíùÍg¾œû»ïîÞÝ}ëúò ìî‰9q眙ùÌÜ÷Â2ˆ£ˆGŸÛ<¶‘€HÀ(€¹qZFâôñ›‡7 `î@œ–@çÓŸ8q‚¦OŸîl6u#/råÊÑàÁƒÃ=‡‡xøð!­]»6“© Ät À°;vÌã1<<€æX³f.š_#/Ö­[Ó?<žÃÃxp˜#X,£±øpÍ£ù—€Qÿ22±XFbñášGó/× ØÿÐèÁ±|ùr:yò$Í™3çŸoèôéÓ4aÂ:{ö,}ÿþ ,H#FŒ zõêýóµÿÕ“&M’©GŽé±Ä½{÷¨wïÞ´dÉÊ’%‹G0 ·nÝ¢~ýú¹-S¦ ?Þµ?Ô1Þ\¿~Ýkz+Ô‚Ú¼y3U®\™?~LC† ¡AƒÑÏŸ?©~ýú´zõêP/ió]»v®\¹âu½÷ïßÓÎ;éË—/^ûƒiL’$ åÍ›×úìÞ½›^¾|iÕ3gÎÌ´ÁÁ_ƒÚ‰ÓŸøëP{“Ïò·oßÔÝ»wÕ¯_¿Ô;wÔÅ‹…ÿ÷ïßêÒ¥KŠ­¦âô“´Ý¿_½~ý:Ü|üÞA½}ûÖj;sæŒâ|­úôé“Õ†ÂÇÕÑ£GÕ«W¯ÔçÏŸ['égË¥J–,)e>0õîÝ;YïÈ‘#Š•CÚñÅ[={öLê|èêøñãÒ¦þüù£ø ö ²×¿~ýª²gÏ®ªT©n ž¹X±b*wîÜzáµmÛ6õàÁ«="rò·WLŠ}BVXKïí‹óݸqC=}úTÊnümÛ¶Uœ"ToÞ¼Q{÷îUW¯^~|?^îÂÍ›7­6Èç åouø(èó÷Æ’(Q"5vìXo]ÒÆFƵ/"­ZµRÍš5óâqÓ#ªü‚A„T½zuù…òà¢Ô®]ÛªW¨PA.eÅŠUµjÕ¬M¼xñBÅ_Í;W2GŽ*EŠ*,,LeË–Mᢂ<¨Ò¤I£âÅ‹'ü¥K—VÉ“'—>»à0 *¤Ò¦M« Xì¥K—.·iÓ&©W­ZÕê/„Ãÿ<êl¥oÏž=Ògÿb—®¶lÙ" ƒK„çÃ>õ~G%ì‘“¿½:tH¥K—N%NœX>©S§ùa!}i›7o.rdˆ¨|ñCfyòäQ)S¦~È M›6òTboDÇ—>V>6øÙëà/^\~í_|y¨Q£FÄJKãÆ“çÎee Å‹ÓĉiÿþýÖ@䤙ÝöŠ=WªT‰Ø£Ñ‡¨H‘"¤±¼ËÞWäÛ´iSyF_ü·oߦiÓ¦‰\ãàÌp6vO×®]©{÷îÄ^˜ gö>ò|v>À©ö~Ä|ùì,*³‚Rúôé©cÇŽ2'þ”k‡Œœ¬8uê”L·Ë›S° ¸LÔY _`=æÏŸ/}µjÕR|y¤àÊøõë× ¾ÆŒãêŠ-jñ¡x+¢­ªö*èÚð4þhÖ¬Y²V<Ÿ¬€IÚãhFx#x)í‘“¿½âNb®U«V©Â… +ŽOdImµ7lØ · È gΜ/ ¼_bË›ÀL:UdÀÊ,Ð ð‹•K "Ê žgÍʦ-Z$goMìRðçô0@[6ˆª|ùòÖË–-Sð4Ð?÷™2e¥Là¿ÄR¾|ù¤ËâM»m ×­['V–^„,Êð %J” XVüýþ6 Ä.¿øÒVÚj°øÂÛj$ÖC{täÊ•ËêÏ!ƒ`VƒK¡@Ò³k×.†EâÁ("@.UªT8ÈSS rÒ¼n{ec@Øš9s&q,¢‡X¿›XeüvÙÂ#ãì8.³Æ£À $õöíÛS“&M䃬CQÉŠÁÚÃ;CQ·nÝÞ.TÄ0zöì)hbûöítùòeêܹ3ÁÓý … Ap.9ãlb AŒ÷©qãÆ2 ‚c¼,ð†­ ±e–#.)ˆƒ9ùÅÛVÙYxòä‰Õ„Kyîܹp cïÇAùR&= [*‚àÄ–QàccQ6NX,¬Ë¥°¯¨œ0‰·½B™a,žÌ¼,[¶¬µ¦³?ÒšØëÊ¥²ï}ÈÎ@€²0Jø°§è ƒØ [·n]âøO``h¨g‰”w5¨AƒÄ^‹fÏž-ðïoÖìÖþÍ Ž±À˰£G&Ôi1rÍýû÷üÏ.]¼.„ l ìܹpáBǬÿ¯By€aï¡P8PLÃ'™ñÊ/5lØPº`½°>°.È^Çác¿Hw"ïK€.!ææa.`gX\¬ oÂsCn{å •ÄHøÝºu+!E‹õÜÈ?<-â%(Ò» +Ä«ÙçóÁÓ`OH[r–KäºcÇÂ9õéÓ‡~É;xá^½z‰Òಠ–`é{ôè!sõíÛ—òçÏO ýd-Ô“&MìÔÿsâ§`c\e*¤ByfÁ¼hà MêÀµš€“Áƒt§&d*€¡‘.d«+©Jô# ,1lAÚ³@ ;dÑмÀ²S¦L‘>«5†d¨&ñ‡N·úÊa¤ã8ÿoe@°d_øâÈüøbk+X\ïY`cŽ‘“¿½bdÁ–ZqP¬ð<ȶ -Šõuækûâg,idd•0ó°eÅ0¹æÍ›'Y'ðáƒLÒÓÞrųCÞXßðüâË­[ 0@b à}¤¿ƒ%·Ø<ET °‚ ùs'á’!Ç %r-. —N+€ €À óà}„=m¦/úØÊ+­}^{‡Ào‚åƒ=ÿ®yðþ©Q¼ÿÀ{…`(½â}{)kz(ŸÛe“?~¼ÓÀ{m¬‰$5 ÌÞÎÈÁjU T­¶Î=䦑ú§€ûöí¸ƒàÍI ù]³Yê€JÞÒÞ˜1=tò8eg¿¯:Ü=R²n„ |¨Èm¯H(࣠0Ñùãç÷1Ä4_SH[ügUDˆ=aDØÃñjˆ®1„•HUä÷ÙJ^ºC‡A?coð!‚%o„ €l‡ÎJyã‰.m1i¯ÑEfÁî# îÅ>Áa‹-$mio7e#˜,ýaHPØ)Ò³@öÅMÙH ª%` ªOÀ¬¥0 ¥â7‹Gµ\ƒ`ĆŒb‹ð²ÿlã$Àëì`ß\:'7u#è"d½¥o=²@ÑeÃfF‘!D†”ÍÑVF¢íјE†ŒD†”ÍÑVF¢íјE†þªæCë£xiIEND®B`‚mysql++-3.3.0/doc/html/refman/functions_~.html000644 000765 000024 00000016352 14042362132 022033 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
MySQL++  3.3.0
Here is a list of all documented class members with links to the class documentation for each member:

- ~ -

mysql++-3.3.0/doc/html/refman/uds__connection_8h_source.html000644 000765 000024 00000050407 14042362132 024615 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: uds_connection.h Source File
MySQL++  3.3.0
uds_connection.h
Go to the documentation of this file.
1 
4 /***********************************************************************
5  Copyright (c) 2007-2008 by Educational Technology Resources, Inc.
6  Others may also hold copyrights on code in this file. See the
7  CREDITS.txt file in the top directory of the distribution for details.
8 
9  This file is part of MySQL++.
10 
11  MySQL++ is free software; you can redistribute it and/or modify it
12  under the terms of the GNU Lesser General Public License as published
13  by the Free Software Foundation; either version 2.1 of the License, or
14  (at your option) any later version.
15 
16  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
19  License for more details.
20 
21  You should have received a copy of the GNU Lesser General Public
22  License along with MySQL++; if not, write to the Free Software
23  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
24  USA
25 ***********************************************************************/
26 
27 #if !defined(MYSQLPP_UDS_CONNECTION_H)
28 #define MYSQLPP_UDS_CONNECTION_H
29 
30 #include "connection.h"
31 
32 namespace mysqlpp {
33 
38 
40 {
41 public:
44  Connection()
45  {
46  }
47 
60  UnixDomainSocketConnection(const char* path, const char* db = 0,
61  const char* user = 0, const char* password = 0) :
62  Connection()
63  {
64  connect(path, db, user, password);
65  }
66 
72  Connection(other)
73  {
74  }
75 
78 
87  bool connect(const char* path, const char* db = 0,
88  const char* user = 0, const char* password = 0);
89 
98  static bool is_socket(const char* path, std::string* error = 0);
99 
100 private:
105  UnixDomainSocketConnection(const char*, const char*, const char*,
106  const char*, unsigned int) { }
107 
110  bool connect(const char*, const char*, const char*, const char*,
111  unsigned int) { return false; }
112 };
113 
114 
115 } // end namespace mysqlpp
116 
117 #endif // !defined(MYSQLPP_UDS_CONNECTION_H)
118 
Manages the connection to the database server.
Definition: connection.h:60
const char * error() const
Return error message for last error associated with this connection.
Definition: connection.cpp:185
Specialization of Connection for Unix domain sockets.
Definition: uds_connection.h:40
UnixDomainSocketConnection(const char *path, const char *db=0, const char *user=0, const char *password=0)
Create object and connect to database server over Unix domain sockets in one step.
Definition: uds_connection.h:60
UnixDomainSocketConnection()
Create object without connecting it to the MySQL server.
Definition: uds_connection.h:43
~UnixDomainSocketConnection()
Destroy object.
Definition: uds_connection.h:77
static bool is_socket(const char *path, std::string *error=0)
Check that the given path names a Unix domain socket and that we have read-write permission for it.
Definition: uds_connection.cpp:67
UnixDomainSocketConnection(const UnixDomainSocketConnection &other)
Establish a new connection using the same parameters as an existing connection.
Definition: uds_connection.h:71
bool connect(const char *path, const char *db=0, const char *user=0, const char *password=0)
Connect to database after object is created.
Definition: uds_connection.cpp:45
Declares the Connection class.
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SQLTypeAdapter-members.html000644 000765 000024 00000041370 14042362132 027032 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::SQLTypeAdapter Member List

This is the complete list of members for mysqlpp::SQLTypeAdapter, including all inherited members.

assign(const SQLTypeAdapter &sta)mysqlpp::SQLTypeAdapter
assign(const char *pc, int len=-1)mysqlpp::SQLTypeAdapter
assign(const null_type &n)mysqlpp::SQLTypeAdapter
at(size_type i) constmysqlpp::SQLTypeAdapter
compare(const SQLTypeAdapter &other) constmysqlpp::SQLTypeAdapter
compare(const std::string &other) constmysqlpp::SQLTypeAdapter
compare(size_type pos, size_type num, std::string &other) constmysqlpp::SQLTypeAdapter
compare(const char *other) constmysqlpp::SQLTypeAdapter
compare(size_type pos, size_type num, const char *other) constmysqlpp::SQLTypeAdapter
data() constmysqlpp::SQLTypeAdapter
escape_q() constmysqlpp::SQLTypeAdapter
is_null() constmysqlpp::SQLTypeAdapterinline
is_processed() constmysqlpp::SQLTypeAdapterinline
length() constmysqlpp::SQLTypeAdapter
operator const char *() constmysqlpp::SQLTypeAdapterinline
operator=(const SQLTypeAdapter &rhs)mysqlpp::SQLTypeAdapter
operator=(const null_type &n)mysqlpp::SQLTypeAdapter
quote_q() constmysqlpp::SQLTypeAdapter
set_processed()mysqlpp::SQLTypeAdapterinline
size() constmysqlpp::SQLTypeAdapterinline
size_type typedefmysqlpp::SQLTypeAdapter
SQLTypeAdapter()mysqlpp::SQLTypeAdapter
SQLTypeAdapter(const SQLTypeAdapter &other)mysqlpp::SQLTypeAdapter
SQLTypeAdapter(const String &str, bool processed=false)mysqlpp::SQLTypeAdapter
SQLTypeAdapter(const std::string &str, bool processed=false)mysqlpp::SQLTypeAdapter
SQLTypeAdapter(const char *str, bool processed=false)mysqlpp::SQLTypeAdapter
SQLTypeAdapter(const char *str, int len, bool processed=false)mysqlpp::SQLTypeAdapter
SQLTypeAdapter(char c)mysqlpp::SQLTypeAdapter
SQLTypeAdapter(tiny_int< signed char > i)mysqlpp::SQLTypeAdapter
SQLTypeAdapter(tiny_int< unsigned char > i)mysqlpp::SQLTypeAdapter
SQLTypeAdapter(short i)mysqlpp::SQLTypeAdapter
SQLTypeAdapter(unsigned short i)mysqlpp::SQLTypeAdapter
SQLTypeAdapter(int i)mysqlpp::SQLTypeAdapter
SQLTypeAdapter(unsigned i)mysqlpp::SQLTypeAdapter
SQLTypeAdapter(long i)mysqlpp::SQLTypeAdapter
SQLTypeAdapter(unsigned long i)mysqlpp::SQLTypeAdapter
SQLTypeAdapter(longlong i)mysqlpp::SQLTypeAdapter
SQLTypeAdapter(ulonglong i)mysqlpp::SQLTypeAdapter
SQLTypeAdapter(float i)mysqlpp::SQLTypeAdapter
SQLTypeAdapter(double i)mysqlpp::SQLTypeAdapter
SQLTypeAdapter(const Date &d)mysqlpp::SQLTypeAdapter
SQLTypeAdapter(const DateTime &dt)mysqlpp::SQLTypeAdapter
SQLTypeAdapter(const Time &t)mysqlpp::SQLTypeAdapter
SQLTypeAdapter(const null_type &i)mysqlpp::SQLTypeAdapter
type_id() constmysqlpp::SQLTypeAdapter
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SQLQueryParms__inherit__graph.png000644 000765 000024 00000012235 14042362133 030310 0ustar00tangentstaff000000 000000 ‰PNG  IHDR£R8¢d<sRGB®ÎéWIDATxí ¸MÕûÇß™C†!© ‰™‡ÈÐÓ`H…2dJ†"cÆ!eHBE4˜2¥RIIIhÚÿ÷óúïóÛçºÜáœkÈzŸçœ½÷Úk¯½Öw}ßiïsïºÄS'ódçA\†€#£#Âyƒ€#ãy3®#—!8tè|üñÇÁ"·ïH2.¿ür¹á†B퇑ñ·ß~“|ùòÙ'TÃí8’¿þúK>ûì³°–›ƒÃœKÏ%úîÞa82†ÁáÎ%a1c´;ràÀùꫯ¤lÙ²Ñn:ÉÚûå—_ä­·Þ’+¯¼R*V¬(©S§Ý‹±¬^½Zþøã)V¬˜T¨PA.¹äùùçŸå믿–råÊ…ê.[¶Lþþûïб¿sçwJ²d‘Û€uëÖIÆŒåºë®ó›ÛÒÏ¢E‹ IÂ…"‘£¢#ݲe‹´jÕê”1oݺUúõëwJy´ n¾ùf9qâD´š“‰'JýúõeïÞ½2þ|)^¼¸üôÓOÖþàÁƒ¥N:²aÃ;ÿÄOHåÊ•å÷ß·²Ž;†õ²¬\¹R¸®{÷î¶Ïq4ú{äȹãŽ;ä»gð wïÞ²}ûö`Qœû§›Ç8/ŒV^úòÝwßy;wîôcݪåð5jä]qÅ^õêÕ=µ~^‘"E<µ ÞSO=åýðÃ^¥J•¼«¯¾ÚkРա!oöìÙÖfµjÕ¼åË—{%J”ðÔzXÙèÑ£½§Ÿ~ÚÓŒÞkܸ±—={v¯V­Zž’ÁÎ5ÊSke×,X°ÀkÛ¶-¯1­ýþùÇ{衇¼Ì™3[_V¬Xa×pÏÇÜúB pÿ6mÚ‹¬ßÆ •½û’ÊÛ¶m›—!CO-`è;JFoàÀÞÛo¿í©b„ó à5oÞܩפIÿ”׬Y3ïwÞñJ•*å=üðÃ^¶lÙ¼† zjy½ÿý×ëÕ«——;wn;¿víÚÐu“'OöZ¶lix|ùå—¡ò‘#Gzú4ÄÆqíµ×Zß¿ÿþ{¯fÍšÖ6óµÿ~OIçÕ«WÏ«Zµªá̼!ÁyŒmvïÞmsr÷Ýw{}ûöµkøzã7¼¡C‡z •ŵóçŸzëׯ«–`Ë8uêTI—.(¢„íˆ<ûì³æ¶ºví*ýû÷%’¼þúë¢é î$gΜv\¦L)T¨¹1Ü2mÚ4)]º´Lš4IŽ;&K—.•´iÓJ‡äðáâ“*JQ¤Gfqpw\÷þûïËÆE &:ÁÒ³gOksÏž=2oÞQRÉØ±cåþûïYEU.QÃ`Ç„&L0k® -íÚµ3œÇgsœÇØæAZ.\hó¨Ê+8ª²Ø#AUpùâ‹/B粓`2^sÍ5Â@FŒaDÁ=»0ÙbtëÖMn¼ñÆ0×K¹õÖ[­o `ÔŠZ Qk*»ví2×CÛ’âš5k¬Mâ·ë¯¿^T£Bq/â5&‘Éâ8µ&¿ùîµ}ûöR·n] òæÍ+sçÎ5bóÍ7Öÿ XÔS+(M›6µ®¢–[>üðC9~ü¸Å‰Áºìãrw|%K–,gª5”Å‹[LêÇt(ÊÊ88\uÕU£ªUâo0¢ß¸SrȨæE>øà¹ýöÛE½‰¨%–}º ‰Ä-¾fÒšK¹º ,Û9Í—º,##ÖÍ¿ôÒKEÝŠËÛ ÀîÔ©“høÖV®\¹Œˆ~³ê>¬äñ­ˆßî‘>}z#ýŽ™D@¬Ö­[›téÒÅb¼'Ÿ|RÆ/( ñ/}C#‰1 ÑÇÆL’ľ/>)±>xî•}úô±þã™òçÏo¸Ó'bÖU«VÉ?þhDðÛƒX†¸=UªTBŒí‹?޹'9(±ÍçQ(ú›@P¹víÚfLPœ„H‚Ɉ[Ì áN\+L¶ˆëF[1é¾ 5¸MðÈHÉö°poØ 8‡fc!BÌ2¢eX(&éÓO?5Í£.Â}¹'BÑ,+–7(›6m26kÖ,ÁBâê±4¾0‰ ®Š·÷cL< À*p,V÷ ÈO_ü¯ v2ðE‚D¸Á‡}_ð´ fàX]’&V„%xÂ>ÍÕ rNãA³æ¸ûMyh{É’%2dÈSjÑl^(Ç`%!:óá+ýGb›;ËÊOXFØÂ\AJÈ_,—ZŒ ã“À(),Q¸å–[<5õ5I†jŒ§Úë‘<¨æzêrι/ÐH Î7Ips¾ àBëOL"ҞמMá©E0›>›÷>ӽτŽ;wVsÓh +4‘9«¸Ðo¶rån}«“]Ÿ…¦ºÐ‡rVûÓ:‡%0gµ'ÿ‘›ýøã!)Uêi}.Z[}´ÊdTçfÎMGˆû¼y›õíÆ¥òê«ë"lÉ]îÈ!fÌX+G×W„‡eÇŽðWj6}Ñ]îÈÁ”óÍ~ý½ã!káĉõW6#hÍ]êÈæÌÙ¤¿è9ù³®cÇŽËk¯­ 5w©#cxíµuúÈÿýÒü?Žê9¾ Å‹ûRGÆDÎÿ'Ÿ|/þy4ìê£G©uÜVæâ€#cü± «9kÖzýåøñ°2\6ÙuàuØywpfÏŒO¬g!Ûܹ›õ÷‡'ãÅ`%έ]»#Xäö㉀#c< Vûì³=räÈßúÆ%µ}Ò¥K¥ÛËl‚λ)XÝíÇ÷&ž@Ŭ¶iÓwú‹÷“1c·n³å±Çªè߬d±j·Ürµ¤I“2æ%î8ÂÞMÇQ× pÓMùBGXÆ›o¾Zÿ‚0üOBÜN¼pn:^0¹JgGÆ( ÌŸÌ&KvIZº¸›pdŒÂü“AëŸE¡¥‹» GÆ‹{þÏ«Ñ;2Fa:pѸj'‘!àÈ~v5.Ú½u‰HGÆÈ1t-D GÆ(隉GÆÈ1t-D GÆ(隉GÆÈ1t-D GÆ(éíDDm‘1 8ºG;QÑ‘1: ºV¢ƒ€³ŒÑÁѵ£"¯ÝëÀÈtdŒC{è^F¤#c亢„€#c€tv¢¢6áÈÝ£(€èÈ]+ÑAÀYÆ(àèÜt@Ô&£€£sÓQÑ‘1: ºV¢„€>K°èŠôaK“iW.êã4iŠxÉ’¥¾¨1r@×_L0§¸ QÿQB—ð’råÊÙÂŽQÒ ×ÌèdŌĈ‹ƒš»&IpdLX]£‰AÀ‘11¨¹k’DÅŒIÒ“6ÊÊñ,ÂÎBéÑŸ…ÚYL×É[lR—]YW6øIÿíÝUºÖ ’:uj[¬œEÕYáÞ_!5Ø—­[·Š&{ºNL*ѵª£Ö×à=XDž~û¢ïyòäñ/¨ík7lØ`«¿Gm–›mݺµ­d¯ë1ËСCeòäÉÖôÆ¥]»vvN×H–ùóç‹..ß~û­èÚÌÂR¹lƒÂÊô½{÷]ÜV»‡7.X-*ûºµôë×Ï© ´Ë /¼ :uÒÿýsêÕÊ “°‘$³ŒK—.µu‹Éª[·®è‚ߺTÅq›@¬Ú{ï½'}úô±á=óÌ3¢‹‚ d˜9s¦þ¿ì¿¥eË–V¶eË1b„¤L™Ò´¾T©R!Htux™2eŠÕ‡ ܧyóæVŸ L™2e’^½zIîܹeâĉR¨P!¹ýöÛ¥k×®Ò±cGÑÅÅí¾>ø \vÙeÒ´iSY°`Mè!C¤[·n\yÚ´i2~üx#A¨#E‹ÉÂÈÇx›5k&+VÖš.[¶¬YÔµk×ê ŸÁW¬X!/¾ø¢Ý—ºµk×¶þ‚kCc•ï»ï>)V¬˜‘oÆŒ6Ö´iÓJ«V­¬º¹ÔªUË”%cÆŒ2|øpÙ¾}»,XP—”{ÒæbäÈ‘f­ñ*ô %ãlÙ²Ùò¿sçεýØï4Ážó×^{­á˜!C†Àh£·›d–ñÈ‘#²fÍ]OïQ)Z´¨M^—.]ä¶Ûn³‰.R¤ˆ¬ZµJ>¬ÿ’øˆíçÏŸ_ž{î98p  ú•W^±‘baêׯ/={ö4P:¹'±j«W¯¶ó€á<({öìÖqæÚâÅ‹ë¿6žkmá²d9ùféä+Q¢„dÍšU5j$ýû÷—åË—K½zõŒ ŠóA)Y²¤ìܹ3X¶%ŒyMºtéL ¸Ž ¸Y”áĉI{ì1yä‘Gd„ ²{÷n«»råJÃ1oÞ¼Â>9}w|ôèQ+§ß£Fî–³fÍÜöôéÓm̬1 Y×­[gË ×¬YÓîMûöík}Â@èsBa`p]²d‰…$( äNÊÓ“ŒŒ Ðbb,¶þ>ÌÀ˜°õë× .—}H‚õн{÷‰×öíÛgdC“o½õVš,Fùòå%_¾|R¦Lk XÖr¾ë®»l(«^½ºõƒý-Z„ˆ‰ …ìXÜ£G#õ |P “u:á<–=¦œé:bR%‚œô›˜iذ¡kŽ‚#l±²ýÃ/^¼Øú?vìX‹a =ˆYp¡¤dmÓ¦) Ç•+W– ˜õäàLŒË<åÌ™Óî5gÎSV0M*IR22„à>6Ó˜¸)X~º?xð`Áò›a!öïßonÖOR¤Hq €ë . #~y°Ì¯Üb¡±8¸Nâ­W_}U¶mÛf“ÌýpõdÂZáVÏ”81nÌ—]»v™õ'¤ˆy^aœKɧJ•*fÝ8ç/…‹%'äÁba !ŒÜø´mÛÖD9ñãÔ©S-¼)\¸°Õ勹HžwѤI3fŒ‘ à˜& 2`Ab 0ZOüCï[ ÿM“‡ö#¾›dŸºX¬q'dA| 9ªV­j–…p"¶oß^fÏž-÷ÜsÕå ²ûúÈ5Xs\Bl‡&æâƒõ… ÈæÍ›m[ºti³¦ 40 ôÑGY›vòÿ¿PÖ *ÈèÑ£mŒqýÝ JD²EørñÄ ¡Bl FÄÍÄ«ô+©äô¾&©î¨íú ¢ñÖXÜ6B²Ñ¸qcÛòÊ1GŽvÜ¡C;Ôo‡ëq;€¹Y¶l™Å8kذaV6iÒ$s]LP÷îÝmb±„$3™3g6«Ù°Îƒ 2WI»X$)’\R§NÛòYP(3²r&“~bÙ±.Ä‹5jÔ°þàZ7±ã®V­š%$(a –Ø'íãFçÍ›g–“c$xþdÉÉobBâ?Ca‘I*UªtÚúÁki“F‚ðDÙ _’Jµô ’iñ‰TÐ82`í qSúôéÃ\;DÃêàBq¿¾eº‘!“5âÞ˜T—B&‚Ý’Ÿ˜[‚{,$Œ9ÁLÖBB,´oc¶ã“Í3,,‰ !d,;Mš4~uÛrÆ‘={ö°rÿ G¢FÖ!dá9'„$$»˜c‹«°gì`×µ¼›ÆS1O •sbýNbuÚ±€AÉ•+WðÐöóL‚µâSÈ’ã+XX’¡Ø„IôcPikl«æ Ê“ˆœ Þǯëo.\h“L\_ñãMê£à‰°'“Oj9§–—•²ZÊ$£í†2Ÿ(V¨_Xˆ~¦¬×¯{¡l±˜Œ=.Å<—ã¹`-cB‰È1' “ˆÔ‹­Œò YH|þËrN³éÿ2°nl‰@@³Ó‹>@åû8 bå@b騘1œw—8âDÀ¹é8!rÎŽŒg iwŸ8pdŒ"Wál!ðžbìU5ì>HIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1NoSchemaOption-members.html000644 000765 000024 00000015325 14042362132 027117 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::NoSchemaOption Member List

This is the complete list of members for mysqlpp::NoSchemaOption, including all inherited members.

arg_mysqlpp::DataOption< T >protected
ArgType typedefmysqlpp::DataOption< T >
DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1GuessConnectionOption.html000644 000765 000024 00000023046 14042362132 027077 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::GuessConnectionOption Class Reference
MySQL++  3.3.0
mysqlpp::GuessConnectionOption Class Reference

Allow C API to guess what kind of connection to use. More...

#include <options.h>

Inheritance diagram for mysqlpp::GuessConnectionOption:
Collaboration diagram for mysqlpp::GuessConnectionOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 

Detailed Description

Allow C API to guess what kind of connection to use.

This is the default. The option exists to override UseEmbeddedConnectionOption and UseEmbeddedConnectionOption.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/inherit_graph_1.png000644 000765 000024 00000005662 14042362133 022354 0ustar00tangentstaff000000 000000 ‰PNG  IHDR²$-µ`6sRGB®Îé lIDATxíœw¬ÕÅÇ—.H %Ò(B ¤†€tD:ä:¡„"$´HBïJ ô€‚‚1‘&¡£€Šô^-ô.mß|æ½ýåô{¸´{y¿IÎùývgËììwggæ\Ha…ŒO¾’·¥LÞòûÒûø¯| ûHx-4àùµØF>} ¼HºŠ;wš‰'†Vûe_IFýû÷7*T’'Ì"Ÿ;wÎ|ýõ×Aü‚¯¤ 'Ož(6/\¸&N˜Ev-¾úê+÷ê?} $ ¯]»f|¨Cž>}Z×4aÂs÷îÝ i–.]ª¼Í›7ÕG+dÏžý•§lŸÈÿþû¯A)X¦S§N™ßÿ]×KÎïÀæ—_~ñ”wöìÙ «@ÃóçÏ,ž£½{÷š;v(P\ÏÛ·o+`¯\¹¢Š?sæL [ßoÞ¼inܸ¡ómÛ¶Í=zÔkƒÅøë¯¿´ŒÅᇟ@+ÂÞ»wÏ 7Z¦ 5zôh3nÜ80ªU«f¾ùæX‘‡ßºu«A–PÂ*þöÛo†5†ZrÊè ð8°ÑŸœé­[·t¼Ý»w«®Ñ¹#§úüý÷߆2:Ú´i“>iÇA„±Wn”‘iíÚµ¼zDê•CëK~éÒ%WÔ>ŒƒÌì)ºúóÏ?u\£Hz`¯sÀèŸv…g&"ˆdüYgP]¬‚BÛתUKŸô­^½º­W¯žW®\¹²¡m•*UlÍš5½áD¹6UªTvÆŒö×_µùòå³3f´)R¤°¹s綇Ò¶?ýô“Íš5«M™2¥¶/_¾¼}óÍ7•7tèP[¦L}oß¾½-Z´¨}ûí·mÚ´iuþO>ùDy«V­Òr5<mE‘Ê_¿~½òHaeÙDåÉEÊãK€c‹)bëÖ­«u Û©S'm'¹N•óóÏ?÷ÚËÍ¡²¡ŸÔ©SÛœ9sZt]¾|ÙV­ZUû €l¦L™ì¼yó”÷þûïÛ† êzÑ):@_ŽfÏž­s!#kftŠ 2d°+W®´7nÔ~Ì O Ž:uªŽÙ´iSÛ¢E 7œîíÐe®\¹´^\7Ë::~ü¸Êºoß>+ÖXß‘K¸¥¹Átþ]»véP”ßxã {ðàA7tÌ':G61¡í†!6±@F!rÚì¤I“t2#'ÐÊ5¥åýû÷Û™3gªBÅ2ª _|ñ…*œü裬X8+§\Ç‘+ÜöîÝ[@þüùmíÚµ­Xa‹óäÉÈ,”90P^½zµu@nÛ¶­•«Ô;vL7A¬¬ÊByàÀºÉT–+V¬h[¶li7nl ,¨kÙ²e‹ö—+ZºfÍ+VÎΙ3Gç+ª|€P¶lY=œÌߤI˺Ä:Úž={êáãàÊÍ£ Ê–-›ò2e|±zƒÁÇQ:ulýúõµH»wß}׊µ´bå âNX±èºùèƒäôéÓ«®xÒ2dˆ-Y²¤9rd\@¦sñâżªœ”#éAn<=Ì%J”°rc¨þ¦L™¢ýâùz)@v&×¹n a*›\õZþöÛoÕò`)fÍš¥<¬ € ¤§sìØ±Уp>œ^6ËâhøðáQŒ’©@¶_¿~•§ sbù"dëàÁƒµë­·Þ²€â–ßÿ­¸úùùçŸõvX@ÖÀíáøÓ§O×:äá`vëÖ̓0þ|µn™ÃçhîܹjÕ0ÿüó¾/\¸PÙ™ù1óŠ«È /Y²D»½÷Þ{VܧD9–˜`Ïž= |ÀÎ ÃAŽ—b9êOÔ¢€§"¹*µ½¨OÙ}Š› OVƒ ¢ÿ+V±ÀêÇX@²ÉêÓ‰E7bŒl®åz¾]¥J•´_â‚xï¡/Ü *±lÞ0Ä z|‚ƒWNè¹áË‹»dðÇñÙñãìŽmè†õ;^ܳ`Á/‡Hý}üÆB… yõbUMçν²XHï]nÓ½{w#†ÁÈunäj6Í›7÷øëcíó½F/âÊ™?üÐ,_¾Üˆ«eäÆ3ü±Y¶lY@«àWb‰hKô ›Ò¥K9è¦k×®ªŸhc=Mý3{n2”¹z J”+V»ýøãfذaô°É°AbõÉ×É“'½÷З‹/zUDãâÇ?OPëPxEyÉœ9³rtŸX ^`øL›6Í´jÕJy4$]çx¬qüøñ '~¢7‹ÜBæÓO? i%K#·˜þ¸ £GGëã€A ­‘T"Y™/¿üÒH¼aœrcråvtÅ  Ú«üßK,=Є}gíÌ1`À€ˆAqè˜ñ”ãC_<#ÅÙ†M@Í|öÙgºÉXH®LMeÙ+VL­·+zzÙèQ£FivC‚B#¾uÔÙPVžÈƒÁ`q‰[¢ã ðL£F”ETÚ‰'"–©$##“öHÇÌŒéd}‚ÆJt!Ô?Il°G`É‚Ô/s¹¤¡´L°åˆL‚l%ÿëª,A¾" |=ÉÕªoG± чèXÜŒ ™ Âo%#kA[2.sà‚=úÂÃGÃ?'¸‚be-²èøalP²-Ñ¿kC4Ž¿ï¿ÝñY+¾+$À×ë'ëC¬‰Ëá­A+ä‹ÌkjPëêÑ2ŒEVÆéÚeä°Z¹-4«áú¶k×Nû°/~+o .¬|2!]ºtÑw²PëÖ­µŒ®céáƒ>Ð`TÒ­ÚÏ%Ö­[§å„¾bùÈÏœµHhòH|Ò.DÆ¡„ rêaåñÙ—~ l›5k¦©1É×ê†;¾2s°‘.sâøÏë)yU¨ä^Ædnä’<²ÊÚc\ddq``ÇX™Œ @ jÝ<’OÖ€Û•ŸæIPÈj$â°œ;Š¥׿iŸ±€üÜ‚=± ×6W"nþb(( MySQL++ Reference Manual MySQL++: tiny_int.h Source File
MySQL++  3.3.0
tiny_int.h
Go to the documentation of this file.
1 
4 /***********************************************************************
5  Copyright (c) 1998 by Kevin Atkinson, (c) 1999-2001 by MySQL AB, and
6  (c) 2004-2007 by Educational Technology Resources, Inc. Others may
7  also hold copyrights on code in this file. See the CREDITS.txt file
8  in the top directory of the distribution for details.
9 
10  This file is part of MySQL++.
11 
12  MySQL++ is free software; you can redistribute it and/or modify it
13  under the terms of the GNU Lesser General Public License as published
14  by the Free Software Foundation; either version 2.1 of the License, or
15  (at your option) any later version.
16 
17  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
18  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
20  License for more details.
21 
22  You should have received a copy of the GNU Lesser General Public
23  License along with MySQL++; if not, write to the Free Software
24  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
25  USA
26 ***********************************************************************/
27 
28 #if !defined(MYSQLPP_TINY_INT_H)
29 #define MYSQLPP_TINY_INT_H
30 
31 #include "common.h"
32 
33 #include <ostream>
34 
35 namespace mysqlpp {
36 
53 
54 template <typename VT = signed char>
55 class tiny_int
56 {
57 public:
60  typedef VT value_type;
61 
65  tiny_int() { }
66 
70  value_(value_type(v))
71  {
72  }
73 
75  operator bool() const
76  {
77  return value_;
78  }
79 
81  operator int() const
82  {
83  return static_cast<int>(value_);
84  }
85 
87  operator value_type() const
88  {
89  return value_;
90  }
91 
94  {
95  value_ = static_cast<value_type>(v);
96  return *this;
97  }
98 
101  {
102  value_ += static_cast<value_type>(v);
103  return *this;
104  }
105 
108  {
109  value_ -= static_cast<value_type>(v);
110  return *this;
111  }
112 
115  {
116  value_ *= static_cast<value_type>(v);
117  return *this;
118  }
119 
122  {
123  value_ /= static_cast<value_type>(v);
124  return *this;
125  }
126 
130  {
131  value_ %= static_cast<value_type>(v);
132  return *this;
133  }
134 
137  {
138  value_ &= static_cast<value_type>(v);
139  return *this;
140  }
141 
144  {
145  value_ |= static_cast<value_type>(v);
146  return *this;
147  }
148 
151  {
152  value_ ^= static_cast<value_type>(v);
153  return *this;
154  }
155 
158  {
159  value_ <<= static_cast<value_type>(v);
160  return *this;
161  }
162 
165  {
166  value_ >>= static_cast<value_type>(v);
167  return *this;
168  }
169 
172  {
173  ++value_;
174  return *this;
175  }
176 
179  {
180  --value_;
181  return *this;
182  }
183 
186  {
187  this_type tmp = value_;
188  ++value_;
189  return tmp;
190  }
191 
195  {
196  this_type tmp = value_;
197  --value_;
198  return tmp;
199  }
200 
203  {
204  return value_ - i.value_;
205  }
206 
209  {
210  return value_ + i.value_;
211  }
212 
215  {
216  return value_ * i.value_;
217  }
218 
221  {
222  return value_ / i.value_;
223  }
224 
227  {
228  return value_ % i.value_;
229  }
230 
233  {
234  return value_ | i.value_;
235  }
236 
239  {
240  return value_ & i.value_;
241  }
242 
245  {
246  return value_ ^ i.value_;
247  }
248 
251  {
252  return value_ << i.value_;
253  }
254 
257  {
258  return value_ >> i.value_;
259  }
260 
262  bool operator ==(const this_type& i) const
263  {
264  return value_ == i.value_;
265  }
266 
268  bool operator !=(const this_type& i) const
269  {
270  return value_ != i.value_;
271  }
272 
274  bool operator <(const this_type& i) const
275  {
276  return value_ < i.value_;
277  }
278 
280  bool operator >(const this_type& i) const
281  {
282  return value_ > i.value_;
283  }
284 
286  bool operator <=(const this_type& i) const
287  {
288  return value_ <= i.value_;
289  }
290 
292  bool operator >=(const this_type& i) const
293  {
294  return value_ >= i.value_;
295  }
296 
297 private:
298  value_type value_;
299 };
300 
302 template <typename VT>
303 std::ostream& operator <<(std::ostream& os, tiny_int<VT> i)
304 {
305  os << static_cast<int>(i);
306  return os;
307 }
308 
309 } // end namespace mysqlpp
310 
311 #endif
Class for holding an SQL TINYINT value.
Definition: tiny_int.h:56
bool operator>=(const this_type &i) const
Check this object is greater than or equal to another.
Definition: tiny_int.h:292
this_type operator+(const this_type &i) const
Return this value plus i.
Definition: tiny_int.h:208
this_type operator/(const this_type &i) const
Return this value divided by i.
Definition: tiny_int.h:220
bool operator>(const this_type &i) const
Check that this object is greater than another.
Definition: tiny_int.h:280
this_type & operator>>=(int v)
Shift this value right by v positions.
Definition: tiny_int.h:164
this_type & operator/=(int v)
Divide this value by another object.
Definition: tiny_int.h:121
this_type & operator&=(int v)
Bitwise AND this value by another value.
Definition: tiny_int.h:136
this_type & operator<<=(int v)
Shift this value left by v positions.
Definition: tiny_int.h:157
tiny_int()
Default constructor.
Definition: tiny_int.h:65
bool operator<(const this_type &i) const
Check that this object is less than another.
Definition: tiny_int.h:274
this_type & operator+=(int v)
Add another value to this object.
Definition: tiny_int.h:100
VT value_type
alias for type of internal value
Definition: tiny_int.h:60
tiny_int(value_type v)
Create object from any integral type that can be converted to a short int.
Definition: tiny_int.h:69
this_type operator|(const this_type &i) const
Return this value bitwise OR'd by i.
Definition: tiny_int.h:232
bool operator<=(const this_type &i) const
Check this object is less than or equal to another.
Definition: tiny_int.h:286
this_type operator-(const this_type &i) const
Return this value minus i.
Definition: tiny_int.h:202
this_type operator*(const this_type &i) const
Return this value multiplied by i.
Definition: tiny_int.h:214
this_type & operator--()
Subtract one from this value and return that value.
Definition: tiny_int.h:178
this_type & operator|=(int v)
Bitwise OR this value by another value.
Definition: tiny_int.h:143
bool operator==(const this_type &i) const
Check for equality.
Definition: tiny_int.h:262
tiny_int< VT > this_type
alias for this object's type
Definition: tiny_int.h:59
bool operator!=(const this_type &i) const
Check for inequality.
Definition: tiny_int.h:268
this_type & operator*=(int v)
Multiply this value by another object.
Definition: tiny_int.h:114
this_type operator>>(const this_type &i) const
Return this value bitwise shifted right by i.
Definition: tiny_int.h:256
this_type & operator%=(int v)
Divide this value by another object and store the remainder.
Definition: tiny_int.h:129
this_type & operator++()
Add one to this value and return that value.
Definition: tiny_int.h:171
this_type operator&(const this_type &i) const
Return this value bitwise AND'd by i.
Definition: tiny_int.h:238
this_type operator<<(const this_type &i) const
Return this value bitwise shifted left by i.
Definition: tiny_int.h:250
this_type & operator=(int v)
Assign a new value to the object.
Definition: tiny_int.h:93
this_type operator^(const this_type &i) const
Return this value bitwise XOR'd by i.
Definition: tiny_int.h:244
this_type & operator-=(int v)
Subtract another value to this object.
Definition: tiny_int.h:107
this_type operator%(const this_type &i) const
Return the modulus of this value divided by i.
Definition: tiny_int.h:226
this_type & operator^=(int v)
Bitwise XOR this value by another value.
Definition: tiny_int.h:150
This file includes top-level definitions for use both internal to the library, and outside it....
mysql++-3.3.0/doc/html/refman/functions_func_b.html000644 000765 000024 00000012344 14042362132 023007 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
MySQL++  3.3.0
 

- b -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1NoSchemaOption__inherit__graph.png000644 000765 000024 00000013035 14042362133 030505 0ustar00tangentstaff000000 000000 ‰PNG  IHDR’‰ÇjaÖsRGB®Îé×IDATxí ¼USÆ_ J†DEŠ2„25Q¢ˆ ‘$•Ò`Œ$_QJ*¥P¡A¡n!¥"S©T(…*%‘Šö·þ¯»Ž}sîÞ÷º{Nw½¿ß=gïµÖ^{­g=ë]ïÚçÜóìçgÿ†@Z¾ÿv½»Ú!ð7ŽHŽ 9‚€#RŽÀè*I8‘š5k&ûí·ŸûÛ‹¼ÿþû gv‰´fÍ™3gŽ㻿œÇà[Æ/Û¶m“¡C‡JÕªUeñâÅqëî¹çdÈ!šñþøã¸eS&ƒHiÕ«W÷Ì®-Ó[R¦}ûö^™2e¼¶mÛzíÚµóJ–,éµhÑÂÛ³g× AƒHsçÎõ6lèbx7ö;ì0¯~ýúÞæÍ›=3Ó½V­Zy¥J•òZ·níU©REï{ÔQGy?üðƒÖÛ¦M¯lÙ²^µjÕ¼¯¾úÊ[¸p¡×¨Q#¯^½zÞGáõèÑC¯Y±b…Þ—“±cÇzݺuÓ¶”.]Ú›ø`P±œÎŸž”é믿–;vÈĉeôèѲ}ûva9â|ÕªUR±bE™0a‚NVÞ95j”tÐA²|ùr1dÒ²o¿ý¶bÈÌ™35<¿}óÍ7Zßüùó¥fÍš2pà@½×o¼!:twß}W=ÇO?ý$x œuÖYz¹!Þsýúõ²nÝ:©[·®¿Z9ÿüóeÉ’%1ë*V¬˜R ^ÑUËíÞ½[ïmˆ+ ,âŋ˰aÃtù6mš\yå•Úß_|Q¸gRZNS3¨¾0 ïóÑGiUǼ÷Áè1^cöìÙÞ¼yó¼ *hÚ 'œà}øá‡Þ¤I“¼%J¨§øøã5¯cÇŽ^¿~ýôØ ¸W¸pa=¶ ðÊ+¯hÚêÕ«½òåËë½N<ñDMã¥eË–ž!iäÜ`ž‰yæáªzú«¯¾ê•+W.n]½zõòî¿ÿ~½„¾rx'Ÿ|²g–CM3$ô*Uªä὎9æ˜HÕxT‹K$1êÀy¤¨ivì±ÇjJ¾|ùÄ$Cî9眣 ÏçÂS˜åH½×† ÄDÆŒ#ßÿ½Ò赆Dê°'xŒ€— ³iûÓ9÷›Yz¥P¡Bêñüé<ÄKbaê2\жâI1³|ËŸþ©ÇxYk Ї¸ö<™Þ“ri ˆX®¾újéÔ©“˜¸H?néÒ¥‹.%#FŒîÝ»ë²db¥ÈSÞ3fĬ–%3qŽ4iÒD'–³_~ùEŒ7Ô{°¼rŒ™øE–.]*ùóç×%Š%qëÖ­š·lÙ27nœ˜¸NÏcÕEË™5úcb*miÆ£é²góSá½@*4ÒßF@Ç®¹æ4h4mÚTÏñHüõïß_•˜©\¹rê¥Ì²!ýõW†ÙlëaЉ½ØqA6Þ÷ßõrlã!¬Y^ä³Ï>“Ë.»L¶lÙ¢;4>æáºG}TÌò'Ä7&¨W¯öðÃk[ÌF f]§Ÿ~º4oÞ\j×®­mç¥sçÎJ¾>}úè.ŽÝ`,³íŽ•—«iQKì^? #…i„ #»0[Þx +ØÙùy6F²yÄH&÷Ì虥D“‰ÇjÔ¨á™%ÓûñÇmÑÀwC0Ïx)ÏxšHÙÌê2$Ü3r90ÝmúÓ²rœ[1RÊy$fËWß¾}Õûøg!;«“N:ÉŸ¤Çì²2{Vcã(ÿ…ÄTñâ*9{L,ä‡l:ï±ê*R¤ˆ¿Häø¸ãŽ‹§ÒAJ‰exƈÎ`|û§ÑÑÊÃÅ)S¦ø‹eû8'ëÊv#taJéCÉÿüÁ¨«òüiš#R ,_¾^6lø{ {úéwå´ÓŽ’5NÐ’•*•’’%³÷¡qŒ[í+Ii ÿ¬-«X±”ñJ¥´©¯¿þ‰ùŽS)óŸ!'¦BÓs­.FÊ5è÷­;"Œg¾|ÿ–S@±<Ÿíˆ@‚m÷‰L¶#R0F®D‘@bÛŸ´ÿÐöDf;" Í²æ–¶L¶#R0F®D‘B€äŠ#àˆŒ‘+G¤ ¹"Á8"cäJ„@À)$÷d; ôlG¤œÜ“퀑ÂäJ…CÀy¤p8¹R8"ä>" (=Û)'÷I@ŽHár¥Â!àtoG¤}h0s³+ŽH¹‰þ>tï¤ÿ5„ôŒL¨BŽŽš‘ÀRÕÆ¬Žçw^¶®u/#¤l~p®üþûï‚\­ZµBÿ#%í¨П}Å’Þ#!ޏžÑr5¿u&F×VFŽ™eüsR¢‰/£ô-FKWŒœtíÚUŒZ¶*XÆkØ>)ÑîëlÒ‰¶^pÁÒ³gO%3Ùluµ C† ‘£>ÚÈ<”‘§žzJÓø¼å–[ÄÈ¡Kåʕň)kº}A^‰®#|¸ ÉŽ í]êX´h‘yu•å´›kî»ï>ùßÿþ'o¾ù¦|ñÅ*EŠB7JÛ¨1¡Ô )Q‡¤(k£Jyë­·j[’ý%%ˆôú믫tç%—\"Ï?ÿ¼´iÓF%C¾½0Ó‘$e@ÑEšÝ¨l«° 2¥FÍ:Ã<ûì³:ˆH±#xÛm·ÉæÍ›¥G*‰Ž†× ÈÀâ ©óÌ3ÏTâ|þùçJ*dGý–'%Ú}$}ŒD[d»ÎR⑟þYÕ#¯¿þz3.¾øbíÎØ±cõ™覛n’SN9EÿðTFR4Òe”¹‰iˆ™Œ<»¹vUñÆÃp-ޯްöíÛ  ±A<ê×±Ô(¹‡yŒ„¼jÚrý¥—^ªZ¹1e[†¼·ÞzKïOy&ŵ×^+ô )–bŒ¾#XM\ÍL¢—”ðH§žzªܺukÁ£L:U—¿Ÿ•8ÿî»ïÄŸÎÀ“gAá!dA@‡y(j#ùŽ"6¹_‚ÔªTZ©t¤B/^l~crƒ­Rßó¢D»€” ’m0 Øx“™ŽW! ùt_â <DãhY¾ˆSü³™ëðDݺu“ *h¼ +K$oÙbÙ¹çžk~_²¢ôîÝ;BPäÕ‰mPÛÆòŠD»v6ý%é—6¾ÆAÀŠëgi`‡ ¦A1q ç¿þú«\wÝuæ×fKÊUW]%“&MR²°Ü<óÌ3‘þRWÛ¶muÀI'6¢,$êÒ¥‹œqÆF¤€.‰?þxä:{ÀõÕÄQ,CÉx,HÇ2EplT²•Œx8¿Üû>)ÑnáÝ€kf¼‡g>kûO÷ß´iSLYu³Äy†`që6ŸóyÆóDòó¸Ûµk—g–¾H^¼³Lz+W®Ìífyöú÷ >™žôÉOúXÇlóc23–5¿áiì5 4ýÙ1cɼۂyA¢Ýö•÷”Š‘ü OÖã¼$ÑîG$?9pœ—$Úýp9"ùÑpÇÙF Wc$û 1Û­OÀ…©"×n?6J$1oáDmbÂòw¢Ùù8¹öLðñe9¹vÿ:tríÿ‚$n‚‹‘âB#âäÚ3'*Ë) {êäÚ-áÞ‘âàääÚã'Ù)0N®=0q’‘bãäÚc€äˆ '×”€$G¤9¹ö $¹’Q9¹ö(@Â:¹öX89¹öX¨dšæäÚcÁãäÚc¡’yš‹‘2ÇÇå†DÀ)(÷«¶¥g;"àä~Õ6 G¤p¹Ráp)'÷«¶¥g;"àÄ—Ûøs–9ŽH™ããrC"àˆ(W,s‘2ÇÇå†DÀ)$P®Xæ8"eŽË ‰€#RPîÉv@éÙŽH8¹'Û9"…È• ‡€óHápr¥pD È}DPz¶#RNî#’€‘ÂäJ…CÀy¤œÜö? ôlG¤œÜö? G¤p¹Ráp)'·k (=Û)'·k È)@®THÌŒ‹Ø¬Y³’^–Üt+¡mL¹öDãbUÒÉ“ñ—ÿ ‘TÞ©U«V!ièŠåEиCeÊ*%€‹‘ò"öBŸ‘ö¨y±JG¤¼8ê{¡ÏIG$#[¥:j9ÑWÔ$Q{ô¢|¨Gffäù/Y°`ìܹ3nQT$io"Œ˜„6Mœ8Q.\úívìØ¡‚Í{»IG$"Q³Î CѺsçβtéÒHuO?ý´ŠóE¢¦L™"Ý»w£§JÚè㢣ËNF­roÛË/¿,÷Þ{¯*SÒ.D ‘P…$ñì‰'žPuoÔ0?ùä“xÅr,=ËZ$È{Î;Wå?@ž\~ùåªÂˆvl×®]µÑ£°ÈlFnœN½ôÒK* Z´hQ-‡ JŒãÆ“²e˪:d»ví"³²æ(2¢Ä!ЛEŠYõ9sæ¨ò#2èh£¡yûí·«t»=¦²ªU«J¿~ýT å"k´wàÀ‚ i‰%t`N;í4mc5TÒ² žçàƒ–(¹h;‰Ñ>T)·lÙ"7ß|³Ô¯__Õ¾ŸzÚzÏ=÷è ÓŽ"EŠˆTñäO?ýTV¯^-Íš5SåK&ªá7n$O‘‹_³fŒ=ZÆŒ£ôzSóBÞ„ TÅAg?Nȳ¦¥¥©©Z¸ Ö¸qc•:…°#FŒP’Q}aÐ_xáí#}ÀV¬X!:uÒÇ&xŒIQ4H>xð`•ˆGê½Zµj*…Jû™Ò¶mÈ!Ür0ðÕíhÃ*Uª(AbáT§Nmc‡¤P¡BÂQ?$Ð,ñ,‘Œ ã´…oÛ½ /Y&u£‹:±²è£ PëÖ­ÓYáj×®­^‚Yéð>A6ëð±ÔkÖ¬©å©7ne×l”´4h ¥MÌ$ ¶ÿ˜<<±q†5ˆ ¨H±7oÞ\Ö®]«3²zõêJpcÑ¢EêeT–±zõêé=Roذ¡Ve1@_×¶—ƒ83Û¥õ€ÐëÀˆnÔ¨‘zLpÃ{ì1\?~¼z8¼"Ïxþh#ÏzØhœÈC“ Çg…“ÏŠì<‹•¯ŽAh´éŠãÙ±l©téÒz/ä;‘<÷*Õ¸åùóçë$`€™•,x–ˆ…˜±µXÒŸV*2ÌpÀÀl:iÄAÆ 2ÛXnÌ“X-`,³Ö0êCeî&Mš¨êö 7Ü “'OÖA`ÉÆhkñâÅõ¸L™2úŽp³¿nŽY’YÊ< ñdʤ²D òL0\l½`ÍÒ§áM˜”˜Åƒc?Nœ[oð·Æýè3F[04! /Ù"RPý‡˜°döìÙ2mÚ4!B-o„ 5®›Î0“‘\6ÀÚ³g.,,›3ëð*åÊ•Ó4ê²Á§ÿX3Í K±Ã²eË4 ¯Ù©‡ö@6ï@Àowk§<^‰ò‹å'ž1‘ðDþ/Y²$^ÑH:÷% Жp›¥™'ÈÄI`ñ Äúõë5ã<Nʾ۷o×e޾ÑwâÇœ²¢Ï¨ÑºQ€`Ð< ôáÇkPÇ@0Û™Mt®E‹?ØYAy[³ˆe‡í81é€ËZi˜aìf0Þ ¤uÚcÍHa¶ñhŸ€#Ø$6hÚ´©.#wÝu—¦sNýÄ@x }úèêEé/¶Ý,{}ûöÕmïÝ»·¿Ø¿Ž¹Ž¥ÜX†é#K&&%“?ê'ò©òc±pbÒ=òÈ#B°q–-[ ýd ?üp%ÒÌ™35ß¾Ø>Øó°ï~g›Æ®ZµJã°Ä*ãf­]˜MÌ8f(ËŸ5€²ØbÌ@bâ!Ê[¢Õ­[W¦OŸ®®Þ¿4Úú²úÎ!mýözÒY–üËyLèåÜ^ýNÜA ^Xƒâƒù%o÷îÝbC ꌇyx èöƒ)Þå;»¤aBï[¥[Îÿ<2.™Y@ kIÄÍXÊ—/ooy÷IôÄÊ€œ ·‰WO¼ô°$¢nçpÖðÖ¢ûîϳeì{tYÒ£ID“’e7§-G—6ÇV•ç3ÅŠËR[Ù±ø½‚ P£+áÙ ³ÕÙßÄÃ)Ñøä8‘ØÑd•Dt:zö\DzX3/V¹¼’§D÷¯ìÚÝ w¿$@Àì"f¶• ýö¡é¾»_Šbý É »¶$àµkBj"àäÚSsÜ’¯Õ.FJ¾1IÉ9"¥ä°%_£ÿsœÕ .¢óIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1InitCommandOption.html000644 000765 000024 00000030654 14042362132 026176 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::InitCommandOption Class Reference
MySQL++  3.3.0
mysqlpp::InitCommandOption Class Reference

Give SQL executed on connect. More...

#include <options.h>

Inheritance diagram for mysqlpp::InitCommandOption:
Collaboration diagram for mysqlpp::InitCommandOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::DataOption< T >
typedef T ArgType
 Alias for template param.
 
- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 
- Protected Member Functions inherited from mysqlpp::DataOption< T >
 DataOption (const T &arg)
 Construct object.
 
- Protected Attributes inherited from mysqlpp::DataOption< T >
arg_
 The argument value.
 

Detailed Description

Give SQL executed on connect.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1TypeLookupFailed-members.html000644 000765 000024 00000014114 14042362132 027444 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::TypeLookupFailed Member List

This is the complete list of members for mysqlpp::TypeLookupFailed, including all inherited members.

Exception(const Exception &e) MAY_THROW()mysqlpp::Exceptioninline
Exception(const char *w="")mysqlpp::Exceptioninlineprotected
Exception(const std::string &w)mysqlpp::Exceptioninlineprotected
operator=(const Exception &rhs)mysqlpp::Exceptioninline
TypeLookupFailed(const std::string &w)mysqlpp::TypeLookupFailedinlineexplicit
what() constmysqlpp::Exceptioninlinevirtual
what_mysqlpp::Exceptionprotected
~Exception()mysqlpp::Exceptioninline
mysql++-3.3.0/doc/html/refman/common_8h_source.html000644 000765 000024 00000115474 14042362132 022742 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: common.h Source File
MySQL++  3.3.0
common.h
Go to the documentation of this file.
1 
7 /***********************************************************************
8  Copyright © 1998 by Kevin Atkinson, © 1999-2001 by MySQL AB,
9  © 2004-2009, 2018 by Educational Technology Resources, Inc., and
10  © 2009 by Warren Young. Others may also hold copyrights on code
11  in this file. See the CREDITS.txt file in the top directory of the
12  distribution for details.
13 
14  This file is part of MySQL++.
15 
16  MySQL++ is free software; you can redistribute it and/or modify it
17  under the terms of the GNU Lesser General Public License as published
18  by the Free Software Foundation; either version 2.1 of the License, or
19  (at your option) any later version.
20 
21  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
22  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
23  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
24  License for more details.
25 
26  You should have received a copy of the GNU Lesser General Public
27  License along with MySQL++; if not, write to the Free Software
28  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
29  USA
30 ***********************************************************************/
31 
32 #if !defined(MYSQLPP_COMMON_H)
33 #define MYSQLPP_COMMON_H
34 
35 #if !defined(DOXYGEN_IGNORE)
36 // Doxygen will not generate documentation for the following stuff.
37 
38 // Enable SSQLS by default. Turned off below on platforms where we
39 // know it doesn't work.
40 #define MYSQLPP_SSQLS_COMPATIBLE
41 
42 // For all platforms but Visual C++ 2003, the following macro is just
43 // an alias for "*this". It needs a more complicated definition on
44 // VC++ 2003 to work around an error in the overloaded operator lookup
45 // logic. For an explanation of the problem, see:
46 // http://groups.google.com/group/microsoft.public.vc.stl/browse_thread/thread/9a68d84644e64f15
47 #define MYSQLPP_QUERY_THISPTR *this
48 
49 // Work out major platform-specific stuff here.
50 #if defined(__WIN32__) || defined(_WIN32)
51 # define MYSQLPP_PLATFORM_WINDOWS
52  // Windows compiler support. Tested with Microsoft Visual C++,
53  // Borland C++ Builder, and MinGW GCC.
54 
55  // Don't let windows.h (via Connector/C) #define min/max
56  #define NOMINMAX
57 
58  // Stuff for Visual C++ only
59 # if defined(_MSC_VER)
60 # define MYSQLPP_PLATFORM_VISUAL_CPP
61  // MS *still* doesn't ship stdint.h, through VC++ 2008 at least.
62  // This means we have to take a wild guess at appropriate
63  // integer types in lib/sql_types.h. See test/inttypes.cpp for
64  // tests that check whether we've guessed well.
65 # define MYSQLPP_NO_STDINT_H
66 # if _MSC_VER < 1400
67  // Workarounds for limitations of VC++ 2003 that are fixed
68  // in 2005 and later.
69 # undef MYSQLPP_QUERY_THISPTR
70 # define MYSQLPP_QUERY_THISPTR dynamic_cast<std::ostream&>(*this)
71 # undef MYSQLPP_SSQLS_COMPATIBLE
72 # elif !defined(_STLP_VERSION) && !defined(_STLP_VERSION_STR)
73  // VC++ 2005 or newer and not using STLport, so #define
74  // portability flags indicating features we can use from
75  // the compiler's native RTL.
76 # define MYSQLPP_HAVE_LOCALTIME_S
77 # define MYSQLPP_HAVE_STD__NOINIT
78 # endif
79 
80  // Disable complaints about STL data members: VC++ believes
81  // these need to be __declspec(dllexport) for some reason.
82 # pragma warning(disable: 4251)
83  // Disable complaint that VC++ doesn't grok throw specs
84 # pragma warning(disable: 4290)
85  // Disable whining about using 'this' as a member initializer on VC++.
86 # pragma warning(disable: 4355)
87  // Disable whining about implicit conversions to bool
88 # pragma warning(disable: 4800)
89  // Disable nagging about new "secure" functions like strncpy_s()
90 # pragma warning(disable: 4996)
91 
92  // Disable warning about exporting a class from a DLL which is
93  // derived from a non-exported class in another DLL. This is
94  // safe to do with Standard C++ library types per:
95  //
96  // https://msdn.microsoft.com/en-us/library/3tdb471s.aspx
97  //
98  // We don't hit this any other way in MySQL++.
99 # pragma warning(disable: 4275)
100 
101  // Squish warning about passing no args to MAY_THROW() when
102  // building with newer C++ support. We're doing it on purpose.
103 # pragma warning(disable: 4003)
104 
105  // Prior to Visual C++ 2015, we must use _snprintf()
106 # if _MSC_VER < 1900
107 # define snprintf _snprintf
108 # endif
109 # endif
110 
111  // Define DLL import/export tags for Windows compilers, where we build
112  // the library into a DLL, for LGPL license compatibility reasons.
113  // (This is based on a similar mechanism in wxWindows.)
114 
115  #ifdef MYSQLPP_MAKING_DLL
116  // When making the DLL, export tagged symbols, so they appear
117  // in the import library.
118  #define MYSQLPP_EXPORT __declspec(dllexport)
119  #elif !defined(MYSQLPP_NO_DLL)
120  // We must be _using_ the DLL, so import symbols instead.
121  #define MYSQLPP_EXPORT __declspec(dllimport)
122  #else
123  // Not making a DLL at all, so no-op these declspecs
124  #define MYSQLPP_EXPORT
125  #endif
126 
127  // We need to use the DOS/Windows path separator here
128  #define MYSQLPP_PATH_SEPARATOR '\\'
129 #else
130  // If not VC++, MinGW, or Xcode, we assume we're on a system using
131  // autoconf, so bring in the config.h file it wrote containing the
132  // config test results. Only do this during the library build, and
133  // even then, not if included from a MySQL++ header file, since
134  // config.h cannot be safely installed with the other headers.
135 # if defined(MYSQLPP_NOT_HEADER) && !defined(MYSQLPP_XCODE)
136 # include "config.h"
137 # endif
138 
139  // Make DLL stuff a no-op on this platform.
140  #define MYSQLPP_EXPORT
141 
142  // Assume POSIX path separator
143  #define MYSQLPP_PATH_SEPARATOR '/'
144 #endif
145 
146 // Workarounds for deprecations in C++11 and newer. We must still
147 // support systems whose contemporaneous C++ compiler only understands
148 // C++98. Because of the large gap between C++98 and C++11, it will
149 // likely be years yet until we can start using C++11 unconditionally
150 // within MySQL++, then years more until we can use C++14, etc.
151 //
152 // C++11 deprecated throwspecs, a feature of C++ that is only used by
153 // the oldest parts of MySQL++. We can't drop the throwspecs until
154 // MySQL++ 4, if we ever get around to that, since that would break
155 // the library's ABI on systems whose C++ compiler still supports
156 // throwspecs. This feature isn't completely gone until C++17, but we
157 // don't want the warnings on certain newer compilers expecting C++11
158 // or newer C++ dialects.
159 #if __cplusplus < 201103L
160 # define MAY_THROW(what) throw(what)
161 #else
162 # define MAY_THROW(junk) noexcept(false)
163 #endif
164 
165 // C++11 added unique_ptr as a replacement for auto_ptr. We don't have
166 // the ABI problem above with this one, so we switch to it with the
167 // oldest release possible. As with the above ifdef, this one only
168 // currently works for g++ and clang++.
169 #if __cplusplus >= 201103L
170 # define UNIQUE_PTR(what) std::unique_ptr<what>
171 #else
172 # define UNIQUE_PTR(what) std::auto_ptr<what>
173 #endif
174 
175 
176 namespace mysqlpp {
177 
180 const bool use_exceptions = true;
181 
183 enum sql_cmp_type { sql_use_compare };
184 
185 #if !defined(DOXYGEN_IGNORE)
186 // Figure out how to get large integer support on this system. Suppress
187 // refman documentation for these typedefs, as they're system-dependent.
188 #if defined(MYSQLPP_NO_LONG_LONGS)
189 // Alias "longlong" and "ulonglong" to the regular "long" counterparts
190 typedef unsigned long ulonglong;
191 typedef long longlong;
192 #elif defined(_MSC_VER)
193 // It's VC++, so we'll use Microsoft's 64-bit integer types
194 typedef unsigned __int64 ulonglong;
195 typedef __int64 longlong;
196 #else
197 // No better idea, so assume the C99 convention. If your compiler
198 // doesn't support this, please provide a patch to extend this ifdef, or
199 // define MYSQLPP_NO_LONG_LONGS.
200 typedef unsigned long long ulonglong;
201 typedef long long longlong;
202 #endif
203 #endif // !defined(DOXYGEN_IGNORE)
204 
205 #if !defined(MYSQLPP_NO_UNSIGNED_INT_TYPES)
211 typedef unsigned long ulong;
212 #endif
213 
214 } // end namespace mysqlpp
215 
216 // The MySQL headers define these macros, which is completely wrong in a
217 // C++ project. Undo the damage.
218 #undef min
219 #undef max
220 
221 #endif // !defined(DOXYGEN_IGNORE)
222 
223 
224 // Now that we've defined all the stuff above, we can pull in the full
225 // MySQL header. Basically, the above largely replaces MySQL's my_global.h
226 // while actually working with C++. This is why we disobey the MySQL
227 // developer docs, which recommend including my_global.h before mysql.h.
228 extern "C" {
229 #if defined(MYSQLPP_MYSQL_HEADERS_BURIED)
230 # include <mysql/mysql.h>
231 #else
232 # include <mysql.h>
233 #endif
234 }
235 
236 // The Unicode chapter of the user manual justifies the following.
237 #if MYSQL_VERSION_ID >= 50500
244 # define MYSQLPP_UTF8_CS "utf8mb4"
245 
248 # define MYSQLPP_UTF8_COL "utf8mb4_general_ci"
249 #else
255 # define MYSQLPP_UTF8_CS "utf8"
256 
259 # define MYSQLPP_UTF8_COL "utf8_general_ci"
260 #endif
261 
262 #endif // !defined(MYSQLPP_COMMON_H)
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SharedMemoryBaseNameOption-members.html000644 000765 000024 00000015421 14042362132 031412 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::SharedMemoryBaseNameOption Member List

This is the complete list of members for mysqlpp::SharedMemoryBaseNameOption, including all inherited members.

arg_mysqlpp::DataOption< T >protected
ArgType typedefmysqlpp::DataOption< T >
DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1NoExceptions.html000644 000765 000024 00000020105 14042362132 025207 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::NoExceptions Class Reference
MySQL++  3.3.0
mysqlpp::NoExceptions Class Reference

Disable exceptions in an object derived from OptionalExceptions. More...

#include <noexceptions.h>

Public Member Functions

 NoExceptions (const OptionalExceptions &a)
 Constructor. More...
 
 ~NoExceptions ()
 Destructor. More...
 

Detailed Description

Disable exceptions in an object derived from OptionalExceptions.

This class was designed to be created on the stack, taking a reference to a subclass of OptionalExceptions. (We call that our "associate" object.) On creation, we save that object's current exception state, and disable exceptions. On destruction, we restore our associate's previous state.

Constructor & Destructor Documentation

◆ NoExceptions()

mysqlpp::NoExceptions::NoExceptions ( const OptionalExceptions a)
inline

Constructor.

Takes a reference to an OptionalExceptions derivative, saves that object's current exception state, and disables exceptions.

◆ ~NoExceptions()

mysqlpp::NoExceptions::~NoExceptions ( )
inline

Destructor.

Restores our associate object's previous exception state.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1DataOption-members.html000644 000765 000024 00000015327 14042362132 026275 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::DataOption< T > Member List

This is the complete list of members for mysqlpp::DataOption< T >, including all inherited members.

arg_mysqlpp::DataOption< T >protected
ArgType typedefmysqlpp::DataOption< T >
DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/files.html000644 000765 000024 00000037577 14042362132 020604 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: File List
MySQL++  3.3.0
File List
Here is a list of all documented files with brief descriptions:
 autoflag.hDefines a template for setting a flag within a given variable scope, and resetting it when exiting that scope
 beemutex.hMUTually EXclusive lock class
 cmdline.h
 common.hThis file includes top-level definitions for use both internal to the library, and outside it. Contrast mysql++.h
 comparable.hDeclares the Comparable<T> mixin
 connection.hDeclares the Connection class
 cpool.hDeclares the ConnectionPool class
 datetime.hDeclares classes to add SQL-compatible date and time types to C++'s type system
 dbdriver.hDeclares the DBDriver class
 exceptions.hDeclares the MySQL++-specific exception classes
 field.hDeclares the Field and Fields classes
 field_names.hDeclares a class to hold a list of field names
 field_types.hDeclares a class to hold a list of SQL field type info
 insertpolicy.hDeclares the InsertPolicy classes
 manip.hDeclares the Query stream manipulators and operators
 myset.hDeclares templates for generating custom containers used elsewhere in the library
 mysql++.hThe main MySQL++ header file
 mystring.hDeclares String class, MySQL++'s generic std::string-like class, used for holding data received from the database server
 noexceptions.hDeclares interface that allows exceptions to be optional
 null.hDeclares classes that implement SQL "null" semantics within C++'s type system
 options.hDeclares the Option class hierarchy, used to implement connection options in Connection and DBDriver classes
 qparms.hDeclares the template query parameter-related stuff
 query.hDefines a class for building and executing SQL queries
 refcounted.hDeclares the RefCountedPointer template
 result.hDeclares classes for holding information about SQL query results
 row.hDeclares the classes for holding row data from a result set
 scopedconnection.hDeclares the ScopedConnection class
 sql_buffer.hDeclares the SQLBuffer class
 sql_types.hDeclares the closest C++ equivalent of each MySQL column type
 sqlstream.hDefines a class for building quoted and escaped SQL text
 stadapter.hDeclares the SQLTypeAdapter class
 stream2string.hDeclares an adapter that converts something that can be inserted into a C++ stream into a std::string type
 tcp_connection.hDeclares the TCPConnection class
 tiny_int.hDeclares class for holding a SQL TINYINT
 transaction.hDeclares the Transaction class
 type_info.hDeclares classes that provide an interface between the SQL and C++ type systems
 uds_connection.hDeclares the UnixDomainSocketConnection class
 utility.hDeclares utility functions used within MySQL++
 vallist.hDeclares templates for holding lists of values
 wnp_connection.hDeclares the WindowsNamedPipeConnection class
mysql++-3.3.0/doc/html/refman/functions_func_w.html000644 000765 000024 00000006667 14042362132 023047 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
MySQL++  3.3.0
 

- w -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1UnixDomainSocketConnection.html000644 000765 000024 00000151356 14042362132 030052 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::UnixDomainSocketConnection Class Reference
MySQL++  3.3.0
mysqlpp::UnixDomainSocketConnection Class Reference

Specialization of Connection for Unix domain sockets. More...

#include <uds_connection.h>

Inheritance diagram for mysqlpp::UnixDomainSocketConnection:
Collaboration diagram for mysqlpp::UnixDomainSocketConnection:

Public Member Functions

 UnixDomainSocketConnection ()
 Create object without connecting it to the MySQL server.
 
 UnixDomainSocketConnection (const char *path, const char *db=0, const char *user=0, const char *password=0)
 Create object and connect to database server over Unix domain sockets in one step. More...
 
 UnixDomainSocketConnection (const UnixDomainSocketConnection &other)
 Establish a new connection using the same parameters as an existing connection. More...
 
 ~UnixDomainSocketConnection ()
 Destroy object.
 
bool connect (const char *path, const char *db=0, const char *user=0, const char *password=0)
 Connect to database after object is created. More...
 
- Public Member Functions inherited from mysqlpp::Connection
 Connection (bool te=true)
 Create object without connecting to the database server. More...
 
 Connection (const char *db, const char *server=0, const char *user=0, const char *password=0, unsigned int port=0)
 Create object and connect to database server in one step. More...
 
 Connection (const Connection &other)
 Establish a new connection using the same parameters as an existing connection. More...
 
virtual ~Connection ()
 Destroy object.
 
std::string client_version () const
 Get version of library underpinning the current database driver.
 
bool connected () const
 Returns true if connection was established successfully. More...
 
ulonglong count_rows (const std::string &table)
 Returns the number of rows in a table. More...
 
bool create_db (const std::string &db)
 Ask the database server to create a database. More...
 
void disconnect ()
 Drop the connection to the database server.
 
DBDriverdriver ()
 Returns a reference to the current database driver.
 
bool drop_db (const std::string &db)
 Asks the database server to drop (destroy) a database. More...
 
int errnum ()
 Return last error number associated with this connection.
 
const char * error () const
 Return error message for last error associated with this connection. More...
 
std::string ipc_info () const
 Get information about the IPC connection to the database server. More...
 
bool kill (unsigned long tid) const
 Kill a database server thread. More...
 
 operator private_bool_type () const
 Test whether any error has occurred within the object. More...
 
Connectionoperator= (const Connection &rhs)
 Copy an existing Connection object's state into this object.
 
bool ping ()
 "Pings" the database server More...
 
int protocol_version () const
 Returns version number of the protocol the database driver uses to communicate with the server.
 
Query query (const char *qstr=0)
 Return a new query object. More...
 
Query query (const std::string &qstr)
 Return a new query object. More...
 
bool select_db (const std::string &db)
 Change to a different database managed by the database server we are connected to. More...
 
std::string server_version () const
 Get the database server's version string.
 
bool set_option (Option *o)
 Sets a connection option. More...
 
bool shutdown ()
 Ask database server to shut down.
 
std::string server_status () const
 Returns information about database server's status.
 
unsigned long thread_id ()
 Returns the database server's thread ID for this connection. More...
 
- Public Member Functions inherited from mysqlpp::OptionalExceptions
 OptionalExceptions (bool e=true)
 Default constructor. More...
 
virtual ~OptionalExceptions ()
 Destroy object.
 
void enable_exceptions () const
 Enable exceptions from the object.
 
void disable_exceptions () const
 Disable exceptions from the object.
 
bool throw_exceptions () const
 Returns true if exceptions are enabled.
 

Static Public Member Functions

static bool is_socket (const char *path, std::string *error=0)
 Check that the given path names a Unix domain socket and that we have read-write permission for it. More...
 
- Static Public Member Functions inherited from mysqlpp::Connection
static bool thread_aware ()
 Returns true if both MySQL++ and database driver we're using were compiled with thread awareness.
 
static void thread_end ()
 Tells the underlying database driver that this thread is done using the library.
 
static bool thread_start ()
 Tells the underlying database driver that the current thread is now using its services. More...
 

Additional Inherited Members

- Protected Member Functions inherited from mysqlpp::Connection
void build_error_message (const char *core)
 Build an error message in the standard form used whenever one of the methods can't succeed because we're not connected to the database server.
 
void copy (const Connection &other)
 Establish a new connection as a copy of an existing one. More...
 
bool parse_ipc_method (const char *server, std::string &host, unsigned int &port, std::string &socket_name)
 Extract elements from the server parameter in formats suitable for passing to DBDriver::connect().
 
- Protected Member Functions inherited from mysqlpp::OptionalExceptions
void set_exceptions (bool e) const
 Sets the exception state to a particular value. More...
 
- Protected Attributes inherited from mysqlpp::Connection
std::string error_message_
 MySQL++ specific error, if any.
 

Detailed Description

Specialization of Connection for Unix domain sockets.

This class just simplifies the connection creation interface of Connection. It does not add new functionality.

Constructor & Destructor Documentation

◆ UnixDomainSocketConnection() [1/2]

mysqlpp::UnixDomainSocketConnection::UnixDomainSocketConnection ( const char *  path,
const char *  db = 0,
const char *  user = 0,
const char *  password = 0 
)
inline

Create object and connect to database server over Unix domain sockets in one step.

Parameters
pathfilesystem path to socket
dbname of database to use
useruser name to log in under, or 0 to use the user name the program is running under
passwordpassword to use when logging in

BEWARE: These parameters are not in the same order as those in the corresponding constructor for Connection. This is a feature, not a bug. :)

References connect().

◆ UnixDomainSocketConnection() [2/2]

mysqlpp::UnixDomainSocketConnection::UnixDomainSocketConnection ( const UnixDomainSocketConnection other)
inline

Establish a new connection using the same parameters as an existing connection.

Parameters
otherpre-existing connection to clone

Member Function Documentation

◆ connect()

bool mysqlpp::UnixDomainSocketConnection::connect ( const char *  path,
const char *  db = 0,
const char *  user = 0,
const char *  password = 0 
)

Connect to database after object is created.

It's better to use the connect-on-create constructor if you can. See its documentation for the meaning of these parameters.

If you call this method on an object that is already connected to a database server, the previous connection is dropped and a new connection is established.

Referenced by UnixDomainSocketConnection().

◆ is_socket()

bool mysqlpp::UnixDomainSocketConnection::is_socket ( const char *  path,
std::string *  error = 0 
)
static

Check that the given path names a Unix domain socket and that we have read-write permission for it.

Parameters
paththe filesystem path to the socket
erroron failure, reason is placed here; take default if you do not need a reason if it fails
Returns
false if address fails to pass sanity checks

Referenced by mysqlpp::Connection::parse_ipc_method().


The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SetCharsetDirOption.html000644 000765 000024 00000030760 14042362132 026476 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::SetCharsetDirOption Class Reference
MySQL++  3.3.0
mysqlpp::SetCharsetDirOption Class Reference

Give path to charset definition files. More...

#include <options.h>

Inheritance diagram for mysqlpp::SetCharsetDirOption:
Collaboration diagram for mysqlpp::SetCharsetDirOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::DataOption< T >
typedef T ArgType
 Alias for template param.
 
- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 
- Protected Member Functions inherited from mysqlpp::DataOption< T >
 DataOption (const T &arg)
 Construct object.
 
- Protected Attributes inherited from mysqlpp::DataOption< T >
arg_
 The argument value.
 

Detailed Description

Give path to charset definition files.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ConnectionPool-members.html000644 000765 000024 00000017733 14042362132 027167 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::ConnectionPool Member List

This is the complete list of members for mysqlpp::ConnectionPool, including all inherited members.

clear(bool all=true)mysqlpp::ConnectionPoolprotected
ConnectionPool()mysqlpp::ConnectionPoolinline
create()=0mysqlpp::ConnectionPoolprotectedpure virtual
destroy(Connection *)=0mysqlpp::ConnectionPoolprotectedpure virtual
empty() constmysqlpp::ConnectionPoolinline
exchange(const Connection *pc)mysqlpp::ConnectionPoolvirtual
grab()mysqlpp::ConnectionPoolvirtual
max_idle_time()=0mysqlpp::ConnectionPoolprotectedpure virtual
release(const Connection *pc)mysqlpp::ConnectionPoolvirtual
remove(const Connection *pc)mysqlpp::ConnectionPool
safe_grab()mysqlpp::ConnectionPoolvirtual
shrink()mysqlpp::ConnectionPoolinline
size() constmysqlpp::ConnectionPoolinlineprotected
~ConnectionPool()mysqlpp::ConnectionPoolinlinevirtual
mysql++-3.3.0/doc/html/refman/structmysqlpp_1_1equal__list__b-members.html000644 000765 000024 00000013320 14042362132 027402 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::equal_list_b< Seq1, Seq2, Manip > Member List
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ReadDefaultGroupOption.html000644 000765 000024 00000030744 14042362132 027171 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::ReadDefaultGroupOption Class Reference
MySQL++  3.3.0
mysqlpp::ReadDefaultGroupOption Class Reference

Override use of my.cnf. More...

#include <options.h>

Inheritance diagram for mysqlpp::ReadDefaultGroupOption:
Collaboration diagram for mysqlpp::ReadDefaultGroupOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::DataOption< T >
typedef T ArgType
 Alias for template param.
 
- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 
- Protected Member Functions inherited from mysqlpp::DataOption< T >
 DataOption (const T &arg)
 Construct object.
 
- Protected Attributes inherited from mysqlpp::DataOption< T >
arg_
 The argument value.
 

Detailed Description

Override use of my.cnf.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1FoundRowsOption-members.html000644 000765 000024 00000015332 14042362132 027346 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::FoundRowsOption Member List

This is the complete list of members for mysqlpp::FoundRowsOption, including all inherited members.

arg_mysqlpp::DataOption< T >protected
ArgType typedefmysqlpp::DataOption< T >
DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Transaction.html000644 000765 000024 00000054230 14042362132 025064 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::Transaction Class Reference
MySQL++  3.3.0
mysqlpp::Transaction Class Reference

Helper object for creating exception-safe SQL transactions. More...

#include <transaction.h>

Public Types

enum  IsolationLevel { read_uncommitted , read_committed , repeatable_read , serializable }
 Transaction isolation levels defined in SQL. More...
 
enum  IsolationScope { this_transaction , session , global }
 Isolation level scopes defined in SQL. More...
 

Public Member Functions

 Transaction (Connection &conn, bool consistent=false)
 Simple constructor. More...
 
 Transaction (Connection &conn, IsolationLevel level, IsolationScope scope=this_transaction, bool consistent=false)
 Constructor allowing custom transaction isolation level and scope. More...
 
 ~Transaction ()
 Destructor. More...
 
void commit ()
 Commits the transaction. More...
 
void rollback ()
 Rolls back the transaction. More...
 

Detailed Description

Helper object for creating exception-safe SQL transactions.

Member Enumeration Documentation

◆ IsolationLevel

Transaction isolation levels defined in SQL.

These values can be passed to one of the Transaction constructors to change the way the database engine protects transactions from other DB updates. These values are in order of increasing isolation, but decreasing performance.

Enumerator
read_uncommitted 

allow "dirty reads" from other transactions

read_committed 

only read rows committed by other transactions

repeatable_read 

other transactions do not affect repeated reads in this transaction

serializable 

this transaction prevents writes to any rows it accesses while it runs

◆ IsolationScope

Isolation level scopes defined in SQL.

These values are only used with one of the Transaction constructors, to select which transaction(s) our change to

Enumerator
this_transaction 

change level for this transaction only

session 

change level for all transactions in this session

global 

change level for all transactions on the DB server

Constructor & Destructor Documentation

◆ Transaction() [1/2]

Transaction::Transaction ( Connection conn,
bool  consistent = false 
)

Simple constructor.

Parameters
connThe connection we use to manage the transaction set
consistentWhether to use "consistent snapshots" during the transaction. See the documentation for "START TRANSACTION" in the MySQL manual for more on this.

References mysqlpp::Query::execute(), and mysqlpp::Connection::query().

◆ Transaction() [2/2]

Transaction::Transaction ( Connection conn,
IsolationLevel  level,
IsolationScope  scope = this_transaction,
bool  consistent = false 
)

Constructor allowing custom transaction isolation level and scope.

Parameters
connThe connection we use to manage the transaction set
levelIsolation level to use for this transaction
scopeSelects the scope of the isolation level change
consistentWhether to use "consistent snapshots" during the transaction. See the documentation for "START TRANSACTION" in the MySQL manual for more on this.

References mysqlpp::Query::execute(), global, mysqlpp::Connection::query(), read_committed, read_uncommitted, repeatable_read, serializable, and session.

◆ ~Transaction()

Transaction::~Transaction ( )

Destructor.

If the transaction has not been committed or rolled back by the time the destructor is called, it is rolled back. This is the right thing because one way this can happen is if the object is being destroyed as the stack is unwound to handle an exception. In that instance, you certainly want to roll back the transaction.

References rollback().

Member Function Documentation

◆ commit()

void Transaction::commit ( )

Commits the transaction.

This commits all updates to the database using the connection we were created with since this object was created. This is a no-op if the table isn't stored using a transaction-aware storage engine. See CREATE TABLE in the MySQL manual for details.

References mysqlpp::Query::execute(), and mysqlpp::Connection::query().

◆ rollback()

void Transaction::rollback ( )

Rolls back the transaction.

This abandons all SQL statements made on the connection since this object was created. This only works on tables stored using a transaction-aware storage engine. See CREATE TABLE in the MySQL manual for details.

References mysqlpp::Query::execute(), and mysqlpp::Connection::query().

Referenced by ~Transaction().


The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SQLQueryParms__coll__graph.png000644 000765 000024 00000013763 14042362133 027606 0ustar00tangentstaff000000 000000 ‰PNG  IHDRÙpÏBbKGDÿÿÿ ½§“¨IDATxœíyXGúÇk†aDFåP ¢ñØ€¢IÈFy@ÐucðÖþøãéÓ§ûùù ''§¨¨(üÒÓ§O322\\\>üðÃÞÞÞwß}7,, ¿zúôé_ý•؆ar¹\.—ß»w/99YþFäW_}uúôéÈÈÈÁ #í£žÉ? $ÐÞÞ~÷î]8ärykk+Ñbbb’››K´ôööBwíÚ8”6Uéêê’ËåJ~ÕøÅ0ìùóç}}}JM‰Åb±X<§\.7&&Fqfccƒ;::®^½Z*•*®&&& !„t:=##ƒ´Í½{÷ºººþ®ëþþ~¡P¨dTMB__‡Ã ÔÕÕíééQ*Ošö—/_b¦Þjªº†$“ꩨ¨¨¨¨ Z†£Å°°°éÓ§s8œ©S§âÝ0oÞ< …¢­­}éÒ%aFF†‰‰‰–––££ãªU«ð¤?~|ùòåx Šã•+W~ôÑG¸Q&“™šš&''CËÊÊììì˜L¦ÁgŸ}†ç1==ÝÐÐPOOÏÔÔ4""BÕovv6—Ë566f0{öì‘ÉdÍÍÍÚÚÚß~û­¡¡áwß}G¼‹®®®³gÏnÞ¼™hÄ0ŒÍfúé§ÄbEEEÂÒÒR@UU•R6–.]ºiÓ&8d-úøølÙ²?–J¥&&&3gÎÜ¿?—Ë¥Ñhë֭ß%Ò$@ãââ,,,$‰ÁåË—^HÓž››kcc3yòd.—»oß>áÇUÝ)eRÕõ`™Ü´iSTT”@ ½q5Œ‚Ÿ>}:iÒ$@000pôèQ'''Ü®xªúúú˜Læ‘#GÁ•+WФà"ÇÄĘ˜˜à_^^žX,îééáñxÁÁÁ½½½õõõÑÑÑ L&3>>¯N¡P~ýõW¢ß¦¦&&“™••!lnn¶°°øê«¯šššÎÎι¹¹Š§9??Æ ,kÅŠéééJ7X°`A```ff¦bˆ½té’ŽŽŽêè²gÏ< CÔbRR’¡¡áÀÀ„ðÖ­['//°{÷îþþ~<òððpÒ$à-¸»»CýýýÝÝÝqã`i_¸paBB.&6›]VVVTT¤êŽ˜IRפ™„¦¤¤,[¶ŒÅbmÚ´ ˜†È(h±¶¶–Á`œ8q¢¥¥Ã0‰D‚Ûw’Íãñåß|óM5ïh¡PÈd2óóó!„[¶lÙ±c„0..nòäÉ]]]"‘H$þœèËÜÜ<55?Æ›zçw¿ùæ/// …BO¿H$²¶¶îìì Ù½{·§§§¥¥e{{»D"ÑÑÑ!V©©©±²²RsJèèèøøø¤¤¤¸»»§§§ã3N}}}###¼€©©éË—/I“¸zõ*„péÒ¥ Ã0 »~ýz`` iÚ©Tjffæ×_M¥RçÍ›G£Ñð«ªîˆæZ‘IUÌÍÍCBB‚ƒƒ“““·mÛ–””TRR2ôœàüáutkk«‹‹Ë£GÚÛÛ×­[·cDZXL,Àf³Ÿ£233KJJ‚–””P(”ääd ÃîÞ½K¥Rñwôƒ®_¿Ž7B<–Éd<oöìÙÇÇ-Ïž=ÓÑщÅ0¬¾¾~Ñ¢E‡.//§R©øK0--ÍÂÂ_Ï*ü–––R©Ô7n@ù|þŒ3bbbp½vuu)âùòedd¤Ç zòä ñ»y<ÞÎ;ñùœL&;tè›ÍÆïñàÁƒ'66V"‘ðù|'''&“ùþûïÿöŠ¡ÓÏ;÷”ÞTYGËårSSÓÙ³gã‹$ü¥ !¬©©±°°8qâi èt:ñ XVVøñÇIÓž––fllŒÏ£ÒÒÒqqq¤îˆ™$u­šIœÊÊÊýû÷Ï™3çÔ©S¸0†Â(Ìe2™³³3ƒÁX¼x±••Õ… pû¾}û˜Lf\\„ðÈ‘#T*•ÇãYZZ~ðÁ¸<øÆoà…‰ÇÂÀÀ@FÜ$ºví‹Å233ÓÒÒòóóëï>}ZKKËØØØÖÖV13#ú=qâN·²²âp8Û·o—J¥ƒeBX\\àææ¦dðà­­­¶¶ö¬Y³&Mšäêꪘ’cÁd2i4¾buvv611¹wï„NWžðTWWãU÷t‚‚‚555¢¢"‹åáá1}út&“ù׿þU&“‘&! àÏþ³RÀø¢˜4íR©ÔÕÕ•Ëåš››¯_¿~Û¶m</11‘Ô1“ª®ˤ³³ó–-[>|H&uŒÎž†aOž<)//WZTvuu)öÞ:::~þùgü&‡‡H$*--UÚMìëë«««S*IôÛÕÕõèÑ£—/_Ñ q³PL&ûå—_Š‹‹U÷)ñ«•••÷ïßǧÿYYY©©©Ct§àÌ™3Ë–-Ã‹ŠŠôõõ!„ Äb¤IPiÚëêêjnn.,,Ì1“CtMšÀ¡0:ZDŒ„®®®âââY³fáÓ HÐâØ0ÆîCU‹èÛˆ±¦¡¡aÏž=}ôѪU«p ›Í¶··³ÆØÝС@ÂÿÕïè訪ªÂWvÄ+ÿ®›øŸиˆÐšÒ"BS@Z úýX£ÉÏ£;::Æ>Ž Íµk¥ë×/¦RÉÆ ¥¿¿_[[›h!ÑbUUÕXÅó:€aðâÅ"]]‰ÍäñŽe‚Áår‰§ÿ¥Å)S¦L™2elã™ð?íê’Ô×ÃíÛÝÆ;–‰ š/Ž”ôôðe2l¼c™Ø -Ž©T~ãF9@(”ÔŒw8¤Åq÷ž~NMO/ïp&6H‹#"5µŒN§d2ùÍ›?‹ÅãÑiqøôõ ܾ])“ýö}x¿,/mA ¤Åá“›ûï™â”B¡¤¦>Çx&:H‹Ã'5õ1q[.ÇîÜy"ôcH¤Åa"ôü¢´!ÈÍý÷x…4ÑAZ&YY?’Ú““Ñkz˜ -“””ǦüI†aþÚÞ.—&:H‹Ã¡½]øøñsÒÏsh4JVÖOcÒkÒâpHO/ì31™ KN.Ûp^^ùï}-)+{Îãq§}}ÚÚtí·[(··ws© ‡‚¾9S§î;~ÓêÕóÇ;‰ zG#4¤E„¦€´ˆÐšÒ"BS@ZDh H‹Mi¡) -"4¤E„¦€´ˆÐšÒ"BS@ZDh H‹Mi¡) -"4¤E„¦€´ˆÐšÒ"BS@ZDh H‹Mi¡) -"4¤E„¦€´ˆÐšÒ"BS@ZDh H‹Mi¡) -"48,Ç;p BGgÆï(4Ÿá‰jD¿¯;$$d´nñzœœ<ìº#Ò¢››ÛHª#^?îÝ»7ìºh¾ˆÐšÒ"BS@ZDh øï^õöö^ºtiëÖ­ÚÚÚ£Òà;wòóóE"Ñ‚ –,Ybmm­¸ÔÝÝ}ãÆêêj‘Hdeeåää´hÑ"üRTT”‡‡‡………RkjªŒ"±±±Báo “Åb¹¸¸Ìš5kÔ½Œ x\‹Å©©©R©tTZ‹‹‹;{ö¬±±ñ»ï¾+‰vïÞ™™‰_jnnÞµkWQQÑܹsß~ûm±XtåÊüjZZZKK‹Rk꫌"¹¹¹Ïž=£Ñh4­­­mÿþý_~ùå¨{Æb\”Ëå2™ ½¤R©\.×ÑÑQ_BØÕÕehh¨dìëëc±XƒÕ’Édººº¿kT%55uÛ¶mø)‹ÅJMMõôô>|xÆŒááá4 ðÞ{ï988„……-\¸pîܹ¤­ £ ŽH$b±X …h0 Ò*ÎÎÎkÖ¬Á³³³Ïž=»sçNÅývww³Ùl5 ªïÒŽxE¼B-¶´´øùù$$$H$ooo*•š’’"•J===÷ìÙª§§÷÷¿ÿ —Ë×®]ûñÇ¿õÖ[W¯^ÍÉɉDL&3$$ï¼âââcÇŽI$kkk.—Ëãñ¼¼¼pGOž<ùâ‹/œÿõ¯uww»ºº~òÉ'Ïž=S5jkk'$$>¾®®.!!áØ±céééB¡ÐÍÍ­  @&“ÊËË%‰££cKKKJJÊ·ß~›™™¹fÍšèèhŸÏ Û´iSNNÎ|PPP€a˜Â‹\.onnHNNNJJª®®NLL$5¬¬¬ñŠŠc …âëë{ýúõmÛ¶EGGkiiÍ™3PWWÇ`0¦OŸ®tk666DíùÝ*Äy…L&“Ëåb±øÀo½õVfffLLL^^^NN„P*•Þ¼yóСC{÷îUÍÞ‚P(lmmmmmýᇢ££gÍšefføæ›oüýý322.^¼˜““S[[Klpþüùê{‡´#^)¯|¾èç积¯¿téR€§§§ÁâÅ‹étzSS““““\.///äç绺º2 ¡X,ÎÎÎ …ùË_"##ßÿ½žžž··7Nwtt´³³#uD§Ó'OžìééùàÁƒÁŒööök׮ůýüübcc]\\ª««CBB|}}oܸèííU}Ç †\.'½åaT¹ÿ¾T*õõõ…r8œåË—à—¶nÝjooïææ¦š+¼@|||@@@@@@hh¨X, @:äææ& µ´´ˆ âÕÕôiG¼R^ù|Ÿjào+SSS…].—3 WW×üüü… â?Ýž6mÚ’““£££ÍÍÍýýýÿô§?µµµõÇãñ”¼°X,}}}ü˜ËåâKKR#)R©T,›ššnܸqãÆ===—.]:uꔳ³3ÇëììPš®544L›6´µ?TêZZZÄbq@@€Â®X˜[ZZHs…³cÇÅ|Q…B¹ÿ~zz:•Jµ²²¢RÿÐÁÄQÓ;¤Až¾Qâ•‹Ä,¨²råÊ¢¢¢²²2mmíùóçø|þܹsÏ;—––¶lÙ²“'Oö÷÷ëëë E­ööv¥vúúúúûûñ㪪ª©S§f$¥¢¢bÍš5}}}ø)›ÍþðÃ!„/^¼˜={6ƒÁ¸uë~I ÄÄÄ<þ¼¤¤dÕªU¤­ ¥ŠbޝÁ'MšÄáp“’’’’’.\¸°wïÞßÍ•jkkcbbŽ9ÿù矶XTÓ;¤¡Þéç=ùóç3Œ¨¨¨+Và/µ_~ùåÿøGOO££#þ§Ö-ZTSSS[[ ¨©©©¬¬TjB˜••hjj*..¶··ÌXUUuçμ–âØÆÆF__ÿÂ… ø(…aXFF†®®®………Ïùóçoß¾-•Ji4ZyyùŽ;æÍ›‡·Ãçó[èéé©©Âãñh4ÚÝ»w÷îÝëèè,^¼¸§§'//BØÑÑñÉ'Ÿ|ÿý÷¿›+5´µµ±Ùl|âXXXØÚÚúGÿh=iG¼RÆy¯›B¡¸»»'$$|þùç¸eÉ’%ׯ_÷öö¶²²êééÙ²e‹¶¶¶ÝÆwíÚellŒa˜R;:::?NNN …...¾¾¾UUUªF@qqqQQ‘»»;ñXWW7<<üرcï½÷ž±±±P(´´´Ÿohhø»*‘Á:B ¡¡¡\.wx_1Žç¸(‰êëëÓÒÒvîÜI´S(Õ ›ÍV/©)S¦ ÑH •J555%NᕮΘ1CqН=·ÁÁªîØëèè¨ù8ƒåJ=&&&ŠãÉ“'½"Î`ñŠO-vttœ9sÆËËËÉÉéUœ6mQ”ººº¶¶¶JeH—açj1þïhÄëÄHÞÑøÛÄkÒ"BS@ZDh H‹MaDëèÐÐÐQ ñšPUUåêê:¼ºÃÔ¢™™™Ïðê"^c\]]‡²óJÊ0÷tˆQÍšÒ"BS@ZDh H‹MáÿåzõîŒM»IEND®B`‚mysql++-3.3.0/doc/html/refman/sql__buffer_8h_source.html000644 000765 000024 00000075731 14042362132 023742 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: sql_buffer.h Source File
MySQL++  3.3.0
sql_buffer.h
Go to the documentation of this file.
1 
4 /***********************************************************************
5  Copyright (c) 2007-2008 by Educational Technology Resources, Inc. and
6  (c) 2007 by Jonathan Wakely. Others may also hold copyrights on
7  code in this file. See the CREDITS.txt file in the top directory
8  of the distribution for details.
9 
10  This file is part of MySQL++.
11 
12  MySQL++ is free software; you can redistribute it and/or modify it
13  under the terms of the GNU Lesser General Public License as published
14  by the Free Software Foundation; either version 2.1 of the License, or
15  (at your option) any later version.
16 
17  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
18  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
20  License for more details.
21 
22  You should have received a copy of the GNU Lesser General Public
23  License along with MySQL++; if not, write to the Free Software
24  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
25  USA
26 ***********************************************************************/
27 
28 #if !defined(MYSQLPP_SQL_BUFFER_H)
29 #define MYSQLPP_SQL_BUFFER_H
30 
31 #include "refcounted.h"
32 #include "type_info.h"
33 
34 #include <string>
35 
36 namespace mysqlpp {
37 
40 
41 class SQLBuffer
42 {
43 public:
45  typedef size_t size_type;
46 
55  bool is_null) : data_(), length_(), type_(type),
56  is_null_(is_null)
57  { replace_buffer(data, length); }
58 
60  SQLBuffer(const std::string& s, mysql_type_info type, bool is_null) :
61  data_(), length_(), type_(type), is_null_(is_null)
62  {
63  replace_buffer(s.data(), static_cast<size_type>(s.length()));
64  }
65 
67  ~SQLBuffer() { delete[] data_; }
68 
70  SQLBuffer& assign(const char* data, size_type length,
72  bool is_null = false);
73 
75  SQLBuffer& assign(const std::string& s,
77  bool is_null = false);
78 
80  const char* data() const { return data_; }
81 
84  bool escape_q() const { return type_.escape_q(); }
85 
92  size_type length() const { return length_; }
93 
95  bool is_string() { return type_ == mysql_type_info::string_type; }
96 
103  bool is_null() const { return is_null_; }
104 
107  bool quote_q() const;
108 
110  void set_null() { is_null_ = true; }
111 
113  const mysql_type_info& type() const { return type_; }
114 
115 private:
116  SQLBuffer(const SQLBuffer&);
117  SQLBuffer& operator=(const SQLBuffer&);
118 
120  void init(const char* pd, size_type len, mysql_type_info type,
121  bool is_null);
123  void replace_buffer(const char* pd, size_type length);
124 
125  const char* data_;
126  size_type length_;
127  mysql_type_info type_;
128  bool is_null_;
129 };
130 
131 
137 
138 } // end namespace mysqlpp
139 
140 #endif // !defined(MYSQLPP_SQL_BUFFER_H)
141 
Holds SQL data in string form plus type information for use in converting the string to compatible C+...
Definition: sql_buffer.h:42
void set_null()
Sets the internal SQL null flag.
Definition: sql_buffer.h:110
~SQLBuffer()
Destructor.
Definition: sql_buffer.h:67
SQLBuffer(const char *data, size_type length, mysql_type_info type, bool is_null)
Initialize object as a copy of a raw data buffer.
Definition: sql_buffer.h:54
size_type length() const
Return number of bytes in data buffer.
Definition: sql_buffer.h:92
size_t size_type
Type of length values.
Definition: sql_buffer.h:45
bool is_null() const
Return true if buffer's contents represent a SQL null.
Definition: sql_buffer.h:103
bool quote_q() const
Returns true if we were initialized with a data type that must be quoted when used in a SQL query.
Definition: sql_buffer.cpp:56
bool is_string()
Returns true if type of buffer's contents is string.
Definition: sql_buffer.h:95
bool escape_q() const
Returns true if we were initialized with a data type that must be escaped when used in a SQL query.
Definition: sql_buffer.h:84
const char * data() const
Return pointer to raw data buffer.
Definition: sql_buffer.h:80
SQLBuffer & assign(const char *data, size_type length, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)
Replace contents of buffer with copy of given C string.
Definition: sql_buffer.cpp:37
const mysql_type_info & type() const
Return the SQL type of the data held in the buffer.
Definition: sql_buffer.h:113
SQLBuffer(const std::string &s, mysql_type_info type, bool is_null)
Initialize object as a copy of a C++ string object.
Definition: sql_buffer.h:60
SQL field type information.
Definition: type_info.h:159
bool escape_q() const
Returns true if the SQL type is of a type that needs to be escaped.
Definition: type_info.cpp:287
static const enum_field_types string_type
The internal constant we use for our string type.
Definition: type_info.h:280
Declares the RefCountedPointer template.
Declares classes that provide an interface between the SQL and C++ type systems.
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1WindowsNamedPipeConnection.html000644 000765 000024 00000146150 14042362132 030037 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::WindowsNamedPipeConnection Class Reference
MySQL++  3.3.0
mysqlpp::WindowsNamedPipeConnection Class Reference

Specialization of Connection for Windows named pipes. More...

#include <wnp_connection.h>

Inheritance diagram for mysqlpp::WindowsNamedPipeConnection:
Collaboration diagram for mysqlpp::WindowsNamedPipeConnection:

Public Member Functions

 WindowsNamedPipeConnection ()
 Create object without connecting it to the MySQL server.
 
 WindowsNamedPipeConnection (const char *db, const char *user=0, const char *password=0)
 Create object and connect to database server over Windows named pipes in one step. More...
 
 WindowsNamedPipeConnection (const WindowsNamedPipeConnection &other)
 Establish a new connection using the same parameters as an existing connection. More...
 
 ~WindowsNamedPipeConnection ()
 Destroy object.
 
bool connect (const char *db=0, const char *user=0, const char *password=0)
 Connect to database after object is created. More...
 
- Public Member Functions inherited from mysqlpp::Connection
 Connection (bool te=true)
 Create object without connecting to the database server. More...
 
 Connection (const char *db, const char *server=0, const char *user=0, const char *password=0, unsigned int port=0)
 Create object and connect to database server in one step. More...
 
 Connection (const Connection &other)
 Establish a new connection using the same parameters as an existing connection. More...
 
virtual ~Connection ()
 Destroy object.
 
std::string client_version () const
 Get version of library underpinning the current database driver.
 
bool connected () const
 Returns true if connection was established successfully. More...
 
ulonglong count_rows (const std::string &table)
 Returns the number of rows in a table. More...
 
bool create_db (const std::string &db)
 Ask the database server to create a database. More...
 
void disconnect ()
 Drop the connection to the database server.
 
DBDriverdriver ()
 Returns a reference to the current database driver.
 
bool drop_db (const std::string &db)
 Asks the database server to drop (destroy) a database. More...
 
int errnum ()
 Return last error number associated with this connection.
 
const char * error () const
 Return error message for last error associated with this connection. More...
 
std::string ipc_info () const
 Get information about the IPC connection to the database server. More...
 
bool kill (unsigned long tid) const
 Kill a database server thread. More...
 
 operator private_bool_type () const
 Test whether any error has occurred within the object. More...
 
Connectionoperator= (const Connection &rhs)
 Copy an existing Connection object's state into this object.
 
bool ping ()
 "Pings" the database server More...
 
int protocol_version () const
 Returns version number of the protocol the database driver uses to communicate with the server.
 
Query query (const char *qstr=0)
 Return a new query object. More...
 
Query query (const std::string &qstr)
 Return a new query object. More...
 
bool select_db (const std::string &db)
 Change to a different database managed by the database server we are connected to. More...
 
std::string server_version () const
 Get the database server's version string.
 
bool set_option (Option *o)
 Sets a connection option. More...
 
bool shutdown ()
 Ask database server to shut down.
 
std::string server_status () const
 Returns information about database server's status.
 
unsigned long thread_id ()
 Returns the database server's thread ID for this connection. More...
 
- Public Member Functions inherited from mysqlpp::OptionalExceptions
 OptionalExceptions (bool e=true)
 Default constructor. More...
 
virtual ~OptionalExceptions ()
 Destroy object.
 
void enable_exceptions () const
 Enable exceptions from the object.
 
void disable_exceptions () const
 Disable exceptions from the object.
 
bool throw_exceptions () const
 Returns true if exceptions are enabled.
 

Static Public Member Functions

static bool is_wnp (const char *server)
 Check that given string denotes a Windows named pipe connection to MySQL. More...
 
- Static Public Member Functions inherited from mysqlpp::Connection
static bool thread_aware ()
 Returns true if both MySQL++ and database driver we're using were compiled with thread awareness.
 
static void thread_end ()
 Tells the underlying database driver that this thread is done using the library.
 
static bool thread_start ()
 Tells the underlying database driver that the current thread is now using its services. More...
 

Additional Inherited Members

- Protected Member Functions inherited from mysqlpp::Connection
void build_error_message (const char *core)
 Build an error message in the standard form used whenever one of the methods can't succeed because we're not connected to the database server.
 
void copy (const Connection &other)
 Establish a new connection as a copy of an existing one. More...
 
bool parse_ipc_method (const char *server, std::string &host, unsigned int &port, std::string &socket_name)
 Extract elements from the server parameter in formats suitable for passing to DBDriver::connect().
 
- Protected Member Functions inherited from mysqlpp::OptionalExceptions
void set_exceptions (bool e) const
 Sets the exception state to a particular value. More...
 
- Protected Attributes inherited from mysqlpp::Connection
std::string error_message_
 MySQL++ specific error, if any.
 

Detailed Description

Specialization of Connection for Windows named pipes.

This class just simplifies the connection creation interface of Connection. It does not add new functionality.

Constructor & Destructor Documentation

◆ WindowsNamedPipeConnection() [1/2]

mysqlpp::WindowsNamedPipeConnection::WindowsNamedPipeConnection ( const char *  db,
const char *  user = 0,
const char *  password = 0 
)
inline

Create object and connect to database server over Windows named pipes in one step.

Parameters
dbname of database to use
useruser name to log in under, or 0 to use the user name the program is running under
passwordpassword to use when logging in

◆ WindowsNamedPipeConnection() [2/2]

mysqlpp::WindowsNamedPipeConnection::WindowsNamedPipeConnection ( const WindowsNamedPipeConnection other)
inline

Establish a new connection using the same parameters as an existing connection.

Parameters
otherpre-existing connection to clone

Member Function Documentation

◆ connect()

bool mysqlpp::WindowsNamedPipeConnection::connect ( const char *  db = 0,
const char *  user = 0,
const char *  password = 0 
)

Connect to database after object is created.

It's better to use the connect-on-create constructor if you can. See its documentation for the meaning of these parameters.

If you call this method on an object that is already connected to a database server, the previous connection is dropped and a new connection is established.

◆ is_wnp()

bool mysqlpp::WindowsNamedPipeConnection::is_wnp ( const char *  server)
static

Check that given string denotes a Windows named pipe connection to MySQL.

Parameters
serverthe server address
Returns
false if server address does not denote a Windows named pipe connection, or we are not running on Windows

Referenced by mysqlpp::Connection::parse_ipc_method().


The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/tab_a.png000644 000765 000024 00000000216 14042362133 020345 0ustar00tangentstaff000000 000000 ‰PNG  IHDR$ÇÇ[UIDATxíK €0C'o¤(Šˆ[Žà%Üxÿ#Ù©­ç ùÁöó¦W¦e# 3t I 3+¼øEã~\D½9¯Ûàè’wM·¿öÿ}Yõ_êA4Yžã}IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1WriteTimeoutOption-members.html000644 000765 000024 00000015351 14042362132 030062 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::WriteTimeoutOption Member List

This is the complete list of members for mysqlpp::WriteTimeoutOption, including all inherited members.

arg_mysqlpp::DataOption< T >protected
ArgType typedefmysqlpp::DataOption< T >
DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Exception__inherit__graph.png000644 000765 000024 00000163163 14042362133 027565 0ustar00tangentstaff000000 000000 ‰PNG  IHDR•ü 2©sRGB®Îé@IDATxì]˜”U>HHˆ€Ò% R"]"ˆ HH§¢tw#Ф4HwwwHwwwçüç=üß23;³;3;µ»ç>Ïî|sãÜ{ßo÷ž{âžÁĉ4)Š€" (n@à=7ÐPŠ€" (Š€  LEÿE@P܆€2·A©„E@P")Š€" ØCàêÕ«”(Q"{ÅšÆøàƒèáÇNÍR™ŠSpieE |!¦òùçŸÓÿý¾&®³¥çÏŸS¬X±œFBÕ_NC¦ E@Pì! LÅ2š¯(Š€"à4ÊTœ†L(Š€" ØC@m*öÑ|E@ð .]ºD÷îÝ£L™2…x<ׯ_·°åΛâÆë0Ý-[¶PÆŒéÃ?›ÃŠ+èܹsT¤HÊœ9³Ãtùä*UªݼySòÿúë/B›¢E‹ 3AfÇŽåû‚ äyäȑԴiS:pà½|ù’~ùå‘€ 5lܸQèäÏŸŸZ¶lI &”¶¾ ., Àè¾ýö[Bä,0¯¤I“RΜ9iûöíÒshÕª¥J•Š®]»F+V¤øñãËXïܹ#ã…´‚4bÄiŸ8qb6l˜ä¡oŒíÓ§Oï1ôžô¦¿E@p¸ž®]»V{,ô:t ²eËÊÂ6`ÀÊ“'añÅÂw÷î]š?>eÉ’EôE‹Ñ¿ÿþKXà‘Z´hA5’<0˜[·nŒ ÁÂ… ¥ýaá¼qã:uŠÀضmÛF jp¾ ‹¨qÞæÈ‘#T£F ªP¡5lØPêüþûïÂ< ‰`á5j”,Þݺu“…¹fÍš"¥ î¾}û(_¾|x H éeõêÕ´k×.Z¿~=U©R%€±8q‚ž}DšB{0.Œ/GŽ2¿€Á»ñAm*nSI)á˜1cÒÏ?ÿ,‹|ôèÑEÅ„;ÔD°Y@5„Eô½÷Þ£B… É¢&MYÔ«U«F;wî”6ì`*¨ÆdÒ¦MKß}÷dCª€ÄƒôÓO? ÓÀNö $0ü ÕªUK>±(c¡ÒÁLê1$cwgƒN”(QÆxxYa1F$åaWÀB õÒÌ™3iÓ¦M’Ã:Vô[‡! Á»~HøÁ; û^``‡ª = ö ê+>Ÿ={&.ÏR0—~øA êBí5zôhù/Ð0æ&i ö$028.|úé§"ÅÀNeHmFH*øAŸ`ŠÿüóíÝ»WÚÃù¡páÂÂ(· ÌÊp¤Âÿ´ÌóÜòÌÜX“" (6ฉ™Í2g3ymâݼE36²›Øf`‘Ç ¡‰%ïÔMlk(cÉÄÄ ¼‰¥/Öù¬þ1±ñÙÄމ%œ€|WX 2±C€4eÇ36yfÉÊÄFö@$QŽ9°Ú-P«¡L˜‹«‰¥ «Æì6Ç8Yr £uE´5Çɺ<¸ïÌ,MÌ㫨\%·°f%¢(A!é"FŒT¦L‹jØ['Cïoo|5*áÇ:%I’Ä:Ëéïæö“8qâ´·§¾ÂnßÖÐRPH܃JÀ^mö’!Ú+÷T~°OWºŠ€"º@tbxV…4J1ÜYƒ[$­‘‚Š jªhÑ¢Iì,p+6ŒòF}ØWàqfí`”ë§kQŠñéLRIÅ´´®" ¸„€³ `'nžàeÍPPnxd™×Õgß! Þ_¾Ã^{VE Ì! ê¯0÷JuBŠ€ûÀ9 ã$:¨FŒƒ%ˆœôâÅeöz:徎”’_"û–³7?*SñËW©ƒRü ›7²ÛëZš>}Uª”›ã]}Ën®ª=÷¯·ä£Ñ¿ ÿx: EÀ/xñâ5¹ŽÏZ¬çó98nU>sòöt·_Xås”©øüèÿD`õê#Ôµë<Ž$œˆ¶áSáoC”øçhuTþ‚€2y:EÀO¸sç1ŸŸÎaInqûŠŸ*­ŸŒL‡Pï¯Ðð–tŒŠ€—X¾ü‡øèÏ!>r<©¶ÊP¼„{XêF%•°ô6u.Š€‹<{ö’Îâ{@ÎÒĉõ({ö·1µ\$§ÍÂ1*©„ã—¯SW€À•+÷8rðP½þßÒVŠþY„e*!‚O+¡mÛNÓ7ß â«€³sÄÛÊÅò”Ð=;½/Põ—/P×>?@`áÂ}|ú\:´ºÚNüà}„•!(S +oRç¡8À”)ÛèÏ?Wð½MùŽw·:AB«*6P¦bÍTÂ.C‡®¡ÿÝÆ76åðì…݉êÌ|‚€2ŸÀ®*¾A W¯Eì*|”ïŠo¦'ã}ó Â|¯ÊTÂü+Ö *$÷­·i3“޽Ê×ë6ápñoï(Qlw# LÅ݈*=EÀèÙs!:uƒfÏn¤^~ø~ÂÒ”©„¥·©sQ¬à+Ô©AƒI¬îÚÇaWjda+|ô«ûÐs*îÇT)*~n oÒd _Áû\Š_¼‘ð1•TÂÇ{ÖY†Cš7ŸF·n=¢I“~V %¾_MY™Š¯×~"£ü¥KwiÊ”úÊP<ˆ³’Œ€2•À˜hŽ"ªèÐa6½ÆòòêÚ‘=”©ØCFóP€NÉש3ŽFŒ¨I™2%#vmˆOŸ>å[)wqˆþ‚®0kuýúuúï¿ÿrrçÎ-6£€Œ`¶lÙB3f¤÷Þ{ðlž¢FJŸ~ú)=|øPꘗÏà¸kñ)a„F–|.^¼˜¾ýö[1ŽÇ‰‡Ò§O/ù8o´|ùr*Uª”E}ý¢‡ýõÍè¸`¸qãU©2’zôø>Ì߇råʪW¯^0ˆ8V FРAÚ±cmÞ¼™/(+G7v¬1×êÒ¥ ?~œNœ8A?þø#è\ðo©3gÎX0-k”úÖù•*U’¬fÍšQ¡B…èÞ½{òýåË—b4ýúµu¿ü®LÅ/_‹JçÏ_Q­Zã¨nÝôÃ9‚®ì…R,¤ÅŠ“:yòäÔ¯_?*^¼8%J”ˆ/ÊK¨råÊ#©Zµªì¾'NœH2d ´™4i’”oذҥKGÙ²e“6ãÆ h‡‡œ9sÒ¯¿þJŸ|ò U¨Pà†:µjÕ¢¬Y³òý0)9,Í"i3cÆ êÔ©“<·oßžfÍš%Ϩӽ{wêÝ»7GhB+W®”üK—.QéÒ¥…6$ƒ›7oJþ_ý%t‹-Ê×/_‘<üúðà LÂøA_hsá©3gÎúì³Ï(Mš44f̘€vxxñâ…0ʤI“ò{¬KæL#{öìÔ¶m[‹úøbk|Áav÷ïߘ A‘†nܸl$e*U‰*žE U«é¬f‰Ï;î"žíÈAêÏŸ?—Ýw‰%d±îС•-[–Õr#hÀ€”'O¾¿eݹs‡î޽˗ƒÍ§,Y²È‚ðï¿ÿÊîZ´hA5’<0kWæýû÷³3BÚ»w¯,àK—.¥k×® “š9s¦,ð;v”‘ƒ©A!A„ïHGŽ¡5jSjذ!Õ¯__òÿýwaD ž5j”ÐîÖ­ 6ŒjÖ¬)RŠTæ_·oߦŸ~ú)àÇïÅ‹éÕ«W"  5kÖPáÂ…E‚A{0#EŽ9€i!ÌÎH` ÀáôéÓ’•8qbÚ¶m›QL«W¯¦Úµkl:°±L˜0!  c‚tôË/¿.F­ñ¡,(ìQ¾páB¶¹e¢uëÖ Óœ6m²=’Þ±FW¢Š€"àNÖ­;Æ»Î4qb=¿ ¿’,Y2Š)’0 ,ÆXpÍTU0FC2Ás„D-•$š\¹rvøPk»v,®¶ÔNHP!=xð@ž<#ßP]I¡Õ/ô$,æ l-P9õìÙS ƃtõêUYô ±cÇ6)V¬XÔºuë€H_FÂ\¢D‰"ª'¨ŸªT©"Ò™QnNt0óT²dIaXPÑÉÖøPö þú‚4詤LÅSÈ*]EÀÍœ>}“š6ý—íux—þnass7#÷ý÷ß‹íö ÿüsúâ‹/„yÀ¾ññÇË.;GŽ¢ê‚ÁLê±´iÓÊÎÚ jÐã@,’Xä±`#  `0G}ØX:wî,åXPgÏž-ùëׯiÒvÿ°ûê4¨Ô *‚ †}H&ùóçU]Þ¼y¥_Ð6~„¸_˜$!8"@’€$ÛÚ–/_^+Ê`+±%•¥H‘ÂÂ`±Y½„~`3š>}º0¨Ô`³òTŠÀÜ10{ôToJWP\B V­±l7ø˜ºvµmcp‰¨ƒ`(Ç.ÞÚ`î`s‹jØÃ÷»ï¾ ȇͶˆ>ú( ïÑ£G²ƒ‡Ê`ä6<¾`œ‡çTDÏž=ƒÅê7WÔf°…@Útf€Å‹7ž£Esî*fHAPÑyØJçÏŸ—y*?[uÌóìÏ¼Ž½çS§Nl;ÁÍÁˆý…Og“êELë+^F`Ô¨õìeôˆÕ^u½Ü³{»ƒA u™2e,ÃÈn‚c X€ †bÞê³&HTF27¼[V4ê÷ F„{ Ò™3ÉÞø¡Õ—§“2O#¬ô ðßçÙ•u {$µb#xèÖVÃv]²3  ­wð"FŒhAÆ“†g‹ŽôK°(S "­ ø{÷ž°Ké?4hP^Œíït}3:ç{u–¡ H6Ö)^¼xÖY¢® ”©>A to}|™vªx¦M§²ñús6}Éñ°¦PŸ>åù G,Ouã]„×ïÝ{Ç˺"±ÆFŒ¨Á±ª,OË;EP+‡iôœJ˜~½:¹Ð†@ÇŽsèÑ£ç4dHUŸ¡õÿüs%ŸZßϧ‹q\¯Bì‰eJÄçƒÔø*©øÝ+Ñ…WÖ¯?N«Væ ïúù ‹‰7Ó¬à]9ùΑŽ|ªÜ¹¾·öë{”©øþèŽ=õ„Z¶œÆqžjðipÛA½T]«£ü’%ÍùxÈzcÜÚ‡ÿ  LÅÞ…Ž$#ЮÝ,]ò9}ùeàÓåÞ‚‡,á кuIŽ3–Ï[Ýj?a e*aì…êtBsçîá«i¯³gUuŸ RRãÆSØEø%GémÅY…þƒ–>R;|ﯨ/BÇܹó˜ï˜_À¡XªóÝ–¡G¼ ܃¿úêw™#ò6T†â ÐÃx*©„ñ¬Óóo:wžK•*åæ;AÞ^sëÍÑΞ½›~ûm!‡]ÿ‘KFov­}…a”©„á—«SóoÖ¬9" ÛËÛé÷ß—³d²‹/‡jÎÑ~ß…œ÷ö8´¿°‡€2•°÷NuF¡ÇŸó!³ÄŽòþûÞû7|ùò5{wÍ 3gnð}ñ-ù“¡-bhB@m*¡éméXà }ú,¡Â…ÓyÕÛ ù*UFòWÏùÄFÊPÂÌ_“MÄ{[$ÿš·ŽFð0Ž/]z€ï=oïµ1\½zŸ*Wþ›ŠM/·GÁ!½6í(Ü  L%ܼj¨? ðú5îWŸNýúU X±¢zeHçÏߦŠGHÜ®:uò{¥Oí$ü" ê¯ðûîuæ>@`̘ rJýë¯3y¥÷“'¯S¹rCùîö¯HŠW ÷¨¤îÿo!€8µ+o¤.Qµj£¨W¯ä´¾7úÔ>e*ú7 x ž=Ry)EŠÀ×áº{ÇŽ]†we½9ÒÝè*½ PõWPèh™"à&vì8CøiÚô+7Q´OæøñklÀQ†++C±“–x•T<¬’U Þ¼1Q‡³9Ë÷-šg/·Ú·ïU¯>š/Õ*O%Jøæ”üÝ»wÙ]YTïß_>S¥JE§OŸöøp”©xbí ¼#0aÂf¹Åñ›o²xŠƒ/±zmŒ¨,R$Gû Šø;wÈ[ XPãвwܸqƒ2eòŽsˆ2•w¸ë“"àvîÞ}Bƒ¯¢ šº¶9AØPªV%*/_2ó1ésøD@m*áó½ë¬½„À A+¨lÙl”2¥çŒó¸X«J•Q4`@%Ÿ©¼¼§v PI%¼$bèDàܹ[„»R6nìà± \¿þ€%”‘Ô¹ó·TªTfõ£„GPIÅQ¤´ž"à$½{/¦_-â±[>ãÐ+#ùPc*_>§“£ ÛÕŸ>}ÊÌ|£[&yýúu¾¹,àçöíÛNÑݲe _}@gûöí·5Ú9ÜÀO**Sñ“¡Ã[ìÙsžÃÚŸ§Ÿ.䑉½xñšjÖC… }&áW<ÒI(&zåʪW¯ž[f€Å½Aƒì¾ƒ6oÞÌ ÊñM™¦Ý¥K:~ü¸´mÕª•Óínà'•©øÉ‹Ða„-ºu›G;~Kžko2™¨aÃI”0á‡Ô½ûw¡¸3gÎP±bÅdNž<9ÇBëÇgjŠóÍ“‰Ø{m(-Y²„¥°Ês«Zµ*-_¾œ&NœH2d ´™4i’”oذo®LGÙ²e“6ãÆ h·ÿ~úþûïÙÖT‚$HÀxu—2Ô©U«eÍš•í])iÑ¢E’?cÆ êÔ©“<·oߞ%Ϩƒ¶½{÷¦&MšÐÊ•+%ÿÒ¥KTºtiúä“OXýXŠnÞ¼)ùýõ—Ð-Z´(ÁY§üùóSË–-ù&ä3EEE’A[íîß¿O?þø£ŒÿÛo¿%xr;–mue  ;æ÷úõkën|ó¥IP܈À¢EûL%JüîFŠ–¤:vœcêß©éÕ«×–~òíÔ©S&v)r4GŽ1ñŠg1b„iüøñòøÀú›6m2¥M›VúøüóÏMC† 1:tÈÄŒÃÄ Jê¤NÚÄ’…‰#2›æÏŸo:|ø°)~üø&VC™zõêeúøãMÇŽ31ã0±»­Ðb•™‰™•<3“ösæÌ‘ºÕ«W7•/_Þ/^<ÓÀ¥N³fÍL52ñÙS:uL¿ýö›éêÕ«¦X±b™/^lš0a‚ÌÕ^¦Ù³g›òæÍ+í0Ž_~ùÅtâÄ S–,YLS§NµÛ}±t$ã¯T©’‰™­éÉ“'&ft&fÀ¦)Rm!lçæŒ>½‘ÔPï^®½†QøŸ–wÝKhàÀ=2ÃþÙÂj”:¿EŒº 1cÆdõàϲóŽ=º¨˜^¾|);û¸qãRÁ‚ÅŽñÞ{ﱚ¯ìêÓ¤IÃRZCASvîÜ)’Á¹sçˆvB=ìÞ­3Ž}öV¢ƒT‰ j¬Ï>ûL~Ú´iC.\  ÈÊ!É Í;—0H"¯^½béó}¾‚ùwb†B}ûözǧ={ö3=Z³f ß•SX$´ïÖ­>,®€$Ä A$•‹/Úm·páB9c²nÝ:‘~¦M›Æ‡h£úüæ›odÎÌì,èûòKèþ«ô%rÚ·"`3v± 'ŽG.ßÚ´éýùç š2¥>ňñ¾ÞCWV²dÉ(R¤H °GŽlm B… |s±¨wðŒ…j1¨‹X¡\¹rc¨žÀP°à[§?ü0 ëÅ‹**{ù•ÍÐTp5kÖ$–>d,°µ´mÛ–zöì)ýbÿ’%K m„«9{öl=ƒ†½O{í ]Á¦Ó±cGb•mݺ•ž?N¬>ãîЪU«¤/{´½™¯ê/o¢­}…i¦NÝΪ””#Gr·Îóþý§~¥sç2ôÅ©ÜJÛ‰·Rb·Ïö‘À<ØÂ÷Ñ$“O¨º`°“z LÂH(Q¢PîܹéñãÇìz]^Ú Tcl¿á¨ƒEú˜9s&±½Fq8 ¿õë×HCI“&僦Äp^·n]ÂTy3fÃ>¤⡪ƒô†`ŒÅø4ƈOäáaTlµ«_¿>Õ®]›7£ îÌl¢>}úˆ4©’¼ÓŽ=Jl‡2'í›g欚E „<{öÒôùçÝL\ !%Ëæ|S¤©R¥lX^dYàÇß1Ô;:ü¯¿þZŒìæõA|óôðáC1–·k×N õF õ¼P›Xš½‘C}çÎÅ!mC’Xb2=zôHHÀ©€›<³d%ugiÛkwòäI—è¡5Ôû†¿j¯Š€ËLš´…Õ'É)sæ$.Ó°Õ°oß%bïØ±´­â0éj©2eÊXÌóÓO?µøŽ/†}"PÁÿ3°ƒ·µ‹7$ {íÉ7·ŸÄ‰'  Ü…]IöÚAõRp±Ð0P£"à¯<}ú‚òäéE3g6õ—»Æ¹|ù!êÚu.ëí[Sœ8þeŒ jޝþÕW%éÌ™“AU ¶ öŒÄ‰[ϼT\0ÚFlØYXŠ s£<ê³K®4ó7#·ù\ÜùlD)Ƨ§“ÚT<°Òó ´}iÝÊPΞ½EmÚÌ ÿ­jʃÏhá½4yò&6XÛöxræÁY†ÚlÌ<«¬ Êà 31ÇÂ[Ïêýå-¤µŸ0‰Àóç¯Ø€ºOYwÛüž>}Éñ¼Æñ9†Ò”%KR·Ñõ!¶ùðùŠ#ì‰ôÃ{²‘û_–ƒ¥…»žèNi†TR /I‡è¿Àã Þ^ðúrWjÝzºØgªUËã.’n§síÚ}ÂALÌ?EŠxT±b.9ð+VT‚+mÍšg<žÜÞ¹t \œæ¤LÅ(kaìÒ‡_CãÇ×uÛü¦OßI'N\çC~o¸¹°›ávÉáÃ×ràãyáÂfì¢ûÖÝ×èÆj5Õh„¿Oe*áïëŒÝ„ÀìÙ»ù,Â'nSQá€c¯^ ùŒDŠ%¢›Fé2;vœá`‡+…á5jT”Ýý&Nõ»¥bŽ€2s4ôYpìć]Í1 Üã §ña—€ŒÊ_Òþý%–ÙÅ‹wÄn„{["ERS¬¿¼‡2|+:&¿G`Ñ¢ý/^Lv%|f•Á÷î½HÔHÕ«éJs··¹|ù.Ç´ZHÿýwž'~Åq¯ò°ñ=‚ÛûQ‚ae*aïꌼ€¤”N,å¹ÚíÚµG9êðŽáÔÆUnko6¨¹&MÚÊ„ Ò°aÕ9Ôˆ©âÜ6Y%䔩xV%–زå$½xñŠÃ›âiÞ¹ó˜/kšNãÆÕåNo£Î†˜¨‹¶m;-cÉ™3» ·áØV!?kââP´Y(F@™J(~y:tß 0räz¹{Þ½·k7KÜq݄ҙ±á\L·nóå¼É€9ˆbgšk]EÀµ¸YÀ¡_ 8uêqÐHq§ ºfð¥óæýG ×¦M©à+{¨æR¼ø@¹ŠvÓ¦ÊP<„sx"«’JxzÛ:×#0zôzCž?Ä.¿7n<à¸^óøðà/!¦åê¤px÷¿ôî]ž¾ý6««d´"`€2 8ô‹"`Ø?øþy¾ ª“ýJ–ÀŽR§N~·G5v¤{Óω͢C‡.óu½-ù¦Êw7#:Ò^ë(A! ê¯ ÐÑ2EÀ Ž,[ösúè#Ë …fUzœ6mA5o^¡úî¬táÂm%?˜/³2ñ©ýæÊPÜ ®ÒTRÑ?EÀ^¼xÍn¶[øÖ½¦Ô¶_åæÍ‡|kßbš=»‘×Ï} Øc£FSøêÛ"%Ù¥–(®# LÅuì´e8B`Ñ¢½|Ýkb¾6^ˆfݱã¾8¯[P:2 ÿÝÎWà.•8epÖ¤x e*žBVé†)Æß,;üLjÅŠCtìØUÈX#$dœj‹p2¿ý¶ˆVæ»NtŠ˜VV@@™Š i•ðÀ—j«bÅÒ» Ä£GÏ Rʈ5¼æí…)‡ YMˆ,¼xqsŸ®tT9‚nÝzDÓ¦ýª Å+¨k'@@™Šþ(A €ÅyÙ²ƒT¥ŠëfíÝ{V®<̧ÖËÑ“ûŠ®\¹Ç^jƒ)_¾4|qV%*ì>h•’¨úË´JøEî¿%KfvùžxØ4Ú·ŸE;—ñÊý#'O^çˆÂ£¨~ýÂ2ü¾9¹¯PIÅWÈk¿¡É“·Rݺ\ëäÉÛ„™”+—ÝeŽ6DÈ• †S‡¥ÝÆPêÕ«'j¿"èg8Å`ÅŠŽþ J=•Tœ‚K+‡'6n:qãÆ¥Ü¹s;LóöíÛtâÄ úòË/ tÒ§OO á©´råJ¹çô?üðC>ãôÇ‹³¯\2p:zô(}òÉ'”0aBO -HºöGd3-TÂ.»wŸ¦;wJ§'‰°òÙ³g9§Û:Úàðá+ÂP†­ÆîΙmjëÕ¬Y“qÞrËø6lH3fÌ ;vД)S(cÆŒôßÿ9DûðáÃü^{JÝ 8ÜÎ!âÿ¯º;wî”o?üðGBXÌW-lá`¦“8î\Jºté’]rNÛ·o§‹/Ú­çée*žFXé‡:Bb 9råÌ™’RxdÞ8‡R­Ú(Y‰m(é<Ò‡³D[¶lI?ýô¥NšŠ-ÊÞ@Jš4©H7oÞ¤o¾ùFvö »uëV½_†°ë¯X±"ÅŸJ•*ÅWÜ¡—/_²ûv]ÇŸˆ]¢¦Ï?ÿÜb(XpëׯOÉ“' ãäÉ“´ÿ~úþûï©D‰” AêÞ½»´D~‘ÌŸñ½N:RoÈ!â&ýëׯ…vâĉEÙ´iªÒåË—eN©R¥¢¿þúKòÌMŸ>àv3gNJ’$ KŽã¥xâĉ”!C+Ò‘#GôÑ´iSzõê{Α¹Bbjß¾½0 *pX ›Ò¦U«VÔ«W/¶™ý-øÎž=[púå—_DJSܸq£Ô5~={–m‚wéÅ‹26HSÅ‹'àeë]íÜõ©LÅ]H*0îk_¾ü Uªä¸ZĘ8⃽A:yîü„ û­/Ä™ÝI:D´°ðb·ïÁƒ",[¶Œ"GŽÌA,RºtéhîܹÒ>ñýŸþ¡>ø€l£xñâѼyó8rÁ2Ú·o­^½ZòPfžN:EpqÞ¶m(P€L=’>5j$®Ï#FŒ 7n°-+F€jËüô°HW¯^]x0³²eËòåk‹øÒ²C´gÏYˆ{ôè!]£.TI˜èZ',ÞóçÏ—EL¡ÿþôäÉjÒ¤‰Ðü÷ßùfÍÞÒ¬mÛ¶²¨£>Á¸qãèÞ½{‚HŽ9hРA24Z¾|¹`XÀ<Ï®]»Ø‘d=Gz¨B:Y^wîÜ9a*kÖ¬!HW˜è/[ïÂzN!ý®L%¤jû0…ÀÒ¥û)W®”.]ÄÕ¿ÿRVKååk·co´*UFRƒEx§ŸÍíôCJ°råÊ”-[6Êž=;3äJ|M@&±\¹rE$,ÚHøÄNüÓO?fðçŸR³fÍd!_µjKaÕd‡¼­‰’ Ê—.]*UÒ¦MKß}÷´+]º´,Ä ©Åü òäÉ#‹;dH(*¾ýö[aS§N¥ 0,à`˜~[ ’W®\¹øJƒ¢vŠ-¥I“† j„: Œç}Ààð’¤6$Hj< µE‰…ã´Åˆ37kÖ,a>¶0H?˜7$ºÌ™3ó¦³H ׯ_440iŒ ¶•®]»Š$éÐú]j 5Ô‡@m¶˜={·KgS –BhûmÛ:»HO5jŒæ…0KˆN÷»}`f±H"ÁüÑG™•¼]ÄŸ>}*LŸPõà„þäÉ“EýÕ̰aÃdAΟ?¿´Õ¶× ÖHPí*"#Ï:_*Úø…þ *PÞÆËÂ[°`AÛ›7oèÚµkôñÇKÝX±b´1€Ä…)R$±ÅanK–,U$'H;8•õæ¨Ë`臤dÐ7§iÛF‡Ħ„~l%0Ÿ Æ>¤,à[’-O/¨Ê ­ l2ÀÙÖ»ª/WÊTRq5m&˜3g7«A²²ëªsÿ{öœ—;KFެåv\Ú·ŸÍ‹^"f(oÎnïÀƒ±€á jÆ¡rB‚º ?üñG€]!EŠ"!@u†… ¹‘ :ðÜÂ"Û >± ‡ôóøñca^0äÃÆµlPÏ S¸paÔTpUîØ±£¨ ÂÃ"œ,Y2ºzõªHVP³Á°ß·o_Y¼±Û*>Ôs@Ÿ°Ùà¹K—.¢D{Hb°«@eÌ ù°}ÔªUKl!æù(3¼Â`—7Ô^£G6Š,hs0Kà=ztaĨhý.»ë_œ&E@` îoÚ±ãŒÓX”+7Ô4cÆN§Û×€=ÉLÅŠ 0=~ü<¸ª+çØÄ»áÓg㺉m.tX‚0±”abÕE>þM(ã…×"ŸÕV&¶+˜Ø]ÖÄžSRÆÒˆ‰Uf&Vé˜xµ¨ïìôÉR…4ã³,¦gÏžÉ3K&V99KÎÄŽ&ör³hÇj;ÓñãÇMÌ4-òÍ¿0#4ÿj÷cÂ8ƒKÖc°õ.ìÑ`KVöŠmæ;·%s'S:Š€Ÿ!pèÐeÖ5¿à¯sgSÖ®=ʪŒG¼ûËéÖÁ>3jÔzV¹´à]f·Òö61¨¸úõë'R‰yß0Zî`°ÓçÝ:;à;\w­vþöì0Öuí}ÇxðƒdØIð [ \¤MpF°NðˆƒcAPÉÜFT=GÇdnã²÷.‚êÇÙ2e*Î"¦õÃ$P}UªôÖ¨éÌqбK—²jgÚÛª‹ë[µš.áW&Œm«J¨Êƒº6ó…:¸ €AXàƒ[/Ô8æ §Ì o&ó|}¶€+ïÂ6%û¹ÊTìc£%á öÒÌ™ šñ’%ûYŸ‰¯œjTeœu©[w<´«Ê.£wäAµõ×2{^SÁçWÌ\m­¤GwöÖmÃãwWß…3X©÷—3hiÝ0‰ÛQä\JêÔo]Gä￯`/¦RŽV¶ÞË—¯ùdú>«‘Ç­Œ*ØŽµ‚"àFTRq#˜J*t")å»ïœ»™qÑ¢}¬—W¹/TJ§Nsø\LjÞ¼„߉3½b/EŒƒ¢EKÏ.³1Ø¥wƒ½jšŠÀ©~gR˜ïi u°„;QÖ¬]ù”r 6ÆZÚ³7OüË)2€ºwÿžÝS?³WÍ©|\[<~üf6Ì7÷{Ã<0[³æÛ|vðaÏSTºtVjÔ¨»¸Zª«œ@+‡TR 3¯R'â [¶œfâ(CA îãk†£º¡àœËï¿/÷{O¯‡ŸÑ¿ÿnã°!›ø,Ƈ|æ$ ^%•ÐíæÊß¶±€2ûØhI8@ª¯ï¿wNõõçŸ+8¼}y· ƒ{ìqb~Р*‰æŽA^¼x‡ÉFvdØEÅŠeàˆ?ÉLwÐVae*aïêŒD!P‘¸m[ÇíË–dר¨{)ä7-BÖ¨Ñd9ãR´hàóNÃcÕÀL Aá,NåÊ_ðg[>UØËcP¡e*¡òµé ÝÀæÍ'9X_|¥a;P ­>^E-[~m«Èé¼AƒVr`Ä×ÌÔü+˵k÷YrZÉç?ö±7ZAŽªÛ•U\‘žŸ6Ÿ(S Ÿï]gÍ,]z@"ÿ: ÆúõÇ™ ¼â€“mb·Þ¦M'—­XÑŠ¾e·²— 8 _°µœÕ\;ù¾‘/%ârìØÑ¼Ô»vVÐs*aåMê<œBª'¨¾NÞÑ4dÈ*‰Dìh}{õÖ¥iÓ©4thu¾½ïmØt{u½•ÛRþü}%TÍÆ8Èâ·|¯‡2oá–úQI%,½M‹ÃìÚuNÔ^É’Åu¨ î­¿råŸg±¼âÖ¡ÆV•š6ý—=§¾àkkdž²ªêñ¯¸¦cÇ9)ø ãëðeTÉ=Þ§v¶P¦¶ß¯ÎÎΪ¾† Y-RJHUU¸nøÁƒgÔºuI;#óN6Κ ¶†ÆŒÙ@-Z” ÚµóûÎ;h/žB@™Š§Uº~® ž2¥¾Ccב”|ÉØÜ9/¥å¨÷—ÿ½‘‡Xµê°ÃLeüøMrâ>NË{<œâÆ'ÄÓÌ]§ðéuÑÑ¢(K–$|¥lSŸJJÎŽ]ë‡>TR }ïLGp°ïÒ¥»”+Wð7<>}ú’&MÚ"1¹\íòþý§lŸÆ*§ª3fTWɸÔnÓü±‚¦OßAÿ]Ó/¼Í\šˆ6 U(S U¯KR ¥ $Š#^\³fíâ…85%Oî˜Û±­±uì8[ÜÝÖÅ}{yPw!Ì«WohåÊÖr_Œ½ºš¯¸U¹M¥å÷¬\yØáñ¢X¯^—çÛ;}Å(î2îß‘J–üƒCú'¥3(CqCmâ:ÊT\ÇN[†2 ÎÚ¾ý4ß…|ðF„Q‰)"åÉãÚE¨½Ú·ŸÍ×W¡÷ß÷žB`ΜÝìÕ5šúõ«Èý—vH" e¯Q‡ëçxï¯ÝÏÐá…}6n<.'Æ?øàý`'‹;CB"¥té2Ê–Íæí&ØÁ8P‡{ö\Ȫ®C4o^röjdºÐ*Š€C¨¤âLZ), °nÝ1¾û=xWâ nÓîÝg©|ùœ.M·"îÚuV$—8ÙèéÓT§Î8:yò{™µòCùã?(B„ú 0صk—“eŽWW¦â8VZ3”#€ÅÞ‘;åq­oÕªy\R[a7Ô^Þs4åÊ “À”ˆ€)}•öíÛÇÞr“^gúã¿4hЀ7=ÊT|õ¢ý†8»èàÔBÏž½¤Ù³wñÎß5}ß¾K¨`Á´ôÅ©<ŽÂÇ”.=ˆò™èÏ?+Ëü<Þ©v ƒ€ÚT‚H‹ÃP}9"¥ÌŸ¿—ræLI :Ã!¼®B¡ã=vî<ËhM ®]ËR… ®©é<=F¥>PõWø|ïánÖëÖuÈë럶P­ZùœÆW·j5zô(çñ{Hp#cݺãhĈÊPœ~SÚÀÓ¨¤âi„•¾Ï€+1îO7®ncA I\ U¸ðgAÖ³Uˆö‰Åá.!¿oÅ}#ýŒ½žæÌiLŸ}æX@L£mxø#µ._¾ÌŽí9ªCQzôè‘]ZcÇŽeIt„”/^¼˜ž={f·®¿(Sñ·7¢ãq;8ŸR¬XÐ>|&шq#£³©k×yr¦ÅÑ[$¥úýú-a{Í>š?¿)%H༽Ǖ>=ѦeË–l ú‰&RË &4iRÊ›7/ݼy“£8C¶nÝJeÊ”aéñ6U¬XQ$,ÎwîÜ¡—/_² °.K‡‰è矦Ï?·”ááT¿~}±“\$Œ“'O Íœ9sÒ¯¿þJŸ|ò «+ˆä€‚¯¿þšN:%ÒÆ`¤:uêP÷îÝ9vÛÙl=zTІÊŒý3Ê!ÇUû[òÀ0À,R¥JŇ^ÿ’<ÔïÝ»·ÌiÔ¨QÔ§OÚ¶mJ}ïÖÊÒó8V·ÖâMOVJ™2%-Z´ˆÐ¦C‡l/ëÊ“KÒæ{åÊ„ú߃ó!ÿ=uæÌaXåÊ•“9ú:)SñõÐþ=ŽÀ† 'øþõ4Aö3wî±¹8{gü† Ç j³Æ‹I?$…ݺÍ'8Ì›×8Ô‡\Á‹ÝþìÙ³ùÌ",[¶Œ"GŽL .¤téÒÑܹs.|âû?ÿüC|ð;vŒâÅ‹Ç8Ì#´ óêÕ«%eæ  .p¨Ž,Åû÷ï§8qâÐÞ½{…‰-]ºTòóäÉC1bÄs5W¯^½8BAuaz`feË–&×­[7'æÑ©S'‘$PÌ y7nܺè'}úôÔq… ¦C‡ѵk8[´œfΜI`°;vä{~Ò ã­Y³¦0ÔSÁ@çÎ2‡‘#GÒóçÏ¥=˜ ð‚K÷Õ«WÍ¡ðú³2¯C®z›7Òõë÷)sæ$Av;mÚª\Ù9)åŋ׼£œÍRD…]àÔÀÚ¶Å‹ðy^¨ñÕõðûAõáí²Ê•+óÝ2Ù8ºAvªT©’ؾøâ Ù‰C"Án Ÿ&>ýôSa8þù'5kÖŒ¥Âz´jÕ*ªV­šH M›6µ9HDdPn0T äCÒ1ò{ôè! âĉE21‚Ù@r©R¥ ½~ýš&NœÈŒý#‘<6mÚÄjÏa|GÍ}‘xÀàÚ¶m+ó‘^½zeSuuýúõ ¤Ì*10^0¸èÑ£Ô-Œª30Œ×`¾ÆÀ€òåËGiÒ¤¡‹/¢ºÏ’2ŸA¯{ÄðÊ›7uv’ǯ°J呜/qfL0˜gȈ ûéœiæpݦM§²J溅ôvØ|‡éBE¨‡ Âmž°ˆ?}úT˜>!5|÷Ýw4yòdÙÕ/^\¤,œI’¼Ý(DjûÀ'ÔDH/^¼©ÄèÇ<ÒRP ýU­Z•/8kB;wf‰9"…`\GŽ ý¿yóFÆ÷ñÇ ¹X±bÉ'âÁƒ¥Ì¼Ÿ 6ˆ†•©¸ I¥ãWœ9sSÎŽ$IÇî¸fÎÜÉÔ\vË­ ÆŒ×ORvsMi]äò÷I“¶²‹ì6>sÐ$Ôltm¦PõW˜z:mÛNóýòö¥”.²ËæksŸÂhäç;9ÓZ>ÉÝ2ÈzήXqˆ ZÉRJSÞA¿;kà ª‹õ굤Fþf¯µÔ|ò|»Ê†ž˜Uþ„¥§Ç‚SùžJÊT<…¬Òõ)Û·ŸRõ5{önÖÝ;u‹¥J¹9–T`ƒª+Å)y„ÊŸ6íW¸%»2&WÛà™%KöóÏs>)ßDTŠß|“…råšä*ImŠP¦Š_žÝ>°§´n]ÒföJåó ÿñ"ØÜf¹uæÅ‹wX=µ‡ éî¹| ª¹ÚµÇqˆÁ†±‹¿|&8Kæ9rDe’…Fެjçã/¸†…q(S oQç`À¥K8¸Fv¥ŠOH™£Q…û÷_Ê‘p ºÅæ;å«TÉ'Ã˰gšó÷¶XLÔË_J†ø0"®®[w<‡öHÁá6ŠÙ§?"ó¢E{™™læŠY]—O®JŽËvðF³ŽÁ?P¦âïAGáF ©T­j;@äªU‡9®R2‡¼­ÀœNœ¸Æ k½w¢¼ÿ~$ “bb$p÷î¹®nÎY²$á0ñ_Qñââry°k%FP¦F^¤Nã-¸ÁFäŒÙ„dÁ‚½ôÃŽ©¾pÛ"Œý‘"…LÍ3yòVQ¡-]ê¿§§qï \¦§OßÁøäd)¥¥Hñ6̺M 5S°ƒ€2;ÀhvèD`÷îs,‰$·©ï‡Mcýúcô矕ƒB¦`¡-_>g°uƒª°eËIŽ`»\<Íü1üÊåËwiøðµì ·G\¬×¯oÏÑsßÞÔ¼´L°‡€2{Èh~¨D`×®³|è1•ͱ¯\y˜Ë>%G.¼ê×o)‡7/ÅI±™‹éܹ[Ô ÁdV'Õò»³(8̉³7ûUá–-ÜâÝæ"TÚ, !2¹> ¡S ìÙsŽà%³9žË–Íf³Ì<÷Á¿xñÊ¡ºæíÌŸ¡†«Qc _ÿú02ó2_>?{ö’†]÷\ö·ëÍ›;ò•È¥•¡øò¥„±¾UR c/4{õìž>}“Ú¶)Ò€-iÉ^;wçCý6~ü&¾ß¼ÛJ> ØM”¡¸e¥g•Tì!£ù¡0•5¾ 4n¸ÃÎÜX†”âŠÇ×Ó§/øÄü8êÔ©ŒOƒ*"¤JëÖÓYƒ=»šRêÔÂC3O" LÅ“è*m¯!iäüùÛ”)S’@}Bõ…(ºA%øÏœ¹A*¸v.¥yóiôÅ©¨reÇÃé5gËàÕ…ó0ˆüÛoåRõ9Û‡ÖWA@Õ_Ž ¤uü\º•.]‚@çJ^½zC«W¦’%39x|5mú•ÍC“A6äBÜ †Ö«Wùàªz¤,¡êº~ý>îl§ Å#(+QGPIÅQ¤´ž_#¦’5kàó)XpÓ¥KHñãÇ´;~¨ŒŽ½ÂvˆºvëØ+ÀaËaÃÖÐòå­äúb{õ<‘ÿèÑsêÖm!”?¢(.œÎÝ(MEÀ)TRq .­ì¯àöÁ¬YßëW⯾Êä°‡]M“˦‚¬hUxïÞ>1?Iξ$LÛªÔ³_q Y‘"ý%zò† íÝÎP>øàñ^ƒœþ(ø¨[×±M—J*žýßWê^BL¥I“âz[¹òIl(ßÈ€ÚjÛ¶S4dH5#ËáϦM§Š§X‘"Þ“º¿OŸÅ´xñ~‰aV¨g.úzùò%={öŒ#+¿ï0Z1ì"°~ýz>wÕÝ¡ *Sq&­äÏ@ tõê}J“æ‹a:t™¢F¤ÔÈ‘ë¨fÍ|¼ãlÑ6¸/cÇn¤[·º¤2 ޶½r¨ø7ž"Þek×¶ Ö›ÍÍW<‰€2O¢«´½‚À¡C—äîkW`H)%Jd²;Ü‚»ê·léh·Ž­‚ƒ/ÑàÁ«¡ìCß}ë<„XA¼.œ=gW™2ÁÇ/³¦¡ßo! LÅ[Hk?C†öŒ¢¨Ä=z|(ßÈÀ¹07îFV°ŸŸÿóÏå²­¤I? ¶~H+ܸñ€5šB8иjUë BÚ—¶WÜ€2w ¨4|Š$‡üùÓXŒ‹ñ¥KwäìˆEÁÿ¿À6«r,hj«Øn^›63Ø}÷3Ž –Õnw¬Ys„Z´˜Nõê+ˆ] ã®ñx“ÎÓ§Oi×®]M¹`ˆ»}õê3äUtR§NͪRË¿—€BÇgWóˆWîc–j·ÔH™2%{zÇžvãÆ v_M>äPYJ˜0aÀ8üíA½¿üíèxœFàðáË$•Õ«ÈâoØÌ™;%ZoªTñíU ”?gÎn:vìŸGù!P™;3^¾|Í®Âó9äl±Ù„$™;ÇåMZW®\afòkœ1æðá×ohÇŽì”±:vìÈ…èÑ£GMiÆŒ4gξZún­,ŒeóæÍ’§-G¢.ÊRä‡è¸Ziݺu¼iÊO+V¬ ;wî°]­1ýú믮’ Ô.W®\ôúõë@ù.g°¾V“"jà“䦔)Û˜x!¶˜C½zãMÌ,òŒ/¼˜òæímâX_FV°Ÿ—.Ý5eÌØÉtäÈ•`놤ú)YòO«ØL÷ï? ©µ%Љ½¿‚¤‘/_>Sƒ L‰'6Õ¯_ßÄ ‰wó¦Zµj™®]»fÊœ9³éñãÇBcРA¦=z˜vîÜibéÃ?~|S“&M¤ìÒ¥K&^äM)R¤0Õ®][h:uÊÄ…”çÈ‘ÃôË/¿íòåË Í±cÇšjÖ¬iÊ’%‹´[¸p¡Ôe©ÂTªT)yž>}º‰ˆéöíÛ&^ %¿®^½jŠ)’éâÅ‹òà Gh—,YÒÄÔã…œßwF™CáÂ…Mýúõ3±ädJš4içÏŸ›¢FjÚ»w¯M:.\0•.]ÚT±bE™ûš5kLyòä¼0¤iÓ¦™ªT©bÊ™3§ô7tèPSúôéMŸ~ú©‰—ÔIž<¹iÑ¢Eòlü0`€`|ùòeSñâÅM±cÇ61ƒ3K`P¦L£ªàqþüyS‹-s–°L,a™öìÙcjذ¡`ƒ¹•€Þ‘#I%—Ù±6ôŽ»*Þ]æsìô¾H‘ô6‡¸|ù!Š':åÎÒf¹u&ÿ#±»ò¶m£ôé=§vÀå`%KþÁwÄg—Û"cÅŠj=¿ú~òäI‚šjÞ¼y4yòdÙùcWïxá• =eÊö™ƒ ~#f:"5lÚ´Ivÿüñ%K–ŒÖ®]K¼Ð/ÆóÜ¿?¿¯8|WÎ^¾âù&;H,åÀŸ×øÀérš9s&ü(ÒňƒßëÛP9‰%²POÕ¨Qƒo¹¬**µ¯¿þš’$IB¿ÿþ;ATJ£F’¾™Y²W`M>Ø:ŒŽ90ž'OžÐܹs9Î,þ{hÄx±ÙI$‹M:/^¼à{k–Æ3-[¶”6à¿ÏMès3ݽ{—˜!òY§¿(oÞ¼·­5GhÃ?ÐÈ‘#éÞ½{­á<1Ú´iÃ×>Â#ƒå“™µ`„6p?sæL@}fÐ|éÜ b$¸C†w¹2³ä(ïѤI“ê‡ôA™JHÔö>Eª¯Ì™-ã}!ÚpÚ´ „qØÜ6,j«ÈfÞÈ‘ë%ÿ×_ Û,i&˜Ö€ËxA™ÁvžzìP(¤$½Ö‹/Ô'X ¡’É!}öÙgõïÐù€E²˜aaûꫯˆwà²ÏŸ?Ÿ^Îç÷”VìÍš5“ÅÝžÊ åÆâ ¦‚T®\9é«B… ÂÄÀŒXj 8OQ @0Z# –`ØVZ TIûöí£¾}ûR±bÅhøðáÄ;w‚í‚wûòæº,ð°éð.>€K^…zMœ8‘bÅŠE[·n•EÙ43Ó>èª2|}ô…„>À4X""ŒÙx†°å yÛJÀ¢}ûö‚#K‚ÂðlÕ3òð¾R¥J%ï Aàðá+¼MdÑ÷ÚµG힢?zô*={3ØX`AÔ>| /­=r? îŠÿõ×·»Dxw}ôQ £ëPñ‰ »Ý>²ô†ÃbÏ*Ù³:†ÃØD‘E¤H<ö¤#A€ ç¼8¼“TpÉNº[«Ä08ÄêBx“­[;94Ö~ý–í~ÈáP}g*áÐe×®óxA«lX~gèúK]ÃýÌ„ôÚÅW\HPa±!ZTg={ö”Eê3$ƒvà­Zµ†5Í„ hĈÂ4°c¿uë–ØPZŠ`«€½¶‹ñãÇ =Cò Œã»ï¾ÛìÀ¬°0CêèÖ­ÛäŠÈŽj7Ð6~„˜Õ/а¦S©R¥€9€$0,0“Â… ‹-ö%{ɘ?Æ‚ù¸@Ê€GRÓ¦M»Þ½{‹-eåÊ•‚'l2`ê°»àÇV2èþï80n·$ž &E T"påÊ=öþéb1ö©S·³GË$‹<ã «±LÍšM5¾ùÉчMY³v5ݽûÖ{)ÈÊN¾~ý†=°P/;8ÑÒ»UñþrdD,¥˜š7onQ•í &x#™'Vۘ؆`Z¶l{¿Yz"ÁS‹ ÞTFêÕ«—©sçÎ&f(&–*Œl—>áñÅŽÒ–UE&x"±‘\èË~Ù£cÞg˜+ÆîL‚7ÞÙ³gÆgÞÞrÀÈ<1c5ÿj÷™¥”`1tÆûK%·°f%â àù•>ý;)cÀ-Å‹¾6˜ÿ£ä°£#áíq0’™{ÆTd½}t·MíÁƒgT¿þDÞ½{.µ ó±»pž‡ÍLج Ò𾂧—­)𻘗ÃfÒ‘Ì Öæ¶£<¨O{tÌÛÀ`o$gÇ{SŠ)ŒæŸp€°Næ6'ë2óï| [‹y¾«ÏÊT\ENÛùØSÌU_îO±u8qŊühŶ©³žHÿþK%Œ~É’öã†Y· îûÙ³·Øˆ;JNâwìX:@-\»Ð\Þ¥KQKLŽÌžX_~iy%4ìÖ4`ÑäŸ(SñÏ÷¢£rœnÏ—/u@MDñ?–ÍøXÆX·nÁ€ºöpÏ=Nί_ßÞ^§óq÷É/¿ü#÷×ûêºa§í†ötùA‘Ž9²…·êÞMæí¢GwŸiNWŸCŽ€z…C¥à#Nœ¸ÆÆË½ãÄ‚Ó|7NºA'O^—à‘Fž­O¨½š6ýWÔ^8éŽ4eÊ6a(cÆÔöÙýõÒPE@%G‘Òz~‡9 §èmœ4i U©òE°nÄ8€¯±R¥‚¾ÏÞè/¨OØpzö\È.²GØã¬9{ä„\÷Tî.ƒÄÀ!HÜJö½÷¢òY•$|ñW2þIJ·oÏb7á'níC‰y:uê8D\™ŠC0i%CàâÅ;r®#zô(24H{öœgcü;u 86Íž½›÷6AN‘Žßª½ÚYÏ‘Bô‰Ë´`˜Ç+1cºwqvd !­ãh°Å úÁ;Ù¹ó  ÇVªÅæð¥a†J1Ìà…&G \Kнûw|²>…W.53Þ½~úe*¾Á]{ !P}¥K÷.¸#¼¾òä ìV ›FË–oÞÙërÔ¨õbÜé!GxxU©2’Öåä€ïâEÙë7,äCÛ´é83‘ãÌLŽ2ӈȇÓIÔ‚ñãë9}MsXÀ$¼ÏA™Jxÿ ¥óSÁÎ×H`*íÚ}c|•Oœcá’vC¶ ÔhÆ­‘s#ü‚]9‡Ûçh¹ßR¥J¹œlºªÃñaÅŠC¬R<ÌaP®ÈEh… §ã6E8¶Õ»3¡kV:Zw! LÅ]H*¯"púô úñÇÜÒçÓ§/8®Ò¾t+¥Å ¥T­š'È3!mÚÌä°öÅø`e0D BÁ|1¾y󩪼V (ƒi*Š_½zCÛ·ŸæCŒ‡ W4¿zõšcNeb•á×"F‰ò6’n¨˜ŒÒã(Sñ8ÄÚ'€¤’&ÍÛ˜FuŸ5+<ŠÞý9ÃH~ü\<×–/?(ö‘O?ýX "Xðô³¡ëp|ŒÀ»ÿBD»WEÆp¸ìaâ·m;HBX²d¿¨ÇìèùVE>y¿˜/—ú9XWc{ã2d53“í|)U6Ì¿ ?n¯nhÈøð™¨µ€Ý–-§øÒ¨Ô2_¬õ@|2=4ÌCÇè[”©øíÝ ÓOú]äÕmÛNñEE¥-(M›¶ƒÅ–·å™WèÓg1‡LÉB™2%6Ïvø¹oß%|ÇÅQ¾„ª™ÍüòqEDnÆM˜‹ïc÷ß³âî[¦L6:´:ǃzßÇ£ÓîC#ÊTBã[ çcÆ%[iÓ¾e*8c±¹ÑžïyË×_Û>ĸÿEÙ‘oÚÔÁi$9Ê0ÛO¦ñm†wEB ïÓ§/eþPîÚuFÎŒTª”›¯0®MÖ.ÙN¤ Â=ÊTÂýŸ@èàÌ™›|Bý­ºiÏžs"m˜ÛS¦OßÁn½9lž‰€Ú¬mÛ™r&ÅÙC‰°Óüúë?ôòåkš>½Ÿ=jœÅÙ¸ñ8ðÜ#÷œ9Sð=è9˜‘Ôâ“ó‘CߎØoP¦â·¯Ff0•²e³IñöígO™9s—ØJlµÿçŸ-¬Ö‰* ª­r{yOž¼ ZµÆŠªkìØj¡æP#‚l"¢Àüù{%T Iߨ£ìÍWóWP¦â*rÚÎg@ý…ëH‚óFÂy•?ŒfhÒ(»uëýñÇ Q[yŽ|¨°õ3&fO¯ Aº(;BÏÓu0ÏÙ³wñ퀻ÄýŒ¶ŸÐÌÓ8)}Ï  LÅ3¸*U"pîÜ-ñ¶‚}¡êÍí)R*V|{~Åz0Î#°dêÔ/‰²®k|‡§Y… Ãåâ/lôׄ³$8G2cÆN9S'0À/¾Hå¯CÖq…Q”©„ÑV§uãÆÐbÄxŸ ÚI–,n@ÀF‚ĹŠnݾ 4}çá­åèýô pýúa(åÊe6ÔK ½”¨8+ƒ37ˆØŒûZþþ»¦†GñþÚM`”©ÆDsüsçnóé÷82B¸ÀæÊõîý²eål…q~Å|:̦.]Ê8ìÝtùò=6öc;J> õš9M_=Ã{kὄˆW¯Þcé+DCIT_ÍEû {(S {ï4LÏèÂ…Ûž__}•1`¾0HW®üEÀwã*1D F GGú¨Pa5lXD#:ÒÆuŠŒdþüÿ$„|³f_QÑ¢é]>¼é1káe*áï‡êŸ?[T^˜Â݇¡Û»÷©Ô³˜ÂÀ–2iÒOùö¾À^S±âQwÁþâë©áû'OÞJ˜#b™­]Û–$ˆíë¡iÿŠ€M”©Ø„E3ý0ÜÏ{>MXx¿ù&‹Eü/ÌaР•i&K–¤ÁN ¡ë+VN­Z•ƒ~° eÏÞ]'ú‚¡à\É”)[YŵMBð×®_â’EŽzNìÀoذuö¢N:YúéG|ûí·tâÄ e*~ôNt(>Dg1 Q$Lø¡ØOZ·~{»â¼y{èûï³[J„gØþýø®êAŽ6”òå‡Syù’­AÖuw!ܜǎÝHkÖ!qœ2¥¾†•w7ÈJÏ먤âuȵCW@GÃ@}ðàe¹C´`O2¤šÙnÝæó-ŒeÙXÌ+½õòÎWÿ–’óæežzc\´h·Qd½z©oß ØS€+]¯# LÅëk‡®"¦‚ÃŽ°7@†Áp³…Á>kÖw†xDß1K/ŸÛí ´à6Œûëq`ÐÓéöíGì¶UŒïŸ}–€š6ýŠ2XHWžƒÒW¼€2o ¬}¸Ü'Ÿ8qÚ·ï‡fI.4qð»ïÞ1/^sx’¥|µoM»}†•W£FEÅE×nE7€Ž¹NB¨@Å5kVÀ+Ý@^IØ@àÀø3>«IÚ(u.ëèÑ£tîÜ9i%Jö<ÌÏÒ¯ã÷Ì,^¼˜`Ç@ºyó&Áætá±i)R„#CIJ°ôë½°4KØFàÊ•{O(ØJ2gN"“]¸pŸØSŒ™»A®õÍžý-Ó1òOÅË«nÝrZÞÈw÷'ì$8ïRµê(^@p<®.Ô¿Ee(îÚ½òYžµ6JœÏúûï¿ù½õ§;v<ÛråÊÅÞy&T©R%©‹¶yóæåp:sèáÇJçoö^ÌIt˜Vh©¨L%´¼)'½c*Åžrðà%QeÈHÐyðàÿ³® äZl@w÷îYè+VÌÅ÷Ò2²Ýö‰ƒŠPqåÏ߇\.RÐîÝ]E"Š+ªÛú í„Z¶lI?ýôöLÍŠ2VÙë-©,ºØÍwëÖþüóO™æÓ§Où]g¥Û·oóù¡V,©&–ï{÷î•òÁƒKÛâÅ‹S©R¥,éqãÆñÆ¡–ÔO™2%Û²I,æ¿þú+}òÉ'¼Á¨@Ož<‘|¸BŸ:uJ¼£¾ùæÉÃ/HÝ»wæR @Ž·UʆÊѰ?£ 2“@æ‹/Øá£žŒ©nݺôúõk¹úºN:|›æPvqŸ&ó[²d ÿ}T¥Ö­[KeË–šø…¾!ÍÜ¿Ÿ~üñG¶#&içÆtñâEy³jÛ¶-o ²Œÿ¯¿þ¢ž={ÐñÕƒ2_!¯ý‹Döè±@NÄã¶EÜEO¯ãǯIh{»ãÇÿ€°˜# ¼Š]q³RŠï‹ÇÉú*UFÊBð&îLðHëß)ïb{°zã‡×¯Ì-[Q"<Œ&K._¾ÌÑ¥ÿãðü³éÁƒìõ6…–-[F‘#Gæ˜f Yµ™CòÐjÍš5|Z¶áøfKù–ÏÃÂ(† BwïÞå¿R·qãÆìf¾"`EÛk×®ñ{XN3gÎÆÕ±cGd³¤»ŸâĉÄ{E%ºHyòäuTR¹s¿³³Aº¨Q£†,öãǧŸþY˜˜ßܹsep¡~öìÿ}Σݻw‹D5jT¡ó»»_å Ñ*TÈr#fuèÐ!iwæÌ~±93†/„{)RÆÔ¬Y3ÉCJ”(ÛåšòEt‘ø,Óji ¯“ÚT|ý´»\»ö€FZÿÿrœ$7Ñ™37ä{êÔíÄOôïD»°äQ˜¦NÝN¸"#«Wà P/YÔaȯVm´Ÿüùç‚ÿ§ò“'¯‹d´lÙÞñæ’ Žp$Ð<•+W¦lÙ²ñù ì|˜59ßÞ™‰Ãô!‹oõêÕeótiRÍ¥K—ØS¯ 3ërÔ¤Ia@ùòå X¬Ó¤I¨cÔ…4´…€„¤ 0ôe$H&F]HAhîܹÃ6»~ÂH6oÞÌk7r´ì"U  |íÚµ…)Á®3aÂ¾Óæ•HÔ=âèÑÑ ²"Å€‘ÚK`°Àeݺu|ÕCJ‘rP ñ?þà¿íˆ,yWŒÀLÀŒ¾úʽ&{c *_·QA¡£e>E eÊxaíÁP¬Óë×&ùÇ|ôè¹H)¸*xñâýbÇxòä9«þfýõs^8Æ‹ôòÛoå¬I¸ô}ûöÓ¼èá“÷ ÝmÛ:óÁÉr1É\"Î¥J•JfŒüG}d1{ÂaÜC¡ >ŒîXı 6jÔˆ#G7UÔfF²e@ÿðÃbÙåC½†däC"€´T‚Š ª*¨ì =`LPCAš[ ¤$H%`&H±bÅf•¤-HRHP‰;vLRæÌ™%ÏüúÀß4Ô` Õ¢E É7®0|6\€U™2e¤©äÃ_ÊT|¾v<¹r½]|‚«‰ »µ ÚH;:B ܇J”ò—/ßy¹?§|„%ª{÷š"‹í¿È±cçÔ!óEéÛB6Ö4îS Ê=„ôpæ2l¢qV”ÂEì”Vsx9rd¥sÑ+åÖáù¹‡ˆxÃËš5ñ”I›Nâ Œø+쪄;Qô$9r Ж8èW²dI«Ó gÊ”Z<±ˆ2÷°(?ÑÊõž=kŠR½®(5=;• öµ&(ׯßÔE!Ÿ\òO:±F|ðŠŽ)Àȶ„1߳ǻ'°ÆO—.…ªY³°„‡i ‘mû‰uØ8¹pálÁÂôc02 øMTà>ˆŠ‰Ç+‰kˆ$Ú¶m[@†hžX#E('IÒ[Ú0xð`²š{;m'&Ìîé2?üðC9Í7ÖVh˜ÅÖ¯__ÿƒ(Žlg$ö±ÍeÉÈFò,¯ÈsxJ!úÉ'ŸˆyæLg‡ùAìÂ[“‡|Xåý”ÐÖHRŽæÈ‘CÂx|¤ëúú‡<ÌCÉ2øÐCÃÔ°a_iQÑnñð É‘My—$ü!}+ N‡ !¹íüÙd§2dˆ&d»kÒ¤‰ŽK(ppFïæÍ›ë(­àÑè÷Í7ßÔï™@vD%@ÞСCu¤Y¢³Îæù#øñÇ¿ÎÁÀþ)RD÷k·å=Í•À~D„å7D$ZÆc=ü.X+ƒ×öºYþøÍÂ]³^Â~À­Dˆ¥=±šÈîLš4Iú¼uëÖª}ûöC¯ëŠüÁŠË€Á@\Ä€ßD… šø:$™!Üÿ`üÛ¡ _}õU:€T¡äT¶M¢Øi;!îé2!PlbüÃ’.“|DVD…à 5ÿðlfl0Æg3bNžRˆB¸ÈŒÆ&Jè"l:²ýòË/:b(fŸl S¦LQB6̨9øÚµ{%Tõ U¤ÈKjÀ€9Úº;H…#°Ù.|ôèѯDX?„þ&õ)¡»ÉjPÆ=I†ˆ” &åà "a¢Ìάg¯"ΉŸ÷I²#ŒçÑ´iS½©ƒoðN¢#~'¿-Æ´÷Ahqû€ qXµj•η!‹9pà€gNÈsƃH –œä±€ó!Â,óæ·ÌïÂZ7Ž_ 9,8ôԉ߿{2BŒIÛÊà–ø-±v7öaÇž³ù6Hˆð[§B‚6x¹8Ñsâ'B'IpH§I>|%ذ¹È%`ƒ¶ÓSºL6-6 r°Ip&4ùá*ø“€±oß>Ý-¡¡7lØ ¯ÝSˆBÜí³éÙ¹Ø,Ø|ìljœ¢‡þÉ¥P®\9‡aРAö´½~¯\¹_rv0ö=z³Â+Ûà±Ý¾ýŽÊý9OÙèÜÁ[9õ¼=K•*¯{7ïá8È× ®ñO"r+ÜhÍš5%¯Èeä@r¸R6T6|Nìl¤õºuëê¶¼+î@²!Ú@À7œ,ãGàh–üˆ D}uöbípük~O½zõÒéaù½‘R•È´pH k„óâ7‡es ¬N®›ÄKüÎø8EÎ æbç-‡‹‚àÿÚ¢b¿-ó1à7QáŸèÓO?Õ'@6²™±lŠp v¸j;·€~èá┹œÓeÚyì€plþÎ}A@a@(h ‚àŸMÄ9°Oí¢ÎSà¤N‚˜;Ü`ç] Ú)¢“¨ V­<©åWß~»M¸ží:\ÈÅ‹W#4#^^ÒxKÇ$@Ð}›sdƒvÆ/mI|îà(àhà ØlÁ  \‡ pk§Dõ¦”·ñ ~Ọkçrî=‡ OAí¼ö7¿?%ÀA‡wÌ¡‚(®pÄÆþmÙó`vT[]Ééí9ØÀo `ÿVéߗߊ݇ù6ˆ¯ð[ü…€ŒiȨ‘‹sjc±9qÚD$Æ?©:m@¤…(°ÓvzJ—É†È ‘b©Å‹k½ ¢N˜$í! 'K6 ò „gÅŠz¤o)D™£ èf HˆÌeú“n €/AµjùÕûïwqȑ˷Ök>L:Y ]Æz¢"tö鸂{CǨ‰ÓûÖ­[õ|9Ñ{,Á\ ÀA‘¿%8Æ o[±rg¦ïüဨ Îî} œ&\›þ·ß~«§X²ésð`|Ĩ61`nÔ…K±G̱l Oêñ{c^hì´´vóm0`0pq*p+lúœ:‘5#†@ …²=H§N´ü:kÖ¬ŽÐÌȨ!œní´žÒe"ráDÊFÁé½ rkˆˆ ¹:!Ÿ9qr¢F¾Î¦„"âžB "8[Éʦ‰aÜ› ÜF³fÍrùmPÏ ác•Ðô)‹mîä'ÑÖ9Ôýé+¶êÚkF†H÷ ®"³9Ä‘ï˜MšwnŸÞíyÛýœCœJ{6g¸Þ-„„wG?¶‚Oèè€6mÚØÝêo~;Djˆî FpÍ20AnÕª•Îö‡¨Î}ú:EÄWÅÁgòäÉzˆ»l#~;\תUK±áÂï5@˜œ¹\{bözíû@¾Oœ8¯}Wvî<&k©+óLH7¦Á@¬a  Ø_l œ3ØÿHpœCpÊC9ëkfµ¨ÒeÚØaC@oc'á¡Âc+u½¥µë:‹Æ(ƒ3BdÆÆa¯…r€{T±¿ðSY¿~¯îOßÔ Vì/NäXG9[aAog|¡´æÝpàp6ÙFLA >º 8œ~Kž6è@Öí܆߄»H.ÃÖ­Qb ±Ã±E¶”CýÙÜ e¿?~ãÎ×9öý}yÇŽ£BDökÃŽM›ö >®kB‚µà‚ωh1U  Ä øÍ©°26ÛJÇ^©s*M6}_ í#K—i÷Ï·³\Û.‡H¸ žyJ!ê©D0¸ÎmöÌ\¿3fL‚â:jàwˆ.gÏž­àν°ÑzJ•Š"žØxÒ‡°Á{ÓÃxëÇ×rw‚B;Os€0:êAøÜ åž~”û÷Þ›K¸øï5Ù¹ó¨¬?‰±ÛÂ-ÝÅݵk7t8~cVìfMÝpÁ@@œJ¸LÞÓט‹¾áTzõZ"„$µ#C¥·1%ºW¤oºpƒÞêšrƒpÂ@@œJ8-À}.¡$&îcǧ{¸Ñ@À™ ÐÞá€ðTÈxÑiã>×èôåkÛë×ç‰Cí*1×^¨ó¢8Ò¾>wîD×”VL–ÓËç>ÇÇŽV 'cr£xž)‹M Ä;¢›È4c ø‚ Ó‡ÔªU;Åá;±„;%œÛ “ä¼y3‹õd?ÑMžÓ9UÈÏgß¾“b=¹GŒQÎè{ˆ’3ÑÐð‘Ù‘gqÕÑ\š:á‡ñâÛü3ü¦Þ32™cîý ÷Hž¼ˆ(¶/ÊÆ{K AN‰Î¬¥ˆ“ÊõѤgÅÊêÂ…µ¢Ÿ¸ã‹âm6ÔÍœ¹ƒˆŸNëþnÞcÇ.qØÝ8›óç¯Hæï$¤ÊH Ùò›‹/HÊ”I¥ì9ñ·z@sAÎ녛ɚ589fçÜ—¹6Hh0D%¡½ñ8¸Þ-[xœµM`x‡òß—´nĹ2\ËÉ“ç%Áç:çmçGBL’Hš>¢;ÉáBX(/W.¯Äs#9_æj‹+—†æ&Æ0€ÿ’r!XƒßoÚ´i’0o®Žà¬~íÇ9N¡¯}`ÜñÃ?¸|cä ì1¨Ct_`×®]:„/u#«cˆJdØ1Ïb{÷ž‘Ìÿ³$QÌÅ;¢1oзoÄ€¡(èçÎí%)t–œ93JHÿÖ¢0*‰ÚÒK|±‰÷ëC­@÷Ö·)™DÊŒ`¡€H@b>bwpÆŒÁêÞç~uDœ9€ØvÄ+ôÈ 4pà@Ûø†|ìdsžú±Ç N"u}ˆ.ãD Q‰.MûÅÀÏ?ï¢uú×I¸!Ìe'Lh#IÁv­öÿwI’$’4ÝUåÊtÉK/5ÔßéÓ§Ô–d›7P>Z\hΗïñò·Yëx%È-ωZÎ<¸&!„ ð'ó+k0`€ÎåD@Q;…›°{öYÚŒ”°@Ľ#ÖÁWIGø#¸b%2"£>Š8tàãï¿ÿÖÁs!„¬<Û@P\;IßM%:ÁU ˆK4n·öv[þ‡† ¦ÃgW‚±«$/9¤xgq ¢ ,š>b +Wþå¢ ‰j ”)“‰®å.‚©X1¿ˆ² FÚ”°(Ÿ|òŒš:µƒü£s© ÑiÓ¦¢lNƒ%ècb¡µYBþc€åâ+sÙ¥nB¸Ù³g¼“+:â7¹•ÅÆDp® ÉC²>€¤nl†d%J8i Øø på$Mn%wÿÁ;ñ#è¢E‹tÿ$÷ëÝ»·nÇ韧D€°“¨‘'ˆ`·læDPwŽíFDLüÉüÊ|!jˆæHb‡(ŠÀ¹ž²ÏNœ8QoÔÌŸ¹ÁQtéÒEG¹†ˆ¢B‚; ê˜×Ô©Su€[Ò}@TˆN–U[|E²<ú±?pL{éoË–-šÃ³ Úcè…ʞϛ7O×'™‚£2¢oá;2ÎÇîÇ—oCT|Á’©kÀ1ÐWÀÌxâĶrb-©cf¡ŒŸ?¿”ÿ‰F¹c$~*—Št8L—1až;·‡l‚§…»yU¬Äæ‰,úD¤íâÛC6#òÌÀ­ÀM‚‚;§ï§žzJo^œ¼‰@ÎFJÆXÒÀ)ð!½ù’H…§âMäÅsˆDçÎ5Q´%6c’“‰M˜“:œP­Z5ï‡p@?O‘: 9}H±ѳ3¿R×ÎüJÎ ˆ€ñéʼnF§B9†°PpD¬›9}‚CÌ¢k§O§®sUˆ$}²ˆDÀ•¾J•*z<{„‚XÚújÔ¨‘NyNðWòAÄ<„˜ ¿ä4"Ø*„n„XÜI>ú¨§¦~—¢â7ÊLƒPaàðá³"f¸¬=‰õL„_{­¹(é“È?NñNo®Efßφ‘[NcµdzXµh1YÂ×{Þd<õYYÁ‚Ye“l)ÿ¤/‹H$œüÞSO?ý½Y»øò  è() œQbNÑlÐl~¯¿þºæ ·°)²¡³YÚÑÌíÌÎýpmG'6é œË¸¦á ˆ~W…8ÊÆ…;@ñíœÂ€S»˜ÍŽKÇå,zu/gþ¬H$|HGÔƒ:Ò.§ÇSŒ9ú¥=ѽOãSî<òIAìó‡@CÄÇA¼cAdí¹"ŠƒóâÝñOóôÖ_d冨D†ó,V1€çüàÁ åÔVY~ü©å0µücÜ«ýQ&N|Zþ¹U¥Kç%ìk"“¯ªïG^ ²ì4rr|[NÎYóþùGD¦_X¼Wk?ǃh^бÿú’e„®Ò:¬}µj¯«?^'ÿ´wÃÙGs˜8ÕœÓ<ú ·Â‡Ó4úNùœŒ!2€-.Ó7N«¡7€HÙIúÓp"gƒD/CìÆ5A1ç7EH6qú![-›?å´NæWOÙgk±Nå"?æðÌ8ôBà@4E;ÜEpqè­ ”ÎDй/8:Ò“|] œÐ… ´˜ƒÅX0À•``Ñô#@—ñÜsu…óxR䯣EÎ\F”Å©1·&0­ZUÅæIÍ­0]'«í@IDATôÇŸÓ¹J]‰'°Çóô IjwúG܈þQ—3ÐÎ7bHÞâFÒZ€Œ ÀÜ"u¢ BÙ  Ä LºÒ1âK¸ëw–é97mú®%Ê|Çü—.ýÓªQã K6$G™ûÅ A_X´“Ð$î‚z/qµ, qo/>ÔêØñCK¢µÿ˜èL6^KÄIÑîZ¸Kˆ€K?"¿·D4äR&"'KˆŒ%zK6>—g"ú±D¼e‰ßQ.܈%–X–èJ,úóds÷X_L{-±¸Šô÷Õ’''ºh#„Ê¥©ä(²X¯;ˆÞI¯Ó½Ü×{!Þ–pnººpkòÂÅYàÂDt¡Ìù¹óµ,Kô8ÎE® §m²l:ˆÅE0ÄR¥r‰Éäêã—«£_SÀr 1Ùœ9eîÿûßSrbË,'ä¡AçXœÇB×2dHC-{䑇t°ÈªUÇȉuèüóSpî7ܯûôé£9”àÎÀÉžS¹3 çÏ–Í{œ3¸ [ïâÜŽÄoÎV]ÎÏ<]Ã¥xªog~Î Å}]ÌÁ]ׄ¢žõº܃sæ\÷çQÝcùfg5EïãM?E?¸gÅE—â^Õ˜‘>@fLÁ@˜bà÷ßY Œ·$—ˆ%q½ô,Ož¼`*4ħGǬÿøã°U²äpëÂï'6*ö•% vKt޶1}!yè­Þ½?µ b½ðÂ\kûö#1=¤_ýƒS9~ü¸Çyd#áÄì ž8&ÑKXpb†S‰”œš‡q x·cÆ Ç‚¼°íp%%Jä%ãÇrŠÏ.Êà"â°ÌQæébÔ¨'´µV[Î9â=Õ Vžûï½÷´(•_sÜ "“Ÿ&Î|ÅŠç·xãP‰þÂÓ‰<2rRw·>²-£œÛa e[„9—›ëðÁ€…Ï»03‰DÒÅ¢ ððùÅ)î nѼyÙ”ïŠÀ(ÄjlöìŸÅlóL¤½¾ývkQôfsàiÒï]ëœHá!kÁaãÆá:oÊ_leë“L â* Q‰«o.Î?”C‡ÎˆÿɃBTi,4hPBLSwеÑÝ|äjÔ(WKOh?¾•zðÁŒÊciÈÍ€q¸$µ0abHÆ=¹^Z¶œ"¦¨[Å Ö5l¿§ù³Ì–Ï£c0ƒ÷ß@ãÆ%²w‘Hr&óc¤è1à vìС²øª$?ˆ…b>ÙWO±K—Åο˜lÆåS¾.&‰4ŒOKùòyåÞ.^|qž<ªfÍê®*½Õ‹éò7n Ù&!:Ö‹óÞ¿ÂEUÒæÒˆÿ  „; §îoÈÌϹreŸ…SÚlûö£=Dóæe]¬Àh”4i"í×B H±0véÇÓ Va%Kæ¿‚)âÏÏ{OãDU†Ï Ž”_~Ù[Öô¬÷=úè[š{!/ ÄÒ€Á@¸bÀ•p}3f^1€þe=9O È"¦ÅwBpÔ­[T›;vÎ¥]Æ%Å\2µ‹üÉ¥ÜÛÍèÑOˆ§q~v%‚EæËw¿8¨5QßHͱ̙ó‹è“F±üZ¸ªcÞ–aÊ b †¨ÄêÍÀ` wîLâ}ÇC½\¹<}õ€î†Ó=>+„¥w‡×^k¦Æ_e@I»ÝС‹'øCâõ=Qî݉7e?‹­o{}³Äk?mÚÚrŒÄcŸ}¶AÂmÄ_¿—ØÂ¹70 ¢ÞL«XœÊÁƒw¬£0Ïýå—»QŒ “2oÞ¦3ƒ£A<öúëwb0E¨à¡à…•Iåutã¨,È<4Ñ"Lª‰{¶qã0‰Ü@BÉïÃ…‘w¦6­öEÔ£4'h ¢’ _Ü[üƒf’€gõÄ+TÈ+DåoÇ" 27oÞvxÛ;È›°„pqˆËœŸy»îÑ£–zöÙºÚ$CÛc™C(þ÷ßï ½öÛá›#Ž¡Jý[ –hÄcÞÞ­)9 ¢s¸5=Ç’IÒ­ûîK)áZþ“Ìé$9S2—\&X}þù/FN:™|\>þ¥KÅòêå—i †á iÓ&—"•µ5Ü·ß>§Èv‰S'™*‰Ì.b¼pÅŸ™Wð0`ˆJðpiz òäÉ$`wrh”/ŸWÄ@w¹•'Ÿ,+ëï-¤:ÿÓO×û5ÓfÍÊHøô:º1чÃÀÏ‹/>¦¹¢:ïÚuL8š7„0NÒúrÔ0ˆ) $’ðϯÄTç¦_ƒ˜ÀÀæÍu¨ù’%sjåûæÍäDþŠ„]ëÖíVp&$Òr<ñûö­ýYÈ é+äÏŸY{ñwí:C„g–°ë™}m«õp}ä‘âÚ”Ü/K—nÎëK!8ô¼ @‰G r«“6ƒÇi ¢§__œü¾}'$üÊY­OÀ =B×®5È`“Äôå¼;`^Œ©ðÂ…[%íp ÷Ç‘Þã|X½z!Õ«×§§*¥dùËiýpz‡!lÔ¨¤äÒ¨.„ä^í׃i²êÏ}K"ífßžÄá4m3—8ˆ#þŠƒ/-¡ONÁ¶c£$f: l”œô<¢“hmØà¿(‹`•ß|ó¬é"ù]ý´«Ž=V¿~q; »vÓtÚ#" û×¶4D%l_™˜7 e×®ãŽÇ•*å"±×q'=›&ÜŠ'Àq’<ö’¬Ëá‘艹·2,оû®¯š?³(þ¿òšÂÕ[ûp*GÁߢE9qí"„x¤¤æ-«~üñ/ k3Z{ð“™6 |Å€‰ýå+¦L½°ÁAóå{Qâb½¡u+xËÿùç5n\ Çñ6ïÐáCíËá(t»èÜù# Ë’St,þç§«K—®©Ž§‹(,…š4©$GŠ?¢£«Woè´Ì‹ÿ!ùãwHŠ4’n·˜¤ß-*i’ NÚY·÷anã §?Þc‚Zúœ ÉOT®œ_;:#¡H‘l:×ÊÊ•;‹]®áV¦M[íb’ìR!ŠÌ™ñp‡˜´h19^yµc’Œ‚ŸÔü1Z"´Ò”_zéKÑ% “°ý³uÐËøœÁ2Š×o{Á€!*^cŠÃèRöîýWOyò¬¸‹ið1ùì3ïæÃø¹`zÛ¿ÿç/…7\ ¦Í„¬·3î0L–.KãjÙ²bA6Ps+¤l.[v¤¿|Wë˜ÐcI>Â0]™V¨0`¬¿B…i3NP1°cÇQÍT¬˜O÷û矖¼GòÎgwŒáAçή þúâ‹M qO©R®ùÓ=Õ÷VV½zA-zî¹YªB…|’w=·ªq¾³mðöÄ‹©r-Í5¢ãzÿýU"‚\,¢ÈÃšÈ“ÓÆÞã<̼bÀ¯¨1Â'NœW¿þzÈaL¨úõë÷:î™;Aá^<-}^¯Ë)W.¯ˆsfI8–‡£•G¢„oL÷îŸHÒ¯L:в×AãÉ[Y£F!ÑaUÑŠ~–†Øqôèš`ïÛwRDdÉ’6^éâÉ+ ú2Œ¢>è(5†Û¶ý#ñ¼æjQ ãÿ‰'Þ“¨Å#\†Gaß®ÝÚt–¬ŠÞàÝw—«M›ök3[ou|-‡‹Â4÷™gª‰OKm_›ÅËz¤&Àuݺ=¿ÝjÕ ¨ªU ʧ@¼\s‚_”È@  Ä9 ˆÅÊ“ç분䵡|ùQÖîÝÇí[Ç÷ãO°–,ùÓqïéB²-Zuꌵ$×½§Ç~—?~Ϊ[wœ%Ù$-úg8}ú4ŠÿÜsO"+Y²Vš4•­L™ZZ‰¥‰ñ1C±®„:FžÁ+â&ð5Éœ9­#· «@³zõ® êØ±ªøa¬‹Pî\€Â}„6Zƒh-º€¨gÁ‚ç}=õÔ$Ÿs¹DwÜ@ÚŸ9sFL´ói%»ì1ö}ûöMÑ]ý£ÎŸÿI<9G"JŸ±±br¦oK~×'D§yÁãÏÍh1…q… euq‚$„Êš5»#Lä]ø± "‹ Pò£xá…/"«æó³)’ª>ê¬0& Z° Eï3êLÅ8ŒCTâðËKèS‡¨ìÙsǬ\ £'Š09Uœ…}ëÖÔôék‹=^÷ëW_‡wñ”ìËc 1[&|þ“ONRË–m÷¡…©b0w1`ˆJÜ}w ~æ… gSÛ·qà<+ø¬Ø)†ä„/øÈ1Ø»ï¶U£F-P¢‰¬ª_Ïš4)­fÏ ™¯`úÕØT6ˆC0D%½,3UW )ò€ú믣.…èUˆ]å8:"›;w£û£÷xãc¹õüós#<‹NA‰9Ô? ÐóëÔiººx1r±âZÛÇ‹ˆòÏ LÑ?ü ?‹/é.‡SæÍ›7Ϩ³gÏ—1Ñ—üôÓO’Øìq®½OÎ¥Òÿß\¹rEÄ­k<=ò©ì÷ßWÇŽù—óüùó.óg +W®ô:ž=†?øà µaï}FõÀ•¨0dž‡-àJГ\¿~Ë1ÇZµ Ë?YD¢B….]ªû$£.i„OŸ¾è¢¾¯€Cà—_öQ<^ô,o"Æ×ñâJ½%K–÷NP¦»mÛ61én§‰ÃÒ¥KõuõêÕÅ8ठœ_¦Ç$ õ/zã|饗ÄÀ£†ø‹úSºti :_¸Ôãò{é"†C½ÎéèÑ£røxÆësOØäí6?ÿü³¤pøÇS5¯e»wï–@Ÿ-å`ò£ã³~½÷¨öþàwûöí©ò:‡(e6`0g1P»öXK|Vó—`“V¡BC¬“'/8Êœ/yä-kÅŠÎE^¯E_c-ú²uàÀ)¯u¢ó@ÄqVñâC- Ún¢ÝVNë–XEÚϾ}û¬Úµk[M›6µråÊe½þúëb‚]ÇÊ–-›õî»ïZ .´d³sôѺukKNÑÖÇl)RD·ùä“OôóU«VÉ;*d•,YR·ùðÃ->²‰[²éZMš4±êÕ«geÉ’Å1b„nÃóöíÛ[%J”°|ðAkÁ‚º|Μ9–}ýâ‹/Z_|ñ…%'w«páºÌþ#¹õÜsÏY¶ù´].œ‚•8qbK6wkõêÕzÌK—.éÇ—/_¶Æ¯ÍÖe£µ*Uªd=ðÀÖ³Ï>+fâ7,ád¬üùóëºBˆ¬‚ ê{ártÙµk׬Î;[2dи‚ ¿§¢VŠ)ôº $ï~±uýúu«[·nºÏ™P¥J«ÿþVÖ¬Y­ZµjYgÏžµ6mÚdåÌ™S?wÿÃ{`à{òäÉú±=†_ =ÍU8=fÂO<ñ„õ裺wïr/Ö_bžÉ¥Ì¾-4`0g1ЧÏg–ˆ´\æ/Ùesq-³+ÌŸ¿ÉjÝzª}å÷G­µ4oA¬b ˆø×ˆǺy3vüY|!*;vìÐ>%lV}ô‘¾ÎÂúú믭9rX§N²’'O®7m?éóÈ‘#VêÔ©õæ»víZ½áCá4!q—Þ0ßxã QY·nuÏ=÷ˆ¿Ð7ùý÷ßoýûï¿Ö«¯¾jeΜÙÚ¹s§5oÞÁT·N"ýUXGãÆ¥µy1¡C|Nª* Þ~{©/Õý®CöH4ŠÓ¦„‰™(2öàø=™(¤I“F2lv•èÅ(ÙØTÏž=%>ÖrGUÆŒEgUÝ¡Ç@¤$\ŒN¨½$¢ôßÕ`£A8p@É«Š+&ï£q„Qå´-A*›(9µ+ÙÌz@NÐJ8±¢{R‹ª:$ÞùÕ´x‹ç:tPrºç2$MšTBð¤q”7hÐ@÷-ÄC!B, Køì³Ï$A: 4Ú_2e6’8f—µ¨)UªTz yóæ•@wENèUÀ‡psÙ³g×ý ï@ †®„Ñý&I’Db¢¥rÌEˆŽF¢??¤Åmèy„êXrƒÖ8.Ñ!*£½pbŽ%ÜD-X'Ѻת÷Þ{O;wNÏÛ1Èÿ_x›ëòåË%¿Ð I™ý°C<çÞÖ×{CT|Å”©–@YŠ3Ô¬‰^e§g{çb}yqÇŽUÄ$jób»1Ö`3f¬“Xcí¢ ~“…,Œ <$›ô›jÕ*ïáúƒ:°Ÿ‰ØKÒ'–ø÷*á@$¶Z—ØìE & ̾Ó¿pêûï¿WlˆÂá¨råÊéQÄZº'K1Ðç}÷ÝçèWDCšQà­ÜQ9’ )IÀÐRŽ“¶mÛªW^yE6áŒÔ·ß~«„ÓЄ„ùBÑIð‘¾d½¢7káfäÐÔÑzˆ9နˆéÄ1÷€J›6­®ÇsÖí Ž"Jr<˜@"Eè{ð €wa_ô5}8Ðña,œ…RÂQJ*ˆÊJ¸F]×ý§¹ ×§uH :úwoçϽ!*þ`ËÔ ; `QõÇ®ÊN¼ÙÉ'¿yóómß¾Šägßâ³—{¦L©Õ›o¶Ô¹é ±S@œ0œ% ˜££ýz"Š15v0úe£E1·k8”ÊÏ?ÿ¼Vš³ñÁѰ9³¹±y²Ù»#uÙ 9}C¬ê²ÙnÞ¼YŸô9UcÕ„bÀzLDnúÚþÃ".ÓÊ÷æÍ›ÛÅŽo8ÚÁ‰¾D›kA©ˆCsHuëÖ“ð!bÀqZíß¿ßÑ\èaTŸ>}T¿~ýÔŠ+ÄxäºæâàVnݺ¥¦L™âPúC œÎbL=ð¢CÑÜs¨®Á ÄEô*šÀÁ]ÙDȹ­§¹‚#æ ¢L݆ƒ@t þ¤ª‹LÛ8‹ R)<׉Fœ={zÇ:êÖ-& ·Ëé-£Ì¾€H4jTJ‘*÷ù籋#ý&a•(øÅ‰ñK¸*ÒÊÑxX®\™÷ b}6Kç)™2¥½&Ñè2ƛ‘¢PXOÁ}@<N¿p8|#êÊ;·&2ˆÇûDεݧzNÝlÔÚDc¢?ЖbÔżù°!bÉ%Æ–¿¤ˆDwjnˆ:Ì a6]Qvë¾à¶DGŒ¸y#N¥¸ÞØÙ˜mñÓ°aÃ$…ÂÌ¢pˆ‘SBÿ¬MŒ4aºzõª¶&«X±¢BLeþˆÇà„À b21@Ðãó§Y³f NI”äZìÅ\Ýqœ?îÏŰA"A¼ ÅWp5ˆÒÆçR-²¹ŠƒêÔ©“ ½vo\•K‡Þn´FÈü1ˆÃˆÀ¢$uµ Q•(fÿçuU’5R[^˜ÒW n•*¯‰åÑo¾6‰V½>X¥ç¬ —Þ&ã‹¢Þ[[÷r9ñj%»s9VR(ÈA6dm̈́ŊzP´£¨FÉŒ‚ÞõbÞ«Ò´IÀjK|[\‚•2VZ” Gáqx¬³<á™ûÚéGˆO„z"³¢³6æEc§a »ÀÓ\QâÛíízÞ¾#³þ2â/oÔÖ”Ç ³ëN’®»S&S¡˜ óßÝB§«îÒ/Á*Q$;ºg‰ó3®ál¿ó3Nú¶žÁ¹<˜×pJpDœìå6—ãüŒkÖWæîk§Oº$ÄlÑYó¢€1l}Žû|¸÷4W8»½§6>—y£D¦Ü` ®``Ñ¢m–x¨G˜î€Ÿ‹ŸÄÚåvÜ æ¼þš Ïœù“kíÚM»«ý†C’ —Våʯ‰Iéþ ,N_ÓZüAlà´Ì)Úð±ýGÜŸ™ûÐcÀp*>“XS1.b D‰œ-³êÕ+.æ¨ÞCÀÍ ‡ùî»ßýZv»v•Eþ}¿9ò[¿ÚZiìØ§Ä,µ±˜{~¤^}õ;—(öìv˜Òú ˜ÖŠ3 £§eO : >ÂFüþïÈÌ0 dÏ~ŸXÎÜ%§kâ€a|áÂU¯=ôî¹ë^Ÿ{{0~|+­¸.É[• —c,°jÕ` MsFÕ«7N‘UÑ€Á@¸aÀ•p{#f>a dÉœâÀvÈ¥-'üÊ•óËæï9•ëÔ)ªOýk×FÌÃâÒ™ÛMêÔÉÄ¢¨£8Œ}!VIw,ŠÜªÄÈmúô)eÜbvüˆøY¼¯2ÝCýû;02,’œ­‹Ìµ«µ•Á‡+>Ðw9;“:ÿæ QqƆ¹Ž³(U*W¢Âb8Ý/YòG¤ë‚[™2ee¤u<=ÄG†ü+Ý»!‡‹§úÁ,#”þ?Òk®WïMõÛo®ÕŸ± *"•7ƒ¿~8‡zCT6ƒA‰ù¹çêêb’hLDb¯KHúÈâÔ‹6“ k ¢Ö¯ÇLÎ ”.홨ÐGÆ%¢ÜXÙŒŸ}¶NÀÜ ã¼øâc%6±3f!·± Ó©SÛKäÚ¶êÿ[$!Ù§JDgãÛ«/% nˆJxÉ e‰˜øîÚuÜ£·y£F%%¼øV9VœñÓ¦M%­Ù¾ý¨s±_ד&=­ Ø_lò«]LU®X1Ÿ‰!”à›’ ëSº§˜ßô›°0`ˆJÂzßñzµÉ“'‘,yY<šçÊ•QòeÜ'ù"%MšHòbÀ­f ‚É9sfW5zôɸ?,p~ï½÷¨§Ÿ®$ëªqôè£ã%ìË×’³äJXÌÏL"þ`À•øó.ÍJeË>(Ž€žýMpüöÛ¨ã|±ùbö×_ÇÆi¾|÷«I“ÚI ÙaÅe‡Íµk‡ˆ£›’ô»¯iQÝéÓ^«ih0àŒCTœ±a®ã<Ê”yÐ+w@~úE‹¶Fj’%K¬ýVܨ^½ làõ´È)Üœñß=ú ±Š(ɰ® q£'õœ* :x0m QIXï;Þ¯¶|ù¼BT<‡ ð$Ñ…×®Ý%Ú¶­$9ÊOJ~ò}QÖ¬BÇŽUuü±=fF©Ï‰¬Ÿ˜zN^{­™¤û}IgЬ[wœŽg¶wÒôÏ1`ˆJ<Á myl’X_8à9‰ÜÊÂ…Q‹Àð[4¨l¸Ñ·âzõÕfêÆ[jԨЄÊäg̘ZR%7Ò:—lÙð“Ä<(„ãA—!'N§’'ϯ?gÏ.Ÿ Ø‹Øì21s)nݺ¥î½78ÚàôétÍCƒÐc R¥übëÝÇ]ÉîÝÇ}övGLEâ·ß^´Å5’yµ‘[q *ÕªUsIA{ãÆ"Û¬Nžœ#Ù6/º<3)‹Ã3esâĉ…øß ÚÏÏ• ¡ÒtN@¬uøðY]ö8-¬›PØÏ»ÑãsO…D þüó_|&Džúp/1¢‰ѵmûAœ$,îë1÷†¨˜ß@¼Ä¾!XEæOî“yó|$œ)SjÉ•RSE7|‹;ÂÇŽm¡²gO¯:wþÈ'ÿ÷öæÞ` œ0`ˆJ8½ 3— b råü‘&æ*^<»J:y¤„Ç}BݺÕЉÀ° &ç>mÚÚ*ìæMãÁLÜš¾B‹CTB‹o3Z1P¥ z•ÈCÝ“›Þáõ‡}\ öuPWgE€|'±™92¨ ‹áÎ>¬þüóÏ Œòï¿ÿJœDdzÖ¥¿U«VIÔêß\Ê‚q³téR=cÚŸ+W<§"øý÷ßÕ±cÇD¤ëûzOŸ>-¿ÿ Á˜ª_}¢âºL帄ô*GŽœU§Nyëþä“eu–Ë—¯û¼4BèÉ'À`B¢D÷ªiÓ:j¿òåGEÛ‹?˜s ×¾–,Y¢Þyç Lï§Ÿ~_›Ç$4͇ŽþŽ=ªjÕª%éÆ8ÊÜ/¨?yòd÷â(ï›5k&¾>_IµŸË—=ëþùgÑåý#¿Uß×»}ûv‰77*Êy»‚!*Áƨé/l0€¿J•*Ôš5»¼Î oyêøêaow4fLs¾åÂ…«vQP¾q®üôÓ®Úi³[·Oâ<Çò÷ß«:uê¨'žxBåÎ[<óßPuëÖ•„i¨‰'JÈšïU«V­¸kÓ¦Z¼x±š1c†*Z´¨n3sæLý|õêÕªpáÂâÍ_J·™>}º£ÝÖ­[ÅÛ¿©ª_¿¾Êš5«²Ýïzöì)"ÅnºŸòåË«={îD¨ ôsNþôâÄ µwï^Iað·aþls5EŠÑ„ޝóçÏ/Æ×Ägîܹš RïêÕ«º/®úΑ#‡êÒ¥‹ÄDk/&çõ$²õ Íí°Ž5kÖ(_Û¶mµˆnÒ¤IšÐtïÞ]%Jt'2ö|>øà…ÈjĈšƒ™?¾DŽ~Y{àÀ¢±‚`²ðøâ‹/ª;wŠÉ«*K–,Vh¾^ÿ™†ö¯!*¡Å·-ĨV­`”D¥FBòx^þ)ýËô8xðcê믕 èß ¯ “g8üWžy&n[…¥I“FuíÚU=òÈ#*eÊ”z3„È Zâd^½zu­S€C©Q£†Ê–-›>}÷êÕKoâ7n¿—“’Îà€&ÅŠsálä,XP5iÒDŸð6l¨9ž±aÃÁ9,Z´HWïСƒp¨U"\SмysÍ­à‡Ã&‘ó‡T©Réu±ÑCиgÎp8ëׯ—<5)D_6IJú¢òå˧¹/80¸› 2¨uëÖÉov­zï½÷$Ýó9åI$Á—ûöíÓx¤-ú“åË—kÂöðÃËïæ{˜~¢Rt›ÁBûÌ?¥&¹èñ]yá…/¼öˆÂ¦Oï$›GR CÿÃþb«m®\¹vxl§NZB¸$q™Ê“O>)9nj΄kÞb1Ä8påÊ•ÓúNà¶×w²dÉ\úàæ¾ûîs”Ám@ˆœËË=\0D`_|ñ…ƒKñPMsWÎåŒwãÆ yOW41([¶¬ÉQÂ@œb;pà@ýÂ]!¦³ÅhÉ“{áƒ~%iÒ¤zOëÖ­UñâÅÕñãÇUæÌ™õiÓ¦u*d׆¨„ Õf ØÂÀnÅ»^…yAT¾ùæW¿ýDÈgO 1,ÈüÁ¢°É“Ûi?–Ö­ß—Ô¿×üi'ê¢ ÁŠ×p0-[¶TÏ?ÿ¼„ÅùIo´p4lÖl¦pˆ¿Ü˜M™M–Ó>ÄX¹r¥þFÌF¿cèܯ¹gsFçñæ›oºpéÒ¥ÓXô5\Œ tFè8Ð!æã9ºD€ˆ¼Þzë-µlÙ2e·uþf]p3ï¾û®&p)žbþ6hÐ@~ —TŸ>}$eu?­Û/pƒ_ýµnaŽ 0D%6°nÆ )Ы¬Y¹^%[¶t,òAMXü΋8Dž;çÙÔßþÜësr?¾•lvÙu6Æÿþól!äÞ.ÜïYpÿý÷«Ò¥K« *hq¢*NÛp8eʔѢ.6lˆ â1Ä\lì6Øýprç”^„M—6zÚ@$úöí«Ë^zé%­wàÆ¾¦»/DTp pIvýa±…b œÀÜQ”#Z6l˜jÑ¢…¤­Î£¹­§Ÿ~Z[ޱFtBÿûßÿ´øýŒÝ¯îäÿÿ —Ø!¾b¾=ôVâ;סøa3€'¸4ôSˆøÞ~ûm­ëÁxÁÓÎ}ÅȵPAñgÎ\² lIJßH×)‰»¬Ç{;Ò:Þö•%b0oƒV>fÌB«J•׬C‡N­Ï@;’Sµ%Êï@›»´“¶%Êm—2Q„[rÚw)»pá‚% }KÓ–X’9ž gbU­ZÕnÆG¹p –è,áp,9É;Ê£sÁøî \ƒ£³Y»ví²„Ûq¯æÓ=í:¤ëÒ—P¯í˜‹è~\ž ×ähïòÀˈ&-Æ N%FHµé4œ0>}J9©f‘pøÞL2_‚;žº»tFpF¶þÇß1h—3gNÝŒ¾"Ó08g@e·w.Õµ }*L›qbo½µD+ºñ† Þ{o…XÑÃÙ{duÝŸ-^ü§ˆ:¾â2HäáÑOæåÞ¿óý?þ%¢ŽY2ÏVêÑG‹;? Ù5HC‡Õ¦³ÑqÖKþú6_[Ž>³b÷ 1¾»q€?cÅ÷ºàÝM°pd8•øþ‹1ëÓ€ a#Ž PØ/\¸UûˆDU×ý9›{Á‚YÅw`™û£ ß³ž9szŠ>`¾Xˆ­ zÿ¡ìÐ_‚ÂÜ0Ûµ ÷œÎÝ å(׃µYÒŸ¨1`ˆJÔ825âJ•Ê©þý÷¼˜\ÞUðzZöuësÒMžGY†§ý'Ÿ¬‹ß÷ÁQÜ÷]?5sæOê•W¾qlî b†¨Ä ÚÍ ¡ÆV05kò‰[éܹš„ÖXãÑ”3ªygΜV ÜP,•î†úˆªMtžgÏ~ŸpVýÄDöˆX -1†ï1Ì¢3.m±†ÂIÜšOÜÅ¢C[Ýßí Q MqˆŒV­ŠÜ_……‡åþòå;Z¾+É“'US¦Üñ¨?‘ãQQ4¯¼ë?áG7~W…¨ˆÅùÄjTàéGcˆŠ'¬˜²x‰Úµ‹ŠÓÜNŸ»v­!¾kÆÃÛo·’Ð+$>Ô‰€ûð§!a]Æk!áPjh˰uëöøÓÜÔ5 Q *MGᎸA®_õ†ûøã¥´^d×®ã-‹LŽ˜÷ë7; 1Z@ƒJ#¸¤>ê,q¦f© –Úig00 Q u¦a\Ä@½zÅ$Èö(§ÎÉ¿cÇ*Z·ee/Ú·¯,VJÉ$úlÄ"^š¥¸\¹<’wc€Ž"ЦÍû1æé”ÉšNâ Q‰w¯Ô,(2 Ô¯_\ˆŠo™Ûµ«,¡6¶ªè„E?¾µäÇX®þú˿ȑ­Á—g ÌŸß[‡v©WoœÚ´)f2}™“©“00`ˆJÂxÏf•ÿüù3KÖÆ$jûö£QâóâFJEËë¬W^iªS_¿~+Ê1ƒYèÌ/½ÔH’‰=)aÐ?–€†Kâ|Ò¯`âÇô30D%fðjz c [¶Ì7n¥gÏZjÆŒu:¯I K"eq¾|™%ëaìD­S§¨˜RR›7ï—Pî%`á.Å´3ˆ†¨D‰"S!¾aà‘GE­WaÝäcAG¨3¤;,³­¿~ý^»(¤ß™2¥VŸÞC²–Ðfdzgû—é2¤“5ƒÅi ¢§_Ÿ™| ¨P!¯’(¿>ŸØáV¦N]-+.z½óN ½>;VçÝ»×”Tµ}Ä ½¤¹}_Ð ‡¦Á€7 ¢â 3¦<Þb]ã>$ù/¶ú´F8•ŒSKr%ßDfÞ:%YX“&¥u HouBQŽ^éûïûI™y¬Öݾm…bh3FÀ€!* à%›%FÄ@Æ%ecÝñ—’>}êHÎð^žú^LÂëÇvH2Jöí[O²>«­áê×ÓXˆùþMÍH0`ˆJ$È1â/ªV- ví:æ³ø=ÌÅ‹W£Ì Æð™:µ½vLôÅ-ªþ¢û®eîÜžšÀôì9Sr¥Ïõ'ÑÛ´Ÿ0D%~¾W³ª(0$I"‰F\LýðÃQÔ¼û¸_¿úAñRÏ•+£zíµæ’·|†Îñrw„Ø»"‚Àš5C$)V*U½úëjÔ¨J2fÆÞ„ÌÈq†¨ÄÙWg&] ` µh‘ï"0ô!ÇŽSÁÈîØ¸q)…Ž…p*á)S&Õ~-—ë×oÊü^—œê‹Ô¥K×ÂeŠfq†¨Ä—d¦3¨U«°NÉ{þüUŸ@Áÿì³uÄŠ+81µFzB[ …:ŒKT‹½ÿþ4êÕW›‰®e :uꢪPa´8p~+s=USóÜ`À„¾7¿„‹äÉ“HŽ•Â’èêwŸ‘ТEyr%<öîƒ ‚ûðÃNÚ Ü{ÿѽ'þ5tAõ꽩ºuûDmÙr0º]›öñ&G}<~¹fiQcÊÇ¯çÆžQWþÿxدY³[Gö¹Q$ÉñBR¯eËjF$UcõÑ•+×Åò cÆT ûÄ+ò¹0°1`ˆŠ ó 1@<®%†©uë^Rxû´©TéU!F¥mN_šDY‡¼ö$Ã1&œÄ\«Wï–Ä`¿¨•+ÿ¦˜jݺ‚ªR¥@8OÛÌ-D0D%Dˆ6Ä/ðr/Y2§"°¯ðé§ëµ3ä¬YÝ|me½.]>VxÞ¿ùfË(ë£Â¥K—TêÔ¾RoãÝ{or•"Ea•2eqѿ̕¨7¼U5åñ*TP?ÿ|7ìQÔÇÓm–å;á—Ëhݺ¢Ú½û¸úõ×àé&Nl«~ûíÇù3—@ëBTî¿ÿþh¥¾uëŠøïü&©Œ?•È×£Õ—IM÷R3ïÙ³G§\~‚†¨¸ ÃÜ$D `Ú»ÿ)¿¬›P\÷ï__ûCÐP–"ERõÉ']ĺl™œüö­_Ó‘Á@(1`ˆJ(±mÆ K ²Ÿ•o¿ýͯùµjUA5bDÕ¦ÍTãÕ²Ìó°Ã€!*a÷JÌ„b„ÿpáªO!ç1ºxñšÏùYœÛFvMb¯æÍ˪>ïö[‘UÓÏ®\¹"æÙk‚º† 6¨I“&‰É÷GêÏ?ïF–^¿~½é3ÆZ±b…ºq#0ƒ“'OJ¨ŸÔÍ›7ýîÞ½[¡kðvìØ!º¹Ý^«:tH~“®¹<•9w°mÛ6‰üpLÒ;Dlë\/ªëÓ§O+pé/¢â/ÆLýx‹§ž*§æÍÛè×úî¹çõòËÔ˜1 ƒžªwР*gÎ :e¾_sŠK•=*©ŽŸ Ê”! Íš5S}úô±äAqÒÜ¢ïŸþyÝÿˆ#"lÐ<øöÛoÕµkþ…¢)W®œºuë–„ìÙ(¢ÓÇ$Uó[Ž5̘1CòÕÌtÜ»_|øá‡jòäɺxÊ”)¢GûĽŠãþï¿ÿc_%òÃï<ÙeŽJnãÆ“LŸ?ª¨ê¹5‹p 15jT„ò¨ Q‰ Cæy‚ÁDåË/·øMj×.¢çÍÛt\½ývkÙNJ˜”o‚Þ·/²1Õ©SGœŸP¹sç–”ÈoH κêP'N”ôß«V­Z9ºjÓ¦˜Z/–Ì3TÑ¢Eu{ƒ]½zµ*\¸°*Uª”n3}útG;.Ê–-«zô衲dÉ¢ž|òIuùòeI0]¸µbò]R²pæ‘èßé6sçÎbþ²¾uêTÑE4®€xäÌ™SeÏž]"'¼§Ç2dˆ>|¸Æî@þ€ç h<3¿^½zéGpBpmÛ¶ÇÓÏåwðŠD‘¾SQëÖ­›î»R¥JjíÚµvw.m_{í5ý.x|FŽ©­ô† ¦ç.l“à#GŽHŽÚ*oÞ¼x†C¼¿úê+Ý7",pôÏ?ÿh"Éœ_xáG޹³n¸=Ær»m×®]%oÎ×êí·ßV{÷î•Xnt1}4oÞ\nß¾-1ß^ÕDwþüù¢êܧ/׉}©dê $ Üm–Í©¨_K.U*—zøáÜr*^+§íZ~µª2aP>ÿ¼»züñwį$œ¦ËGÕ$¨ÏÓ¤I£Ø˜8¹§L™RõìÙSo¾ˆ®2fÌ(¡ò«k½m5T¶lÙTôi›6""N×ÐD…z&OÀF§Ð¹sg‰ ½HåË—Oo´… R|ØT9¹W«VMèN€«¹z5bpÐÿýW%MšT×aCç´>pà@ÁçãºÌþ³`ÁU¼xqMtàŠà –/_®×D9ÖÁpAm`|ð‹(kÙ²ezŽ<òˆ®6gÎѽ-Õí%J䘓Ýœ Ä ŽI’$Ñmí28%ð?{öl=g›³²ŸÛß™3gÖs¥oÖýè£jN ê§Ÿ~RiÓ¦UèOàòX/B ¡âÚ_0œŠ¿3õã57.­9”öþº•‰WĈÅVæÌiu2­7ÞX¤V¬ØáïÔ¢U?W®\P2±>ãÏææ ˆª.\¨O½\³á"CŒ‚øý$b ,Y2ç.לúëׯk.k»Ì.‡@y¹3Pe¸ÍÕ@€äÉ“ks]æˆ&b06Z8+!×6 Æræ„ìrÊo 4HPÊ!~™2e²«ˆXõ¶‹Bßñàÿ/œ£€oæÀ>õÔS î Â0/p>zôh]µBØX+ÄqK8Cˆà¼n]àãCT|D”©–006mrU«V¿}VÀ΃f’ ‹åD<²(FEÿ3gvQýú}.â£]12F 6mÚTŸÀ9…s ƒn9'aNМ¨±ôb3CÔ„øË šBWQ*V¬˜®B]6dt%l|?ü°:|ø°CéŽ]@»ví´^} À¦Ì&ŠÎ‘°dÉýˆ Ý34lØPëm±åÏŸ_a-†Ø]¢,¬ª¯Ùàn1Ƽ%!îàPXm™/z »½{[»ÏȾÝÛ€o8:”éû÷ï÷J„ >ˆá¼ $kåpðâ‹/jýÖ§Ÿ~ªà†˜3¢2pÇ; Q k¦M¼ÆÁ?ûlC@k0àmS;w ¨}Tz(‡Ö±ôéó™(Ÿ#*†£jÌçö‰P/ˆKظ!è;8íÂá”)SF‹ºí@d,XPŸŽí¹Øý@8¨ƒè‰M²_¿~º 2m (ç©XfèСú9Dã!bB<W”!C½‘#Ö²sA¿’Û¸§=ý yD^(Ð!plįˆ¢œñYV_î€NÂæN³Õ¬YSsIè}¨^ÀúÄ{‘ê°~ ÐÝØÐºuk-ò£?ˆ*:{­ÎmÑi!Þbpˆ$Qî¢.8™çž{Në^räÈ¡Ðq9÷cå·P$n([v¤õçŸGÜJ}»•ÐøV‹“}«`- ãb+ö²5kÖ†{°,Ñ5XBnïÜPN¸–œˆ‹,Q [²™¹”]¸pÁ…¾%'dKÞ.ÏDäc‰ØË±‘£\6iKˆ‡%Jg‹¶¾€p:Ö®]»ôú<Õ— ØŸ㑈×tÿvø˜Xbyfßêo1YÂ)8ʸöu>Ì\;ƒÄ]³„cs.Šò܈ÎÈ¥ÞÅ‹-áuóqîRÙÃl—µS…µ9¿ÍEàJ“㞠éDIvM…„ˆ¶m+ ·²> ¥·kWYýûïù ;D:OgÍyóz‹âun¬s,åË—×~îŠoNÁp ΀ÞÀYGâüŒkt.(ÝÈYçàþÜùž>8ÙÛºçg\ÃIÙŠ{”×pôoœJŠ)ì[ýh=‡ \û:úvŸ ¶(Êî3ªoÄUîº(ÄpŠóqUŸèˆœ×N}ÖæéDÕ—ýÜ„¾·1a¾ œ0püø9Ñ­üOÌ[GŠR×U1íTÍë%I¼† ™/ºƒÁ:k¢×ŠÑ|@àIâ„MŸÞY•/ŸÇ¯ÞÐu Þñf5äkgˆ^Øœü"$³ù;oÞ˜ÀÚ¢#»/|U6ᘔܑ¹˜3>õ‰‰2¢4¾m0œŠ óm0à„¬YÓ‰ÕR^±húÝ©Ô÷ËêÕ Š ;›Xƒ-÷½Q5‰6eJ{‘‰$Šå»ÿØtp qÂv&(”¹Ê &1EPèß°\0D%¸ø4½Å# ›5ënò!—6jÔ¢]-–?gýmêWýªU è\÷ݺÍk+ßbNù5€©l0à QñY¦jÂÂir:pú¸Ok‹ÅÒ—1Ž8t,3gvÇË™â3²Õ§ñàðãÀÂÇ| ù à¤éÎaŠOÿ~¦RBÅÀ[o-sÌ‹b‚Ú< ܼy[ëf㑊iøë¯cb2ú¾˜ãÖïìÊ1=œéß`  §%¦À`à.Úµ«$Î`[Ô¥KþE±µ{ Cäë¯?)>_I‘vqŒ}£ÇY° ¯8\)¹îÇØ8¦cƒo0DÅfL¹Á€`€ð(5jg»À#£ó(_>oÈ6y²G.\ØOâ8íïþïÅCý¶y—!À!*!Cµ(®b S§ªJ£5ý‘#›Jì®UöH´úñµq† ©$ÚmõÇGÔÓO ùÚÖÔ3ˆ Q‰öLÛ”à䱎e›ü+¯4Q|2Î!eʤâÀÙU"Þf‘#oKÜ­ˆYÄ 4‹ ) Q )ºÍ`q;W“°öÑãVHœ)SÑw¬ °èÁ´¹k×BX&HÁƒ!Û ”01`ˆJÂ|ïfÕ~b yó2ê—_þ– }çüléZ}ܸþG ©~ÊõA ß:æ½÷žV;N—€”?Åðh¦û„ŒCTòÛ7k÷)R$•°öå%Ó*ŸÛxª˜={zmîûüów³{ªSexù÷]_ñgY/Y ï‹ób& IDATg‡Ä-¦Öbú _ ¢¾ïÆÌ,Ì0Ð¥Ku­l¿x10ób{9]ºTÓùAð¶52ùûïûÉø–äaŸ ¹Oþ õÌxñ†¨Äól–< dË–N²‘Ð-åZ±g‚žãÝwÛªwÞY&øNØÅ!û&@æÄ‰mÅ*¬’/~8¿†ll3PüÇ€ñ¨ÿïØ¬0ˆÀ$¸cÇE¿2L[„E§k[lá¾Ñî+ÐyüñÇaE¯…³©ÿýï) °3Ñ€Ÿi÷0`8•¸÷ÎÌŒcÅ‹gW¤õýî;ßâkE6U8…ôéSÆx$ãÈæ@&ÉeË^#÷I8™±a•¦8²y›gá‹é„ï»13 S à©N”Å‹D{†'Nœ—4¹oJþð’²öh÷ÈÍ‚~-£F5•ô¼wWE§_Ó6aaÀp* ë}›ÕuëUW®\×&ÆÑíŽ00«$lýåË×£Û]´Ú“›eÕª%LÉËþ¶ˆÃIFÇ›ÑêÓ4Nx0D%á½s³â ` gÏÚj„¥AèI‰VIU¹r~)2(F£“$I©Þ½k«¤óÀT©òšú裵êúõ[ÑèÕ4MH0D%!½m³Ö aàÉ'ËjË­­[ÿ JŸx½ÿþû!‰×µ%(ýE·“,YÒj ±3º¨µkw«ŠGëøg&8et1ÿÛJüÇf…1„‚L®^½K·<”vî<¦žzj²vPÄ œ+1ôHÛ·Q:TÕæÈ0pÇ€!*î1÷>b}Cùò£$,~/U¨PV[E^ B5gÎFºž\,á;v•ÔÅkÔ¢EÛ´ØŽd`„Ú7`0`cÀæÛ` L™²RÂË–x^íhí¹I—.+¹.?œ`Ó¦MBDËë)Ý{o •*U •8qFuöì¢pš¦™K0pìØ1•5k`¥ð; !¦ ƒPa C‡*Zç°ðDN˜ÐF'Ø ýŠKˆJÏž=•eY¾ÿ²:þguæÌ÷úž2ó‰8(Y²¤:~ü¸ýÚýþ6DÅo”™w1@Î’gž©¦&MZq·0šW©S'=Mg5|ø× =‹ƒ¸„CTâÒÛ2s K <óLuõÃ5œ}Á‚YÕ«¯6W;d²6†å[7“ò†CT¼aÆ” øˆ4i’«îÝk=}Ó¦¥ÅÛ¾¨zöÙY>ÎÄT3ˆ} $Žý)˜ Ä} ¿B…ÑjÏžu˜“`­høð&bfuth“`® ³âéÓ;«Ù³Vß~û[0»Ž“}7N¼ý ÊÜ·nݪ~øaµeËÅ53»7X²d‰¤+xG?¦Ýü¡~þùgµfÍõÆo¨_|Q_sïN¼õ‰áÃÆõãfÍš‰óëWz}¬‘ÄÎüý÷ß’úWɇsTtz¾ûIµhÑÂSwA-3D%¨è4%d ` FxLŒƒ 2¤RŸ~ÚM ú•úí·CÁì:è}Í™3GµiÓF⇕Ó'ú÷Þ{O-ZTåÏŸ_ýôÓOjĈjüøñzÜ+W®(,NŸ>-,Ÿ3êìúþ·ßîO6ðœ9sа®Ä"k 7q{ÂÓ§O'̺~ž .ÁùÔŽÉ+b«/¾øBoÀ/½ô’îbÁ)~Æ ªZµj΢H‘"Þÿ]§bÅŠâc“JDX>ø è­žC‹"j|J×4hzì±ÇÔ7ß|£¹ˆ˜ ÇW)S¦”ÈÒŸÛE.ßp>0]óæÍõçâÅ‹z ÊfÍš¥^{í5Õ²eK·ß~Û!vƒøuéÒE>øàÝï€$[o…èoíÚµjݺuêÔ©SêŸ\Cyš3„róæÍêË/¿TÉ“'÷[$ç²0o QñQ¦šÁ€/hÛ¶’Ú½û_ͱøRߟ:dìÕ«¶jß~šŽ’ìOÛPÖEŒT¥J…>€Ý¾FTÉ~ß¾}êÈ‘#zÓ唃¾ páŠÍÑíjÔ¨¡š6m*zª–ðÄO±-¤èƒMÛ>¹³)C@à0 V\ ý+t28÷1¸'ˆTãÆÅâîUM¼ƒh ½Åúõëu[þ¤I“FoÎ2dp”9_@Tá àÌÒ¦M«9±'Nè5ôêÕK=úe“‡¨¦K—N‘ È—/ŸÆx€s ¨·oßVo½õ–ú÷ß}¹×Óœá¦:v쨹6ð 0D%X6c$  4¨zå•obdÍݺÕP¥JåÒ©ˆq6 G`PT»o¼É’%ÓŠbNì(!lðœ¾Qzs"G„Å)œÙÚ¹Ã}÷Ýç(BÌc‹ìrç2GE§ ô p':uÒœÅ÷ß/‘&ë~nܸ!„ûЇ!‚°ù Ì=Q¢Dº-â48ˆ ý×®][xBá]»vUpw|6l¨JëÕ«§u-àÃq¥ÖîiÎxÆcØ0›xé‚úcˆJ !Öt›p1@ã«WoÈ&ýìž°8vl Sýúy¿xjNeôY²dÑ's”ÓèÆŽ«7wNÜ>ú¨&4è2à@vïÞa «W¯Ö3⸠”ç"- "&àÏ?ÿÔ\ ×°K—.é®…8þ¼&„è<à€Ðå ã@ç³ÿ~]Ç—?ƒ$I’hÅ}«V­Dö©¶Ôb.èŽà`à6àΈ7`nˆgÏž­õJ¿ÿþ»&4îõ½Í¢9ôIžúFŒGL"E”ø´±Ánçiά ½c¡ô÷ÄñÙýí[&jÀ`À` 0ЮÝ4ëƒVÇ@Ïwº<{ö’U½úëÖ´i17†óä'Mšd‰hʹ( k‘ÿ[Â¥X¢p´—ÍÏnŸG"ÖÑe*T°Ä|×ñLtÖСC-Ù´-ñ×p” wa‰Á”%ÊQÙ…X E¨"â3k×®]s „èéù9·CK8ç"‹ñ£çõ°foàmÎ"æóyb‘g‰ž·!¢,î*h¤Îtd0÷10|xcõî»ËD¬Ñ9.«»ï>,zˆUÕÊ8ãÂø†Ó9¾œÜm@ÿR¬X±'iœ#;]súvæbìþ0¿E¯á  ƒqÖߨmaÁÅøëÄh·GÑÎüœîÅ]Ïd뀜ë¹_;¯Ç½OçºÞæŒx,Ðu8÷ï˵ù‚%SÇ` äÏŸYD-%´7<&&àîÕî¢;˜"›k2ñ‰a‚Ö'>+èBl屯c>ìL<ú÷ïï±éüù󵹯LJ¦0$0œJHÐlI¨xá…¢|Þ¤ó½Çðaùì³nZqÿãÅÔ0AéZ sšOœøî?>î€y.§u±‡CTb÷fä€L™R‹t-õòË_Æèj‹Ï® Kß¾³E©ÑR*F7 8aÀd~tB†¹4ˆ ܸqKÕªõ? Ýñ„ø)‰‰!}nÙrP,ƒ¦IH—ƪU«òŽò`\8g~ F¦ðÅ@t2?¢¾ïÕÌ,aîaР/„‹"^Ô¾)]þ¶mÿˆêx1kíªCçÚig0Œø+¬™6~b zõ‚`1»xS/C¤·)”(‘S”áƒUÿþŸ‹#àNoÕL¹Á@Œ`À•A«éÔ` "FŽ|B‚+®Ïî³¹¤@,âÉÝUâ_ͧ½ßƒÜ»éÎ`À;ŒøË;ñ càw–éÐø~Ø)è}{êp×®ã¢[™*!C ºŽÅÓx¦Ì`Àp*æ7`0B ôìY[ýõ×1µjÕ®ŒŠ¹ñ×_÷‘·‹ÕŒëB2¦$acÀp* ûý›ÕÇ֯߫ÅR(íÉ 8vìœp*SDq_L öx(†4c$P ¢’@_¼Yvìb`àÀ¹~$‰$kj²‰ü÷ßeÉþ÷‘„I­Þ{ïiÿ®3aÈ&aŠ÷0â¯xÿŠÍÃÇ7Ñ¡ññ+ +lîÜžš˜4köžD ¾ª¡Í8 †¨$ —m–>H›6¹3¦¹0àsɧq+dK’$‘æRjÕ*,ù9ÆK2¬3!Û ”00`ˆJÂxÏf•aˆ‚Mt‹°PÃÀJúÞ’…q‚äÙêáÍxñF§_®YZøcàĉóºe¬¤‹í#aÖ³†|ˆßzôøDò³—–ød$<ú\é!Ÿˆ0Þ`À•xó*ÍBâ*æÎݨ>þxèXúIÐ Pà?ûì,I±{M‹Æ§oÀ` P „þèLM;ƒxŠ–-Ë«lÙÒIšØbe…(ðñ¾'K½zo–Xy ñgPéğwiV‡1€%b°iÓ:ªråòÄÚJþþû¤ÌQ·oß–¬•mÕƒfе¹˜ã& Q‰›ïÍÌ:b…ù°a_«2§Hohœ9s½æœš7/#É¿êK’¬ˆ ±¼µ5å Fü•°ß¿Y}a ^½bªZµ‚jøð¯c}VíÛW–Ç/ªë×o©ªUÇHtåÕÍ›·c}^fáé„ÿ;23L@¸|ùºè6Æ©‘#›ªúõ‹…Åʉ³PmÛvXuëVCµm[I¥HaRö†ÅË ÃI¢†/ÅL)ac`óæªk×jùò:¤J¸`cëÖÄ:l…úùç}ê™gª‰ÅXÝX±V |˜yxÆ€!*žñbJ b8D®^½KÍŸß;$¾#?ü°úí·ß|ZsâÄéUêÔåÔÕ«{ä³ß§6¦RüÃÀo¼!)^Œ°0£S‰€S`0ûèÛ·ž¤N23ã³gϪ¿ÿþ[Y–åçÆ3êìÙ%êÊßêûÒ§©5Þà G³fÍR[·nõøbˆŠG´˜BƒØÇÀäÉí$äÆå^‰ý›Ä ¢Þ¢YC¼Ä@† ©ÔÔ©tî•ãÇÏÅË5šEÅ? ¢ÿÞ©YQ<Â@ùòy´ÅU3Õ­[Ƥ7½Úx»“¥'Þ¾Z³°ø‚>}ê¨ ö©±cPC†4Œ/ËŠ°Ž•+WªÊ•+K¾—džùS€¬ÿèÑ£š”-[VÝÿýÊ}-8yò¤Ú³gž£¯mÜëýúë¯*W®\*S¦À"ìß¿_íܹӥÛìÙ³«%J¸”Ù7+V¬ß§jº kÏ–-›ýÈë÷®]»Äª/‘DÐÎïµNd §vÌ3ƒ0ÁÀ¤IO«o¾ùUòÍÿ&3 þ4Ú·o¯N:íŽÙt׬Y£fÏž­Z·n­¯¹?s&z¹c6nÜ(ÑúEk~¯¾úªÚ²eKÀ}|ùå—jàÀuáGÇgÇŽ^û[¸p¡Xè]ƒqº¾×ŠNæÎ«'P0D%PÌ™v!Ä€ôqذ¯Ä ñŸŽ|w¨ªU«ª^½z©9r¨îÝ»«ž={ª,Y²¨Ž;ªÿýWŸ–/_¾¬L˜0A5JmÚ´IÕ¨QCeΜYtCÏégGŽQ5kÖTyòäQ:uÒ}ÝE)8Š=z辟|òIEŸpM›âZ_eÍšU½òÊ+ºÉîÝ»Õc=¦¯Ù _~ùeÕ²eKõúë¯ëù¥OŸ^_÷ïß_=õÔSº/*Ûóc ݺuS¹sçVå˗לÏÙ¨ášà˜÷Í›7)öëÖ­SÅ‹W2dP]ºtÑuoܸ¡×•1cFU¬X1MØœcmW»vm9(|£û_ºt©~üý÷ßk3]oë¥R™2e4‘€PðiÕª•ˆFoéu0ßJ•*©µk×êþ¶mÛ&Iànèkþ`A6lØ0•3gNçŸþY?[µj•^ctÀ•è`Ï´5!È·2~|kÙħ«“'/„pä;C!ú¹råŠpK_KTãOÕÅ‹õÄ=׉'‡ÍåºògŸ}¦7¿Ñ£G«:¨_~ùEot·ÞzK‹€8mÿóÏ?êСC.kaC…à7ƒÈiÑ¢Eºÿ ¨Þ½{ë÷äɓՉ'TªT©41 ƒx@.\Ø¥/û¢æi~{÷îÕ¦Ô6lÐb¢wÞyG74h&Vlúp9Ó§O·»ŠðýüóÏ‹3è3’ìl™^çêÕ«5 ¨lÖpK; ’ 6Ôó†P>|X?^?>wè‚OOë¥Òúõë5ñ‚€ñ ÷ÝwêÏ?ÿÔ\s9r¤î2g¢—4oÞ<]¿yóæŠÁC!®pŠï½÷ž&¨ºq€ Q q¦™Á@l`€Ð-;VÕ„…¸\¡6ŸråÊinn¢hÑ¢ªP¡BZ‡'ÀæÆ¦Èf]¯^=•/_>õæ›oê9tÁ‚õæÛ·o_Í©°zžC$:wÊÿµw&@RYNAN‘¹4QăCEÄEP!¸9Cq]q‘ ñX¯ÅÔAP "veeU@%8/G Ð7@.X¥ö}¨Þêžî™é™’™î~/¢¦«2³^fþ5‘½÷2+)ý}úôÑ:”—.]ª–„oµ;>|xÎ~ÿ—¸ qŸV­Z©Žüü|Éøùür/„Î/nIž W­Z5Çóèܹ³öë1Q=A} Ï…ÑL C EøòË|¯Y³oõêÍ¥êAvv¶'ßþ*•n+ňÒ#±oûöíQiâòd-‰·dÉOº¨< ¨{âîñÄ…IkÄ“ÙgžXúJ*±í2ðÄ:ðÄ-äѦ ÐY³á‰µLŽ{.Óv?!Ĩ|ú V@TZ¼ ê–`}$«$ý2÷Ä’SÔI›‰XužLߎÊ×Y´¨ ùö—'DHùÿ©-~LH·–a”˜öÌ3#$Øök¤0‹o×ÏB ’× ~²]a@Ä÷o`,®.f7œf€,®›`¶Up@cd0È.ݸՂÁëâÖá—‹×>â!Õ«W×8ƒ_®<ü†Ñßß³L2 ~o²ÅT~OäM·!pŒèÙ³…nš5hÐ,™ttâ1ª:R !“!nÄ i±„BkLJC(èˆ×>ê¦ åMÂèoYõÉH¥¬·z 1¢£È›9G<øÿUÔ!Wcê B0R)Ë4R œœÞ¨ï† yZ¦¸.vãYëÀì%fýØaõ?0tèPײe˸ÿ_S‰ ‹%©À„ ÿ”E†»eÂh l—?÷Nj£k­/ #•Âбj˜%:åÊW–J—Ýl†€‘JaèXž!&à {ôÑÁòÁÁÓå3î3Êd“¯4ÒºQæþ* Ë6Ò 3–Éç5ÖÉ€7É÷µê¤[÷¬?eŒ€‘J?«Þ( æÏ_+[¿á^|ñO²è±nY4ÁêLSÌý•¦Öºe†À°aíe¾®_¿™nÕª/ +jy†@R˜¥’\VØH/Ö®Ý*›fý]ŽÎn̘?¦Wç¬7e‚€‘J™Àn•åüü½òÊgd'ÆF²a]×R~Zg-I5Ìý•jOÌÚk„Œ@ƒY²õìxYyDö‘ŸîÖ¯ßr ¦.“0K%“ž¶õÕ(7ÞØè&Oþ—»æš¶nÒ¤²?нw™eÇ `ÿ11€Ø¥!ɰËòå“Ü–-;Ýe—ýÍ‚ø™üÏP¾›¥RBàì6C ÝX¾B9{ö*—›»\Vâ·Ö-‹ëÕ«™®Ýµ~…€€‘J š C Ýصë€{ꩲ­»êª?¸©S{Ùæ_éþÐKØ?#•g·™‚Àc=æn¹åínÅŠÕÝ '´‘™bù²]ñW™AÆösýúõî /Lªÿ¶\RpYaC óøä“OÜܹse-Ëu™×ù îñ˜1cdzyò¤b³¿2øŸÆºn†@Ø©„¨é3 C ƒ0RÉà‡o]7 C l,¦6¢¦Ï0BG`Æ ®nݺ®Aƒ¥ÖýÁÈš›†®Q£Fªë×_uo½õ–ëÖ­›«P!¹÷ìÍ›7»5kÖÈVÍ?¹æÍ›»N:96D [>üðC÷Ã?D©¥-[¶ŒJ+É!XZlm0 ŒC`úôé²Òy(ýž:uª[¶lYD×\Ïž=Ý¡C‡"iÅ9yà\ïÞ½Ýûï¿ïvìØán»í6ù Áe}aË´iÓÜO<¡€ÇçŸv5¡è3R FSbd6&Lp£Frgu–¬Ài§æ.¾øbÙºø?:h¯^½ZAz÷Ýwu0Þµk—»úê«ÕéÑ£‡Û½{·LUþ¯»þúëÕ’=z´lÜ* رcǺn¸Á~úé®m۶ŽNknÓ¦»ñÆ]½zõdÍUîçŸÖû°>¶lÙâ°( Ž¢+æÒK/u§œrŠ7nœß»w¯| íW¿~}׫W/µòòòÜý÷߯VJnn®»ï¾ûÜÚµkÕÒ™9s¦›?¾|ñù¯z?ýïܹsB]ß~û­ê8p 6l˜4hP¤™C† qK—.ÕëÁƒ;põ®ƒ÷Þ}÷ÝŠý”)STX2ƒë¤“Nr矾{ûí·UÄç—‰T≑Jˆ`š*C Søî»ïÜG}$;I¾èöíÛ§ƒê’%K\¥J•ä ÈÿvçœsŽ[¸p¡ÂÃ/×Ï?ÿ¼«Q£†ûâ‹/ÜÉ'Ÿì^~ùeÇ=LaÆ’ ¼ @_ýµà—\r‰{üñÇ5ûÓO?uµk×vü±’ØâÅ‹5½]»v²®æ= ¡¢äž{îq×^{­{ï½÷Ü;ï¼£d4gÎ%;¬t?^ë¡´1(ÇÆ• ¿ÿþ{Íbp÷É/ž®Ã‡»×_]‰tòäÉnÑ¢Ezÿ?þè^yåGî…¸ýƒ¾ï…Œ!Oˆ‚CÎW®\é ,4$XFBþc¤2 ¦ÎÈTxÃ¾à‚ \ëÖ­oÝÍš5s]t‘º†°H^}õU…†_¬‰3ÏÈ€䃔ÖA“ë‰'jPûÙgŸÕ7iÜKÝ»w—Ïí¯R%ÌÈŠ'X n"b¾Ž¥€+ @ˆã`Q<÷c:.8?îÂ×HC.¿ür=ÐÝ¥K%‰+¯¼R-H†˜–Jûöí]Ó¦MåëÍ÷jXX¸¤ˆaEàò¢=Á~ÄÓ¥þôíÛ×½ùæ›zpî ºp¥ù×… ñ$ȉr`‹…Æì¹Âê$Ï,•¢²|CÀ(1‚ lÆŒêßçºOŸ>zàöÙ³gÆX²³³Õzag0 º©|=/¼ð‚Æ_°Fü›7ð[o½UÉwD`5A3µˆSàfƒp•aT¯^]pÊC|-Z´Ð˜–P¿~ýÔ¥Ç'jfÏží˜\€[ kŒøn>êc‚³ÇÐGl Ë + —T“&M"ý`’A¬.êõûÆ9S§™ P¥JµBü|îãð…É L Þë—å·ÿþÚV,3Ü^´ß—Ø{üôP~å¡™†€! \{2H'Ì/n†ÌŽò$æU\,O¦ÆzB Qéâ’òÈXTº Öž =q#yâΉä‰ëÉðÄåI+êDÆÛ¶m[b2{â+.–‡'ÖMtÚB¨_Ö“xëÖ­‹”×Wäs!Š ¢­†TÃá€Z#AÇ#´Awd†`#´F‚ŽÑœ)>~ü8M™2Ź۴ "„:t ªU«:ìíbi=zD«W¯v@2 ÈàÀÆéöíÛ.[»XZ±jÕ*}k®†ÂäÉ“»Ý×ÅÒºÅ2†‘ˆFh#ÑaR|ã€Zßød°"ŒÐF¢Ã0¤øÆ‰˜oÓ#kéÒ¥tâÄ š1cF¸³eËš9s&µk׎7nìóž_¿~¥?þPüøñÿsÎôéÓiÛ¶mnñfÍšEãÆ£Ê•+S“&MÜâº|=<.[´hQ5j”Çñ@½ÐÞ¸qƒŽ=h¾x\oêÔ©´wï^zÿþ}¨„õFî† <®­.]ºDÇŽ£Fé.ë=zt:pàeÉ’Åêû×7±bÅ¢lÙ²YÛ@q *D%K–”¾Ô©S[cáqf¡ýñã={öŒÒ§OO>¤ÏŸ?Sþüùéïß¿tõêUÂxÌÆx¼xñ(I’$Ö³=~üXú%J$}gÏžµæÄ×Âú/^¤œ9sRìØ±éÕ«W”1cFk7?~$|´'N:yò$¡d’#GÁùùó'½{÷ŽR¦LIׯ_¡+\¸0ňCÆ1ïû÷ï3fLŠ%Ьcoéþýû´oß>ªS§mÞ¼™nݺEÙ³g—ùoß¾ºõþþý›ðlà üË—/ôíÛ7zúô)¥I“Fæ`Ï„9 ¤éÇŸT©RÑüùó­¶·ðúüùó-Z4Ê—/ŸÐoÇùò¥ì‹sÁyDUžÓŽc¿×þizÒ¥KG°þæÍ›'<>|¸îr¸þúõKÎÛ¡3 &и>‹Oú¼5ø šàW¨PA®˜[¶lYU¥J«Í©XhT©R¥Tùòå­å˜™Š¨ØÝª .(BÅB­˜YŠ¥®]»&¸lYTâĉ “à)RD±@ËØàÁƒk½Ü·hÑBåÎ[±R(FÙ¿}ûö2ÆNÚåÊ•³Æ€Ë/Sd|÷îÝ2¾ÿ~·mtŽ9R%MšT½xñBÖ6l˜àâO÷îÝžS»TYïܹsªk×®òLàM‰%káy@+ž·téÒêÍ›72Ö±cGÅÊ©—r¹²¢(¤ÿàÁƒB+›Â/a„ÂK= 4b}ì,Y2áèq¬P²nÖ¬YÕéÓ§Ý¡Hx;bÄã¹råR;wV§NòˆãËè…l8CÀ± Г'OîóСC¢Ñ°$+V¬W«Û²eKb&4°~ýz± ˆÍF-VéÇb¡`çÌ™CÐÚ¶mÛŠ;ºwï!`¡‘ùîþ° K| «¶hÑ"ùmÚ´ÉBM›6­X>XI8p ŒÁj÷ë×ϲÞÎmf-Y²DâÈ)RPµjÕhÙ²eÖºÞn7mÚ”êÕ«'¼8räÁJ-\¸Ph¸yó¦¼ù2dˆµ ¼øeÿ­\¹Ò×7 Ÿžž?.ž&oÞ¼4vìX¯kÂJÂÚ÷íÛ—À<‹ÄÙˆÓëׯO2dž7oÞÜò /4WЄ±.Â}èÎ;Önßh Ƀ@àª.ß@Á/_¾ìà¦ñ̾Ðb_ÊeïÒ¥‹Xx§bÅŠY(ØnÚhº8§Þ½{K¸À1(uêÔ)àU('Â;yòd AfÏžmÑçïMÀ„ÖWy£*0tèP)é œ@|׳gO‰ga1`•Q€e€µÄÃÃõqÂFsçÎõ¸ VÚ AÒ! &!<À:M8ù"m9+c%ÀÞ†ÀBp9¹pÖ¿6mÚHEbëÖ­âY®\¹" Áp®[¢z…ÁÞ ôh£ÎŒªâÞÐÂÄÿ¸¢¢/£´ò „õÆ3£ÖÚ¿zðàl°‚„<!X™2e¨8‰’=5­ìEäYQ=ÁXÅ!…à¢z€Ê†'à2žõ\œ}RlUÕÎ;W,…@9jÁ‚®»Ž‹xçÇ[×·½ û<æIh–ˆ±µøO€ëE†ŒPI€3 ‰ãZ®s·´Fà%…/€uPH÷ÎÉš'¼Ðö#®µ'zÎóÙò;t!Â/¬à¼Ž®  †ðUƒJ•*ÉÛ8„H¾¼*<øù xAó/!\cZÄ5xˆ:ž.÷øópHÎì ‡^o¿ô»,*¬ÿ@ñ*þ…н” ÷ê·„ÁʇØj;ñ¢Q·sê¶£˜{Ãpá<¿9$~ƒç°_¸ZZ‡MÃpÀO¡õ“qfZÄqÀmÄñÞìì' MySQL++ Reference Manual MySQL++: uds_connection.h File Reference
MySQL++  3.3.0
uds_connection.h File Reference

Declares the UnixDomainSocketConnection class. More...

#include "connection.h"

Go to the source code of this file.

Classes

class  mysqlpp::UnixDomainSocketConnection
 Specialization of Connection for Unix domain sockets. More...
 

Detailed Description

Declares the UnixDomainSocketConnection class.

mysql++-3.3.0/doc/html/refman/functions_s.html000644 000765 000024 00000030533 14042362132 022015 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
MySQL++  3.3.0
Here is a list of all documented class members with links to the class documentation for each member:

- s -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Connection__coll__graph.png000644 000765 000024 00000016033 14042362133 027206 0ustar00tangentstaff000000 000000 ‰PNG  IHDRò\T~è:sRGB®ÎéÕIDATxíœEòÇ‹Ý%( èªAVAAŒ¨G DA%(ÁOð<äD1q'wDQPÎr(A”$((iqaþý-þóœ};oyÞÛ—º>Ÿ·;ÓÓÓ]]ÝÕUÕ3Ó¿bŽ!±d%`%ÔÈHjî-óVV*«Èv X ¤€¬"§@'Ú&X dyEðöÛoKóæÍ½IöØJ b ¼ûî»rþùçG|Ÿ÷†ÜÜ\Yºt©7)!ig‰%âÎ[>E^´h‘üéO’Gy$îŒY’Sýû÷—h(òÞ½{¥|ùòrÖYg%¬ –-[&L8‰ ÈÖµNØab³_V‘וÍi%°°Šœ°]c³_ùbäðo‹]ÎÿýïR©R%©ZµjT*!Ö"öÿüóÏ¥ZµjÒ¬Y3ýNáŸ|ò‰T®\9*¼¸í*]º´ÆÁõ_tÑErôÑG'Gõ|Á‚ÚþDˆé¢Ú°0 Ûµk—|üñÇrá…†‘;ù²$œE~â‰'dáÂ…Q‘äÚµk¥I“&òä“OÊöíÛeÆŒºšúꫯ†,å½ùæ›õúÿû_Y¿~}ȼ‘\pÛõÕW_IÇŽµ´ÓýíÙ³'’âÂÎ;~üxyæ™g4ÿ¬Y³„‰-Õ)''Göïߟ¯™¿üò‹Ì›7/_Z*D¬È¯¼òŠD„U¯^=3fŒÔ­[WjÔ¨¡–æá‡VÅAH Î ȶmÛäÞ{ï•N8AÏ—/_®25j”T¯^].¹ä¹òÊ+eåÊ•ÙN˜0Aºuë¦ùO9å™9s¦^kÔ¨‘ôîÝ[-eûöíe÷îÝš~ùå—Ë×_ïxÀ€rñÅk²ÿâ‹/Ê /¼ ·Þz«®6ú•Õ©S'yùå—eðàÁòí·ßÊÏ?ÿ,¿ýö›ôêÕK*T¨ gœq†¼óÎ;ZOÓ¦Måž{îQ‹Ý¢E ,¸ðôÓOKíÚµU.cÇŽÕ¼Þ?”ƒb{ßÿ½¶uÓ¦MòÃ?È9çœ#LD<¬S§Žœ|òÉò—¿üE‹Yµj•NHÈóŽ;î¼¼Í{ÒI'IŸ>}¹$E¬È l,ÛÈ‘#u0ýñ”çŸ^Úµk'Ï>û¬4lØP¦L™¢2À•ÃcàÍ™3G‰rŽ=Zå"oß¾}eîܹ¥äfôo¼!S§NÕÿàƒj™ Øc=V˜ ~üñG-— 7ÜVï1®“„—.¸àµJß}÷þಆ &õë×£ H´wþüù€ÆE¿ñÆeàÀZ$Ö•‰Åf²zýõ×õ?“Ù´iÓä_ÿú—æ ¶‚[¶l‘[n¹%ðcÒ`ÂCaï»ï>à3;;[ÏQD¬ “æÆ5­U«VòŸÿüGëfÒÛ¹s§ö +æñ õtíÚU÷ÓO?UEf%døàƒT–ôQ7Š ï“'OÖº}ôQPßÿ}Y¼x±ÐæD!ø W?þ¸ddd(ÿxaÿøÇ?ÔêU«–†Wðî×oÈ—qÊ8dbdì$e³Ä ´uëÖ©ÕâxÇŽ2bÄÁ2véÒEgy¬(VkÅA9(ýúõÓAÇ}ÌöPÍš5 °B^,?îEù ;ï¼S­N=´#©ÃûìÛ=¦C‚•…Ã*¹qbpY”Y¼xñÀ¤@} ÒQp~(ÔæÍ›¥X±bòÀ¨Âa‘qÃ;î8Y²d‰*¹¸^eAÔâºT±bE=dr<ýôÓå˜cŽÑA·uëVL˜< ôÀú‹"žzê©òÞ{ï©wÄ`mݺµæ½êª«äÍ7ßÔvdffÚËEÚƒ×A~duÝuש—…ÕGé!úƒöœvÚi2|øpmy…üÆ}G¿0ACxzxSx'.ùõc«gÏž:™2ÖþùϺٓâÄ™V1x f>®—J–,©n JLL†’±pÅàF¸X \ nµKÜLX—p}°À›N±O(b2˜½„õÄrŸx≚NYt²«lÜÄBA(”••%|H†µÅ•sÝßR¥Jéuïêd2s®¢R2EÑ9¦^·|îÇ%Çò2¶0IàRCn[8öÊ‹s—àÙ»í¡´òÖå¶w÷o„If­ñR…üÆU0o„~ä¶ÕmçêÕ«Åí+dãö¯ß½‰˜vXŠ|¨† ¼ Ü7” WmÒ¤I‚ÛÊL‡e¹âŠ+T¹D X?—øó |Äñ‹Ä}Ĭ+“Þc¬(q.%ô믿ª×@ŒŒ•‚üÊBQ¼„—Á¤DðN jUžÏ<óL PH¬q𗢜S‡÷G}( •8 KÉ[M(.“ža ƒ …øƒX" Ž<èÈÛ¬qôôéÓõýA¼ЏÆüxîú@¨üE™î7®Üú½mvÓ ûLécÆ!j2Ña¹Ö¡È PÒŸ~úIc_ÎÄ~Ä!(.q5³;•…2â3w†$¿[î8î.&qéšÏÇÂOœ8‘[„˜‘˜ —Õ=¾þúëÕ¥b@ñ°è nâ(ȯ,À7ß|#Ĺ.ÿãV²è†K=nÜ8÷Rà?¼ñcÐãšQ'³=®8‹Z›‡…%×µw øÛßþ¦áÆ—_~©Ê‰¥íܹ³òJ{àµC‡êÚ>ôÐCês/ŠraQ(o€ íÚk¯Õ¼gŸ}¶†:nÃ=,±`8tèP B­æÂ/å01Ñ_XyÂD!¿qoLxÈ ùцÂÈíú ™0NXD<Ô}…•—kÆ:hðàÁŽYX œî±BŽ±ÆŽô"Œ5sŒetŒe ¤q`”KÓÎ;ï<Ç<î \2dˆ3hÐ Ç(±c,i Ý(‡c”c¬x íPÆ Õºòç˪,Êæ“©ÓËK¾Â<'´Õ岌…ô\ü^‚y§\£ôuAÆ;f5Ö¡­^¹sÍ(¶c&Pó‘YåWYæKô9¡<³âs¥`’™¤ãy¼aŠY¨rÌ‚æ!ïòWf2«Ÿ¼…OÊá‡\Í¢ŸcÖo¼—}Í‚˜cB;ßkEU‹ÌLÄsXž“ò,֟સn°wÆrc5oš÷˜¸0˜(Ë__>ÇjùÕM>¿²X0ñ£pëô–IY¡Êó«Ã/õƒà5ÊÄ[ &ÚÊÏK¡^4!ì ‡¼ýNþ¢Ìã7®ð„¼^8ü²`‰LxBÁcÖd¢¨+2®2q"ogEB<úð ÿî»ïö½Ç/n|ë›!‚Äh–Aµ1Éj<šÀ³ö˜Tâ…#³VChCuÔQG%U‹£®ÈÄi‘*1ó®¸rÊŠÊ‚so¸Ͳ­3Vù°BÁ2ŒU]©Z.C”Œ”\KsÉ(a˳•@H A¹[.qóæÍÝSû?B ”-{‘Y•ÿÑ<ãý¼À#§‹JêìÑØX ÒBœ¼b²uN )uÂ)Ó0ÿãÃX 3Qvɧȱlp:”Ý»÷ æ­©’]Ñ<¯¾^rrNI‡fǽ_¿þ³,¾^òöóï«.µ[\ ;“1fÀ*rüõ×[ÌË#̳Ù}f±¤¸yµ¦<öX{óÙÁ×£X•-ÊH`Ó²²xÈ:Ùõ£y¹f÷É*•!]6Ì’…?;NEáYEŽr¯^zéæã ZjVV¦y)$Cnº©©y‰åróvZÁ×P£\}Z·ã»\y÷ñïdóŠ]j…itFñbrz›ŠrÁ¿¿ö›ÂøÿFÚÅ®(÷vŸ>- ›—·ßXçßdÒ¤%æM¯Áæ3Ê¥Q®-}ŠsÌçŹÛ÷«~í†U²ñÃ%F ŤÞþïU§ƒ”¬EŽr/çææ™—Ošw¬÷(‹¼kW®ùø©×lBáøuý>y¥í§’i,ïþ}õÙÀMÇŸq´´ž|zà<ݬEŽr—,™eÞƒÎQ—:¸è}û~eœnÏ-âÇdH¦ SäTââ¥3åÌnU]H ç°ŠƒÎíÑãBý`Â[t©RÅÍG Í—XC¼Éö8L ”:6K®}¥Ž”,g>õÌÊ¿˜ÅwÙÍÿä5Ì"S*›UätgÇ›Í~E•ìjÕÊ›ù{›ï·KÇ Æô(²\vIi1ä)yLV`e:³D†Ô½®’;øUjz§•V‘}„¤Þ½/6¯™–Ð_›6ç˜Uë+Ì£Í÷¡7BˆF½©\ƺE;dÑàµrÕó5¥b­£%«¤¾ÆÓ®Ûá÷I3•Û_XÛìbWaÒ9‚k8ºRÍ£§»î:øáþ˜1 ÌÇë+äßÿîkž3—8‚ÒÓïÖ-+wÉÜ»¿‘VcjJ…ÓÇ,7¼qçj©T·´4º½Zú $¨ÅV‘ƒÍÓõë2Ÿ[æß é¾û¦šUëífs¸[õ‘I4ëKÕ²v¬Ë•™·|%?š-'4.“¯™û~Ý/%ʤ¹_m$b9ß°ˆý –ºK—çÍ.Çš­:ľÂ$¯a϶<™~Ó—Ò°WU©yuþI1É›Uö­"GUœá¶gÏofËœ§Í&… ÌvH-Ã»Éæ²(Dv±«áÄê«Ø“'ßb~ïš½ÀnÖ«ºl¹é!k‘ãØÏ«Wo6û1üßd6ØoÛ8²k«N` X‹ÇΩY³²<÷\7U2ÉÀÝl‰#'¶êd—€Uä8÷àùç×Áƒ[K§NÏ™mwÆ™›øW¿õóÝòÙ«?ÊþÜ‚¯bÆŸ»ÄåÀ*rô͵×62ŠÜDW³ùZ*]‰>xV|ò…åon¥«,"m·‘#•X óß{ï+j•'N¼9íž1¿ðC1§dÑÖ"'P·vAsÈ“Aƒ¦%W±g…>æÝ³Fߣæ­-K‘KÀ*rä2‹Ù™™2~|wƒ²¸FÆŽ}+fõ$RÁ{~Ê“yÆn|Ï ùÞÚ³‹½¦A…¶ù¸ @«ÃËÅ>Fà^@Ë„‚ñ‘51èøÖ@Ï‚ìÈõÀûP›ê¹ ~¼øáFû¥{2&àƒ é– ´pvv¶¦cö˜]À-¾38^aSQC[Øú-·; vfÎüäЙS0/fotÇàM;¨Í1_ŽEu –“c¿cåœñãÇ;mÃ1ØÎŽQÇ a(Ô‹`s ~“BÆxó„‚v1²ŽÁÇRxƒåœ+gåÊ•ŽÖ:BñrÍ5×8—Ú18^ŽÁ0Sø¿4ÛëRÇàl;Ý»ww Þ´ïÅUþ²jýfq ¶–cÙøºá†ÂîݨoPö b3†”@•*å̶@½ÌϘ™¼lÚíÆ (€éAXÙ¥Kn“ÝþðÜÝÅ>Æb6kÖL±¹ÉÜ  ó›GOBü1 £€‚ïÿ\¯^=¹cÆ çÇ Ð2Á¸Ñ~i ’‚¢Hàé ©ÌŸ?_AærrrLßæÈŸÿügålÆŒZ7¡ ]€a.Y×:\Iq¾Úµ«±³ÁК(kÖÄ….bâVøÍ –àjò?DHÈ‹CåõâE ¹ÒÅ|vóÖ˜Âð¾Cñâ‡í— )Š vJ y±˜9w1Ʃ˘`msÙ²e%l÷“Uä`‰$Ðy³fµä¡‡®1ùYS»+8‹-+XQ aûöík>½K,X ®¡j¿+è=1©AõT(ßPù#IÅ‹n´_Úܹså¯ý«*åû￯ŠJì¿àuƒÝ ÞD,%~ðÁ5fï½÷ÂfÕºÖa‹*>;tÈ‘uë¶é3æ×^»Ý -ú#EƇ»Èkݲr·lþd§nY*ÿ–=niXÑ®]»*ï`;7nÜXXÐòâ»Çà5†3Ê«ìZb7[v¸ÿ¹_(^üp£ÁÆ’Æ=ïÑ£‡”)SFA–gÁ~Qh\íÒ¥KëÖP={ö4['ߤøÛ؃É.ÙçÈáJ*Îùî¸ã%c¥öêªöáÎ87Axác‰ÙºõD3€«zcƒ‘¬Vö¤“N ‹u¿ÁK(±÷¦9sæ¯æ'o’*WëÖ­ó¥…:ñã…Ue&/~i¬Tg£°fÑK( XV¨á‰˜·Ú…Ã5¸Õº."$qµYè+ÀV»ví´L÷‚UdW þÿþæí¯qú¢ÈK/õJpn ²ï>PŸ1‡E­¢&³®Í°Æà‰ßvÛmê~ûñÁ‚áB0á¡x1³­"K(ÏwîÌ•k®e€äÏ3ÏP/J`Nó³VØùs¦×–ו^(¿ñÂÇ‚ßJíÖ$«”:~2ŠWšíxI¾ë-Wî(™2¥§Œ1×ld·ê°j¶/|–؊wÀ¶UfgG^"NÊ_ffi§t鳋÷‹+]çT(Yõ°îMy 4(¥G°ÝE3Â9“­KÙ¿˜=“Òú$e“ß~ûmY¾|yRò.ÓÖµWR6Ÿ•@KÀ*rwŽeÍJ \ XEWR6Ÿ•@KÀ*rwN(Öˆ÷öíÛêrÄélš° blòob›ØDà#Þrˆ¤~«È‘H+Aò>öØc ô v˜úõë'`û·2jÔ(yòÉ'£QtDe ¼Ã† Ó{V­Z6pD5¥ff»jƒ~Bs÷îÝŠ"vh@rÔK?üðƒ~”ð0&‹={öhmÚ´QË ®3Ø0)üêÔ©£*›7oVì!o¹€ ¡8”Çÿ±cÇ*N®7JÈÄ1p¡óæÍS7˜6ƒQ¯LD3gÎTÅFa±ø½{÷–çž{NÛ°lÙ2³ïZ³«ÉD ¨§W¯^¼)xH›6mRÞ€yùâ‹/tâhÙ²e`' e=z´bC!§t'«È1-Z´PhÌš5k*òp™(±H|.d&ÿA¬V­š¦Ö×¾}{…Øüè£ä’K.‘ììlýÏ€âP/àD¡êÕ«KÓ¦Mõ>žwcÑ¡îÝ»+¸råJ­ƒtŽ©ƒÇÐe—]&Ó§OWEã—%!mÔ¨‘Ʊ¤/Z´HÏ9—X foÛ¶­z´‰‰%''G­2ŠIÝ&LÐ"¹æ%òs“{qó£xæ­#UŽíbWö$ ˽ž6mšZ)αÈ”©S§ª²°T¥JAq‰]kH^È-ä{\^׆® ‰•ëÓ§*,å@÷ß¿N,ÙZä”ïâø4Ð]±´vï .÷ú)+îµ_z¤uÙüÉ%»j\ýe¹µ𕀑}Å:‘·–Xñµ”\àõÕT&#§rïÚ¶¥¬k6]mšÊ°ŠœÊ½kÛ–6°Šœ6]mšÊø?Ð5_ le)IEND®B`‚mysql++-3.3.0/doc/html/refman/inherit_graph_2.png000644 000765 000024 00000027534 14042362133 022357 0ustar00tangentstaff000000 000000 ‰PNG  IHDRpâÜ,¢sRGB®Îé/IDATxí ÜÕcÇ*•´H©)E²…Á¡K¬m#ee˜(ed Ù4–‰•¥( šDfhOE´¡EÏœïy=ÿ{ß{ß÷ÞûÞw?çó¹ïýÿÿÏþûß÷9ÏsÎyÎÙÌ 9#CÀ0 C 6Ï e1 CÀ0cöC0 CÀÈcCe CÀ0ŒiØoÀ0 C cjfœÓ2†@¥C W¯^nñâÅ•®ßÖáŠ@=Üa‡–ÐÛi$Àa7†@ÕBàå—_vÿýï«Ö l4e‚À3Ï<ã,XP¨-Ûi‚ÄU ®]»º¿þõ¯UkP6šRG`‹-¶HÙ†í4RÂb CÀ0R!`L#*öÌ0 C %Æ4RÂb CÀ0R!`L#*öÌ0 C %Æ4RÂb C <¸è¢‹ÜÓO?]MW˜6+:Æ4*ÌOÅ:b“&MrsçέÖ@Tt ŒiT럧 ÞHD`Ñ¢EnõêÕnÕªUîí·ßvë×¯× _~ù¥{ë­·Ü7ß|£÷Ë—/w .L(¼bÅŠ„ƒ„”yõÕWßqúñÇÝG}ä>ýôS}<þ|·aÆx½ÿꫯôùÞ}÷Ý„<ß}÷ûöÛoÝÆÝ”)SÜÌ™3ÊoÚ´É­[·.zÆ8ȈtúðŸÿüÇýðÃú˜<ô%Œ‘‡\s8’>C|S†²áÏCYêš7ožûøãy¬yf̘á¦NµÏX‹›ŒýIÕ×X²öçwÞqkÖ¬‰ã¼üûï¿ú˜ŒG”1— \£†@ÕD`·Ývó7ÝtSƃkÕª•?øàƒ½Øè2Á7jÔÈ_yå•~³Í6Óû øéÓ§û;î¸Ão¾ùæ~É’%QÝGu”?òÈ#½LœþØcõµjÕò[n¹¥¯Y³¦à4Ÿ0È!‡h]”?è ƒôúÅ_ÔôwÞÙ8Ð?ÿüóúü׿þuÔ—víÚyaTšï¬³ÎòÜ7nÜ8J?ÿüó£¾\|ñžiÓ¦ÑýÖ[oí/½ôR½ÿì³Ï´,ã£oÍ›7÷”¼Lº~—]vÑ4a8~íÚµžþxà^&]ÿæ›oúm¶ÙÆ×®][? 6T,¨”òÔסCýæúðÃ÷¿ùÍo¢{p†QìØÔ›®¯¤ñ¶ß~{¿ÕV[éûÙn»íüÿþ÷?’¼0km÷7ÞÐûd<ôa1x#GŽ,”Ëvòv CàgX)#"á$9+Ô{ï½×MžÕ·0Dmï/ù‹‘‘~„ñè³ÐÖu×]§»(vBŒ+eÅ­†ï½÷üSO=åwß}w/~™49ì4HƒD\¦u>þøãz/¢4½î¹ç¢Fh ñ±…Fq}¥L:utgöá‡ê.†L¾Èv¹rU+gT3~ñ‹_D#–‰ÃÉ$ݳ»IIïeâÖ »ŒQ£F¹O<Ñ‰ÈÆµoßÞ 6LåúÂdœˆ‰Ü-·Ü¢åЈ¸'ªO˜Htê¢M›6Ñãm·ÝÖÑV ä] í|ýõ×!9åwð¥ÄŠü¤“NÒ}fé@.¼ðBÕˆhÍ ƒŒêyöÙgÝ®»îêŽ>úh'â9Ý…E‰?]ˆ¨K¯Dì¥ß;pƒv\56Ò‹ë«0>ÝÙ±«ÙgŸ}\Û¶mU÷CÙÒ$O•&ºV·!P \q]?å”Sœ¬t݃>¨¢©sÎ9G‹ÈNÃýò—¿t(€ïˆ.AÅ8ˆPš4i¢âPwq–R”„ˆ,ˆ[xOýƒ›6mZBz(ÿnÑ¢…Þ2é£È烒ú¶ÛnS†À¤þÇ?þQ™ŠnDk̈Iú’K.q(ü5!ÖJ&Ù$?J{ïòØ(T\_'L˜ "4”êŒÆ'»¤´íå+!óæ«E«Ç0ªõêÕs'Ÿ|²:C…¹;þøãu\Ÿ|ò‰;í´ÓÔª 9;«mVÞ¢@vìÜjz°žBþþƒr|°“ƒ—]Z{‰òYËaFÿD\çÑIˆbY-µÐuÈŽÇ‹b\­¯z÷îYOÉ®e©‹ºÑu@¢8×{¬Â‚eXº± (—®¯¤aÍEßeg¨ýÚk¯½t¤%[O%ãAžâ(N›‘!`TQ²eÙ g9t2Œ+uCv“˜VÇÉvq4ìÚ0ò†–H¢wâêCÏ$0ù„³yk¤œ+·!îƒ>Ð^`ÁÅ'K§Ti•í™1ÊöƬ¿†@%@à‚ .Ðó`ã g:pMÂÁ¾d†•`8i»È˜ÂCQúG $¹îDp XȘFUx‹6C !€*ä0 |9‰#A'f¼N,¤œX9t!ð¨ËÄK<ëâ “1g"8,Nzsˆ¯¶âb#dÍÊÃl(„žvãìHãÌ“ûÊ•+˜´&xí%i>uñ…• q„“çcã@çJqñŽ'|[áe¸BîÌJj–eå C â"PÚ&·©F.» ÏÙŒT~8[€o*ˆkòÉ!A=ÏWÚ×_]Óð¬Ë„vØAMz9Á9 òË䪟ÁƒkÞà÷)³À·^|ñØK]xŸ fÁ´‰gZ<ÙŠ’^Óƒ‡^9D¨yCûœaá:˜ SŽs,©ˆñˆ{Mâ½ø˜ màÓ SdUxÆä•úIçWYS:“[ÛiÈ[12 ü!À*¼L:…*wáꛊUö¹çž«–S¬ê‰é(®Hå@¸øèÕ«—î2ð÷„•.IÈÛµkWu_o ³ø¾4húŽ¢]NN³ÚG‚QUr Nw3´NFœj»'9{¢'Ë匉ÃKm®D=¸$aWÓ·o_=…N,Np#Ú#z»2òqrýæ›oε©¼—3¦‘wH­BC z#€HIVÅE‚€Ÿ(&Iü<Á\°Ô¹üòËU‚3ág 7œ…8âˆ#Ô͇¬ÒÕý8nÎã"*Ã7þš‚+&^&öpO~êÂ=y§NTü„‹üEÁL!NÛo¿ýŽq‡2{ölM;v¬–C?#;wÍ5ׄ"Ys>†ÈØaÌWó0TܳÐ.â8L’q5_QÈ÷U”7aý0ªx‚}ì±ÇTGQ¿~ý„Qõë×O'ÊvÚIŸ39 ÞuYaCážk±‰hÊ…ú8 ˜Ì˜2ñ0Kqy¢“0þ8HÝq¢@ÄÝ ¦t)â%$©gÙè&Ë‹x8}„ÐkFpþª¥¯…l§QQÞ„õè"ˆ¬_C›â…5N(³0† ž°©p@‰C¿3õ¶«™åO&f ¨„CB”܈ŸÚ”ÜNò=õÃXpû¸ò,˜Úr-¥jƒ:`”ìºØ Ñ?>âvDƒWeÛFiå7¦QZÈZ½†@9! úTY±.w'~*+ä­Ë¼Èä÷Ýw_'Nò4Êò&i<Üâ¨AüCä;\¨ãÉ–0âB”±š‡¹°ÒG7‚H K*ñáTl“ŒJ=Û>ùä“* ÖPñ‚X|7.áÖÏ›ê/¾ìj8ŒêB¼<í¦*SÖÏ÷eeݺµg9#°dÉ·RuiÒçke7˜pÖªÕ*çús-Ȫœ¯è`~õ«_©X9>±ÒtDDLäÈùq7±ï¸N¾õfúMy‚*áî¿X¸0ÁoúB£¢7IÞÄÛ…IàÒ=fb2—øÜQó”ˆ îÛIDF[¡ÿÉc‹* ‰”¨!lÑwóBC¸ÜŠBæF¤¢¼ ë‡!•+×*S˜7o©XÖ|1ˆyó–‰’´Àʨ~ý:r⺩¬Ð›ÊÄ»­\7‘ëm庩 úU¹ºá| hDNÄ¢H¦uëÖ©(†É=G˜X“óåûž³qçƒè›1¹E(ù±h"nE<ò^QerIãœí°#*ÍvŠê[:7"¶Ó( 5K«v<ÿü4 Ìó…ëÝ» ˜OY°v톈1°s˜3‡Ý“í29d¶F»P§N-‰J3hê:tØMÌÁ `ÛŠÈççÕnYô7›6˜ôâJßä²(e•5áð0Nñˆ€ñçÉ×05‚8•6a>‹[ÚíeS¿1lв¼U >%í1{üÊí²K³¼3 ÄEè ÄI;˜;ÄLP›‹)gceûí·ƒ˜{¶×Œ¢E‹F…D'UöeØÀ*4Æ4*ôë±Î•6ï¼3G,Sþå>üp¡NÚ´·`ÁŠœšÅœsÑ¢•‘)®oX´h…˜Tþ¨óæ •1ì´Ó¶¢ÞC¯+m¿ý6b¥c¶)9o…Ê ceµ5T‘øè£…º³˜Ä ³±–K—·2<ÿç?ÿéøù@ Ð9 V$x42*3›o^G^µwõêí#ÃÈ~m´~ý<‰{PpÐŒƒU.µ2ÿ¬ïùD í“­Lò ³ÕU,_¾N¬™ÖègÁ‚UâÇgˆ+PTרÁ®ÃIŸÔÞX[´h'n-ÎRO¤åÑwkÓ¨¨¤e§Ÿ~zEí³õËÈ,ŸfÌX¬ŸéÓºiÓDç$jÖä4°ß??Š_¢ îÔSO³FÎH[ÁªŠ@Z¦QUlãªÞl»m×±#Ÿvß}·N| -‹©ESÜiÓ>WóY”çF†€!ˆ€1D<ì®"РA tÓV?aøëÖm´Ø û6bÓˆa—†@@_OF†€!PóYP{b†€!JÏ4ðÉÿ§?ý)Íðòû˜H]'t’ÆÆs'Aç_~ùåü6Rεa^zë­·j/®¿þzÇ'=üðÿ9UZ6ÏÆŒ£1 ˆk>_|±KŽú–M–×0JJÏ4>ûì3÷öÛo—B?ÕLp˜Ã;Lа…÷Dûb¢{úé§K½ý²j€(c` ½÷Þ{iCZ®_¿Þ}ÿý÷%îÖüùó•ñÉ.«yŸÇ{¬{ýõ×K\¿U`ùE Ä: &/¿üRWß„u\½zµkç:é{íµ—Fê"`+7ŽF±hÑ"}Ö¨Q#}Fä«P¦^½zQ>ê%ž0Aë öN(Ädø.ÁÓ(R˜ðš6mª“•lذAb¬Ô@0Ÿ~ú©†—Ä?F ʦvíÚ&~OÙË/¿\Úà^}õÕ¨Ì5×\ãˆFvÝu×¹ßýîwZã&|%ã""Y«V‘Ó²Á)›¼Ú¨ü!d%;¡wÞYÜh·å€Ú en[o½µ›>}º#~Áî»ï9é#ã²eËïfÏ=÷ŒÊwqÞyçEcΤ BXò{à›èdÉÁnˆFÂ{†QwìØQƒë‡~¨±šégr°~ƒ¸Ë Öq–ãDœe‚ìð;$N‘!`”™HõqÚ)áYQ7ï¾û®æïСƒ~SöðÃ÷¢0º?øàƒ½L¼þCñGydTDõò2yøaÆy™Ð¼0/LÅK8D/Q´¼D®Ò¼“&Mò2éy™(4ûöí½0M“¿^&n½>묳|»ví¼0%/Ì@Û?ÿüó5M‚³ë½ˆ”¢4òÊ„¢é 4ý7Þ(t/"(M‘‰¦ÅÿÌž=ÛKpz/“š—ÉSÇG?CE¼£Ù³Á)›¼T.LKÇ$¢ö¼Å Ÿ¶+;"ÅD˜‰bÇû‘XÍÚ_2€ÏøP^¢„ùßÿþ÷Z–w(+~½NþC½¼¨¸6dç¢}  ê›7oî#t×]wiÛzóÓa~ú>|¸>‘øÒ^¢¬yaèúiذ¡þ^HdœôQ‡zY,hýÎSË óõçž{®ÖO:¿5 Ù©i™þ‘° ^Dv™f·|†@•G oâ)Vp‹/??CÝ[o½¥»VÛO<ñ„{çwt•yöÙgk€yB@BÏ=÷œ®Y¥÷ïß_Wå{§¡! 4¨{÷'l$¢“¯¾úJ˧úCˆÄ{î¹GE'<òˆã#“z”µeË–ºË˜5k–[¾|¹øê£iìZ;…ÝKüž¼+ÕdjÛ¶­;ñÄÕ<}«ia$ºÂ衇ÄýöÍnâĉQ±Lp ™3É æƒ ÒxÂì¤Àçý÷ßWlC=`rÉ%—(&}ûöuãÇw¬æY}0À]{íµŠ)ïŒs¡tmPïÝ!yØ ²cëÖ­›îîB[§vš:Mã!™Fˆ/Í;:ôÐCåÞ-Ïn‚~CÄ¢~å•WÄí\}ŸW]u•ÆS–ÿ\ýðûãý#Jã÷Ô»woÅ'´k߆€!yc²bU±ÁÖ!‚Ê3A‡{&#|Z!–=z´æÁÏÕqǧ±z™|¯ „Eô£2dˆ´š¦Ùe—]æZ·n-FÛ:Y kùT]0!!¾ Áêe§eŇñˆI—…¦qOÛÄ2†â÷ˆF2!ÆÕ¹sç(¦/õ#Š{íµ×¢â™à2g’ŒªS§NÊ_zé%;Ì$¨^VÛÊì(FŒ¡;­äxÇà‚Î P&8e“\{öì©}‘žêQÂ;õÄc4£Ó€ˆ!Ãd’zžï³þ²§tm°›Xå?úè£QÅôR †KýÆÐàÎ;ïTƒƒgŸ}V­¸è'úô"DDæD¼©˜ú,È7Þ¨;)taX¼Bw~“á™}†@æäm§‘¬˜L×DTLV>ø ®úºté¢Y™|1ïDô4uêTqI½20¡è „("…(é¬lÙ©Ä™L<}òäÉ iéê ë‹/¾X(ËàÁƒUôÁdƒBYå4+æxû™âD™äeޏIäþâo¡Šb’'ÅäûÐ?˜8"£øNŠÝ^.”® ”¿ãŽ;´ô‘÷{Ûm·©*][ˆæP°“Ÿâ5îÙµ° „(ƒŒx·—^z©Š®(GÛˆº¸v,æW- g߆@öäidÚ4òD"7Üpƒþó†•o°ûGŸÁj’ ‰˜•/“1òvĈDAš¶9&$v/ìZ`BX>…_P¢1,¡'ALîˆgæÌ™Sèkú‹i-» ÄA|˜È¨ÑD]ˆOXÓ.»&¨4')v 0˜+ú &X˜º â† è4˜pEI\H_ÄN 1VüÃØ3%v~è ˜¬ywX®ayE›Xª¼–âµ /¼PE“ì%ÂÔÐqñ͹¬ªÀÂbŠ]ë”)S4;\vZÔÍøx?ìlù= 9å”SÔŠ.´k߆€!%ɪþ\­§d²×ªd Ö*Á:FŸzõR ,š¤›^ìñÃ#…Œˆ¤ÔjË'YÝ{YUj:ÖKXDQF&H/¢ªë) i>¬§DçåÅ‚)XËë)ÊRV<ÂÀ¼ˆ/´lQÖSdIØ‹¢\­t(Ï+Q´kyþ` &g9¢~bí#ÌPÓƒET&8e“wÕªU^Î7h›X ãò'Ÿ|²â$«p/Ša/Jä¨Â$4¯ìšô™ˆrôžñ`ÕtÄGø`q†•Ukü[ÄaZ¯¬øµŽâÚSY/Ì#ª‹÷Þ­0“è9mÈŽÅ‹^ÉË?ÏØ pç7Á»—]›Ÿ¾?Qj{a‹8ÊÊÄ óô¢ Ór²Óô¿ýío£úI1˜¦eúǬ§2EÊòUÐ5$P¶L#¡p†7²2÷"R(”›‰YVŒÆ“Lbý¢f–0!&ê`rÏÓ`¤yL.¦Ašì&¼ˆÁBRVßLRr–ÄËÎ$2kW «a.f£LZeEôGt'Qs¢€ö"û]†Ž ³èÒ¢ðNÀŽël‰±1Æ@0èÀTx&b6/gsR¾9ƒ¢L “èlɘF¶ˆYþªŽ@Þá²Ò+–ý`I„( w2!V³Éõ1º…Lˆzs§£deyº|©ž#2à '!ÛÇ«¬ Ë£8Åõ(ñç©®¿%ˆK•¯$ÏŠ{'ÅÕ¸’O D–q’É=~›pQ#CÀ(9eÊ4ÐWÜ{ï½z6B]åÜ{ä÷qeh¨ˆ‰åw*bÂÁ+Â6U{f†€!ˆ@Úá²ÅJÌiw†@5D@¼è¹‹^ _¾ 9%en=•²öШ`lØðƒX{-+­Vr8t­}¸‚õкc”e*ž*Ÿ!Z«†@Ѭ_3Å/4Ô+!_?ø`žœ*_úÓù•Ýå,Ëz×°aÉ=úÝ K5*Æ4*Ç{²^æ ¸ñÑG bîÜeÊ jÖ,ØxoÚw³™œƒÁ­L³<õÀª1*7i™†)Œ+÷‹µÞ'"P«VÙ-%þ·pwƒkß| (‘Y„§’C²´iÓäçUàŠšº42ä˜B‚ƒÓâ)Ä4Ä­¶“³Å•³tC Ò!°zõF‰¸Xâ’¦†øßÊÌØCÝ»v¨ZL#¼¼Ûo¿]]ö„{û®^àß-[*d=•m–ߨl,Yò­¸x/îfÞÑÓfârE¸B1T§N-eì8vØ¡©î<`$mÚ4W +)wØià†·=FÕ3Ï©~}œon§Ÿäz׬Y/Œd¹2˜ "¯™3—H ­#ý[ÍŽ9|‹"‘Ì$ˆ¿¶ß¾‰Ä ©•\m¥¿Ÿ?¾Æ¯ÁÙiìUõøãËïè߯>—þf3nüî_§~ýú¹4•qcCe«¸£{þùb]Rð©,Æ_¯^m9?ÑB?Éí}ÿýFa"0’Ä]ÊĉŸJ­o4¤2 ¥Y³ »“`ñµå–[$W[)î 0Fl÷tI+ê î&qƒrî^6ã&xøHˆœÛˤ 1LP²<Õºu+ÆDËŸdÂÊ‚¢® òâ{òäYbõõÍO.QœDÁ¬¯"¯FˆnØ*¹š´÷›ÆróŸÄ{ðDSÄ|—tBÔªUKÓ·Új+Ñ÷4ŽêÃÃ5ψÑI\•¨ ‘<Q/!“wÝuWÚHäÈd7ÿSG$a $†ŠFöŒ‡X+r³¡ö‘ºèWÜ­>}EüG_qÌJ¬z"=ò bœ˜"sø19d@IúƘ\ÇÊ•+5êfË–-µOä#’¦ E¾‰ÌIXf¢T†]‘)y.q‡´lxžP0_7U=`ˆÏ¨îlذÉÏšõ•Ÿ0áÿÀ“üu×=ë»t¹Í×­»‹—É1#xB4É:D‘?üp/1Ø£{9ì ä%1qü‘GÕKÀ,¢J6L©}QˆFiÜn»í4€™'Mšä‰¶I„Fò·oß> ¶FôG™ód³<ÁÖÄû°Fè$¢#ÏC´IêáÑ*©Cƒæâ%3IJ´!±äõ:±SD;þØcÊÝóÐ|ªØçÒo ¿ì%þN‘u¼õÖ[:f ¬ù&Ož¬÷·Þz«›D 7­ãkРŽÌé7ã‘]¦>#:i¦Ô­[7 \—i~òÁi C š!³`²Í–iHÜv¿xñb?tèP-O¨]B?ñÄzÏ$'1stÒ Ñ1‡®1Ñ%ž»†Df¢£B_qÅÊlÚ´iã;vìè,X Ñ/eW“–iÐwÚ¤"yr/±ãõ-Â4d¥íE á€ ù+;(Òcß¾}½fÓ¼0! ϛ7Ï?ýôÓZÏÂ… =‘B™Äeõï‰Æ™k¿ãL#]t„>Àä` ²kÒÆŒ-Î4Àƾ¤ÉÆöÌ3ÏèX`¼ŸlȘF6hY^C #+Ó ¤.4sæL`EÑ«÷"{×{&c˜+üûî»OÓŽ>úhâ‰'ê5qˆÕ΄È΄(‹µ||G 1LÒ2=÷ÜSë ˆAå•Wê-L£_¿~!ÉO:Uëq飄¤‹÷ß_'å3Î8Ã?^Ìʵßq¦‘®ê™gL0v0<(Î4_MXcÒ&Nœè%ú©î:Ĉæ-+¦a'‹d‰bd™!м9œc)P‡"W‡PÀC2{©þàøãw²vÂ@œLpr8òlM—IT¯e§"æÈûhhd}9YÝk:Ñ5‰8(\úNÙLø_td×.UçÁM<=JŒ]ˆ8̉Í}üñÇî˜cŽÑr·Ür‹æÈG¿ÓÕAèTÎ9ç9´É‰ˆ¬‡<`Û³gO1rØAó¾òÊ+Ñ{ ½¬È˜FY!míU ,.n(0‰7ÞxÃ=øàƒªïÒ¥‹™0a‚»þú눮œìÔY¢Èé!œ!”ÐæÎ. }£(„ÅдiÓ&Úxú”)S4kQLˆ ²ÓPåþŒ3T™,z7`Àehùèwº:hãÚÂfKÞd9r¤˜^wo¾ù¦öé…^ˆ˜urÞÒ¼7¦QšèZ݆@5E@ÄQ«¨n¸Á~úéNDRŠç,zôèá°¦ÂQ"VMXA±ë`·Ð¿qÁò°œ.§ô‡§E†#: 9]¿\™ˆ¸Ü 'œågÇ "4À“këÖ­ÕŠŠ "&r£GÖ¼˜ÄÒŸ9sæ¨Å”èÄ·Ø1[n¦ÖIì¨Øä£ßéê`ѽ{wµ,Ãì°Ãs¢ØW¢É…è1Ô ‹).;,¦6nܨٰƒY‚_©’ Ãì!`T+rÕi Œ…d z¬ª 1ƒÕ{9# ÷üÁ¢I&//ç¢g²Jö(¸Qè¢{sXt rC-¢(ƒV@Âx´,ÖK<ÖSmÛ¶òb %b¤¨ êÅb Å2e°´Š÷!õ”LÀª€¦ z™œý!C´Þ\û-»ßwß}‹¬ãž{îÑ~¾øâ‹š}Qݺu½0µ6 ã^µj•pÏØ:wO`…>æ©§žRHh/¤ˆ S„Ž%†ÀÏdË4~.™ùU¯^½¼œå(T@VÆ^VóÊx’Q<à `BXE¦χɭòÔ#ç0< â8Á4°¬’wdÎO/îe3 ,”âTÒ~SWQuÄÛ*ê«)Œ ¡]ˆÞ®X±B± iÅ}çÂ4ìpŸ°m#CÀȈz^{í5鈅O¡ŠùÈYŽBÏy€‹Ãx™õpÀ0qÀO¶´Ûn»¥,’~UGÊFS<Œd$9®«‘]TŠù}dL#¿xZm†@µG}…œ%p}úôqçž{nÎx »?à€ •gÒ,ÊXñà…*(åéú]ÊÍ–Yõ¹¯Ì ¶† Šƒ@YGîCq‹•”^w' T1-ç!ÜÕW_­ŠæŠƒLÉz"'æ%°×UòŸzê©j"‹ m2wÞycïåI¹Dî3ë©ò|cÖ¶!P À¼VN~«µ“œÎvûÛßÔ¯“À‹ÎoTÄЏ·_ªM8XdוШ)añUɘFe|kÖgC ‚!À¡4ÿÂ) (}õö¦›nÒÉsÒo¼ÑáU,}T|Å™Ìg1ÉŠ‘ž»%nx¬åqf(Dê5–ú!Îu°{‰›™Š2X'nœ)rö"êc¢ÆœV\†Dõ† Ú¥ž¸Ø‹6DɬNÑÓP–>ĉ>bÚ+V]ñÇÅ^ßÿýN\~h>ÚÆÑ Ž 9ƒ!îU •çð£ø¤r8k,w*N»n醀!PõÈ·õÔÅ_ìåœETܬ·]tQ”.d‚VQø ‚„¹¨©­xÇU“\œÊ9 MÃLç|XFɤéÅ[®º Núh«+w"ä—“Óš“TúaBKY>ƒÖ¼Â¼èMôuˆ¢Ú4HÓ‚“F,µ‚ù.cÄ$¢oô)Ô¹ÿþûë5¦³Xnñü¡‡Ò¼Éè !®qü(çA¢v‚£D,ÃD/¤uáš…~ÄÍ‹“ëÍö>ë)ÛiÈ›52 ’!€Ü^F•p`N&B=ùÍêxï½÷ŽÒÂ…œEpœÇ7«xq$¨WØcõ>{öl=¸ò³C@üƒ>† ÊvV߈¿d2uâp0dÕÓbò«» ñ}¥y9án¥k×®zRÌ2©ë.AÌl5SÙÔCs¡2vP¸C¡mvá` ˜;Êqωn\›çJâcJ1`G!N £ƒr†CÅzœþf7Â¥wïÞºƒÊµ­’–3¦QR­¼!`8tœP„JVèQð<Ý·8:TóØ`mµÓN;iyLwášË(9¬§>«ð…é.ÖJ²ÊWQRÈ‹*Œ‹SæGq„*Ûeâd7¡Ì,ˆ¨¨“؈²Æ§§ÂÅÅ@7ß|³žÖf2‡ùÁÌ ±cǺN:¹SN9EãŒ\sÍ5¡ù¬¿9ŽÞ‡ø(ÇCO>ù¤“ÃzÊ8%/‡Õ- ú’ò"3¹-/ä­]C  À$ÈDs½Ë.»,aÄLÎ\pcÀJW"qßV”e…( —ÁY"é8LÑLÈš<‰³0–5žÿV¸9A€)o“&…CûR6»#Üy°Óaw„¥T úŸ+%·Aý–fèQ‚þƒg²b åEÆ4Ê ykר&à=öõ×_WEyðAÅÐYE³ºGä‚÷\ò0ñ‡ yüàZxž l™æÅy"ŒæÄAÀ1cƨ2:ÞFœ‘…ç0"òã7;–\)]ÝÄ ‰ª&œ+»­ò"O•òÖ®!P…ÀŠsâN9Žy)zâe³«1b„CçÀyÂÂâl]±„’øêR³¥Iˆ¥Ø]°sÁ Q,¿Šj} “9ÌqWp£/C¸Ycüƒ•T¦D]P=ß‚:ÄaÙÔ‘i[™æ3¦‘)R–Ï0Ò"€tÃp‰ô¸ú5j”C$QºrÆìV,wœXi L%4“8º qȧz 2$¯Ä¹O~Úæy|wÀuò}È sCéŽè ÷%Çwœz¸E‰ŸŠâíÂ$Äq¢ã€ñ=hƒ8èqºë®»tŒ%|PäÇû¿¦l¼¿œª§OˆÐÀ¦FàS^d'ÂË yk×(GÊúD8CeUãÀ‚ ñ .Ñ“‰Õ4+~&Ḝ?9_>ïÑ€>§Ä¤W­”ØíÄu(éÚcLXP1–xà§tùs}ŽUzâmäÓ¿T.'ÂM§‘ë[´r†€!¬ ±Š*ŠðUÖ~£ÐOÄ$¢ãà“ 1¦=öØ#“¬%Ê#g9ÔB«D•ä©°‰§ò¤Uc†@u@À˜FuxË6FCÀ0ò„€1<iÕ†€!P0¦QÞ²Ñ0 MySQL++ Reference Manual MySQL++: Class Members - Functions
MySQL++  3.3.0
mysql++-3.3.0/doc/html/refman/datetime_8h.html000644 000765 000024 00000030645 14042362132 021662 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: datetime.h File Reference
MySQL++  3.3.0
datetime.h File Reference

Declares classes to add SQL-compatible date and time types to C++'s type system. More...

#include "common.h"
#include "comparable.h"
#include <string>
#include <iostream>

Go to the source code of this file.

Classes

class  mysqlpp::DateTime
 C++ form of SQL's DATETIME type. More...
 
class  mysqlpp::Date
 C++ form of SQL's DATE type. More...
 
class  mysqlpp::Time
 C++ form of SQL's TIME type. More...
 

Functions

DateTime mysqlpp::NOW ()
 Returns a DateTime object that, when inserted into query will yield a SQL "NOW()" function call.
 
std::ostream & mysqlpp::operator<< (std::ostream &os, const DateTime &dt)
 Inserts a DateTime object into a C++ stream in a SQL-compatible format. More...
 
std::ostream & mysqlpp::operator<< (std::ostream &os, const Date &d)
 Inserts a Date object into a C++ stream. More...
 
std::ostream & mysqlpp::operator<< (std::ostream &os, const Time &t)
 Inserts a Time object into a C++ stream in a SQL-compatible format. More...
 

Detailed Description

Declares classes to add SQL-compatible date and time types to C++'s type system.

Function Documentation

◆ operator<<() [1/3]

MYSQLPP_EXPORT std::ostream & mysqlpp::operator<< ( std::ostream &  os,
const Date d 
)

Inserts a Date object into a C++ stream.

The format is YYYY-MM-DD, zero-padded.

Parameters
osstream to insert date into
ddate to insert into stream

◆ operator<<() [2/3]

MYSQLPP_EXPORT std::ostream & mysqlpp::operator<< ( std::ostream &  os,
const DateTime dt 
)

Inserts a DateTime object into a C++ stream in a SQL-compatible format.

The date and time are inserted into the stream, in that order, with a space between them.

Parameters
osstream to insert date and time into
dtdate/time object to insert into stream

◆ operator<<() [3/3]

MYSQLPP_EXPORT std::ostream & mysqlpp::operator<< ( std::ostream &  os,
const Time t 
)

Inserts a Time object into a C++ stream in a SQL-compatible format.

The format is HH:MM:SS, zero-padded.

Parameters
osstream to insert time into
ttime to insert into stream
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Date-members.html000644 000765 000024 00000025651 14042362132 025111 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::Date Member List

This is the complete list of members for mysqlpp::Date, including all inherited members.

compare(const Date &other) constmysqlpp::Datevirtual
convert(const char *)mysqlpp::Date
Date()mysqlpp::Dateinline
Date(unsigned short y, unsigned char m, unsigned char d)mysqlpp::Dateinline
Date(const Date &other)mysqlpp::Dateinline
Date(const DateTime &other)mysqlpp::Dateinline
Date(const char *str)mysqlpp::Dateinlineexplicit
Date(const Str &str)mysqlpp::Dateinlineexplicit
Date(time_t t)mysqlpp::Dateexplicit
day() constmysqlpp::Dateinline
day(unsigned char d)mysqlpp::Dateinline
month() constmysqlpp::Dateinline
month(unsigned char m)mysqlpp::Dateinline
operator std::string() constmysqlpp::Date
operator time_t() constmysqlpp::Date
operator!=(const Date &other) constmysqlpp::Comparable< Date >inline
operator<(const Date &other) constmysqlpp::Comparable< Date >inline
operator<=(const Date &other) constmysqlpp::Comparable< Date >inline
operator==(const Date &other) constmysqlpp::Comparable< Date >inline
operator>(const Date &other) constmysqlpp::Comparable< Date >inline
operator>=(const Date &other) constmysqlpp::Comparable< Date >inline
str() constmysqlpp::Dateinline
year() constmysqlpp::Dateinline
year(unsigned short y)mysqlpp::Dateinline
~Comparable()mysqlpp::Comparable< Date >inlineprotectedvirtual
mysql++-3.3.0/doc/html/refman/graph_legend.png000644 000765 000024 00000042636 14042362133 021732 0ustar00tangentstaff000000 000000 ‰PNG  IHDRþšH}*ÝsRGB®Îé@IDATxí]xTE×>¤¡÷Þ‹ô.‚QPi*Uª~ØåÃOETDT@À‘® é=té%ô’RïÞ wÙlv“Ífûžá {ïÜ©ïÜ;gæ´É¢q ‚€ ‚€ à „úùB/¥‚€ ‚€ Œ€~yA@B Àb_oß&š<Ùâc¯|0t(Q¡B^Ù5é” K–,¡Ã‡û4U«V¥nݺù4–wü½z-X@äÇI|áoÙ2¢_ôé—A:/Þ‹ÀñãÇ©k×®<ûùô_÷îÝéàÁƒÞ;ÐVôÌòŽ?_>¢±c‰°ð…P½zòBÇú*}ŸD R¥J<­ó¼îÃaéÒ¥>Üûä®[Þñû<4€ ‚€ à}á÷¾1• ‚€ °Ìê·˜%ùAxx89r$UªråÊQåÊ•SÅ»2âÖ­[tâÄ zâ‰'\Ù ©[·F`Æ ôàÁƒTmlÛ¶­Ò HõÀ†ÔѸqc J37äð—/_N•¦~ýúT°`ÁTña=6þ«W¯ÒæÍ›UM_|ñ 8rçÎMY²dq áoРíܹ“üýýÓííÑ£Giüøñô矦›V‚€ à«`N½wïmß¾îܹC:tPP´nÝÚn„¿wïÞjî.^¼xš0ÿûï¿tàÀºxñ"­X±‚¬Òcs)„?MèÒÏ}fCÏžš6w®ÙG¦‘Ú¹sçTô… 4~Y4ÖÕÆ§ 6L[³fzöÇhcÆŒÑNŸ>­=óÌ3ÚóÏ?¯*THãUÏ™‹ µhÑB+P €Ö£G->>^C\ûöíU:ä¹~ýº6dÈxTe$%%i|ðV¢D ­^½zÚŽ;TYü²hO=õ”V¶lY­sçÎ*­z`é¿%K4­KKO%^F€ ©ÆÊ}VõáÓO?Õúöí«ÒZšc›4i¢æn&àÚ€´Aƒ©yºOŸ>òüøãy­fÍšZ™2e´ßÿ]•‡¹ó³qˆ‹‹ÓæÏŸ¯ñ&Ò8Z]oÛ¶MåOõ€#xéñÔÜ#‹qh/(,>÷Ëì.ã礕+WR±bŨÿþjµ†$BDD]ºt‰bcciõêÕÄ™ a9gκrå }÷ÝwTµëÁâaO¡¡¡ôÕW_o‚)JÑ¢Eiúôéôù矫Õ'òíÝ»—/^¬V„/¼ðá_:úä“O¨pá»U”%AA ãXšcOžîÏœ9Cà cžÿõ×_éË/¿¤÷Þ{/U嘛ÿ÷¿ÿQéÒ¥éûï¿§5j¤J“V¬^yåª[·.Íž=[Ñ–´Ò˳dìNøQlÞ¼yiâĉÄ+;‹8c ÁòáU#U¬X‘ 3V<¯Õ¢/Øù`Ñ·jÕŠ¦L™¢ˆ<^”œ9s*‘êáU$•,Y’xUH¹rå"ÈóÏŸ?OëÖ­#æ.¨âÕW_µØy ‚€ `Ks,r€ýŽys=æn8ÇŽ—.›Çæ÷/², ˜#¬*Â&9 T¥J·jÕ*%^`®®å†˜y2zôhµÈ`î2-Z´H- ˜[a&¥D#àŸ?~³²÷Ûðø0„„„è— vé Ø Þ îÐñþøã•"^0Ó€äüx‘ð÷ÑGQŽ9Ôj“Å*¹^¦i^¹A@Hss,ægÈÛà(|¿˜„v옊Â.ÜR€R õT–)‘ëЄ hÔ¨Q´k×.bù‹¡ÖPÊ'¬c@o¿ý6Á#8¨Z¨`9!=DA@2ŽüLçXð§WÚ¦M›Ô¦.,,LmÈÀ’G‡bß—_~™Þ|óMzì±Ç”¨W §W®þüìÙ³jsXªT)%Ö6mš¢úsù5€C?ˆ¸úõëGóæÍSrz ´¥€ Ô÷PÀ'ú+ŸC‡•;ÖçúmÜáC‡ßúäµe­~~v¡ëìPuvEÇktþõGŽœÖ†!C Iè´ê¤"A@œ‰\¤>|Ø™U¦¨ë?å&P,}rò£ñμϘŠûpµLø]€JLL»p|OÙe=ú)[» R¥ ‚€ÝHŒ&ZÌVYZÑ‹·ˆsÛ½ )Ð*BÝJÆ¿zõÊš5@ý­\)쫆P ‚€ à \dWºþAüǺpñ—âÊ!s+Â?oÞvŠŽŽeg?qì`a›+q‘ºA@ì‰ÀÉéDñQD ¼ó?ùƒ=K–²2ˆ€Ûþ»wïSXØyCó»Ì:DîåBAÀCˆc±›;5þst\}t/WNEÀmÿäƒ 5'.…†îs*R™ ‚€¸°˜ð |T°Ÿ?Ñù…îåÊ©<¢´N­6uesælW,~ý ýæÎÝ¡ßʯ ‚€§"pŠYû`ñë!á>Ñ©úü:· üW®D°»€k©º~ñâm>‰YDA@<˜‹DÉG³§è@ÔY¢hþ“àtÜ‚ð/[¶—üüå«£€s/Þ£ßʯ ‚€§!pnQ ¤æìOëW´×-ìø‹Kû0‡Ë—'yØÒ A@|©7u)0x™wxœ‰€sŽåM¯GãÇw¥={ΨdgÏÞP|Ê•+¤îëÖ-M‰‰IäïoaŘ^áò\AÀu4˜Btã¡yv$»€‡Ÿ\•“ÛS ß'0GÀ²÷x×5Ü{kv‹¿1¼“'ÿEÄÓÛo·7Ž–kA@OGàè'D‰ˆjò¯W!à^žû\…‚Ô+‚€ ø Â?÷•‘–~ ‚€ àrXÞoIÑÏåmó¸áÏ’% áO‚ ‚€·!ÀŠ|ñKp)nGø5¶áßA@A@°?¢JiL¥DA@sTȱ²±33ã„ð;m©K_F ¨ /÷Þmúîv¬~·AF"‚€ àÖ¯_Oqqq.©Û*u;ÂÅ>œÌ'AAÀ7øã?ØŸ Ûû[ 4`Çn‰žJtz¸……b_R’h}¦7pò\o@`Ó¦M4dÈ]9tèÅÇÇÓèÑ£iøðáT®\9zì±Çhß¾}4tèP £Ž;òœ9s†FE§OŸ6ÄÉ…eÜŽð[nª<A@𰛟5kÕ®]›úõëG•+?táû°sGŽQ„ÿÒ¥K´k×.Z·nÕ«W¦OŸNŸþ¹â Ï™3ÇE ~ýúÔ©S'•ÞðP.R! „?$!‚€ àNÍ ‡·§Ò¥KÓo¿ýFŸ~ú):uŠFŒa±ºÁƒ«×®]ù˜öpÊ™3§òõ’7o^Cž\¹rÑ·ß~«ž·oß^q ªU«F¡¡¡†4rñ!ü°+A@G"{–ÿµ_ïîÝ»SëÖ­ÓÕé Q- H×Ç ÒvéÒ…Pö¹sçhûöíŽìÇ–ív„_<÷yì»$ A ]Âõ§ï¿ÿž~ùåµó÷Ýwéüùóéæ3Mã°cÇêÕ«U©RE•·sçNúâ‹/Œ“ÈõCÜŽð‹ç>y7A@ð^°¹{æ™gšûØ‘ƒ€wèÐÁªëîÜ!ïK_G¥>}údügÏžUº5jÔÐ˯ r,¯ r+‚€ à ,Ë›@`å[ ‚º¦}0×Ö–ã£éB­GÚG’n ‚€ 8Œ}´éu¢{üH°·#ü"ã·rä$™ ž†€øêw‹s;Â/2~·x/¤‚€ ØñÕoLm(Ñí”ûlèƒdA@+Âo%P’LA@ð„ð{Ã(JA@+p;Â/Ê}VŽœ$A@l@Àí¿(÷Ù0Š’EO@€}õÓ‰ï=¡¥^ÝF·Óê÷j´¥s‚€ ø2쫟ø2nÑw·Ûñ»*ÒA@AÀKp;Â/2~/}Ó¤[‚€ PÆ\‰€Û~‘ñ»òuºA@p$Ž? ®DÀí¿+ÁºA@oGÀí”ûÀêÇ)KA@¼ ñÕïêv„¬þ¤¤$·G!‚€ `GÄW¿Á´½(·ÛZ‹rŸíƒ)9A@ôp;Ÿ^ƒå¹ ‚€ ØŽ€Û~Ñê·}0%§ ‚€ Y˜Ðl+pùßÿþ7½<}~öl%&jT¡B CëI¯ð>ø€3߆•+WÒîݻӫNž§@½zõ¨S§Ni¤°þÑĉéÞ½{Ögð”Ù³g§·ß~Û.=½rå ÅÆÆÚ¥,_/$kÖ¬T¬X±Lð}ûvZ³fM¦ËñÆZµjEÍš5ËtצNJ×®]Ët9Ž( þü4|øpã¢CS(÷}øá‡ôùçŸ~]Ê—Ïꪪ õ~õÕWt÷î]š‘JäÍ›7'£½¯Mý^²d :Ômç|×yóæ¥W^yÅп„ŠucÇŽu)á7´Ì…ø@®^½j—`µL%ØŽÀ?þh{f“œ¯¿þºŒ‡ &·oß6‰±ý¶@TºtiÛ œ¢££ ×™¹Gsþ”(‚ðÿïÿKiãÝ /¼à¶óÊ©S§RõÊídü©Z(‚€ ‚€ `7„ðÛ J)HA@pR°ú­i.£¶mÛfH y^•*U ÷¦S!TªT)Å£C‡dWñññIÕªUKñ7P–Ø·oŸ!¾aÆÖ¹7…Œâ銾c¼1>PÚ’ñHèXzom#_xß¡;sàÀjÑ¢…¦cÇŽ)o•+W6ÄYº€æ”'žxÂRˆ×¿©}:Sïòü¡ôÈ2Úü ïøñÑuïÞ]ÿ­[·Ò˜1c¨eË–½í-^¼˜~ùå—TíúòË/éï¿ÿ¦3gΤ &Æ ñq <˜víÚE¨«sçÎôÆo'ñøëŒâiÚaÈ¿¡Q𑀉÷ÕW_µ: ”=¡´%ãñ²´ÞÛG©R^¥7V¾€ï?ÿüCýúõKÌôéÓiÖ¬Y)â,Ý=z”>þøcK]oë7å²UC›7oVC† ¡)S¦¨kôÉ^DÏZeéô¾­ô¾#{µÙÞå<ûì³)4ÿam1räÈLUóÒK/Ù”?ĵ`%øÉ'ŸÐ§Ÿ~JÐhܱcaߨQ#ºsçŽj”I~ûí7u½aÃ*W®•)S†–.]ªâôÿnܸ¡4¶ãââ1ÂŽ¾uëÖtòäI•…ÿ²‰!ê6l­]»VÅcÙ¡C*\¸0µk׎P›o¾IÅ‹§ZµjÑþýûUÚÝDÅŠiæÌ™*Îþ³„'´­Ñ`‡UùÀÇ»o|¨Ø)½ûî»ôÑGÌ1©b…ŽþÃ|#!!ÌáÚ³gOZ¸p¡Â5""‚ºuëFEŠQ+G¬B¾ùæ¥EÝåË— pY,â° +Q¢ 4ÈÞ›ÆXoXjèï-´¥¿ûî;ÕßP:uÖˆÃ;WµjUš6mšUc…B,áëMï»áå0¹À„o ||× B—.]R› |x/õ€/,=ð¾ÿý÷*ÚÜû>oÞ<5_!Æí©§žRi›6mªêÀ;‹o › ÔÛ·o_¥émîÛ°ÔÆÌ|Sª1.üsîøñãÕæÈ®]»ªkôÉtn@ÿa‡1‚'¬À0_ÃìPÿêׯ¯æ`ùâ‹/ª¹ËR÷0Ïc®Â._ú·ekÓ9OÏ3aÂZ´h‘â ëqžô;{öl5WÓ9s樦§5Ÿã½ïß¿?›¾'ÚÔM›?ˆ8vó0cáªY³¦bÁé =¯¾@,X ¸ï¿ÿ~Іb’ §õë×VóGŽ!Ømë«Cä…^ L Pùar‡I;Ñ¢E‹v [¶l¡U«V©rúôéCß~û­"~ø QÞ_|¡ì•ÿý÷ßmpõ%<1ágLv`ÅíÙ³‡6nÜH=zô àñÉk¯½F½{÷¦§Ÿ~ZáÛ¾}{ U ƒÿû¿ÿ3‹+p¨Q£†2ñÁBânhýÂô X¸a2EÙÀX–ÆcôèÑê]Àã·¸3ì8õ÷ïêüùó8þù§"ð âØÁê«QìðráeÈ+T¬<Á–Ú»w¯š*T¨@Øa½Ømcg sÈR°sÅî w iá‰Õ0úŽ+<¼àp.„I ˆ5ú‡Ý½N¼á0»#Œ‹9\±Pƒs"äýý÷ßÕnRÈ,>Lì~@´ô`i<Àʃy ä@V ÚÛÆ"ªºuëêpØwX¬¢¿XpaQ†IL_ø`ñ„#&±ôÆ …ZÂ×[Þ÷€€³vÓþþþ Sìx°Ø„í9vŸØ¬[·NM‚À]Qýõ×_ôä“ORÛ¶m ¦THwÝÜûn,3Ø4hÐÀÀ©‡œÌæ¾ a®™ù¦Ì4Ë-¢,õÄf±Às0ÄÜlÌÄ\ÌYÆ„ÜW` ¢öüóÏ«ñÁ 1ÛgS¬Q‡þÁÁ‘@ wîÜ©ˆ'mCÔíNκ̽ûxï³e˦ÞuÐG´ó7ææs| ˜“¡ï:gk°‰ðC)¬eüa¢‘1 ƶÁ æzÀŽÈœÃ„sçΩEÒa@±ÂGÀïË/¿¬&ƒŸ~úIí¦ Å‹ƒÊÇ‹€z0áÂY8x!1q ,K¸êåŒò`7jÔ(µË2v‚IMæÆ˜ƒã€]XP˜°¼yôÙÒ7…2Ý1˜ëډƘ sNu¥EŒ³1ñÅÆåBO â|?i…ô°6Í QÊÆ qãºMÓ:ûïþùóç Õêï=6˜; Jçô ›'só¹ñ{„oym 6~K@@–V_zÀê&ؤ˜±Š3 X1bµŽ2QìjâÁæ€V0vóØaB®Bå?|| <àB€å1VL˜”±£†R )°›5žtŒëpçk¬®A\€ú™¼¾ Â L±Ê…¼ ì7pVΞ=«VâæpEìêñB¾÷Þ{j‡Žó™gžQ¢ˆjPD0¦Áx<°Ð‘ƒ8xC)ÈÛÇÃ{,B?Æb,.Á‚Æ¢«w8¤5VÆeãëMï;ˆˆ¾O¼_Y|eIÛÄï>¾}`ˆ qàRab—ó 8€ææÌKàSÌEÖsßFZy3ûM¥U¶+že´ÿÆmÄØoŒ—±Å6Šà¸bÜñ½€»ƒù;£AÇZχ ĹøVà~å‚°BÃ]Þqè› @zVˆºЇÂ"pÌÍ瘛A°Èů>¯d´6çà ÃÒ*»pL‚`é+s¤qÁÊ“¡ŒËB ä> ``-_¾œ ‹Ç¤ ‹°›QѨ /&(•¡ (ÀÀ=+v x À^Ø0§€ØÁ]BZx¢:F]ºtQ+XàˆÕ ÄXáBý‚ö½®å‰Äx1Lq;¢Èñ!Rëåaœ°JÆËÅ'ìܱšGz;ÍGíÚµÕb¬XÔׂÅ`‰cqæ­ã¡Àø&Hhªcñ„îØpÀ;#ì>€XÓi>zsøzÓû| »ÇD¼Àýwß$6 ¦ïÄ]Àâ`®¾g¼g˜èaV‰]¾usóæ"ÈðAðN[3Y¢^s߆iûp´Ð·±å›2Wž«ãÐkû¯·WχMˆ6€Ø€S‹M™þßt²°qó^½z©‚©É·^®ñ/Ê0žóÀâG›ãŠòìe‚h\¯=®1`c†w›QpñnƒÞáÝ'¿íâÚÜ|ŽÅÔ¯¿þªžcÇÛ¦À`ï²5Þ¹îm¹àÁÖxG*+³Ø4^•¥Š7`âceñžWFêC@ùüÂi ŒÆ2W‰|Š|¼{՘͒"ÎÒ Æ/®¥ÇVÇó¤¦ñàXÞš„ÌâÔx¢K‘”_":*س2žÂÁ8‘)®HgŒïˆ4Þ™gÑx%š*.E“fáÚÁúê©=ƃ'l ýÎlàÉFcÙdf‹±*?ú­·Xëï¾5ce©G½ï<ùh,gµT­ÕñóÇ[•ø˜{ç,eæžOã4¨“ÂÆQêÚô}G$æ[‚µí´÷7Åœ6 cžÙÀ„Å0OÚR–µý×ËæÅ®¢úû¯Ç[úÕçmKÏÍÅGxŽ÷#£ï /$2š-UzÞtj¬g’*ÞRæI}~4Nîu5Ó÷ÖÒ|Î"­Ts¼qYÆ×¼°Òx±mµ,Ã;þôV–d6XùYLåliå1–™éåcEhÌZÒ󃽨Ëô8Oü×Ã4`ŨìÐÍ­œMq5•ËAÏ4è¢ÓxK÷Æl5¬FÀ­ñæñ°„ú­°Öñ¶f¬,•éMï;ð1÷ÎYê;8':žÆiô÷Ì8צï;âô9× Ö¶Sc½lsù2úMée¹ò×\?ÒkñûŸ^ZÌÙøËH0þŽãyÒ¸ÍåË—7¾U×x§ÌÍçæÄå©2§á9h¥Ñ y$‚€ à@M·ÒpÙÖŠ['bè^x,e ñ§¬9øCüÔo@pJõ¸,ZÊ{Ûjt^.!üÎÃZjAÀë0¶>òäÎ.íqŒüƒüÈ?k27BK"Ò’4JŒç ö›ƒgü÷ ¦ N¶6ñ”þzÖ2ÅŨ² +ÀE±†ð5«„\Ü\©^AÀFÊ·ÉG‰±I™¨þâ£)!&‰´^hD Ø„”ÿür'Pl@¤µ¸&[Š?Kÿ š©®iŽkk=t(ŽMP46©ØKåËWg;øïèöí(¶qaÍáì„%ͳø7ž&MêÁšÉ Óm0+k¸í9Íé6>ƒ 6Fn¤"E(»_vÊæ—ÍðëG™[_Â\Ë^ÞÈÜ]ÎêÏV‰ýXØ«ßi•K8Q±G`¥%eKo²2[Æ—¨víâ™-ÆeùaÖe¬×akC`N ‹kÙï¬'ÌP09Kâ¹.ù´¡B…@[›à–ù`}€~Y e[å¡ðmÇß4@'œ€ºŠÒÉ-´¸ë¯<Ï[>¬Î4¿3ïaB3Wã Tõ€{d_ +WF±Me"û°ü2›œ9ƒÙÌòÄ:Ég4ÜâC’Êð®ÄßVg>€jxømvíýä³—=%Ʊù¤?û“o·Àð"J‚YªV-Æg®lfñ¦ù N¶lì`æiv´ÔÑl~oмsú’Û7|£8Õy½•lœ‹r• ¢Ø{Ití@4ñÔÆ qj=¡ÕèY˜ï=zîúW¶¬fÞÞ’%ó±×¹·Øóß3|€BV¶E4ÈAAÌv®Å²ÿhöNõ ³¿Þç f6ýüó6vCyÓLi¾DkF­¡vÕÛQö Gþt²eÍF#[¢¯bæ÷1öažõ¡óx>±n:Ÿbv–]5KH‰Ä“?ü°=W~N‡_d¢kHðüóS2DÊ…lZê×/cÖ†>889ŸÏóiOÒ{òEüý$:·!‚v~}Él7 ÕÈAÕº¤œ%RŠ3 ç‡áZ!Ômy5*Á oÂêOgOºÎÇ@ÎbàwÔN"GŽ ö‘<’ý(Q9oÞŒâƒN²{ÜãêJÍšUâ¿Êìö¶"Ÿ¶fþÔ©tªõøÇñ˜3€ì^@÷cïúLXôlÔS-*ªhx&ɰK.šÌ~̱ã7,‹/Ï.?Û°Ûê ‡‡Õ?÷¥kìROŸ¾Îneg¾Mãþ—-[PØüÆ€]c±´zõ>Òx3ë4Ýa·ÉQ)L úS¦¼ÂçnÔ0Êåy—÷.ÆÒ¹¿#(|{Ý8zŸ‰w*Û*/Uéœì\ÌÚ];­òZ›ÞÒ‰ŒßšA‚²ß7߬忿X×ÊŸNš`1Û™37Ô‹mÛNò1ÀyÙG{òB Q£òÌAð.ÍX‹@<|ðî²wéÛußÒý¸û”5 + l>ÞkÿMÝ0•~Øô5,ÛF==ŠZUi•^Q>õ|Ÿ;qÂÌ!þ¬ì—È'ž½ÅørØ¿ÿMZ7‰ühx«áÔóñžŠ#àÝ´k“Oó)r+Y7Ž 1Bø“Ñ8þxò%+¦%¤ÒÃáß¼ù]vñ›Ï:Ÿ½Æf»ûÐÐ}|‚aUM6ãÓ#¹þ^¶l*õ‹bù/Y2” çä)!â\¬²ÂÊ[Î: !Oé—ƒÛ)„ßÁ§( ;wžæIé„Z @! â€&M**®@… …R¤÷¦›B? ‚9 ÒˆV#Ìvkݱu4é¯Iv>Œ5DCžB…s6›Ö"±«ÿŽOžKˆ}$³dVa>î÷ùY³(˜Ïžðõpýú=>ípïVoPLLœaó'C±qãqš9s:Î'”6á›RæEýúÍâcËŸv{¢Ÿø@£K{"•ö}ø¶{ÊÔ®Õø²T¨fÃøËEºáO"&€‚à#ý€J»œ€æÍ+«…€¥ÔMryÑǯ§Éë&ÓÂÝ ©sÎ4¢õªU¢–ËÛåŠ,íӇά[§ª`þ‚|üôs||rHÑ¢®hŽ[Ö¹hÑ.65[¡ôo’-mYé¶ ½ñ†o²ù±Z²$L|("òJŽQzz¸´3’þúÏþ²S)6µ+Ñ$ÉNߦQÂolÊtîÜMŠزå$ÿgsy bÆ+( UívÅÞ¹‡~Üò#M^?™*®¤ô:ÖìèSÖÇW¬ Èú¡È×yölŠºz•¶²b_Ÿµk)ð¡Ö¿Û œ-þ—_žNË—§ÿ½Â2ýùjç¿kׇ>Çæ¿téËî·Ð/¿ìVÄW_}ÒcM“؉_`jy|ÔÕ8þجNŒÑ2ù™ áÏ$€Ë…%èèb.ðñ¶Å'\ºuKû„¡„¤Z¶XéÜŽ¾­Dý›ö§Y}€µíëÑ£©ÙûïSöÔ»¶î½÷(†Ý@?;}ºÃÞ=O(n´Û´ùŠÝ¤>GíÛ×TM†‚ÚºuÿРA-<¡ viã®]gÔî~ûöSìh§õïßT)Û¥p'y1Ž.le |fßÇ܉§ÎóÜÓý­!qdUBø‰®=ˆw-è@QgÏÞP+{èÀ|°bEï—‡o?½¾Y÷ m8¾ú6îKÃZ3( Úkw. ²ÿ:QõîÝ©Nß¾îÜT‡¶­W¯|NyöÒ×É¡õ¸cᘠ–-ÛK³fmQhçwíÚÀ#-†Â¦^¦3kïR|L"•jš›½ååR¶ò¦ÇÞºã8xp›„ð{êàݹsŸ¶o?I›6ÁÀ ¶6Hxh6˜¬#P° gú'·f<Âï„+=€Ÿ¶ýD­k¥ü4.ߨš¬^‘žýæwè@/ÌŸ¯”ý¼¢SèÄ·ß®SïýâÅC|Â*F‡ÊŒ³goãsB¶+%¼Z¨E¿þÜ.¼AEë‡P¾ŠÉ>ï=±Øf!ü8hf›|áÂ-ƒXl?8'bèÀñ·…¨Ø(ñ‡@þù•À‹õ^T¦ÞÖWÓþœf9ÿ†±cé•5k|Ê™¹#F, µkßä“ë¼wqk<ÞÐÊŸ1c­_ÿ»¯Oß—+WÐ8‰[^'ñá>WöF) üROæ¡b Ì[¸eã½»QBø½u|¡ ‹ÂÂΥШW¯ x‚ ¼®8¸‚¾]ÿ-ý{õ_z£å4°Ù@Ê›=¯·¯êׯqãèî¹sôüO?yu?õÎ]¾|—½É}ÍD°¯Ç*®é}Iïž ÿøã ²¿¿q#’e÷OªÃrp2¨;‡øè$:õçm%«¿©vò¥šæ¢j/¢Àï™sÜy ¬h›~+@òø$ îÞ}F-°c‚«S^ŽL!+õ–pðâA¥º?”º7ì®Ä• Wö–î¥èGRB-êÒ…*¶kG NñÌÛnpZæóϧÎÉ4è)oëž¡?á•ÿÓO[©|ù‚Ê»Þ3ÏT7 4¢áN‹üâ^÷Ñ@Ñ¢¹=¾×"¯Ñ´ÓÔ_½ÒõèÍ6oz¥[àÈË—iþçþïÿ¨Xýú?n–:ðÞ{¿ñyç÷xÜÏRŽ?~üªÒÎÇ.¿C‡šÊþ¾J÷ô×}=žnþsŸJ·ðüy£_Û/„ßvì¼''l€¡$Ñ åÍ›u’5iRܽ˜ÖHÄ&Īƒ‚¾ùëJÔ W£^àÞ,Ó´údúìÜÆ´vÌêÍòþà¼Þ'ÞXºt¯:+cõê7 ¾ä½%ÀdwíÚ£Š·º}ú4¡^½ž |ùÜËTUãS{¯îcY=v¾õáìúê= ©ãk½e,|¬Bø}lÀ­êîÑ£—y¼ؽû¬:‰§ ‚+ÿ8ëÜÃú×+1À®3»ÔaACŸJEry‡˜cë„ tõÀzqÁb§ëž8¦Øù8¨Ë3Ãøè$³ x±‰”Û5‹ýìÙ³³;æû´aÃ8p =ñÄT…ϰ SÄþ‡~àó^á÷äêÙ³§;@é mʼni«`}mÕªCÚ»ï.Ñš6ýL«QãCmÈ9ÚÂ…»´‹ïX]Ž;$d·ÀÚ—k¾ÔŠÿ§¸ÖüËæÚ²ý˴ĤDwhšMmˆ¾~]›Z«–vaÛ6›ò»[¦W_¥Þ3wkWFÛÃb4iÕ« }ñÅŸÚÕ«-Â!éï߈׎/¿©­sF›Ýü€vóßû†z.\¨õèÑC«_¿¾V­Z5í»ï¾Ó{ì1­|ùòÚÖ­[ éL/† ¦­Y³FEón]3fŒº=z´V¬X1­fÍšÚ¾}ûTÜ’%K´J•*i*TÐf̘¡âbccµþýûk%J”Ðúõë§eÍšUÅ—.]Z[±b…ºÖÿûâ‹/Ë«Œm/mÞ¼yZBB‚öú믫z5j¤mÞ¼Y%ýé§ŸTÛK•*¥ýüóÏãôr}àw™~eGvÄDÄ‹€&M>ÕÞyg±Z`‘à Ýk‹ö,Òo¤•}·¬ÆÞµÈ‘žÐôTmÑñÇ"À“ôikíÛOÒøØ]ìÆýûqÚœ9Û´fÍÆk-[~¡¾v²å}¹¸óž¶´Ç1íçµõïœÕN¬¸¥ÅÜŽOѶ©S§j9räPDÄ4((H]ÿç?ÿQ„6Eb£›Î;k‹/V1óçÏ×x®0ïÒµ;wîh'NÔúöí«ÅÇÇkÌž×þüóOméÒ¥ZÞ¼yµcÇŽi‹-R‹ƒ]»viƒÖ‚ƒƒU>ÞFk·oß6ªéÑ¥Nø—-[¦1G@»råŠ6sæL­U«VZtt´¢:uJÛ²e‹Zh˜‹{TšO\- 𾄴Ñ}(^<uïÞPý¡•ÇŽ]Q"^ (G+p%¬‹ê×/ë–§„ùgñ§nõ»©¿]gw©ãÇ­§Üo5œÊä/ã¾`Ò²’S~ýè!Cè¥_õHy?ôJ~øa#­^=ÚãôI.]ºË¦x[X†¿‹5*GŸÞ•ÙÓåMFÉõ·ß.I…jä ,i˜Ö7k֌݂7¡óçϳ‹ð³ê:""‚˜xg¨¼£§‹//ˆ|˜Ò0nfEÍìlZ|Z•U¼xqÚ±c{#ÝN¼0 † *V>ïÖùL’d1CLL +[V^….@þüùië¹@4€l|”uÅŠiìÞ½Ûl\†:ä‰Óv/ètÁé<öXQ0 9Í™ó=ú }øá³¬k–…Æ_ÉN„ÞW§©M›¶Ž¹äô¶YSáãe§EÑÁ±)Ð?êRŸ^˜öm=µÕšìn‘¦Ñðáä Nòs‹e 0Ù8ðgúT¤ˆç˜‹a±òúë³éé§¿TÇk¯Yó&Ÿ–×ßùD_#º~(šöN»B;¾ºhùâç¤ÂµÒ&úÈX®\9•ßÏÏ- ò™-+­HÞ¡«ÇPÂcñ€"ÚC‡%ÞÉSxx8o²²)q„úc±±€x·®>2æâS)1wäÌ™“ *Dÿý·¡:Þ—+‚Y¿BCCùÌ‚®t÷î]Þl4SÑÈ¿råJÖ©hIÌÅ`ý¤àr§ŠKb_ Bø}i´ÜWhÿ7jTžÆŒiG+VŒ ýûÇ)“%˜:—XæÉ'©Í¡ùówvJîJæ-I^˜@ç'œWçôŸÝ_-æïšO81ЭOvx’;Â;~˜úyJ€·:ý¾}›(WÓîÞî„„$Z¼xµm Ä…¼#®@{÷ŽU'–(aygêˆ~Zu›þ~ïÍiyˆ¶Ž'VU¡*]’OttD}–ÊÌ;7sýŽ©ÇÐÀG`V>Ÿ10›X&Ïx-V¼ûž`–;½ñÆ4’•Qׯ_Oq|”ô ÉÏòzõ "¾iӦѽ{÷Ô=ë°òÄ:êÿ­e7Ö¬@ü±âP ïeösÑ­[7zóÍ7ÙgÉ6ÅØ»woª8p$|)«ß—FÛÅ} âI²ºúCSXÉI‰àHèË/ÿT6Úp ÑNÌ“ÇyfC– Áñ¿CZ ¡Á-Ӫë”àíßÞ&˜l>òeÏøNÈR]öŒÏÆ,ÑN|to(O„°ïyhúdÏ:ì]Ö'Ÿ¬ `=mï¢íZ\èþüsòa9Õ«§wÞé@O=åºcd¡nC•d׸Fç#œíÚ_Ó°‹¶X!9¯³õÂ,*ÀGIW®\™XÖ΋ÿ1Š0ƒ ¿õÖ[jß»woªZµ*=xð€M…›ó&¡•)S†~å++â)¶=먪Æò¹ Þ(!€9Z¿üò‹ºÆh¸ÝùÔJÖPùÁ=GÜ”‡_˜b×o‡ç¾²ðª(yIåK½–¾º%°ÙÆ"fƒ8‚‘èú?^ÞmôŽ^>J×N¤¥û—R÷Én«qÝÄŸÖ`îá]ÒÉU«¨³A³<”•¦•ÞUÏØR„Æ[ÎÄá-ÊÛ=OjÃù3gnb[ò£ì>¸®2ÇsÖa90© ß~ŠÖ ¡…KØ­yVñ;¥³òõô`É?÷Üs,êHT&x¸×Xéà@Þ¯s<[»xS ½‚’%K²oƒ”LiÖúWâÖòWÄ^/_ÿæ°ëŠŠb‘@Ut  `,²0§—ãå¿bÇïåì±ÝÛwïÞój€…À‘#™­WÖpô0vZií<œÑñQ7hꆩ4uãTª[ª®:°MÕ6Ψ:Cu„ò.,/Ëk›øa†ò9+1ìÛ;ušL‹ V‡I9«^kêIJ‚<8ù°œ+WîªÃr^~ù –?;Þó#Üâ†o»G¶EÐÝ3¨XÜÔ|li·ðv9«q` |>äqã(¹vO„ð»ç¸H«L`ó(u®€îVøÚµ{JŽþJ•ÊošÅi÷q‰q´`×%€[à­FÐ+O¼â6ncYjN›6ôË>+´më4\¬©(&&ŽOܛIJýêô9kò8#ÍÝ»÷iÞ¼Š¥_²d>µ»‡˜ÊÏÏ2›ÛžíÚ5ù’r«{Ë+Z'„²ˆ`ÖžûrYBø}yô=¹ïÐþÆ"¢üÄM›VRç ¸¢Ol¤¯×~MÛOo§AÍ)]€¢¹]ØÊÕƒi)+HõdÅ©Ün$Ï2d®Òíøê«n®®Tuž8qU¹Òýý÷¼ ©Á*-–*Ž QWã(¤HÖTÅÇE&ºÅÎ>UÃ$ÂÂï £(} :yòšA?`ÇŽS¬$Tà¡X ²:‚ g†Ó7N«sæíœGkvT§ºÚ-ð~¶‰> Q/ÿþ;ù³)•«Žž…Ïú+Fª…›+Û³~ý?4cÆ&‚ž ¬ z÷nâÃrâ¢éâŽHºˆo˜_±c~j8ÜóÜ^»r¬¤îL# „?ÓJn‡ôöï¿`ЀRÒ-jÖ,á4ý€ˆ˜š¹e&}ÿ÷÷T*)Õz”:À/-Ï)Dtû;ÏÆNNZö™kI¿è}ûγiç´jÕ(VâreDt4ËÙÅöö[‘õÕ'Y× kŒ§T(K¿7駈J¢Õ#OÑ­ã1JA¯dãÜJ ?g1×/ÀÒo½¤ð2„ð{Ù€JwÌ ýptÑ”´`.ˆ±([ÖñöÎI|¶éoû~Sz—ï^V½úä«”3è‘æ³™¦Û=*žµžç² u6©ªÌ¦M®wîܧ6m¾¢ ºªÃjœÝ†óço1±ß¬lð[´¨¢NÇ«W¯´C›{/‘n½OÅê‡_ sôÚ!)Ü“ÂïÉ£'m· ›7£X,|Ú PØÂ yó*Ô´iE‡°x[ºçÜúú¯¯iõ‘ÕÔ¯I?Ör•-PÖ8‰C¯o²YÕ/ìá ,hû;3Àz¸[·„öí·Û;³jöwRü={Ϊsïûömj7ï€wN=PÚ÷8¯¾Õø²”­€sEKNR*ót„ð{úJû3ÀéÓ7˜p\°žu±<;ÆnúÒÝK4eÚ±y5«ÔL‰ž¬ødæ;dE ‡.¤½3gR/¶Ç`3,g… VØü‹ rЏåÁƒxZ²$L)ìÁüÖ;×µ‹NÌíŽ-½©dõþY³¨³êK±s9 N©G°!ü¶ &y¼Øm8¬kÇ/²ñ±@­Zp*b_Víý¸ûôóŽŸ•2`HPˆòÇ@~ŽÝ5®bŸþþìà¤m]±uô×­û‡½Ü-VNzòåËak1VåƒWÈY³¶ð-;ÙS[YfçãÀ™ŠVåµ6ÑÁŸ®ñ¢ÉJ4ÉÅ–Éæ¬Í+é" „ß…àKÕ€vŒ;vœ6ˆpÎ@ãÆÔBfƒåË´[/4ÒèÏ#*=€.ÿCCž¢LóçpŒ‚v•:‡íúgéÕ˜õïÈ~›ø˜]¶‹M)Z:ª®°°sÊ»87]»ÖWwlõñW¸—vGRbœFåžÎã¨&K¹‚€³ÂïlÄ¥>ÏFàÖ­( œd±ü'p’Å•YG ²Ýôþ¹òÒX²w ½Tÿ%¥ XµhU»ƒw›]™.â£R»-YBù+U²{ù(0..‘ž}ö>™±‘:¤ÉÞ•ÄÇ'Òï¿ïg‚¿™Ý¿Æ¨Ý}óñ«ט8kÕ_?­Ž®­Ó¿e¥< ‚€— „ßKRºá"àn6ÙZà¸â à(Y]?ç°ÛB|Œ»r3ê&MÛ4M¹®Y¢&~z4µ©Ö†²ð?{…c|zÚŽo¾¡WV¯¦@>#ÝÞaÔ¨…|ÚZ’:jמec6wîv‚?€ªU‹)‚ߪ•í‹£;ìwõ°SY=\ä‚•/Að2„ð{Ù€Jw\Œôôƒ†àK Y? /*S:¥lÖ€[àE»Ñäõ“ :#[¤ÞOô¦lö9Ðæ¯wÞ¡¸ÈHê0eŠ]„<¶½¾½”$¹¤Ê\³æˆ:,òû  YÝîˆ ±”«xZ”2 XúPÒ“ x9Bø½|€¥{.Dú»wŸ¥M›`:xœ`?sA݇@Fˆ•q76ØD“ÖM¢­'·Ò€fè–oP±Ü™óþ–ȧžÍëØ‘jóQ©µØµ¯=#_~y:-_>\´˜™2aˆü~üq3A_ ÿ'©gÏ'¬:É/1–Ïe‹díûdoy ðÝWT#¿!ò™Éë±á÷Ø¡“†{·oG«ƒ†’Ï8NM'ûHv$T°`Æœùœ¹y†&¯›LswÎ¥vÕÛ)1@½ÒõlÆ%‚Bÿì³Ô•Mý V«fs9ÈxïÞjÛv"}ôQ'åóÞÖÂ""bhþü4{öV*^<¯bç·kWÓjÎIØÔ+tdáu*ðXv‚©<æå­à<óE[û-ù" „ßàJÑ‚@š€ýh CQ°pá܆ƒ†š4©`µ~@dl$Íܱr%mþäê½v-“±…ˆqg{õšA•*Q„ß8ÞÚëS§®+vþòåûyQ]–S­še®Š˜Šuº®ˆ¦|³Q`‘Õ[‹½¤óz„ð{ýK=°²Á7Ö€Â8ø«_¿Lº»\ º?T™^¼s‘†·N¯=ùå ΘC™ cÇRäåËÔ‰üؾývmÜø/;Κn›MËÿûïcÊ»äø}ú4Qùó›×¨¼§Ž® ¿p­ªÝ¿°iqr/©Ÿ‰\Làví:ýÐbàëܤ† Ë©E@³f•Ôn:­Vî»°&®H«¯¢¾Mú*·Àå Xçž7)>ž<÷UíÒ…ê¾öZZÕ¤z†…ˈ ØIÏ›d­èC¿£%LIDATg),Z´K9Ü æÝ}s6ÿ«M&Úw\Ž«Ý7óŠò–‡ký¼úÒÍs‹üT£!‚€Y„ð›…E"7C²ný!üBqŠ‚X€#péÒ)¶eÿ=U«#“"iOôÚ½—ZåjEu³×M•Æ\Dvî´s'ÅÕ©CI¹s›K’*îÁvî|@µkQž<Ö±ÖïÞMbå¿(*Q"ªWÏÊâŽÔľ}ûö|´ò㪾[ÿÆP8i Y}þ*ö±hHÕ‰¼!üÞ=¾Ò;oE7nL>h΄Ξ å“îÊR~>r×\H ºíw› %Yoöf®{ÇEGû‘?Óúàà$³EGEEÑo¿ýF…H» „ß.0J!‚€‹(R¤4}ÿýD*PÀñG ;³«‘ì[ W¯^áÌj¥.AÀ›µŽçÍHß/@@ÓxA/¤ ‚€ à „ð;e©CA@p„ð»É@H3G#pîÜ9özn±šãÇÓÍ›7->·ô &&†ý·{÷n:ÍÇú¾øâ‹lUp–Vóé~kÙãßN6œ1c†â˜æ»qã}öÙgtõêUU¶Á"M|ÙñûÌPKGdâÙAÏž={ØþÿIúøã±¾uë–z‚üé§Ÿò1·U•_€ÄÄDš4i 6Œ ¤.\ ˜Ù{û%JâZ¶lÉŽ…*ÑСC)$$Äl¾¹sçRÞ¼yiܸqt÷î]A@pBø]ºT)¸Â… ³ü¶T£F >ü¦8]¿~]5 Ä»lÙ²Ô¸qcºvíšÚµ³ƒ KJþsA].§::uâ3’逃Nˆþ¡C‡Ø6?u¾½{÷*®X4Hç# „ßù˜K‚€ËЉ5âÏtt9XÇaA@ÑÑÑê¯U«V|Än9•&Ož<ê×Üæò•)S†nß¾Í^ý’óeÏžÝ\V‰# „ßÁKñ‚€'#€]ývßÛ¹sg%Ëß·o%$$¤Ù%<7—: 6äÓ·ª…t$‚€óÂï|Ì¥FAÀíÈ’%Kª6!òø6mÚPß¾}©[·nŠù?‚¹<`á?^=3—¯ ü³xñbêÚµ«R 4WFª†H„ Ø,Ìâ'Øv…T œdöS¦Lq˜Ë^(óÝzÒ H 9?‚¹|P„2a¡BéŸ .{ÓC[ž F TÌù2Œ™d|r˜§×{ãtæòA§À¢Ÿ^=ò\lC@Xý¶á&¹A@D@¿G›4ZA@° !ü¶á&¹A@D@dü9lÒhA %°›_ºt©r “ò‰gßA¹ïÞ½{žÝ i½ àfáw³‘æ¶ x+V¬°%«ÛçyçwܾÒ@AÀ“s>O-i« ‚€ 9BEÆŸ9%· ‚€ àQá÷¨á’Æ ‚€ ™Càÿ—¹RÂ&IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SQLStream-members.html000644 000765 000024 00000012243 14042362132 026040 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::SQLStream Member List

This is the complete list of members for mysqlpp::SQLStream, including all inherited members.

conn_mysqlpp::SQLStream
escape_string(std::string *ps, const char *original=0, size_t length=0) constmysqlpp::SQLStream
escape_string(char *escaped, const char *original, size_t length) constmysqlpp::SQLStream
operator=(const SQLStream &rhs)mysqlpp::SQLStream
SQLStream(Connection *c, const char *pstr=0)mysqlpp::SQLStream
SQLStream(const SQLStream &s)mysqlpp::SQLStream
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ObjectNotInitialized.html000644 000765 000024 00000032364 14042362132 026660 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::ObjectNotInitialized Class Reference
MySQL++  3.3.0
mysqlpp::ObjectNotInitialized Class Reference

Exception thrown when you try to use an object that isn't completely initialized. More...

#include <exceptions.h>

Inheritance diagram for mysqlpp::ObjectNotInitialized:
Collaboration diagram for mysqlpp::ObjectNotInitialized:

Public Member Functions

 ObjectNotInitialized (const char *w="")
 Create exception object.
 
- Public Member Functions inherited from mysqlpp::Exception
 Exception (const Exception &e) MAY_THROW()
 Create exception object as copy of another.
 
Exceptionoperator= (const Exception &rhs) throw ()
 Assign another exception object's contents to this one.
 
 ~Exception () throw ()
 Destroy exception object.
 
virtual const char * what () const throw ()
 Returns explanation of why exception was thrown.
 

Additional Inherited Members

- Protected Member Functions inherited from mysqlpp::Exception
 Exception (const char *w="") throw ()
 Create exception object.
 
 Exception (const std::string &w) throw ()
 Create exception object.
 
- Protected Attributes inherited from mysqlpp::Exception
std::string what_
 explanation of why exception was thrown
 

Detailed Description

Exception thrown when you try to use an object that isn't completely initialized.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1UseQueryResult__coll__graph.png000644 000765 000024 00000071554 14042362133 030101 0ustar00tangentstaff000000 000000 ‰PNG  IHDR"žέ¾ÍsRGB®Îé@IDATxì˜UÖ† 9 H1  ¢¢®#æÌo»êšsVļÆ5ÇU1¬Y0g…DP”,ˆ("9ça†úÏ{‡;5ÕM÷Ðzæœçéîê ·îýªºú|÷¤*Š˜†€!`†€!`†€!PŠT-ÅsÙ© CÀ0 CÀ0 CÀp±Á0 CÀ0 CÀ0J#"¥¹Ð0 CÀ0 CÀ0ª†€!`dÿûßÿdß}÷͆®ZË1ƒ–¿ýío帇Ö5CÀ0*f©<×ÚFjd5‘›o¾Yȯa/à8÷ÀÕW_-ß~ûmVÿ¬ó†€!`T$ŒˆT¤«ic1 CÀ0 CÀ0²#"Yr¡¬›†€!`†€!`†@EBÀˆHEºš6CÀ0 CÀ0 C K°`õ,¹PÖMCÀ({F-›nº©´lÙ2#Y¹r¥ 8PÆ/­Zµ’½öÚË}¦ÒøÈ‘#¥yóæé‹Wݺucc(öÙg©S§N*Ý*ö>_}õ•5ŠÝ†h†€!]˜E$»®—õÖ0Êûî»O¾þúëŒô`êÔ©²ûî»Ëƒ>( .”÷ß_öØcyã7¶ùøûßÿî¶:T¦M›–pßt6øqMœ8QN>ùd7FÆé_+V¬H§¹”÷ýÏþ#O<ñ„ÛÿÃ?ˆ™‰!`†@åAÀˆHå¹Ö6RC Â#ðúë¯;Ez—]v‘í·ß^{ì1騱£l½õÖn¦ÿ–[nqŠ?@ \ï¸ãŽ2oÞ<¹òÊ+e³Í6sßGŒápzøá‡eóÍ7—8@zöì)cÆŒ)Äï¹çž“3Î8Ãí¿å–[Ê|à¶í¼óÎòÏþÓY*Ž?þxY¾|¹[ðÁˤI“Ö[¾þúëe¿ýö“Ï?ÿ\n½õVùïÿ+/¿ü²œsÎ9²jÕ*‰kë”SN‘×^{Múôé#S¦L‘ ÈêÕ«å¼óΓ&MšH§Nä›o¾qçÙsÏ=åŠ+®p“=z8²Ã†G}TÚ·oïpyòÉ'ݾá7Ú˜„_þù§ëÌ™3eúôé²ÓN; DŠLf:t6mÚÈÝwßíšùù矡ÏK.¹DòòòdÔ¨QrôÑGËA$-Z´pýÇ ½{÷–>úH°Ê0–¿þúK<ð@iÔ¨‘ì¿ÿþî|“'Ov×à˜cŽqØ^pÁî\?üðƒ`­iÖ¬™;Wx¶l†€!Pþ0"Rþ¯‘õÐ0RDÅËÂC=ä”á«®ºJž}öY9öØcå©§ž’nݺÉ+¯¼âZÃ7 ç?þXÆçÈÅ#<â|Èû^tÑEòÙgŸ’ F!ÿôÓOåÍ7ßt û 7ÜàÚDáÞd“M23gÎ×.vÛm7Áí)¼üã?:’ãV®}£¾V?þøÃ)ïѶî½÷^Ùa‡„4´Æûå—_ 9.^'t’Üxã®5¬!ˆ dë“O>qŸ±~ýúÉÛo¿íöZ!fÏž-ÿøÇ? _„ãšk®qä†~¶mÛÖ}‡H@¦ }3fÌpë=ôPy÷Ýwݹ!mK—.u×å /tV¬  Îsúé§;â1vìXGD €¸œ}ÿý÷K®Ä ¼!"ôý¥—^rçºýöÛÝ56l˜ 4H³‰!`†@ö `1"Ùs­¬§†€!{ï½·+X÷ûï¿;«Jó¢E‹ä,§vš›eÇŠÕk 3þ(÷(º_|±Sš9ŽÙvd›m¶)rföŲÀ‹c!È¥—^êfýÏ>ûlGD8¤Æ‹_ÆR%¬>N"ÚmV¯^½ÔÐ&$Šõ^‚Y³fI•*Uäºë®s„‹n\7 úAN°@€‹·Úøþqnˆ‡—¦M›ºEÈÝvÛm'õêÕs1-sçÎudòƒàƵfÍ÷‰%"Ñ®];2dˆ³Nm»í¶rÔQG¹};ì0ùâ‹/Ü8rrr ÇËFƃՇýÁêÄOtV.¬.„ëÁx¶Új+¹ÿþûÝ8 >ìcb†€!=˜E${®•õÔ0R@å©ZµªS¼Ã‡Ô¬YS?üpçJEL$Às”s¬ÌØŸþùNÉÅ-Ë ÇE…}/¹¹¹ÎÂw¿žu‹/ö»ùD‰F ËIëÖ­ÝêTÚ‚y²ÀAi@ªU«æŠ@bíØu×]ˆx”Zµj¹íá7Î ó/O4hL!*,s^ß>ÇãÒ…å"…Û$÷2\²?–ÃxñÝ E !~<Œƒñ ásùñà†[Ö HÒTµ™†€!`dFD²çZYO C @>P`qÿ àêÓ·o_Áíé­·Þr3ú‡rˆ#'(Á(Üq.?ÄG (>Ü‘â&H~~¾‹{ fè,[¶l½e¬ï¼óŽà’„,Y²ÄYmˆÁJ€Äµ…¢¬<*ΉU‚ŒDY½èsçÎ÷3Ö”ÿ°ðs„_lGáÇ¢±Å[8KE—.]ñÀµ Ëno,DÄÕÿ…‡X„ý Bðà: áñ`Å!Žä½÷Þs۸ċ$¶ñb¬0>>&Ñþ¶Þ0 C |!`®YåëzXo C „@ÉE óçÏw±|G%ö8ˆq%Ì®£hèN|Bx6Þ·ƒ;îC¸(×Àzˆ ;–,,/¼ð§b&ˆaÀåÉ/÷êÕ˹8A` Ä” œÿë_ÿrÇĵ…ÒþÛo¿ q^ˆÁ-‰ y\²žyæ¿©ð“¾ñBiÇŒsbUÀ•‹ tÄïC`¸w ó <þøãÎ]í—_~qäKÇ©§žêúÊxèë 'œà\£n¾ùfçNűÈÁ¯¿þêÚÄ!;î¸ãܾ]»vu®rÞŽcp'àÿÎ;ït‡ë'ô—v V\/¬,¸Ë™†€!`dUtökýé°ìé»õÔ0*·Ýv›# |nŒà6„ÒNŒÙ–i²8/vÂdÔ¯_ßÅŠ@6ºwïîö÷Jòe—]æö÷D…ø ¬ ³‡]»ÜA Þ°&@.Újð·hg×DmAFèo¸ŸìKäÇ÷…uq±d¾¢´ 4ˆÛ5¥u5\¸ï´‹%†€!`å#"åçZXO C „ÀÕŠ8 ª£§#¤Ž [.¿üòØÃI_ÙÝ1…•™l+…Ó•è.X’|­•=‘5n†€!UɪËe5 A€Ø‡tIç g|â{¢Yü YP86UÉd[©ž³¤ö#%ŠaIËÚ5 CÀÈŒˆdϵ²ž†€!õ¬XA”-Ƹ\ß—¾æÏ_¦ÿK´²ú"±Y¤Y¶¦k³ 5Τ Ž'ën0 CÀ(‚€«ÄV†@yD—ª}÷Ý·¥ÁíRHJ:wnN3¶¯!`†@0"’­ CÀ0 ìC`ìØéòÑG’‘²zu¾ydW}uqµK²o4ÖcCÀ0²#"Ùwͬdž€!`F`üøÎRÒ¿ÿ. 0„äè£w’öí[døLÖœ!`†€GÀˆˆGÂ> CÀ0 E`ôè?åý÷GÈ{ïºuk*!éêHIÛ¶M CÀ0 "`D$ƒ`ZS†€!` ü] ÉOÎZÒ¼yC9öØnrÌ1;IÓ¦õ*Ö@m4†€!`”FDÊt;¥!`†@ö!0hÐDé×ïGùä“1®NÉqÇuÓ´À¥NÙ7ë±!`å#"åà"X CÀ0²U«òäóÏÇÊ;ïü(OÜÿÎR²ï¾ÛINNÕìˆõÔ0 2FÀˆH_;½!`†@ö"°`Ár—u KÉo¿Ív™·°”PÙÝÄ0 C 9FD’ãc[ CÀ0 ”øóÏÎuëw†Knn¾@Hˆ)i×nӔ޷ CÀ¨l©lWÜÆkd1-Z´Y³feñ¬ëe‰À6Ûl#'N,•.Œó§sÝz÷ÝŸd³Í6‘NØÙeÞjÔ¨N©œßNb†@6 `D$®’õÑ0 6”?þøCø41ÒA`æÌ™Ò¥Ká³4%ùöÛIòÚkC嫯ÆËÞ{·—^½v‘ýöë U«jiwCÀ0*1FD*ñÅ·¡Ù†€‘l»bå§¿eEDÂ,Y²ÒÕ&yóÍïå÷ßçÉñÇïâHɶÛZÑÄ0N¶l•#"•çZÛH ¬GÀˆHÖ_Â2@y "áÁOž¦¼‘ðâ\·N:©»l½u³ðn¶l†@…AÀ*/U˜Ki1 ’F௿þ’¿ÿýï;M¯^½4fà= fþV  p€Ü|óÍ Û‡pì²Ë.²hÑ"¡/»ï¾»<÷Üs²téRyüñÇAZ¶lYÂãÓÙðŸÿüGžx≔9ñÄݾ·Ür‹ë cúôÓO9úàƒ¶3tèPG¬ípþùçË÷ߟhs…Z_¿~-9õÔÝåý÷/•þý/–êիʉ'>¡µIÖ`÷a²|yn…¯ Æ0 Q³°‰!`Y@ƒ ‚… &í«ÎÀª¼›m¶Ypî¹çÿüç?ƒfÍšgœqF ³âZ UÖ]ÿþ÷¿ƒ[o½5PE7P+G°é¦›_|±ÛöçŸûì³OжmÛàÌ3ÏtmMš4)Øzë­Ýönݺçwžkû¸ãŽsmªòœ~úéAçÎÝqï¿ÿ¾Û÷—_~ zöìé–_ýõà†npË7Æï–yãø®]»ºïãÆ ”h­Zµr}RËI°ë®»5kÖ ®¾új7ž+¯¼²ðXÞzë­`È!Ann®ë/íwìØ1øßÿþçöëÞ½{0þ|·Ü»wïàí·ßÔÂrÈ!ÁÑGíÆv?ÿüsдiÓ I“&Z:‚¸¾¨5&8û쳃֭[guVP£F ×îa‡(9r˼ÝvÛmÁQGå¾+Yrû3¦G}Ô­»æšk%,Ák¯½æÚW®môíÛ7¨S§N°ùæ›je‰ícøÇ?þ(A ¾þúk×fÜÛŒ3µ¼Äm*÷ë¾øbœbó\оýõÁW¼üðÔrßgë !`© `#£†€!P¡øõ×_ªþýûËË/¿ì¬XøŽå Zµj‚KòÊ+¯ˆ*¾rûí·‹6l˜ 4ÈÕšxàd‹-¶UnÝŒ=iƒÃ2jÔ(Ùd“MdĈ2gÎùøã]jX¬o¾ù¦Üwß}¢„ÃR·n]Qá–U —í¶Û®°)%+®<òˆ<øàƒÐËmS]=ôPy÷Ýw5†àgù¸çž{œûV\šp{ ËñÇï¬$Œ²ÊI'$7Þx£ÛùùùnYsY°`sï¢ÏÇsŒãë'/½ô’Ô¯__T¹%UràJ\_ÀsøðáZ+ã©U«–¦¢]÷w‚{maQQ2!t,^¼X”ô –Æz×]w¹ë•‡~ðb¬O>ù¤\wÝuÂXÁ‚룄Q”ÅöC‰©¼øâ‹ÎRµóÎ;‡á¨0ËÐQ¯ÿÙj9»AÝ´š‹’%ù—<ýô@™??3° – Ä0² uÿYÕmë¬!`‰À&­µˆˆZ¤}ûöÎé„N\…¦OŸ.jápŠöV[m%÷ß¿S„Q†·Ýv[ùâ‹/äÒK/•-·Ü2¡;Û!jpD„¡Ðs.HÄ£3üÒ§O×á½öÚKN;í4·Ì$‰øŠÏ?ÿ\&OžìÈÏòåË‚Àà–Ô®];QK‡«ŸBÜD!''Ǯ†B "úDÌÈM7Ý$³d… ‰Kt@l(ú‡ÛçVk„äååÅö²£–"G°ÔB:»82‡Ëû@8Ô2åðdì|°V?Îë“O>Yï¸#Ž8Â]7ð!‚£–7nÈ%¤0Š ¨µIÔ:åpY¯Á ö¥I“zrþùû)1½^ï×^z]g)ñ¼Cñ}QIç/l´6CÀ¨ T« ƒ´1†@åBÅa–^Ý“Ö<A]®ÜL;Š/ŠîÝwß-Ûo¿½úæ¿ï¬ê.åau rǪ;Ôzmø/5r‹ê åfüùâ×±Ìz¬%XV ³ýÞBrýõ×Ë«¯¾*{챇 bGùæÅL?ìaQ1§˜Ÿ|òÉ…«!:urä'l-L¬Y³¦p?ÔE«ð{½zõ —±©9½ð;ý' >Úˆ8"ê2'Û{¹ì²Ëòßù„aÕðBèWX|?¢}`ŸDý`êzn¦R,ï²Ë–JÚ¶T+ÓÑj}úQþõ¯äê«ßSNÙMþïÿºK‹Vô³RÜ6HC Ë0‹H–_@ë¾!`¤‡3þ âÈÖ÷#^Žï¿ÿþÎJã&t–y Ûî]¹Ü—ÐÖ \>úè#GؤñNéÇm‰ÙûvÚÉYFìŽÔØј‹P+ëqßÂE V‚×!'óæÍ“)S¦¬ÛQ—°Ðß &¸õ¸CaÍa=V¬,ô +B‹-\V*²ŽA²°Ô$¾!€$ê øpÈŸaò×.}/\´À€óƒu*’¬©_‘÷©[·¦^ó=41Àê÷µ|-–=îUkÕsj…§÷â:RY‘q°±†@v"`‘ì¼nÖkCÀ(~Ö‚%åÁUHÌe+îU(à¸ui°µf+Zîˆûú6˜Ñ×`q§Ô+ò /¸˜”l\»æÎ+?ü°ÛŸØ ¬/ âGˆC!Æ"*XS4P\–,Yâ²gùLT¸('‚;™Rår~>W®\)ÄJׂuàØcu¤·2\²žyæw±´‰kVŒDÂ5hÞ‘¬ĤDûÉa,X{4¨]¼ÕÈãm÷8Rcýa|ÿ÷ÿ—Ô’áÛ!F„øÈ[\?p³óûFÏYÙ¾wêÔJ öñÒ»÷QJŽGÉ£~©ñ6oËÉ'ïæ^-[𕤲Ý6^C ¼#`uDÊû²þ•9(–(y¸îl¬0LZÓ° d£€r†[MœŒ=ÚÍâGk-0"Jüʰwßavšd|ç+’dªŽÈ¿þõ/§ CF¼Pû…>ìF…²ÍzÓ!á˜b5 (Ô§ð.\wÞy§k×$sïjäÏ‘î'–,!¸a…ƒÁÃíp­}l } qÜá~Þw´è¾áãü2ãcÄ£$êËï¿ÿîÆŸ¨¾-ÿ‰u\Óq§â÷ç]Þõ÷Ÿè3êˆ$êûƬÿå—™š´aˆsß•‹ôÀ¿yÛTíXCÀÈFD2…¤µSaÀ7’gŸ}v£Çˆ»N=\`­o  ~”Æp³ßÎ'ëq…9å”S«]01Ê"Ù(„̼Ó³ú(¸Í DVɹ袋\à4ÁèaÒ‘ #H]¸„ñõD„,\&å ÊJDüUX¹rµÆ@Ô mCdÆŒE.Ž„x‹%ñÙ§!`”#R¨Û9‹©÷Þ{¯ËzäѺ êvp²SƱZ<öØc.K³ÈXðßÇ Ä û¢XöÕ´¢¸‹à‚CÊRÿ~\Gºté⎄xaV\k-¸T¤øÜû,Hdh"+íàãO†"„¤ZסÈ2DÔ®þEjUq}zXÒ¡@,C”ü@0(¨Ç <ÉÌ,{!×›¨`ÑÑÚ®z5ÎÅ :þùÞ ñd€Òú® Šæ‘>•±buñÕ²q" ÔŽ;îèR׆χ+nGåYpïÁý)UÂXÀŠû,,¤¿ “¶]~ùå.¦#¼_x™€o\¬2!XװЄ_Ä``ñHvcÇé¿,ÄœD­vq,&Ù‹@­ZÕÕ½nW,ñÕWÏsi‰%9ûìç5Ê2nežÙ€‘ì¾~•¦÷ø‡“žŸwê#àƒï¿{²=ôÐC.ÛÐUW]åxüäŸzê)Ùm·Ý\P/$Æ×* @ ×9BóßÿþW˜ÉFP$/¼ðBa¤?/ør¶L”sRÀ¢Ø÷ÝwBzRfÎܤPì£Ë(tÔhð/,"X0 6´áºöÚk ƒ‘i'Yí†+®¸Â) Q%”´´à¦Eõ\ÀòÓO?íjG0ê;@¨ˆ>òÈ#ݘ8/  ƧL%U-$ƒÔ°\üö©® ÖHDO‹Þ…7—‹e-jW„@l¨c¸1a K8”_Oº[^‰$“•Ù±~A¹>þ…‹…TÀ‰ä³Ï>+¼GÃû@иG ß{î¹§»Ÿývî-ê–˜T ¶Ù¦¹>󎕼Źi‘q«{÷Ûuç+«KR1.±ÂÈŒˆdÍ¥ªœ%6‚™zfâ#Èøƒ•‹AX´*¶so"2€«Ë(~Ò²™c,!ßÒ‡ .¸À‘j5`)˜ªÅÕ Äj ˜GE[«D;K VÚC ŽK.¹¤°žŠºO¡^F©Åêâ_øð{D Èjµk×w,/Éj7àŠƒ°… ©i™Ñת֪xüXhÙ `ùœsÎqÛœÎ`†@º°†0Ë‘AÉÅÊÄŒ:u#è¿‚öýCa…”Q¸ V"Oòü>åå’Eª\,S^6d)Ê”uó‘’ Ĉ”¸ØA¸W°69ØÈo¼QX”0li‹³®á.æ³raù!0÷÷f4].÷ çÁ]Ð_wÎÇ}€•ŒÂ‚Žõ´§Uß ­_~KÔmáþã^b\gžy¦Ë¦•ȺYZ%ýù(hÈ=íƒßnŸ@íÚ5\;·ž}öL}þÍÕççÝú |Y‹{NÞøX †€!`l#"È6—-¸9a1€à^å- Ñ^%«Á¾(zv£Ø±L &J% – b,°H <ù [û¨ øyñ5"øîׇ×ùý¢Ÿd+Âjã_Xg¼Ð‰QÜxQ;¼w RÏ"ÑÚ ¬#Ž‚Vþq×"óãaœ^pM¢^ã%˜9¼L_„¦œ kŽ4´' gThT¸ô½víÚÎݧ,¿cÅ"†’„Eÿ¼@à’YŠ2e]ã|éTfç¾çº"aK[œu "aGâ*¢» úFÌÄ-·Üâ0 ˜!Ö/²UAÂÂï·.-.‚N$Y5{È]œu âg•ôçãº@”Ú¶mëîg& LJÎ7wE‡ »Y-šmõÞySöÛï^éÛw°ºû•?ËfÉ!a-†@i"`D¤4Ѷs¥iUQˆQ€±Œ0³ß¯_¿"3»j˜ØÜUx±Ìì/n-Ä;àrŠå~ÎÇÌ1(*Ì0³/Ê9 9¤Áj€P×v6Ÿn5¼ì6&x#†ªÉ¼ôÕW_¹Às¿{*µÈ…õà ®8(”‰aÆm°Þƒ?‹³å7Üpƒ³„`{f±qßÂ2…Ò2<¡üBrÞ~ûmyòÉ'Ý9Ãû”Õ2ñÌУЃ‹cÓ°$³eÒºÆ9S­Ì®Æžªu EŸëW‰œssoa5ä:ƒK4f†{¢† ˜b…X%‰{ß‚Hi¢jöqÖ5HjÔ*éÛâóÐCuI" ?¬ ÄEázfRrÔ«WSIæ^úü»Nîºë8½“•”Þªn¢o©›èŒ’;±µl•#"•ò²g× qêÝ»·º LunÌ’>ÿüó) §¨ÄŠ@]„îÝ»;ÂÁ 3éCQ¾˜ùÅâ 9Ä×-\° ^|;X+HÇE ÒÀ1®3C<Ê%‚2^¦ß–Ûy£OÌNã®Bß°´0 pÄ Å6Îgµa9´ŽòÆ‹@~”9–•Dâû‡ ®1Œw, AC\×Èà…U',`‚ÂÃ~(ù¾½ð~ë-/Ÿ&2éi‘q§óÓe"C43Ø€ƒDÆôYo·ýÂõD!æ>ÀZCB‚8Ûd–¢LY×8wØ’æl¿Ží²°%³®aAÀ­ rÍØqƒ„{ [×XÁ:Hì÷ס`"5X u¸;†%™U2κÆ}µJF«¿Ó>× k(Îïq Ÿ»¬—qMÃ-‘ ¬¬àƒøß¿gH9Â~¸rò»b_\I>ŠkÖÄë°Žkæ Odz‰gnv¥!»ï¾•ÆÙ®“.7¨5º‘Æ=«÷У«ö“Þ[ëe”F_솀!PAЇž‰!u¨‚•vŸµx] ŠÌzÇi y î-ë­Ózµ(h6©Âmj TáT± ´H\ázµÔ»¨²¨%¥pýÆ,p~MÇ›° %eúë'ÜÝ 3×Û»Õ´¨ÂÝ%áwu» tv½p;çU O .@…ëü‚».Ëÿ ‚_ ‚ѽƒà‡óƒ`ÐñAðå>AðÓU~·õ?gÃÎ ‚Q7Á„Á”W‚`ÆgA°¬èøUñTÉ[ÿø4¾1Žÿüç?’@-#Ûª¤¶ ¯@I–û®Šz JŸ[V+U .gn,7n¨u$ÐdZ½µXŒë¯ }ÀõQ’¨åÅ­W÷:w/q¿©êÚQ²¨UÆ£qG’íàŽ;î”xºk«Šg w­¸·À3fL q:ÛUYuëÂoŒA•_·Š±()tm¨hÁC7~U„];ô…ûA-n|ªôJ.M`àŽgLJ`!îט¢@ɉۦ@É­['U¢Ý2禈ZH{ ”ÄjIqë”´Jfbq ßó\gt”àJF\¿Ã÷¡k,7®§’«¤G¬Z’L¶8÷Æœ`Mê?¯@':%ëZ®µZŒÜ½¡.ŒîºiÌNÀ2Ï- éÆ3bĈ@'AÜþ\S%vnŒ\W0dû]wÝ褉»´ f 1DîZqÿª+]Ò±”ÄFž<:èÕëI½/nÖ{ú#½Ž JâTÖ¦!`T¬²z%˜}XÌX§#X1pQ¡ºuX($•pñ·è6¾S€WTÔÍ”0+ž¶ë-1Ñõ‰¾û¸¶‡ƒãí^¿uëº"Su6w•ú诜#Uõ³ËË5¶e—§Â»:K‚,š.²x‚¥±, µd3ýd¹þÖëí[øeÓ½Dx•‚àDl/\òp="Þw³ ‰·ìxëÖ(\µf©±¤ðµ®±=<ÓïÛa8²±qM’UfWcÇÒ†eŠYxß爓d•ȱÑîQÄá†mß1`IÂ:AâÆ‹U+S2¡M¬*¸‘Ü€¸,a«¤Ç6½ü®ÿì™–¼•kdîø2ççe2cø™3n¹¬\”'ÕjåH¿F구![ìÕ ¥Ó2F’´Uk$V,@JVû& (HºU w9 ±È‘]Žß2×k-ÖN_ ’û‹x±ŽgVPÚ¿tŸ) d;1Ξ=wp¯É“çèïf°ºÌÞ§Öœ­õúî©÷Ó6hÁ6†€!°>VÐp}<ì[E€X 2ý¤#ÄjxòŠ7‚Ò%(dŠ{§s®RÝwå,‘É/‹UšžXÉ…#õ5%òÿ-Ú•EcD~Óý!5×’ >ë¶©]ž¸èA%³& £=㺦Klq9#&‚ j^Èt¡@õÂýBûÔia阽p¿ ˜–devÎ¥V¤ÕÙ!ÜÓþ>÷ýKôÉï‚~CÈãˆsŒ;žT×üÃçŠÃc‹s]âÎé×ó{ö‘ ޹֑åsW+é¨*ù¹¾ÖøÝÜgº9rÔKí¥QÛ¢ëí¸ö nld*#¥3åø„xAp‹d"÷F ÷ îm¸ø‘5 i¬Ã’ø$âa¸&a×7ˆ$¤‡øëFBˆOYËŠ«]Õö矤×,ßê•Ô­[4ÙGY÷ÕÎoåõ¦• Î%xÑÄ(.êbàf÷Š{|I—. ¡XP‚²%!lúÖ‡)•eÈįk-k­ŽXÔm#²wÌlõj öÍUvHD#µjxrQgÝlôzýn¨Y¥vzp½UéKº$$“Ö5ˆ.±Qñ––èúâ|‡(¿”HˆkHGø]øßƆ¬‡Ñv‰‹ˆJœU’}Ò½.Ñvã¾·©ÑI¦|½@ªT­"Áš@r—ÆÇ9¬VkIýV§HóJÆ;jí`Ñ‚¼aáÙ<àÅ_t¤Kß±œ‘¬"‚5¤XZÊ©]»ºÆ‹íæ^¤ü}á…Á÷ò‰Kí¦$l/%c:iab†@Ö#"tAÁ>%c‚clµ!‹n啈Äv¸¼®Ì] 2Aÿ0©`¹–*Œû]´×ù+Ô÷'·Àõ©éîëˆEí úê>Ñå_EÛ±5)!@QÉt‰-.Rް0ëW™=¼-g׿ß)ãO•¡ý)3Z*ù«×(!)zŽœUåÕžc¤AëšR³šî³Áæ5¤yçzÒ°Mr‚‚û/RXcÁý RE°}¸fMô¬þ8¬m/½ô’³¦PPµOŸ>ÎâD¢ ˆ YßHbpÌ1ÇD›(óïÝ»·S³v2kÖbyùå!jõy\IpsGH:¨S׿2ï°uÀ0Êõ\³ ø-)óë’•€ˆàϧI¼%šË÷ޱP Ä¢Z}‘ž#B;®]ÄujÒ3E]¡jµ©±®øaÑ+þš’pͪø¨ÙA×,â2øDæM\!C˜&³Ç,—<\³BÆŠÆÛԑÞÜZÿ¹J_¹²Ä}®RRKºœÝÜ~›?i…,‘[H\rjTq›ù?Å-«.rd0#î#á8bÑÂÖ1Ò%S'†X ‹2yЍïS$_cmÞ¤f9¤äd‘œuÖ^®€bÆî®å¡ÖCÀ([Ö³ˆ”mWìì•ÕêT½Qö Ĩ ÈDØjQENGN.:.¦\khÜ@ƒöÖŠšM HÄ"Nj©¢³ýÍq[l!`d&Û֖ÞÞVæþ¼\¾{àO™;A É*e#ê>Õ¨mM©µI5÷j¶Ãú.šq§Ï]²FÆ¿=×—%åJ­†Õ Êö'5“¶= \ïp‘㕪ÄYÝê÷BœMœ[ñjåErrªªåf'÷=úOyî¹oÔbr»NXuuµJÚ·Oð ,/°~†@‰#`D¤Ä!¶"0o¨Ö†¸Mä¯O4mÌ*‘ª5 7•ÊB þàUrŠž*Èùñ²ÅB­Œ5«EŽ›WtÖÔÑ Y»®%k¸!qR½¡HÇkã¶Øº4@ùŠ‹ÓI³Û½’"@†°¨4íXGŽxn[™=z™#$³Ç.“ê‚•Ž´èZWZtݪàå2Ëf¯v¤¤zõÝñ|›šX3u-•ú­k¸}­uÿâ{ª‚¥Äg3Kõ˜²Ü¯sçÖòðÃ'ËüùËä•W¾ÓÌaO¹ø‘sÎÙGÌm«,¯ŒÛ([Ê!Í!ÙXÒ  Œƒ‘@?*a{Á­ݸԫ~|o©DM%cž &È Aƒœ9A¤é÷/­OÍïüÉ™#­£Lðø '2Üž4œ%Ѿ%²åÚ;J@nÕç©"XªéŒÝʪ̷ٸS®Y©d¦V|ߟ!ꕯûŸ¸,~ÿŠa­½ ˆ…ÏEwœä¨[ÁvWÄm±u%Œ€w«)áÓXó•fëÊQ/¶w®ZÍvØ«‚zeÕm^ݽÁ¸åþ¤N“ê²xú*™§–˜)_.tÄ¥ËYÍe»cÕb‘¥3s¥fƒj’ˆØDv/×_7®«Ð©=´ åh-˜8@ 8öS ÉÞêÖ»›þ×&x¦—ëQYç C ¸”;"B0ÁzTmÞX!Í!Õl=öX×”“¯¿þZ† â|lãÚ'Å¢´sUnµø—hñ3ÑBxŽ”<ñÄêãz–KËwlºë´Ø—«š Xk‡ÊݤȤ~9è/¾øb—…ñ‘BS ê †¥ª“ê19r¤«þ«…²âN[üuy‹5“ÓS"?ß«–µ~¬^º®­*êž@ÊØ(á˜jÌDÆÌ"~žÈŠéë“ ,‹8+Gã#1úç^£ æÃºŽ¬]Â¥jÛ‹Š¬¶†€!PùØ(’"\ušjÝ–RwOÐo®Œyu¶T«Yµ0…@úÇ5MJxRìN™ì†ÛÖ‘Gvq/ﶵ뮷iåö+‰eÛ*“Ëb'5J/y^ýu 6;YP¢)ÂD±«Ž; i™©¿å–[äÁ R}˜GŽt 2‘~ŸW¾kÅXw’‡~Øù¸’–°gÏž.ã’?;ŠñgœáögÖÿƒ>p›vÞyg—{¼íäa÷¢ ä¨GÂËd¹ãŽ;Ü‹L$d®Aù&"™lð±¥M­(,(ûýúõ“áÇ˨Q£\¶R0ju_·L) N!ZeÛŸšZ¥Øå¼å•WÜyØ®U†e¿ýöcÑ ÓªÆÎÊC±+­¬³Aºó`e‰ë LjƌaÀ€¬r‚e‡1ÝyçòöÛoËwß}ç fÑ72µ`ɰìH`#ù튗Eûá{íµ×Üø¨‡Ñ«W/iÑ¢…KI`$BŸµš²[çV$y«+J0~¸@äõýÅ ²J]›Â$„cuÆPÆÜ"2à ‘OÔ½é]usz½†HýÌ+(øUäÍöÙæŸ"ÝÑ})rŒ^‡^jáˆ#!¼õ¹"­5«Ì¦{j6)ÍHDBŠœÈV†€!P¾Øù‚VrÖà.rÂÛe÷«Zk¡Å†’S½Š¬\˜ÛÑŸßœ#ã^›# Z$ §¬tµRbw,'+½ÛÖàÁ7¨GD}9î¸ÇTÏxZu‚?ËI­†€!PR¤MD,Xà *¡œSíöª«®’gŸ}ÖYžzê)éÖ­›ú¾âúûÕW_I5œ{ÔÇìbÈyÕi‡ì\ì{ÑE9w(O*8ŒO?ýÔå_ÇJB5a‚@a0È Ê>í"»í¶[¡ÛTxyêÔ©î/¿ü²;YLPÈqWzë­·Á!-"/ªnï¾ûîr÷Ýw»þµk×ÎUJv'Ð7Îëû±"Ÿû_|!Æ Ëüùó 3²!å×_u‡Nœ8Ñ&ò¾CʨJL3Hä(®/ô“"W§Ÿ~º#{a3p‚0Ñ Ä²±ƒ }ÿý÷®¯\ˆ…¯¸~Ü{ï½.­$i&¹Žô«.h—^ziáq?üðƒÜvÛmî{¢·mÏ‘#=æ·g \°‘Š5ê®U·H‡«ôÂ=¯Ìq¨Z6Ôbr‚·ˆÄœ¡­ZÈZ.Ò¤»H==–ŒS&†€!`T" 'x~ëž›H×sZH“öñÙ§°¸,š¶ÊÐqÕdyqŸQòê!ce±®KEfÍšåRíú”Â¥õ ¹êªCtbíNyï½Gô¿úÔ2éGi·$ÎÃÄhyt°’§µY&<qhß^'‡C¢>)é n>¤$cÊ”)n™Ùt\™°FœvÚin6+V ¬%¤DÙ%÷9nE¸Mц¶‹ "d_:Ì‹cq­BP™µ§b-D„s„S‡—±|øá‡.-1–¬T¯åüXC°âN‚ÀÃ÷'ûüü|—j1?®Ë/¿Üm¦:.Ä ®?–åºë®“¶mÛ:ëÕuéë!7>úh‘¾`¡¡?= îj^ˆûð®TćàjÆ>`uƒâe`pâ‰':ë•?.®I2¹@<À Ö¬P´…pd°kWµ^$‘™KÈð*gÊÎÍg¨IhîYU3ШûT~äÏ/ÐïõÚŠ´P‹ˆ‰!`†@FhÛ£‘fë ¹~­  ¯Ù &Y‡ž¹ÿÉHVàö¥ó‹Õ²Ý­ó.2|Ô÷í—5V²ðß½¡ Ã’íAÑÖÑ™ ¾ÿþû‹n´5•j#1–b,Ê/®IaA‘ÇÝÀ @à9®LT…¥¸ ¡ð†Sr\TÂÙq"‡ ~=ëˆH&(Ú¸“!6mÚ87&ȱ(¤wïÞŽ¸/úy¢jÝZ]†T Ý»wwcƒ@xÁz‘—·¾‰ëHX|b [E«ëÆõ«Ø‚19òB0ÿG}俺OÚ¤¦M5B%®O¬ßP?:uêä0œy¢Åqá´‘|“%¹5åW9HvÞï$ݬÿj G©ië VWdþp½ajXJò•œ¬P²bb†€!Pò¨;,ô‰äˆç·•ES©™¢/  Ÿ9*šUê$ÚÝÖ†€!1 ´ÜŒ5WÐ Ü›pÚj«­œµ oß¾‚îD¸þ0Ã9AÇÒÛPTpwB¡&fƒ{2^!°~,(ã(Îma)ˆ.»kßHwHp ;ì°Ãœ%àÚk¯uÁ߸na¥ð‚uƒ8úŒ’Ïùnºé&W¬õ2já"6²ya_\¶R\¡âú‚µˆ y*•CJpsK&X-:è 5g¿çvgú”ŠÐ„~` Áý "†¥¥ø¢ÿ|ºhv©«Eü¶ ¨|?u£ët½f¦R·I×â7mG†€!`d jµªJ“íj»úÏh.mϨ*Kƒkß2 C %"(Ã$‹€¯° ¤àhÜp)¢Ê-î¤Êõ3õïÛÁ›Áì7Þx£[1!>…“ße—]Æ!r衇«‡—ÝÆÐÖÜžè#ç˜_A¼GØ*ƒ%â…^pîg*H ˆ ÇõéÓÇõ ë–Hý„„`Aéß¿ËÝàX?>Ì•ô5®/ÔK ðŸ€wÎAßü±þøÐ°Üâ%—\âܼ¨ºK|H2_QßøþöÛoî\çž{®³ABÈ6Ÿ%:g´ ¿WQã[Ó¿‰ìp«ÖæPk1&†€!`†€!`•*:Û¯>4B\Š~8ÆÂoKç+Dš Þ¥‡v šFÉ +üø‹a‰ V„`k\Ÿ2Bh Ñ`OTˆgÀB@0{ص+þ…÷%³uE ‰¢Áðcñû­ZµÊeÑjÛ¶m!¹`—°ë–ß?ú‰5ˆ1ú±ÅõË û%ë_´]ˆd$Õ*¾XD¸>þº}Œ g¡tâyä‘GÐt޵} CÀ0Ê$…!Q Ÿe%LD’a7îRÜSÌ ÿuL„F]Ëýöt>ÑwHæN‘ÏvØ+½'.6󤲯á3™Œ5MrsóÔëcËd»ed}!Æ·,cDpëç@/ÝX¡t$î/ÄK3Y‹Þ•Ž^@ש:É[=“âÞ½>v6´/÷(ú¸tCîI\ð7VЃñ"#n*âcDˆö’Q‹*3ýXŠ;,"^Ùõôè:¿Op¯¨ûõ´• B{(ÜRòÙ‹ïýæÆŽZ R!!´A¼Hxlq}ÁÝkCýóýñŸXyR%!þákÀ š. ñç¶OCÀ0 C`c °0““™¼'p'9 /Ü©ñˆÆZç\$ÄAßAÈtIÖJbWñv £&éõqwf²%¶¬dÒ¤Ùr×]©ÂØ[' ’£Žz¤¬ºRêçåšPê i ëiXðø!j:Âd:^'ï¼óŽ›\Çž ²„.dZf̘á¼^ÆŽ+¼¸'I*ÅçÆ Ä‚„Ò>Kk:í+X=Ù pµ"¶ƒ€êt„T½a¥<(n@ñŽp¾¨ À¨•ð͹`¶%¬„G÷·ï†€!`†€!°>“'OÖƒç¸YÕŸ~úÉ)áÖ%ÕÅvQ*Q&QˆPä½õ¤U«VŽxp<Êßtê–ñB‘E DÊ.Ä€ãé7q (aìCÝ3¬¸u‘PEÙgêÄmwj/Féý÷¿ÿ]èÅÀ¬3 %å–±£ R? =WxHV."t°Cgñiûý9ã>óós” јÕût2öU²?WeržŽu! ‰;®,ב˜Ç[ðœA†r]¹ö(Û$${öeÅœkv×]w9âàëס}ôÑ.®]ÍgFe|ܶCVÀ•{“ëÈ$7ÇrBLˆŒ÷H /»1o ôIÈ×›v ËÜ\_HôÓO?]˜ )êÎÄÄ8DŒû›,¨ „ð~܃ü>HÅ=1cîË_~ùEÎ:ë,×gî„û–~#ü^!s¼¨_G(ðMÔ?öa \ ÆE ïÜ«„9ü;…¬`eäw KGR§Öé´Z‚û’•ŠºܤþÆà¢ ü°O8á÷ðHÖ'3(7/31̺ÄÍ>psó 8ÐU`çAIÀ=¦^ÜÃvØaÇ9öÊì ýáæàÁL-‚ع9!V‚äÇ“… sSQÙ–Ë‘ý¸!=ûçÇÂC—™‘tXf2 l[ñÀßK[&¬hܯ¾z½ï ÷ú¨ð ú#³Ç`)äaÁlOTx øTÐÑmöÝ0 â €•ÙVžcüoñÿEÌ!îJ(p(Kx!ðìÁ5‰TþÌ3iÈÿ(.3(7¸» À°d&*(8Gu”[ƒÙW„ÿDˆ³µ$vAxvòB Ù'ùÅ% Aéä;›(môØJiÈ .ÎÄ5 ðLêÿd‚5‡g6J˜w×îÙ³§KZCÿ!](ÆÌ ƒÍ«¯¾ê2€‚V’(.(|/’ý€Š7Ê:úJ2™4i­%òž*Œ¹ÉvÓ딯Ø]žtŸèF®WŽ£Û}¯ZµŠÖ}K´uÝzÿÄp}XFÙ}óÍ7¦(íBúÀ2BìЩбP˜™åÇúÑ`?²F½ ‹Y[„ûŠûáØcuÄDB^ür"×#ÎǽÃýL_¸i Ý{ÓVÎAM;@ô¿šm^áIy~>!QLôs?sÏ¢KúX ôTî!~3~OÜ/è¡ë½+ĆïÜ«‰úÇï ë"×K"µû’ ÷>nþx6ùû?ÙþámYAD¸0°8Ø/@bÞÍD@ TB@¸)üìJWf¸Ë ¦2²a1kBÑ °0;c’…ñ°Á„ “„½Â€1ûqSaªåœ´Û)3IDAT ña$\ÅœïÜô\l̵,cfôB*aLÜlǬÇC—™“ÒG€{RÉgcwfãxàzá!ÅŸ%¦Ï8"âý‘!äaá9âO‚‡ Ÿ¦šýxPó 41 C S0ÈÿÏþ'QDPp¼—Áó Å„e>ùã?Ëÿiü‡21èŸOq“<á 8fŒQö¿>¼ÎŸ;úɾÞMŒmü÷S˜g.ÏZ?sÎ,J1ŸL2#÷DTÖ ‹žïXC¼ <úIEb˜ˆ„¨ñ߇ .g`Éä/&,Sùßßzë1ª¿Üæ¬"“&Írm¯\¹îšøþT¯ž£ð>ÿµÄ> ‚Õ fè“Ä[®¸₨!²è`Å2ŸÄj€–7pdò×*/ÅÅʆCøÿ…¼ ~}x]\!Ó^‘÷ís?îºë®Ž¡ ¢ïA°ñÿÎo]XB*/$ˆ± Lncí`pO†…õ¤• Gßúû#þ·€õˆß¤²í]¶ŸŸÜfˆ º d$®ô“ht ôU~³añ} ¯+îr¹×L0m,$–ËŒ/Øß4Ÿ?Ž5J¸`Ì>°ž}`V„f<¦T.7 û"Ìz0KÁE…Cdðç„3„•s,ŒËþ¯´ ÃäGê/6mñ#¢B=Lß 78`Î… sƒ`ç{e¬I̬……™Öׄ:þä „ZÌܘu~`Gq„{¨pÀ–kÉ AÒhUyÚå„Y2@f¸G¹6\Û>ꮀ`Nå¼Ñe¾c1£j½A@0ƒr~þ1÷Ó³hQëÉ@µÒñGÉŸ&÷Âì9îA‚,ãöÀ²7©òûHÇ6¸× ¿Ì®ðB°ÂðÀ$® "þ\™9ôôð6[6 Ê‹ÏC\ x±ÌD Ï4Rð£(ñLcfE›ÿv”@žëQa²}y&òü†Ô þ¹‡"J»n*Ì8#üGú™h·"ôƳ–Éžù(v&‰A‘ãšmóŸ‹å„ÿ~OH|H¨I·&b~ÿ5ô],øoáŒòÉÿR.(œ<‡™D⹎òËþ’œœ| DÞC'o¯Òÿ¸›ëCôª‰Z]ª«Þ’³¡ÃËívþÛq'âÅ2nALârÝQþùÿÀpí¸W˜\æ?9*X߸îLC=1b„Û•û7#¼=éõË(üèŸüÿ"Xo°t¡Çq`­Ã:A߈Á ,–ܹoYÇ}Ž……{{ææ›ovÇ @ Ð/‰Ïà·ÁýŸÁ}I¦ÜKÑÄB4.ñž°¹ƒ#oÄMA¢þñ…übÉCKß'šÂ£#N[ºRî‰?`PX¸^ùOw ‰ö硇™››‹ÎÃŽ Àƒs0Lsï‡nÏgÔ¢0c˜É2;ÍEáæc2‚â ùaL<€8W¸Š9en´8A¹”RÀÜÀ•MøAãÆFê<ü!yP‡BÀ5ÄrÅuã‡V|ÇŸ˜_¿~ýÜ!|ò‹¬^\?ö…@òpáφul ØGý“9“™†°/3÷,d /ó 4Ü xñÃGøÃâ^ [Í8"ˆ3"=öXáƒ*¼Ý/sò`óœÜÃL:bábÒŽïÜ `å-tÞ·Ã$2ÿq¸r_r ‚žÀ1ÜS\{„ÿ`OŒÃËCþ#!Agê$'¤‚û‡¢Ûü²kÛé#““¬ã;ºûBn¹ÿ!-ÄA¤è#zÿÿÜ'Lfú@súÃo€}è;“⸓ñÛ@üøXÞwß}㉄~@põû•s0± éc’ßÞI衞 Ñ¾?7¿E&?Ó”,‘:"‰^Üõ°V”-(¢Ç .6ˆ¤Ó‘¯¼î÷0H?zn*f·™]FÉe¦„ÜoxH𛛇ŽÙ œø+ò@áaÆMÊ6Úcö÷úËæ\.Ì›Ù4Xzxp26. 7tÔíåYg©ØF_yù[YòÃal|&•ü56Cm¡í’îÝÈ @ùqð£ð&X¿/Ö?X~(úX¦øŽ¥ …œ?pDÆÜÈýÀ5åÀõ£}ÜêÚªbÍuæÀ” ÁÁ¿”ëÍC…)?Hf-ðO†ø°Î“þ´XÏùâB‰Y•¾! Œ{“{Ž{’{âJv÷Mþ$y@€÷<7-|D#ãG¸·xÀñ`£=fŒø-EÇ@f°Àí¡0æW\á¬4˜Ày(â÷ê·ÓÚ7f"É–Aô+"Ÿ&†@eB€ûŸYÙ¨µ6›0àùÃs‹ÏžW<×|Œív±f"‡ÿ:ÜmØæŸeÌP׉Äÿ*ÿ§Ö ÖóÇ]&ÑžÛ9…7þŸiŸÿe/<'™ü ¯c¦ë2ñ1qB;(ÍÉ™6 jŒå—´8\PJ™‡„Eÿï¢çàÿI>“ uDˆÙyç¶ÉvËÈ6ú’©:"èKè>ƃBæ¸aw.þ«¹NÄá p{9tIþ£Ð¸ÜgÿóìÃuæžLå^b¢ÝBv'd=:ú£' œƒëÌ9ù Ï ÆÀ=ð¨x݆qpo ·„@Û²8Aåÿ—gQª×?,Gô/ÜgpŃȻ„EÛ§0O$è,èð>¶…ýÖ]¢#Ëx=>vd Å ÖÊìŠfT<3#¨Bàg¿Ãû¡À³Š&L¥ñ³,\„™ · Ü¸<`˜=G)å?7®?'Š L”YvHJªhâúCæ\fΉ2˂وâÛr_Ö¾±,ò‚¢½)Ãû–Ëå•3Eæ ™õµæ1üJd‰ù"'åé€sRî2&r8àš,æëƒðÐÿѱŽÙ-~ÜX.øô3 \’hÒ‹âïvÜ qâÿlø¡úÙ¿ŽýÃëãŽgÒ(þqB Q«ûBž›ÿcJô@òíb•c†ƒ;o•c›ï¯ï+çäçg%!•‰ü¥ùý„Å[ìè¿S,.FDÂÙrEGk [X»Qb™”ðq (:(÷ÌÖ3Ùå•YF&Cp¯À»¯fÛáOŸgÏ*¾“ˆãSÝf†<_™`á™\ž£’Lya_žÃqÏâ°s´Ít¾ó,ôÏCœÿÿößùDIMDBØmƒuQ^HxÜq¸ ˆÆé:Ñ6Óù¾ãŽ›§³{¹Ø—‰B®?–°ÄÅkFÝ•Âû³Ì\˜$øíÃT…ÿÞ¸s³~Kµ`E…ë¾Ö~;ýïÏ¡—DãHÖOtcXº!qýóDÍ÷‡OîÿD$„íqcd}2É "âÀwü8yÐG9/¸UA¢wœß³³½áÙDXWxA0 –:bËJR˜-äÿ‚OÜ…¢ékýl9>ìj¬¡fõqûÄ ÷ ¬äLh@œ˜„ò©nK²ï%Ñvº$„>xKïÏ7›_ǧ=ÂhTüåtIˆD•q~—q3öqë²Ñèï'Æ‘•D$`™á./ Mü*º ªr¹ìUWg¯pÇRï«„BœÈw;Q»•¾Z|ÖÑåÆzݪ_%~ (*ɬf^AÁ"%¿X5¢Â¸!Þ*ÇöèXÇŒþÙai¬¸–Dý¥Ù?ë,vtÚÄ(°º†Ó×úSzÅRÏïŒç ÿÞ%7- náT·<ÓÂ3¼¾=û4 C [¨°D¤<]p OyêWIôåOQ"qăê–õ‰ÈÈë5d’’e…Y…çl²³H‹ý5hý/âÒ˜‘9ƒ –»?'Ò`}ë“;fÜ]ú±F…Õ’RøÒlPuÛ6™ÊŠ7ä…˜Ÿ°ÄY½ØŽ¥å;‘Äù''òeNÔÆ†Ö'³š¥:+˜Ì*7%¯,ùþybå¿ûOމ!`¬C€ca,óX+£.‘$WhÈ„8Hâ™ ÐK/[’Pà*Jò&Hœ^wÆÌ,úˆ]:3WªNßDšÎì [Ôm/Ó–OÌLãi¶RU]w÷iªVå:¥ïï}Ò<ºòîv/(ÿ@ªW¬÷&†DcžLƒ°û¢dhÙS„לo É|ÍѽFzb{ª¨[[ÓÝE¶<#õs×m#²øg‘¹ÃÔÚ2kík¶Vê ¶ü-‹¶3^ 5UÕóÔÜT‰‹¾Ö~âžäSè=(~ Ä"l a¯8ÿäD¾Ìñ­–îÚ8«\ÜJ·Wv6C â!@ZV|Óqk¤~ß±Bz«%±…déÁ}˜`P;àê‹åƒx/²ÊôéÓǰBþ!|’-¨¤HÈÏoΑqúZ2=Wj7©& ·¨%·]~Ÿìpj3iÐZãûÊ@&±@&¾@ºßJ^hwKôÀN™ ps»6g¢Mk£b!°^ú^‚s t11Š‹ÁÓ±™’æÿ(2J-$³ÕòAzw-”׿¤âžfÃÇMÔ€l,-+爬җÿìù“’’‚ôë52¦·HNmM§¡ñ=µÔ ‹ÏšúÙ°£îVe½]íKÙ!€7ºT-A™î)1*dãÃ÷?Bm?{ά9®}J¾@Æ>ˆ1Ïj‚¢Ià0uêT7ãÈÌzY .H$2`ö“ø›ôÙQ_íp ÆÆjLLEIŠ᳤…Ԭܭˆi §¯¶ÓâBÂBO&>ouF,>}-Yí|lD\Š3øË¸_eÒØ©²raž{a½h²M—P"û5öÕÙòû7‹¤~ËšR¯e ©ßªàÕ¤}©^·ü(÷¸‚ýþ¿…Ò|‡zR»©9h$ºwm½!P¡P“™‰!`¤‹ÀïoÁÄÇ‚`Ì­Aðã¥A0ä´ xX¬Éoé“nAðå¾AðÍ1A0ôì øéÊ {gü¾¬Í_‘x[%Þ¢¼fÍJŠ€ÎÀª¼š±'Ð@ú@S<êÚ¨¿} Êh Vƒ@³š¹6TA4uc É µrš™%Д©n›úãê^¨kApæ™gº¶4Ýv 1;n»Öd 4E«k[3¤¹6Uy4!@ é¹ÝqZ¯Æí«©XMì–µ®D Éܲւ t†Û-óÆñêÊã¾7.Ø}÷ÝSr}R¢¨b¨ÂhÊi7uñ)<–M 2$Ð h×_Ú× hZ»Ý~JXM'ë–5 :P÷¼@ÉU ä*Ðx7°SB(9 ”(jéâú¢Ö˜@³>c(Q4cœkWãÅr˼iµ@³Ò¹ïZÔíϘ4f­ÓôÔñ ´`§k\¹v´Ñ·oß@ N d+P+Kl?ƒ¦Ì ”˜OáÚŒ{›1cF –—¸MnÝ¢?Vƒîü=xf§ƒ¾{L¸_:¸‡¢¢5‡¢«%Á‚É+‚…¿¯,²?˜ôÝkdðüßFo=.øð܉Á€›¦Ó†,ŽÝ¿¼¯\µ8/õâ¬àÕCÇïŸýK°zE~yï²õÏ0J›‚¨Ð4ÓWblqBzMï¦Aø¹óõ¥Ù³ _EëÜ4ªÓ„o5ÒÅ@}[ô³ÆÚq.û|Xô¼‡üëcÝO«¬RŸ¥:Ÿúâ8)?³ŸE;^2k°Vö”ÔÊøé“F™z)ªÔ»¢¥×ã…Ïý+¯¼"äÇ¡DŹ7áæBšefêñÉÇú@Eyf²ÃW‚Yw*ãRg7E²—a ÀBágôI€@¶$/פFõ&¨CäkEP?†Š r~-PÔ•ZJÄüP Îa!K‚U²º:77Þx£ 4È‹tÔˆ*æÎš‚{}&Xš hÎG¿}= j^€I´/$3 ßUÂP8ãOÛ¸±<ØFLÙ¡ÀšXâ#¨‘¡Ϲ•‘UŽÖú2lØ07V0fܤ»Åj„e$Ú®'}'œBéÊŸCˈçfÊÜŸ—Ëšµõ©‚<ýím„¬ÑãW.È“FÕŠº2ŽéC—ÈMWËKž¬˜¿Zª×Éq±ÛTã3ôw‘-ön(m÷m$Õëe÷ïyõÒ52ì‘é.ö£Í> å ·’&íÕ%ÖÄ0*-FD*í¥·—*vLãtªlôÒÀþ5«”´,ÔBúrŸ‹´¡ÄeÒ3ºŸŽ\­ûð™«/Ê ú’|þZÒqáU¿ &fóE6zH¶}Ç×%2‚Qô’º(¤Z&3®P¤N¦Ê<EQ´!&¤ƒ&}*Ê0q¤aF‰ÞR³¾‰:*ÑzSc…sñ¢X&.S//$\ÎPΩþ¸8‘-iÿý÷w©§IW­–Gf DTvƵ‡˜•8¡65*ˆáEPŸ:nÆë $œ OœƒôÐq}¡fD‚EŽ›Hnd¸ QÔ2HáOÆ ÑA¨8a ¤ëFVˆñœ|k\?ˆ×¡'S•ÕËÖÈ/ïΓQ/ΔÕ+ó…ïaY½jÝwHŪ…ù²rqžTÑŸf£¶µÂ»ºå™#–ʰ‡§¸L)ÉÓãk7ªîâ1º_4ö¥Ñ–µd϶PòQÝâ3’IÍ9É6gͶ?‡.–º›V—ûw”Z›˜ú‘5Î:j” ö$(Ap­iC`£ ½OUœ¬!²íóA²=ÖßF±Éf{¯%-J\Vj`1ý—8"z§©ÆÄ¬%,–júªÓZdÏ·Öo›oÔˆùýµ‚ØâkªëË}ª…¦^»¢û—Àw¿|uOZï X °”@DP|Qt©B’¬X& ܇ýïÃùǾÛü:–Y¯®8I³?A¡Häú믗W_}UöØc3‚òÍ‹™þhQUÒ:£˜SßÅ ä£S§NŽü$î2A¶¦°`ñ.è……A-ð~“ë?ñ+Ѿ`©G„šႚԡ/aa ðBèWX|?¢}`pŒëãH”Z:Ü6ËsZÊ7·ÿ.¿}²@C¹ªHž’8©šSE^ë9VV-É—ü¼5R«a5©Ù š´;°‘ìtnQbÑ@ƒ¼w¿rsU®Õ²¡dC–‹ºÍ« ¯Ê&[ ÏCÀ0B a‹†@¥@"ÒNƒíSÜðÐ`mÉ[¢Ÿk_XlâB3g°î·T÷½r4¸ÿ@]²š}Õc-q©«Ÿ¼”¼@tºÜÝ{£¿3ãÏ >äÃ×vÀ*òßÿþ×Y>¶ÆµŠ ôêÚtâ‰':‹I܉±f„ëA°ÙQ²)F‰U@l¬d‡¢x&µ °¼@¢‚uk ,*p€³à25eÊÑx•ÂCH‹«Û 2¸CaÍ¡NYªÈb…õ‡þP“¬TX Y¤”:t¨caƒ1 (þ‰ú>œƒàz>Ãä%¦)g ÁÝ -^œÿÉ'Ÿt}ŽÛ?¼.Y?SªrD£ %„lLy+âImåT«*ûß³¥4Þ¦vJ™›ê4­.¼Lô§?v¹KÜýÒÍœµÇ01 C FD’¡cÛ C È‹Ï¶!L ÝŸßÐ^ë¶Óîß^]K\–À„Ä”€øY{t,ÞM×! 0w =V Ü«PÀqëÒ`kç*1@|qõ žxâ G4p-¢ÄÃ?ìö'æë qo¾ù¦#İDk ™¯–,Yââ@ A.J#Ò»z0{Á'Y˜4ˆßêÄ:@L¤·2\²žyF]÷Tpw¢M\»°b$Æ®‡ALJ´/Äš0\ÉÈþå­FŸh۸ǑrÒÄø 0É,¾,WÄïhÀ|,&¸Ùù}£çŒ~iÞÍ2iä2í»Å2åË2cÄG:p¥ÂËKU½ÝsjVM‰„øc*ógþÊ@~ýd¾ŒkŽä.Ë—Ž'lj$¤2ß6vC ,}o`Ù®†€!P¶0û‰:"X PÐ!#^¨}Bbíe›õMC*Â1 ÄjDëAÜyç® \“P̽«‘o/ÝO,XBpÃòé_£m`‰ð±%Ñ€zÜË(šî‡f sîhÑ}£íòñ1bEõ…Jะ%ê_´Ýyóæ ¸&#!Ñc YÞå-Q?¢ÇD¿Ç¥ï%}윱ËäÁ‹dꀅ²èUŽ€H~ =´µ´ÚEIµIRfü¸T¾¸r²´ìVÏÍvS·MCÀ0RDÀ,")e»†@Å@ࢋ.r裇%N1FÇ¥ "'(ß>Ž$¼=\.¼>ÝeÈÖ•d‚5€ ù8‰ë[:5FÂEòõËQ:Rl< á<‰ú‘Nü¾Ÿ7ë\×½v¾@³™-Íw­¦)1Ù´£ºšlœUä¸7;HÝfæš¶A°lCÀ(‚€YDŠ@b+ C ¼" ‹–‚¦!© ³ðXÂñ¸^…ƒ¯i‹}°ïVļ=ÚŪd¢¢x¸š¹?Ù²èc²ªåĸïݪ8‹®dŒìYQ!pž›l“8‹HIØ_àÑŸ ‹®iq1B~Ÿòø¹è÷UÒ°&Ð01 C ƒ˜E$ƒ`ZS†€!Pþ@1OW˜…“Ž’Ö¥B@عï¾û\°ø)§œR°b#Þ©'B*ȇúA!X>Ù!e/AãZ@Ðæb1ä?SSó`Op=q¤DFÈH–D¤p€¥¸@\'§þ´¸Ñá2— D$oå™üřО,›™+'}¼½†}†€!Ô0mb†@åF€"ˆ—\r‰‹?ñH\qÅ®¨ñ=zôpÄW',¤’¥°ÞàÁƒÝîÔø kð(êÔ¶ µ,ÖRÙRÈ„‡…4¸cï¸ãŽ.¸¥Áò@°<ĉ”Ã^¡%Àžú'X-胔^ÈQƒøä‰#!àœþÓ.ä#,Á3FHÆC=ä6õêÕËeƒ€g9¡˜"ãó}a_‚ùÙG«Ø»2'B±C‚üÉTöì³Ïºuq¹ ú†’Î9´Ú»_•UŸ$: æ 8sÍ}ñÈë®»Î%_ Ib¡ÆŒÏÚFl÷¬8ÌÂÇs?•´,‘+ƒïüC^=d¬ÆÎ,’.g5—“>2RÒ¸[û†@eDÀˆHe¼ê6fCÀpÊùçŸ.‡v˜tïÞ½HÍ”sRð¾ýöÛ.Ý,UØ VÇ:B½²?õë×Ï!É'ß©ðM`ø„ œÅ„ÌXƒe¢‰X)Ø_ Tê˜ Ä¥@FŒáˆE ‘ÝvÛÍ¥Wkg=©†Î‹lZÈÔ©SÁ2òÖ[o9ËÂx…ëŠÜqÇŽð0V‚ó q4¾2=û€‰/ ‰øî»ï\ÑBû±Ð@PX¾÷Þ{åÚk¯ucÃÈŸ|PÞ!KT¾³l®·¯6O¦3ÀϽÄ=q#ð‹¸‘2ùꫯœ{±0q˜…çþ+i™Ð®Ô߬¦œðNG­~ÞN¶ØKS$'¯¹XÒ]²ö C ‚"`D¤‚^X–!`$F€YgÒÉ’Îöè£vŠ!Jb8»G“b¶K—.ν ‹E!-á í쇫Aã”|P¨ºÎì8Añ¸_q>¬.q⫱Ó5G˜1GhK ³ëžˆÜzë­ÎÕ w*_­}q¿‚ ñŠúÄ,ý·ß~ëÒöb• Û•~°À‹>',"ŒåØW¦g}eŒô•tøªaÝ/ú Q‰ÃÈŸ”Â<òˆ»X{°JáÂD*âlpÄ¥ «°€ äÊ ´±cÇ:âÇøN:餄˜qLôxßÎÆ|Rò'NÜßñÌæ–‚7[gEÀˆHFá´Æ C À•ŠYiˆ$ Q&©dÚ±LPm%ŸO”Ï£Ž:J^~ùeÁÊA1B,œ§uk-ΨÂ,yœ„³Bùjììç׳Ž"€É„ƒ7äŬzXèÁùRäÕ»woWK„}°ŒÐ_Ÿ5,Y}ö‡,}ôÑGŽŒøÊô¬÷×5ÎIÕzNmjµÄaÄñaR …ëƒU‡ë• ‚Û•Ÿ‰V›÷øúqpÏá¾G@;xBtaÆ1Ñã};Åùœ5r™s½úì²IÅ9ÜŽ1 C cÉ”Ö!`d <ð€›'†‚‚¶‡ –V÷I›‹‹ÓÅ_ì”s¾3 ŽEƒ¸›nºI¾þúkNus$š2ØŸÐWcÇ­ËBV+\•PT}p3q)Ôá<>FÅ·“è÷3\zpB¹‡,QÔÁ}ˆ¸ÜŠˆ%á\É$\™ëˆúм÷Þ{B| J6ý$]2uUp?‚PÅaäÛà«É©§žê,;XmˆgÁµ+ÄW›Ç--•jóbl¸±h%Â,c_òW® b†¼~Ä8|×R¿uMÙ÷ö¶™hÚÚ0 C Ø)6tv !`d3d˜zúé§ëÂ(¿€oH ¼qܨ˜íG˜íÇûÁÙpãúE¼n]d·BÙ÷âÛ!3õB°¢Üxã®}_¹êè&”y—%¬ŽEñí¸/1o(Èìƒ[V ܯ|Ê^ÖãöCqG,7ô5Ú^ô;ã†ùÊôœò7Þpc¸ÿþûK3ø<\Ò(‰Å+RF¾ËTO'pŸÆÌõ góû•×Oˆ)nhŒ<Æô7Š!ë ˆ¨ûû'f‰Žg}ªòõ S$?wø@;W÷cÇ3šK­F–83Uül?CÀ(¬ŽHÉàj­†@ ‰:"‰ºAàåŒí^Ïl=ă€r/X 'Äj„•OTúO@6®\^UcÇ‚Av*ܦˆïÈ„×{X\QAfñq-Jå\ÑÊôx ÙÉÏì‡k´œ[Y¸b}"Œ°þ€·LŒ›6À‘x>KZÒ­6íOfìÃ5zýõ×£»»˜ H²zÙ©^׿‹€d+ C \"`Ó!åò²X§ C ´@ùMGÆý …7¯°àZÕ¡C‡ð*·L 7iZI9@)O…$j3º>\/$ºlX©œ+QezÚó±0á¶±„øø¿>Faã÷ÍÆÏt«ÍGLJûpÆ]£škêɏ׿Èä¯H“mkË×d†¸Fûeß CÀÈ4fÉ4¢Öž!`”%iI·ÓÌòC¢™¶6ÔN´"»¯É-†ÝoCí–Öö¸Êô¤ÓÿÒH-[Üq–¦E¤¸}Lç¸üÜ@ƽ>G¦(ùX{Ì2i²MÉ©³±â£b#4 Jˆ€‘JxÑmȆ€!`¥‹ÀйyÎåêÁ‹•lÔ–®ç´(ÝØÙ CÀ(‡˜Í·^ë’!`†@ö#@¼ÇȾ3eš’¥3s¥õn 4ÍnCÙrÿFÙ?8!`@ÀˆH@´& CÀ0 (‹§¯rE÷¼~sÙtûºE2_E÷·ï†€!`T6Ì5«²]q¯!`†@FÈ[±Fþ¾Tþúa‰ìvÅfiÓ1 C 2!`‘Êtµm¬†€!`…À‚É+å÷ åÏï–ÈÜñË¥Ùu´šyÃjÓ6 C ²"`‘Êzåm܆€!`i#ðå5S¤^‹Òz÷úÒr§ú’SÓ2\¥ ¢`†ÀZŒˆØ­`†€!`¬E`ż<çjÙhÞÅ*—Ûa†@I"`®Y%‰®µm†€!P®X“ȃ;òA¬Çò¹«¥ÕÎõdç [•ë~[ç CÀ¨˜E¤"\Eƒ!`†@±˜ÐžLýz¡´Ú¥¾¾êIÓíêÄ,Vãv!`†@RŒˆ$…Ç6†€!`d3«—¯‘™#–º:ŽkZt( ªœÝÑÖ†€!`dsÍÊ4¢Öž!`†@FÀZQ«aŽ´í‘^@\­fü´DfhjÝ…SVºÌVÛÖ$¾Ok‹­5 C 0"R Û) CÀ0RG`Ù¬Õò¿[¦ÊÌÑˤZªiª™}m¶´ìVOv¿²µ¬#U«ÛH}ÛÓ0 ÒCÀ\³Jk;“!`†@2ÔMjìksä‡Ç§ Aä¼rjV•^ý;IÝæÕÝ‘Ëf®–#–ÈÌŸ–J·ó[IíÆ6Ÿ– RÛf†@yFÀžàåùêXß CÀ¨$ÌŸ´B¾ºnŠ@4òV®)uŽþKýüÆlY:{µ‹õÈÏ ´~G=iѵžÔj`a…@Ù‚!`Yˆ€YD²ð¢Y— CÀ¨(ä¯ äûÇþ’ñïÌ–5« Öq7Ä*Uª8÷ªÇ6uä£Áæ5+ÊÐm†€!`Tzl:©Ò߀!`eƒÀÜñËå³K~“Üåù!‰“ dåü<ÙöÈÁæqÙ:CÀ0 ¬@ jVôÒ:i†@ "pÝu× 3ïö*] úŸ:A–Î_)K–-–ùË$/X{•—ÎÊÒ𚆀!`T,Ì"R±®§Æ0ŠÀøñãåÝwß•£Ž:ªGÛ!ÅE+ÈÊ…y²lv®)‹ÏŒ“¿Ì“­šw’ór%wi¾ Z_:3W6iW«¸§²ã CÀ0Ê!FDÊáE±.†€!PÈ©YÅeÃr±v(ñ¸œ2bq?¹îã V¨ÇÖªÅùRS뉘†€!`T,Ì5«b]O!` -b$¤b]R!`#" û4 CÀ0 CÀ0 RCÀ\³J j;‘!`‰0`€ì±ÇR³æÆ§§6l˜ÌŸ?߬^½zÒ¹sgiذ¡ûN<ÌÔ©SÝr5dÏ=÷,<ç'Ÿ|âÖóÖ¬Y3Ù~ûí ·nÐ…?þøC–,Y":u ¯¶eCÀ0 C -Ì"’\¶³!`%ƒÀé§Ÿ.sçÎÍHã×^{­<ûì³òí·ßÊc=æˆß‘'Ÿ|Rî¹ç¬|þùç²Ë.»Hß¾}ݶC=Ô­ûæ›oä†npÇ :Ôm ¿Mž…Ç|ðÁ2iÒ$™8q¢ëƒßЫW/¹ãŽ;ä7ÞˆÅ%—\"³fÍr›÷Ûo?ׄd¯½öúë…TÆwß}·|öÙgróÍ7Ëyçç61æë¯¿^?üpa¼XE®¾újyôÑGÝö•+Wº±@¦Þyçiß¾½l³Í6ޱí^yå•Ò®];CÀ0 CÀˆˆÝ†€!`¤€ÀôéÓàí·ß–Å‹Ë+¯¼"¸2U¯^]Þÿ}Ùn»í¤_¿~®%>ùþâ‹/ ®Q&L¦M›JÿþýÝ1#GŽ”/¿üÒ­c[X X¾ûî;G~øaYºt©;Ç…^(_ýµ<ñÿíÏ+mkÇŸ‹Á‰HŒD&J1!¥…äGF¦Ä D2:I1‘2•)˜H‘‰’s?Oç=wY–{Ϲçî{ö>ûûÔ¶öúñ®õ¾Ÿ¥özú>ßw}þl···Þ¬¥¥Å üCâ’$5$C¾›DaxxØ—õõuOˆ’ÚQ*v~~n///žèœœœØÌÌŒ+7WWWÖØØh›››ÞôèèÈË¸Š‹‹dŠ~ÏÏÏê c„\–——YÒõ´MD@D »(É®û­ÑŠ€üþþ~«¯¯·††ëëësEss³ÝÜܸò±³³ãggÙÛÛkUUUž@,--Ùøø¸ŒŒØáá¡ Ymm­«IÝAyA1AÅØßß÷Cª««ý='´ëèè°ƒƒß>==meeeV^^þF)‰Ÿ?Haa¡oF©@¡éîº:›››‹îë´!ÉÉÍÍõ—=¢1ö¨>gggžñ–W_òóóíòòÒ¹Ð/’*‚ñtvv†æZŠ€ˆ€d9™Õ³ü@Ãø~”999VRRò¦!ÊÄãã£',Q'xSûÆÆ†—*µ¶¶º_%ƒ8ñéSò úPˆççg/ƒâ{ØßÎú?Åõõµñ ærÌ냃ƒÞŒDª©©ÉžžžÞæøøØ•°{4HRHhvwwmooÏÕ|'$0÷÷÷~(É ×Cɉ·žKßE@D@²€‘ì»ç±ˆ@ tôôôØØØ˜«!¬ã¡ ¬jmmÍ&''ýa¼½½ÝxÀ'PG’‚´ˆíímÃëAP"E9øxQP\¾?<<øu‚GÅw|ýC<)¨$Ñ ÄlkkË•›èl]¯¯¯Fù}F½ù»@¢\ OÊ ‰ ýµ‰‰ £d‹„J!" " qJDâD´." ?@€„ƒ17*ÑÕÕå~ Tf­Â„Žéó9SãNMMý!Ây0˜Sе°°à%]ì'‰@eÁ,ÏÃ>¾“|0«S*‚22”›šš÷¢¬®®ú.®Ù}¥¥¥®à¬¬¬„fn†§‹Ä }úÖYR&†A=ŒÕƒÀ(!«¬¬t%µˆHjï;ôGD@D + üñçà_¿‚Y‰@ƒÈv$ ¨,&˜ê£öééé·Ó œ`^>ˆã+áݘØ)å ÑÖÖæ3L…¤€ix™u #Jœîî$#?$a˜ÚY*D@D@~oòˆüÞ÷W£øŸP~…é{qqñÍñQ JÄ3:SÞ~ïvá)ùÈWòîà_¼OKÔ×ò‹»£Ë‹€ˆ€¤!%"ixSÔ%Ì#@Y~¦ëýÞ ©À¼ ¦fÖ©hPÚfäŠn×wÈdJD2ùî©ï" iC ¨¨è_õ…Ò¬hP®¼¼<© q(ZÈx2«gü-ÔD@D@D@D@D óHɼ{¦‹€üÇðp0›•"=ÌÎΦGGÔ ”ЬY)Å«“‹€ˆ€ˆ€ˆ€ˆ€$PiVmH)%")Å«“‹€ˆ€ˆ€ˆ€ˆ€$P"’DEÛD@D@D@D@D@RJà ŠÂæÄRHCIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1NamedPipeOption__coll__graph.png000644 000765 000024 00000010277 14042362133 030146 0ustar00tangentstaff000000 000000 ‰PNG  IHDR•R]O–CsRGB®ÎéyIDATxí ”UÓÇ5IÅ”ùD-Z$7–:è1ÈåK—.• 6ÈG${ÆçÙa-Õ| O<ñDJ¨¨¨HÚµk'C‡U¢Nžrá…Êßÿ-7Ýt“HçÎå÷߬áé§ŸÖ¶ÒúL¸ýöÛåæ›o–\·Ö 4yûôé#X(Õ†U«VÉûï¿/¯½öš 2Dî¹çM‚,X9sæèRf­ƒÊòF8þøãe—]v‘/¿üR «‘e'œp‚°$BîË5lØP 9¢?ü°Ô¬YSF-«W¯–eË–Éúõë•”/¼ð‚ÐöÁƒËŸþ)Ë—/—üü|™6mšöû¹çžóV•qçK*:餓„Á騱£¬=_±b…`%~øáë‚ÀŠá+Ýyçr衇ÊóÏ?/ü±–qòÉ'Ëyç'|ð6ƒpþùçK‹-´ ÑZk¯½V „•€¬í @ÖFÉæÍ›•@YöÕÜ´i“’¨[n¹EËêÙ³§–•­7!› S§NÕ~Ò· .¸@ëyï½÷4ˉ¥êÖ­›Ð^“‰ÇŒ& ˜Ñ»ï¾{~;ï¼³.jÊ”)Jø³Ï>S«ÀòÂ@`Xúlàºè°Ûn»…£6nܨքï gôœtÐA!¼aæÌ™jÅöÝw_ö–…Eò yÏ=÷ 'mÙ²E KÄ®»îªñµjÕÒÆáLx’Ѥ*/¬ÓC=¤¾ ûÆoÈË/¿,<òˆú=X©³Î:K‰†5aÐ/^¼M±3ḟåì˜cŽÑ<Ó§O×ã[o½%Ý»w×óo¿ýV­#_ ð_ý%XŸ‰' ivr=ö˜úTYYYGY8åï¼óNÄ.kfŠ|‹;wî\9í´Ólr•9VÉ[ <7$@˜?þøC}%¾3wÝu—:Ì?Œeðè£V'§ÙÎxòÛrÀC9D}|'ÏîíÍ7ßÔA¶–Ÿ‹zXÎÎ>ûlùôÓO•pÜJ€ŒXKü&ßD€°l XZYî^zé%Ç/¤Œ‹.ºH¿³a©§Íóâ‹/–½÷Þ[Ó¼¶}Þ¸Œ:ç%½ÊÆš„̳¿¤«5wÈì¨B¿þúk¸,c BÆb„Œ“ŽãÄ ´ÆwÜq!cÂi>ø`è¾ûî g9d2ovŠ!ã‡Ìò2 ÇÇ;1»P­Û'"›Y²Bf Ko¬TD6‘¶xûdãƒͳ¿YòƒfOu¾Ü*i©˜•<”æ–Ã5×\1›ñ¿ün"z}¿Y½Ç{øE‹õ‰|£"ëÔ©ã[7Ùh—×·#ÿÈk9‰#ÄjKijæVYR±Tà íµ×^ ¡Ìíï@ÞvÛm¾×O˜0AêÕ«ç›–häÊ•+ÅúV‰^[óWYRq_*QB1@vf+q4h`³$},ÏJ&]A†P¥w†¥kN5ðÒ* î0³#«*!++ÛÜÄlbý¯ª4YŽ:ê(½“Ÿ†JËòÇsº4p¹ÂøæäL2ˆfȪU…R¿~ —³£\è–¿#=qbqÚk›—óävY©Êá@AA‘yÓ`³y½Ñ¼y0»œÜ.©ÊáÁøñùæaq飔… W˜»åʹÂ%;RÅáÀ–-!™4©Ð<³Û¢¹²²j˜Ç6Õçeº8]O*É‘*|3g.6Ï·f()ÙdÞËš³5Âù"àHå Kiä¸qsÍ[#r,[¶Æ¼í°&"Î}‰DÀ‘*ð7œó©SøÞú˜0¡ œÏl‹€#Õ¶˜hÌ´i ÌßÒw¡¼Y ÛØ±s½Qî< ´ÜüŒjCF~ÍË›£ïAÕ¯_×´/dÎyÓ ÔÁZ¹²XŠŠVK³f[ßÒÌÈN¤©QiyL“¦¾&Tíºu%æ–ê5‹­0o’ÈÀ]ô{ÆõÌßl}E9¡‚«æô<¦© ¸6hP×¼…ÙB›Z§N-õ¯ì÷ªÐþt¶ÑùTéD¿šÖíH``y'<ãß ÐÊÊâHiÞ¨¨JoUèÒvÍâHµ]áÝ1 w¤ 0înù ’'‹#•ŒX§nù‹…Œ¼#•?..6 ©’Ï]ê€#•?..6 ©’Ï]ê€#•?..6 ©€Ç-û†B€ì;|Gªà–ï«» Gª`8¹\ àH•X.k0©àäÓɓőÊF¬S÷˜&2þñŽTþ¸¸Ø$p¤ ž»¥$OG*±NÝ-…XÈøÇ;Rùãâb“@À‘*xnù ’'‹#•ŒX§nù‹…Œ¼#•?..6 "þíß%ïØ±cÅUÏKKH¶‘ù7­¾Õ³ƒIö ™\"H…\«‘÷«¯¾Ú¦»£C .ˆgâxIå–¿¸¹ÄŠ àHUÔÜ5qp¤Š K¬>UE Hõ5HØ¢“ %)D#×­['Gyd¸™è,#zJí™páe'#òŸa…%IB p¿ýöÓ\è.£Ê°ÓN;•]ü€F4b˜¨¬¢éL]A‚‘{Sýè ùƒ”é—'ã,*ï󿥿€QEÿ˜A°á©§žR…vû}{_|ñEUAEœrРAJ,ˆ† 8ª]ì–üFF7‘€0æý÷ß/]BˆÅwâã…믿^UQQó²ªõñò'›–°¥BBvÖ¬Y*Ç (]ºt1? =Iµ~û÷ï–ŒEm%Ðo¼Q†j~Òp¬Šdc!ȇ@6òg¨2{‘.ëÝ»w¸?â믿V ) 9Ú·o/„ˆ6Š Ìô:{ˆqßzë­j…ì9…µnÝZ}ôQUŠG_Ϥgüq•”Eý“º)¯oß¾*€={ölUsÇÚP—Ÿ”»ï¾[åm‘²E_‡v „ŠÚ(}ák„(· Èç¢IH@ÚöœsÎQy”ä! Ø@²/¾øBË1‚–ª1ÈíTßI»ä’KT/qpȄڻÝm¡vJ:Âã(ÙG—E› 8¡‚ÊõÆŒ1açvÙe— âäL8pðXPÚ‚bk¢!aK… +€÷éÓGŸyæ••íСƒLžf> ß! V mcײeK-ãÄOôU…¨ä§ :mgúÄhèuêÔIÉJ›¸·fý0ï9i‹²w°Ûµk§VÏHÚªÀöÚµkɪáÜsÏUcô±ÄÍš5SUQú‡•Fy¾°°P­K+þXP&ºÎ^ÝcÚ…A¼«5bÄU)µuq„Ôô§k×®Ú¬ „…$FúVÓ¨²ù-™´ÝZáè²Ð3„„ÙÙÙá* g Û¶m«Ø2vrÒ÷Æküo¿ý¾&‘“­ëAWQ) ×úõëG\‰¸#àb øcýg°™Ñ ³AjœE/ø~«WAë€e"Øx⌎rDý~_ Ò¸Ì@Ì=¥vÚÖ¹sgóû­Ô*Ùkãõ !³ëÖ­›Z*¯8%ä±x+Ðmã¢ÞþÐGê€$ÔA@ëÁì*`Ë QQQx]–Íç=R¾w£&–P·.?œ+êŽX¬4" YªòÊDz°^ãk`¥0ÿÌTLynn®Z)f Î+Á±ìDt’ñ¾ûî;¹v}ÇJpØÖæ:ÊÂ*DŸk„ùÀgX¿~½`Þ ,·Xºž={êò@& ~Óå—_®}cwG_h+K:KƒœH ?¬à©§žªþ®mÆ*cÕ™@gœq†®øµÚñÉnaÒqž ‡®ÛsM(û`#€Ïƒ3O`ö³3ÃìÅxµ6 j¼@ýX6,Ï”)S´]F-^­..D£Hgû`ñÊ>}ºn°ºl*˜Œ誫®ÒåKŠŸHY”!C†¨åÇñG8|ðàÁáâ£Ë"É& MySQL++ Reference Manual MySQL++: mysqlpp::OptionalExceptions Class Reference
MySQL++  3.3.0
mysqlpp::OptionalExceptions Class Reference

Interface allowing a class to have optional exceptions. More...

#include <noexceptions.h>

Inheritance diagram for mysqlpp::OptionalExceptions:

Public Member Functions

 OptionalExceptions (bool e=true)
 Default constructor. More...
 
virtual ~OptionalExceptions ()
 Destroy object.
 
void enable_exceptions () const
 Enable exceptions from the object.
 
void disable_exceptions () const
 Disable exceptions from the object.
 
bool throw_exceptions () const
 Returns true if exceptions are enabled.
 

Protected Member Functions

void set_exceptions (bool e) const
 Sets the exception state to a particular value. More...
 

Friends

class NoExceptions
 Declare NoExceptions to be our friend so it can access our protected functions.
 

Detailed Description

Interface allowing a class to have optional exceptions.

A class derives from this one to acquire a standard interface for disabling exceptions, possibly only temporarily. By default, exceptions are enabled.

Note that all methods are const even though some of them change our internal flag indicating whether exceptions should be thrown. This is justifiable because this is just an interface class, and it changes the behavior of our subclass literally only in exceptional conditions. This Jesuitical interpretation of "const" is required because you may want to disable exceptions on const subclass instances.

If it makes you feel better about this, consider that the real change isn't within the const OptionalExceptions subclass instance. What changes is the code wrapping the method call on that instance that can optionally throw an exception. This outside code is in a better position to say what "const" means than the subclass instance.

Constructor & Destructor Documentation

◆ OptionalExceptions()

mysqlpp::OptionalExceptions::OptionalExceptions ( bool  e = true)
inline

Default constructor.

Parameters
eif true, exceptions are enabled (this is the default)

Member Function Documentation

◆ set_exceptions()

void mysqlpp::OptionalExceptions::set_exceptions ( bool  e) const
inlineprotected

Sets the exception state to a particular value.

This method is protected because it is only intended for use by subclasses' copy constructors and the like.

Referenced by mysqlpp::Connection::copy(), mysqlpp::ResultBase::copy(), and mysqlpp::Query::operator=().


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ConnectTimeoutOption__coll__graph.png000644 000765 000024 00000014246 14042362133 031244 0ustar00tangentstaff000000 000000 ‰PNG  IHDR©‰WysRGB®Îé`IDATxí]pUÅ÷>"MŠt½J• R¤ ˆCTŠ ½‹tD.  #@Pb¤K¤ „:„JBO ¸ÿýŽÿ}¾÷òR^ÞæÇ+»3/÷Þ-gw¿ýöœ³÷ÞÜÍ`ˆ@:hœ/'n›nšF€Ð$ÕDpz4I~ˆt39;3f¤W¯^9{3]º}—/_¦’%K:mœž¤ (~2dpZ]¹a7¦+W®85Iµ¹we†yHÛ5I=d ]¹›š¤®Z¶lIÁÁÁtóæM3f añòäÉ“$…ôïߟ:DÑÑÑ´}ûö$ó¹m‹:sÀbuŸlëÕ«gˆ4 .lôéÓÇèׯŸ‘?~£{÷îÆ;wŒ*UªB ±Œ¹sç“&M2Ä  40òåËg <˜Ó"""Œ† %J”0zôèÁ²ÂÃÃÒ¥KszÍš5¾}û²ìöíÛ³Ì%K–ݺu3ªV­Êå6lØÀyW¯^mŒ7ÎâüÌ™3†¯¯¯!ˆÏñò ©1uêTÖ¬eË–Ù²e3Š-j>|ØhÛ¶-Û·oŸQ©R%#wî܆˜DF||¼±jÕ*£gÏžÚ ,dIßÿ}cçÎI¦;C‚[hÒ‹/ÌòüA+V¬`­ô÷ßó54T¦L™è¯¿þbE³råJƒH“'O&Ab !1àüÝwßQ±bÅh×®]tãÆ º~ýº…r:qâ RбcÇèîÝ»´eË“€¶nÝJkÖ¬¡Y³f‘ &—)T¨•/_Þâå*T¨@ ´Û¨Q#:uê”MY;wæöŠÉE‚¬töìY.;bÄÖð;vìà>Àmxøð!­[·Ž/^ÌzÆŒõ¸ê…[àÃ$Ö®]›Š)BB“RÅŠ©\¹rsݱcGÚ¸q#›W¡©Y³fTªT)š={6*¶lÙ²„:t(ß3LÊÄ#‹IŠºÛµkÇuuèÐ'È]¿~}êÚµ+’Mç ôüùsŽ3ÿI™3gæ(kYQQQœ–3gNÓ½bL«W¯ÒðáÙÀèoPP—oÓ¦ 〺1ÑÜ!¸ Iýüüx<¼¼¼(Ož<còlÞ¼™‰ŠA!¦M›FÐF»wïf‡AÇ  ³Êe³dÉb!C^äÊ•‹O_¼xÁ>".dÎÙ ˜'Oždiž-(µnjd ·„5º”‡˜Âà#¬‡0Õ|îê܆¤É D™2eHøžLLhUhSüÖ¯_OMš4áUó|À¤EºtpnàF¼|ù’I/|BNÉ@”ÐÐPÊž=;Õ¨Qƒ@¤Ó§Osº<¯[·.“qÊ”)¦G½k×®%<–>p’² |NNÇŸjÕªÑãÇéܹsìælÚ´‰ûbÊàf'nORù8ä„Ú¢E B±ð!±Ø!v `fá2Lœ8‘*W®Ì~¦k)D„öÅsnê„ 8]žCˈ ·aÈ!ì6(P IYð¡á??xð€ó =_ý5× rÿþ}jÞ¼9§™ÿ‘í6sÉsgX½%×jŠ«ûäÊË4aÞ A*yÉGá ×®]³ˆf“Wßþù§!4«Eš0¡†0ç†ð9MñB+‚ŒÆ½{÷Œ˜˜S|J'µ0.]ºd‘-9YbQd‘¿5„vWXÝ;ý &*fþ AƒxQ„…‘y·©Ì/ùo]aõ•¼­m(ýVóô7ß|Óü2Ås,ð’ ¶d™ûª²üfg~{I¶ÓÑcÌHG…¤gy˜,˜YGLVÏyóæ%0µ>`ll,aU-ƒÐ–,G^ãˆ<¸=ähP)+µmÁƒ¸%8:kðM*ý={ÁÛÛÛ‚ ( ¢[ä”2UÊ’2Ýáèö 'w$OïƒÓ›{Wz3.‰O%qÃ>\¸(‰oÚ;+ÙœýÍ|§×¤¸' ·Ù~áá‘ÂEhJ;\¢½Sg_|9=IUûØjW``¨xO #­\yÐV²ŽK#š¤iÎV±U«‚ÅãÉ—téÒ]ñ€à‘­,:. h’¦4[EÂÂ"(&æ??4((ÔV6—4IÓš­"¿ý"^.yÉIqqñôË/Á¶²é¸4  IšЬ‹`t„M½L‹ŠŠ¦ðð(y©  Iêx²hpðeñf”å,Ä+âEèÃ2‹>:€€&©àÉ¢X0ÅÆ¾—|ŒO ¸:8Ž€&©ƒ&$¼ï–†‰›÷‰_ˆ/ª¸ÇÛñÂäPqMR‡à#:zôšxñøåÈáÃ?_ß,â˜•Ï #ƒøo€ãÖ ‹;ýcQW¢Ë‚¨ÿ¾9?tè¯âÅç)þÜt?ÊšÕÛºá´môˆ· Òý:uüLUøøx‹·ýýÄÚ÷~©I€>I„€6÷‰ ÑΆ€&©âñòÊàÐ ÚŠ›ãâ4I#Vù¸¹¯ƒ:4IÕa©%¥š¤ŠÕæ^1 Bœ&©bLµ¹W ¨&©z@µDõhMªS-Q1š¤ŠÕâÔ# IªS-Q1š¤ŠÕâÔ# IªS} J1 Bœ&©bLõ-(Å€j’ªTKT€Ö¤ê1Õ# IªP|Ê‘ÏT*nŽ[ˆÓ$U<ŒòûJŠÅz´8MR~×è¼&©âqÒ· *Äi’*ÆTß‚R ¨&©z@µDõhMªSmî*Äi’*ÆT›{Å€j’ªTKT€K~ÁÌÚÚ(L=<öKÌ–­²ØØá¢ø6Tœý…Ó¹Dpp0Õ©S'kQ/Þ%¿`‚íµ±U¸Ü`V=,î'{˜†„„¸$IµOê~|t»i’ºÝº_‡4IÝoLÝ®GnMÒýû÷ó^ð¯kÔ.\¸@K—.¥… Òž={ìúüÎÎ;ÅF–_~]ýxÝõº5Iû÷ï/>r{4IŒ‘~èС$ÓI˜>}:µlÙ’°¢¾yó&3†wB~òäI’b—,YB‹-âôM›6‰»ÿm¹“d!HpÉÕ½½ã²zõjÞï{Øß¹s‡¾ùæÞVü矟ßLGŽ¡½{÷Ò¸qãxÛòQ£FQïÞ½Y“ 8¶mÛF­[·&hFh¸3gÎÐçŸN×®]£öíÛÓœ9shýúõ´uëVñùñ4`ÀúöÛo9Á‚MÍmÒ¤ -X°€oŸ¡¾ãÇStt4ÍŸ?ŸJ—.McÇŽem[¼xq #lg~ëÖ-êÞ½;>|˜jÖ¬Ihs\\¡]Y³f¥p$¹M•¹Ñ‰[kR9N>¤uëÖÑâÅ‹Y£Í˜1ƒ:wî̃>wî\Ê•+A«Î›7fΜI£G¦sçÎÑöíÛ™ iBB“2AâV­Z±L- €=zDË—/§^½z‰H^R… Èœ (רQ#:uêOzÍš54kÖ,žeË–eâwëÖš5kÆù@R´ [¡CãçΛ~øá&)Ê·k×NlÍÄĽ}û6ªpËà$ÅȵiÓ†j×®M]»v¥7n°Êœ93ïi¿oß>Â^ó—.]bÍU¸pa:xð kÆ>}ú0áFŽÉˆ¥]»vQöìÙ™8~~~¬ÍóÞ·o_òöö¶iª### u"€`åÊ•£:\¸‰vÈ<È·eËžX ñ¤I“˜”ˆ‡¶¡ëÕ«GeÊ”á>!ÞƒÇÔ××—Ç/S¦L‰0 -ˆñøñcþuéÒ…ªV­J/^d2£`Þ¼yÙÀÓ.h¸gÏžqÞZµjQÛ¶mY¶| VªT):yò$kLNøÿ?X<•/_ž¯ ½eÀ r­ÞòGÛP7«W¯X£ã\öç¶ú„xw CÒ¤ „ƒ|úô) 4ˆ† Æ~'ˆM‡ ÈH^^^¬Áß´iSö!ïß¿OW®\±_·n]&ã”)S¸,×®]KØW¾Gœ„…ÜÐÐPÖ 5jÔàx´Gü¯TóæÍÙßEdÀð´à 'ëA•ÿ(‡…%x¼ Ó‰G­XQ7lØPlÎàOEŠ¡~ýú±o @–ûꫯ¨S§N,‹ø¥7n4¥ƒÌ 5ò@cBëA+ÂtÿDˆˆˆ ˜ð{÷î±ß ÙÕ«WgwõˀǙhbhüd[A¶ÍVšËÇ ð\.ˆÅ‡!¥¤ÝbQe’ƒs±b7] mgà'´ª!*†ðÿLiˆ;þ¼!I¦8['Â\Â×µHÖ˜0a‚!jÄÄÄX¤ nˆEšE.ÂÃù‰R1xð`C,ÂR™Û¹²y¤&5×,æ¾!Îͯ¡õ7nLð1q ·²dÀâš0¥mœTxóÍÄÛè`ád+  ž<ž¤É <|Ïëׯ“ИT²dIòññI.{ªÓ†žê¼:£Xj’G cÆŒì«&ŸË¾Ô¤´¥}R<'·Ç¯î=g¨]·§.©Iq?&mE‹öøøT«ðpq{Éùž»ã=W .©IóåËÇ·tÄÔ©Žáá‘â VSñ˜t‡SµKâäŠÿ:‚Iå’$uVm*žþd¤•+:k]²]𤠇mÕª`ñØò¥xà®xà‘BÉž-J“TÑø‡…EPLÌ~hPP¨"ÉZŒ&©"üö[ˆxÿô%K‹‹‹§_~qÍEŠ"8”ŠÑ$U'&AAGØÔKqQQÑ%/õÑ4IO ¾,^t~%/ù(¿‹—š[Äé‹´! Iš6Ü,JaÁkùOsññ @ÇÐ$uÄ„Wâÿ¤ÂÄÍ{#‘¤ØØ8ñ?O7ÅëûÐ$µ¯D¹½&ÞÒA9røðÏ×7‹8fåsÃÈ Þ3=ž¨ŒŽ°—ü`™}]LÿÜ!!—Qÿ}£~èÐ_iüøÅ„æàŠýýýÄ¿ x§#ܸ—|vïlãQ§ŽŸ©I>>Þâ­~?*V,ñ»¢¦LúÄ.´¹· .ùu  Iªuý9rÅ€ qš¤Š1ÕŸ#W ¨&©z@µDõhMªSmî*Äi’*ÆT›{Å€j’ªTKT€Ö¤ê1Õ# IªP-N=š¤ê1Õ# IªP-N=š¤Š1Õ· *Äi’*ÆTß‚R ¨&©z@µDõhMªS-Q1š¤ŠÅ÷ œíUŠ»ø?§IªrùÝ%Åb=Zœ&©G¿kt^“Tñ8é[PŠâ4IcªoA)T“T= Z¢z´&UŒ©6÷Šâ4IcªÍ½b@5IÕª%¦⾞)ìÞ½4Ò?0È–­²áå•Ecè†ü±‰“8±ø‚‰ )ï±ùÙgŸ¥ÃtÐ"5)#F«V­²È¨}R 8ô…3" Iꌣ¢Ûd€&©ú°ðI¡bÛmÞ)ÙÖÆiiŸØò›wX¾sçï'ïçç—1ÊÊ;vLlaùUhÏ;7¡ÏªúmOƒÑžãÇ“ØFë¯Zµ*åÍ›7U"Ä禶§ª@29&ÅvÝGMCWûÉÓÀiË–-âû¡Ïhݺu4dÈ>Oœ;}cúöí+¾«ÿ’·›úˆ?!!ÆŒC¡¡¡”={vêÔ©ÅÅÅ1sæÌ[ÆüÂÏ™3'ç+S¦ ŠïÊÿ&¾åYŒ°r¿~ýLÀlÞ¼™°Ò OŸ>er½ûÁÆßûöí#Ìø±cÇŠÔf¥‘#GÒ°aèpá¦ó+VP5¨ÿþ&¹{öì¡Ë—/³Œyóæ®óäÉCØÞûí·ß¦ÁƒSùòåiçÎT¼xqšÜ6mO ß*Uªp›—,Y">þŠºtéB~ø!aBN›6·=/[¶,×õüùsZ¼x1M:•ë=z4}ñÅ4eʺ}û¶øÐo~Þ*½zõêÜv pÇX¾÷Þ{Œ‡5Þæå1Æo½õ–Øy%R‹§¯¯¯¬*UG»5iLLŒi¶UªT‰AøòË/©~ýú´aÃ@;vìàÊ¡3eÊÄf›¯.[¶ŒZ´hA¿ÿþ»Ø˜+†–/_.¾Š<žÚµkÇ& Ê2€'Nd’ýôÓOœÒ¢“¸~ôè…„ü»yBÅŠ™¬È$Ï‘·råÊR$6lHh÷‘#Gèܹsôý÷ßS“&MƒŽpãÆ ž\óçϧèèh–¶îß¿Ÿ‰,îá™n‘€Xþþþ<èXL,L(pöìÙÔ£Gn'ˆˆ¡ÇÇuØúM–¾ÐÆsçÎeò`R£ ׯ_gL1Ù@Ê7ÞxƒÇfd”áæÍ›L&Lt¸=;w&Lžš5kÊ,|f( i oóò²ÝöàiQY*.ì&)dBƒaFW«VòüþýûT»vm±eá-º{÷.“¤€†À5„Ö©A`€˜±EŠIÔ\ù!æ ¡C‡ì3µlÙ’äÎÃÐnÒŸ“ç^^^L¸D‚EÊAb°ºvíJ@L DD{ a¤)ƒ‡†mÖ¬ÇaB¡ÐâgÏž¥‚ L6 ¹dɒܯQ£FqÈyR’ÃîêD{¡=á;¢^ôí.Z´(OXš¤&9”‡» Ö>2&'&ò Xãm^^Öa/ž²\jŽi"i¡B…X6H#ǿ߆—•eΜ™êÖ­Käò,X°€ š š¤…¹‘ÁÛ;ñwåÍÍÌ 4'‚ŒG\ll¬‘èˆÉ…Šy˜1c» \0(âá_bð`º“ŠC[P?Ì´'L"&4 Ü@"{ÿ$9|Ñnuâ+€ (|2eïÞ½´uëVö9'MšÄèwÞ¡“'O2˜Ððq­Vœð»ÎŸ?ÏÚ®ˆ‡AÀì-Q¢ÇA´-‚&ä@#ÂTJMÌ™Sø? Z¦ò“O>aצraúA ø°#FŒ0I© ØZ.4ÚŽ>ÔªU‹ûùxrˆkLX7¸/^ä6Êúe[`M0>W®\á$Lz,¢Z·nÍ“‘¶ð–å¥äÇC»`IÒ ò1É }‚k¼}ûö„*üaÄÃ'ÆD‚Ëôé§Ÿr9”E€+—léÒ¥Œ?n=õîÝ›'),”Œ\ÐÙ•åe_ÁSÊHêh±EÇÊ×Ñg÷0ü€€•C# hV ¨ Ì+Væ¸õÀ°2ØÐÈ/M0ÌÛ¶mÛØ4w¤<[G P (`ò³d>˜)]Ê—ñ©=bÀ AÑ/¸?2`B@&\LNô'­õH¹òùÐÖè“y€¯jÝOä•&[æE»1&r,Ð6”±ÍÛ˜ÞÖå¥\Gñ„ÂX9”jRÅj·m`FäÌE<¾“u~”u¼¼¶•’Z‚BòƒD¶‚=rl•‡ˆÅŠu°&Èj>øÖùí½†|ë: ÃV?må“‹"Y/Èjk|n oëòRŽ£xJ9æGå$ŽE˜½\¹r™×“â9îšbÇŽm– 2i'›t¤Rœoå$Å*Ý^‚UëÙŽÛ,¶‚-Íj+ŸŽSƒ€3àýŸ¥¦OZŠF@=bQa »õ›ùúzÞ¨ìT‚Ÿõ›ù«{õS@KÔ8Ž€6÷Žc¨%¤3š¤é °ï8š¤Žc¨%¤3ÿ¸)zqžAóIEND®B`‚mysql++-3.3.0/doc/html/refman/functions_func_n.html000644 000765 000024 00000010620 14042362132 023016 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
MySQL++  3.3.0
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1tiny__int-members.html000644 000765 000024 00000036644 14042362132 026234 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::tiny_int< VT > Member List

This is the complete list of members for mysqlpp::tiny_int< VT >, including all inherited members.

operator bool() constmysqlpp::tiny_int< VT >inline
operator int() constmysqlpp::tiny_int< VT >inline
operator value_type() constmysqlpp::tiny_int< VT >inline
operator!=(const this_type &i) constmysqlpp::tiny_int< VT >inline
operator%(const this_type &i) constmysqlpp::tiny_int< VT >inline
operator%=(int v)mysqlpp::tiny_int< VT >inline
operator&(const this_type &i) constmysqlpp::tiny_int< VT >inline
operator&=(int v)mysqlpp::tiny_int< VT >inline
operator*(const this_type &i) constmysqlpp::tiny_int< VT >inline
operator*=(int v)mysqlpp::tiny_int< VT >inline
operator+(const this_type &i) constmysqlpp::tiny_int< VT >inline
operator++()mysqlpp::tiny_int< VT >inline
operator++(int)mysqlpp::tiny_int< VT >inline
operator+=(int v)mysqlpp::tiny_int< VT >inline
operator-(const this_type &i) constmysqlpp::tiny_int< VT >inline
operator--()mysqlpp::tiny_int< VT >inline
operator--(int)mysqlpp::tiny_int< VT >inline
operator-=(int v)mysqlpp::tiny_int< VT >inline
operator/(const this_type &i) constmysqlpp::tiny_int< VT >inline
operator/=(int v)mysqlpp::tiny_int< VT >inline
operator<(const this_type &i) constmysqlpp::tiny_int< VT >inline
operator<<(const this_type &i) constmysqlpp::tiny_int< VT >inline
operator<<=(int v)mysqlpp::tiny_int< VT >inline
operator<=(const this_type &i) constmysqlpp::tiny_int< VT >inline
operator=(int v)mysqlpp::tiny_int< VT >inline
operator==(const this_type &i) constmysqlpp::tiny_int< VT >inline
operator>(const this_type &i) constmysqlpp::tiny_int< VT >inline
operator>=(const this_type &i) constmysqlpp::tiny_int< VT >inline
operator>>(const this_type &i) constmysqlpp::tiny_int< VT >inline
operator>>=(int v)mysqlpp::tiny_int< VT >inline
operator^(const this_type &i) constmysqlpp::tiny_int< VT >inline
operator^=(int v)mysqlpp::tiny_int< VT >inline
operator|(const this_type &i) constmysqlpp::tiny_int< VT >inline
operator|=(int v)mysqlpp::tiny_int< VT >inline
this_type typedefmysqlpp::tiny_int< VT >
tiny_int()mysqlpp::tiny_int< VT >inline
tiny_int(value_type v)mysqlpp::tiny_int< VT >inline
value_type typedefmysqlpp::tiny_int< VT >
mysql++-3.3.0/doc/html/refman/result_8h_source.html000644 000765 000024 00000211376 14042362132 022766 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: result.h Source File
MySQL++  3.3.0
result.h
Go to the documentation of this file.
1 
5 /***********************************************************************
6  Copyright (c) 1998 by Kevin Atkinson, (c) 1999-2001 by MySQL AB, and
7  (c) 2004-2007 by Educational Technology Resources, Inc. Others may
8  also hold copyrights on code in this file. See the CREDITS.txt file
9  in the top directory of the distribution for details.
10 
11  This file is part of MySQL++.
12 
13  MySQL++ is free software; you can redistribute it and/or modify it
14  under the terms of the GNU Lesser General Public License as published
15  by the Free Software Foundation; either version 2.1 of the License, or
16  (at your option) any later version.
17 
18  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
21  License for more details.
22 
23  You should have received a copy of the GNU Lesser General Public
24  License along with MySQL++; if not, write to the Free Software
25  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
26  USA
27 ***********************************************************************/
28 
29 #if !defined(MYSQLPP_RESULT_H)
30 #define MYSQLPP_RESULT_H
31 
32 #include "common.h"
33 
34 #include "exceptions.h"
35 #include "field.h"
36 #include "field_names.h"
37 #include "field_types.h"
38 #include "noexceptions.h"
39 #include "refcounted.h"
40 #include "row.h"
41 
42 namespace mysqlpp {
43 
44 
47 
48 class MYSQLPP_EXPORT SimpleResult
49 {
50 private:
55  typedef bool SimpleResult::*private_bool_type;
56 
57 public:
60  copacetic_(false),
61  insert_id_(0),
62  rows_(0)
63  {
64  }
65 
67  SimpleResult(bool copacetic, ulonglong insert_id,
68  ulonglong rows, const std::string& info) :
69  copacetic_(copacetic),
70  insert_id_(insert_id),
71  rows_(rows),
72  info_(info)
73  {
74  }
75 
82  operator private_bool_type() const
83  {
84  return copacetic_ ? &SimpleResult::copacetic_ : 0;
85  }
86 
88  ulonglong insert_id() const { return insert_id_; }
89 
91  ulonglong rows() const { return rows_; }
92 
95  const char* info() const { return info_.c_str(); }
96 
97 private:
98  bool copacetic_;
99  ulonglong insert_id_;
100  ulonglong rows_;
101  std::string info_;
102 };
103 
104 
109 
110 class MYSQLPP_EXPORT ResultBase : public OptionalExceptions
111 {
112 public:
114  virtual ~ResultBase() { }
115 
117  const Field& fetch_field() const
118  { return fields_.at(current_field_++); }
119 
121  const Field& fetch_field(Fields::size_type i) const
122  { return fields_.at(i); }
123 
125  const Field& field(unsigned int i) const { return fields_.at(i); }
126 
128  const Fields& fields() const { return fields_; }
129 
131  const std::string& field_name(int i) const
132  { return names_->at(i); }
133 
136  { return names_; }
137 
141  int field_num(const std::string&) const;
142 
144  const FieldTypes::value_type& field_type(int i) const
145  { return types_->at(i); }
146 
150  { return types_; }
151 
153  size_t num_fields() const { return fields_.size(); }
154 
156  const char* table() const
157  { return fields_.empty() ? "" : fields_[0].table(); }
158 
159 protected:
162  driver_(0),
163  current_field_(0)
164  {
165  }
166 
168  ResultBase(MYSQL_RES* result, DBDriver* dbd, bool te = true);
169 
171  ResultBase(const ResultBase& other) :
173  {
174  copy(other);
175  }
176 
178  ResultBase& copy(const ResultBase& other);
179 
182 
185 
188 
196  mutable Fields::size_type current_field_;
197 };
198 
199 
208 
209 class MYSQLPP_EXPORT StoreQueryResult :
210  public ResultBase,
211  public std::vector<Row>
212 {
213 private:
218  typedef bool StoreQueryResult::*private_bool_type;
219 
220 public:
221  typedef std::vector<Row> list_type;
222 
225  ResultBase(),
226  copacetic_(false)
227  {
228  }
229 
231  StoreQueryResult(MYSQL_RES* result, DBDriver* dbd, bool te = true);
232 
236  ResultBase(),
237  std::vector<Row>(),
238  copacetic_(false)
239  {
240  copy(other);
241  }
242 
245 
247  list_type::size_type num_rows() const { return size(); }
248 
251  StoreQueryResult& operator =(const StoreQueryResult& rhs)
252  { return this != &rhs ? copy(rhs) : *this; }
253 
260  operator private_bool_type() const
261  {
262  return copacetic_ ? &StoreQueryResult::copacetic_ : 0;
263  }
264 
265 private:
268  StoreQueryResult& copy(const StoreQueryResult& other);
269 
270  bool copacetic_;
271 };
272 
273 
280 template <>
281 struct RefCountedPointerDestroyer<MYSQL_RES>
282 {
284  void operator()(MYSQL_RES* doomed) const
285  {
286  if (doomed) {
287  mysql_free_result(doomed);
288  }
289  }
290 };
291 
292 
297 
298 class MYSQLPP_EXPORT UseQueryResult : public ResultBase
299 {
300 public:
303  ResultBase()
304  {
305  }
306 
308  UseQueryResult(MYSQL_RES* result, DBDriver* dbd, bool te = true);
309 
312  ResultBase()
313  {
314  copy(other);
315  }
316 
319 
321  UseQueryResult& operator =(const UseQueryResult& rhs)
322  { return this != &rhs ? copy(rhs) : *this; }
323 
325  const Field& fetch_field() const
326  { return fields_.at(current_field_++); }
327 
329  const Field& fetch_field(Fields::size_type i) const
330  { return fields_.at(i); }
331 
337  const unsigned long* fetch_lengths() const;
338 
346  Row fetch_row() const;
347 
354  MYSQL_ROW fetch_raw_row() const;
355 
360  void field_seek(Fields::size_type field) const
361  { current_field_ = field; }
362 
374  // it was successful:
385  operator MYSQL_RES*() const { return result_.raw(); }
386 
387 private:
389  UseQueryResult& copy(const UseQueryResult& other);
390 
401  mutable RefCountedPointer<MYSQL_RES> result_;
402 };
403 
404 
406 inline void
408 {
409  StoreQueryResult tmp = x;
410  x = y;
411  y = tmp;
412 }
413 
415 inline void
417 {
418  UseQueryResult tmp = x;
419  x = y;
420  y = tmp;
421 }
422 
423 } // end namespace mysqlpp
424 
425 #endif // !defined(MYSQLPP_RESULT_H)
Provides a thin abstraction layer over the underlying database client library.
Definition: dbdriver.h:58
Class to hold information about a SQL field.
Definition: field.h:47
Interface allowing a class to have optional exceptions.
Definition: noexceptions.h:72
Creates an object that acts as a reference-counted pointer to another object.
Definition: refcounted.h:83
Base class for StoreQueryResult and UseQueryResult.
Definition: result.h:111
const std::string & field_name(int i) const
Get the name of the field at the given index.
Definition: result.h:131
ResultBase()
Create empty object.
Definition: result.h:161
const Field & field(unsigned int i) const
Get the underlying Field structure given its index.
Definition: result.h:125
const RefCountedPointer< FieldNames > & field_names() const
Get the names of the fields within this result set.
Definition: result.h:135
Fields::size_type current_field_
Default field index used by fetch_field()
Definition: result.h:196
const Fields & fields() const
Get the underlying Fields structure.
Definition: result.h:128
RefCountedPointer< FieldNames > names_
list of field names in result
Definition: result.h:184
const FieldTypes::value_type & field_type(int i) const
Get the type of a particular field within this result set.
Definition: result.h:144
RefCountedPointer< FieldTypes > types_
list of field types in result
Definition: result.h:187
Fields fields_
list of fields in result
Definition: result.h:181
virtual ~ResultBase()
Destroy object.
Definition: result.h:114
const Field & fetch_field() const
Returns the next field in this result set.
Definition: result.h:117
const Field & fetch_field(Fields::size_type i) const
Returns the given field in this result set.
Definition: result.h:121
const RefCountedPointer< FieldTypes > & field_types() const
Get a list of the types of the fields within this result set.
Definition: result.h:149
ResultBase(const ResultBase &other)
Create object as a copy of another ResultBase.
Definition: result.h:171
size_t num_fields() const
Returns the number of fields in this result set.
Definition: result.h:153
DBDriver * driver_
Access to DB driver; fully initted if nonzero.
Definition: result.h:180
const char * table() const
Return the name of the table the result set comes from.
Definition: result.h:156
Manages rows from a result set.
Definition: row.h:64
Holds information about the result of queries that don't return rows.
Definition: result.h:49
ulonglong insert_id() const
Get the last value used for an AUTO_INCREMENT field.
Definition: result.h:88
SimpleResult(bool copacetic, ulonglong insert_id, ulonglong rows, const std::string &info)
Initialize object.
Definition: result.h:67
const char * info() const
Get any additional information about the query returned by the server.
Definition: result.h:95
SimpleResult()
Default ctor.
Definition: result.h:59
ulonglong rows() const
Get the number of rows affected by the query.
Definition: result.h:91
StoreQueryResult set type for "store" queries.
Definition: result.h:212
StoreQueryResult()
Default constructor.
Definition: result.h:224
StoreQueryResult(const StoreQueryResult &other)
Initialize object as a copy of another StoreQueryResult object.
Definition: result.h:235
list_type::size_type num_rows() const
Returns the number of rows in this result set.
Definition: result.h:247
~StoreQueryResult()
Destroy result set.
Definition: result.h:244
std::vector< Row > list_type
type of vector base class
Definition: result.h:221
StoreQueryResult set type for "use" queries.
Definition: result.h:299
void field_seek(Fields::size_type field) const
Jumps to the given field within the result set.
Definition: result.h:360
~UseQueryResult()
Destroy object.
Definition: result.h:318
const Field & fetch_field(Fields::size_type i) const
Returns the given field in this result set.
Definition: result.h:329
UseQueryResult(const UseQueryResult &other)
Create a copy of another UseQueryResult object.
Definition: result.h:311
const Field & fetch_field() const
Returns the next field in this result set.
Definition: result.h:325
UseQueryResult()
Default constructor.
Definition: result.h:302
This file includes top-level definitions for use both internal to the library, and outside it....
Declares the MySQL++-specific exception classes.
Declares the Field and Fields classes.
std::vector< Field > Fields
The list-of-Fields type.
Definition: field.h:153
Declares a class to hold a list of field names.
Declares a class to hold a list of SQL field type info.
Declares interface that allows exceptions to be optional.
Declares the RefCountedPointer template.
void swap(StoreQueryResult &x, StoreQueryResult &y)
Swaps two StoreQueryResult objects.
Definition: result.h:407
Declares the classes for holding row data from a result set.
void operator()(MYSQL_RES *doomed) const
Functor implementation.
Definition: result.h:284
Functor to call delete on the pointer you pass to it.
Definition: refcounted.h:48
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Exception__coll__graph.png000644 000765 000024 00000012700 14042362133 027042 0ustar00tangentstaff000000 000000 ‰PNG  IHDR\l„¡÷ Š(¢ Uj@AAªOC(RÄbAäQ•¦DŠRë‡ Ò HBïˆt 5  dÞùO¸ËÍf“ì&»ÙÝäžïKvîܹSΜ9çÌÜ™ÿæRLdÁ rÀ#ƒÏdB¦8`P¦Øg<ì©gÁÍ›7éðáÃú(#l%5jDyóæµ2µåd¤ÿý×òM‰}òÉ'©lÙ²¦Ú$ 7nP¥J•äϔ¤ËC‡ÑÝ»w3-@÷ïß§ ——Wºe:#ÁåË—)&&&™&Ì=‘Ê4(u¦3šb3¸žÊt¨ýóÏ?´wï^—bWll,íØ±Ã¥êä¨ÊlÞ¼™âã㕽äk:räõîÝ;EEOœ8AüqŠxgD¼óÎ;ôÛo¿‰¸qãFgTÁaejm3/`Íš5gm×k›Z%00J—.M­[·¦èèhêÖ­-\¸ÆŽK—.]¢æÍ›Ó£>JÓ§O7Uvøðá´téR¹nÕª={–°lйsg*W®µk׎¢¢¢è‡~ :Þ°¬^½šZ¶lI ôÅ_Pùòå©fÍšŒ–/_NO<ñU©R…fΜ)yÏš5‹^ýuzæ™gè‘G‘´?ýôÍ;—:vì(õƒ`ƒvíÚEO?ý4•(Q‚úôéC˜-Z´HCݺuÉÇLJfÏž-i]åßœ9s¨Zµjäçç'mÒ· |ìÔ©“ Ücǎѽ{÷èƒ> HŸ`ŽY#hûöíÒ~´õ7Þ¶ÛÜN¼ Óèï¿ÿVçÎÓ.-þN™2EõêÕK]»vMuïÞ]q‡+–tõì³Ïª[·n©·ß~[uéÒEñš†jܸ±z饗$n¸â“ðèÑ£O ÕgŸ}¦^yåŪ¸ÑòÜíÛ·w¼š1c†â%µlÙ2Å‚¦X`ÕñãÇÕÊ•+ÕSO=¥˜1·~ýz¬Š/®N:¥Æ¯Ê”)£þüóOÅ«X@Ô;w”¿¿¿ä…²X褨óÔ©SÕï¿ÿ.é6mÚ¤¾ùæÅ¥X[Iüq‹|ÐG¢­<½ÕGe(¼oß>©kj³ùU… R<øÔÎ;ê¦oÛ™3gð^S 8P]¸pAøpåÊá-Úªx°«¾}ûJ,8Š–Ú²e‹*Y²¤š6mZjEK<+õ×_%K“lÈé«\¹2‰6àŠ¤#9Ož1£Úsîð ócN–ÚfžF>âK<;SŽ%&Mšè“X΀β*_§%Òq§UÀ þî»ï(22R±®”Êv¤ÍÜ2ÂŒœøŒ~oOFÚo³‘BŒg²/’i ØQìHĺ‹;ÐŽ祚M›ú:½ºð¥2KðKx5Úælïæ¢ˆ¹ù©ìkw(wADz1÷}“ œTöÆmn€³Ø´)˜ßUíäõ§â¼&ÕÞYÕ°[¹˜šÛJ1îÒÚ·ÎPld<5jИò—LÖ¥¶fgsz·6aWáV/š3g7¯DG·o;vë‚ÍÜuð÷ÄÐò®§(öjÄ ºÃýª˜­} ­;¢¢bä-ýš5ïó ŒRZ´ñkd{ •)S„O¯¶t«—«‡oÑŸ+ÒŸAâô-N¬:‹r„¹ÿýofô Z·î˜³xmu¹±‘÷(dpU¨—þ¬‹NäH¸5™:gêíJÎX½tV™ûö…ªÚµÇò)ØxgUÁªr7~ª°ê ¼ %—0NÝjÐ,_}õ•úòË/º…›+>ž­xûbŒ I‹{€A kp’¸T©Rã8{@rõï?_­vÙ6‡ï¸¡ÿç„J¸—tlœÁpI}@°‹pÜ%FZb0-ÅàŠA¢c ȱnà%!xHã8:ƒ|)>x©’ØníÏ1&LSÛcƼL?ÿ¼O^¸jq®ò‹a»'^ ÿ|ÉÃ3 Ç 86õ’cØ ¤%(cÚQdôà à1& ®ˆ&¬©äè2p¬q$/õ°.™m{Ž R¥ 1€dI¥H·Œ6(nƒC=iÒ:ÞÑw'Tiß‚æ92;‚šŒp>zÚ5ÍØ]C€Òà[µjåùó—5ùŸkÒH•ö­½Ÿ_ êÝËPaŸ¼i'tÓ»†¥ÓqƵ¡tüøÅtR¦¼}~çMŠ>G5zfß­"†¥ì÷d1… åãýÓíøã»KMÛB“%HåÎû§_¢¦£ýLäSIêÖÑÆJ´•Ý÷ê«_Ñ«¯Ö!lÿ0è! zÈ‹4CxÉø mß>œÍ8“0ÍZ:á¦ÝN˜Ù7°zn÷—/_EååUÉíêm ¯hCO*å$xj¢­[·:a¸E¦Å½{÷Ò¶mÛÒJ’âžáD§`‰a  ²…[FÚ0(KŒ[8à4È–JÚ;-Ny¬€Q-ì’õùôÄp+Tºti}”ÝÃgϞ僑ũdÉ’vÏÛÚ s¤ÊÅäÉ“­åQºéFM»wïÄŒC‡É/ÊpAh´º@¹Ø²e ………QŸ>}’…‘W=’ih¹~ýúQÏž=©^½z4räHjݺ5U«Vß­ѹsçü³®ÄãØñ”)SèèÑ£R—¡C‡Šf±T7™¢+W®0l_9/ÏØAüÙÏû "ú¯QmhÆíúÞ{ïN›¢=~~~ôÉ'Ÿð7fíûa—Ô@8Ëσñ½zõ@t ³p!γ§Ü¹s‹P¡óBBB8:sçÎ¥V­Z‰A.\¸@K–,fO›6M„)22˜B¦tàÆüíÕýÍŸÍüÆŒCŒ&÷ð#|‘¯oÒ[u}÷¹í0+¨ 2‚ƒƒÛÀãüù¬Y³¤<àø¬]»V„`êÔ©Å2cÆ d)l^7ÌcçÎeP0p”ð&yúôéüÝØ‚äçÑ~2ê#mC¼=É% öM»víDˆðMvh!ŒXœëáóä{ö졈î•/_ž/^LèŒT „2 €¼½½y«jyÖü_ÇŽE8 !´ï¶ûûû‹°4kÖL€ xÐP-[¶”ÇõaD`„W®\ÙôçááÁoòÛ>¥\Â!C†ˆÐC@;tè åA+AûÁü•(QB êɨb¦*š×   Qg´ ‚M~`àÐäk¯½F>>>‚Ìásç’& L)[¶¬0fiPÕ¡cyÕT: aÆbš?PF7  HP÷ }Y"M­# W€´8„í„:¥Fè@KN3ÐÀ’¾c–W^ÆB‚‰NHH?¦R¥Jb.h*F«‡¾n¦› @¸h„<¡Aš AckqZ:{üº¬J¯qUÅŠc¸ºŸE!=ü"h"øuêÔŸH] <)ÙÁ²D0—`:F2:„g0³bŒB1+0‘Fø. }×è`ýž]¿~½h˜øt Ô+¾  &Hš§{÷îT¡B…dÈ–ê†rôS<Ñ8ñÐfY53sY ¤g>ŒÑ¬ÌØÒ¥KÅÌ!Z©wïÞbzàGÁ AkÀ·€6Š‹‹³†´Z>•01pd .LÆ ãÖ­9¸yó&õïß_Òãõ |+˜G}ùÁTè ÎóŠ+xoõ(qh“7ê¯ßõ™?¾˜\L`z&NœHŒž*å!¥ºAx0ÉøñÇMÅöf»k×®týúuH¦›h¯Öfó{™¹vÊÛx4ÄïÂ,X #¬ŸÌÜ`dÂ…††ÊŒM›ã86l|4S7oÞ<ÉþLf´2ìñ §€Oz‚ïç>ÈRÝ!‚†3Ë„)à Èh}µwaà‡µävHk¦­p5Ó Åc†fN°ÿPé KÖ„G°£È\xPÌ—9YªüAKd© –ÒÙ3Îm5fè`‡µ„‘ 3¦9¦x&Ê\P„5&g’¥º9²>9JÁQ´•0rõƒçÍ…qÎÔd©nIw\ç¿ÛÎÂ\‡…9»&–ið³ƒ\X[³…œ"@ŽXв¥ÑFZûqÀ0aöãeŽÌÉ Ùíök´!@öãeŽÌéÿš¿×á¾EªdIEND®B`‚mysql++-3.3.0/doc/html/refman/field_8h.html000644 000765 000024 00000012145 14042362132 021144 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: field.h File Reference
MySQL++  3.3.0
field.h File Reference

Declares the Field and Fields classes. More...

#include "common.h"
#include "type_info.h"
#include <vector>

Go to the source code of this file.

Classes

class  mysqlpp::Field
 Class to hold information about a SQL field. More...
 

Typedefs

typedef std::vector< Field > mysqlpp::Fields
 The list-of-Fields type.
 

Detailed Description

Declares the Field and Fields classes.

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1StoreQueryResult-members.html000644 000765 000024 00000035154 14042362132 027554 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::StoreQueryResult Member List

This is the complete list of members for mysqlpp::StoreQueryResult, including all inherited members.

mysqlpp::ResultBase::copy(const ResultBase &other)mysqlpp::ResultBaseprotected
current_field_mysqlpp::ResultBasemutableprotected
disable_exceptions() constmysqlpp::OptionalExceptionsinline
driver_mysqlpp::ResultBaseprotected
enable_exceptions() constmysqlpp::OptionalExceptionsinline
fetch_field() constmysqlpp::ResultBaseinline
fetch_field(Fields::size_type i) constmysqlpp::ResultBaseinline
field(unsigned int i) constmysqlpp::ResultBaseinline
field_name(int i) constmysqlpp::ResultBaseinline
field_names() constmysqlpp::ResultBaseinline
field_num(const std::string &) constmysqlpp::ResultBase
field_type(int i) constmysqlpp::ResultBaseinline
field_types() constmysqlpp::ResultBaseinline
fields() constmysqlpp::ResultBaseinline
fields_mysqlpp::ResultBaseprotected
list_type typedefmysqlpp::StoreQueryResult
names_mysqlpp::ResultBaseprotected
num_fields() constmysqlpp::ResultBaseinline
num_rows() constmysqlpp::StoreQueryResultinline
operator private_bool_type() constmysqlpp::StoreQueryResultinline
operator=(const StoreQueryResult &rhs)mysqlpp::StoreQueryResultinline
OptionalExceptions(bool e=true)mysqlpp::OptionalExceptionsinline
ResultBase()mysqlpp::ResultBaseinlineprotected
ResultBase(MYSQL_RES *result, DBDriver *dbd, bool te=true)mysqlpp::ResultBaseprotected
ResultBase(const ResultBase &other)mysqlpp::ResultBaseinlineprotected
set_exceptions(bool e) constmysqlpp::OptionalExceptionsinlineprotected
StoreQueryResult()mysqlpp::StoreQueryResultinline
StoreQueryResult(MYSQL_RES *result, DBDriver *dbd, bool te=true)mysqlpp::StoreQueryResult
StoreQueryResult(const StoreQueryResult &other)mysqlpp::StoreQueryResultinline
table() constmysqlpp::ResultBaseinline
throw_exceptions() constmysqlpp::OptionalExceptionsinline
types_mysqlpp::ResultBaseprotected
~OptionalExceptions()mysqlpp::OptionalExceptionsinlinevirtual
~ResultBase()mysqlpp::ResultBaseinlinevirtual
~StoreQueryResult()mysqlpp::StoreQueryResultinline
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ssqlsxlat_1_1CommandLine__inherit__graph.png000644 000765 000024 00000012247 14042362133 032430 0ustar00tangentstaff000000 000000 ‰PNG  IHDR›\yŒÇ€sRGB®ÎéaIDATxí ¼ÅÇ[)K¡²TÚh‘d+DBE´E²´ÙJöBYKhBŠ”­l‰Èµ*;)‘•]\ç?ß§æôÞ·sÏ=çº÷:—y>ŸsμóÎÌ;óÌožç™gÞ{Ÿ CâÈq õ90"cê?Ã=Áqào8°9$¤ØÒŒÕîA™½,˜7ožTªTÉ›åÒŽÉæÀü!çœsN°~°ÅÅÅI·nݤgÏžÁ.á8,XPü`sj49œtu’Ŷd±ÍUJØ’Ã5W'YH`³%«…®´zõj9ÿüó%þü)Òò‘#GdæÌ™²uëV¹å–[äÚk¯M‘vS£‘E‹É5×\#;wî” 2H‘"E‚9pà€¬\¹R*V¬Ì‹$±aÃ;eÏ8㠹馛äÌ3ÏŒ¤jŠ—‰9ÉöÒK/É矞"ýé§Ÿ¤lÙ²òÎ;ïÈþýûeРA:YL\,R×®]eÓ¦MÚ_ú쥽{÷ʬY³¼Y¥,ýúõ“eË–iýÒ¥KË»ï¾QÝ”.5ØÆŽ+<ð€Ðé¢E‹ÊÀåꫯ–Ë/¿\X™Ý»w—W_}UûyèÐ!¹îºëd÷îÝÒ¾}{¹ð õú«¯¾Òûýû÷—‹/¾XªV­*Õ«W—5kÖdz7n¬å/¹ä™:uªÞ+Uª”4oÞ\òæÍ+uêÔ‘ƒjþí·ß.ß~ûm‚t—.]¤råÊ2yòd!=dÈyòÉ'éyôèQiÖ¬™äÉ“G¥Éüùóµ.+¿eË–rÑEéý-Z賚4i"œìµk×N}ôQ/m³8C¹råä×_•øøxiÚ´©Ž /X°@Û¥ϾôÒK媫®’/¿üRó_ýua|´ÅâHŒ>,ëÖ­ÓÛô‘öþÔc×Mœ8Q¥áW\!Æ Ó<¾è=zôPÐU¨PA/^¬÷  å™?@ 1WuëÖUíœìÙ³GÇÍB`œðéÒ¥Z6Ú¯¨Áöûï¿Ë”)S&Áà:èÀî½÷^Ì’%KʨQ£´sæÌQѽ~ýzùä“O”Yè7ÞÚÁÅBÙ'žxBU•Q%Ÿ~ú©Œ7N'°@«V­’\¹r €eriºñÆ%[¶l Ò_ýµ”/_^óì³gÏ–åË— îžúõëË3Ï<£E6oÞ,,’>úHÞÿ}•ˆsçÎÕë-[¶ÈŽ;(&L¤ ýŸ1c†dÉ’Eù¢X»v­ª¼Gy$èF¢҅磡C‡êYœ,ØF©T³ýôÿ6T"ôÍ7ßè"cžìØ1aa°€_|ñEyúé§eãÆZ6lØPî¸ã>|¸<öØcZgOš4I ãç#GŽ”ìÙ³kÝóÎ;OÇú?~¼.øÚµk ŸãÇkÛÑ|%ËfÃn`·mÛ&ßÿ½¦ÿüóOyå•W ÃÀ`.Œgr‘z?þø£tìØQjÕª%­ZµÒ‰¡›o¾YûËjôe±[øP÷‡~Ð"­[·–|ùòÉÃ?¬`ã^ß MgÊ”Ião—k@J}l8>Lø®]»´(“†äFº!EYùôÁJžzõêIñâÅ¥D‰‚? à 7è}ÒrôèÑHùå—àãiɆäl,Fœè5jÔÐ2L~$„=שS')T¨J¶íÛ· À;ûì³å»ï¾Ó&Ð"K–,Ñ4¼EJ±˜‘T}ûöU€-\¸Pë!é™?î_vÙeÒ»wo)P €Àg$¾W¤š+gΜ Tæ‰ E-Ùh†A3f”ܹskÚ~a|Ö¬YS6mÚ4âž!‘üq]0ˆX e´ž{î¹ö¶üõ×_*ÉȰùä!]#@î·ÿ‹à²r-!ìj 7>ʇ»ÿñÇ+˜Pm~c‰eΜYUÓÏ?ÿ¬êJ3Í—×Ûnóûõ·?Ù>HëbÅŠiu~1}Pÿ¨Wæ…òeÊ”´*kÖ¬Zöî»ïV‰ŽfÁ¼ArS–…kÛ|9räH¬k‰æ' l‰¶öÏ $MŸ>}ÔÖa¥ ª1JïˆcP­Z5 “ÌÄ£üÄñX±b…ªH$ „ÄÀ6š>}ºÚ[äfkøÛ4{ͪÔ`  Ói‡þ )SbŒ {õê¥R?Ü\ð€1bR !¬MÆxèv¥ýŽ\Œ“¤M›6*5YŒ^babs3'Ø]€“"Õè+„Í6ó³Ï>«¼Aòb& š‘ê˜'lˆw&"®Y]P•*UTÒ±­oРÚyW^y¥ª"TF«]©”·í z .¬+ ›‚|ÀÇfÎÁX{Änl KY~Q‰¨lÁ\ ؘ¨8Úa¢`rRdûª÷ø0f&êúë¯WSé…ë'Ê¢~1öQsHúbŸÁ& ضd(²ÏeLØ}ðóÿûŸJìXî³9@ ¡Þé ¥[o½UûÇ~ùå—Õ”`³ƒdCÝc Ùì0Ÿ´H(¶h(Mª ò šƒd:0"2xÜ„Y%³[ (Ø„Y©c8ŒÌ#aŒ|Í3ƒ ˜Õ¼÷üóÏÌÊ üöÛo}ûöó ˜0Ò0˜—TÂ4`€¨õüeiÇÛ¾ÿ~r®d kUÚöÙߦ±ð,%ÈHÉ€±§"jŠ9±|„§FMj=úoÔk¾yÉ,~o^biø€ñmzoOÖ!Z}ì±@?«Í+ Éæ'¯Ýä¿Ç5«ÑO´åµ÷ü÷ý×vUú󹎦PõCå±+¶;c¯ÄU–¼”Pß¶mìYkÓÚ¼Ä~½|DMòè;î?±é8Jq°!ƱC8ˆ†psx'¦mÛ¶!«£–0V¥?¤8ذ1¢ló¯F¶ñ¡()IªŽË‹ ¤Ên46†æzsðZpqqqü¥•û„áA–,çòä©ãx†GCÆ×è…W ®s7æD,u¨k׌kc¾ñ î4.‹¼±Ôµ˜ï‹S£QNÑ„ ËÍ®-“9³ý"Êš®¸[Xºô;ãÙ¯~¼|ø¡[¬Ó¢lQpl̘eæXçï# C‡Žš7O~ˆ¢¶+êÀ!Ž;nÎbWë>jΗEXÛƒlâ .n£q&ÿË®øøãæ]¯/݆*Bþ9°EÁ¨Ñ£—š·!Žü§Æ‚¡ÈÿSÐe8É °ÏæÎÝð)vðà3&y¯HGòÜS­Ì¿záTY ŽgÖ¬µæ…ÇÿžÇš—"ÌëìkÍ‹ñ)ø´S·)¶ævéÒoÍ‹‰™wË2ëàÙ4…-[þ}õ;‚æNÛ"8O8mGáÀ‘`Ö^Û°ágéÜy‚yã·•ÖΜ9£y÷ÿŒ[:­‹Hñ·>NEvf̘Áü¡ÇßïègÏ~¦Ù•þ{}*Ž7µÆäÔh”œ5oG›W¬ÿ~ý=ʪ§}q¶(!€ÑZu=آ癫‘L8°%“q®Zôp`‹’gÎf‹’ažâlfD’t6[$\ ]Æ-4_\n*pÀ-˜êš ͶÐ|q¹©À¶T`ªk24ØBóÅ妨¢d*®>Ž¢ç€[”<ÃõáÞ“‰’iÿw`Kß\­dpÀ-J¦¹„(æ)îÀæaF$Iw‚ —B—q` Í—› p`‹’©NFÉ0Oq63"I:5 —B—q` Í—› p`K¦º&CsÀ-4_Íu6[¢¬Iò†[’,JXÀÙl ùÍ•[4ÜreOŒÞÿ°›iƒ¿ƒK·Ÿ 22g>'ÝößòÞÄ;M‹éö>#á?p>1ØFVû{oŠX¥½utr8@¬*âµ_+-ɩѴäöiþ,¶Ói9|¶´äöiþ¬ÓlØ+þÀ¯'ĸdž”Ž9"«V­Š´xÌ•;-Áö /hê“=_|ñ…Æj´&öªF£N¬<Á}‰V«“ÿŸ­U«V‡}ñâÅb£/X°@£û:ºS§Nòàƒjô_0W>øàÍ#ú0ñN‹)¢!§‰ìGoݺu°Žq]èXŽeË–•víÚ‰ ,„È$Î+}Ž5ŠIÉF¸nTÆsÏ='Ä\?tè¼öÚkàLÔa K=þ|å%yLÞÌ™3嬳Β÷Þ{O˜0ò—-[¦¡¼yÄ¢÷ÒŽ;tr ¤á¨'Nœ¨Ïb’ï¹ç1å‰áž5kÖ`ÀW›ýû÷$%@5j”‚ΟÇ3ym~à™¨ÅÁ®¬^½Zc¶rÀJ?ªV­ª*–çÇýÎ;ïÔÐÛ¶à¬U«–†§þš5k¤Y³fºHï¿ÿ~[,¦~clpˆXåÄ‘'v)Ò¥P¡Bõx÷îÝR©R%AêAüà­@š?~¼Ô©SGjÔ¨!+V¬ÐI£níÚµµ¼ÿ‹rÄ0%f¼ ®·‰®Lìvê!‘ŒôÃJ ›&N:±çñ²¬±Óýy&:ìܹSÁFøòåË'芑PÔgátèÐAÛiÓ¦ØìŒÑK¨K¤ò¸qãt1° lšë¢ó–•tÌ‚ ð@„–Ι3g~­ „$Ä4àèÒ¥‹ìÙ³GÚ·o/Ÿ}ö™N  ´KÐÝPd£7;vLdóH{ó¹öáÀûöí«ÎÑÉ“'KóæÍõß×ûóL¼xUÓŒ²á±m[„&0`€äÈ‘C‹‡³÷W/Ì—qË+ ‘Þ¨Ì §mÛMíߘ[¸3É+VÔUÏŠç©€º}ê©§¤aÆ‚MS¦L™àî )ŠØ™B·råÊšÞºu«J‹ýû÷«zâ´ª‚lƒ½gÏž‚Ú,€»ÐŸÇbaqºøøø`Ÿ´1ó…I€X©Kß)úoÑ¢…¬\¹R¥«-tß¶m›ªnÆÈÆB,ŽX¥˜Ü „cÀ‚P¥“&M’*Uªè5’ {µH:wî,ùòåS›ï¡‡ÒIÖ‚ÿ|ÙvæÎ«öÝÁƒ…cœ¨äa’@£ vÚœ6mšnl:W®\rß}÷©ä*W®œJYõ)c | ºB?J”(!C‡Uµ/›B™×­[W²e˦ö#“ò¨}@Ö´iSYñâÅM”Àu3:1b„0æX£4ÿ×ôLÌ<ѳÑõë×ëxw—€éÝcÁÑ@Lv K¨[ób€–Ï;·ù/à™Tz½õÖ[*UÀIŠØh ½ê>TýL£GVUͳ-a!­P‰‰©|[ÖþbçÙ~³á`„d£­pm°¨°QÙ=§!¥ÏM?}út°–-[&à»Ñ‚ &ÈãIΉkí:oE&+Ü„yˆ²™BåÑ¿Ä{ŽÍC4äí7@ƒØ Ä*ÅnÏÂp Š}e'v ª·Ÿ;U/aáÆð›>}úx³R4Ï ›rãÆjã¡*-!ùP×'*õm{±ö›1Ö:IP‰hø8qÌîÛ·Oý^8OC‘]ýöžuØk~Q¥Þݨ÷^J¤{ôè¡}2dˆÎÛ&‹%±Œ·\zM§+ÉÖ±cGÁ÷„Mb½ùxô1¼ñ¢[;v¬º@(‡”b‡X¸pa5ð=ªN6oÞ¬vR‘hƒ Ô–IêƒvqOà—ÃõÀ.²X±b z|ƒsæÌQuŽS÷eY ¥J•Ò¾Û~úQõœ•bäã»C¯[·NwÞmÛ¶ÕÍÀðáÃu犭Ƹ‘Äé…Ò•dƒ±¨=ëÁg×¹k×.)Z´h~׫WO g<ñL n ø)S¦˜øî„ÛþJJ—.­NÚaÆ ›&“c'(© T! `#SxäÈ‘Zoûöíê÷Ãã¿wï^=ÁÀØ{õê¥àñn\´’ç °qÊAg… ´›Ü¨ØyóæéÂõÓ­[·°àõ4Ét%Ù¼Ûy¼ù¨Ç.`ò’‡ áD€òØh¡‚kÖ¬©¾4$»TvqL¨¥p'HQvž³gÏVàb3B‰&®Þ‚eg p«U«¦.ì³3fØG„ýÍ›7¯]QˆÍmr6øû̚Ŗ?þ°mÅÊÍt%ÙüLƒáL uÌrê×€µÓÈÇí1‘Øfì^¨\¸Œ…  ¶’ÕoÌ[[’öy&'v@ÃI6íÜ?_¶.m[Ž4.>5RÐyëÅr:]ÍŽõæßvÛmÂQ̇¦NªÂvÂFP\\œ^ëÅ ~¡âªW¯®~*Þ²ð:iýMã|E"t~½eÉC¢ò± Á_ß{Dlõë××Ý8êÕ JoÙXL§+5ÊëEØCèփ߸qc}=wÄdtïÞ]Ó¾³3åm ì!œ™á(©CN-°Áx«)‰ôâ¸ËK”ãƒmÅ)'¨^¯ïŽ7E,q±%F´py»É·‰1 ¼í%V7VòÓí ‚Ÿ€‰Igò™/áÍ'?”ºô–‹&tÅVDE’äá&ž·>عÚÃøhžå/‹yÀ³¬‰à¿ŸÔµ;AHŠCI܇ùæ¡(”7?T¹hòP_V…Ùßpõë[¸:‰Ýóž$V&óÓ•Í‹ t}Šœl‘óÊ• MySQL++ Reference Manual MySQL++: Namespace List
MySQL++  3.3.0
Namespace List
Here is a list of all documented namespaces with brief descriptions:
[detail level 123]
 Nmysqlpp
 NexamplesStuff related to MySQL++ examples specifically
 CCommandLineCommand line parsing mechanism for ../examples/*.cpp
 NinternalNamespace for holding things used only within MySQL++
 NssqlsxlatStuff specific to the ssqlsxlat tool
 CCommandLineCommand line parser for MySQL++'s ssqlsxlat tool
 CAutoFlagA template for setting a flag on a variable as long as the object that set it is in scope. Flag resets when object goes out of scope. Works on anything that looks like bool
 CBeecryptMutexWrapper around platform-specific mutexes
 CScopedLockWrapper around BeecryptMutex to add scope-bound locking and unlocking
 CCommandLineBaseParses command line arguments and holds the results
 CComparableMix-in that gives its subclass a full set of comparison operators
 CConnectionManages the connection to the database server
 CTooOldFunctor to test whether a given ConnectionInfo object is "too old"
 CConnectionPoolManages a pool of connections for programs that need more than one Connection object at a time, but can't predict how many they need in advance
 CDateTimeC++ form of SQL's DATETIME type
 CDateC++ form of SQL's DATE type
 CTimeC++ form of SQL's TIME type
 CDBDriverProvides a thin abstraction layer over the underlying database client library
 CExceptionBase class for all MySQL++ custom exceptions
 CBadConversionException thrown when a bad type conversion is attempted
 CBadFieldNameException thrown when a requested named field doesn't exist
 CBadIndexException thrown when an object with operator [] or an at() method gets called with a bad index
 CBadOptionException thrown when you pass an unrecognized option to Connection::set_option()
 CBadParamCountException thrown when not enough query parameters are provided
 CUseQueryErrorException thrown when something goes wrong in processing a "use" query
 CBadQueryException thrown when the database server encounters a problem while processing your query
 CConnectionFailedException thrown when there is a problem related to the database server connection
 CDBSelectionFailedException thrown when the program tries to select a new database and the database server refuses for some reason
 CMutexFailedException thrown when a BeecryptMutex object fails
 CObjectNotInitializedException thrown when you try to use an object that isn't completely initialized
 CSelfTestFailedUsed within MySQL++'s test harness only
 CTypeLookupFailedThrown from the C++ to SQL data type conversion routine when it can't figure out how to map the type
 CBadInsertPolicyException thrown when an insert policy is too strict to create a valid INSERT statement
 CFieldClass to hold information about a SQL field
 CFieldNamesHolds a list of SQL field names
 CFieldTypesA vector of SQL field types
 CSetA special std::set derivative for holding MySQL data sets
 CStringA std::string work-alike that can convert itself from SQL text data formats to C++ data types
 COptionalExceptionsInterface allowing a class to have optional exceptions
 CNoExceptionsDisable exceptions in an object derived from OptionalExceptions
 Cnull_typeThe type of the global mysqlpp::null object
 CNullIsNullClass for objects that define SQL null in terms of MySQL++'s null_type
 CNullIsZeroClass for objects that define SQL null as 0
 CNullIsBlankClass for objects that define SQL null as a blank C string
 CNullClass for holding data from a SQL column with the NULL attribute
 COptionDefine abstract interface for all *Option subclasses
 CDataOptionDefine abstract interface for all *Options that take a lone scalar as an argument
 CCompressOptionEnable data compression on the connection
 CConnectTimeoutOptionChange Connection::connect() default timeout
 CFoundRowsOptionMake Query::affected_rows() return number of matched rows
 CGuessConnectionOptionAllow C API to guess what kind of connection to use
 CIgnoreSpaceOptionAllow spaces after function names in queries
 CInitCommandOptionGive SQL executed on connect
 CInteractiveOptionAssert that this is an interactive program
 CLocalFilesOptionEnable LOAD DATA LOCAL statement
 CLocalInfileOptionEnable LOAD LOCAL INFILE statement
 CMultiResultsOptionEnable multiple result sets in a reply
 CMultiStatementsOptionEnable multiple queries in a request to the server
 CNamedPipeOptionSuggest use of named pipes
 CNoSchemaOptionDisable db.tbl.col syntax in queries
 CReadDefaultFileOptionOverride use of my.cnf
 CReadDefaultGroupOptionOverride use of my.cnf
 CReadTimeoutOptionSet timeout for IPC data reads
 CReconnectOptionEnable automatic reconnection to server
 CReportDataTruncationOptionSet reporting of data truncation errors
 CSecureAuthOptionEnforce use of secure authentication, refusing connection if not available
 CSetCharsetDirOptionGive path to charset definition files
 CSetCharsetNameOptionGive name of default charset
 CSetClientIpOptionFake client IP address when connecting to embedded server
 CSharedMemoryBaseNameOptionSet name of shmem segment for IPC
 CSslOptionSpecialized option for handling SSL parameters
 CUseEmbeddedConnectionOptionConnect to embedded server in preference to remote server
 CUseRemoteConnectionOptionConnect to remote server in preference to embedded server
 CWriteTimeoutOptionSet timeout for IPC data reads
 CSQLQueryParmsThis class holds the parameter values for filling template queries.
 CSQLParseElementUsed within Query to hold elements for parameterized queries
 CQueryA class for building and executing SQL queries
 CRefCountedPointerDestroyerFunctor to call delete on the pointer you pass to it
 CRefCountedPointerCreates an object that acts as a reference-counted pointer to another object
 CSimpleResultHolds information about the result of queries that don't return rows
 CResultBaseBase class for StoreQueryResult and UseQueryResult
 CStoreQueryResultStoreQueryResult set type for "store" queries
 CRefCountedPointerDestroyer< MYSQL_RES >Functor to call mysql_free_result() on the pointer you pass to it
 CUseQueryResultStoreQueryResult set type for "use" queries
 CRowManages rows from a result set
 CScopedConnectionGrabs a Connection from a ConnectionPool on construction and releases it back to the pool on destruction, and provides access to the relevant Connection pointer
 CSQLBufferHolds SQL data in string form plus type information for use in converting the string to compatible C++ data types
 CSQLStreamA class for building SQL-formatted strings
 CSQLTypeAdapterConverts many different data types to strings suitable for use in SQL queries
 CTCPConnectionSpecialization of Connection for TCP/IP
 Ctiny_intClass for holding an SQL TINYINT value
 CTransactionHelper object for creating exception-safe SQL transactions
 CNoTransactionCompile-time substitute for Transaction, which purposely does nothing. Use it to instantiate templates that take Transaction when you don't want transactions to be used
 Cmysql_type_infoSQL field type information
 CUnixDomainSocketConnectionSpecialization of Connection for Unix domain sockets
 Cequal_list_baHolds two lists of items, typically used to construct a SQL "equals clause"
 Cequal_list_bSame as equal_list_ba, plus the option to have some elements of the equals clause suppressed
 Cvalue_list_baHolds a list of items, typically used to construct a SQL "value list"
 Cvalue_list_bSame as value_list_ba, plus the option to have some elements of the list suppressed
 CWindowsNamedPipeConnectionSpecialization of Connection for Windows named pipes
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BeecryptMutex.html000644 000765 000024 00000022372 14042362132 025401 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::BeecryptMutex Class Reference
MySQL++  3.3.0
mysqlpp::BeecryptMutex Class Reference

Wrapper around platform-specific mutexes. More...

#include <beemutex.h>

Public Member Functions

 BeecryptMutex () MAY_THROW(MutexFailed)
 Create the mutex object. More...
 
 ~BeecryptMutex ()
 Destroy the mutex. More...
 
void lock () MAY_THROW(MutexFailed)
 Acquire the mutex, blocking if it can't be acquired immediately.
 
bool trylock () MAY_THROW(MutexFailed)
 Acquire the mutex immediately and return true, or return false if it would have to block to acquire the mutex.
 
void unlock () MAY_THROW(MutexFailed)
 Release the mutex.
 

Detailed Description

Wrapper around platform-specific mutexes.

This class is only intended to be used within the library. We don't really want to support this as a general purpose class. If it works for you as-is, that's great, we won't try to stop you. But if you run into a problem that doesn't affect MySQL++ itself, we're not likely to bother enhancing this class to fix the problem.

Constructor & Destructor Documentation

◆ BeecryptMutex()

mysqlpp::BeecryptMutex::BeecryptMutex ( )

Create the mutex object.

Throws a MutexFailed exception if we can't acquire the lock for some reason. The exception contains a message saying why.

◆ ~BeecryptMutex()

mysqlpp::BeecryptMutex::~BeecryptMutex ( )

Destroy the mutex.

Failures are quietly ignored.


The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1LocalInfileOption__coll__graph.png000644 000765 000024 00000012532 14042362133 030461 0ustar00tangentstaff000000 000000 ‰PNG  IHDR‰Ï»³sRGB®ÎéIDATxí ´UÓÇwdЍ(IhP*CE!ó°ˆ…•2e ­¢ËPdJ†¥ÈÊ¿‘Ò`ÊL½•$*$ %¤áü÷çǾ{ÞÙ÷ÝWïÝwï{¿ßZ÷söÞgŸ}¾û»û·Ï¹ï~ËÖŒš"PÊ¢¬U%¡Ð(i ™ž°m¦ ¨P¡‚ùçŸ2u¹2y¯¾úÊì·ß~Å~ï#ÍÆÍúõëͶÛfì’Å^6]à„N0_ýuFH£ÓS6õ|Ž´EI“#•MÍTÒdSoäH[Ê iþúë/3mÚ´"í–/¾øÂ :Ô<öØcæÝwß5é>']»vm‘·¥Ho¬€ÊÊ i–/_n.½ôÒàH?ûž{î1't’™>}ºùþûïM¯^½LÛ¶mÍüá­äª«®23fÌ0«W¯6o¼ñ†·\Ögð!¶Í6Ûvõ”òRGuT` öÚk¯ K—.Á•W^ì±ÇA§N‚+V7ì(•:ÜqÇí„ uëÖAµjÕ‚®]»JÞ²eË‚6mÚuêÔ :wî,uÙåhP¯^=É?ôÐCƒ+®¸Bê>û쳥Χžz*¸è¢‹‚&MšÈy&L²‹- ,9däÈ‘AïÞ½ƒÏ>û,¨R¥J`‰(éî%Mp÷Ýwqu=ûì³AåÊ•ƒZµj3gÎ Î<óL9í½÷Þ 5jìºë®%µ`4bĈà’K. h'X<ýôÓîÞíñǼþúëÞü¢ÌÈ*Oóå—_¦‘qãÆ™aÆɨ}çwä˜ÌrýÍ7ß”8|øpcA5}ûö5–T&//ÏØ0L 0µk×6o¿ý¶ùî»ïÌ·ß~›4xçÍ›gl'™9s星þÙ¼òÊ+Æ’Ò¼öÚkfôèÑæþûï7–rÎ;ì`š7o.û5kÖ4õë×—ó4h`jÔ¨‘Tï1Çc>ýôÓØºÎ;ï$°#ZHõÏ:ë,¹Ö9çœ#„…lv¤›Ûo¿lÓªU+Ó±cG³aÃó÷ßKZøÏ?þh¶ß~{IŠÖõÓO?IÞÎ;ïlÊ•+'e ìÒ¥KM·nÝ„PÜïK/½$y§všàÀõ ~6YÖ‘¦nݺ‚OùòåMÕªU“°¢3'Ož,ÄT:¨ÿþ†Ñ:uêTñt Ûi@ÎåItœí²Ë.’ÌSjb Ì¥±O:g^O„¥S—FÅã¹:6mÚ$„äØN’ŒwµS‹+’Û¬#M*Tößcc! ^ÃÛðyùå—M»vídUrâ‰' ‰ÈwÓûacÚã)5$´1…dÑétܬY³ ÓR³fÍÄã¼ÿþû’O'/X°ÀqÄBŽ~ýúIy2ÇŒc/^ll %eãê"ƒ§âΚ6mj~ÿýwóùçŸË´®‡‡]¹r¥áu@Ô\»£é%v\”QuªºÒY=¥:ßåÙé(°ìekc‰à›o¾IJ³q‡¬n^}õÕÀzž¤<ëò;ý6fI¤[¯XB¿üòK°fÍšDzA;v* ì;Ÿ¤b©ê²AnRYl|X/X2çËK7!“«§œz{xíµ×JK 6»,ʾ%©¬nX)ÅÞÂÅ=áüÝvÛ-|Xà>»Ïâê Ç:î<â.¼^®X9˜œ‰Æбâ`»¥Æêd÷Ýw7"]#†øóÏ? «gÖ›H=î˜-e0–Ã[kEYWºmaZëÑ£Gìô–né–ÛòL÷ EXÎÅ …©r»í¶K" çB¼¨Y\EY—«3›¶9ghe½-›žré›{¬V*Ujh§ÓÅvIýWÎp$Sßܢ§Y·n<¤"„ÊöÏ’%?Û)íx3dÈëYßÖ0–™øª'#(c¤É™áj:vìLû´y[ûþëÃ\jvÆÚª¤‰úÿ˳¯6Ø+Ͳe¿Æ”(ÛIJšHÿ/X°Ü>ÚÿwùÍÈ1cfFJè¡’&ÂH²~ýI]·n½1bz¤„*i"=z†%ͦDêªUkÍ¢E+Ǻ£pòòÛ¯&l& ™"©mF@=Íf,ÌÈ‘yöuBò2U¥qM&]r;06nÜd&Mš›ø~ŒKgKl3{ö7á¤2½¯žæ¿îŸ;÷;³ví?f§*ɧJ• v[Qöy€6aœ2M”ðÍgì5Bø¢Ùº?cÆ’ÄôÔ­ÛÓ³çɦzõߎ·lY×T¬¸]¶6=£íÊ©·ÜÅLóæ›¿ÓR¹òö¦E‹ºö{.ù߈w;²½~ž²½‡²°}JO§”/_Î~GØ“YÆ“•4دëÚ7ÜžÌ2ž¬¤)ãØ’ÛWÒxPÓéÉŒMVÒx°ÑéÉŒ’ÆŒæøPOãÇFs<(i<Àh²%Íñ  ¤ñ£É~”4ltÉíÆ&+i<Øè’ÛŒ’ÆŒæøPOãÇFs<(i<Àð†[ßrǃ£¤‰ÇEÞpë[îxp”4ñ¸hj ”4p˜šXv«åG@I“IajbÙ­–%M~L4¥”4€ô‰°›¬¤ñ`£O„=À(iüÀhŽýK~Ö=îçYýÍÍ\NåÊÙjüÊÃùÕV2׊ø+}ôÑGò³þñ¹ÅŸZ¢ÿaÉ@£E`…¸ŠÿNKÉù)iÒhLSJÈ”ÉÛPÒdíRr-%M)éÈLÞFN‘.‚æ’²-•R¦½o½õ–¨Ô•TÛ‹ãº9AD¿>þøcïý“tqqØ–H)[µ\3hÐ ijqqz—ÅÑÖŒÕiå©ÄÌÊðvõTàõ­B\`u¬ƒ8éá°t± ¬â›Ô‰œò!C¤nûûÁe—]&òÆÈ6·µRȘ• ¬´``•áDž hΧ¬_ ¬P{J)å¹sçgœqF€@—Uˆ ¬šÈ/ÛÇÕz ,aäZYíîÀ*ÈVBHÒF\ 3ä–‘’¶ä—v¥úƒ@Úƒ>˜ªH±çå„§q#(Nz8,]Œ^çá‡6÷ÝwŸý%«ž¢‰pºÕÒ6V·Z„EgÏž-UÞtÓMæä“O¥ÝiÓ¦«m~ûí7óÜsωÊ.—©¤”‘E´úÝæšk®9g¼ m°¤3Vã[ô(‘\FsŠ6!=„GDÞùñÇ·¿å·Nä‘PD%÷ùçŸ7?üðƒ»Ý¬Ýæi@1*=\±bÅ„t1ºÜh-Ù,z–È#óL½m+/¸ñÆ¥3òB·S: É?üW ÁŠ·+önÐŠŠ›ZÂRÊ!¥¼Ï>ûÁ¬½AØ5Û䔬ȟœ#M*éa§£P åsþùç‹(*"ñ ã 4§È'ã§ìa‡fì4!eœ¼aQI)ÛùBÈàž~s}´½1w?ìg£œ2íŠZΑ&zîà!Ö®]kкD×­\ƒ' ¥³P¹E¿’N:Jµ7ß|³¬Î–Xåܰ¥#¥Ì´‡P;Äc•‡v8F{œ¡…\ 2ÐrÌÈB窕èk„­ÍI;éb4³‰%6DàëoÓ¦MyGƒ8© €E•)Ëwë­·šsÏ=Wš'"®™8qb"ßI)S†X¯€×`ª!>A” ÏÖ¼ys!+rÏñC1;v”ë»{D‚™6Üu×]Ò6â¬8sm‹ËËš´bµS\ ÝÕSŠ*YaéböÃ’ËVX=àƒ¬²o?$Î#;û lЛH‹Û‰“R¶ž%8úè£;ÅÈ<‡Íz¼™ç¨Y¢I;¢éégÃê)§=Mxä…¥‹Ùãì2ۣ̜9ÓþœýÈÄ©»³Y*)e¼”‹™\=>ñÓL©¿¹vǶÔ&8Ä.V¸]Þ¦£]©R¥TÅÓÎkÑ¢…LgiŸPJ – ÒÐWhyë¥±Ú {´¢¬;›ë*5«§l¹´µ­D= Ï-x˜m+Ú“ÍË<°,I+QOcßÏd¥„q¶K,·lÙ²$9£ÿ‡¾J,Ç¡²9­D=ÍæfdמJ,§î%M•XŽs¨¤‰€¢Ë@b•4PTb9HÌ¡’&ŠJ,‡ÀH±«¤ £Ë!0Rì*iþG%–S°$’¥¤ù•XŽ0#Åa‰þ@Šv•H–J,§{‰¾{J¯‰™+¥Ëéa­ÓSz8i©Jšá]ýù´0ÉûJšd<Gúói (òí(iòA¢ ! ¤ñ ¤Ó“›¬¤ñ`£Ó“%Íñ# žÆæxPÒx€Ñd?J?6šãA@IãF“ý(i<Øè’ÛŒMVÒx°Ñ%·%Íñ# žÆæxPÒx€AÃ’Z~”4ù1‘4,ù¨åG@I“M)% ¦&–ÝjùPÒäÇDR˜šXv«åG@I“M)% }"ìÆ&+i<Øèa0J?0š“ð/eO:•ÈO?+±”/_Q±°X i¶¤ÿ°´¤m‹/¾8Í4«,!°páBóä“O&ݲÆ4IpèA:(iÒAIË$! ¤I‚CÒA )¦Iç„â.ƒ” zü0õÖ"XíÚµ·¶ªÄùèNZÉ!sðÁ›¥K—ŠæB­ZµùÑ+x**vVð4¡"‡ö%Â>³rBÆŠª+?$84iÒDñ|åÃéhP¡‘Yø…ë ïg§AV'•œr¸ñíOž[±b…ƒA~ÎQSô2Q·óç\}õÕfôèцóÐÕD)½MŸA„^1§tç+[é…ö44þƒ>0V"XDÊO?ýtQ›E“aÏY³f‰˜(jlŒJ°’Àæ…^gÄQ‘OÀ5j”xTRP^sF‡òÉ'¢Þ†Ä ÊlGy¤’"ŃÈ)#)A´–4E‚å8·ïêŠnÇ/í±ËHsá…ÔjÑ´Dõm‰•$DϲwïÞfÕªUfÀ€"ùC{I‹³åË—›‡zHTæP·kݺµéÖ­›Aà PÌub¨áó­p™AÙDô6O=õTce¡E™^gàfVÌtíÚUdÃ÷߯_?!$Ú›\¯zõꢑ‰B/רZµª´ïÈùõëשFTðúöí›ð€îzm íiÖ¬Y“`£FÌàÁƒM=L«V­DnÁ­)S¦ÈuñÈÛàf§OŸn¬†¶iß¾½yñÅ õ eܧOé4Ä»ÂÊ´t£Òj]‹l²[ö1ªä9ä¼¼<¹²t ù裚wÜQ˜ÏƒDNʘ ŒZX~˜éÏ‚¹tÒÐ×.ŒS¤3¦(êt2F's ×ñJÜ.=•…;Œ©–zSí £ñ||ðt0ØBì°9‚U«VM’Ó¹ÿè}B:×&×ÖtÚn‡Ûß"Ò¸“}[ˆB CϨC…AuÜ0ó<^†‘>þ|At1RÔXA0ß[aR•NkrΜ9r£©N:ruá°ð¾ÓÀ†|ð„œOGA\G¦â§£Ô¿ÙgÊÁõ3²)ç@—‹lå¤ ™Ž‰§¨LhÞ¼ˆ­0A1Bñt2wÿœ6î“û,ÔM\ãÙÁ¢E‹äçŸ>øˆ“´3²†’‚@Ò}ºäÏŸ_¾ýö[ùðÃeéÒ¥J†^xA„Á¤lûöíeòäÉ$àà 6ȤI“d̘1‚êÞ½»Ö¹páB)V¬˜@¾7j½d0p,EX­Zµ¤P¡B2þ|%¥&¦ÿ9ÿüó…åkÍš5V×ÓO?-gu–téÒEðXœï´iÓdîܹºäµhÑBzô衵­[·N¸÷E>ç=pà@S|;¥ˆ^x¡0õë×טÁÛ^¿~½0ÛW®\)€Š—À+àÖ®]«ƒQ¾|y4h.GW¯^=¹æškäŒ3ÎØ è&MšH¹rå´ŽmÛ¶é`Sèž{îQ’ÜvÛmÄÁ;Q!‰‘þý÷_%‰&¦ÿÁûáA 4¬«H‘"røá‡+ñÒÑ6h BõìÙS–/_.¿üò‹f·k×N=NóæÍSnYK9âàš±C=TŠ/®ÛÞŸ HãÆ•4&LÐAg?ûì3õwß}·6±Ë”g´¢E‹f$íܹS= ^:i[·nÍ(Ü8ýôÓeêÔ©™’YfðF't’¦g¥.¼Ó±Ç›Q„ܽ{·îuÔQú/_>½išQ(6RŽ8ñ0ÁË<ù䓇0xãÆ“aÆ ËqÁïå—_®db˜ï¿ÿ~¯jgΜ©4oÞ<ìsÏ=WË|òÉ'òßÿÉĉ5æ qÉ’%ê娆¤Û·o¼Äرc5ô?ÿüSž{î9q;ì0’$¬.<’ßð¢LÚ¤ïÇ|®¸ÒÊ5—ã<ç ŦM›4vaÿâ‹/–®]»j Qˆ‹X²ªV­ª5ª7s)ïÕÃòvæ™gÊo¿ý&Ò¤3Ó ´Yºˆu^{í5шvXz5j$Ÿ~ú©\ýõzáðzÄDºOŸ>zLX]†¥– ß3â·ñãÇ A:KKm˜yýË; i¼È• sƒ“æžUíwSîJ'ÍÝÿHs gÔåfkšó i.0ÍHcà ¦¦Õ¬Y3Í]þfäõîÝ;ÍÅiŽ4iÎSd¤»%!Í-QiÎKe¤ÅÛpWwÚ¶#[¦¢QuQ°ŸH›þ¾dª, ;îUš»ÍBÉì)’k<³Šû \®s/ä¸ãŽË˜hÄC\ÊÍ;óØç8hÔå‚ùÁý#Ž8"´mÊ…ÕEpf‰´v|²Órq¸§ClÂÝßDŒKoÿruß}÷…ÎÓe/> -@bvÖ•@³I+š«ˆÃen¢¤IïêÆCµ`Á‚Þf¦ïx*Sá8;ÙYWœ¦Hv®»ª: (Y£{#=¡RüZN]ë¹æ“/_±´#Ž8#×ôl/½ôÒø‘M%¡ž½éd):Œt÷iæ¹gJÏH¹jEOÊàÙRóÿívϲ»ƒܳ¢¥!%,ɈÂY³¾w—Òâîÿã”Î)aIFœ@–?ÿÜ©9³g¯tw’ÿ )•·“Œ8ñß±c—{f´Ì¥î ýòç?Ì=Á^(e»Fœ¦N]ê^‹Øó’,¼Ío|(e»Fœö,S;2¥.Y²Ö½i¸-SZ^ß1âø°uë÷ÖÝ*_ÊžMC¼÷ÞžWR÷ÊÌ£ FßÀOœ¸Pòåûß2åeýý÷N·\}áíÚ·CÀîlùh0dÈ,Ý+\øÈôSæ 7凉—Á6ȯ¿nuOå ûŽÈ»›vçØ7ö›6m—E‹ÖjÊüù?¸7øþϽv¹î{ìQî?/Nô•ÎÛ›æq|ã_¼x!©_¿œ¦ìÜù¯û—šµû¾b¶é°Çh°Oq"`ãç=ñMD<žlĉ ï ìÞm/DÀcKU0–ó8øØRLz²'[ª"€1âÄÆrc#`'6>–€'KŽ€'6>–€'KŽ€'»&=Ùˆ]ŽGcĉ ŒåÆFÀ‚¡“Hûì*|@–*ô n½õÖôÿÏÎ~)eÎ~×½k×f'¦¶b¿ëÉŽ¾DÕñÅ_È?þÇ5äLö!NΜŠÕšLŒ8ÉDû jˈs f2O%e­í&¿€i5BÕ^âe’ÑñÚ·ü”õ8¨þ"“ˆ )ªthh"Ìš¨™dt¢ˆe­|ʇÔòã?.N$MUðHGØÕé¨* Êuˆ»b P­)¤¤‘žöW&=ôæ#íŒî7†œ!úáèh"­ZµJ%§!+¢òwÝu—¦ç´dô\ ÈF£¸wÑE©ž¹6œ‚Rš8HC·jÕJ% ¼;î¸C!D ‘ýꫯTii„WQè2dˆ !ýÄO¨D¢‡9rÏhv¢|íµ×êùC X–4$ñnÈ1¢qqÐü|ã7ý©œ–ŒF;­sDaQþ裼î§ÜwÊÆ8 …‚bóhm¢äûì³Ïª.&:ã¿£© Y®»î:Õà¬[·®JLsì¨Q£2ž9*t,… Öášä|b%®úõ×_µÝSO=Un¾ùfªRùi”…éºâ~ “ŒFÕ“Ÿæ;–d4²ÑxGÚFw³[·nRºtiõ8´™ª–Ò¯‚”"ˆ°*ÀâÔÃkxj¿^`{éðÃÏÎþñÇúyøá‡U5%¯©üúä~E=O¾9¯KF{XòÒÄñ:Š´ò»ï¾«k~… ¤aÆîw‡ßÓl–fäšY²Pø%†!þñìÊ+¯Ô™ÿÀÈ 7Ü Ã‡×¥ŒåðÍ7ßTφæ'±P”åuÉh?.)»Tá]f̘á~Nm·ñh‹³ tìØQY‚f–Ž)S¦¨TtýúõU: pÈá ¾R²ÓÄ*x $£ º ¾IGÂp:˜ôd[ªBð1ùèPIFœ ìš|t($#NvM>:”@’'ˆÉG‰Ø5â€1ùè »Fœ0&$b׈ãÆä£}`ÄÙ4âø2ùhq6sõÓñ8ç–p¶ÉGg2»sìÃÊä£}`ÄÙ4ãÈä£}`ÄÙ´'@–Ž€'÷¾¯{ËÍýœ›Y8Fœp\ÜËë&&qb¡cy‘q" ±¥*˜ôd#N>¶TEcĉ ŒåÆFÀv9Lz²'»ƈË€yœØøXnFœ`ˆqø˜…#`Ä ÇEŸŽ瘅#`Ä ÇÅRã `ĉÈ.Ç#€IO6âDàc—ãÀqbc¹±0ÉGG“žlĉÀÇä£#€1âÄÆrã àÿG÷ø)/—ìN')}Ì-òÑÉ£|ùò~ª¤eúON´PjAÚÙÌðظq£êgxû|[ŒãGö³Œ€'ËPYA?F?¶e2Å8Y>* ®\¹REZ³¢â¯›6m’ 6¨–U¼²9•d":›hc%b;wî„׋³Ï>;C0^=ûÚf¼zýù)çqÐÒôëû;›èöâÅ‹U8ê8§w¥âiQùû“Þ¶m[AÙE™åË—'TdG¼v̘1ªâçt©T:ÅâX¶?mƪ7,/aCçDE¾YqÕUWÉøñãU!ÒyóæI¡B…T`5]èÛ·¯Œ9R¥š‹)¢‚¥è_¾óÎ;2zôh9å”ST/Ó“o¦£'NTe^wûöíÕשSG§\¹rªØË,DÒý¨.]ºÈ½÷Þ+èQyÛþF~Ú]RÊôéÓ¡ÖÇ{Lz÷î­‹’^³fÍTÐuáÂ…Z×®]e×®]òüóÏ«,£Q£FZæ»ï¾SýÎîÝ»«wä<—-V¬˜Š¸¢NŒ¢/}ã<À+¯¼¢ÊÅM›6UÜÀY¼ ÊÅhˆ¶hÑB7n,ƒ ’sÎ9GÕ‰½s@¥|‘˜æ\‚ „l“c°w×ÒÒ²eKU6~ùå—•Ô³gÏV¹Éž={ª0®×VV¾ö8Èz3 R¥J HçÎ^”vQæ:uª¶ç@w‹Fæ°aÃT;sìØ±B=¯¿þºôèÑCOfîܹ™vYf€^½z©pýàÁƒµNˆ„Ð*û[¶lQA{2*V¬¨ nëAîb®iit;çÌ™£$,S¦ŒJ&BTDa!9D|ñÅ•8ô9!ÉÑGÏ“å)jH=bÄU(¾å–[´_È\#‹±år–ž6mšvêüùóëy@LˆÀ¤8p ¬Y³F P­Z5¯ëú]¹re%*Åa„µIßÀ˜‰DôÓ©û©´ä²eË”¸ô‹óHÔ& 0Ó‘=®Zµª~{ÛH)W¯^]å ‚Õ«WO½ûÌ:¼ DƒT€AÌ"¿Jw‘òÔÁ 3s1¼ƒ‰´´'<Ͻ'/.òo{u1( Ó³™€€ûÈ#T/Z¼xqY°`’céÒ¥z(eÚµk'%J”6mÚ¨~'²ÌîÍ›7«y•*U4†á<ðTöŽ>úh¯y©]»¶¬^½ZAÉø"'Hw£ìºuët09'Úe‰Ã›û ²“N±  Ü«M¼?cU£F ż™0ØÕW_-¥J•Òt°HÔö‰84ˆ!´Š†·ß˜I€„äà3 Ì`€ìׯŸºˆä‰­r<ÚÜAóK8ã ð0˜—NgV ‚`ÈHãºýx¤1K„æÍ›k6çGyŒå€Ì9²ìaÄ#,Íž1øa"¬´Í‚ doР’"Ð&T‹ñ€àË ûÍ#Ʋ‚çDhàçù°XXxåc}ïqbUHda]eÍ'æ˜5k–Lš4IÝ1óx@$xåDð$ÄLAcýgí'¦`f² bxŽcJ—.­iÔ…WÂüÛšãäà ;ËÐM7ݤ}^²dÉ^G±œc1Û‘f ð°Ä KÀoÛ¶MÓ<À¡ÿ^¿C+KOäX¼BÉ’%3ãxúƒÖº¿ž( ¢ÚcÎ1Œ4™ŒØa£õέϲÕãP)?—ºÌNG‰‡˜¥Aó¯ÁÁ<öÃò¨ì õ{Á&ÛX˜¼ôžœ=‹-š±ë~½˜ÃË„@þÁöÒþ96x<å sfä…aÕf†Ô±?–íÄáIÿþýõþF"ó–ï/8õö½ïqãÆe¬ó^Z^ûN ²8\ùgeV58ã†Ã,'fOX;©œ– äÈUU*ƒn}Ë&\„ža3ì À¤¼]è†.×µ|0ÓUU6qѪÉØR•9'Nш“¨æ:8y`sâÿõw{ÔL2¶IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SetCharsetDirOption-members.html000644 000765 000024 00000015356 14042362132 030132 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::SetCharsetDirOption Member List

This is the complete list of members for mysqlpp::SetCharsetDirOption, including all inherited members.

arg_mysqlpp::DataOption< T >protected
ArgType typedefmysqlpp::DataOption< T >
DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/structmysqlpp_1_1RefCountedPointerDestroyer_3_01MYSQL__RES_01_4.html000644 000765 000024 00000012454 14042362132 033263 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::RefCountedPointerDestroyer< MYSQL_RES > Struct Reference
MySQL++  3.3.0
mysqlpp::RefCountedPointerDestroyer< MYSQL_RES > Struct Reference

Functor to call mysql_free_result() on the pointer you pass to it. More...

#include <result.h>

Public Member Functions

void operator() (MYSQL_RES *doomed) const
 Functor implementation.
 

Detailed Description

Functor to call mysql_free_result() on the pointer you pass to it.

This overrides RefCountedPointer's default destroyer, which uses operator delete; it annoys the C API when you nuke its data structures this way. :)


The documentation for this struct was generated from the following file:
mysql++-3.3.0/doc/html/refman/refcounted_8h.html000644 000765 000024 00000011662 14042362132 022222 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: refcounted.h File Reference
MySQL++  3.3.0
refcounted.h File Reference

Declares the RefCountedPointer template. More...

#include "common.h"
#include <memory>
#include <stddef.h>

Go to the source code of this file.

Classes

struct  mysqlpp::RefCountedPointerDestroyer< T >
 Functor to call delete on the pointer you pass to it. More...
 
class  mysqlpp::RefCountedPointer< T, Destroyer >
 Creates an object that acts as a reference-counted pointer to another object. More...
 

Detailed Description

Declares the RefCountedPointer template.

mysql++-3.3.0/doc/html/refman/functions_f.html000644 000765 000024 00000015443 14042362132 022003 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
MySQL++  3.3.0
Here is a list of all documented class members with links to the class documentation for each member:

- f -

mysql++-3.3.0/doc/html/refman/tab_b.png000644 000765 000024 00000000251 14042362133 020345 0ustar00tangentstaff000000 000000 ‰PNG  IHDR$ÇÇ[pIDATxíÝMƒ EáÇ»ÐÔ¸¸u`âÀ´V0РÆ}:t]DÁ²s¿ä®‚¶ýËu¥ø|’xùî½À>ÿ1»& mÄ8ÜSÙÑxÜLÀUûšÞ²ÄiE–ŠåOs„¢’nxàÒêÓKN²~jIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1MultiResultsOption__coll__graph.png000644 000765 000024 00000014034 14042362133 030753 0ustar00tangentstaff000000 000000 ‰PNG  IHDR—‰!Cª’sRGB®ÎéÖIDATxí ¸MÕûÇ_¹Wu+ h %I’E‘()" á)•FQ‰JÃSyŒõ˜EÉP™Ê $ 2¥B¤BI¤ Rdÿ×çõ[ǾÇ>ǾþGçœÛzŸçÞ½ÏÚk¯½öw}×û¾kŸ}ï7ŸgLœ9ÀŒŒÄ·éZtìEÀ‘Ë1á!àÈuÈ u Hß~û­œ~úéɺü⺇v˜üõ×_I»×¤‘ë›o¾‘Ë/¿\Þ~ûí¤Ý|^¾ð?ÿü#+™æÂb2ÑÏã×väÊãœÌÛsäJ&úyüÚI˹R×õë×˶mÛ¤|ùò ëÎÇ,K–,‘¬¬,©R¥Jè¶¿ûî;ùí·ßäì³ÏNX_’ÝÐÚsÍš5Kú÷ïŸ1صk—4nÜXÚ¶m+ëÖ­“Å‹ëç:Äm¿råÊBòÍêRæ%Kir;VZ´h! ÞåÙgŸ•råÊIéÒ¥åÃ?”7ß|Sn¸á†ÈxPwæÌ™òÒK/i½’%KÊÈ‘#õøÜ¹s¥lÙ²R±bE=gøðá‘ó>ûì3¹öÚk¥N:R¬X1yê©§ôØÝwß-wÜq‡Ð^hõêÕZÞ©S'™0a‚î_yå•òõ×_ˈ#”T‹-’gžyF $ .”_|QðfAmÝsÏ=BýúõëËæÍ›ï… ¹úê«eÞ¼yrî¹çj#ôBñt„grFkAm‘?ÑFÓ¦Mµ –š5kª·ãÑ î'Úl¿£ËSê3/ &ÃŒ·ñÌw‹ ¹´™ížIæs´eVpÞ/¿ü’£Ì –gïá‡öL29f¼wÉ%—xÆ»y&GŠ”Ó?“@{&¬zÆãEÊãí˜Ç ÞªU«r´CýXm¯åѯh3 þ~mD׉÷™þšT"^•C}lzÚz.;Cñ6¬Ö®¹æ[¤Û 7.lÎ’£¢ïCff¦ðm'Ÿ|rtQÌÏä†,bYt[äOAý²^8V;éPžú&££„žÙPs°} ÷áyPnŒÐ xŠŽ‘‡ñ8Â&ï¶-ò¯Â… KÁ‚mÑAoÙV˜NØ·"Ø&Éf¤½çÊ-±Oç7¼G4±8ÎsªDY"ÛJTŸu;i¿Z<Ô¹ö¤…Åt{5##Ëäc§›GËÓâ”Hò›¨Éû뎒î¥ËÏС³L˜¼\Ö¬Ùœ6}Næ+ÎÛ…EPa£F}dæÈŒ‹+M)ñ¯ÂѸA_0•-#„ÒæAêã©ÜMÕ‹üñÇS¢)A.TÅÐ-D×ÐÙÁ#€šG©b.,¦ÊHäÁ~8råÁAM•[räJ•‘ȃýH‰œ+ ®ˆ?ùE¨QGÏ0·ÆâaÛ¶m*ÈžÛsƒê#=üÞ{ïÉ—_~©rÅH[ýë úþ2TaÑT<ûì³ýÅyf?m<Ê©ˆ^""Nâ &✨åÆfÍšBÏÍyAuÑÍ®ZµªôéÓG ‹p'BïV-6èÊFFM ‰š%K–Ī–þåæá`Òí£>òÌj1n?æ4hGê˜å¶gÔÆThÓÈâ©X¦QójÕªåï¤õŒ‚«g¼‚gʽ֭[{gÕ{Ϩ¹êñ‰'zFÑ3^Ð{á…´ áNCbϨ³zuëÖõŒ4±gä…ußÈk¹2׺FÅÕkß¾½îÛ_ï¿ÿ¾wä‘GzÆ£ywÝu—wûí·{fçBy_}õ•g„Ýõ>h{üøñ^×®]õÔAƒyF‹Ñ3^Ï8p –Ñv»ví¼R¥JyeË–õ/^l/¸5ÙËÎÎ<–„Âéiã¹ì4FKºE‹R£F U°G³ÿþ*¾`ÁUºþùçµ:ÒÆTNñx~mkÂ,j÷œ‹î£Q••+WJ¯^½Ä ¦µW)^¼¸ 2Äü_Ô¿dæÌ™Ò¨Q#yýõ×eäȑ³$3Øb`m×t{ñÅ ¡’gÔjÕ;ái —\Ë(ÔªÖ#m5XÕÝÆ+wîÜY ñeÀ€Ò½{wõÈhIÒo£V+ÈÓ—t²´#×UW]%õêÕS‚â–.]*Ó§O—N:©B+ƒ6oÞ,„-3ûu`ŒÑr;8ÆÃ¨P'¢çˆ®£Û zôè¡úÕÆ“(yUÇÐɾ馛òëñl‚B$¿«‚è(†ah^“ƒ¡{M?WÓ7Z7œF. ùOG_›k̘1C3ájÒ¤‰^3rRì¤MBo±ÄkYûâ‹/TÜœ>î¸ã´qtÄÝ?€¶ÜžË9€XóæÍ¥B… òÐC‰Ñ¼––-[jndëû¥‚ÿ4aF:†7¶ÕÒ"j冭H(‚ê>Èðr¶ÿ÷÷Õ^×^3èüT-K;Ïe4yš,[¶LWZuêÔ‘)S¦è¡ &ÈW\!+VTâêŒ0ºù×ÞÓ´ÜžDޏmÛ¶rÿý÷Ë»ï¾k„£þ¼áÓO?­‰bÙ­·Þ*¯½öšöƒ:¬üz÷î-&Ï’üùóëisæÌÑ-ýkÖ¬™îóËä‘}<õLŠùóç«÷ŒTHÓ´ñ\ö#ЦÆðJ„† jØ!ìuëÖMÃÔ[o½¥¡ç©§žÒœˆ•aB>Ú2 »†¹råÊé9¬<ù ÂðCøâõɵ¢6 Î?ÿ|ÍÏðL×_½æU¶>+ÇI“&)qì£ò'V¾M›6Õjô¡fÍšb’v%¨Y(hÿlvk1°ŸS~›„UÄ~— ³ZÜ豈“@{Æûä8ªÍ,ù=jr”Û[·nõÖ­[g?ê–¢yÄ¡û[¶l‰y®=ÉxFÏxÑÈ9¶Ü$ûžIÆuEkBµ-ÖU«ñr‘ÏvÇ$øÞ¦M›ìÇ\oSmµ˜6ž+Ì,%жB… éê/ºÜ~&'²y‘-;þøãín޼-Rµ“™™÷A¨Í¿ìiäO6—²el=öXÿÇ´ßÏSäJµÑ0ÏÑtEšjýú·úãÈu‘6uaë©ßtÚ®SZ×Ôð\¼…Êò;•WCYæMÔÓÍcåqO$›RÅŠKv"×O ÏEÂk–F)ý3tè,9ê¨ËeÍšÍ)ÝÏTyņ¥¹"TOáQ£>2Oô ÈĉN‚8ì09r…@jýú­²nÝ/æ þn3Æ)Ć€L«8r…@jâÄE‘LªT)|¢+)ñÝbªŽEffAó†è™Ú½µk–¬¬}ŸSµÏ©Ô/Si4òX_¹B(oldd8‘ƒpi5G®h‘š²JtG®ðX¹š¹DÀ‘+$`.,†ÊWÍ‘ËF¼]ã¡|Ì‘+Wš¹¢k"G®`\\ipäJˆ®‰`¹‚qq¥ @À‘+$ˆîQDH |Õ¹|`ÄÛu"â¡|Ì‘+Wš¹¢k"G®`\ö+%çâÇYx¹BbEÎųð8r…ÇÊÕÌ%Ž\!s"B嫿Èå#Þ®{àcŽ\Á¸¸Ò àÈDC嫿Èå#Þ® ‹ñÐ >æÈŒ‹+MfFFÌ(žò Çý`‘‘é.\Þa€åŒÕ¹ü¡¦çø‹kät‘}»å–[Á[ׯ#:ª¢Xh,YsaÑ"á¶ GÀ‘+áº-Ž\ ·M8)G.d‘òM„©;A÷ÚoèU#Òi¤çüÅ9ö?ýôSöô¢gçÆõ|ÚàAQD@aôí³Ï> Ýj·È£çˆ³I¤C‹¸in®ªÑ€J)G®±cÇÊ’%Kºšû"ÔY­0º=ûÃ?T=l”fcæÈ¿ùæ›2yòd­†þ5$â¼Áƒ+© ÖÔ©SU²8Yc]'ºAuÄܱ;ï¼Óü碫D>3FïmÅŠ*Äþ /¨º-ĉe}úôQñÑ;vÈ¢E‹bUKXyŽÕb˜VgÏž- r¹€Ý At¥1§Óh<£‚ÊLlÓ¦pS£GÎEÉ‹zˆ#‡’j‰%T¶µWk ì矮 ÷È#@^­Z5ýÌ3Ï”yóæ©&õ#! ¡tŒ4À(Óê>¿î¸ã}1ñÑGU’Dc·zõj)Y²dbqºÞ&»ZµjéØÜsÏ=‚À)¢íÄ…8½zõ¼ ᕱAD¾}ûö‚`=ã`,×äâ"¨Ø&7ÃÖîRåÊ•eÆ ªD ÑŽÆ› ÿ ñRâ•/_^Û¸ä’K"jöþ›¨^½ºÖ§ ܽ =èH£f:Àc<›³J«þ}´°Qòb†ý³:ÙþkEïS'+ ¥²L)X°`ŽÃÌrÂ$÷G~Ù .¬•Y®ÅgÈË@8 o.`p ã\¾ËÄ«aɃò<#©¬“™ö£±ã÷A_íµô‰Ò¤I!…ˆ“o½‘eÖ²Üþ:(r1«1 ;;;Ç5qÙU«VUðˆÁ 8PÁä¾}û*Ù1·=€”û¥zñ,€á/§ Ïp £„•9sæh‚ê3[Ó¯DÅ+1@„!þüê!ñ’<&EèÙ³§œwÞyBHè·Ë^/Þµƒ°ë¡llñ:L^,vzð¿˜ðØÞÝzg&Æý„](Øvìö ÈeO޵e0ɱðÌ<ÂyÀvîÜY½V•*Ut†s3x$rœh,bÕªUêA¹Þ‚óðZ§žzª–á-l2ëßç ³r­\¹RÎ?ÿ|­Ï/žëÒV¬Ç3rH›°Æ¤b0š7o.„!Â&äçž›5k¦Œ  rmÒúL8 2®„é•ä]–¨|»‚^ݺuµ©XØùï‡~"Éq¤‰²‰jˆv¬»…8„„Fió è!CtH€f†qs­ZµÒ%¾)þv’mVnäx´Ï,"O`P˜u¬1¶ Ð6í>õù!„r=H@h­R¥Jš;¬æ£=Æyô\éÜsϵÅ[¼!\Ïš5KWôùæ›oÖÅ“Œ¤Ÿ-á†Äóù±Æu1&÷ѵk×ý°#b@X~êׯ¯á\ð,$° ìh“|„ãZô±C‡:ÁéëwÞÑãö—í“ýv›ã_…ÓYVEÿß7|øðˆº=3Œ™Š'#tZc Öý÷߯"1ǘ•ä õ-ùj×®­HÒê«¶½ƒÙ–üáÁ߯Î;5WÁ#…5–>û5®Y,p Á!ðÞ^ƒIÈýsß±°£.×âù›MU(‹…ÇðTþI×!_&7=X"ñÝâ°aÃä /¤I,ñÿ*œÕ3ƒ3Õ³­T©Röcdë€H¡o'è8$ŠX\*±8fW ì‡5<@´1©¢ÍN˜èr>Cf{<vÔ ºåXvÑÄ¢Á>žás¢l_ŒHP‹,‘IryÖ’ãyŽ“óUAöúë¯+ðAÇ\Ù^ba÷oã“práæsK,n:zFÅòA³ñß-Õ¯ »»ß‡dµøoß„»^Š"`V{Ͻ‰êÞ4󦩡p\|Ìc—ÌÎô«Åå¿ëVz"0Ã…Åô¸´èµ#WZ SzvÒ‘+=Ç--zýkjœ> ‚SIEND®B`‚mysql++-3.3.0/doc/html/refman/inherit_graph_3.png000644 000765 000024 00000011750 14042362133 022351 0ustar00tangentstaff000000 000000 ‰PNG  IHDR<1GìlsRGB®Îé¢IDATxíEÇ›Á€ bÄF0}*0!(f,ÑL¨ f@Ê AEýEs˜#¢‚ ¨˜‘Üßû=¿žš›ÛÙ=îöv÷úUíîLç~3óæ…÷Ö°BÆ“ç€ç€ç@5à@I5˜£Ÿ¢ç€ç€ç€rÀ <#xxTxWm.µŸ¨ç€ç€xþðð¨6¨éSO=eN:é¤h²?÷¨0,_¾Ü¬µÖZÖžoÈs )ÊhÏ?ÿüœŒQ¢ŒöØcµ[l±…Ýd“MlëÖ­íK/½”“¾+«“o¼ÑòIEß}÷=âˆ#ìÏ?ÿœ*;ë´gžyFï-¥d]7*¸ñó|øOþóà‚ .(sÛ¼†÷Å_˜÷Þ{¯´¯„³çž{Μ|òɦyóææÒK/5ÿý·!­}ûöæñÇ×¼Jè¶Ò›üüóÏÍêÕ«Sö³páBóòË/›%K–¤Ì¯®‰G˜ÿWþÀL9È5öá-[¶Ì|ÿý÷fÕªUF43cÆ íˆ‡hæÌ™fÊ”)fÅŠšöã?š?þø£Ô@fÏžm,X¤M:ÕLš4IJ(‹/VÁ6þ|}øá‡p¶ÿõ×_†‡”þ0=¾üòË  7é/¿ü¢ç³fÍ2ï¿ÿ¾!Í‘¼ Ì?ÿü<üáó¥K—š /¼Ðì³Ï>:Ž/¿üróÎ;ï˜-Z˜+¯¼Ò5£õ?ùäóâ‹/šŸ~ú)HφO™ÆJ£ð^ÑWX`Q—ë}õÕWfÞ¼yzW^3åëÏ?ÿ4¯½öšA¦#xÌ &ÿÓÕóyžyÁ¨Î—­I+‚CÕûC9$Pó1õÚ¶mœï»ï¾VD»ß~ûÙƒ>8èò×_µ5kÖ´C† ±Ó§O·[mµ•­[·®­Q£†šòðiÙ7ß|ÓÖ¯_ß–””hù½öÚË®·ÞzšwÕUWY±Óõ¸K—.v§v²m´‘­]»¶öæ™gjÞ³Ï>«ç"ùƒ<ÊŠPÒü &hþĉËœ‹–£y¯¾úªæ…¿¾þúkûüóÏ[(V„¹Îqºñ^}õÕZ<>eë[o½e4h`ëÔ©£Ÿ 7ÜPùGGÓ¦MÓ± ŽRùøÐCÙtåáÙvÛmg×_}-/7¥íܹ³Îǵ%‚Sç@[ë®»®<öÑ®];+/+ÍKòåLBî…B¤B!ò¼¼cF¥2i×XÃsR{ƒ 60âë1·ß~»yûí·  ÚÛ£>ªÛgŸ}fN9å#ŸA§Õä2"ÔìÛ·¯iÒ¤‰jhÔÛl³ÍÌ=÷Ü£ÚÚgœ¡ÎG4HLX§©¹¾Ã¿h(wÝu—jk<ð€á#)(Ò¸qcÕ(Ñ~Я¸â Ía«¦*¿Pøœ²Ð®»îª¿á/æ˜cŽ1"¤Í 7Ü`˜§AÕd‡nÄ?fÞxã J>¹ÂqceÌûï¿¿joh\»ì²‹éׯŸ«¦¿hÚð÷øã×9¦+ÿÍ7ßè 4m®׌ºa¢ÌYgeºuëf~ÿýwÕå%¥ó —óÇžyͨ-¯†÷ÁhSbFêÛmSÏy;ʃ¢ÚÁСC5ï°Ã³",ôø²Ë.³k¯½¶íß¿¿j)h|&Ož¬õG­åøºöÚkc5<ñ±å8ØvÛmmïÞ½­ÓšœÖH}€ÈDwÞy§ŽAmÚ¢"°­Ó(]A´M´P§á%áS¦±L“ÒÒ–øíÎ;ïl8àíÒiecÆŒqC°éÊ£ám½õÖAYqM¨vÚ«W¯@[Dûå–[”"¼­¸)ô#ÂÔŠIÔÍtÀ= ƒ^×Leó1¿ÐÇŸ<­¬1Uº†·ù曫`¯Uëß8H³fÍôÍ’‰1ÃÔÉÿôÓO«–€æƒÖ‰PÐc4ÄÝwßÝ 9ágs~°V­Zi9¾œ$„DÀ…ÎŒ‘hj Q’±Í6Ûù›nº©ùí·ß‚ó¸ƒvØA³^yå•2EÄÌU Ç>îž{îYª |A#r”„O®lÜXEøÆ$/ sÇw˜•+Wº*Á/¾EG™Ê‡y‹ÆÍµÃ§&ç³;õÔSÍqǧŸ>úȈk!\¬ÒŽçÍ[Ximû†«*̤åAIB8ñ“™ûî»Ïˆ¿ÎÌC«!8Äߥæ*Ѽ4€P‚æÎ«¿|}ûí·Áqô¬”#„ÐÇ\J@†ó :¤ž®LYñ j Â¥¹_Ñ|Ô|ß– W‚Žˆäb‚‡ûHÊ'ÚH5VܼÎ=÷\5› ðL‰£$å]ƒ6D«ÖÀSx̤7lØPy€ÉÎKˆh¢j“_4wîB3lØDÓ¦Í@Ó±ãÊ袨Û+ˈ«Òçxä‘Gª"bO×®]wTÒÎyÁrïU6%“R8 ü]h×\sÜʱÚúý÷ßo.ºè"õû‰‰¦Ú Bm- ß>&üFÆ ‹Âþ9(L<ꨣ‚òbk;lƒ% sôÑGk‚‰þñUAásvÆûÄO¨æ¡çƒÐ¡ 1ÿ´máûB£¢_´U¨¼1Ä•ˆ+>N~ÇŽ«ð˜t7K¦òhÒø:°bþ¢Ò@pÂÄÜÐ$Zñ /¼ |b¸Ø/X°Ä<üð$Ñ ÿkþóŸëÅ79ÖÌš5G|¹©¡3kÜa7À=œ È÷|ÉXøØA2H ÓàcNB(6<“•NQº¼>< 4hS¢}©ŸŸ$ÖsüRŽðsÉĬ\ —¤‘D|`Dh‰°ŠVeE{Ñ|¢¤øÂ¨#’¬”OÌH-ç"Ž®,‘Òhžó‹Q—vÄôVÿ¡À]4?]”–u±‚¿ "”´AtT…Ö狨3¾47N¢¨"È5ßùð’ð)ÓX<‚¢‰Y bè|*£ÑZúw‘U:OW^4nrõu|<|k¥([WªrÂ⩜Ý.7G”ä ¢3!ã`)ár<é´Ã;hNˆ'ZœÍ€·>æB þMowÁÃùÜ @U¸™¹)ÊCIÆJ(|Ó"lÓ ŸLåy(y£Stü<8ïT×(Z6z+V¬²ãÇÏ´=zŒ’ IÛ¨Q/ta!>.Dç^r…Ùâ:¢<œwÞyzI£ÊA*GÁ-·ÜR!Os_‰ëE…  ô}ÓM7‘eE»Ót^à7ß|³>·§vš¦B:ÅE+$øŠx9]i¹¸óg{”xV/š¬ç˜¾©`!© ÓNØi- lDóÓcf—YŸª@†€KEQÜX ñq„ÙŸŽ2•—›JW‘¤kƒ<`5-[¶ÌT,e¾Ü§¦N&“-¦øt³hÑRÙù¸¦˜««´¼( )둸|ùJ3nÜôØü\dLú›À²dI” u° è-Á<ª{ß6þ6|®˜w¸Fð÷âZèÑ£‡B¶ä%£P$üÞ@¶ØLÕA¶FŒ¡.ÌÈ8²…»‡6GeÄÒÒà“+ï`P߀1ÂáîÁ½‰UQ Â¥‰)¾=ôPqO<¬® ZÀ»ÃŽ;îhð}ÙÂôÅf¯Ä‘#GQZÌ AƒtœÀÉð27àP´·÷Þ{§è)yRöW/yÛeJr‘Å,RFŠ/“Ÿ4"•£~ûí·]ÅO4ÒE“öUå i¬Iùƒ°›0a¶©W¯½ÜÌ“ƒjNØ 1ÇîÝGÆäæ.¹¤¤NÖdjÔ¨‘ú<ñ÷òð"\œoY`Cú· _|±8‘ 8üY²ŽY_j¼@ÇgDûQ@  " G]1hSšFÀà¶ÛnÓãèË";uê”Cà¨ß¸eXøg×Ygâ{Úyä‘G‚&Ä4 ŽÉg,™Á&nÜtü÷ø‡ñÿ~úé§òÂ[¤>¾h¤ÿ±ÇS´<Âg‚A€“eŽ%ð:è #8±L|ʘÏân–pa.X‰oMÐqù¤µ xyÃâ„å-$ áØÇQ+~Ä$ÅS–I2Ö”ó8‘MÛ¶MÌС=EðÍP oìØiò‚ZajÕ*-à_-/n Ô a@\vNÒÅÕ`:t(k™dê< ‰—N ['žx¢‚ÕÑÆ &A8‚`,c 0B„°"´¯8ŠZ ÙŠë‹tžu`Z}úÄUUm˜gÎÁŸø•@Z¹Ñ᎒]‰p"9N'¸8˜ À_00A®»î:Ý ÁM¨Gtñ>êº{ë‚m£ „Ö>òèpM”ú¥Lu£ÚµkŠVÓ ~†¿~â×í,¾£¦ª ø’ Šbá[¾B¶à¯¬JRs›ã0d‹sˆ:PƯϬwW3Û-ÝäY@«ÃW‡/srÏ!éhÀ«ðQ÷BÛE³ÅêêСC0¼6íW4à‘‹(m´Ï\ž³Tíì³ÏVØK´_ÁÙidˆ0y˜Üò6`auÑâÊ,Þ— ®P¹YÿŠFRÙ¤€4 0bÞh”3Ü>Ç,æÿÃÑåh¹B>GiÓÍcþüÅvĈ·mûöƒXJ«V…KqQÚ$P$Ç|„l1¶LQZîo÷a©"ó­àˆ7ˆÆÊKL—ŠûÉ –ÔŠy«E$¢õ‰Æ‚n8á„‚öÜ’S×V’߸(m•ÀR’ ¸"Ë€ob=,P. X9‰•é"NàÙ ”Î$D°t#P0R'v‘ÿòÕ<Ö°Ò‡Ã,±S 8AðM\H6•%cŠeÒ ÿÿcÅ.%¢ö[yªps¸HÁ'xá‰Îžý‡Öײ .Îÿ†ã3îÉÁü}©HVo˜sÎ9G?,ÙF@¿@ ð‹x*NxÈVŽ®kTU,&KÒÄÙ©¾3ÙÄŠó3Øð3:oÎãLZÙ_OÍT¶cb…KÆ0=0u!–ga&Ca“6ºUùÔgK'ÔùTÄJþ§t>ËìvÛm71éÇ–OÕF¾¦åÂ$¬Ì¹úø+“7ùÖvœI[ÔQÚÃ?\MXÂÚl^ bœ€NLÛ8b{x"N$/¹äEƒË G"Nq‹÷Ñú ¶‘g{'à-„ÔP’vúé§kÄ+jž²~÷îÝuW÷`•DÀ*–‰ó°ê7nŸî9à9QÉ\L^tn"¨,‘T‚DN£äæ.,SNL`]ÿGDÉisÔI·_v Ö²f— 9ð©íÑ®ø$‚MÂý÷ìÙSƒ!"”K-¬—)ôãB× }ü…~ÿd3þ8 ¯¨}xQYÚŸµ†|$RÍV`£0µLz4e5"ô#„&±d-Œ%0üYHqÈ Öâëc/ÎÛ(ÉBê`«¬hž?Ï/àÃ-¯?8¿fR¼£ oºžeÙ'/œ[ÄÇQ“2Û©"Ìœ@£nxñ>m‡ÛÏ´™õݾ€{Êo¸õ¨ù=J?º6mÊF÷«­Àó·ƒç@¶à‘’XÙ¶ëËçŽE´È}Ožž…À/ð á*ù1zxT¼À«6úF<< ^àÂUòcôð¨Ä-d1|…tàñp`óGOžUÉ2‹uËû·‚U9ßwþs€-»¹·Rm´ÿ£÷#,Ô½\ ñsðððÈÄ2^¦ >ßsÀsÀs P9à^¡^9?nÏϬ9à^Ö,ó<< •^àê•óãöðÈšÿ‰AÚókIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Query_1_1MaxPacketInsertPolicy-members.html000644 000765 000024 00000013126 14042362132 032136 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.2.5
mysqlpp::Query::MaxPacketInsertPolicy< AccessController > Member List
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ReadDefaultGroupOption-members.html000644 000765 000024 00000015375 14042362132 030624 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::ReadDefaultGroupOption Member List

This is the complete list of members for mysqlpp::ReadDefaultGroupOption, including all inherited members.

arg_mysqlpp::DataOption< T >protected
ArgType typedefmysqlpp::DataOption< T >
DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Row__coll__graph.png000644 000765 000024 00000010242 14042362133 025652 0ustar00tangentstaff000000 000000 ‰PNG  IHDR™RGsvÍsRGB®Îé\IDATxíTEÇûA`D1 ((Š"ÆË1¢˜sBQ S!Rf $H ŠDA‰"Q$ƒ€€ˆ(ˆHNóõ¯õí÷vï·{ì}ßÞ1]õnß›™×3óŸÿôôÌí]g9ñâ(86+8Ý^³Gà<É< O²‡ØW ødŒ;ÿÌ_ƒ=âÀ„ Jñ¹!Î’)ɤ}ûöÏ_ƒ|qà‘G%YœùŽ#Y\Žð¤ O²4éÕ䎀'YîØøœ4!P"MzÒ¦fæÌ™rÈ!‡ÈG‘[¶l|ÍyóæIÅŠ¥~ýúö™ŒòüQ;ì°´´%è×~ûí—Ãg¡-çwž”)S&™få»Ì¨Q£¬ÿ%K–Ì·Žü¼˜q–ì•W^‘Ñ£Gç§/9ÞYºt©Ô­[Wºté"ÙÙÙ2dÈ9çœsdàÀ9Ê ëÖ[oµÇÉ“'Ëòå˃¬=ú úõÓO?IË–-­ô3¸6oÞ¼Gús{¹gÏžòæ›oZöСC…I÷?—ð^ó¹çžsº» 'å¸ÿàƒ\‹-ÜgœáN9å×½{wwÒI'¹ãŽ;Î?ÞÞõÕWí½M›6¹5j¸?ÿüÓ=ôÐCN-‰=O›6Íò»víêŽ:ê(wÁ¸K/½Ôélw7Üpƒ{ÿý÷‚ãn¼ñF+ì±Ç:%ˆ½S»vmwÇw¸C=Ô]{íµnãÆ–~ñÅ»… ÆÝ7oÞÜ=øàƒ–ü7nœ+W®œS°]”®“O>Ù•.]Ú=ûì³î±ÇsÇwÛ¶msmÚ´qx #ÿ›o¾1uçž{®é?üðÃÝùçŸïÖ®]kéݺus'œp‚á¢liA¿¾ÿþ{Ã*hOð©ä¶¾®\¹Òýúë¯îôÓOwK–,qj…݉'žèŽ9æ÷â‹/Zñ9sæ8<†ç½÷Þë¶oßîxÿÊ+¯t]t‘SëkíŸ;w®;øàƒÝAä”`®Q£F6+V¬p^x¡«P¡‚¥QßâÅ‹m ®ºê*ömÛ¶V×wß}ç4hàtuqÔ•—èîÒuêÔ)\,þ#†+f” fزöèÑC®¹æyûí·EN”$¦ óŒiÖÎÊ—_~) Ž´nÝZt=:t°²÷Üs|õÕW¢¤Œ5á÷ß`ùðÃ+ðÔSOYÞŒ3ä€éÓ§ËêÕ«M/gŸ}¶°…ï§N* ¦¥?”6›ùå‰Ò¥É©§ž*>ú¨` içÈ‘#EÉ!:à¢LÚµkgê°J´Y‰+kÖ¬‘aÆ٧T>ùä4h•M´«V­’Ûn»-véä–š5kŠNVQb‹NH¡:¹ì™c¥¯¿þZ^ýuQZÚe—]&Ÿ}ö™ÕÝ«W/Ù°aƒËÝwßmÖëµÿþû[:YEÉ'³gÏ%¤¼öÚkæ( KÆmëÖ­†÷ÕW_mmïÛ·¯ÕÕ±cG³)S¦È·ß~+ô9UÉ—O¦Ì6–-[&:Ûì~ݺu¢L.¹äiÕª•èl‘Ï?ÿ\š4i"U«V-6ptBg„ø"ÈñÇŸ£í”­V­š] :Ä@î¿ÿ~Që!·Ür‹‘Œ: l ÁýŽ;r, ¿$Q:÷ÙgŸaÑÉ!òq1Øüñ‡deeÉOê†T¨µ±[&®Z-)[¶¬ùºÑ!6ÂÒºk×.ûTë/¤J•*2qâD©^½º¨õµfV¶qãÆ2bÄëGñâÅcý%“þèŠdåÁêºë®³%¼R¥J!ÆWAW(éܹ³õRS&UÉ—OFÇbÅŠ  †¥T©Rrùå—Áð N<Àc˜ijŠ­G}tìUÞKfb ºd™åâ9H'mýúõA‘ŸÐaÁê`ñt™¶ädtAylB %J”°ÃK¬T:uÌzãÿí»ï¾–þAL´à H„0…„ÜSo Ÿ÷uÙ3‹Å$Á‡ƒÀ궈.q¦>è a¼,óߺŽöAèýAÂuýy饗äá‡6+ÎXªÖ=UÉÉòªbÑ8vf 4KGïÞ½…¥è£>²™¨>˜f”VßÇó‡~0bÔªU˪3fŒìܹS¾øâ Q¿ÐÒ ±úgq÷XŸ?þØ– 2þþûo³¶·ß~»0»‘(] bX°ÎLêÄš`EsÛýÒfõCÍ%€,X16,iË3« B9HùÀƒq@ÂýÁúªÿ*ƒ¶<ƃ¥47!‹òXO&iª’¯å2·Jèþúë/Á×Bh¾~¤ÂcV¢:Òæ„gQ ‡%–%€e?‚tfƒ‚e|ï½÷¬||–¡à¾Y³f¶ì@NHð/¿ü²½¥‹Q'Xð«Áßd©¨\¹²-“ï¾ûnû¤m\ K;ub X^ñ)‘ ÌÏ?ÿ·|‘÷Æo˜ ±`Á#J7 ÖVúC[›6mjËÕ3ÏQè+WXr;äÅ•IFÂã˜LùÄ2i'Ë~ §ö©Çá%SÏ·"_g øS‘RHL§®ª-¢ºØf«@”ï¡Ò´“ g7U‚чðΈçÜf_^–w“•têJ¶Î‚*‡ÿ—ˆaAÕ•ªÞÙ]¦Ú_¾ˆ#vÝÆúoÆrÖë••U•)SÃeeϵÌîÞß[ò¿›ÉŠø1x’¥€¦_.S+TÔ“,F^·~¹Ì ¡è|O²h\|jð$K#˜^U4ždѸøÔ4"àI–F0½ªh<É¢qñ©iDÀ“,0ýF `…Šz’…ÀÈëÖaä…Pt¾'Y4.>5x’¥L¯*O²h\"Sñɸ¼¤†€'Y xá“qyI O²Ôðò¥ó€'Y  ù#ŒÀ õ$ ‘×­?ÂÈ ¡è|O²h\|jð$KL¿\¦V¨¨'YŒ¼nýr™BÑùždѸøÔ4"q$#ä_&Ó>K–,¡á|ÆdlûÀ‹`™&÷ä„×#~ñ¼¤†1œˆJ̪L’Œ³d™ŽoKzð$KŽ^Ënð$Û 8>+=dœO–žní™â]§(*B]ªš‰¥Ní@ˆLt7bPí-â-YÄH0@¦M›‘“zñÁ :Oy®!C†Èõ×_oÁYS×V8ß(”–ŒÍ¿GˆìK4Ù+®¸Â"ë˜ÀóA8i¸oݺUîºë.éÒ¥‹þ[ôþÞ¹B… VŽ`îƒ Ò06-$3ÿŸŸˆ¶~š`õ|Ô¢á²ã%®8ºˆ¤Ëq у5ø«Å4'¢/Vªaƽ÷0UÄ•$þg ´ XJ"º‘Xî„_ÌÎÎ6‚s߯_? ÷L¤âO?ýÔUE¸°I¡´dÄÇB~š`©o½õ–…œ®_¿¾Y :pE"LK–F–Þ½{ 1ʼnMŽž>}úH»víìØÒë;B\s¤B¨è¶mÛJ=,kÅŠB¬LB::]±Ãƒ%–¸ŸApS–LÚCfHE8+ÂFO:UæÏŸ/]»vµÚ={ö”*UªX˜kôMš4ÉÜ£¿0J¡$@3¸ gB|÷kÖ¬‘3ÏW‡ÌŠÕ©SGfÍš% ®s7/Q/¿¦ÁÿÒ ò¶üq¿±H¾a£Fì~É’%f-y@/–/Qð™ ¸Þ,.“€ú±ªŠÉÀÀ„œ5kÖ´°Ï¤V)´–,7ÀùýÖ¯_o¾ÏX‡wÞyÇ6 j³fÍl¬ZµªþGëÖúïÒ·KéÒ¥)jèY½zµ-eX |À }̘1æ;mÚ´I:wîlïà³QO“&MäñÇ—nݺý«-þ+8wî\aÉ?~¼´hÑBã¬|BÑ–GBmc- 3É2î_¬ãL5jwÉ®’ÁëÕ«—Y3‹„ƒe ŸSA Æn"á´#ìîØ½BÊ$„ -[¶4’b}ؕl–+W.¦?¿ºøÝ%mÅÌ )šÿbãŽ;šSÍrþ[åÊ•ƒÇØ'KØî$·|¬L:$ì¦C_¦é(rË%WªTÉœ}NíS‘N:ÅY“¦M›F¾ŽOODð‰qI’±KL•` ì„r#Rb¹ ¼ÿŒF Èî.£»ëSÿdœãÏ©;;C/ùC ¿´¸1ãH–?hý[ŒÀF¿\fð蕦y’•‘Ìà~x’eðà•¦ýg÷èµÝÃIEND®B`‚mysql++-3.3.0/doc/html/refman/null_8h.html000644 000765 000024 00000026600 14042362132 021034 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: null.h File Reference
MySQL++  3.3.0
null.h File Reference

Declares classes that implement SQL "null" semantics within C++'s type system. More...

#include "exceptions.h"
#include <iostream>
#include <string>

Go to the source code of this file.

Classes

class  mysqlpp::null_type
 The type of the global mysqlpp::null object. More...
 
struct  mysqlpp::NullIsNull
 Class for objects that define SQL null in terms of MySQL++'s null_type. More...
 
struct  mysqlpp::NullIsZero
 Class for objects that define SQL null as 0. More...
 
struct  mysqlpp::NullIsBlank
 Class for objects that define SQL null as a blank C string. More...
 
class  mysqlpp::Null< Type, Behavior >
 Class for holding data from a SQL column with the NULL attribute. More...
 

Functions

template<class Type , class Behavior >
std::ostream & mysqlpp::operator<< (std::ostream &o, const Null< Type, Behavior > &n)
 Inserts null-able data into a C++ stream if it is not actually null. Otherwise, insert something appropriate for null data.
 

Variables

const std::string mysqlpp::null_str
 "NULL" string constant
 
const null_type mysqlpp::null = null_type()
 Global 'null' instance. Use wherever you need a SQL null. More...
 

Detailed Description

Declares classes that implement SQL "null" semantics within C++'s type system.

This is required because C++'s own NULL type is not semantically the same as SQL nulls.

Variable Documentation

◆ null

const null_type mysqlpp::null = null_type()

Global 'null' instance. Use wherever you need a SQL null.

SQL null is equal to nothing else. It is not the same as C++'s NULL value, it is not a Boolean false....it is unique. As such, if you use this in some other type context, you will get a compiler error saying something about CannotConvertNullToAnyOtherDataType. The only thing you can assign this object instance to is a variable of type Null<T>, and then only directly. Code like this does not work:

int foo = return_some_value_for_foo();
Class for holding data from a SQL column with the NULL attribute.
Definition: null.h:171
const null_type null
Global 'null' instance. Use wherever you need a SQL null.
Definition: null.h:84

The compiler will try to convert mysqlpp::null to int to make all values in the conditional operation consistent, but this is not legal. Anyway, it's questionable code because it means you're using SQL null to mean the same thing as zero here. If zero is a special value, there's no reason to use SQL null. SQL null exists when every value for a particular column is legal and you need something that means "no legal value".

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1MutexFailed__coll__graph.png000644 000765 000024 00000017351 14042362133 027322 0ustar00tangentstaff000000 000000 ‰PNG  IHDR”|× ®sRGB®Îé£IDATxí] œMU_fCä-o"=W’D¢>>$ŒˆPéõyQòªÔ„¨Tú”ˆ˜ä•Þ(ïW}åGa*Ïaìoý×´¯3wî9÷νs³×ïwï9gŸýX{íµ×Zûœ³×ʥȀ¡€—ˆð²œ)f( 0 d!K0 ”%ò™ÂQVœ9s†¶nÝjM2ç6)аaCÊ“'ÍÜ®³mÞ¼™Î;çúf¤ÞtÓMtÍ5×8°IÃ@§OŸ¦J•*ÉϑÜdJ-[¶Ð… ²Ì@—.]¢ Pttt¦m"Ãï¿ÿNgÏžMÃ@F…b$¨MÃ@a4˜èŠa @P=ŒÚô+ýõ×_´aÆ "Wbb"­^½:¨pò2ß~û-%''û«z©×' ´mÛ6zôÑGÓ!ºsçN;vlºô@$<õÔSôý÷ß‹¸téÒ@ à·6ußœøüóÏ)))É9Ù§×3¤JLL •(Q‚Z¶lI'Ož¤®]»ÒܹsiôèÑôÛo¿Q³fͨråÊ4yòd²Ã† £O>ùD®[´hAûöí#<6xà¨T©RÔ¦MЧ÷Þ{Ú¶mKxÃòÙgŸQóæÍ)%%…^ýu*S¦ Õ®][ÒQÑ‚ è†n ªU«Ò´iÓ¤î÷ߟzôèAµjÕ¢k¯½VòΜ9“>üðCêØ±£àƬ]»–jÔ¨AE‹¥^½zVAqqq2êÕ«GåÊ•£éÓ§KÞ`ù›1cU«V*V¬(}²ö tìÔ©“LÜíÛ·ÓÅ‹iРAÔ¯_?,ñj¬ZµJú¾>üðÃÒwû‰wa~ýõWuðàA}éò8qâDÕ³gOõ矪nݺ)pÅœ®êׯ¯Ô“O>©:wî¬ø™†ºãŽ;Ô¿ÿýo©‡;®xÀä|äÈ‘Š—„jüøñêþûïW< Š;-åΟ?¯xàÕ›o¾©ø‘‚š?¾bFS̰jÇŽjñâŪzõêŠ #i_}õ•Z¸p¡*R¤ˆúùçŸÕ‹/¾¨J–,©~ùåÅ «˜AÔßÿ­7n,u¡-f:Á8¿öÚkêÿûŸä[¾|¹zûí·3”bi%8\ýõ.é`MD_yykMòê|ãÆ‚«»Â¬~UO>µfÍܬ}Û»w/Þkªþýû«#GŽŽ;&´E_÷ï߯x²«Ç\š`ÆQ<±Ôwß}§Š+¦&Mšä®iIgá öìÙ“&Ošç@v¸¯J•*ôÒK/‰4`D Ü‹™œ;wnºêª«ˆæÍ›GuêÔ‘™Œs¤‚†1cÆÈé’%Kd¬X±B¤¤X¾|ùè­·Þ¢V­Z‰$êС1ƒP“&M$/$FéÒ¥iåÊ•”?~b¢H]eË–uØ[Ì”"™ † "’ ù *D¹rå’üüññ„¡Ê53¾´ƒúï½÷^ºõÖ[‰ˆ†*÷ƒá´´ýÏþ#R*ÏŒ¬}ã‰D<É)222 ÊPsÐ Ðï¾û®ÐÚ㡇’|ôÞ€Ç*ì¾ûî£Y³fÑñãÇéž{î¡Ù³g;Ú½|ù²¤³´«¯¾ÚqÏÕ ÏQUPeÈ«„€Ahk]`–£G áP¿.]ºPÍš5%áÂ…åˆ?‘`g@y[p‡ ð,—cTT”à'Aðæÿâ‹/ÄD`I)L¼­À’$óà¾sŸ0ñ¬OÎQÎð˜0£YUl#F‹?iº6""‚`ß,Z´HÎjøé§ŸÄþÀ5$VC­[·Éóì³ÏÒu×]Gëׯ—'ºO<ñ„Ì¢eË–Ñ×_-v‹l1€¡×ï¾ûn±¿PGŸ>}hÀ€d]q@·ƒ°¬šD*Ö­[WÐŽ`KñXÕ«‚Áù¯ýKßÊ#žÃf츗٠Œ?Ï™¿«ãÙšïÔ©SêСCŽ$Ñ,ÅÈ瓎tœ ¯3ç¤é‹sžÌ®³ËˆÖxÀˆffÑ—rtÕ·4œ.0F&L#´¿ë®»K|§\i/}bDƒCa,c9hÑÀÉåË—×—™!aìŒ`g€ä±Ú<ú¾+î*_Þ¼yEêr¡p„úqW}sÎc½ÆñÄ%^‰*Ç#FY³Ø:÷BfÙª7`™´!0B¨á©S§Ò‰'äa#ž+yaÇ@zåæ 1rbë·=Þôßc#Ú›FL™ð¥@ =Š/ñÜ%`õêÂæwV8º°¥² °Køi´ÇÕ\¾‹Ž˜®yðoŠ¼Ê¿›lœmß4 #•­q;¨Ë—/äwUkøùS~&uo ÐðY»Xš{ g\ /žØK‰'’©aƒ;(_±4CêiuçivÇUù k4͘±ŽŸDO¥óçýûé‚ÇÔõs£ëÏÒ‚.?SâÉ]8*Û™Ý iª]»¿~Haƹ@›6à'Ôãùi÷)?[pT¿õýã´tÈ~ºô÷eRü6£d«‚XH3PéÒ…ø%nêK䤋üú$5mú*÷s0 ÄÌŽFS’-x€¶M?A8Då r 2~ïè/ÜBš@”›o.ç MJÊe~O—D;¿Csælr¤‡ËIÂñdšßyý¶é,]JJqt+"7¿š¸ÙH A<9¤¥.i4räB6¬ê¤?Æï8Oóc~¦„ß“éÒ…´oà/%]¦â7¦~¹Ý y T·nEþ&æÊkM@ÔX¡… ,{ú]¾x™.§¤_¦ªM¹²wñå kÈ3 iH+äÍ›› Œ¦7ßìjMéóq7R•EÅÞ±voÖËÖ+hMÊÖóg B…òñËÔTýbæÉEWåoFQ‡õ²•˜þl,ºH5S‘?W¢òGPî|©C—›ÏKÝ’úœ?ÛwWwÈ3:V§NyfœHþ®¥-^Ü?”úƒ~ø!üVb—/*Ú2í8ÝýbeªóXiŠŠŽ äĺ¦V` haª´_|„毼ԬYëȯZµ[ÝvÛ ü}ÒEGZ8œl™vL±-äèJ±dµûÓ?×8É…F݉§PNüñ™"‘nÊÝpàŽWŸöØM>¾‰ò—H¿hpdÌæ“°Pa®h6fL;Y…>ü—«Û!—¶vÜaªÓ«tP1ˆ¶{ç¼Õg?oÀë…Ë<@<}ð•»=p«-wÄ [ „?öX:tèOú曟Üõ?$Ò ”Ê”Ìâ…5EEEÐË/w¤çŸ_˜îYQHpN Ö ú7lxïž½–÷Ö/ á=ÃÚÒÃVÞÒþùÞQ\'›£(ö4*YòjÞ½Ú<¤^®ßš@¿,Ê|‰Ý·Ø±(È â>òH#&ôiúòËí¢µívO\¤eƒPÙ[3_u±‡Ùn§r¸ÎÁžzŸB ž^ªÍ÷«ºuGó.Øä@¡`«Ý¥ƒö+GK–ló9d¥Â ¯æÆ®8½ÒuÁ `v( cHsðg[l‰´aïGYžúr׆NÏ‘ ‘‹^y%†F^{É  ‚ ²ð¸c |TGYpv ÇZìÂ…7ÜLX­Áíà4vFúå—_êñÏò1G| ¿3.žµïˆÔëÆü\Ð0Ð?.R$? Þš©¾¬ýI÷]ŸüIxƒ`0í®ð¶¿9~æL¸–-'ɧ11·:ß2×.(`$Q`P¿øâgVÁ¿q¶œš ÙKÃ@NCW³f9ŽT“_u\‰óá”Å\Z(`ÈB }:lXkT·vî ܧ¢—`?r1BðøñüómÙ þÄÅ]ï’ð™*ü†r3¢:ÝÊŸ@‡ò̺«¼³ãiõØCõK7M†d²a  † ulì—üEßßäÊø$϶éÇ©ÑðÀ;CÏSïîÊ€nÕª•áð—µ9ÄççäÊøÖ† Gèæn%©`¹<g Ñ»†2¸gžiEË–í¤;Žf’3ýíÃkÎÐÉ}IT³{ø~*b(ý¸§I)P /?݆ƒï~âø,4M7ðá¼iòotçÈŠŽäÝd édó$Úæðµo?…Ú·¿…ðù‡+0 t…žá%kLÌÛ´jÕ0Þ6@Ÿ„b€›>ÛaæAEÜM¸Õ ¹_Þ¼åUtt¥ÃÛZ4ȃ‘T*@î©™{ÂÓ5cD€ïšD˜vO÷Î#ÚwôÏ‘5Ê‘Ãî»Nò-sdM³Iml²ûá‡d›°/ð`/”’r%üêÄnÐr宄¢òE;Îu°+ÙÇUºtiç[Ùv#%#rûöíyoÙ§ôÝwß9~þò¦Ñ¸#@ï‘#G|Ö¯*òhÍæ£ÌŒh†5íß¿_5kÖLµk×NU¨PA½üòËŠ÷‡+žiâTéĉŠg¸JLL”z&Mš¤ÆŒ£¾ÿþ{ÅÞ+T‰%Tß¾}åÞÑ£GU“&MT¥J•TÏž=ÅAÓ¾}û{´ûèV|ê”,YRuèÐAêdGª{÷îŠH¹%K–HÞ¸¸8õì³Ï¦;g·)ŠRÒõo!V·ß~»â}芥“jÕª•8‹B>l,Ξºté¢xÛ±:}ú´øùáîªuëÖ ý¸Â­Zµjнr¨Q£F©¡C‡ª¯¿þZ%''K¿Š-ªpŸ+HyÞª,þ€à_¨iÓ¦êÔ©S’îîާ€§'”Ž0››7oÎFów9émÛ¶²Ä|õÕWÙçaI‚+“å˗ˤ™={6!âñ /¼@=zôàø©›dï÷ž={hâĉÄL(õa¶ÂŽ~üñGÞ_DÂcÏ8?~œx`hÞ¼y─™FŠ”)S†°ý`=ÇõÓO?M½zõrüxˆ™úõë'^2 ‘Ø“‡ zS\³ Ýøøx³X`ÿ:ú >ýû÷G•ä 7ôêqÈ!ž™B蕼råJ>Ü…_½<'åÑì…_½z5a;óW_}%é>ýó„Û|•—;aUpÇV°`A™ì @±S$™e8RvܸqŠLAÂp¸rñº5`ÀqéöÚk¯©_ýUòÕ¨QC±#J9Ÿ3gŽxö²J fDuìXª;¹3fˆ—/¸’ƒ§/ ^‡Ò—éŽ@€p+§IIIЍ Î<ÀR’žÃÌT‚gãÆÅÜÖ=óÌ3"uqßnìAA²:uê¤æÎ«úô飘1% d< ¤êÁƒ%´‰•swÞH  5¢!5 e˜a8´wñÒ…Yª¡cǎĪI$u ºÙ— ˆvdÐ*Ϲþ+VÈ* Ob18i À.Ô |í°´ãï¤wÊ}ë9ÀÜÖÊ~ðÁÄÒMÔ ;Ç”rÀgºœCÝ¢M¶{Ä­ ˜ÞÆÖ¯_/÷ñç 7ëDBž-ZHX B ²ÍCÙ¶2s'Îü™Î}ΰz¨0HÉõQ € ‹ŒŒ”sü±Í#N'¡.0¦¡ÎàŒ’))–&ŠíÅv‹ÔǾo*ŒPÊ@%“)K)1šOž<© Âx ®ªT©"õAµØžÃÞùœgyº÷c#GŽܾùæÅ Ähg×tjÆ ªvíÚR? ~Àlë¾h%ŽàŒ6\á»X±b õk1cJX+/èÆ’U)¶™ü¢Â2IiÚ÷™1ݱ:ƒn·ìl¯°H{ƒHa k~ØDVŽd0Ј#ÄÛé¹sçé¾Dùòåá”»XemQ4ZÔ0PÈ·‰_s\â×-¹ø©÷î,ÔºE y9v8‹oáW —Å»ëœ9½¬)´‹òrüÖ¬Ù#/IQ6ݲe»8žÅ%/k Ýb†¼»¹s7Rbâ¿Ò¹sG²-”ú¢ÕË*C²˜a /† ’féÒiž¦'$$ÑìÙ¼¨-´‹òbü¾ýv_“þʆ û%l‚U†lÃ@^ $ $Ž3äÉQ¡ñÎÊu@^¦fá@—…ÝSµê0þ2ý3XÓp¼°uë˜@£™míò‚Ô+Wî¦}ûNHI8ŸªX±]})¹nÚô&ªR¥„µ†fÃ@Y7#NÍšÝ$¾ƒ²XUH76PH[ð m(‹c¯ ÂåËoHaȪYÊÀp§¯ ,]³ujÈ™L&w0 äŽ2&Ý Ù"“ûLÆrOsÇŒ dƒH&‹¡€; æŽ2&Ý Ù"“É䎆ÜQƤۢ€a [d2™ÜQÀ0;ÊØL7Ëx›„2Ù\SÀ,ã]ÓŤ Ø¢€Qa¶Èd2¹£€a w”1é¶(`È™L&w0 äŽ2&Ý Ù"“ûLfïž6æŽ ˜e¼ "™,†î(`T˜;ÊØL‡ ƒ+Þœ 9·ç>q¨0—ÂGU†T5†Bj¸‚Y¿îLåÀq<$øºí;Œrç.Éè<{*Kð]¥AV"!!†›+Hï!ÀU./Ó8.q¼,‰¨ãe¦X€)€@üçŒ sG“n‹†l‘ÉdrGÃ@î(cÒmQÀ¯6- üœ ¡*$"`V›â`tÄ1½ˆ##K¸J]Bq#ª!¢(ú 8¸qlÕ4ÕÁ˜å@ziÒôìMÆ#»ý=sæŒDaÔQu]žÃ^q(pš?¾'4q›:lØ0 S©3!$bœ"r´;@ø$DgöR“ùÒ–-[?g†²ÖÇQ% ´'ýåÀÄ4sæLk5Ÿ\!Æçºuëd& °,Â{ƒØ‹ÁÂlB`9ñ(ChoÄ…4àˆÅÄ‘ûo‘IÀ›%/ä"¸ÌP)ù8 ípyÉY‹°Ù˜Á©P‚çþ÷¿ÿe¯c×Ó]wÝ%1O92¢T…X¤À¹sçÎrÍ!5ñIà—ÃZG”–{™8,%¡.BT¡üøñã ñÎ8ä%õîÝ›8T§„v>Ó§O—¾# 0æ>õÔSRÖú·páBZ´h‘<oß¾½„GlVÄJµâ¾¾÷Þ{"•¼M›6<ø!´¹«wÖòvÎ.8D£™EBˆR b°s(lBôe¨‹µk×J4eäÅyåÊ•éõ×_—€ëÙÿÖ[oQ»ví$n:˜ "ZÇ-FÅ}0˜1×9¬¸ÆEÙš5kÒ‚ ¤PG,ˆº ([¶¬×…„ (.p`` 5 nDPDP],…ëÕ«Gï¾û®<Úà°š´}ûv‘f`‚¸¸83‚90‰ˆ fÓ?Ý'ó;v¬H(0ÚC`²iÀòŒÙ·o_zòÉ'¥]Dwž5k–LH·Ó§Oëì^Î@ÀÇñÔ‰ƒÑÊQŸs\Q W«V-Ú´iA<ãËAqiòäÉıׅé@  ÂÁuÓ„ÁÖÔAHÈFQ¥J•dQŒànÈSC Ú3ð<üðÃfÂ5¤¤Úà ƒ¡ÝÞ“åË—Oƒ •fDHrH#DFùûï¿_‘œµ$A¨n0²þ!L8‚sŒxÚ±c‡H!ØJÂ΀ðžhL¬#¢­Í›7¤¤k«V­œ‹y|pŒË”)#ˆƒØ 3`À8Ú±xÃ9^`¾òÊ+Ä‘%Ä7fTT~±é*®¨Ž¡Žú¡"õ ÔéÖ4g¬×À3F­–>ÖûúÓ hmà©.~7Üp;è¬(YtL{}D""'>ðÀÖ*DuC­µlÙ’jÔ¨!4H“់øøx‰ :&T¿ŽEï‹ÈŒA!þé³Û¤â·ã‡sÌ( ˆ‹ÙˆãA”ƒp˜é®ìÂh„Ú‚¨Ç #¶nÝ*GØbÍš5“óƒн€ ä… Ô »éã?;F§c%©‰ú±ZƒtÒÆdѶY×®]å>TT˼yó㽄Avè$V¿~ý„AÀˆx¡ë ú\$$[ÇŽEòçúõë‹€2ZÚ:—õä:($;„!i˜1X"[cžBÚÀ@űaÆ28¸îß¿¿”±U׃ò˜½`0V°cÖ¬Y#y'L˜ å§M›FuëÖâÃ~ã7Dòéº`øç˜ôÂ(„ú ‘ºuë&x7ŒU®P¿=ô0?Ò!Á`Ë=ZÔ'l0ë”)Sdrè¶W쨩S§Òc=&‡ÁÌ`d+ Ú†Ýà mÖƒšŽ¥>úˆ}Z•|Ö²žžûõe*T ˆÃñÝ=Å+]þ¡C‡Šq ¤ú]Û: Ì 4gÎYÅ<øàƒr ƒÙ=qâD’’è ÜàÁƒ y @PO¢@ë6@Z-ê{°SÀÀ¨Ò’¹V¹:Ÿ#$ ¤0 t­!ý\pA­AŠAHJW!Òë@^0"Ž® ¨%F«„4VÀ8 ÖŒ³?g(QÂwÎÁ™méUÎag%Æ;˜N>êÂÏg|Àĺ¼»rvÓCBái²§ IBk£3iÎÄÄ Åàf4v‰ŽùÂByÊ<HgI„YçÌ<Èç* éìQ $Vaöºbr‚~Ua9á‹Ä@ Zv· ›Ñ݉~e ìî¨i/û)`TXöÓ<¬Z4 VÙý1 ”ý4«ÿD/ºÁ_ rÂIEND®B`‚mysql++-3.3.0/doc/html/refman/functions_p.html000644 000765 000024 00000012356 14042362132 022015 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
MySQL++  3.3.0
Here is a list of all documented class members with links to the class documentation for each member:

- p -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Null-members.html000644 000765 000024 00000020151 14042362132 025134 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::Null< Type, Behavior > Member List

This is the complete list of members for mysqlpp::Null< Type, Behavior >, including all inherited members.

datamysqlpp::Null< Type, Behavior >
is_nullmysqlpp::Null< Type, Behavior >
Null()mysqlpp::Null< Type, Behavior >inline
Null(const Type &x)mysqlpp::Null< Type, Behavior >inline
Null(const null_type &)mysqlpp::Null< Type, Behavior >inline
operator Type() constmysqlpp::Null< Type, Behavior >inline
operator!=(const Null< Type > &rhs) constmysqlpp::Null< Type, Behavior >inline
operator!=(const null_type &rhs) constmysqlpp::Null< Type, Behavior >inline
operator<(const Null< Type > &rhs) constmysqlpp::Null< Type, Behavior >inline
operator<(const null_type &) constmysqlpp::Null< Type, Behavior >inline
operator=(const Type &x)mysqlpp::Null< Type, Behavior >inline
operator=(const null_type &)mysqlpp::Null< Type, Behavior >inline
operator==(const Null< Type > &rhs) constmysqlpp::Null< Type, Behavior >inline
operator==(const null_type &) constmysqlpp::Null< Type, Behavior >inline
value_type typedefmysqlpp::Null< Type, Behavior >
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1WriteTimeoutOption__inherit__graph.png000644 000765 000024 00000014223 14042362133 031451 0ustar00tangentstaff000000 000000 ‰PNG  IHDR›‰;JsRGB®ÎéMIDATxí] œÕûfˆd‹H)²Œ]²DøÙŠ­|Zì[H) QÈN(²TöaB’%ÅXgÌ}Ë2öm"[1FÎÿ|Ÿqîïû¿sçÞcîÜeÎóùÌÜ÷}Ïþ=ßó<Ïyï{ß'HH!#4@ 8 Ú0MC6C„4CÀ-Í 6 eô6 ”)S&ow#àÛ?sæ =õÔS^§×ÉvçÎzä‘GèŸþñ*Üx•*UÈÈfÌh ³ÌÇÆfÈæcÈÝ1d äÙõ±±²É ¹uëmܸ1U§&22’&OžL3gΤ}ûö¹\7|×Ôî‹Ë{8£!›øÜ¹sÔ±cÇT»ëæÍ›Ó»ï¾K'Ož¤;vðyïÞ½Öß­[7ŠŽŽ¦ëׯӚ5kœæõÛD|]åM¹yó¦»Q§]8v온S§ŽhÚ´©(X° 9r¤ O>ù¤˜8q¢¸xñ¢(S¦ŒZë™0a‚2dˆ“'jÖ¬)òæÍ+zöìÉirW&jÕª% *$Úµk'ºté"Ž=*BBB8ýùçŸ]»v?þ¸hÑ¢×9}útѦMQ¶lY.·|ùrλ`ÁñÉ'Ÿðqß¾}Å¢E‹Ä´iÓDÅŠŽ{÷ø:þ]½zUäÊ•KlݺU8ªköìÙŒADLL å6mÚ$J•*Åeåb’Èâûï¿:tè§¼•!f̘¬N¥råÊ"**Êiž´Hô ÍOëÖ­£zõêÑàÁƒ©ÿþÔ¤Iš2e 3†$1(cÆŒôÛo¿ñ¢Ÿ7oÉÉ ¡C‡RÛ¶miÛ¶m$'ŽþüóO7nIÂr}§OŸ¦S§N%Q»wï&I Ú¹s'ÅÅÅѪU«èÂ… ´zõj’d¢±cÇ’$—ÉŸ??•(Q‚K–,I8‡&“ ‚‚‚lõæÌ™“*T¨ÀæÔQ]­ZµâþÊE·<Èe¡ ¡q×®]Ëcذaýý÷ß´téRš:u*õë×FmkÇçÒ‚ÑÎÚpE³8p@dÏžWöÙ³gY Èûs¬u‚ƒƒ¹ú#FˆN: h.9¹BTôêÕKHˆñãÇ‹'Np¾Ò¥K‹íÛ·óqxx¸hРAÍ&I+Ο?ÏéÐ8íÛ·Æ cmÇå?hEi"Õi’OäWZÔš …ú’« šZ’J`¬Å‹—.]bíªêøúë¯E÷îÝ…\`B. ¾ ™%K•%ÙO£ÙÜ\†ÐFÐ^’\”-[6z衇’ÔвeKZ¹r%­X±‚7nÌßJHsKЬ$áÚLš+.›9sæ$u¨“G}”qÃ>D]Ã1®Cë9’¢E‹²&²¦!¯$‘M ºRnÂBÃ*‘f™î޽˧?xH†ñ±?üó 3ê ÅŠ#é›öÚk¯q‘—_~™ð·lÙ26mØåIMÆäCevíë_¿~=ý÷ßL^©‘8& .µ"eÍš•¤_Æwå÷ïßÏéØqJ­K­[·&écÒÂ… ù:Ès^¾|yÂ|ˆ£ºp› %ÈíÚ5:tèï–þùg‹J÷ÇO¿'›Õ7ɤY¦úõëó\HŸ¤SOU«Våg³fÍ»¾Aƒ‘4§ì‡©ISõ€PІ… ¦ØØX’¦˜³@Ó<ûì³T·n]0`ûdðáÈéðã/^Ìþ Ü8p;ùòå£Ü¹s“tÎIn*TSLRûºàc¿¼rå çCKÿí)R„._¾Ì>«­’ûªßö×}òüA¹q°]†Ÿ%I%þúë/qãÆ ÛugR3ŠÃ‡óNÙšÏY]Òù·fåãÛ·o‹ãÇ'ÙÝþ¿L)\ðŸÍë_Ä§Ö Ä}-ìÚðgìTí%C† $o›vžŽ~¡òë¬é=ö˜õÔé1ê€öJNÕeõåT9ø•в AXÞúÔ‡Ô`”'O‘\øHÿþû/áÖ„©½¸uŽOäà锕ԬËÕ¾ÀW”÷#m>£«åR;_Àh6øGî v´V¢¡<k/©A2UgjÖ¥êô—O¿ß ø ЦŸòV·AÀSº0-þ²« ¦,YJÑíÛ‡å­;Þ†ÏåöŸ~úi—óz*£×5LÜFùÛ½û¤4½¡ò>Ú¿é3°õö#á °×Éæ©Uä©z-Š–›` Ûê©&¶^C67§vñâíòÛ…{ò¶É)yÖünÂø ÙÜ@+*ê˜$Zâ"|/¹|ùN7J›¬†lnp <|›ÜÌÄs |†…EºQÚd5ds‘wïޓ϶í–;Ðÿݽ$¿|¿êb &›!›‹ˆˆ8Äkv!‚hÉ’íÖKæØ †lNÀ±&…‡GÉ'JM¨ºŸ@óçSªðHéÓ-%„dú­[ ´~ýA‡*ÆÅݤ#G.ºP‹Éâõoüa bbb)>þ.åÈ‘…»‹gÞ‚ƒñƒ ùôì=ùk¨}T¬˜ûßÍúÃØS³^ê#5ãɺ"#1áÐF×®sä_^·‘¯Fbòmc$RÂßh¶”ºŸ^­ZQ[ÎL™2Põê!ôØc‰¿°%˜§˜å蓘š²i  Í_žRўNJ²i@‹»^~ÀY£×Þ/bÈæý9H7=0dÓ˜jcF5@“E Ù4p3fT4C6=ÐL)=ŒfÓÃÍ”Ò@ÀM4SDC6=ÜL)  Ù4@3Eô0dÓÀÍÜúÐM1dÓÀÍÜúÐÍM4SJ£Ùôp3¥40dÓ O|˜§>ÜÎÍ}ÌlïøÐ(𮋲¥ëéOÛÁ²iàmn}h€&‹²iàfn}h€fȦš)¥‡€Ñl¸3ªš,bȦ›1£ ²éfJé!೿ˆG(_xé°#X³f-'ßÓ¶_ÞoK \æ(·®ýñÇnÒ[í;k×gÍ(Èö /Øn úÒ žoÞÜ%ßÓ–às}kß¾=ÇIu6áÞLóY²yÓ¶g0dó ®¦V²9Å\ò ~O¶Í›7s,NÏÀ“r­ˆ;?kÖ,šý^³)ÀebZºt)M:•5ÌèÑ£©U«V,þ“¡øœ‰4ƒBú‚I²H'($ÑÄ7’¤I +¤©Lr 'Ò¤ ´©+ò»Q!72ºÅ=^.`5›uÁ[}'[Ï%¼ƒÌ;7]ºt‰"""lE± €fJIœ=¢ü@kØ 8ø,é‚lÎ&&­yóæì¤cÇ—!CgÙ]Nƒi6’tO6ÀÛj™ý³ä´—~þ_2]ìFýšcæI]7ç1((˜²d)%w´‡åm;n–ö|vó¤®ƸÃçÝ×þvï>)¿‘¥… ·ø\߀n­øª3êæÌ,Z͕ÿ¾r³xºÎnÈææô/^¼]~ O~iŠ®\ùÇÍÒé;»!›óuLMp |W¹|ùN7J›¬†lnp <|›ü _bœx|†…™øðnÀg~ï*XϽjÕn¹MÔl({I>|yÕÕ*Ò}>£Ù\¤@DÄ!ÞX³ $Ÿ=Ûn½dŽ `ÈækRxx”|2Ñ„ªëññ 4¾1¥ ”> ÙRBH¦ßº•@ë×äûjöÙãânÒ‘#í/›s˜ïF€b)&&Vþ&à.åÈ‘…“ð@$^›E$Ÿª½'Ÿ?Û'ÛÎg_ÌœÛ!à³_WÙõÓë§‘‘ǘpèH×®säX^·‘¯Fbò±mc$Rš$£ÙRBè~zµjÿ{Ö,S¦ òG(!ò7 ‰¿yp±ŠtŸÍ,ÇtO´ÀMkóšS ÐdC6 ÜpcOXqC6÷ð2¹C6 ðŒÕM1dÓÀ͘Q Ð Ùô@3¥ô0šM7SJC6 ÐL= Ùôp3¥40dÓÍÑCÀM7sëC4YÄM7sëC4C6=ÐL)=ŒfÓÃÍ”Ò@ÀM4¼Òïß©1î-bȦ zÿˆFÑt]Ä-]OÚÞMosëC4YÄM7sëC4C6=ÐL)=ŒfÓÀ͘Q ÐdC6 ÜŒÕÍM4SJyÏÈ&2à~2dþRÀ kÖr"((£Á)œ>ûì3·päñˆn‚ƒí۷פ®)fHD\B a«ŸÍІ9ö(†l…×TnEÀÍŠ†9ö(I|6¶äb嫨yŽ¢Ù¹XgCäâ;wrŒx¼Ùq<áC ("*«tœEô="'#F|¹råø<¹ª.ûtÄÀ’¡$9B³ªÓ>'ÏÃcDtAD ,_¾¼ŒF“øN¹”ÚEDiħPܵãsšmÁ‚„8*ˆ®7tèP:tèWÍqØwìØÁçv;bĈ$QøQ!ãǧƒò±ý? “Š¿ &ÐÒ¥Kù†¸ó rZÈÊ•+¹m´Cݺu“oÈ\Ï£±ìÙ99AÇŒÃÉ`’&—75®»­ÙÖ­[G[¶l!D ¨Mš4á#®y¿~ýl!ª…“Ò½{wž¸ùóçÊæÌ™“ó!Ü""/\¸ ,È“ŽhÂJäž={€ Ü6¢ ¿øâ‹ BjoÚ´‰5ˆ HË1Þ?úè#Ç0Dê+u”.]š@6,—?rבŽzÚ²eKϽzõjŽfEß~û-iúô邱å_}õUêÒ¥ wšQ‘4hÀç~ø!ÇxŸ6% (´)&dU“­ƒÕ®üøtð¹P$ÆCë ]”uE@Ún·víÚT¸paB zà„ÉÏ›7/“±I1å›o¾I `íÍëH£ýEßÔSÃöæ„Âx!¨8*TˆªV­Ê‹ãCº7ò¡},<1n,|´~Á„ß ¿Ð]Ñ"[þüù¹ 8GŽIÚÄDÁLÁwÁˆLš4‰W*V 4Èõ¯Ä‘C 0”ÀLC“AÔu\ƒ©JN,ê]´hUªT‰³`áááÜonÛÆÛ¾.€Š )ÇV;&Âq†ê…_©êÅÍtL:p«‘7ÝYKÚ·«`,ŒSù£* &‹¢0ñKœ[ýRíã:´4úQ¤D¿Õ5NpñŸÙRªƒ†Ý ´ÚÆÙ7‚YV«\¹2¯j +> ½,¼™þ V°Š×Ž]&Êa‚P˜Eh?ûc f&‚Oœ+­Æ“ù‡IÖƒy‡©‡FEßqýA “pÍš5 ‡E±yóf®wáqŽ].´!Lþ‘#GX ªöÑÔ£ÜäÀuÁfrâÄ 6HV˜#ˆýX`™ $€/Æ “®,x€noœµ¥Ô9ˆ³€ ‚`báë`§‡AÀGÀŠƒ‰iÛ¶-%$$ØV ò«z°Ê¡Ê¯]»Æ>"®cEM™2…‰ŸÎ2Ÿð'P§õmÃ7‚é‡ÀlC#[ɦÚã ÷ÿØð§fK?³^½zÔN:Ô0Sp–áZÅQykºõyñŒ@ú·Þz‹Ç‡úaZ´hÁ~Õ¼yó¸½/¾ø‚w¸o¿ý6/`,bÆŠ5ú„MÀ¨Q£sV S§Nl:A.h>ìV± A4l2gÎÌ.ϬY³l]„ÿ²cÀ ÷îÝÛ–¦ÔÔ¹«ŸI^M­ƒÝʃ~7Š :;cÆ †Âjƒ¦¨J@$¨ç^½z1¡ÔD†……1ØÐ&ȯT8Ì& ~„Õ «úRóZ@™ÃäåË—ºñ° 0>«éÂà+¡-åsášµ?8‡@ë‚HÐnäo M]Ù°s7nA‘ù¡Ù07Ö9Áu˜S,f…;®¹#÷¿ýé§ŸlÅRU³¡Vì±-†“i´ d{±Ù•t¬,O ýPDSÇÖsû~êžc“àH°(íÅQûj®ò"£|H¡ìIe%³ªŸžÀ7Õ5L"4€3§Û:(uŒ‰U¤V£º b&4aJUušÏDàºÀ|&GBOà”&š *Ý]¢a°ö@Ø“Lbˆ¦pý Ø_×K§^NìFS¯{¦¦€B@îîl"UŸyú4…§OåäŒ\ÄÀþIÝ$>[@­"3ŸCÀ˜QŸ›’Àí![àέÏÌÍç¦$p;ô˜{ðˆâ»¹ºIEND®B`‚mysql++-3.3.0/doc/html/refman/bdwn.png000644 000765 000024 00000000223 14042362133 020227 0ustar00tangentstaff000000 000000 ‰PNG  IHDR5åZIDATxíË € DŸP–1ñlžmÀ r±j².e è†D[ØÉ¾ÙÏÔ¼µ¦ã´Þ|陣6€Všë3´Å?Ls'(}¬>+ žKó÷¥¿ch`‚ ^׃ÞnIEND®B`‚mysql++-3.3.0/doc/html/refman/tiny__int_8h.html000644 000765 000024 00000012547 14042362132 022063 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: tiny_int.h File Reference
MySQL++  3.3.0
tiny_int.h File Reference

Declares class for holding a SQL TINYINT. More...

#include "common.h"
#include <ostream>

Go to the source code of this file.

Classes

class  mysqlpp::tiny_int< VT >
 Class for holding an SQL TINYINT value. More...
 

Functions

template<typename VT >
std::ostream & mysqlpp::operator<< (std::ostream &os, tiny_int< VT > i)
 Insert a tiny_int into a C++ stream.
 

Detailed Description

Declares class for holding a SQL TINYINT.

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadQuery.html000644 000765 000024 00000050207 14042362132 024313 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::BadQuery Class Reference
MySQL++  3.3.0
mysqlpp::BadQuery Class Reference

Exception thrown when the database server encounters a problem while processing your query. More...

#include <exceptions.h>

Inheritance diagram for mysqlpp::BadQuery:
Collaboration diagram for mysqlpp::BadQuery:

Public Member Functions

 BadQuery (const char *w="", int e=0)
 Create exception object. More...
 
 BadQuery (const std::string &w, int e=0)
 Create exception object. More...
 
int errnum () const
 Return the error number corresponding to the error message returned by what() More...
 
- Public Member Functions inherited from mysqlpp::Exception
 Exception (const Exception &e) MAY_THROW()
 Create exception object as copy of another.
 
Exceptionoperator= (const Exception &rhs) throw ()
 Assign another exception object's contents to this one.
 
 ~Exception () throw ()
 Destroy exception object.
 
virtual const char * what () const throw ()
 Returns explanation of why exception was thrown.
 

Additional Inherited Members

- Protected Member Functions inherited from mysqlpp::Exception
 Exception (const char *w="") throw ()
 Create exception object.
 
 Exception (const std::string &w) throw ()
 Create exception object.
 
- Protected Attributes inherited from mysqlpp::Exception
std::string what_
 explanation of why exception was thrown
 

Detailed Description

Exception thrown when the database server encounters a problem while processing your query.

Unlike most other MySQL++ exceptions, which carry just an error message, this type carries an error number to preserve Connection::errnum()'s return value at the point the exception is thrown. We do this because when using the Transaction class, the rollback process that occurs during stack unwinding issues a query to the database server, overwriting the error value. This rollback should always succeed, so this effect can fool code that relies on Connection::errnum() into believing that there was no error.

Beware that in older versions of MySQL++, this was effectively the generic exception type. (This is most especially true in v1.7.x, but it continued to a lesser extent through the v2.x series.) When converting old code to new versions of MySQL++, it's therefore possible to get seemingly "new" exceptions thrown, which could crash your program if you don't also catch a more generic type like mysqlpp::Exception or std::exception.

Constructor & Destructor Documentation

◆ BadQuery() [1/2]

mysqlpp::BadQuery::BadQuery ( const char *  w = "",
int  e = 0 
)
inlineexplicit

Create exception object.

Parameters
wexplanation for why the exception was thrown
ethe error number from the underlying database API

◆ BadQuery() [2/2]

mysqlpp::BadQuery::BadQuery ( const std::string &  w,
int  e = 0 
)
inlineexplicit

Create exception object.

Parameters
wexplanation for why the exception was thrown
ethe error number from the underlying database API

Member Function Documentation

◆ errnum()

int mysqlpp::BadQuery::errnum ( ) const
inline

Return the error number corresponding to the error message returned by what()

This may return the same value as Connection::errnum(), but not always. See the overview documentation for this class for the reason for the difference.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/inherit_graph_43.png000644 000765 000024 00000005451 14042362133 022436 0ustar00tangentstaff000000 000000 ‰PNG  IHDRm%HógWsRGB®Îé ãIDATh홌TUÇUé½J©R¤E©‘Þ{:¡ƒ`@iAÀ‚RCBÕЛô¦ô¡w0Ò{xÞßù¼ï{;Ìììì.²$s’™yåÞsï=õÎÄs I˜Þ& Šÿ6í6¼×ÿI ¬´·ÐÂJ{ •–лçÍ›7KÅŠ½Â×q@/_¾”xñâ¹;‰ài›6m’Ø$ü‰2@Y¾X1‚Ò\U†/â´ÂJ‹Óêñ¿¹°ÒüË%N?sJ;tè\»ví?ÚãÇeË–-±²¦åõðáÃXãé»±8§´‘#Gʆ |÷ùZï¯^½*_ýu¬¬ayÝ»wOÖ®]gûöíe×®]ßGö"d¥Í;Wš5k&¥K—–Â… ËÏ?ÿ, ”~ü¸ž©sçÎ:wöìÙ2tèPiܸ±ÊiôèÑ’>}úÈØø}²ÒàR¾|yùôÓOµ/W®œ{MhÀâÏœ9#W®\ÑbMx!Þ«W/)P €Lžç¹#aÑìaÉ’%ê &”Þ½{Ë Aƒ„õñ‘Ñ­[·ô5{M ܽ{W?4 R¤HÙT÷ÅñŠ+¤råÊ2~üx]3˜—º“\DKix¹QMÞÉ;·üúë¯B\1b„†€ÆW_}¥Š|þü¹zaÉ—ÈKpÏž=úJ”(¡Cy„0„Q¨P!}†Q€Ø {Í;B&áµI“&úŽ0<|øpéÖ­›ìܹó•nÖOXómî"&J”Húôé£|fΜe¥}0r:žŠgu ¿ÿþ[CýŠU¥Ùþ ÁJ›6mªû!$bóæÍ5& €BlòäÉݽ[>ŽÜPùöÛo5” D@^:wîœtíÚUçU«VÍ"Þk†a°DHåˆ"ô’«¬]O$¬b „Bˆóðüè£iú‹ :Ø|Y^ÜÆ3fÌ(9räÐä<¾ ƒ·/‘çPÞtrçÎ]Ûw¬÷ž„Ññû/ ŠÐå·Ocò{àÀ- ¨{¬ÂàÇ¢6”yùCOÈ—à]…Á+C† .KéK…ú>§d±„¢ýíÜçðR_²¹Ù÷yÐ{<ÍÒ÷ßï˜$koCú5KÇ›ºÈ1q;¤¹ 6ï˜ïÎ3Öîp&L˜à˜Ü㘦¸c¢{±uëVåéoB±cÊçþýûÞÇA¯ ŠtŽ9t\t˜àžý_]Ÿ ªÝ 6l¨#+^K2Í}Õî,Q@" _Ô„•*URÐÌ3íüÈ~ß 9Ч¥!C†¹0ªPÞÎÆïÛ·ÏÞþ'¿±¦4ÐÂõè‹gmÚ´ÑNÈ'Ÿ|"ÆÂ_9€Ti; 'Ò‰øæ›o¤oß¾2gÎiÑ¢…æ1`7à"sæÌZZØ: ¤iÁ H‘ŽJd²IBä ŠtxB ]“Ï>ûLºwï®% J''‘©)ú©7¿üòKåc¢–ò²_‹/Öž91¥XSÁÃ6™?R94pE˜Ð¡I›ç8´xÚ¶m«€e÷îÝŠía(Hñ4º 7ÚbÔ~Ô{t_€Ê” ä mO H×p"# ‹–/:9¬ êšP–‚h.Óš[µj•®C‡‘R„³øQ“Yƒ‚'Hõ÷ß—÷ß_ëT †qQ¡XU"EŠH«V­ÔŠ45žBË!@”@x,%°y`7‡ò‚£ F¯ö^dƒGP«PwìØ¡Ö~þüy`XŒè;®[·N½åÑš²¨kÂÄûéÞài(ËK”'µk×Ö2O¥ géÃ?ÔècÜ”AÈ€ûP)Ö”j²hXl’¦Èu„Z_ЩS§Ô,aŒ:Æ—è &ïc =Ædá¹!JÀ‹X@bfzøÇd`þÖòªi`ô¢¾ÃÃߌ…Ãã›|ŒV +-Fâ{3“ÃJ{3rѪÿl‡>¿ÎâIEND®B`‚mysql++-3.3.0/doc/html/refman/search/000755 000765 000024 00000000000 14042362133 020037 5ustar00tangentstaff000000 000000 mysql++-3.3.0/doc/html/refman/namespacemysqlpp_1_1ssqlsxlat.html000644 000765 000024 00000010421 14042362133 025457 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::ssqlsxlat Namespace Reference
MySQL++  3.3.0
mysqlpp::ssqlsxlat Namespace Reference

Stuff specific to the ssqlsxlat tool. More...

Classes

class  CommandLine
 Command line parser for MySQL++'s ssqlsxlat tool. More...
 

Detailed Description

Stuff specific to the ssqlsxlat tool.

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1DataOption.html000644 000765 000024 00000035300 14042362133 024637 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::DataOption< T > Class Template Reference
MySQL++  3.3.0
mysqlpp::DataOption< T > Class Template Reference

Define abstract interface for all *Options that take a lone scalar as an argument. More...

#include <options.h>

Inheritance diagram for mysqlpp::DataOption< T >:
Collaboration diagram for mysqlpp::DataOption< T >:

Public Types

typedef T ArgType
 Alias for template param.
 
- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 

Protected Member Functions

 DataOption (const T &arg)
 Construct object.
 

Protected Attributes

arg_
 The argument value.
 

Additional Inherited Members

- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 

Detailed Description

template<typename T>
class mysqlpp::DataOption< T >

Define abstract interface for all *Options that take a lone scalar as an argument.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/beemutex_8h.html000644 000765 000024 00000014227 14042362133 021703 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: beemutex.h File Reference
MySQL++  3.3.0
beemutex.h File Reference

MUTually EXclusive lock class. More...

#include "exceptions.h"

Go to the source code of this file.

Classes

class  mysqlpp::BeecryptMutex
 Wrapper around platform-specific mutexes. More...
 
class  mysqlpp::ScopedLock
 Wrapper around BeecryptMutex to add scope-bound locking and unlocking. More...
 

Detailed Description

MUTually EXclusive lock class.

Author
Bob Deblier bob.d.nosp@m.ebli.nosp@m.er@te.nosp@m.lene.nosp@m.t.be

Modified by Warren Young of Educational Technology Resources, Inc. from version in Beecrypt 4.1.2:

  • minor style changes to make it fit within MySQL++
  • changed init() to a ctor and destroy() to a dtor
  • class just becomes a no-op if no supported mutex type is available
  • throwing MutexFailed instead of char*
  • moved all method implementations from inline in the .h file to a .cpp file so we don't have to make the header depend on config.h on autoconf-using systems
  • made private mutex member a void* so we don't have to define the full type in the .h file, due to previous item
  • added more Doxygen comments, and changed some existing comments
  • using MAY_THROW() from MySQL++'s common.h to allow it to compile on C++17 and newer compilers
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Comparable.html000644 000765 000024 00000036001 14042362133 024641 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::Comparable< T > Class Template Reference
MySQL++  3.3.0
mysqlpp::Comparable< T > Class Template Referenceabstract

Mix-in that gives its subclass a full set of comparison operators. More...

#include <comparable.h>

Inheritance diagram for mysqlpp::Comparable< T >:

Public Member Functions

bool operator== (const T &other) const
 Returns true if "other" is equal to this object.
 
bool operator!= (const T &other) const
 Returns true if "other" is not equal to this object.
 
bool operator< (const T &other) const
 Returns true if "other" is less than this object.
 
bool operator<= (const T &other) const
 Returns true if "other" is less than or equal to this object.
 
bool operator> (const T &other) const
 Returns true if "other" is greater than this object.
 
bool operator>= (const T &other) const
 Returns true if "other" is greater than or equal to this object.
 

Protected Member Functions

virtual ~Comparable ()
 Destroy object. More...
 
virtual int compare (const T &other) const =0
 Compare this object to another of the same type. More...
 

Detailed Description

template<class T>
class mysqlpp::Comparable< T >

Mix-in that gives its subclass a full set of comparison operators.

Simply by inheriting publically from this and implementing compare(), the subclass gains a full set of comparison operators, because all of the operators are implemented in terms of compare().

Constructor & Destructor Documentation

◆ ~Comparable()

template<class T >
virtual mysqlpp::Comparable< T >::~Comparable ( )
inlineprotectedvirtual

Destroy object.

This class has nothing to destroy, but declaring the dtor virtual placates some compilers set to high warning levels. Protecting it ensures you can't delete subclasses through base class pointers, which makes no sense because this class isn't made for polymorphism. It's just a mixin.

Member Function Documentation

◆ compare()

template<class T >
virtual int mysqlpp::Comparable< T >::compare ( const T &  other) const
protectedpure virtual

Compare this object to another of the same type.

Returns < 0 if this object is "before" the other, 0 of they are equal, and > 0 if this object is "after" the other.

Implemented in mysqlpp::Time, mysqlpp::DateTime, and mysqlpp::Date.

Referenced by mysqlpp::Comparable< T >::operator!=(), mysqlpp::Comparable< T >::operator<(), mysqlpp::Comparable< T >::operator<=(), mysqlpp::Comparable< T >::operator==(), mysqlpp::Comparable< T >::operator>(), and mysqlpp::Comparable< T >::operator>=().


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SimpleResult.html000644 000765 000024 00000022702 14042362133 025227 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::SimpleResult Class Reference
MySQL++  3.3.0
mysqlpp::SimpleResult Class Reference

Holds information about the result of queries that don't return rows. More...

#include <result.h>

Public Member Functions

 SimpleResult ()
 Default ctor.
 
 SimpleResult (bool copacetic, ulonglong insert_id, ulonglong rows, const std::string &info)
 Initialize object.
 
 operator private_bool_type () const
 Test whether the query that created this result succeeded. More...
 
ulonglong insert_id () const
 Get the last value used for an AUTO_INCREMENT field.
 
ulonglong rows () const
 Get the number of rows affected by the query.
 
const char * info () const
 Get any additional information about the query returned by the server.
 

Detailed Description

Holds information about the result of queries that don't return rows.

Member Function Documentation

◆ operator private_bool_type()

mysqlpp::SimpleResult::operator private_bool_type ( ) const
inline

Test whether the query that created this result succeeded.

If you test this object in bool context and it's false, it's a signal that the query this was created from failed in some way. Call Query::error() or Query::errnum() to find out what exactly happened.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/functions_func_m.html000644 000765 000024 00000011104 14042362133 023014 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
MySQL++  3.3.0
 

- m -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Time__coll__graph.png000644 000765 000024 00000016026 14042362133 026007 0ustar00tangentstaff000000 000000 ‰PNG  IHDRžÝLƒÈsRGB®ÎéÐIDATxí üUÇ;¨€€hŠ$(¨aJ)¢(¢Bf*E"f™h¹’™àЦ¤n€I,¦¨$ Å¢‚ˆ€€‹ È"²ƒ2ïyÌ{ÿ7óþïÿÞ{ïžÏç½¹s·™9÷wÏ9÷ÎÜs+xJâÈq ˆ¨XÄr®˜ã€qÀÈ!#8eÄ>WX°|š2e öû9„bàÚk¯õábÇ8 ¤’‡zP¹ŸãA ¼óÎ;²råÊ8± ¸wâ8P8‚I.K8€ÂyãR ÁÊ…ÈS¢Y,X õë×—£>:+×ݽ{·L˜0AþûßÿÊ…^(§žzjVêÍV%3fÌ“O>YêÖ­«rçÎòþûïK›6mbqé>ýôSY´hQ"ǼœtÒIâ3‰(sèñÇ—ýë_™ó_üâÞ7¿ùMïÌ3Ïô–.]jåž~úiïÄO4^üéO²¸×^{ͻ馛,Ÿv /Yžï}ï{^‡ì<ÛâÅ‹½åË—{Mš4±:\žvã]×®]½½{÷Z|ð{ mÕªUÁh W©RÅSé[ ¾OŸ>m  K H¯uëÖqÙÓ–@›7omLÑÆ—sÎ9Gºuë&ƒ–Ž;ÊÀE™ ìÛo¿-U«VeŠüãÿ°ž¦ !ÊH¡žGyÄòÞqǦfp1 Ó‹Æ/£F¤Ò<`i~ø¡Ô©SGæÍ›'Ÿþ¹ÕKÂÙgŸ-‡z¨åñÃóçÏ„Åù:u2©ôÖ[o™š`êB;„ôèÑò(ò·¿ýM†n’kòäÉv¾bÅ ÑÆŽï½÷žœwÞyòÔSOÉÆI2zôhQÐX]»ví’/¾øBþò—¿˜4iܸqÒ<\”|\õ o‚tÏ=÷È¥—^*o¼ñ†I¤)¤­('N”Ë.»LÎ:ë,©X±bœ Ö‘,̵hCíœÒ»woãe²|)ã‚p*Œ¢w]rÉ%VläÈ‘=7nœ×¶m[OçÕªUË[½zµõ`®"Ù;ì°Ã¬7’ÔÓ;U¼ZYþè½3gÎŒI Ç{Ì$Ÿ)D«\¹²÷ÙgŸYôСC½Î;ûY O?ýt{LF Z“ž~ÚQGå)hMÌš5Ë¢›6mjR•¤ =ç¥çBôl†I&$Å€Lzicz *“¢?úÑ,/Ò+YêS Zµ[¬>_!]kÔ¨á=ùä“Þ³Ï>ë]~ùå&•áÚM^óæÍ½Aƒyªž­|²¿0 äçýàƒ¼.]ºxÚ)—[¶lñ“ ³"@$Æ” õÕªU‹éݱcÇ =ƒXÕ›IŽÛo¿]TE†^Æ ­þ(—H‡~x,JAë%~‘#Ž8"V䫯¾md;z>2¯\¿~½´lÙÒ$-R¹zõê±zUÕZ8*?` œ¶Z¬,u«Ê2‰¨ +j6ÈücÁð†?ýéOEA“¼±‚i¾ûÝïZ=H$¤\?“U›¶ KVIb ùýï/Ú«Em#í*-äøƒ¨ bª6І£1U'V#j—X£Î™3ǘ¤Åò î¿þúkQi&j‡Yõc?¬Óî2fÌùÏþcy´·“ˆ¿øâ‹€SFû7¾ñBü¸>DÝW]u•ݧÚz¦~PÙ¨â È˳„åa”¡U"Y˜¿ãŽ;ÎFMÄÝÿý¦*1„é¨PÂŒªÔV•š±r… HÔ/#À{ï½×êX³f¨MZ˜â±ø üä'?±8$#+‰ñüóÏKß¾}:ø°¿ C·Ýv›þ!5‹LAEW(˜?,Ìè ›B&–E{º‡ŽÇF ’Ši‹SCÐl ? ¨gÏž6‚Ûºu«m66”J­X\ªövå‰z‚õ'¦'žc³¨î© ñ´3Ä’y>ÿž¸N2["*ö~O;R¬¾`€ú–,YâQ>ŒxƨôÄrÉFs‰yÏ“Ù@Y•@ ˜‘ÏÕW_m#_ÿ½ä«Î} Ú!~\ðX¯^½à©…©+h?ÈAoF•&£tê –OõÁ{RÃUø%RTâHÌ;§®T’…gô¥V¬`DI™ ÊN-;A%¡ï™MN‡²ÕØ]wÝ•´¸ŽÀ¤R¥JIÓJ"’aú!‡R—*×È:€0"ÓœòG6>×Â)•ÄòË×±víÚÅUu¹¬·XFaå’Ơ¡¤³²LB¸ß\ÕJ¼]?‚˜Hü"±*ôò Ôø"›>¹J_±Tª‘œþ#:ƳÝëõ%ÕB‘Ê5EÖ¼–+ïã€Â °êeÍÓ1ÆW[E–=–+ïã€Â °\Aóõ¯>Ÿ.²÷‹°œyù·¯Ùºâ`J¥ª"Ÿ¾~ðÜ…bpб"X9BOc‹½ÛT dpAŸ@>'‚LJ¨úÚŒQƒzÈ®µñqîL€A°EG^»7$Æê¹¾>YõR’øüŽrJlÿÃDöíMŒU‰´Sdùà‚ñy“õwa垟ŸŽÖGÐ/+ªál„-´ÿ;'Ù¢¦íÙ(RµÞ4wp3щØ·Gç~,ûa.hÝ‘– èJúÙm%÷&>È2'‚Ü ŒäÑ/ Œ*ë*@SµÎþs÷_€Î*À’@ŸèVp, p¤@Ðq§K¼göö¯Ôĺ`€@f¸`úpŠâY5]7V3ù·ÔQÅò)ÍÂò©µ‹áY*¦æS•nŸÅÖÆñ®Y‰U¯,6H¶¬)1oy;wÊb‹±„šuq¬¨eµ)> uck¶r@,ouT°ZϺ޿@éwß}×k¤ÞD|R5+m?þøcó`¢Ì¿ú0ßHê\Á|‘?Êåýë_Û*[¿îÒ>:(JñÞ‹Ë„—G}Ԩ˕B¹Ìcm?Þ4ð€#u†%ºŒÜ&¨ûQ—9æx‚Ë„ù"5qº|Ù¼tPG¥M@Q-°fœÈ‚^–'P7Üpƒ9…À›³p³‚#‰t¨fÍš¢ÎÌ;‹'Qs Û ¯ GY³gÏ67:\Ã'õ»d@#Î$Ôë›ÙU8‰(-r*$çq‡‚g6üéàÑ Ï"E!ugØüøÒ<: ÅýB¼ Ë6x¸0@¥éÖ&ŒMN…qÆÅŠåc¡²»LŽñpŠç‡;K“@i2Ìeç€P·~žÝ(Љn]Xw,Í(ŠEn]Xw€RrÇeHÉ'¢XTˆwaQÅó!ͽ ˇV.Ægt¨™›U;åC+ã3:#só¡j |håb|F (æºwaQܱ´Œ>i-Kßæ¦|Ò"dh¨¾4ë×™¿¶°5•í"ºâ5¶•{ºwš€¸˜.­M÷š.â[НX±¢Èr*¬ 5fy¼ òØje螀ÊPc”Ç[)×Ú¹s§¼óÎ;Yå;>~,¯¼òŠlß~ÀáxV¯PôÊ6mÚ”tü‚ „íÐKƒÊ5€ðhÁ2ãlQ¿~ýäòË/·%Äÿþ÷¿ÍF²eËÙº^ºõpO,}N¤Çܼz$Æ—Äy±ë¾]»vÖ(8èÓ§`õsÌ1æ˜_;§vš¹5áaû÷ï/¿ýíoåý÷ß—óÏ?_Ž<òHùÕ¯~e|À±Á\ 7–Î;ËÍ7ßÇŸ-ZÈ-·Ü"Gu”têÔÉê|á…l-yóæÍ­^à ¤K=â eñÙ3uêT»¸Mñ]ÖMŸ>]¾ýíoKݺu妛n–4¿üòËæláÌ3Ï´4ÖÊ7kÖÌ–$³v—wêLÊÜ·àæŽ:!<˜]vÙev¯—\r‰à•jÛ¶­ù jß¾}høpöÙgoüg°ÂúLj€5lØÐ|áx¡¸©X”Ê¡ai°ï(iĈrÆg˜'œÌš5K¦M›&K—.¤®QðŸƒ|ô‰ÆªS§ŽÌ›7Ïÿ=k×®•ñãÇ‹zzé<`E0Þ- ?¼páBÊrO>QŸ_H»I“&Ù}´Í›7›Ë€Î9çH·nÝLýázeàÀ²mÛ6K¿ýöÛí¾q$E§yâ‰' ÐK–,õN&Ï?¿OVž“ÎC' ËC™®]»Z' ÏèŽ^}õUs¯wÅW¿}ûŠ×QzÆó@þ͇}‡J0Îw¨„ó¿g_yå•öÀgùòårÑE ` >yH/u‚¢!‡ Và’wÞy§ÐÓ»téb N8á“~'t’ðëÞ½»ï¼óÎ~F:aS%#$~xîºë.KFÒ=Ú¤N›6mäÜsÏ5W+8D Ì}xèÄO”:X© Õµñ°A£ãïbb ãƒ÷1äMÌÃ3ýüç?·ü^x¡Lœ8ÑÂüá¿éƒôÃÕÆí¾àYqQ±J n:Ê¡騛qãÆˆ~øÃš7SLŸ2eŠI ©s jÕªÙ1ñïð÷(õ_óÛãÇ‘@¼¯.Ëâ cÙ²e¦:ü4®‹JH#ŸèÕ¨0èøã·#^3Po‰”ìú¸±CÊ𨿠ù0,˧êÕ«ÇMäÂ#0`~=ôЋ“Š@©n¾iÓ¦R¿~}ë•H#)Äo̘1fC1Ò•€‚|•g'¿É“'›Aé{DEÕÐàsæÌ1×q§Ÿ~º_;öa$©N3­Qp¥Ò³gOóFF<  )5vìX»¿À¥Cƒ‹/6µEyì(:Ì„ ¤oß¾&ÑPÓÉfóÃò ªQ[ø]D½cSú„„óǽ÷ÞkÞˆž» ¾G8Ø _|±ñÝq±ˆªcd„/Á^½z™Ú@´ûä×HZˆk$†z3µ,5£1:ÉM8 ?ŒyñÅMä#uêÕ«'H ƒ2ÀÔÄA5à×0ŠüûÂ?tË–-ͰÆ`F£bùa”\ì¤ä—K–gݺuæTŠª¬uëÖÒ AƒX9:åIƒ¨ú0im…²ñ—‰›X½~&Åceqw‹ûÚ )³µ =í4VNçw’Ö–‡útÞ'é5‰ÔNcÏš! £dOíË@LzÁb7¢SüŽ;î0#9H¾-ŒC¿c Æ“RÄ·“‚éH“t(,?½¹()¶ ¿ ¡¶} ÚW~ǰ<ÔÅ`!Œ|©–žÍøŒ>ªG\*^3ºÄ2þÓñ¾Å(—¸AØÔ$ò@Œþ‚„­¤Ò$eaT ª2¥¡jÒi/‘¬¨åûî»/ΖJçÂ¥.h´t C1Ê'‚‡¸Dà1Áöå—_Úkær0>¡c=Ö élˆ9®² {è ÿJ}–áý§,Îû#FVþ,4î¿ÿ~õa´3ÿÄ´?&'Tªfêxýõ×ÍfÉ»³ 1wÅ<ÎÉsr@ ÍyÝÍÂì.#±TĨ ¥šaF51*|ê©§ œŒÔâûÄÈ Î5²|¼ÃÊUÊ9ñf½Î0UDã1L¦QÓ!†™÷oÌV3ÃL˜iæ¥P¼?ã£ÀøÄ,2jÑ¢Efó>ûá<×(çÄl2“‡lFÂV¼ë* EÍ03gÃüŽ?ãËÖÌ»$6÷ÀËQ w^Õä倘„¤‘>H"z?ï­üWÙh@&ùVˆ)&,ß~ûm{Mâ×͵^{í5á]’ qO¼™Ï5Ê9Ñ@Ì‘ð›;ˆ·åþóŸ³ÒvL]0GuÝu×Ù§¼ëc¤Å¬¹Oƒ ²ÏUØ’€{à^¢æmüråñXêó@%Å4¤B¶½Ê3Êb:©8®¬?›ár?”MfDÕ•mðp-$O²yžâ¸VÔ³•fZNª°Òdh¾]Û(ßZ<ËÏë”e†æ[uѹ̰êÕ›è|O5”§æòcÚ„¨?ï•îƒfô25Ó7ñéÞlIç¿ôÒþºü*ý¢ð-ý0+#V•ô­—Øõœ aõ¦MÛeñâÕúÁ{5ý„vÿç¯!Yó:Ú(¤ùß|s¾ÎUÒïyvˈßs…dÏÛh ¦6l†~´¶ÇRß{ïcRHÖ¼ŽvJÒükÖ|¡>sÖÇRªV­¤K’FË”§ $ ?zô­KA >#vî9àt±ÐÈ‘ïÉîÝ{cç-Z­Ëy¶ÅŹ ,[¶NW¯ ý3/!·;uJÀÀ¨Q³õÛ¡‚ vîÜ£ëñK`—¸Ù±Ž0|¯PÁÓu\UlÉ«–*VÜo-]ºV¿—Þ¡ëäã— %T‘W§½ÊÈENíÞý•¾ºØï¥0Íœ¹Bz÷îh ¨jÖŒ_ ˜‹]›ŠÈ–×I@ÍÏ$¢:#‹Èá’€2â€Pûœ ‹`Î$ 9Á ÔÌq9RsÀI Ô+}ûö•“O>ÙÒF%lÄË6—Ÿ}ö™L™2Åâ»ví*lj¸Ø"“í3§M›&<[‡³+÷Ùeúž{îQwzu¬lYý+óhÆ ²téRyä‘G H“&M²½ÚÙðÝwßµí&Ù†¢1Ø~r„ R£F uŠ9Lj×®mñ³fͲ]“i â>ù䓸6Y³f56€ef¶íf˜Ì5Ø,€½ñƶ§<›5k¦Þ˪Ûm¾ÃhÏž=±k­^½ZÝï–G}T&Nœhõÿñ´ûcûðqãÆÙæÀ\‹ºŸyæ™°jËL|™œjÛ¶­4iÒDš6mj{·7nÜXh´7Ú9=âxþùçÛVß„Ù/¾S§NÂ|j„ýA5j$ì윌ÈwÄGØÜÊÌ™3-KÆ mžŠrH $Ô¹sg©W¯ží ïK%KHñסC“Tõë×7‰F½\ƒg¬ØLØeì:ýÑGe“—2¯Âhï÷Š+J­ZµâšI@/‡ùôn€…j@B!™î¾ûn¹óÎ;Õ÷óç¦æ(ÌžïÉè°Ã³h6ÍeC]È#Œç¼(õ,â UvÈ!‡È•W^Y”K”h™r!¢8XÚ´i#O?ý´IÎ `êâÚk¯•¹sçJË–-Ͷ ®0£–žF¤Ķݛ7oÖÍV¶ÉÂ… íÄFÅñ#œ bVɃM× A³é²QoqÖQ.$P2~Ð\ £G–víÚÙyëÖ­¥G‚1KÃ3* Åî@õ|ýõ×–Ïÿóë™G¹¼ôÒKrÛm·ùQvdvÜqÇÅÅqBÃ`3…Æm"a3…ÙM‰y³qŽú*/Tî%’ãÀ¤C¨†ó>¡ê:c|û„ª£— i?­,ÊB+ ŽŠBAðP>HPcÉâ‹r½\-SîGa¹Ú0åå¹ÊëR¸cæp|ðÁR¸rî\²¤ û0Ž•ª vS.¾üpÀ©°òÓVeòN€Êd³”Ÿ›r*?mU&ïôÿjÚàƒ%á^IEND®B`‚mysql++-3.3.0/doc/html/refman/query_8h.html000644 000765 000024 00000017236 14042362133 021235 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: query.h File Reference
MySQL++  3.3.0
query.h File Reference

Defines a class for building and executing SQL queries. More...

#include "common.h"
#include "exceptions.h"
#include "noexceptions.h"
#include "qparms.h"
#include "querydef.h"
#include "result.h"
#include "row.h"
#include "sqlstream.h"
#include "stadapter.h"
#include "transaction.h"
#include <deque>
#include <iomanip>
#include <list>
#include <map>
#include <set>
#include <vector>
#include "insertpolicy.h"

Go to the source code of this file.

Classes

class  mysqlpp::Query
 A class for building and executing SQL queries. More...
 

Functions

std::ostream & mysqlpp::operator<< (std::ostream &os, Query &q)
 Insert raw query string into the given stream. More...
 

Detailed Description

Defines a class for building and executing SQL queries.

Function Documentation

◆ operator<<()

std::ostream& mysqlpp::operator<< ( std::ostream &  os,
Query q 
)
inline

Insert raw query string into the given stream.

This is just syntactic sugar for Query::str(void)

References mysqlpp::Query::str().

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Query_1_1MaxPacketInsertPolicy.html000644 000765 000024 00000032747 14042362133 030521 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::Query::MaxPacketInsertPolicy< AccessController > Class Template Reference
MySQL++  3.2.5
mysqlpp::Query::MaxPacketInsertPolicy< AccessController > Class Template Reference

An insert policy object that triggers a new INSERT statement if the object to be added would cause the statement to exceed a maximum size. More...

#include <query.h>

Public Types

typedef AccessController access_controller
 Alias for our access controller type.
 

Public Member Functions

 MaxPacketInsertPolicy (Connection *con, int size)
 Constructor. More...
 
 MaxPacketInsertPolicy (int size)
 Constructor. More...
 
 ~MaxPacketInsertPolicy ()
 Destructor.
 
template<class RowT >
bool can_add (int size, const RowT &object) const
 Can we add another object to the query? More...
 

Detailed Description

template<class AccessController = Transaction>
class mysqlpp::Query::MaxPacketInsertPolicy< AccessController >

An insert policy object that triggers a new INSERT statement if the object to be added would cause the statement to exceed a maximum size.

This differs from the SizeThresholdInsertPolicy in that it builds the VALUES expression and checks whether it would cause the length of the INSERT statement to exceed the maximum size.

Constructor & Destructor Documentation

◆ MaxPacketInsertPolicy() [1/2]

template<class AccessController = Transaction>
mysqlpp::Query::MaxPacketInsertPolicy< AccessController >::MaxPacketInsertPolicy ( Connection con,
int  size 
)
inline

Constructor.

Parameters
conconnection object used for escaping text
sizethe maximum allowed size for an INSERT statement

◆ MaxPacketInsertPolicy() [2/2]

template<class AccessController = Transaction>
mysqlpp::Query::MaxPacketInsertPolicy< AccessController >::MaxPacketInsertPolicy ( int  size)
inline

Constructor.

This version does not use a Connection* so it will not be able to take the character set into account when escaping the text.

Parameters
sizethe maximum allowed size for an INSERT statement

Member Function Documentation

◆ can_add()

template<class AccessController = Transaction>
template<class RowT >
bool mysqlpp::Query::MaxPacketInsertPolicy< AccessController >::can_add ( int  size,
const RowT &  object 
) const
inline

Can we add another object to the query?

Parameters
sizecurrent length of the INSERT statement
objectthe SSQLS object to be added
Return values
trueif the object is allowed to be added to the INSERT statement

The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1UseQueryResult.html000644 000765 000024 00000132121 14042362133 025555 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::UseQueryResult Class Reference
MySQL++  3.3.0
mysqlpp::UseQueryResult Class Reference

StoreQueryResult set type for "use" queries. More...

#include <result.h>

Inheritance diagram for mysqlpp::UseQueryResult:
Collaboration diagram for mysqlpp::UseQueryResult:

Public Member Functions

 UseQueryResult ()
 Default constructor.
 
 UseQueryResult (MYSQL_RES *result, DBDriver *dbd, bool te=true)
 Create the object, fully initialized.
 
 UseQueryResult (const UseQueryResult &other)
 Create a copy of another UseQueryResult object.
 
 ~UseQueryResult ()
 Destroy object.
 
UseQueryResultoperator= (const UseQueryResult &rhs)
 Copy another UseQueryResult object's data into this object.
 
const Fieldfetch_field () const
 Returns the next field in this result set.
 
const Fieldfetch_field (Fields::size_type i) const
 Returns the given field in this result set.
 
const unsigned long * fetch_lengths () const
 Returns the lengths of the fields in the current row of the result set.
 
Row fetch_row () const
 Returns the next row in a "use" query's result set. More...
 
MYSQL_ROW fetch_raw_row () const
 Wraps mysql_fetch_row() in MySQL C API.
 
void field_seek (Fields::size_type field) const
 Jumps to the given field within the result set. More...
 
 operator MYSQL_RES * () const
 Return the pointer to the underlying MySQL C API result set object. More...
 
- Public Member Functions inherited from mysqlpp::ResultBase
virtual ~ResultBase ()
 Destroy object.
 
const Fieldfetch_field () const
 Returns the next field in this result set.
 
const Fieldfetch_field (Fields::size_type i) const
 Returns the given field in this result set.
 
const Fieldfield (unsigned int i) const
 Get the underlying Field structure given its index.
 
const Fieldsfields () const
 Get the underlying Fields structure.
 
const std::string & field_name (int i) const
 Get the name of the field at the given index.
 
const RefCountedPointer< FieldNames > & field_names () const
 Get the names of the fields within this result set.
 
int field_num (const std::string &) const
 Get the index of the named field. More...
 
const FieldTypes::value_type & field_type (int i) const
 Get the type of a particular field within this result set.
 
const RefCountedPointer< FieldTypes > & field_types () const
 Get a list of the types of the fields within this result set.
 
size_t num_fields () const
 Returns the number of fields in this result set.
 
const char * table () const
 Return the name of the table the result set comes from.
 
- Public Member Functions inherited from mysqlpp::OptionalExceptions
 OptionalExceptions (bool e=true)
 Default constructor. More...
 
virtual ~OptionalExceptions ()
 Destroy object.
 
void enable_exceptions () const
 Enable exceptions from the object.
 
void disable_exceptions () const
 Disable exceptions from the object.
 
bool throw_exceptions () const
 Returns true if exceptions are enabled.
 

Additional Inherited Members

- Protected Member Functions inherited from mysqlpp::ResultBase
 ResultBase ()
 Create empty object.
 
 ResultBase (MYSQL_RES *result, DBDriver *dbd, bool te=true)
 Create the object, fully initialized.
 
 ResultBase (const ResultBase &other)
 Create object as a copy of another ResultBase.
 
ResultBasecopy (const ResultBase &other)
 Copy another ResultBase object's contents into this one.
 
- Protected Member Functions inherited from mysqlpp::OptionalExceptions
void set_exceptions (bool e) const
 Sets the exception state to a particular value. More...
 
- Protected Attributes inherited from mysqlpp::ResultBase
DBDriverdriver_
 Access to DB driver; fully initted if nonzero.
 
Fields fields_
 list of fields in result
 
RefCountedPointer< FieldNamesnames_
 list of field names in result
 
RefCountedPointer< FieldTypestypes_
 list of field types in result
 
Fields::size_type current_field_
 Default field index used by fetch_field() More...
 

Detailed Description

StoreQueryResult set type for "use" queries.

See the user manual for the reason you might want to use this even though its interface is less friendly than StoreQueryResult's.

Member Function Documentation

◆ fetch_row()

Row mysqlpp::UseQueryResult::fetch_row ( ) const

Returns the next row in a "use" query's result set.

This is a thick wrapper around DBDriver::fetch_row(). It does a lot of error checking before returning the Row object containing the row data.

See also
fetch_raw_row()

References mysqlpp::ResultBase::driver_, mysqlpp::DBDriver::errnum(), mysqlpp::DBDriver::error(), fetch_lengths(), mysqlpp::DBDriver::fetch_row(), mysqlpp::RefCountedPointer< T, Destroyer >::raw(), and mysqlpp::OptionalExceptions::throw_exceptions().

Referenced by mysqlpp::Query::for_each(), and mysqlpp::Query::store_if().

◆ field_seek()

void mysqlpp::UseQueryResult::field_seek ( Fields::size_type  field) const
inline

Jumps to the given field within the result set.

Calling this allows you to reset the default field index used by fetch_field().

◆ operator MYSQL_RES *()

mysqlpp::UseQueryResult::operator MYSQL_RES * ( ) const
inline

Return the pointer to the underlying MySQL C API result set object.

While this has obvious inherent value for those times you need to dig beneath the MySQL++ interface, it has subtler value. It effectively stands in for operator bool(), operator !(), operator ==(), and operator !=(), because the C++ compiler can implement all of these with a MYSQL_RES*.

Of these uses, the most valuable is using the UseQueryResult object in bool context to determine if the query that created

Query q("....");
if (UseQueryResult res = q.use()) {
// Can use 'res', query succeeded
}
else {
// Query failed, call Query::error() or ::errnum() for why
}
UseQueryResult()
Default constructor.
Definition: result.h:302

The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1FoundRowsOption__inherit__graph.png000644 000765 000024 00000013741 14042362133 030742 0ustar00tangentstaff000000 000000 ‰PNG  IHDR–‰ÎÁ¬sRGB®Îé›IDATxí] ”MÕÿšS"zy“H!‘GüY éé­‡ñ(‰¼z‘P–%j"–QZ^¥HLEÞò(²$½T4cSÙÿï÷±OçÞ¹wî>Ó¹÷š½×ºsÏÙçÛóÛ¿ýíoŸ{çþÎQœÈ&‹@xx+.¼õÙÚ,§°Ä²LÈ,±òV[iĈղeK:çœsì+1X¿~}Ä1býú믴mÛ6ÂÞÁ¾ÂÁ€¨P+bSÉ6\ DÌcÈÝÙF"†€%VÄ ?».ÔÄúôÓOéäÉ“aá]»vÑÛo¿M'N¤•+WJìhZyZZegg›šG½]¡&V—.]è÷ßË ½ôÒKÔªU+ ˜þùg^|ñÅŠI¥`‹¾3)Õm·Ý¦.¼ðBÉCÿ¾ýö[¹—Ö­[Ëý“P‰w…êµ×^ e–_×§EµÇÚ½{7ýùçŸôÁÐŒ3döcùÂùÞ½{éšk®¡ùóçËdÆ;ΧOŸN<ÈôÍ7ßœØ.Y²Dm,_¾\òpÍöìÙ#õ­[·Ž7nLãÆ“¶.\H}úô¡+Vˆg9pà/^œ4h ÅË—//mnݺ•®½öZb⺫¥¦M›ÒŽ;ÖUªT)b’¼&“Wìþúë/i›‰L7n¤Ò¥KÓäÉ“e¹NMM¥6mÚÈý¦¤¤Ð/¿üâÓVÔäeCÕkâ±à6lØ UU­ZU­^½ZŽáUV­Z¥Ö®]«ªT©"yW_}µâç6êÃ?T]t‘x’M›6ɵ¾}ûª1cÆÈ1¼JBB‚k1kÖ,ÉÛ·oŸºòÊ+¥­jÕªIþtëÖM1is÷ò¯»î:w–3)¥ú¨®‘#Gª¡C‡Š-î•É¢jÖ¬©¶oß.yLJU½zuñˆ•*U’<üÇÕ¸8™~Öc…˜j•+W‹¸¸8bÂøXßtÓMâÑàYàÙàIxùLš9s&ýøãÄ$’²L*Ÿ:ô <èƒʱÎóÏ—‹®?W]u1mºxxQ$“º˜ÒWxZ$^îéï¿ÿ–cxaŠ)âic Ëä{T/…¡€ÀGBíÚµ£~ýúÇUòñÐÀeé™6m 6L–1޵d—†ú–-[°Z,±H , N:É1ÇA„åïèÑ£Ä^GÚ@0Žc$Žè믿¦›o¾Yô /pmÞ¼y²¼²§Ã)ª ùXþtÂý´hÑBú€<Ôe2S‘Xì4úŒA@êС?žî¿ÿ~9‡ÇÂkìØ±täȉ¹Å‹ñ2CÿüóÏl×õÌ™3Gâ±ÌÌL!Þ‹-*^ðøñãB`^ŽhË–-t÷ÝwÓáÇiîܹě)÷Þ{ïQÇŽÅ3Á»Àû,^¼˜/!† TW:u())‰š4i"}ÇŸþýûoRhÔ¨Q²K\ºt©sÍ} ûí΋ªc¿¥¹ÀNMb,“ÎpÀíìò´={‰K°st'ì¸pMÇXúb,ì/™Š—ÉF\Ô¨Q#ÅK¬úí·ß´iÈwÔ]œ;åV“ÖiÓ]†É(»Ywž—ãHÇX1ë±0;±Üáù¼“;aç†]šÂ..·gE:s—CL,.sÛéã@uèkê:ÿüóõeŸwÄm±œbšXX¹ÛPƒÁE0ïNXÆüøÆo¤>úÈm–çãpÖ•çNpÁ˜&VÉ’%ó—ÞuéÂü0R:ïØy¹wrÎ…<„³®<4‘"1½+Œb¶Q#"æ±Ê–-Kü Ï¨“Ñ`”P…Ÿ)eðëp4tǨø$!Réì4"Õx¬´›ý%&>MmÛÞ@o¼‘+ÝŽd?í¿™ Ÿ–¶“?#,F©©;ø9Ø)“"…ÞÆÆX˜1c-?~’âããø ~ºA kb‰‚ ÔÚµ{Ä*+ë½ûnäþó%DW£ê²%VˆáX¼ø+:÷Üx±B4ºbÅN~Èúïç{!ŠÚË–X!†>%åô2¨ÍЧ¥K¿Ö§ö=–XA€AvFFæ'‹cÇNòÚk}òìIN,±rbâä,\¸Mv'ãÌÁ¦MßQfæYôýtÿ ù%V. ¦¤¬á/æüÏÄ\‹mË¥¤½d‰„dRzú¯T²d¿Î㺨D‰ÓÇâ““?RÒfûä=ìØñ3ÿ{Øéß;6•¿w Õ«—(%jÕºœ¿*]<—Ò…úÒ[û¬0`¯Y³‚ÓÍéÓWÓu×Uàÿ¼©æäÙƒàØ¥086öÊ@À˼¸¸Ó¿åeh^èÍ,± )À_Ÿ÷ù' Ãb…ÖÌ«Ð}þÞ¸%–!¾v)4ꌙ%–!^v)4ÊËPÖÚÖcyÃËZ"`‰e”5ó†€%–7¼¬µ!–X†@Y3oXbâ…_wÁ#›Ì°Ä2ÃIžºã‘ƒMfXb™ád­<"`‰å0kn†€%–NŽJ™¡y¡7³Ä2¤~âÂþÌ…!Xlf‰eŽ•µô€€%–!Xöqƒ!PgÌ,± ñÂ2h7‚Åf–XæXYKXb‚e¿ègÔ3K,C¼ìý ²Äò”µöˆ¥O÷Ýw>„‹êWBÂUªH‘RQÝG`¸yóæˆ'w :ô øá>âÉCÈh|ÿóÏ=,¨t8jûÌ~øaÑúñè[òÅÜÆXù«­ÔËr _°ÄÊXm¥1ók3ŸAÃæÅ£ÀÁS² +Õ­[—¦L™B[·n±ÍråÊùÔÛ´iSbõyOMMyßW^y…† BLXêÑ£ÁkBëvЄÔד'O²ÄJ*µiÓFú“’’B¬rïÓV4ŸÄÌR¡Z2@ÿÚÎï¼óŽè77nܘZ¶l)ºÍ 6¤%K–ˆ3–& &ˆ²èÅû+V°>Nqñ*W®Ìêkù§/’çiÐy~ã7Dd±{ ±ƒø&„4¡.H­•e~Eÿe@ŠjÕª9"å (Ú„è¦;®‚vt ¾Bƒ$Ä=U­Z5‡€'ÚˆÖ3Á;ä¥ÍG˜ûý÷ßaq·°%ë@‹Ààë|ä:Á3ÁS€`xÕ«WO¼ë4h@=ôxÅéÓ§ë"ŽŠ+D-yY!Hënß¾]<$òtZ¹r¥xU´çÒÌÎΦƒj3çuë«[9V·ëŒòƒ˜òXËï¾ûŽÕ!–RõêÕÅSa§‡%‘c' ¤AÀ-ZЂ ¤È¼yódéÑå¡Û O»gŸ}–…2u‚É’ o…”8>#Ž·Ë3ˆ‹„vöîÝKݺu“sÔ‡k_|ñ…xªn¸AòAjðÂÜúªíbí=f<ñ ÞÏ;ï<ñ(ˆ[@äcñ8‚?w$v©ÿþÔ«W/5j”,Y ¢N¨ã¹çž£Ž;Jt¢g{î¹4pà@à!xÃ@ˆüÊÇÅÅI†:à™à]@B,keÊ”‘" :–bìBG¡\:u())ÉÇóæÖWwÛ(3‰Áˆx2Ù†ê$vWßä0Û³gâe(G>2Ÿžž®8^s®ã˜?»”s\?zô¨s-Ø/e »8wbO¦† ¦Ð/&¼û’:~ü¸â¥Ò''¹õ5‡q€ŒhÚÆŒÇ 5SñÐ4PB,,ÁCÁ£¸<ÑW\!Y¸ŽW¨¯,ê‚÷@)·¾²æ¼³†XÑ2?ûж.h,±ò î`^)Ÿš‹ºjcrWu(Úå@ *MmÛÞÀOä“ Jz“·ìRhÀ´´ü€³v·ƒ?J:ý0Ô X¡6±Ä2~HõBÍ>>>ŽŸÎ§”°&–X!8B­]»G¬²²Nлï®QÂ^–X!x°xñWü4^¬ð±áŠ;ù#¢?ë Q¼Ð^¶Ä 1ô))§—AmV´h<þµ>µïA°Ä  ²32²ø«1?ùX;v’sÙ”;–X¹à³pá6 ØýM6múŽ¿¦sÂ?Ûž»°Ärᘒ²†¿˜íŸ-1×¢EÛräÛŒ°Äú Ÿ£2)=ýW*Y2_çñ÷­¨D‰ÓÇâ““?÷±·'¾Ø'ï¾xøœíØñ3I/KòÆŽMå/ç]Ã_cN”óZµ.çïÈ÷±·'oEÅg…Nw¢ì fÍ N¦O_Íß(­ÀßV­æäÙƒàØ¥086öÊ@ÀË<ûS‘†@1³Ä2ÄËþT¤!P–XÞ€²ÖÞ°Ë/»uÆÌË/»e‰å (kí ë±¼áe­ °Ä2ÊšyCÀË^ÖÚK,C ¬™7,± ñ:ý 31ôk/†÷•_f–X†Èò»X½BC¬`f‰å,kjŽ€%–9VÖÒ–X†`!ÆŠ©_Ô3¼¯ü2³Ä2D1^6™!`‰e†“µòˆ€%–!`öqƒ!PgÌ,± ñ² ²Äò”µö†€õX†xÙ/úuÆÌË/ûE?C ,±¼e­="ÀA©“ ÈÅí+ W©"EJYl`Î9rÄáLóùOh&–ȘuïÞÝ#=­yaF2, C,:êÀ`c, {N,±Â‰¦­ËAÀË„Ÿ+œçµ.–gý¿@ªY^넆2KÄùƒêj¸U¶ÐF||¼Hÿ~õÕWN{P«R¥ ÿ¾VI'/\,–N»ví¢bÅŠ‰:, ¡U EY”»þúëìójuköìÙ´eË–¼ÞO9ˆ[¾ùæ›RêÄëûï¿÷± Ç ^¡¦ "C¬"âx­[·ND/ñ®I`ˆxBXúÓ Î'Mš”k>ú¨èhC5Нù<{,ˆt¯Y³Fdr¡s %y(Áã†!˜­ej¡< %vh»¼úê«üûèïŠÀ7v°ƒx6”âçÌ™CÐÒÁŒ‡"ªNü1aö³8$ÿxÿqQLeÁL@Ý… 8dv!½ …T(£>þøãT¡BçuABáîÅÓ_|‘±/]®£‡ƒ„£GÓgžy†ž|òI‚gÀ=Á“:tˆ°c†àù¶mÛÕTx$hI#Aõ‹)åx.„†Ô/p¼§|PDÄAŠÉ“'KS§N•cz×}ûöìÐî™…5 ;wjÊ”)Î÷ò²²D€½I“&ôÉ'Ÿˆ\ð¦M›¨téÒR8£NÜ'äî SŒä߈£c|ݯððdzǂ<.ßqÓ5jÔÁxúé§ Jò .”Z¶l™t¸ðëׯ§wXujó õ@Ì{èС¢ö ܪðD(ÌÀ DƒL.Î1h6l|èCƒ`Hîcò»ú…zÑ>ëA¤%JH¿1Iàqt‚â<& ú¹zõjx€fÍš%&˜,Ðr0`€ÄdÂýã•’’"ƒl09p¿˜ýúõ£™3gJÛУ†ØøÖ­[i÷îÝRpƒü/H™bÔƒ ‰É‚@ZØý¥Cà‰ Â ß¸‰'ÊÄýöìÙSì!uŒûÄÒ¨?X&ƒÝ¯ÆÅôÝ3±P1<ô’k×®-ïú Õ¯_Ÿöïß/Ší f¼Ü1ðN "À«Y³¦Ôå¯@*¥Ø£Ü4f*RûöíE¡¾U«VBXäÁ“è¸Ì}\¼xq©õà…¸$I ¤ ap Xn žšÓÍ›7'(Ýã^>L:u’XE{+Ô!q,}xmÞ¼YÎA xà[Üî“$Ù¹s§, 6”÷íÛ·Sݺu©|ùò2‰!bŽ{¾óÎ;e99üúƒIŒ;Ä’mÛ¶•{…1‰t Ö\÷¿_]ÆË»ç¥•㆑ së˜Býn_ƒ‹X>aÂZ¾|9½þúë‚Mˆ‚ëH"3Q'xx($<Ä ¹¥ÄÄD!€¶Á2bè‡y8gh}ÙyÇÌÕ ^ Ë5ìáõp߸$W'ôíùçŸ×§Ô§O\Øê6qQ· b}ùå—"H¢b©ƒçÂj,AÄŠO=õ”xG`¯WÝpÙ·oŸLä¹ñјi[ýŽ ¨?¸î¿ºŒ—÷û—÷À=B‡.]º)1ຠ´ RÁ b"‚lHƒÎ;Wȉà±<"bF¬XzFèMÊa—Šåäǽ!aR­U ¬?RàÌŸ`÷å¶ tìósÜð&˜…ÿõ³B°øühÚ´ixð<âf£NøŒ ¤ÂŽäѳnÆŒ2èˆ-`¯‰wë­·JP‹åȽ”êú¼¼#ÐÅ@éØeá]ôRª.Øb¢¸—”Pep¿ÀB“*”=&–-LD÷ £ô}u×…%ñ#ì±Añ‘ÐOL"£n×kt9÷;Æñ"Ú<“ÂÿsÜØµ9R¶äîÆ,ô/Ô º€ÿ+©HîŸLI…r^lu;îG_ ô"TªT)Ç%à‰ÍG°t饗ú\ÁüI¯ýñ©4—“°.…h `/UªT.Íæ¼ôòË/ûÜx‡rqÎüùóYРgbÕÑ]" E؉…ÝWRÿÙ œüša‘„p¶íc8ëöRW¾ì ½tÀÚž¥ð.ËI¼õ¶ß ò I~‹M.ðó2‡G|0ÍgWx–Î{[À[v),xÐ E‹–X…b˜ þ&-± óBÑâÿÉ~ÀÕYaþsIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Null.html000644 000765 000024 00000075422 14042362133 023520 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::Null< Type, Behavior > Class Template Reference
MySQL++  3.3.0
mysqlpp::Null< Type, Behavior > Class Template Reference

Class for holding data from a SQL column with the NULL attribute. More...

#include <null.h>

Public Types

typedef Type value_type
 Type of the data stored in this object, when it is not equal to SQL null.
 

Public Member Functions

 Null ()
 Default constructor. More...
 
 Null (const Type &x)
 Initialize the object with a particular value. More...
 
 Null (const null_type &)
 Construct a Null equal to SQL null. More...
 
 operator Type () const
 Converts this object to Type. More...
 
Nulloperator= (const Type &x)
 Assign a value to the object. More...
 
Nulloperator= (const null_type &)
 Assign SQL null to this object. More...
 
bool operator== (const Null< Type > &rhs) const
 Do equality comparison of two nullable values. More...
 
bool operator== (const null_type &) const
 Do equality comparison against hard-coded SQL null. More...
 
bool operator!= (const Null< Type > &rhs) const
 Do inequality comparison of two nullable values.
 
bool operator!= (const null_type &rhs) const
 Do inequality comparison against hard-coded SQL null.
 
bool operator< (const Null< Type > &rhs) const
 Do less-than comparison of two nullable values. More...
 
bool operator< (const null_type &) const
 Do less-than comparison against hard-coded SQL null. More...
 

Public Attributes

Type data
 The object's value, when it is not SQL null.
 
bool is_null
 If set, this object is considered equal to SQL null. More...
 

Detailed Description

template<class Type, class Behavior = NullIsNull>
class mysqlpp::Null< Type, Behavior >

Class for holding data from a SQL column with the NULL attribute.

This template is necessary because there is nothing in the C++ type system with the same semantics as SQL's null. In SQL, a column can have the optional 'NULL' attribute, so there is a difference in type between, say an int column that can be null and one that cannot be. C++'s NULL constant does not have these features.

It's important to realize that this class doesn't hold nulls, it holds data that can be null. It can hold a non-null value, you can then assign null to it (using MySQL++'s global null object), and then assign a regular value to it again; the object will behave as you expect throughout this process.

Because one of the template parameters is a C++ type, the typeid() for a null int is different than for a null string, to pick two random examples. See type_info.cpp for the table SQL types that can be null.

Constructor & Destructor Documentation

◆ Null() [1/3]

template<class Type , class Behavior = NullIsNull>
mysqlpp::Null< Type, Behavior >::Null ( )
inline

Default constructor.

"data" member is left uninitialized by this ctor, because we don't know what to initialize it to.

◆ Null() [2/3]

template<class Type , class Behavior = NullIsNull>
mysqlpp::Null< Type, Behavior >::Null ( const Type &  x)
inline

Initialize the object with a particular value.

The object is marked as "not null" if you use this ctor. This behavior exists because the class doesn't encode nulls, but rather data which can be null. The distinction is necessary because 'NULL' is an optional attribute of SQL columns.

◆ Null() [3/3]

template<class Type , class Behavior = NullIsNull>
mysqlpp::Null< Type, Behavior >::Null ( const null_type )
inline

Construct a Null equal to SQL null.

This is typically used with the global null object. (Not to be confused with C's NULL type.) You can say something like...

Null<int> foo = null;

...to get a null int.

Member Function Documentation

◆ operator Type()

template<class Type , class Behavior = NullIsNull>
mysqlpp::Null< Type, Behavior >::operator Type ( ) const
inline

Converts this object to Type.

If is_null is set, returns whatever we consider that null "is", according to the Behavior parameter you used when instantiating this template. See NullIsNull, NullIsZero and NullIsBlank.

Otherwise, just returns the 'data' member.

References mysqlpp::Null< Type, Behavior >::data, and mysqlpp::Null< Type, Behavior >::is_null.

◆ operator<() [1/2]

template<class Type , class Behavior = NullIsNull>
bool mysqlpp::Null< Type, Behavior >::operator< ( const Null< Type > &  rhs) const
inline

Do less-than comparison of two nullable values.

Two null objects are equal to each other, and null is less than not-null. If neither is null, we delegate to operator < for the base data type.

References mysqlpp::Null< Type, Behavior >::data, and mysqlpp::Null< Type, Behavior >::is_null.

◆ operator<() [2/2]

template<class Type , class Behavior = NullIsNull>
bool mysqlpp::Null< Type, Behavior >::operator< ( const null_type ) const
inline

Do less-than comparison against hard-coded SQL null.

Always returns false because we can only be greater than or equal to a SQL null.

◆ operator=() [1/2]

template<class Type , class Behavior = NullIsNull>
Null& mysqlpp::Null< Type, Behavior >::operator= ( const null_type )
inline

Assign SQL null to this object.

This just sets the is_null flag; the data member is not affected until you call the Type() operator on it.

References mysqlpp::Null< Type, Behavior >::is_null.

◆ operator=() [2/2]

template<class Type , class Behavior = NullIsNull>
Null& mysqlpp::Null< Type, Behavior >::operator= ( const Type &  x)
inline

Assign a value to the object.

This marks the object as "not null" as a side effect.

References mysqlpp::Null< Type, Behavior >::data, and mysqlpp::Null< Type, Behavior >::is_null.

◆ operator==() [1/2]

template<class Type , class Behavior = NullIsNull>
bool mysqlpp::Null< Type, Behavior >::operator== ( const Null< Type > &  rhs) const
inline

Do equality comparison of two nullable values.

Two null objects are equal, and null is not equal to not-null. If neither is null, we delegate to operator == for the base data type.

References mysqlpp::Null< Type, Behavior >::data, and mysqlpp::Null< Type, Behavior >::is_null.

◆ operator==() [2/2]

template<class Type , class Behavior = NullIsNull>
bool mysqlpp::Null< Type, Behavior >::operator== ( const null_type ) const
inline

Do equality comparison against hard-coded SQL null.

This tells you the same thing as testing is_null member.

References mysqlpp::Null< Type, Behavior >::is_null.

Member Data Documentation

◆ is_null

template<class Type , class Behavior = NullIsNull>
bool mysqlpp::Null< Type, Behavior >::is_null

If set, this object is considered equal to SQL null.

This flag affects how the Type() and << operators work.

Referenced by mysqlpp::Null< Type, Behavior >::operator Type(), mysqlpp::Null< Type, Behavior >::operator<(), mysqlpp::Null< Type, Behavior >::operator=(), and mysqlpp::Null< Type, Behavior >::operator==().


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SharedMemoryBaseNameOption__inherit__graph.png000644 000765 000024 00000015520 14042362133 033004 0ustar00tangentstaff000000 000000 ‰PNG  IHDRž“ ¥sRGB®Îé IDATxí ¼ŒÕÇŸˆKE)Ú¤$EJIe©D”5­hßPÑB…J«e«O–Ò~³¤ìiý·\ÅE„HIˆB¶Páó?ß'gzgîÜ1óÎåÎÌ=Ïç3ó¾ïÙÞó>çwžåœwæÙ'`H9ì]l*²wïçîæ8ð/ð „xÂvwÓ¤ÞÓO?-ûì³ûìA¼üòËIƒø¤Þܹseذa‚¯ã>ùσ!C†ÈŒ3𒆮#¤‘xòôî¦Æ¼c}á¾±žgü?ÿüsÉÉÉñ¤$vºfÍy÷Ýw¥_¿~2qâDùûï¿cnpöìÙ²råʘ˧ZA<ψ]ýõ²víZOŠÿÓ?þXj×®-ï¼óŽlÚ´I $gœq†|÷Ýwy6:tèP8p ægggËòåËó,›ê)¼{î¹GÚ·o/•+W–† ʳÏ>+*T³Î:K.Í›7—¯¾úJÇdÊ”)Ò²eKY·n´nÝZÊ•+'Íš5“õë×ËöíÛ¥mÛ¶rä‘GÊÍ7ß,§vZÈ8vìØQn¹å9æ˜c¤V­ZòÓO?i>ÀéСƒvØaÒªU+Ù¼y³¦7iÒD-Z$ .Ô>à•ßtÓMÒ¿Þ£>*ï¿ÿ¾\}õÕÒµkW™3gŽ\rÉ%Ò¸qc9üðÃ¥G²`ÁéÞ½»<òÈ#ZvÉ’%òÇÈŠ+ä‚ .ƒ:H5j$¿ýö›ÞóœsÎøqÄG(/6lØò É~‘RÀƒé³fÍRõ…ÉÌÌ”>ø@Š+&ãÇ—ªU«ÊèÑ£•ç¹~ã7ä€~øAÊ–-+cÆŒÑ:¨²O?ýTÓÈó Z¼x±L:UêÕ«' ÐlS¦LùöÛoè“&MÒô:uêÈþûï¯€ŠŠ0ÅK 4yóæÉ_ý¥ý½ýöÛå³Ï>S)°˜TH]€¶téR÷èÓ§O×{ùD®¹æ©V­štêÔ)âx$"ù`¤ Ò‘˜6ý±ÇSÉS¾|y•^ÿüó.„oݺ5¤íßÿ]Š/®i'œp‚\|ñÅÚ‡-ZhŸï~ûí,CAîqÿý÷ å¹X,¶“~üñÇ«ÄK5µœrÀ«T©’\‘"EäàƒÖsû…äÙ²e‹#Ò‡Á}ë­·dÕªUrþùç«”dŽ:ê(­V¢D [=䈂¶mÛ¦ÒÍfzÓ‘º‘fdd¨Dõæùå—*…I³íp~Ò T6}ERC;wî@m Ií»ï¾ZÖ¦§Â1倩HË/¿\î¼óN•v\wëÖMUÛ+¯¼"=ôª¶¦M› €~‘7nœ\qÅÁ"¤ïرCí°“N:IÓ±+ñXQ¡œ-ZTU&jÒÚ^Øp#GŽT‘Jßÿ½¬^½Z6nܨuÎö§%úH Q£F©¶ù©|Ü7•;oûÎñP·Ï?ÿ¼\uÕUzÄãÓ§O6_ÅŠU ¢¦’Å’m`"Õ,8‘8]ºtQ€aë½öÚkZ §fòäÉÚ NA¯^½äÆoTû çç©§žÒ¾|ýõתN‘È–É‚#ƒ“sÝu×IýúõmwTÕãÐôìÙSPÝxËáä}þ𼤽6LO 2¶[ÀìÕ&Ü㌠Ҏ‘D#a8!éÆY gÔmHºQÉãxŒš ÕÌ3*-`Ôb`Ù²eÁ´ÝæÏŸ0’,XÔHÅ€ñJÆ»/˜Î‰bÈ=m¦qxôÞö:Þ£Ù« >Þj{ªüÆ´xvV£NŸyæ•n6#Fû‰'žèMÒsœ„pÀ[ÈÚÞ4lK–pb%l9¯=ç­‡}ncâ\D"œ¤t¢´j{Ìݱ î²Û ,“`¿%J,,[ï;ѶRµ~Z¯téÒ¾ÆÁz¶òhOCŽáåB2ã¸À ÍK ÆÑLJM+¯6¥G¢u>i$Þ)§œ¢[Jl+¥/Î:à³—:ù/½ôRÒ°vÜ–¤éM u¤zõ‡¥T©2eʃ)Ôë¤éªûy£Ÿ¡X´hµYË1{²Ìg£Ÿ& }gãù€À¨QߘÅâºh=zôL-¸*x>00bD¶ÙÚÚaÖ·ËÛoOõÑ‚«â€'æÌYn^Gúï-åU«6ÉÏ?¯‰³WÜ/N Œ9ÍHºÿÞA厕k»jxÂ<ŸlwªÖ'ãvUsÀóÉ?§j}2Î/1ƹډqÀI¼Äøçjû䀞Oƹj‰qÀ/1þ¹Ú>9à€ç“q®ZbpÀóÉ?·œâ“q»ª9àùäŸ[NñÉ8¼Äçj'Æ'ñ㟫í“x>‡ÇÇ‘?8àù㛾ún_÷ÙD¡®æ€W¨‡¿àÞÏ'ïªõɸ]Õð|ò5ëT­Oæ™jxþyçj&À<ŸÌs;>·«šžOþ¹ ŸŒsÀKŒq®vbH™ ´g¤ )‰=¾ÿÚÅ‹—7•ùóíUþÉçš?ÿü³Ø ƒùÜt~7—:ÿL:‚ [o² 99¿š0ò+“¦?D¦x©BÎÆK•‘J³~:à¥Ù€¦Êã8à¥ÊH¥Y?Óîߢ°ý¦L™"&T§†L¯\¹rÔ!›={v0¦lÔ‚2.\(Ğݼy³†¨?÷Üsczc…µ3gÎÊVJ+‰G„l‚ }‘PðíÛ·×¨Ü îСCeàÀ¹Æ9;;;WôÆ\…"$ž´Y³fæïʲÅĽ•ûï¿_Nò¢Ž;ÊôéÓ5ør¤€ÇyÕKÇô´’x³fÍRÀÍš°Ÿ„…ÀýÀÈŒ3„@Î;wÖIÁòD¨ùvíÚ©Ú%”ü—_~™g_´Bš|¥•ªeLLhxÉÌÌbÎÞ}÷Ýrá…jpc¢t#‹/®vسÏ>+5kþû7²v,[¶l)gžy¦\wÝuª~W¯^­’ŠëóÎ;O7n¬EM¸øˆ‘½M˜wmŸB—^z©T©REZµjeþù/¡-îM¿ì›ËkÖ¬‘¥K—j?O?ýt•|HC(¼/š˜F_i¼qãÆ ذç/^¬6Ø?þ˜kÈP‡ád#{È'…YÀbéCÑS´#ɰ#½„´ªZµª&y!oÛ¶MY8ýúë¯R¦L™`2’PCá} J““´*¶Gj[1>ØWjÚ¾}»cý`€à≢†¡ºuë*Àž|òIU»¤5JŽº„!@úæ›oik¥«·5jÔ7 Û[¶l‘‰'ª)  ¤ùWZÙx¨Ézõê©Z<üðÃu™oóøãWo•Y¿~}R«îò_ò‘Šýúõ“¦M›*h322iqÚ´i£!Þ‘NHÈI“&éÒ m"ÍN8áY»v­ 0@Õ+êô†n1cÆûÀDa»kÇŽR¾|yUço¿ývH·v×שra–dThÀìÕÆÔWãDŒ” ‰RÞH­€Qe!iÑ.Œt <÷Üs#f­.`œ‡€ñ6Cª,_¾<`¤bH𑄇z(`@øóÏ?CòŒrÍÅÖ­[Æ,ÈÕß\£$ðÌM”I•µ1­$žìØeH›p¹ˆ‡n?ýô“ÔªUKU"Ë.çœsNHx»y‘µ ½ù^ÛϦ#Ii»0QZ/?u@¼U#•„5ÀXoÚQt8àEçævØa1”ú¯H¼’õ¿š…ç,­¼ÚÂ3l©ÿ¤î dŸcXªT³\²Í,³ÌòÙBþWcé'UÞ@Nàåÿ0%Öb¥J÷šõ¹ ³üDb ÎÚ©óê{2ÏŒKtnË–m²`ÁÊdêZÊôÅÙx>†jøðif§!Ç,*ï”wÞq’}°Ðý“@¼L#`ò„ ³}0ÀûÇl•͈· WÞpÀI¼8a0yòÂàÛ%TÍÉùÇìÇ.³WÜ/N dff›×œ¶kaç ž¼v'±qÀ/6>i)¤Ûÿþ7?¤*wüøUoH†»ˆÊ¼¨ì Íüä“ùæm梡‰æŠ€ÉYY¹ßùËUÐ%9à€dÅîO23§5›“« iÆ9u›‹1QÜ^mæx³P³YY Uâñ~œyÉH³9GÝ~ôÑùçl<ŸŒsÀKŒq®vbp/1þ¹Ú>9à€ç“q®ZbpÀKŒ®¶O8àùdœ«–ð|òÏ-§ødÜ®jx>ùç–S|2Î/1ƹډqÀI<ŸüsªÖ'ãvUsÀóÉ?§j}2Î/1ƹډqÀI<ŸüsªÖ'ãvUsÀóÉ?§j}2Î/1ƹډqÀI¼Äøçjû䀞OÆaãñŽüqÀÏßô‡>üÛ‘?8àù㛫•(Œw¤/¾ø‚)ì>1ð H‘’>Ž_±áÅDMâÌœ„Fö1À“믿^nºé¦Dñìê;9@< >hªµœpǽʼ½Ênw3Ë<Ë wÜ«H:àfݺuùÆ¢cõÕWòé§ŸjF&(ñ¬Y{."Ñ» ¿~ýz™6mš˜Ð¡!Ï3{öl ’¸.lè‚4%ðFŒ‘o X´h‘Ü|óÍa@wêÔIf̘!«W¯–^xañüÕW_•e˖ɼyó„@Íï¿ÿ~ð^N&ºcfff0moÐ?/X°@CÛ?üðÃÄyoÝß{Ÿ¸ÿï³Ï>“¯¿þZ#P#M.ºè";v¬˜ÄÊd èÕ&`±ÜvÛmÒ·o_!ê4u<ð@-GÔl¢\9RŽ>úh”Ó¡C‡`߬¹sç à!,; 9묳äÖ[o•*UªÈäÉ“å”SN‘îÝ»›ÿ©+!ݺu“»îºK£\ÛsúIÔëvíÚi»Íš5Óðí\ ‘¨KXvY:wî¬Q²˜ììlÎM¸@9ñÄeÉ’%òàƒJŸ>}dΜ9Ú{ï½WÊ”)£ÏÂóqÄ!›kžûÊ+¯Ô>°r@š%BÈ:TÃÈ_uÕUrá…Ê‹/¾¨ÑÅ‘ŒD ¯]»¶¼÷Þ{zÞ³gO Ïá©Yšk®¹F.½ôRy饗tàM… „ˆäÕ«W× @YžŸÈå6|=}áÞК5kô¹L€ihþÀè}˜kÜ"õÙ>O¬Ç¸%j×øŽ;î“N:I $]»vÕìãÇ×Å&еÞuF°á_~ùEóõ×_—&Mš(iç7ÞЄiH"bÂZB-LŸ>]}ôQ騱£¼üòËš ÅÎõ† TeQ­Z5 ÷¼eË–òí·ßê ž}ÕªU 2Ê yÎ8ã a ?üðCU‹S§NUp1€-Z´ÐþQ–0ï ËLL&“ À#9éëk¯½¦àåùLÔnª)|é[Û áóÏ?W^qN8x€~çwší C† QIIß.\(=ö˜~öîÝ[yÉdb"Â;&u‘ž˜€'++KdžغœC‘É 1<3|åÞðB0!Þzë-!Àó„ tâ3 ½ã–WŸµ‘8¾âm#˜I5jÔУ=Ç6;óÌ3eÅŠÊZ¿~}•:0€ (O>ùdmƒ¨×‘"]׫WOËÓŒ%`1ÔªU+)[¶¬Î` Ûž|ðÁ*‰n¸áÒ ÆB%K–”‹/¾X{ä‘GjÛuëÖU‰Š=ˆ]h¸kY¾Q¿xÚÐ ÔüùóeæÌ™úÔoÚ´©J¦`EsBÿ‘zÓ¦MÁ‹HMÀûÛo¿éDà™hjذ¡T®\Y¥™ÞH]xŒVa ˆNÛð› ºüòËåì³ÏÖ ÿ!;œ—.]Z%(Úƒ±pL$L’š5kʘ1cô<;“&|Ü¢õ™öc%_Àc  "EŠèƒxoFXvéÁÆ$C©R¥¤ÿþ:Óx Ôˆ¥bÅŠÙÓàÉf æ á ›NÚæÍ›m‘\ÇaÆé`£bÏ<óŒš$ø1Ò*Z´¨ª,ÀÖ£GUçžzªæÙ/Òûõ†Ô! rëÖ­Ô6Ÿòûï¿¿­¦G {ïÍyÜÎExÞkûp *†BˆpìT|ÅWèâJPƒØ@¨>K¶˜ŠŒÛMI: ÁàdHP;k9ÂdÚ´ç7ÖÁ$HWÿž{î±· 9Ò6çñÇWµ…DÄvCb@¶OÿHΉ'j¿ž|òIUƒ˜Üé 0)o?ÔØjH<^ˆ‰I1ö‘NHY$U^dÛ«h&fÛ›H|Ô2mA¶Ÿœ7hÐ@F­ÏeóP•çw—Ê„¦CóæÍÕŽd˜(8˜"áãoŸõF¾B /^œð^-¢í•W^ 2„AǰE"Î-*pYÆc‹1Ì@Ê[`Ž>úHAáUÕ¶½HGf5KyMÿQYœ$omûØeØd6I%+f€7-˜å„þ!½{<ïà«]x]$Nõ\Ãóï1eè;¼Fzó,LôHãOŸQãHé.]ºØ[渼Î'žxBg—!¨8fR8ym•ð<®#å3«c‘mZ»Ð¦åu„éäö©,(œ¬sž¾»ëxúçm+ol>Þ76.ËY±’µ)6àu¤qóÛgmÔ|嫪¥QÜx–.¼aoíÈrw 1Ú#ª)‰PaHÔž%f= ‰6H¶l¼G$ª ƒ¯õç}†híá ã™Frª¢Õ‹55‹ ޵?±¶›_åò¶´}ÞFÆ :nÅ ò g‚O8E³œ…f»$A]c‘ÂùMã¬/².‡š7nœç˜*yýcáÂãÇ”ØS„g¬ ã™ó]âí)FÆÚ.‹ÂÏ=÷œ.0ÛåêâÔDÚ•`¶R¥JºÖU§NU-x{xoÖqa ¯#œ–&zõê¥;¬™YzóÍ7u­ïEW|xHW¢íJàL`—~üñÇêPPÀÇB8;xx€<òÈ#º„Á Þº—Pµl«á”à _rÉ%jÜ#å@ì†àÅ29(Çd`+ @³¸Ž]ÅîÀC¢²æ‡—M¿ì’÷~©|žvÀc0n¹å]÷n]EÛ•`Ù€eŽråÊ©tb¹‚½N‘ÎÚ Æ,Ù”pUÉj¿•²ÔgG†¶¤Øt¨>̯]ÇZäÕW_­÷cYÀCHE¶ß°W±Q±#Ó‰ÒxH“Í|– h»»Û%ÀöÄŽãÃÚ@<€ÉK,"Û=Q¯íÝuñ–§o¬UZ»•k¤ äµÏ¸¿}oýT>OKà1 ,^#xŠeWB †}!)xÖ%ñQ{€Ê¾ìÀzÄZŽöÄî|¤%»9wg‚¥ Ô.“úÂl©q](mXp,±ðó¼F†}Gû‘ˆ>¤í‘‹deP¬»‘úJpV-Ú2H4ûì½Ïw÷oÿö9çÝo®cbfdÜY<ÏN3#á°0|vr¶hôèÑ’+W.û;‚ 2$[Y­Z¼x±<óÌ3BÜnÉÇàõ×_—•+W»ÊÖ+³Ê²lõ@ÙrEVI¶"`ÊV¸½ÊŽ?ö.)øŠˆŠ-*%J”ÎçÑ_~ùE>ýôSÙ¼y³T¨PA6l('žxb\g/_¾\Š+–´¶ÄUi’3å8ôØcÉ'Ÿ|’?üðC¹øâ‹å7Þ?þøC^x¡¬Zµ*jù¦W¯^z|áÂ…J¼¨™Óà@ÊèÎ;ï”Þ½{Kùòå¥Q£FB‡—*UJêÖ­+ŒöæÍ›Ë¼yóÚÏ>ûL®ºê*Ù¾}»´mÛV=K³fÍdÇŽràÀéÙ³§”,YR®»î:©Y³f¦îà–B·nݤzõêR¶lYy÷Ýwõ8¸ñÆÕ3´iÓFöìÙ£é—_~¹¬_¿^¾ùæm«È=zÈÈ‘#•@ƒ ’iÓ¦I§N¤_¿~²bÅ iÙ²¥4mÚTŠ/.ƒÖr:wî,&LÐý7Êo¿ý¦m½á†äÔSO•sÏ=WæÌ™£yëÕ«'à·‹;wjz*}¤¶nÝ*K—.•É“'ë¨?~¼|ðÁ’'O™:uªTªTIÞzë-ÅoöÇŽ+'t’¬]»VN;í4™2eŠžÃhŸ9s¦¦qÌk?þø£LŸ>];’0@Óñ… –eË–)aßÿ}M¯]»¶NMLOµjÕ’~øA¶mÛ&7ö+ 4Õ«WËîÝ»µ½·Ür‹z¼§Ÿ~Z~þùgyôÑG¥ZµjÒ¿Ù´i“ˆ6r‹cöìÙÒ±cG8p – Y!0„b€CªYÊ€:tè 5jÔóÏ?_Úµk'U«VÕ©‚ÃÓ¸Þ‚o¼D¹rå´³FŒ!·Ýv›N}ô‘0Ú«T©"}ûöˆ{«V­¤bÅŠZþý÷ßk>ÊÀsáÁ\=ðÀê Î8ã õÔ¢ýõW¦²úé'É›7¯¦sÎ9rÍ5×hZ´h¡„-T¨oœDÔ±î»ï>Y·nP7]ï¹ç­ð@ÄY©f)I ³Ï>[qÊ;·)R$fx‚½{÷*aøÆÐIãÆ¼J“&M¯Øgžy¦ž›?þLe¸;§œrŠ»)û÷ïWC‚›N±M$ƒHùòåSç=N@WÄÜrØö–Ï¾× .žÓ5Èù÷ßë.ž;þøãõæ«î¤ÐGJ(FeëÖ­¥OŸ>ê9Øg:Àƒ×0‚ ’¯¸â ]QÞ(’ÑÙtÔ’%KtzÂãa³fÍ’C‡iLCL‚wýùçŸZÛÇwœtíÚUž|òÉplòÕW_Éĉ5†âœ/¿üR§­ßÿ]ÏÇ[bÄg^#¾zï½÷´NÚNÌ”¬U¢·ž#±6Ëx÷ 05Jãöñ@ü >\;“˜¨L™2ꕘþ ƒ÷µ'ʶlÙ"L3¿þú«tu×]w)Qˆ…^~ùeÍKð>wî\-‹Àà÷‘G‘îÝ»‡—âùC‡Õ¶ÌŸ?_§2<$ăô¥K—– Ȇ „ Ûµk¯½VÞ~ûm 智žþy÷PøÛ{ýáÄTØp€Í6sV!çYØa×·`Á‚#e*Çñ@!gćdJw‚òÇœi,SúC=r¼UÈ!Oh×®]ácÎTr¦›3­„Óbm8d ­Y³&äx–pVÇK…œUTÈ™fC)ÂélP¾;eJc‡:½mùO† γ°3ÆÈ•ÜÃiãÜÁÆ45lØ0õ6nߥ•+Wö&é6Á°?Ðõfbéì7b/nÄkÄ:ÞxÇ{ñ—?cEÉ©3ÒùG#-íÄôÕ¾}{]¶Ç è_ÁÜqÇOgyN|s¸Æ Fwµx¸e¥òùiG ‚ f Oï*‡N8ᄈåøóEÌG"«¦h^)ŽÓÓ&KÚ­ÂÒÙœÒÐä†TÁ¥½øâ‹üHÚüåÍ["”/_©´i/ز8ÈNËEe9e°$zõê u–ëÊš5Ùûšh¢í<šùm ‹‚þ?þ.[·þæÜõ>àLš´(“÷qïÙ³ßy—ÙVc.î·ÝHt‘Èø.YòçAm>ቼ{•wqØÆ3mÞ<ÜyØjãÎ…Íä"‘ñ½yóç…¯_toêÔåÎË`ûœ×.ÖýÒ¥Ou^úú÷ÕSß©9r7ížÆé^*Uªˆó.Ð?ïa¯Y³ÕyÃq4hPñHW›¶å›/NÛ®K†ú!wn~Ë( ƒ#P ¸™hï*ä2ãcGc ` ˆé‹iÌ,:F èØèôå}&5Ç2娮OÎ…’ƒcŽ-Å”c»>9nJŽ9¶#PŽíúä\¸(G»NÆ!#PFv':#Plp,GlÌÅÆÈr ` ‡Gö4> ç(žÄÛÓø€Œ@ÁàØÑؘ ÀÈ–ñàd2`dËøpŒ@±Á±±0€‘Maàd2`dSX8F ØàXŽ8à7†9RMü~JJÿåÍ[<”7ï)ÝF0t¤¤ŽFjGm CK.§)û·oß²oß–”mØ9¿|«b1qøŠ#’å¨èˆ\ší²òc«B#б՟Ù~5)ý븡+Š!#‰-*‰rˆöfåÜHuåt©o/&)ím1uûüóωí‹.ºHÆŒãm\Û( "*— ËŠÔ7.¢»Ø± õíÅ1¥ DC6l¨"·¨Ö¯__úÆDMUdÂÑEJ2’|¶žà| =‰T’’W^y¥ÊQr ™É:uê¨Æ*’ߘ#Þ¦â½È€£½úÒK/éj¬G‚RßxÑ{ï½Wî¿ÿ~•Ðܘ!õ€ðe—]¦Š>(?£V¥ƒÔ·64ã#å ôæ›oJ—.]T«NDC–²W¯^ª‡Š‡Bÿ4š|vÆµÊ /¼ $ƒ0Ô¡ÎŒ¡ÍŽ<÷Ê•+UÖr"i‰ %^ådœ©o$Ÿ 8^Â0%S6Z«ÅŠ“E‹©Ìø³Ï>«mI©omhÆGʨB… Ò¬Y3AW´zõêªVH BG wÁ¨È-òÑä³Ý FwïCLT¶lÙ°7›1c†j¥¢¹Šf)úîÚ¨L›Áº¬H}#ø YÑ'såÀ)›¶BL4[‘§ý¿Ç˜êRßÚÐŒ”¢iãyç':uÒæ¢È”òí·ßê¨Í¸í|:ÙïK.¹ÄMÖwå³I„¨03•!\¹‡g@j¥gëš_rÛ+õÍTèZ¢RßÔI[\q;ÚHû]ó×릧âwÊ{ 4ôÛ‰KÊ•+§Zñ`íÚµª!d6$ˆ%ŸÝ¢E õ< òåË«bZBžûµ×^SO·|ùr%•[¯÷;YRßx™¦M›Ê;ï¼£ÅOš4IÛï­+]¶SÚôàÁƒÕÅÓy•*Ub7½I“&*Ãg CöìÙU>›s®¿þz•éFV{ûöíšQ^<šñx† è#–nݺeêCÎDz"õ]³fM/½ôÒp™}ûöÕ©wÈ!* ÌêÎoÔéÖë?–2ûhGÅœ 8ä< ;¬º‘Îv¦³ÿH}Ç’Ï^·n]È![¦º)%äL#š†x,KTêÛÑŽ—ï-{ýúõ*îMKdÈž={&rJRó¦´Š5ʸ1H0ì·XòÙL_~c©îZ$)p÷˜û¨Ôw4‘_¦ät¶´‰Òäœ"õíí #ÃÜÎ)Rß^˜Œ@^4l;q’Q%PXz¼‘˜²ßGóD[ s&ûNÆ!›Â¢`d²ßQ€ñ%|€¸»&ûí"ümŠ‚É~GÆ—lò®É~G%J’(0&û”(IF À˜ìwP¢$|À˜ì·»F @&ûí$Æ®ÝHôd²ß>@bì|™ì·»iý>PŒkËÒa“ýN 6‹ÃËrû0ùñîÚOÜyш¼mŠŒ‹¦ÚOÜ€“qÈ#Ë€€(þ“‡iÌ,:F èØ8ÿ'&νò‰fÑ0ECÆÒãBÀL–)F hÈXz\â‚É2ECÀ K #PLv':œŒCF ŒìNt8F ØàXŽØ˜Š‘å@À22~˜, WÎ>d èeðg#PtlìH@²e|8‡Œ@Ù2>#Plp,GlÌ`dSX8‡Œ@ÙŽ(68–#¼¿‹9{ölîzØ_é"û}6aÂ/eB™þµÙ!”pz8¢jf†€É“'«vÇSO=>d1P ÛÈ F ¬ fç„0…¡°¬ r¿Î±aâG1'Ö£`øÝwß…³!=‰Ä¤Wz2|0E7vîÜ)+V¬PN…jÔ¨! ˆ«µ_|ñ…*>æÉ“'®üYÉ”rUÂ¥K—fåZþs ÏÈm¯^½ZÿÐLíܹ³ê¢þ'sŠ$L›6M…ðhÎâŋ妛nRWGoLQ¥f¡ͼç/X°@öïß-kRÒö@(ÏŸ?_¶lÙ¢»úê«õ‚ÑüD,vÉ’%*2Û®];Ù·oŸÜ|óÍ2bÄyõÕWU^»P¡BaQY¢ú‰'ÊYg%(º’Û\@ ¢ì² à¡ðW·n]•õ®X±¢ª+£§Š¤vþüù¥ÿþrûí· ê…î6å Ç…º³k´‹2O?ýt•òž>}ºJ‡£à\¥JAò’öÒv® ­ZµJÓОÿßÿþ§*Ïè¤r­xÌ;vèʵyóæÒ§OUVüøã¥téÒòàƒ ¨äG?}ÔŽ;ªì8âÁ(nt¤ÀÑ‚¥.Ô1ÚG;ÐuõêÀ¾òÊ+ª$ ‘ÆŒ£j‡ж"‘îž"4éô í~øá‡å믿V fE‹ÚV«x¾ö@»víR­Ñ[o½Ul‘ÅîׯŸjº3™"P*Æð$H 1,\¸P/]S¤¼)gìØ±2pà@iÕª•Ž6G0Üf:IìAƒé(D²£óéöqïH~ct>Dòo3Ñ$%‘ÚvnbHµjÕym:`!ºîtîsÏ='È]:jŠ2eÊ•ÆÄ‹AŽÇ\õU!íGœFع?¢u#¦ ùF%è¼Ò¾C‡ÉO<¡Æ ¡GUQ•šÌ=z´^ 8¡ëŠ|'"ÀÈr"Åé5¦0·wï^È-[¶T¢!QÎíž!ÉGÝà]¤H%ÞÉ'Ÿ,ô©­ÞºâÙN˜@Êȧ¸¾Ým.™ìmÛ¶ £‹)P¼û oá WÕªUµŒzõê‰W1Ðmxýúõ5?e’ÜX›6mTñ9pˆ‰qïÊ›¼ÛŒ>\9mY¶l™’õ@¼(£ïÂ>íHaªòsãÆµ^<õB¶mÛ ž‘>wî\­ˆŽ+‚¿®T8§ŠëA+•tbȽuëVõ¨5¯Y³FÉEyì#\¹reoÈëj¥ú§ 4ç”ÊŒ`W¦L©]»¶óq¾7î#ÚDþîÝ»‡Û©­Zp Oa”P-–;wn•ÏÖŒÔ:uêh§ÑqŒz:–›O3gΔ‘#GªÖ;#7íš÷‚Ý4Wþš}\1sÓICh7È )ÞCé¹C‡:íбL›LX×®]uÛ 2ÝÒéŒZ×ð`ŒjÌÍK9¤»æO§.:Ý­ ‚rý ¼‰ÝrÙ‡T`)5jD’ÞAˆ¹8°íŇ}×hƒ—kÁ¼ígßßVÒ±,y Xà1ˆy .¬ÞgΜ9B¬ûæn7Þ§V­Z:ú ‰©üXL+ÌÝŒ*¦G OÂyŒ,F†'Á[ø·5!ã!ÿîÝ»•ät<ñÄÇ4H›6mÒø•g®üL9LM ¦‡D )L¦g¦j¼'×Oû)‡ò0¦Rw2Ð6wº§~Œ)nÖ¬YêÙ§x$Žsý®*4细—¡¦[Ìy\•pûݲ"}gÉE*ˆ4×íB¦ØǙ÷ :®}ûö:Š¿%Þ8pà@x$ß-‡‘Ó¥KõÄ\¤3‚ˆIèh<ÃÝwßÍ)úMÜA™¤±ÉµèÄÓ‘3fÌÐÀÏÔÝqíÒ°€¸H€—(QB9*ÓÚv¦=:oê5·Íþ4Ò!!q u0%U¯^]É L“ãÇWb³ò:t¨æ!P6l˜âˆÇ÷îÝ[§-ƒ‡b•§xñâzýîùn[Z·n®‡ú‰åüF;#]ƒ?Ÿÿˆ< c¤2² £CAÄCÞû0tn”$Á `ãÆS°éhò»®÷OÇd{§@=) ”ò]O€ ÑÝ:Ý4b<:)+@Sž‚iŒ’×l  'á­ ^ã|¸–éâL~ÿù¤aLÇÔíÆPÿ¤ÆÿéYXR=Ma•ÄÒ•U‹÷¢ˆ—˜÷ýæí8ÿ1ö#§“AÊÇ£øÍKp÷ix£Ã1¼Ÿ7nqËò’‡4<¡×¢GÚåo¯ÿ|·,o²-éˆéˆQ†®z"Æ(cÄ»#Ì]ÒûÁÀcE"U"u yñL]‘y¤®/[<®7QòpÁ~ üÄqA1òüƒÍ™‹Qv~‘UXv^€Õu”pV5a›mo$ÚÛ˜1ÞH |#ñ(sÙªOCl KÃNK¥&R©7Ò°-F 4ì´Tjòÿ*u `¾IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1UseEmbeddedConnectionOption__inherit__graph.png000644 000765 000024 00000012072 14042362133 033176 0ustar00tangentstaff000000 000000 ‰PNG  IHDR¸\ÝæSsRGB®ÎéôIDATxí”EÇ‹ã8$H’ Y‚$ ¢ JQy(I‰¢">PQ¢’•ð@y (áS‚d”œ%ç¨$É‘ ö›_C/»ËÜÝÞÝÞx·ÛõÞìÎôtwUWÿ«ºº{v'‰Ë"1d4œèœí2­2¸£pƒ„ Ö€xPw¯i\¢x™2e$I’$æˆGlذ!Q[I¢øÙ³geÏž=Â<Ù×Á»ï¾+à‰Ú¾ðÁ®DíÁƒ½sLûâ®ð¸ëÐÔ€5`ÇÎY¼x±\¿~=޵Ü+¾{÷n=z´ 6L–.]ªæ÷îF}¶páBù÷ߣÎbw ÀãØá7–3gÎı–;Åûôé#Õ«W—Õ«WËÑ£G¥cÇŽR±bE¹téR¤õ5J†®îÏš5K®]»iÞP¼ì.W®œ-ZTf̘!5jÔ°°0™2eŠRß¾}¥J•* P)S¦”AƒÉ… Ô½:È®]»¤~ýú2dȸ ÈÁƒåù矗ˆˆ1b„[}-[¶”[·nÉܹs%K–,2~üx¹råŠtíÚU}oݺUZ´h!ݺu¼t»víä×_• &÷6l(_|ñ…º—5kVw½•*U’¡C‡JæÌ™eÙ²e²yóf%#2åÏŸ_:uꤼ|îܹU=7nÜcÇŽI“&MdݺuR²dI3fŒeZµj%<ð€¬\¹R^ýu·a¸™áIÐ{p–¯^½*S§N•±cÇ*oHXÁ5ž1<<\,X ºvܸq ={öTY³f,_¾\nàÀ’+W.Y´h‘>|X:䇽{÷ÊþýûeÕªUR¾|yåêÕ«§Îwîܩ’óçÏËŠ+ÜÞ—sèÈ‘#²cÇ)[¶¬2¦^½z  „&Mš¤Âž¦M›ªkVU¸·~ýzå¹K”(¡Ò K4ñèBÕªU• ¤Qm U úIfT  €ýõ×_KµjÕÔ50&¦xN¼.¡Ã;“Ä=z¨I#¡‚&]Fb{&ª„4|:o_¾|YMì¨gãÆÂhqîÜ9SçSnòäÉR·n]å©ñ¶xX âic ì`Õ†8¾Å‹W!N… ´8*DBV&­¬ªÌ›7Ï}ÏóDËí™tç–-Yú˚DÆY~Ë{»¬U ¯z¬Ø×e­˜x¥Yq²ËZ¡pýöÛo.Ë£{Ý«\¹²Ëòì.+¯ì–gwuéÒÅeÛuñâE¯{–ñ¸yzÞ°æ.Ë@=“btn=‹â²VŠbT&eîÒoÕºukåmñ¸žÄ²œ/%MšT­rlÙ²Å÷–ûš‰¬/±4Çá/ÙÕ¡Ë>ôÐCúÔýÍ$ÓŽˆëC’`q‰U ¬³*Áwl‰U &d€×_"æe;mÚ´î"ÄØ-Y²dî4VFXŠôœºoÆð~Pd`Žau~eoÞ¼¹<õÔSÂw"¥~!ïÁu|“Ğবï5i¬TÜÔå$°á,ò«(ÁÒ‘¦öHÔœx”e¾ÄBéÓ¿l…6[¬]ÅÉEdyï½÷¬v‚&êÜ®A 5íÔ© R¬XWk7óI9²iB3Øä2áTN›¶ÉZII& î´<øM§Ø†<ƒ;qãVY›.7¬U–¤ÖN臸6à`ààÁ³Öó!+N/^ÀnÈ €; çÉ“×Y\îm7¬ZµÏZܯ€hB¢eaî@×ýïk¼â¤Ö3&[àlX€Ç3vì8&çÏßÙ…Ô¬ðÞcÆü®/Íw.Û·‘³g#ÿ­å}LB¬4`+µù_hÒ¤u¶çÙ—éÓ7ù_‘É+ €ÇJmþ:tè¬üóÏë™ðpu°DÈÁõõë7dñâ]þUdrÅZf'3Öªó¯àÕ«ÿZüÎ/tš5ûÞú=çsÖo"ï<ý˜*U„õ£ñ1þi2V¹ÌÓ„±R[ ¥H!)RÜ)fýÔ,BÒ¤ñÿÙð°2Ym4`܇Râ+‰_È……Ýù™\|ñ0õzkÀÜ[ñzÅOKnß¾·á¯ÌLåJàA­ð î^Ó8p1@ü}÷Ÿ*äÚ¬ ÀìâïÄûo@VàT¦©*áiÀ<áõ‰‘(€0 2MU Oà ¯OŒDÔ€x•iªJx0w°OÌ2¡ƒÊ¾ËÊÜA›eB•mî¼² Gç5`<¸ƒ:7!ŠƒÊ¾ËÊÜA›ÅAe€;¯lÃÑy î ÎÍTö]VàêÜüàÁAe€;¯lÃÑy î¼Î G5`î ²M î ²ï²2wPç&wPÙàÎ+Ûpü4àùfÚ%K–ðŸæˆ'$Mú +I’dF¿ñ¤_°ëófgï7[—ÆË[o½õ˜šai47 X¯W·þ&×ÄÜ{¯‰Áã¦SS:kÀø М9s$C† Ò¶m[)R¤ˆ*]©R%©R¥ŠWMÑéâ‰'žPÙ³gOå=‘÷ÓO?Uò>_>È‚&±¶<Ó¤I#¥K—VüÐGÖ¬Y­÷úœUi—.]’Ê–-[”üü±¤OŸ^åóÍ;jÔ()Q¢„´lÙÒ-?Ƴÿ~Už\Óæ?üPž|òIùàƒ¤P¡BÖ›™Jîܹ…6\¸pA d½¡"BvìØ!Ï=÷œÊ•,?ýô“’«Y³f²víZÙ½{·ê³—^zIðâ>¬%kiРԪUK† ¦t·jÕ*µ*Bÿ(PÀ-¿¿'1öà/^†ÝÖ­[Ëc=&ß|ótèÐAÊ—//3fÌPBÌŸ?_ñÇÓ…‡‡+o·zõjÁV«VM~ù塞üQu8 bø¼víš[î¿ÿþ[)¤k×®ªcFŽ©îx†g® Ö¬Y£Ò"@‡<ÏU‚ÍÇܹs­?¦Oa½ílŒ2: åÓѽ{÷V÷ùçŸ[w|çí ³fÍ’þýû»¼OtºÐlÓ¥K§€qúôi¡Ã"ãƒ#¨Zµª2,=B ‡Ñ£G«4twøðaU-§BÚ=tèP‰,/:{üñǵ8ê»B… ªÿ6lØ F4€‹c |ï† ¢€žY‚£Ÿèë=zȼyó”ÁÙÉ‚S7nœ 0@š6mªú«yóæÊx;wîl½yî¼ òœFEFF]»v)#ơ͜9SÉÓ{pà‰ðNX C çJ8PªT)ùòË/•ðŠ$ޤ1Êyíµ×Ô(€Ò‹+¦dΑ#Ç}²“—x™ƒ²Úâk×®­¼MõêÕÇçÚ½>gT°£°°0É–-›RfÆŒ…úP"^5S¦LBìš2eJÕ±šg–,Y$_¾|îꥠ¨t¡3ׯ__ÕË:-9pàÀ}|vîÜ)çΓzõêY’æöÞ•-[VUØ!FQbñM›6)ÏŽ§,/õV;BxSæ)„b £È›o¾)?ü°ŠÙO:¥æèCƒèWÒ#“…‘9˜³`ˆÔËH©‰êÑŠQQ;­š5kª~¢8à€PC©'1|Ñx*†?‡‡Y°`òd%K–TΜ9³»¨çâ¼NôœHá­ôDO§“ÆD%2bH×ÊÒy04ä§s]–-[&íÛ·W’ÎÂ(0VˆM/€a¸¾! éQé‚ûÔ‡‡Ð ðˆ.Ñ)¤ °éòžéÔñÈ#(Y‘±N: ˜vyi+†P¹reU7}ûöUå©¥‰ø!F8ˆ6ø¦y¦ÛÉÂdV·¼8ÀíK”%lÕd€ìøë|þ~Ç8Dñ§b,Ž˜Š˜å"âMbìîÝ»«I‹§¤1xIbz_"&%D`ë×1E9¼ QC›ç9žƒ²zXÇà^‰üÄ®5R2a˜tæo¼!+VTC°V2ü0(}èNP £ø ž•rðǸíøîa¬ÄÅ„jz¢žÐá£%Þ¢ ¸aÆJÇÛ·oW^Ð./aÏŠ+Ü“StÂ5é.r!'<‰Ãcº‚e' õ2‡ÂY°2†Ñ„.4‘þ$·‘ŒùB (V!Jd̵…Ò)LHˆ­!1b„š€¢H†a–ٚ4i¢b; $òëzh0à#^#æ' >|¸'CÝ'Ÿ|BõM¼H¤ésÂb?ò&¥€¸\¹r*þ'¬b’D:AlÎDžM­Ø¯ áñ84ÑÆ¨–ÿt™0&x࡟~úi5røòÁ€Ñ“<ädÔLxX€L: &ýå—_–>}úsdíÕ«W¤y :§, NEÀŽQ"yQ·~v•,eÊ”Q:¤üÈ‹“¢^xáUÝ#–ƒ"c´ÄÀq,ÈåK‘ñ÷Íç{íõA¼+Dǰ¾™ý½ÆK¢°ï¾ûÎ-,ž˜‰]ƒ†úèÀÍ  Ö«cÇŽUA|L~mL„C·gˆ•lt*C!à$šðà¤clž İàé9tê2±ùÆ(©“ø>:>€'àË›ÕB³äÉ“{‰ÀZ?ÿgzdy‘ãØ±cBMxæIè' õìyÏßs;Yhuj½Ó6ú×8#vàö—?sp¡ÃJ«\à_#ÈŒ%%&.žÂ[â|É·#ý¹Hü7õV»I,Jf Ì—b )2yíøèù…/ÿȆ/E–9ìòS>&úô姯íêöm@÷7å£ÃæÓoo3Žii›ü†‰¥çdÇ&Û}Iýúõój8“&;š2eŠÛØÝw2µ`–üðž… ¶5`;y˜s8±‹gÇ;ÔÒ>É$æŒ)¸Q:–®‡1®‰I9|)¾,Ý—OT×L’>ûì3eÈ€sÍÜ *rz/*YBå^À=x((Ž-o€ÍÄYÇÔÄšÌ;XAbŽ@<Éš7a»pì.bLôœÚÅ …¾ˆ®÷àÑ1 †û••! nÚÄÄãýõ—0ÙbIíf61عý/vñ‚A×qmƒx,4¨W|‹²Ì¦W'jÔ¨¡V7صe½ž™=Ù.žŸ]½1å¹‹Ç ‡¡ØiÀ<zc÷’-fOb—•M–!½z@¼®w`=ósp=çÞÅóåŠ×à±èuvYOæ¹ `òЛLzŸÝ9ˆç4ؼÐää.žæÊßf’‹Þg£„' yºglxÊŽuv2ÓÄóÜ<¡Èr OÔANïâiYBù;^v2CE¡¬”0¡$ñÜÔb»›'ñWx¶C/êØÝw£#»x¡¢ó¨ÚéÈNfTÛ=vgsæÌi³|w*ÞÅ‹T°ºaB”xèlžé±Û¤ŠV¦Êh4`‚bs[¯ Ä¦¬)X ˜U”ÀêÓÔ–Ð4`-q¹i‰ùoBó¿ñø¿öã]¿Ö£¸n<['}½VQšñyŒâ¨~&D‰£Mñ„­ð„Ý?Fº8jÀ<Ž 4Ŷþg¤•_†}/IEND®B`‚mysql++-3.3.0/doc/html/refman/graph_legend.html000644 000765 000024 00000016313 14042362133 022103 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Graph Legend
MySQL++  3.3.0
Graph Legend

This page explains how to interpret the graphs that are generated by doxygen.

Consider the following example:

/*! Invisible class because of truncation */
class Invisible { };
/*! Truncated class, inheritance relation is hidden */
class Truncated : public Invisible { };
/* Class not documented with doxygen comments */
class Undocumented { };
/*! Class that is inherited using public inheritance */
class PublicBase : public Truncated { };
/*! A template class */
template<class T> class Templ { };
/*! Class that is inherited using protected inheritance */
class ProtectedBase { };
/*! Class that is inherited using private inheritance */
class PrivateBase { };
/*! Class that is used by the Inherited class */
class Used { };
/*! Super class that inherits a number of other classes */
class Inherited : public PublicBase,
protected ProtectedBase,
private PrivateBase,
public Undocumented,
public Templ<int>
{
private:
Used *m_usedClass;
};

This will result in the following graph:

The boxes in the above graph have the following meaning:

  • A filled gray box represents the struct or class for which the graph is generated.
  • A box with a black border denotes a documented struct or class.
  • A box with a gray border denotes an undocumented struct or class.
  • 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.

The arrows have the following meaning:

  • A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • A dark green arrow is used for protected inheritance.
  • A dark red arrow is used for private inheritance.
  • A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SQLBuffer-members.html000644 000765 000024 00000017300 14042362133 026016 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::SQLBuffer Member List

This is the complete list of members for mysqlpp::SQLBuffer, including all inherited members.

assign(const char *data, size_type length, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)mysqlpp::SQLBuffer
assign(const std::string &s, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)mysqlpp::SQLBuffer
data() constmysqlpp::SQLBufferinline
escape_q() constmysqlpp::SQLBufferinline
is_null() constmysqlpp::SQLBufferinline
is_string()mysqlpp::SQLBufferinline
length() constmysqlpp::SQLBufferinline
quote_q() constmysqlpp::SQLBuffer
set_null()mysqlpp::SQLBufferinline
size_type typedefmysqlpp::SQLBuffer
SQLBuffer(const char *data, size_type length, mysql_type_info type, bool is_null)mysqlpp::SQLBufferinline
SQLBuffer(const std::string &s, mysql_type_info type, bool is_null)mysqlpp::SQLBufferinline
type() constmysqlpp::SQLBufferinline
~SQLBuffer()mysqlpp::SQLBufferinline
mysql++-3.3.0/doc/html/refman/functions_e.html000644 000765 000024 00000021352 14042362133 021777 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
MySQL++  3.3.0
mysql++-3.3.0/doc/html/refman/inherit_graph_42.png000644 000765 000024 00000005022 14042362133 022427 0ustar00tangentstaff000000 000000 ‰PNG  IHDRl%§1 isRGB®Îé ÌIDATh횈T]ÇÏÚÝ-vwcwb·(Šbw€¢¢"&v6v b¬Ý](vww}ßþÎç}¼}ÎÌû¹0fÞ›wï=÷¾Óç¿ðO‰Ÿ"¢Dš“úªð+,’‚_a‘LaB3H>óþ"ČӨG¯|#>|¸üüùS¸úéÿ—À÷ïß%V¬XÂÕ?$ID’«_a‘DQæ˜~…ID’ë_§°óçÏË£G"T|Ÿ>}’ýû÷ûdOÃëÇ>ãi?Ø_§°ñãÇËž={ìg ÷û‡Jûöí}²áõöí[Ù¹s§[ž;w–ãÇ»w7f…­\¹RZ´h!ÅŠ“¼yóÊôéÓ%wîÜ’5kV9tè 6L&Nœ¨ûam /^Hß¾}%mÚ´úûÌ™3:>eÊI—.T©REjÖ¬).\°Î¹`ÁiÓ¦ÎÏ”)“lÞ¼YÇŠ-*:u’”)SJ£FäãÇú¼zõêrýúuë~ß¾}R°`Aùòå‹>›6mšV¿÷ïß—Úµkëzö|ö왎›¯%JÈ«W¯ô'ï²víZZ2dˆž•ý=j¦»½~þüY.]º¤ã‹-ReÈA–,Y"‹/Ö+çwîï–á¯0+Œ—Ù´i“Lž0·[·n²cÇKø,~üø±lß¾]V¯^-xÝ Aƒ”ç¹sç$qâÄ‚ÒyYøB:nܸÖ}öìÙ¡íÝ»WŸ!¨âŋ˄ ¸zõª¤NZæÌ™£ãæëÚµkòãÇýIhæ}O:%kÖ¬Q£iذ¡ð¡ýñDì}åÊ}§îÝ»ëÚå˗˨Q£¤iÓ¦*§I“&I²dÉ<±ùm,Ì ƒC¹rå¤téÒR¡B)[¶¬uO8ÀÒoܸ!<ÐCbEx–ݿə3§Ì;WÃ<Ê—//õêÕ“lÙ²ýv¸úõëKŽ9Ô“Þ¿/wïÞÕ9={ö”4iÒH»ví,…¡|™û&MšÈ–-[tï;wî¨'=Z*W®,3fÌPE<}úT×xúÂ@‰D hÄ€_h(vìØún]ºt‘›7oj¤·Â&L(¡acÍñJa™3gVQ¢D‘$I’X̸ êÌ¥N:ª,„…ÂäÁƒÕ3ºví*Äï{÷î©ÌbÖ9)Q¢DÖ£¯_¿ZáÃ<ç¹ÂaÉœaãÆêÑ¢E“Ȉ#ôœ„uOôòåKæ¬Q£F•7oÞègèС?~|OK­1²uëV©T©’Ìœ9SSIHÞi-vqã•Â\ð ö%aÉä™,Y²Èºuë„8>nÜ8 -5jÔP%ÒÅã9„"'‘‡x¹“'Oj¸+\¸°N!̶Dž§-1„’]\çŠðN'™\ì|îé·Ï–*U*ÍÄý°%<^„Ç™ði˜¥¶;¡Øç9ïñ*;›!"A`` !+´„âmD…ˆ&Ÿæ0ë›Æ9,/ƒµ-\¸PK|r ŽՓ'O‚± É#ƒM¶ý˜5k–6ç'Nœ°žR®“ïLSn „pŠÂò?ö¹Â8 Ö‡° ‰ N¢:Z±b…z¢} …Þ‹5˜2øöíÛn‘ªHS¼P‚Žx"Úö0ĽiQ¨:;vì¨hLÉ’%åÀ:­OŸ>Ò£G—+W.9}ú´æVƒb¸C^XLßE5ŠûŠÂEa t÷«V­R$¢¤9r¤ÑiåË—/Ø{P`Ð\#  Â+Eˆ;¤aÐ×  <©'¢B3P^ß2eÊè¼ìâÅ‹úŒükþˆ‹ñQþïÚµK«<ƒb°ÐòÂÑCà}ØJá¢0,å{ÅŠõ³~ýziÛ¶­z=pÒáǃå^„—ÆÂ[P8$–î iÀÒñ>F1ÃÚϘ1£öi6lPTÆäCš}ú3<ŸFÛŽ€Ðèã‰7ֆ߹+ä…9´Àp4Þ„^¼•³²··. 3‡¢ ¦ Gè… ÒÞŒþËIXb‡´ŸäÏà‡„FWHûwï´1§b„ì­‚“·ý7M=¡ï4„Q¥6ЛLKRbû kŠ©öÜ!/¬§ÜÇ12ŒÕ[ …&ƒ„(<„ƒZ@ùizÉ çvX K§Ø ¡zƒG!®ò óP&ý ieÔÃ<3W‡Â(>hè ñ§j`+rWŠ1sWWÈ‹™säÈiÕª•FªTÐÞÑ[ …ï· äú@Pr(ûüùóÕÊHævú!Ñß°–—£v…4à¹(ŸÒ4œÏPÕªUKô4Æ|@(TàioŒAe(ZˆíQÁIö›1wÈ c& È# ÿ9ó6óÂB^#ÀFô0Nå 1^(ÜžA˜q^¸jBGi0ÏÀüà3fÌEPzëÖ­µ¨ÁpÂBx%á›Æ¾(4¤Pë y!Ì!œJí™|Štà1®:}Ë XOÊâЮ”ÅsW|ynGø ™üò߯ÿ¾QXX•ÅJƒr¸âkßÃ~ïy1}îŸÞÿnÞ¡ädôtúîŽG` jÕª¹›æóçÞ"/ÞÄk…y»ax­3ž^üÝñõyqÇ/¤çáRt„´©ü$T¾ZTDøÿ¯þ/ú¿ú µþTôXúá&X•øz÷/ øCb ÚWÛøæ+IF¿Â"HÐ¾Úæ_­Ùµ¯V¬IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1TooOld-members.html000644 000765 000024 00000006652 14042362133 025435 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::TooOld< ConnInfoT > Member List

This is the complete list of members for mysqlpp::TooOld< ConnInfoT >, including all inherited members.

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadFieldName__coll__graph.png000644 000765 000024 00000017461 14042362133 027350 0ustar00tangentstaff000000 000000 ‰PNG  IHDR“”—à­sRGB®ÎéëIDATxí] œMU_fÆ"ï÷3ÒÛdˆúøBF‰ð•R_!òV”(úzéSR|¨„H¼_#"ï·Œ©£€f&Ÿ‘R7e&ÁÙ³g)>>Þœ¥Ó™¤@Æ ):::“¥­‹mÞ¼™ÎŸ?o}1Hro¿ýv*^¼¸%6©˜éÌ™3T¡BùY–Ö™–زe ]¼xÑ63]¹r…4h@111–÷ tæo¿ýFçÎsËLZÍz„Âèþš™Âh0ÝÍL0º¿_™éÏ?ÿ¤ 6¹’““iõêÕA…“¿Y¾|9]ºtÉ_ͧi×'Ì´uëVzâ‰'Ò4¾cÇ3fLšü@d<óÌ3ôÃ?ˆ¹dÉ’@ à·{}s½ÁW_}E)))®Ù~;÷˜™ mâââ¨hÑ¢tÿý÷Ó©S§¨sçÎ4{öl5j?~œš5kF+V¤É“';£ÚµkË GiaÀèÑ£%¹páB™+V¬)é–;wnzçw¨eË–"¡Ú·oOÌ,Ô¤I) IR²dIZ¹r%åÉ“‡˜@ÒVéÒ¥ö3¨H,H­ŠÄÃÅüùóSŽ9¤üï¿ÿN¤ÕÜÝwWæ'»14}ú:~>….\ȺÏ-lQÝG•­?G_tú•’¿D1¢ÊHèRH3S­ZåøÈUf¢‹´iÓ~2>Ÿ²ŸöÑPw3ñ&Ð’ûéÊ_×Hñ•bÕn8Â!ÍL%KæçÌ×_h¦¤\æ'ß§¨iÓ×ø»¥ƒ'¬¿¸š¢hI¿´uÚIB•+‚Ê4Hÿ=¨¿ð1·ÒÌ„ŽT¯^ÆÑŸ«W¯ñ{Ãzä‘÷hÖ¬MŽüpI$%\¢¹ì¤ã›ÎÑ•”«ŽnEää×#ÕµdrÄÛì&C:m@J1òyFVÈ·_ ¹q¿RÒo—èÊÅÔ_ \I¹FEn»þ…E ;ò’©NòüMóUŽALãXé… ,p€®]¾F×®¦]úç/C9·ˆs8ä™ F8$‘råÊIùòÅÐ[ou6g‡tºýœÛ¨R‹Bb™;‚/J×ÍgÎ X:ä™)þÜü¢÷º½ÂFGGQlleþ–i$µo_7`„õõc FQ“Ñå)vh9ŠÊA9s_ºœœ.qÇõù|}OOÛ yfB‡k×.ËLÉßå”  úðG_¿Ó?†ßŠîÚeE[¦&н/W¤ÚO–¤¨˜º”|•Š× ¼ñ-Œ—ú‹•Ð<㜚1c½ùU«v«;ï|‰¿¯ºìÈ ‡Ä–©'ÛNŽ®$¸¤vù‡ã<Љ@ÀSq åŸzêc‘TÏ?ß"ÐÍG¼6ù²Ûnjÿéí”§hÚG† dA°PsVt=º­¬æŽùÓêrÈå­w„j÷(´Œ‚†­dBçÞ{ooÚÏ›{à4d+ϼHeî ŽU›;B†­dB‡Ÿ|² >ü}÷Ý/îúùyKD=#aÍLQQôÊ+høðyižE……’aÍL‹† oæ]Ç7±¯‚¥!64¡‡nXÛLÆp$&ž“¯ ¾úª/ïD)bdë£)ö’ ô*VìFÞõÛ<¤^ü&Ä'Ñ®ù¯D±k;}ƒ²3Ð?Þˆ‰~†¾þz[0Ð=]’O^¦¥Ï Òõ2^½±'ÙVŸnƒ_„»"ø(ðú©iVÞãÆýªNQ¼{øRVÞÖã{-é¿_ái7.…x;¾¤±[Ùp‡óöÛo«ÿüç?â.‡·ì+Þâ®øcÅ>š¤,®Áåòà&;°‹)"®sàÉÙ zõš©ÆŽ]´}>¼úŒú´íuõòõ­÷ìXB±34Á—ý;ˆï(œÀï{ÀfbÇfŠƒ(vØ¥Øgƒl‡¿*äÁÒØÒÏ×oRUìfÚ/ýÏ6jÎí#G>HÿûßFylä˹­{õ(Å+GQ×ýHÁ¶ÞÃ[ ;X“­ììÔL¼¿Û¹Ù¹š8õ€_)öñ žðàižcX‚Éöoø)Ƕ~lR5»Òñeß³3)’—]Ò´`ï(_ø’Ž>ië·“¨~ŸÒTÒ哸SÀ/@ãÆùÉþ{âøÌðceøjÀ¾;9âjeYµñ£‘†Yæ¤>Û1F½{÷F<ËÏÓÂ…[}¾j¤\ìüœÓ™Ñ.ÜþÀxf·ŽÂLðü†œw¡àÚÌïxpå)·Œ°§\’®u¼…lÍL§N%³Úx…Ý&öfÇ£Ö‘Š¼%l0׃‡9¸…t…Ûn»ÍmײVçÙš™@þB“¾ü2ž]$>kE¿ça STL*TùºSX¿ßÐ7È–6“™ž]ºÜÅ1ÞRØmófsv–¤±z[>äå/œ!Á<%B¶g&¬ãÇDZGÿ…¼ø¢§ôóº<6¬{„ .G‘,™Â²=3a±÷®yóªôÚkþYåX1ÊÖN²j‹¡²ï#À ?oò43ýMµ!CZ³!¾…Ÿ4Ÿð†ŽÕÁæ€s©á Ì;‘õè*¬™éoÂ,˜‡† iÅ¿ë¾Êý9;?ÿƒñfÊ`Ýeâmß³ýjΕp÷ß?I>W‰‹«çzIŸg@-™\cüå—qh¬‹Óæ‚BÈžjfrº5ÊpD©üºÅ÷Å¥ˆ>uCÍL„<¸=ÜJ;vÇç°(e–f&‹ag•áÃÛ°1þ¹ÅUï²ð).üO†3hfr3º;ÖãÏ6ˆÃÅÚwg¸}f"­s˜¢þvƒãæ–!Ÿ­™)!„1>~ü×ü¥â_é”Jÿ$ÒÖi ÔhHàß§©ý«š™Ò¡a•*¥8Äj-#ûU:¥Ò¿´aâQªÞ¥å+~Á0¸ª™)ƒA|á…–´téÚ¾ýX%Ó^>²æ,Ú—B5ºfÏ[43¥åT9yóæâïÅ[sàçÏŸ¾¦*àæ>º7M>NG”wlpS4l²õðLe»voS»vw>YÑ`MÍLÖtI“‹ÀqqïÒªUƒy+QøLƒe€3ü²/ƒF¹Ëp}r¿\¹Êª˜˜ !‡·'´îß¿£çþrÀ\‘3JžFúö®X¼x±-_Úw¥¨>÷šš™¼&®èJÍL®Ñç^S `6“×û "6$þøã²ÕÚÍ{#¡«W!»Ð&vÑ–)ã _æ‹û¸¶ÁîsdŸ[É’%]/ä<[J&xZ{â‰'|FðvíÚñÞ»/éûï¿wüüåÍ dàŽàÐGõY?l7ä~¡ç¿+Œtºïß¿_5kÖLµmÛV•+WN½òÊ+Š÷Û+žâàêäÉ“Šg¾JNN–v&Mš¤F­~øáÅ^BTÑ¢EUïÞ½åÚ±cÇT“&MT… T÷îÝÅYÖ¾}û{‘ëdY|+VLµoß^Úd'ªk×®Š?H½… JÙ9sæ¨_|1Mš]Õ(TÉ7þx¶ºë®»ïëW,µTË–-ÅqÊqPmq¼Õ©S'Å[·Õ™3gÄÏRñâÅU«V­ú°Â­J•*нŸ¨‘#GªAƒ©o¿ýV]ºtIúU¨P!…ëì¸BêóvoñÇÿNM›6U§OŸ–|wp<½… ”LpÒ€YÞ¼ysv.1Š¿+BmÚ´‘eëk¯½Æ>*‹ÜÇ,[¶L&ÓÌ™3 ‘·_zé%êÖ­ÇëÝ${é÷ìÙC¯¿þ:1CJ{˜Åð_d†Ÿþ™ý ¤øøxÙƒ§ ăDŸ}ö™8|`’*¥J•"l¡˜Ó80`õèÑÃñã!fHêÓ§x#¤bo¶ì-q‡ƒû&&&rà âLþÐgøPzî¹çÐ$Yá†þC…8:DÌ B¨í•+WràëNüúg¨ÔGÿá[`õêÕ„-áß|óäûíÏ[.´S;“nu¸ÌË—/ŸÌZv¾ ØA•Ì>H¢ˆˆ©;nÜ8ѧ yòçÏ/ÞÐúöí+n÷Þxã Å„–rÕªUSìDTÒ³fÍkfÉÄL©Nœ¸îòoúôéâ} îþàÍHµÃ‡§iŽLŒpýgüRRR;P 4œy°¥$*<º˜ÁÏØØXq5ׂ/¼ð‚Hc\·ÂN(H@ÇŽÕìÙ³U¯^½3©äáŽ'„‚´=xð äƒ6ãÇ—´»?»’)h pHHf7ŸW¼§aöСCbõ% Óà Õ¡ÌzVKikFðÈ•+—Q=Õ±@rÎê‚7œ“´‘‡äÃspr?þ¸¥ÁÃQ*y×0Ž<ˆ1á°x#A;PmذAÕªUKÚÇbÆ3ÛF‚/îÇ’HpÆ=¬pƒq^¸pa…ö 51“JXB+_Ð%*šRlcù]Í¥?ª‚†ïÿ2b¦ÌÞ«<Øf±]íûbŸ°*Ìd.»ʪ‘ f6l˜x­=þ¼#ß— 6ˆÓ4·wï^v+}Á‘o…._c9 s}°ƒoØÚLßéüäRù™Ëa¥ç ,ÍDìcud°Ë »Ê|%€ùÔ§i^ƧiÏptj¾`…¼ïZU¬Êù+/ ß3Á å‰d«O,ˆ¤%³[KeV…Ž*p‡ŒvÌ€2¸9$XáæO|Œ¯pô‚v5—Qgxù›Q‘4×1£ÍŒ„®Œ„¼@3pXávýJpþ‡ìj.8É™½± ˜d‚ª ˆŒÌÃ*û2?Fp> å~ñ—–^£f²k/yÝ[?T,Uª¿&©ÍQºú¡õÐjR«9ãµyóaÊ;š†îdÉdoAa ©ª™ÉÆPÌ™³‰_µ\áW>9øiûn-…GUÍL^Ž#$Ñ‚[ø5Ì5ñÒ;kÖF/[ Ÿjš™¼Ë5köÈ \T‡ ¸téNŽorÅËÖ£šf&/Çqö씜ìôž3g$ÛN×_{ÙdÈWÓÌäÅB-Y²#ÕSü¤¤š9sƒ­…OÍL^Œåòå;ùû ´¯q6lØ/¡3¼h2,ªhfòb! ‰\!::2$¢“»âí«ó€¼èõòhvRåʃùËδÏ{aˆÃ©E|üè@ ð{jfòbV®ÜMûö”špV¾|aºå–rÞ´éíT©RQ/Z ý*š™lŽ!‡¶§fÍnßM6› ùêÚf ù! žhf²9øú!\¾€°I ÒÌd“‚0ºÃé+;äÐÌd‡zºn* hfJE}b‡š™ìPëj›ÉI@ÍLNZx•Ò6““lš™œ´Ð)›ÐÌd“€ºº“š™œ´Ð)›ÐÌd“€ºº“š™œ´Ð)›ÐÌd“€úÑ€“€š™œ´ð*¥ 8ɦ™ÉI ²IÍL6 ¨«;) ™ÉI ²IÍL6 ¨«;) ™ÉI ²IÍL6 ¨ 8 ¨™ÉI ¯RúÑ€“lš™œ´Ð)›ÐÌd“€Psp¯¬ô†»L5gÄ)±ÛV¨××S*ÔG0˜ðç™eΞ=›&v÷1[äåÌYŒã¹¤’ú€’fHë}Á Ngf’X±)Ò‹ÚºJ(R€£•J`H3îZÍ™©¡Ó¶( ™Éùte343™©¡Ó¶(à›É>ªŒ Ñ»ví¢š5kÚn‘Ç~s´ƒ Ï®|-Û·o—È–û-M€i×A¨SDŽâ`е‰` œªkˆ2|H‘œ8Ư„d-_¾¼Ôg#˜8r:qÐFËö²*3l$Âi!²¶/ƒÅQ5%Æ/cøðáôæ›ofºéiÓ¦ !¬+G¿¤-[¶8~ˆÑ‹P«ffum ÔqDR 9"Œ'%%É9bòø@ÒüŒðö»wïfw„•%°4¤Èܹs凨¸ûnÚ{æ™gŒS9¢=ÄË 0ÚÆƒO„‘oݺµäãññÀÔ3_·nÝTGÑî”)ShÀ€ŽòHXá)˜íÛµk'Œ‰~!Àã­·ÞJƒ ¢‚ ¦j;£“,“L L||<Õ«WOiêÔ©„ÁD¤l0K•*UhíÚµ½êéŠ+ŠDà°óÄaNÙ5òLéÏ;ï¼CmÛ¶¥¡C‡ cáÑ„—Ö­['×Áp , Ó§O SBŒ9R÷@íQÁq4T $ÈØ±c¥<ÊŸ~ú©0þŒ3¤ì¢E‹¤mw†´³#b¹=aÂÇ“øbРm÷îÝ›ž~úizÿý÷S©E;/L;fÌ™8xuc‚\cr¸F÷´Â/#Ú£M,„„ÍéÒÏSÈ2ÉÄrçÎ-3ƒ‹°ðNèf2lØ;›6mÉ€4–/ÓäÉ“é¾ûî•qæÌJHHfÁ;1sv£ó/Ú¨Q#9mРØ8‰ÆÓ@ý@:Ô¨QC~¸ŽHã¨'„„‡ ‚GÐC RûöíéÉ'Ÿ”öæÏŸO{öì‘>AÂB2ž€± @äqƒY‘g‰ FÀÀ?~\Šƒ±èäÈ@»À‰R‹ Å1†¥þÐBËBš@B`…®¥G{\Ç„ ‡ éº|ùrd{YÊLˆ^‰0¨`tŽ 37iÒ„`db"㫯¾J[ÂËC@ Bü/W̓c´×0+`•ï.¢&î4kÖŒ~øa1|¡–`G!¤< s¤ T` *T¨ usó111Qhµ à'Ê" { íêÑ9Í’ åëׯ/ŒjHlä±\ñC~F´.À¸à^|žB–©¹Ì iòÓO?ÉiÕ£G–Á€ØS@bpôlBç!5\Å<îsèÐ!Qm0PAX0&¶lØ;°; n<(×qĹp¨´ û¥gÏžÔ¡CÚ¹s§xà¢m¨g׸f’¶àC=$í‰Àü ]L.à€#Vm®é)i€~ƵôŽªH]ºt¡Ò¥KËÄI¯¼Õµ,•LV Ϙq˜Ý0j!mŒ¥8$DÇŽEÁÆ‚aŒsØ'3vPF/ì'0êÀ(=ö˜Ø,”_±b…Ø~ž`GÕ©SGf1˜´iÓ¦RÉaÓ âwË–-eÕÉ µIùzõê2F¤riÀÍúÖ¼ys±!1A Úa;ÂÎCýÆ ~è/&Qtttš–Ð7ÜßP­VøA½»OþÐŽ^èzx >qÝ ƒ†µ/ÞÍaѦM‡ÍƒÁ¦È—/ŸÔè 3vÖ¬Y¢¾}ôQ¹I„Ul ˆl *‰‚A3x °ùФÔ'¶Ò¸æ @êWw*6"ÚPíµí¿Œêá:h Û-£>ïæ  Éd ƒÙõ dˆ]WȈÀ0V3Ùx®íyrn¶Àä+Aã<³G0 Ùžs­gHV×|wçîðsWÞœoEkóõôÒA%™ †ŠõÌ»?$f¬1“ ­ç:8°M`V ö)ô’ÉSFI\%lWFB9ÍD ‚!¨VsþíªnÝï0)çm:;iÉ„õz¶ü¹~ié›Éï¯oÐj.$†)4ÔÌãXjf ‰a $ÿK|%/©IEND®B`‚mysql++-3.3.0/doc/html/refman/structmysqlpp_1_1NullIsBlank.html000644 000765 000024 00000010136 14042362133 025172 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::NullIsBlank Struct Reference
MySQL++  3.3.0
mysqlpp::NullIsBlank Struct Reference

Class for objects that define SQL null as a blank C string. More...

#include <null.h>

Detailed Description

Class for objects that define SQL null as a blank C string.

Returns "" when you ask what null is, and is empty when you insert it into a C++ stream.

Used for the behavior parameter for template Null


The documentation for this struct was generated from the following file:
mysql++-3.3.0/doc/html/refman/namespacemysqlpp_1_1internal.html000644 000765 000024 00000012042 14042362133 025236 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::internal Namespace Reference
MySQL++  3.3.0
mysqlpp::internal Namespace Reference

Namespace for holding things used only within MySQL++. More...

Functions

void str_to_lwr (std::string &s)
 Lowercase a C++ string in place.
 
void str_to_lwr (std::string &ls, const char *mcs)
 Copy a C string into a C++ string, lowercasing it along the way.
 

Detailed Description

Namespace for holding things used only within MySQL++.

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1CommandLineBase.html000644 000765 000024 00000046572 14042362133 025573 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::CommandLineBase Class Reference
MySQL++  3.3.0
mysqlpp::CommandLineBase Class Referenceabstract

Parses command line arguments and holds the results. More...

#include <cmdline.h>

Inheritance diagram for mysqlpp::CommandLineBase:

Public Types

typedef std::vector< std::string > ArgumentList
 Type for a list of arguments. More...
 
typedef ArgumentList::const_iterator ArgumentListIt
 Iterator into ArgumentList.
 

Public Member Functions

const ArgumentListextra_args () const
 Get reference to list of command line arguments past the last flag and its possible argument. More...
 
 operator void * () const
 Return truthy value if command line was parsed successfully.
 

Protected Member Functions

 CommandLineBase (int argc, char *const argv[], const char *opts)
 Hidden ctor to prevent instantiation. More...
 
virtual ~CommandLineBase ()
 Hidden dtor to prevent instantiation.
 
void finish_parse ()
 If object is still marked as "successful", save non-option arguments to extra_args_ list. Subclass ctor should call this after the parse_next() loop gets EOF.
 
const char * option_argument () const
 Accessor for getopt()'s optarg global.
 
int option_index () const
 Accessor for getopt()'s optind global.
 
void parse_error (const char *message=0)
 Called by a subclass when encountering a command line parsing error. More...
 
int parse_next () const
 Wrapper for getopt()
 
virtual void print_usage () const =0
 Show a message explaining the program's proper usage.
 
const char * program_name () const
 Get the file name of the program's executable.
 
bool successful () const
 Returns true if nothing has gone wrong since calling the ctor.
 

Detailed Description

Parses command line arguments and holds the results.

This class just contains common functionality and data structures; instantiable subclasses follow.

Member Typedef Documentation

◆ ArgumentList

typedef std::vector<std::string> mysqlpp::CommandLineBase::ArgumentList

Type for a list of arguments.

Public types

Constructor & Destructor Documentation

◆ CommandLineBase()

mysqlpp::CommandLineBase::CommandLineBase ( int  argc,
char *const  argv[],
const char *  opts 
)
inlineprotected

Hidden ctor to prevent instantiation.

Subclass interface

Member Function Documentation

◆ extra_args()

const ArgumentList& mysqlpp::CommandLineBase::extra_args ( ) const
inline

Get reference to list of command line arguments past the last flag and its possible argument.

Public interface

◆ parse_error()

void mysqlpp::CommandLineBase::parse_error ( const char *  message = 0)
protected

Called by a subclass when encountering a command line parsing error.

Prints the passed message, calls subclass's print_usage(), and marks the object as no longer successful.

References print_usage().

Referenced by mysqlpp::ssqlsxlat::CommandLine::CommandLine(), and mysqlpp::examples::CommandLine::CommandLine().


The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1GuessConnectionOption__coll__graph.png000644 000765 000024 00000010626 14042362133 031410 0ustar00tangentstaff000000 000000 ‰PNG  IHDR’\…™ìJsRGB®ÎéPIDATxítTÅÆ/š(Ø ØPÄ^ ‚EA9Š‘£ Ž örìØQű æ¯°aT@‚ƒDAT”&ûŸß%³¼}û–÷6Ù,ÙìÌ9ɾ7ý}óÍ;ó6ùêÄLUD nË»âEÀÉ!#8"eFWIÖ‰TRR"uêÔq?ÕˆAÏž=³ÎìõB¤o¼QðñÝOæ1øüóÏeöìÙµŸHYB×`VȺEÊÊS¹F²Ž€#RÖ!¯ ÔÎÇZ÷SM›6M¶Øb Ùf›mÖ1bê²eËd̘1òí·ßJóæÍ¥cÇŽú¥ø”)Sd«­¶ÊX_¢´YyòÒ"Ý{ï½òÑGeÏY³fÉ!‡"<ð€,^¼XÞ~ûmiß¾½¼úê«)ë‡<çwž¦?^æÌ™“2o®$ÔH"½òÊ+ræ™gJ»víd¯½ö’G}TöØciÕª•°+¹å–[tàùßÿ•}÷ÝW~ÿýw¹òÊ+¥E‹zÿÕW_é |¸`¥n¸á­sêÔ©²É&›d\¸p¡ÖKÂî»ï_²>ø`iÒ¤‰Lš4IIª+~zè¡Âr÷ÓO?IP]÷Üsì½÷ÞrõÕW çýàƒäË/¿Ô%’s ŽHßÿ½öb1YÞ{jVjÖG$vØa€qÄêsØëyóæ Öà‡~¹sçªÁj`­~þùgœÝvÛM† ¢Ëå?üpéÞ½»ì²Ë.IèŸtÒI²ë®» uüý÷ß:ødºì²Ë”4çž{nœHX/ê#@P|¬U«V)i4²âŽ…à]Íš5“úõë++Šh´Ánºé&)++“_ýUn±„ô‹TS—ÁK¤vÚI1®[·®lºé¦oýlذ¡tëÖMI4bÄ%ƒúÙgŸ©%¹øâ‹å /TÐYÖl œ?l¼ñÆñ¨+V¨"ÂÆ÷çŸÆóø/vÞygyÿý÷¢±X«m·ÝVã£Ô…õÚ|óÍãõ@ÐÕ«Wëý†n¨ŸzˆÏTƒ.j,‘Â0‚Üu×]êÇ0˜EEEòÜsÏ Ë~ Ît—.]”\ Å2áŸ|ò‰ØÄ‰uð8àÍòñÇËÿý'ï¼óŽú,DNŸ>]­ ×véÒ¥‚yã74ø¿þúKî¿ÿ~õ‘êÕ«G”Õ…Åò¬,“‚6éûÖ[oS;¹œÛþóžŽI-Z¤¾÷Gu”\sÍ5êôBü*–¸ýöÛOu_;³Éoëa9lݺµüöÛo‚cN<–Ç¥_éÙgŸ¥ˆúP´ÃRuÜqÇɧŸ~*=zôÐm?Ä*âSAò»ï¾[ËÕ‰XšÙ4Ø€ÿ÷æ›o N?KK³?Øw”þøqÏÛ²n»í¶˜q$«Ü¤ÙIÅÌùKÌ€¯ËÌæ˜±1ãèÆã¸0ƒ«qtPÌl·ãi·ß~{Ìø#1C¢˜±$ñx³„ÄÌ’3V,vavÚ¶!_BÖTuQ¿¿Ÿ¤Mo_*‹pcvµ1s!gf³äœEböqÃñg1[n¹e|BâO±uö¯ïáOãž-·?P—׿ò§ûï5jØ6ù‚êÂÙ é´T~}Åå$‘8S·át:ÀVß»¼]qÅÅùå±þM`†4"3YWÍf=kN‰muº$Y»{²(o°Áö2á3Ì‚%d¹Éd]!M­×äœÝµ­WÔ\ãÉdÖå ¯Í,IüÕJÎü4nÜ:Ö¬Yçœé/ØžqÆá‘áu¨/™^.Æ"ЭÛ`™Á|ó1ùxmÙ²•f÷6. „‹ÊÉwmÕ=l#G–êw’4XûDûý¥òò…æ{PKÍ·6›Tw7rª~w²0\«V­Žoû9K*)™aþ8 ‡æ¬_¿ž9áþ H@Uyå,RÀPÔ•¦Mi ¤<ö> »‹28)„|)Í.k!Yó:Ù)døùε{¯’IvD ÇÈ刀€#R\–p‘B0r>R@ÉŽH!89) G¤h¹\Ñp)N.WŽH!¹äh8"EÃÉå AÀ) — G¤œÜö? ŠdG¤œÜö? G¤h¹\Ñp)§ýÏ­BúžÍdG¤´yóïÞþ‡€d’‘Â1r9" àˆ’Ûµ…T‘숂“Ûµ…äˆ —+Î"EÃÉå AÀ) ·ý¨"Ù)'·ýÈ)@.WDÌŒ‹‡1cÆäÔ?Ý4Xíý­[·a¬^½&ÕÞN6ž%“mœxâ‰qÞp‘𗶆HröÙgË9眑†.[>"€ä*úyÞà|$/îºÒ8"U:WЋ€#’ w]i|¤J×’Á‚蘡¤XT™fŒ¨º³³gÏVádÄ–½Â6•©3¬ µhÝ"ªŒti¦ž%¬ÝTéˆ8£;Wý¨q …íÉ“3óïõPàF étÔF=g±º‚Ê—\r‰¶…š$b‚H¹g;@Ô4 G/X° Z»¶EB&Ét”Ñ{=á„TùÕFD|­¤çé§Ÿ®rå]t‘‰Œ9e¶b¿¯¿þºòöÛo¯²V ² H€N›6M%Ñ!Á¥—^ªŠÛHš#fŒzã>ûì£réh¥¡X}ùå—«Õ±×H{¢êxíµ×ÚjUþé+³éÛ Aƒd£6R•Htte~æ™gT}-]Ô"‘õB¢ ‰uÔ³‘E:4(Žú(cÄ÷âm29P»ä0ò©3fÌPÕJ¤ÞQ“DMÅ'ÂiòƒXb¡)ËNÕJT¹QGe’¼è÷Rïƒ>¨ò¨ˆ(SÞˆ ωžê™H›2F‰2ž|HÝC|Ô6Q,ßa‡Ĉ3¦mµÓ¶H̲±cǪ("{?þ¸Ê~vìØQ%Ö‘õ´bÁX}YVŒr£jÎ2hÀRÏóÏ?¯²ä(]c-$o„ *׉бÝn2ÓXš¸_¼x±|ñÅZ„Á†P{†-R¤¤Ù™,7˜yŠÕ el¤G)Ð 8uóÍ7kàÎ;ïTläßé«?Žò 0˧7‘8ž›3È‹$=DâÙÁïÖ[oU)Uú>èæ2؈Bb“O>)HÅC&œ!’©àO;L8&R©<;}c¹ýî»ï”¸Hª>ýôÓZ'8@6$î‚¶˜jbÄ_i‰z±ÈŠ3H|Úkh×® ©Ž¶+„C*½E‹z€Xôfyx§Ž:Ä©½ý\òS˃D@3´®]»*A‰cÆZÀ^S€åååªÊ]XX¨³W#~A6´àJKK=7€…°(fc9x6žÅnß]"Ø6ýÕ3™ *‘}úôQ«J#©ªÁÊ.CíÛ·WKѹsgƒ¼àÆ„ayÆÚbÅxòðüœ¢@Îdc7nÜ8Þ ÚǪA°³Î:K…ž™°¼O¤_<Ïþûïo?^0ÂE¥ˆÔ¼ys­àš6mšÐ &³>nÜ8ý<à#<¢³ÁÀ C4¯Œh4§×)Æ,3 O&U ŸÌZ}B°r,AD=’å”éuÊò[o½¥~N¼?Žf£€Ÿdùzõ꥖€gfi'¢6Á;Ø´Mš7ÞÆñü<3D¥o,ñLB,}$€£µ¸áùųÙö‰¦ýTmyŠEº¬‘Âj†<øD<3¬¤¤Dý | ê¬:ðÀuÖó0X|.@»–¥Ÿ‚AÂl(Ê1ÃvÜqGÂ`öóÍòÈÒJ@²}ôèÑzÍ/À'r8¤ÇÀõìÙS:uê¤ù!+ýf™`B0 ôÉQŽ9æ%M(..V¢àƒ´mÛV—+ây‹À}:? ݦM%'Ö?ˆU«&}èСZ-¤óò1Áɇec™µVÜ›¯2×i;ÛëjÄþ¯EHÂCâû2gmÇyä!iÕª•ôîÝ[ýהּõ00˜à%K–¨OF<3è±ÇÓÁÇϰŽ4Ÿ¬ñÔi¯!f¾oß¾ õ° ÀQ'@–èfeIéû¨Q£t ÈßÇ,A,!L ÊòÉ’ƒ³îc‰âyèý&@J+Ë~Ê)§èÆ‹Ê}÷ݧyü¿ìó{ãmõB`Ö? Lð³ðÅXrï¸ã])X†­Ô<ùñùð»xnŽ(¤÷Ú±mùÓÖuŸðï‘éà?þXåwm˜^:ËÌl–Åžå€ $bÇÕ¯_?u”I×lü!ò[¢aehÖvïÒhë úÄâIva©c`½4–ü o€Ä´ë] æÎ«Ë³w9Š£úN!—`(C¼¿MoûëºÆÒ`‰°öÖ/#?“×Û7ò»oò±Ä1 -¦Ä¥ì»6¬š ‰èÙØ*|²«bûˆSgIDu]·ï›s¿ÅHU Ûgv¬AƒTeò%>ãDätIØv'f·gBöÞ~Y(›öùÒK/͵ê¬2{9ïÂrpfä%±·Îi8ëéÞ½»:ª8ÍŽH^„Ö\gœHÉMÔŒü3ü.]ïN¥ÿþ‚•ƒüþ“t– !C†èàÓà?âwàoE=¡®O_ý½¨–íõw;ýÊÊÊôøßK"já@”ÃÊ “tèŽ?þxÝÒ³U'»ÎtN¨Óïin–È"AvRþÀ6Ø:¥þ“t,Kˬw9K÷„Úßfm¼Ï"±õ·–Ç;zr¦Eðúi,aö$Ý›Ÿ3›tO¨½åkëuÞ‰Ìl™ñ“ì‹Ú1æt™ó˜.]ºèø¦:I‡T6°Ã«ê µ­«6}æ³Í9®üpÚÍ’…uá}¯ A'霔óÖŸcªrBmë¨mŸÕr²]ÓA‚0léíËgú›ê$4Þºã#ùOÅ«zBMݹ²r² ÀZÛ~S¥:Óªê µm³6|æÍÒ6X©NÒÃʹô58"U0!•ÕqD‰†@ÞìÚ¢ÁárU³s‰³vãž…ÿ'`+çqöÿí®­Òltó·´å=2€#RfpÌûZ‘òž™àÿGƒ¤1†ÜIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Date__coll__graph.png000644 000765 000024 00000016304 14042362133 025765 0ustar00tangentstaff000000 000000 ‰PNG  IHDRžÝLƒÈsRGB®Îé~IDATxí]”E.ÒP‚É"¢’PQ² ` ¨€ˆÊO’ %IÉAAADT’PÉ Qä@ÉQ âÒ}3ÎÎîÌîÞîq{·]ïínOwuÏLõ7UÕ½ÓÕ)iÒˆ§RƳž®¦% ÐÒ@I@!‰OW&ø@­\¹þþh8bàùçŸ7à"¿ˆDï¼ó@¥?Z^øþûï)66ÖCízÈ£Dh    „¤Yœ% ä,]€RÀsSY¶mÛFÙ³g§œ9s†å¼qqq´xñb:pàU«VJ–,–vÃÕÈÚµk©hÑ¢”%K³ÉK—.Ñúõë©J•*f^0‰?þøƒ~ùå¯*  "EŠx凒qhÈ!´|ùòPîɬ{äÈ*_¾úH½ð Ÿ/_>õÕW_Ix@µiÓFÝqǪQ£FŠÁ ù?þ¸úõ×_=Ò/¾ø¢êÔ©“ä_Ÿþ¹â§^]¾|Y½òÊ+ŠŸ|U¼xqµjÕ*a©X±¢j×®Ê;·”·mÛVÎ…¶®]»¦püòË/«¼yóª|PíÝ»Wê9R.\Xd1vìXÉ›3gŽz饗„ å‹çÑGUõêÕ“sàÞvîÜ©öíÛ§ ,(m0¸?"»:¨+W®H¾õ ×€²ƒZ³%&MÅÚ×+РA } 9J HU©R%ö 5ÐÙ³g‰;“¸ó©B… Ô¹sgš4i5lØÆO,b`¿ûî;Љ‰! }óÍ7ò¤qG ’ÐNß¾}…÷µ×^3À3ާhÑ¢E4{öl‚VêÑ£‡”mݺ•n¿ývÚ¼y3þøcÑ\+V¬ãýû÷w.áwݺuT¹reúðÃéôéÓM2wî\bÐH[ÿüóýùçŸ4mÚ4Ñ&ùóç÷Ƀ“‚ç€y…l¬ÔµkWzâ‰'hÞ¼y¢E MAÜ‹´dɪS§=üðÔ2eJ3hmÃWçBòÃIýû÷Yúâó›g…S OWíÚµ¥Ú'Ÿ|¢ð¾þúkU½zuÅ‚S™2eR‡’'Hg•¬n½õVyÁÔãédõ*uñ…§÷Ç45Ð{ï½'šÆ`€Â–:ujuôèQÉž:uªjÙ²¥Áâõ[¦L…kôE ZÑžFÙwÞ©´¢ ~úé'É.T¨hU@Ûà ÄýâÉáÉf`ˆf‚¦7nœh/îLÅ -Z·n]á…öòŃö¨ÂÃ~‹´gh h×ôéÓ«áǫѣG« ˆV†ìØoR÷ÝwŸš8q¢bó,õ}}9i ƒwãÆªU«VŠJ‘å_ýeyý†E‘pÆ@¾PŸ6mZÓî.\¸ðÄÃ!fó&š£}ûöÄ&‚àèåÉ“GÚÁêÙé¶Ûn3³tæSbä#ïܹs&=ÁfÀËŸba›Xúý÷ß)[¶lf•«W¯w²»Ý¬ç‡|˜Ø' ¤ºÉÖa|Š)¤a€ãÌ™3ßÄN2Á–Ãf0ð›pá¥K—&v` Cm6q‹/£6ƒÄ¦Ø —›E>´;Æâ›Àš2eŠÔƒŸ°zõjbµ.>Ò€¿†OáC+ÀgÃßäøñãĦÀ<¿S¸®Y³f‰O„§uéÒ¥"ô.]ºÎ&V|ømlÍ{yì±ÇÈÎ…QÚD{È8×Ûo¿MMš4‘—H,xE7…‘E"^I-/‘X2ð?³º¾RÃ’«“ hY„¡“ÁK@ÈMfiyÝXFßïR»U‹¦2= ‹¦ÞN€{Õ(„MMêa|˜{+D±¨„U&Xšœ_Ä×&,Ìzä‘G$J–7!ÒŒ ^ IÆñL¸Aøs¹’ãÅù+°¾T¯ÓK«Eùƒ×û{TªZµªúì³ÏÌÚFüFDmCÔß~ûMÎafÂZP!®$¢¹1ˆäZP/1Iû@nÒ·ÈÊŠ€¢!L½ÈÁ7­ñ­Ø,IO$5ÂÇpPHˆTY…Ÿ- 0±És)²WÏŠ+)ÊeRÞ’À*k:T%úü'ÇÌ9a–ÄĤ╾_£5™¢4¡ä£ãçÎÝÀ¹)̘±?^këÄÐúOfê“OÖQ\Üó‰_~9ÄËy.xäé"  ~ýõ8¿Aè ¼·=þf·>Ô²a`öìŸyÙ²w@‚K—.óë¬ÚŒÙÄEzvÌ& ßS¤P¼Ž+,YÂ\iÊ”×ý¡½{ñ«ó:yïeB¶f¢æ0¤¿2’£”ââ®ò_×£tL?þ¸Ÿ_Œo(· PeÌè¹@09Ê ˜{ÒÈ&-üe‘={FÉÍ”)½h"ãØÆªYÚÒ0I@!‰OWÖÒI@!‰OWÖÒI@.âãè5æ [Ti¹t?&9™ ‡.ÒÒI@.âÓ&ÌE87Š4€\d¤M˜‹p4€ü Gsø—€Ö@þe¤9\$ ä&~~&g h9ËF†ðÉ|í¤ËÝV¤˜œ4—ƒ4€£³“€‹œô<‹pni¹ÈHϹGÈ¿p4‡ h ä"#mÂ\„s£HÈEFÚ„¹GÈ¿p4‡ h ä_FšÃE@.ÂÑEþ% ä_FšÃMÖ}nvš·ÛÆû¢ûI:³Š‰É±×ÙMž<ùfw›Çùui3öT¯V­½óÎ;n×e˜?>¯ÝÿQ¶w`IðlmÂ\ÄÉû@É»üî4€\ÄÉû‰êE‚h±/övÏŸ?È—søða:tè´ƒ-ŸòæÍ+ù†Üp7õè矦9sæ„¥‹–.]J<*“¿ÐÊ•+éÍ7ߤ!C†H¤3§ >œvíÚåTñù¯–/_NkÖ¬‘'›÷€§ºuëÒ¼yó8ŽáUzë­·D{ ãŒ‘¶ú®Y³&9s†fΜ); ¶jÕJò¶lÙBè°˜˜Ñ<ð€ÙAûöí£©S§ ÿþýûå<-Z´þk×®Ñúõë9´ÝíÔ«W/ºë®»hâĉT¸pazä‘G¨K—.4V´hQjݺµ´Ëã]zþù牷ݤ *Ð| £&ÞžÚ¶mKGŽ¡%K–HÚÃŽÓÜñãÇ©J•*Ô¾}{BpÏH¦ˆ×@çÏŸ§µk×o|KØQyܸqÔ¹sgª\¹²ìÎ\¼xqé sçÎxÑY  ?ü  >cÆ élã]¿~}êÙ³'o¢²…°Ã³A—.] ¢ H±Õ%ÌÒÑ£Ge ðR¥JÑ_|!U`ž²fÍ*i\CºtÞ¡ïRðßù( ×­[G±±±¼:uêдiÓ¨zõêB%sæÌ4aÂ*W®½÷Þ{´mÛ6nþµqyûñ‚äÐq%K–¤Ò¥K˯‘>}ú´þ¾û~ú‰`ŽFÇBKŒ1Bžr€O÷±cÇ@ðw*V¬èÕ)yòä¡J•*Q¾|ù¤#Ñž-[6jذ¡h äÕªUK®é–-[š`±•Ò¤I#{¯–/_žÚ´i÷,œÐ„(Ç6šqqq´iÓ&"LZΜ9‰'Z­MEd:I(W®\"¼”)SR¦L™¼YµjUy¡©Æ“?hР¾í˜lƒ¹8q℘ ´BÇÙɺ*L$@2ò­yöºNÇ[·n¥‚ húôé#& ·Î…ö¤‹/R‘"EÌv¾H;Nò'4h 6ÈéS§NQß¾}©iÓ¦4jÔ(€ @ÂîËèX;8p@ÌFeÛ·o0‚góæëÆá‹Áì€`Ž0‚&ÐJØÝ~ ü bÅŠ‰U»vm™5†ID¾ANŽ9L¿¬yóæ)öœ˜Nƒ'R#Þ‰v4 [r*TH´ | Þ&MšÈ/XtŽßxã )·v Ñ´R»ví Ðd¨Z±b­^½šwïù›†*y“&M¢2eÊPãÆ©[·n4räHÉ_°`ჶ`jáÔÃ?âýÙ©_¿~bjyzqòH8â¼O=Me7€‚yƒ锨q¢1|;v¬9‚ EX]»v•‘4Ap€3fÌèaö ) >ýôS1MÍš5vhhŒaƉ A:u"ðÀiÎ’%KH£"œ& €G#,Ïj&¡¡°¥¸anåB||Á<ÃÜẋ’´2„O94•|íëž>}z+‹WЬûÈÛË=ƹó¿¨k€iL@™O*”,3lÃ\XŸp ·aJì“âkˆnç‹Öãd `ÁƒÎ¶jÜX5ò@¾ò®—èoH YŒÂtW&¢x4’héo$r·DôÛˆ¸¾Ä~#1QGa‰øÜèS‡IÚ„…IÑÚŒP´ö|˜î[(L‚ŒÖfþÂ2ü×FB¢IEND®B`‚mysql++-3.3.0/doc/html/refman/inherit_graph_40.png000644 000765 000024 00000010024 14042362133 022423 0ustar00tangentstaff000000 000000 ‰PNG  IHDR%1ý"±bKGDÿÿÿ ½§“ÉIDATxœíœyT×Àob( Kd ã—ºZô¨ZY*BÄV\À¥ÅÊ¢¢´hV\(¶kÑ.¬±ˆˆGăV=G, ­JàP(‹`_bX„’ÌûcÞ›7&3a‚(y¾û;ùãæËï~w¾ïÞ¹Û„† €@ †>Ò@ È À~ ˜:°Ÿ‚@ ¦ì§ ˆ©ÃÀéêêzüøñH™!„Ïç[YY´ÿ&88x¤M€ü_àáá±cÇìë ã)¥R)—Ë_»IRär¹R©i+þ‹D"iiii+ o8¥¥¥wïÞÅKú™ÜÝÝ_—=A¸yóæH› KLLŒX,i+ o2úÃv¸>@LØOA SöSÄÔý1uÖч—ÌÌLssóÀÀÀW]Q466ž={V$ ãF{{{û—_~yäÈssóáÒ Ñ¡³³óÀ‡f±X/©êرcMMM:Bƒ‘””D]ÉÓ§O¿ýöÛ²²2…B!‰üýý—-[fÀNc›ÃÓ§O;VQQÑÛÛ;mÚ´Ý»w»ººR7ÏgÏžµ°°X³f YÃmdXîu†m<åîî~ãÆ }ù;wJKK‡«”ábÓ¦Meee“'O~yUXÅûûû+**´ZíËë4Šžþ³âÌ™_Ö­{ÍåŽ==='NœèïïyUZ­V£Ñh4š›7oæææjþu uuuóçÏÏÎÎöôô }þü¹O||¼;jUUU3gμuë–¿¿`` T*uwwðàu PPPpýúu ·‘—¿{F1Äñ”V«mkksttÄ$*• Ÿ§··×ÂÂâeŒÓh4ÝÝÝ/|úô©­­-Fà ÑCFL&“¢æ–––øøøéÓ§k€V«}ò䉋‹ &Á*Îãñnß¾Éinn3fŒÎ•°RC@©PÔJ%’Ö²2AX66/©pxQ«ÕhÝûûûÕj5›Í6|‰~Péêê²¶¶&»J¥R)•J£°„Bvî܉&bbb*++SSS± §/ uuu-,,DGÐáááÞÞÞ«W¯^ºt©@ Ð)nÍ!""bæÌ™yyyt:åååµcǬ1*Æ < :mD§,²»÷ŠÊx*!!A …BwçÎÀŒ3d2Y@@À¹sçùùùNNNÇÃÃ;à~ôèÑ¥K—꤫««™L&öØñõõ=yòd}}½••Õ×_Íåríìì-ZÔÕÕ(**rss …èYÕ'Ož0™ÌôôtÇår7oÞŒêQ«ÕNNN.\ ´ßËË«®®nóæÍ)))FpñâE.—;eÊ>ŸŸœœ¬Sñ††‡ÓÓÓ(,,tpp˜7o‡Ã‰ŠŠÒh4d:EÝß__\|ióæS"Ñõ¸¸'ååè?ó˜È¿óÔ××3™Ì£G:99ÙÙÙÅÅÅíÝ»×ÆÆÆÚÚzûöí€àà`B7éàÒ¥K\.×ÑÑqáÂ…!!!Ÿ}öVн{÷&Mš´k×.[[Û¾¾>B! ‰=BôG&////--MJJÂOóÅb±‡‡Çwß}‡×IØð(Š´´´M›6á…UUU·nÝ:xð ÚI¡üôÓOXA1Æ < ø6bà¶fÆ ß|óMgg'•̃€àÉd7nÜ@ RWWgcc£P(T*ÕW_}åéé‰Ê¯^½Š Hoo/‹Å:|ø°B¡8þ< 66A«W¯&%%¡™±tUU@©T¢òåË—§¤¤ÔÕÕÄbqOOOYY™ƒƒÃ?þˆ ȬY³²²²´Zmkk«¥¥eEEz6zÁ‚W¯^ýá‡lmmU*‚ EEEVVV}}}dµ …/^4Ê€ææf‹•™™‰ÚO£ÑêëëñG¯êîîniia±X‚´¶¶ ‚'NUÊ07nÜÉd‚hÕêÆ[· ·o?>aÂQ/™Ï?êìŒÿ¤º»ªíådggÈ€V344T.—£Þ÷óó“Éd×®]Èåòœœ}7ú:qâ„J¥º|ù2ƒÁˆE=þìÙ3´/Û¶m[?z“…IìaDGG{yy!Bè82yzzº¹¹¹V«Õ¹‘‘‘žžž˜dÍå×_]»v-›Í^¶lY^^^D"¡ÓéèÒ‡zŒ‘^@@@XXæ2ý X!»-:wO‰D²dÉ6›½~ýúÛ·o“G.AAAAAAx‰Ñã)Až?~æÌ™öööÝ»w—””èd())áp8qqqÖÖÖëÖ­‰D¨ÜÛÛ{àÓd$&&²ÙìÙ³g{zzÖÔÔhµÚŒŒ ±X,—ËkkkÍÍÍkjjМ‡öööV«Õ¨=‰dÕªUÔ§T ÈÉÉáóù!!!¨ý‰ÄÌÌŒð¬¬,___€³³óš5kòòòuj¢Õ¶UV–ìߟ&冄ÔäçôõѾ²…€a!>>ÞÞÞÞÏÏ1f̘åË—›™™ÕÖÖúùù黉0¨²²²8Ndd¤™™ÙŠ+<<<ô :xðà[o½åììqùòe2!ÅØ#s¡¼³³SýÐ×ׇ_£$l2™,11Q(†……MžjÔ(,çÛo¿ `2™AAA‰déÒ¥yyyÙÙÙÆVͰS¦LÁ~5°eÓØØˆ¯õ¸qã°¨ŽNC¦ Hå¹sSRTèW@£iÕj²ìªîî$ÏÂáÀkôh*ÙÐ5&ƒ˜4i*¤Ñh†ÐM„AÕØØèéé‰é?~¼N)ÖÖÖöööhÚÅÅ¥½½LH2ÇÊÇ/“É”J¥ÎãP'þ ›ƒ··÷ãÇÏœ9³råJ²žH(öööÞ½{wÑ¢E˜°¶¶6''gïÞ½ÆÆØ g ƒ²¨0nܸìß¿?77wË–-999÷îÝ£~9ŠÑýÔßÿ.ÈåòÓ§OüñÇ>>>øe‘&L˜ ¯míÚµb±xÕªU,kñâÅTªCÝ{{{ü†fZZZ@@~AÃÞÞ¿ þûï¿;–P§aËfnØÐ:0jj‹Š” ÝÌL‹ëFu`°XÞ¯fKOâ‹Ï$2ðK*X•õÝDTvvv÷ïßÇ.ojjÂÚJwww__{¥¥¥hGF(¤™ãåóçÏg2™çϟߺu+öÓŸþÙØØˆ®]¢6‡ÔÔÔS§Nmذ!##cãÆ>>>øç.Š›››¥¥å•+WðýÔñãÇ•J%F36Æ < ”EµZ}åÊ•ôôôëׯûúúFDDP¿ö¿æ{AEE…¿¿GG—Ë}ÿý÷±!®™™º>ççç'•J% ‚ 7oÞÄB­´´433S'- FNN 77×À¿Ê455ÙØØ…B@^^Þ_ý¥C½¼¼˜LæÎ;?úè#¦¢uª««óóóQ’““ÑQVqŒ+V<|ø°  ÐÑÑQXXˆÎ†F=yòܸ¸m¬ÉË›&›YXÎ xºÐ ¡¯ï«þÈÉtÔÑwaP-[¶¬¼¼ŸòòrèZ­öôéÓ€ÚÚÚK—.y{{“ cO2Çʹ\îÎ;ccc³²²Ð}˜šššàààwß}?à l‹-ÊÌÌlhhX¸páž={ø|þž={tf[l6;11ñÔ©S¿üòËÀÀ€J¥JOO?{öltt´S_C.K*•¢{{÷î]¼xqSSSff&¾Û¥ŽÑýÔ{ï½gaaáää4gαX|èÐ!ôÙ´~ýúŸþyîܹ‡Z½z5Ç Ç’|ñÅ:i4^ø\î÷ßF!~~~nnn|>_  ÈØØØÖÖÖ*C§øá‡R©tãÆ«CÝ€3f?~<88ØÑÑñóÏ??vì:¯Á*Žåœ={ö‘#G'Nœ(|||Ö½Üá&Ú¨Q¼¹sÿ‘˜¸íÑ£•ééBÿQææ4:®÷þŸ@ßM„Aåéé¹oß>I“&‰ÅâÙ³gëèa³Ù×®]suu1c†‡‡GLL ™0öô!s™<>>>>>><<œÍfs8‘HôÎ;ïá§rdÍ`ggýèÑ£ .´··òÉ':ölݺu×®]k×®=z´••U\\\FF:Ÿö3ÀËÚ²eKggg~~þÇ£¢¢lmm‡n~QÊ~‚ Z­¶ººº²²Rg³ãÙ³ghº­­íÁƒjµšÊò¾B¡ËåTr644<{ö M·¶¶êﶤ¦¦.Y²„Šª¡ÐÛÛÛÐР#ÄW/üí·ßÚÛÛ5¶ß§ƒ²«ëavv¶Xœäâ’Æ‡¥ñ?)Šêêê“'OâW¨áááË—/š, o áÙ9‡3gΊjÅÜÒršX MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::Option Member List

This is the complete list of members for mysqlpp::Option, including all inherited members.

err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadIndex__inherit__graph.png000644 000765 000024 00000011515 14042362133 027276 0ustar00tangentstaff000000 000000 ‰PNG  IHDRo‰"ØfÿsRGB®ÎéIDATxíE†* `ÀfTP h!*b#ZbΊbBLb… 3Zˆ<@ x æˆw A1€EAbû¾gõÖÜÜîå½»™W5·==^¿Ô½³ð¿zNIŠ¢ÆçE‘ë„çÿ%(/–(/ÂÊkPUÞß~ûmI¶ÍŠKqóÍ7—-·Ü²â=ª¬<×¹sçÀI±, üþûïòÃ?”Õ¬ÌçIØ,SDu·A¢¼º«›29K”W¦ˆênƒ:§¼÷ß_.\X§$6uêTùé§ŸêO0SkÊ»à‚ äÃ?,!þýûËÌ™3KÔ×t ;ûì³mÚÂÂB™7o^M³Pæ|5¢¼'Ÿ|R¶ß~{iÙ²¥ :Tžzê)û<î¸ãä—_~‘{ï½WZ·n-]ºt‘üјþꫯä°Ã³r~~¾ôë×ÏÊÏ>û¬l»í¶²õÖ[ËàÁƒeÉ’%Ò±cG™0a‚¬ZµJºví*´ùþûïe¿ýö“õ×__N:é$Y±b…üùçŸÒ½{wÙh£äðןþÙÆÜm·ÝäüóÏ— 7ÜPàiñâÅròÉ'ËÈ‘#å†n9sæÈü!Ë—/—=zHóæÍe‡vwÞyÇúwêÔIz÷î-o¼±­¡Æ"ï6«Bo¾ùf©ÝÿùçפI÷õ×_»wß}×m³Í6NîöÞ{o7f̧ÊrÍš5s/½ô’{â‰'xÏêÔÒ ß]ýõ6¶ É©Ò Ï©2œ*Ê;Ö­³Î:îË/¿tƒ r[mµ•8p Ûyç­ÝUW]å.ºè"§Gr·ÿþû»Ñ£G»;ï¼ÓsÌ1î‹/¾pǼ;á„lü ¸>}úXÛ}öÙÇÚÂO‡ÜßÿmmU‘nüøñ®}ûöîÓO?u7ß|³S¥YxR¥:58×®];7bÄ«Ïôç·ß~³12=/g}AÖ=¯Q£Fæ%={ö”o¾ùÆBeÆ eõÕW—µÖZKÞxã ûžˆÇœqÆÒ¢E ³æM7ÝÔ¬žU´œzê©fé7–Ù³g›‡Òæƒ>0oXo½õäòË/7oTe˜'âM›l²‰ 6Lvß}wyñÅÍëÔàÌÓ'MšdsñçÒK/µ¶gu–¨’Œ·ÕV[MÖ\sÍTêyÞ¶m[¹öÚkeÖ¬Y²`Á©W¯ž¨òmDš ±YW +((°pòðÛ ož8Ú<¡ÐL„PP:áëÄOµtÁ\|ªåÊ·ß~+êÑ6TÓ¦MMôç}yvÙe—¥¦Z{íµ­¼lÙ2ù믿RõÁÂwß}'‰'B±_‹F«Æp˜£&(ëÊccŸÁ+8I²Ï°Aì!‡rˆðŠ=…½ECš=Óp%ï½÷ž•iOý¡‡*†EáôêÕK^ýuAØní4xå•WÊyçg}<ð@ÑÐgåÓO?Ý ïfoíÛ·¯h˜• çá+W®´vìgüéàƒ¶1iGÄ`ïdŸ«5*g|ÍØ¬¬=ŽÇ{¬ÓEºvÚÉiø³±Ø“Ø+T™NÃ¥ÓC€Sa8}ß犊ŠÜ”)Sœzƒµ½ûî»ÝÑGmeö& —Ö¾[·nNýÿŸ™R•1)ÄRy#FÊÒ¥ÿ¿—äåñ¨Qñ ±SÞŒ?éKîR¾µ|ùªØî{±S¤åËWJQÑ7ÁªX”c§¼üüUy+Š)gñâe’Ÿ¿ƒK¬”7yò\ÝëŠ+-òƒé¸qÓô÷ºâYLü‰•òÆ›j¿b7kÖH)o(Mš¬¡Ÿ”é¸KeêÔº÷/Àªb3±zòdÉòÔÞ6þŸ2`Àx8ðD“OãÆ«K‡­«"«ºÖw|•ßmÖ¥5j´š¾ËÜÖXš3çWAaþ¾.ñY]¼Ä*lV—P¢2Nl•§?vH^žþ‰1ÅVyüV²jU,0I™cl•—ZaŒ ±U^6#lµIØŒ°òrõ؆ÍDy¹ ¯1ñ¼Dy–@„Y­ç%_"l•ÉW…+/XmØL”a °çqÅ™bëyìy\q¦Ø*/ÎJók‹­òø!6 ›^Íû䇨$lFLi¹ÄnlÃfò†%Âfœ¼a‰°òr‚õ jpNºèX\yy ]ãÆ;Æb-^'ÀX¨8d#¨еeÿÞœ(_+W.ÑÿŸðY¤×”?“a8ÿØXr!l&Ê‹°–åEXyuî )~³!ßV0“ü_1cF±Ç ážMÐUñBEq>³9MíAógZ•‚xŠl¦ç©åýꫯ¶ñ@¦åm7[äÓ süÊ+¯dkšÔ¸›Ï<óŒAÝsúÙqÇåÁ4Ø}0,Œ"²Ë=÷Üc›¯è¶¢à S  7÷Ÿ|ò‰=¿ï¾û ãò€0âÏ>û,ÅØ!CxaÚ-÷ÜsNè ’Ÿ1†în¹åü¯†=ƒÊW[é`ôyß åË@ñ“ @•º€ÍQW Â=ðÀ®U«V–"@Aà 6Y È=ÿüóNq¦3¦HÇ[0ÝÐÿšûÁxÞ_ÙMž<Ù±†×^{Í!C •5)ˆñe‘:‹Á7ÚTjÏ#–ïµ×^† Î¾BÄtUŒy0úXVM’ ¼o¼5¯\|ñÅ“O¿}÷Ý× Ž$a¢- 0¸è º:Œ>àÜFŸ9n¼ñÆT÷`‹Ç{=áý¤ x衇,鍨¢yŒ¼„‹=—ï½>ý}*ÊaÞ>÷é@B„Hø1wîÜŠ<©˜‡ñ8âCºWʼnâm[ûŠþ©”ò¶Øb ›hß0 °z¢e Aq «“õA>ž~úi¹ð E“TØ‚°…ô SŠw„ùzê2Áèû±@jÇX„!”!dåÏ=Šš>}z*u>ˆõžꃼqï ƒÕèâo •D&¨: ü+¼ç¥8)¥€'Ü~ûí–Þli¬M‘ÐåŽ;îP4¢Ñvp’…²<Šô3a² 9–œb—]v±&é`ô‹S,Óˆ}1ßÒ¥K-‘‘âÕW_•—_~Ùö=͸bÆÀ‰Ë” €92ñ„ógï$"qâeÿǘIP]T)ÏË4¹(†ìŒä?€¡»âŠ+D÷@;cazK¤½Ë%¬üúë¯Âa‚z”AŽò.`ÕäT€È;„ð ‘¾L{žû6´ÃãÁ$â )I88%jZS–Ï©À‡ÜB§všÈåÝÂêž{îiÆ—Ž·]wÝÕYº‡3•ñ«çá@F.¼™Ã(H~½Áºr•`¹,Áö™Êtá–›À·QæÝçŸ^êž¼Àßï±Çv`ñí9èÉЩâŠÁàg‚Ñ÷ýªú©Iœì 'œ oô ¦ðc°>MÅãÔð|U…?«íÀRšUºŒ¬Y…õ´˜jÊþè­:U©…²À¹É˜¦t0úá6•½O—‡ý-¸Çù±Óñ–®û9_wª›ª5lÂaý ˜¨pà@Åj«àäiQuÓt1¨íˆõ³fÍJ׬D]°_‰‡ÕXQ)Ô?ÀµUÀÖSSN{Ê·Þz«A+J»´mÛV Õ]ûôéc €ß@䃞T°¢œ ²3gÎ4Ø|¿>²íG}d¨¶ôʾG6ȶíÚµ“k®¹FHv‚m¯^½¬) `C¼ d0tæ™g°9ºÀ'ƒJ ~g·nÝ䨣Ž2kŒgþüùlnÈÍlòìÙ³ Í—ñ@Öÿ:]?à+IÀ:À¨¦¸wïÞ† Kzƒ¾}û®JLUf±Ržl0˜Ð ¨£D,ühE¡µÜ -Z´0`pfGÀÜOœ8Ñ ‚‡jÐÀÔÎÈ…€)õèížkâÁ×ÄXPÑlÎÁƒ‹"ÓÚ8Ôƒõ‰¹Ú´iC•ѰaĄ̃'PÜ£Ñ_|ÓM7Ù:0¡š¶À³6ÆÓ¢E‹ ÃÌM@aGŽ™š#Ühb<€rÝ}ôQY°`!àßÿýf<ȲS§NáiÊu_)å1r—.]Ì2Ôç;!H®ŒÜOš4Éà«"ÙeÂïÚµ«Y0øË­Zµ2xütÓŒM<£°°0Õ„1¨ÄÛ×ã Ï‚÷Ixô„R‰`]㳂ä®y„½ ï\iÒÈà!x&•Ž:vìhÙxüPº~Ó¦M3CÂQü²‡˱j~‹õë×O7M™u• ›ŒŠ2 BNÒž:„…“áðo” 6ž T?ßäF ÔZ!@VÓ‘G¿X<è Áz¼¿4¸Û‡MÚÁ08Ê'Ï‘Ålî[3¢zX„®¯=2öC±¬Ù£Îc<¤5@¬×–Æ{iÏ*íy¥ S$Î 4àuÜ4ÈàéAy'i†¾îRÅ`ûH:ò©k0¼Ýõ„%¼®•z.„ÏE9L„`öÏ–-[Ú¼ò’K.1cdð O@û£ïÑáqÂ÷pº~x;ÞL "kÆ'L˜`FÒ½{wáí sU†*íyé&cñ\–Íkƒˆëýúõ“Q£F¬>‡ ²’×O¸CAòãpRdÄ»X(Äb 9(©iÓ¦–ì‰z’>a0xã“Ç€q<&4@Ý€”s˜b_|ä‘GDSêDØÏÏÏ·ðÌAø|~“Z0G˜<Ÿ„õp?úņ†p"i€ç‡7}‡l÷¬"dV©(•KÅJ˜áW…ÈÂi‘ƒ€'„M(áãÍ3öÍOd§½`ö+Â+‡Ú#H¿7`„9B\AÞÏSÞO”ÌÜŒá“eÀ†ÄÞ]ѱ3õ#¡“< •!Œã ýN€ÆW«çù D.IÏž=}•}²W²ÂÄF^Ú—òt€ã(¿¢Â ÏK¸óc°7qA‰¯÷)í>S?ög¿G—Ö¿¢Ï²¢<¼–ýÉoìåaŠ œ“h8®ÞÂD8ö^~–K÷YQ¡§2NH‘ÉZÃí*3WúäÅa9»=¹£¸ü’® Å¿ðëH÷Kz‰ÓfÎZqô>> ›ÑSZŠãDy)QD¯(/z:KqüBð^®døÔIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SetClientIpOption.html000644 000765 000024 00000031040 14042362133 026146 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::SetClientIpOption Class Reference
MySQL++  3.3.0
mysqlpp::SetClientIpOption Class Reference

Fake client IP address when connecting to embedded server. More...

#include <options.h>

Inheritance diagram for mysqlpp::SetClientIpOption:
Collaboration diagram for mysqlpp::SetClientIpOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::DataOption< T >
typedef T ArgType
 Alias for template param.
 
- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 
- Protected Member Functions inherited from mysqlpp::DataOption< T >
 DataOption (const T &arg)
 Construct object.
 
- Protected Attributes inherited from mysqlpp::DataOption< T >
arg_
 The argument value.
 

Detailed Description

Fake client IP address when connecting to embedded server.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/null_8h_source.html000644 000765 000024 00000133407 14042362133 022421 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: null.h Source File
MySQL++  3.3.0
null.h
Go to the documentation of this file.
1 
8 /***********************************************************************
9  Copyright (c) 1998 by Kevin Atkinson, (c) 1999-2001 by MySQL AB, and
10  (c) 2004-2008 by Educational Technology Resources, Inc. Others may
11  also hold copyrights on code in this file. See the CREDITS.txt file
12  in the top directory of the distribution for details.
13 
14  This file is part of MySQL++.
15 
16  MySQL++ is free software; you can redistribute it and/or modify it
17  under the terms of the GNU Lesser General Public License as published
18  by the Free Software Foundation; either version 2.1 of the License, or
19  (at your option) any later version.
20 
21  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
22  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
23  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
24  License for more details.
25 
26  You should have received a copy of the GNU Lesser General Public
27  License along with MySQL++; if not, write to the Free Software
28  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
29  USA
30 ***********************************************************************/
31 
32 #ifndef MYSQLPP_NULL_H
33 #define MYSQLPP_NULL_H
34 
35 #include "exceptions.h"
36 
37 #include <iostream>
38 #include <string>
39 
40 namespace mysqlpp {
41 
42 extern const std::string null_str;
43 
44 
49 class MYSQLPP_EXPORT null_type
50 {
51 protected:
52 #if !defined(DOXYGEN_IGNORE)
53 // Doxygen will not generate documentation for this section.
54  template <typename CannotConvertNullToAnyOtherDataType>
55  operator CannotConvertNullToAnyOtherDataType() const
56  {
57  return CannotConvertNullToAnyOtherDataType();
58  }
59 #endif // !defined(DOXYGEN_IGNORE)
60 };
61 
84 const null_type null = null_type();
85 
86 
94 struct NullIsNull
95 {
96 #if !defined(DOXYGEN_IGNORE)
97 // Doxygen will not generate documentation for this section.
98  static null_type null_is() { return null; }
99 
100  static std::ostream& null_ostr(std::ostream& o)
101  {
102  o << "(NULL)";
103  return o;
104  }
105 #endif // !defined(DOXYGEN_IGNORE)
106 };
107 
108 
116 {
117 #if !defined(DOXYGEN_IGNORE)
118 // Doxygen will not generate documentation for this section.
119  static int null_is() { return 0; }
120 
121  static std::ostream& null_ostr(std::ostream& o)
122  {
123  o << 0;
124  return o;
125  }
126 #endif // !defined(DOXYGEN_IGNORE)
127 };
128 
136 {
137 #if !defined(DOXYGEN_IGNORE)
138 // Doxygen will not generate documentation for this section.
139  static const char *null_is() { return ""; }
140 
141  static std::ostream& null_ostr(std::ostream& o)
142  {
143  o << "";
144  return o;
145  }
146 #endif // !defined(DOXYGEN_IGNORE)
147 };
148 
149 
169 template <class Type, class Behavior = NullIsNull>
170 class Null
171 {
172 public:
174  Type data;
175 
179  bool is_null;
180 
183  typedef Type value_type;
184 
189  Null() :
190  data(),
191  is_null(false)
192  {
193  }
194 
202  Null(const Type& x) :
203  data(x),
204  is_null(false)
205  {
206  }
207 
216  Null(const null_type&) :
217  data(),
218  is_null(true)
219  {
220  }
221 
229  operator Type() const
230  {
231  if (is_null) {
232  return Behavior::null_is();
233  }
234  else {
235  return data;
236  }
237  }
238 
242  Null& operator =(const Type& x)
243  {
244  data = x;
245  is_null = false;
246  return *this;
247  }
248 
254  {
255  is_null = true;
256  return *this;
257  }
258 
264  bool operator ==(const Null<Type>& rhs) const
265  {
266  if (is_null && rhs.is_null) {
267  return true;
268  }
269  else if (is_null != rhs.is_null) {
270  return false; // one null, the other not
271  }
272  else {
273  return data == rhs.data;
274  }
275  }
276 
280  bool operator ==(const null_type&) const { return is_null; }
281 
283  bool operator !=(const Null<Type>& rhs) const
284  { return !(*this == rhs); }
285 
287  bool operator !=(const null_type& rhs) const
288  { return !(*this == rhs); }
289 
295  bool operator <(const Null<Type>& rhs) const
296  {
297  if (is_null) {
298  return !rhs.is_null; // less than only if RHS not null
299  }
300  else if (rhs.is_null) {
301  return false; // non-null always greater than null
302  }
303  else {
304  return data < rhs.data; // neither is null, so compare data
305  }
306  }
307 
312  bool operator <(const null_type&) const { return false; }
313 };
314 
315 
316 #if !defined(DOXYGEN_IGNORE)
317 // Doxygen will not generate documentation for this section.
318 
319 // Specialization the Null template for \c void
320 template <> class Null<void>
321 {
322 public:
323  bool is_null;
324  typedef void value_type;
325 
326  Null() :
327  is_null(false)
328  {
329  }
330 
331  Null(const null_type&) :
332  is_null(true)
333  {
334  }
335 
336  Null& operator =(const null_type&)
337  {
338  is_null = true;
339  return *this;
340  }
341 };
342 
343 #endif // !defined(DOXYGEN_IGNORE)
344 
345 
349 template <class Type, class Behavior>
350 inline std::ostream& operator <<(std::ostream& o,
351  const Null<Type, Behavior>& n)
352 {
353  if (n.is_null)
354  return Behavior::null_ostr(o);
355  else
356  return o << n.data;
357 }
358 
359 } // end namespace mysqlpp
360 
361 #endif
Class for holding data from a SQL column with the NULL attribute.
Definition: null.h:171
Type data
The object's value, when it is not SQL null.
Definition: null.h:174
Null & operator=(const Type &x)
Assign a value to the object.
Definition: null.h:242
bool is_null
If set, this object is considered equal to SQL null.
Definition: null.h:179
bool operator!=(const Null< Type > &rhs) const
Do inequality comparison of two nullable values.
Definition: null.h:283
Null(const Type &x)
Initialize the object with a particular value.
Definition: null.h:202
Null()
Default constructor.
Definition: null.h:189
Null(const null_type &)
Construct a Null equal to SQL null.
Definition: null.h:216
Type value_type
Type of the data stored in this object, when it is not equal to SQL null.
Definition: null.h:183
bool operator==(const Null< Type > &rhs) const
Do equality comparison of two nullable values.
Definition: null.h:264
bool operator<(const Null< Type > &rhs) const
Do less-than comparison of two nullable values.
Definition: null.h:295
The type of the global mysqlpp::null object.
Definition: null.h:50
Declares the MySQL++-specific exception classes.
const std::string null_str
"NULL" string constant
Class for objects that define SQL null as a blank C string.
Definition: null.h:136
Class for objects that define SQL null in terms of MySQL++'s null_type.
Definition: null.h:95
Class for objects that define SQL null as 0.
Definition: null.h:116
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1TypeLookupFailed__coll__graph.png000644 000765 000024 00000020165 14042362133 030330 0ustar00tangentstaff000000 000000 ‰PNG  IHDR›”„7[YsRGB®Îé /IDATxí]|”ÅB ¡K'€¡ " $‚ð„Gy@'(ú@º ˆŠ *èÃú°Ð¤KSŠÒ«B& ¡#†PöÍð;¾Ü}—\.w¹¶óû}wûíî·;;;;3û•™,Š4h dÂ2¡Ý…¦€P@3›f„L£€f¶L#µî(ÜL‚?ÿü“âââÌY:í"4h@Ù³gw±¶uµíÛ·Ó¥K—¬ ý$÷ž{î¡¢E‹º…M f»pá•.]Z·Z Ñ‹vìØAW¯^Í0³]¿~êÕ«G‘‘‘~IÉ_ý•.^¼è6³i5ê—ÓœHif ÎyõËQifóËi N¤¼ÊlüñmÞ¼Ù¯(—˜˜HëÖ­ó+œ¼…Ìwß}GÉÉÉÞj>Ýíz„ÙvîÜI={ötè|ïÞ½ôÊ+¯8äû"ã™gž¡mÛ¶‰»bÅ _ àµ>±Ùw°dÉJJJ²ÏöÙyº™ Ò*66– .L-Z´ sçÎQ—.]hæÌ™ôòË/Ó©S§¨I“&T¶lYz÷Ýwm>|8Í™3GΛ7oN‡"ÜjyôÑG©X±bÔºuk:{ö,}úé§Ô¦MÂS´Å‹S³fÍèÆôÞ{ïQñâÅ©zõê’†æÍ›Gwß}7•/_ž&Mš$möÙgÔ½{wªV­•)SFêN™2…¦NJ:tü°6l *UªP¨W¯^„Ýà¬Y³dáÔ®]›J–,IŸþ¹Ôõ—ŸÉ“'S¥J•¨T©R2&óذèAÇŽ;Ê"ßµk]»v Dýúõ“9Á­ ìžk×®•ñc¬ÿþ÷¿eì^'žpôèQuäÈãÔòÿwÞQ=zôP¿ÿþ»êÚµ«bæP¼‚TݺuÕåË—ÕÓO?­:uê¤øž‘ºÿþûÕ?ÿùOi‡‰¤xr%=räHÅÛhõÖ[o©ýë_Š'_1äº+W®(f5qâDÅ·aÔܹs3¥bæV»wïV .T•+WVLDÉûæ›oÔüùóUþüùÕÏ?ÿ¬^{í5U¤Hµÿ~ÅÌ­˜™Ô_ý¥bbb¤-ôÅ *xçñãÇ«üQê­ZµJ}øá‡Š™O±*T¨`Is&ÆÊ·ÌYn¥·lÙ"¸:»˜M•;wnÅ U­_¿^7óØ~ùå<çVýû÷W'Nœ:œ>}Zh‹±ÆÇÇ+ ê©§ž’.˜É/Bõý÷ß«‚ ª &8ëZòY¨ƒ¦Z'µÂ÷Ù\áêråÊј1cDÊð «"[¶l”+W.â £Ù³gS5DB €´1`ôèÑ’\´h‘¬¬Õ«W‹‚tÌ‘#}ðÁÔ²eK‘píÛ·'f&jÔ¨‘Ô…$ŠŠŠ¢5kÖPΜ9‰ (m•(QÂf2‹ÄƒÔ{î¹çDbâ†k¾|ù(K–,Rÿ·ß~#^\4pà@9çE"ý ý‡~˜êÔ©C<™4tèP)÷‡ÐRü?ÿùh˜¸'g/:b@Y³fM2T-´ ´Ò'Ÿ|"4VzüñÇ¥4ˆ·!Ýjô‘G¡iÓ¦QBBýãÿ éÓ§Ûp¼yó¦ä³d‘¼¼yóÚʬ¼úD]B¢®1ñ *ÌS˜Ûc|8ÅXìë¤užYl˜±ŒSù·[Š v'˜£·ß~[6 }ãÆk»Z)O3}ƒÎÇF[h3`ƒ`VÈwÞiœ¦ùÉå ÀÀ·H4³f”[Ù Võ"""D•×Â?T =X;ŽùsÄ‹œx—*æn5lØÐ\Åãi/ËMã›fƒÆ&#ÍŠº}üñÇtæÌ¹ñ‹ûvÞ† c6cëmÂKûî¾›æÎøÓ½Ap§}¦(B²AïãM]Ü× X·î¸ ùÀÑ>G¶_Fv?EHw37¯f¡„©9¨ècQÖ\ÞýXÎÞVO²)˜ 8ïJÒs½Oë®Z5ŸŸ]®çû{ùùžßÃ>ÅÅãvFzá≫´´÷/”x&™Ô»ŸrL1¥émΫõZÞy¾3I“'oä'Ó•+þó:WgíïÆOnºHó:ÿL‰¿%Säá~Íh@9 ™­zõh~Ätƒ™ì*mÝz˜Ÿ,¼ÅO)ÎgÆ<û¼¸ÏhÅsñtý¯›¤ø‰U‘*¹|ŽSZ4³EEåãn=pNJºÆOÎуŽã÷ÖŽ¤5î€-¿‘¤hÅÀôóó3„4 <"ŒJÖKý9´? 8 ™ ¼÷Þ’6:Þ¸q“ŸÛ&Q§NÑŒ[mùÁ’¸œLs;í£S[/Òõ¤¶a…eãÇO÷jÉf#ˆ·°Û éfô)7rä|Þ4Ì7²þÿìî+47ögºük2]¿šòMëI7©PÅ[oÈøó@^²Õ¬YŠßéºý¨Ì 66 Ø© ¬r˜n^»I7o8ÞÚÈW*’²øï&Ô6ÏlØ$@’™!""åÉI'v1gtºý¬ŠT®y±ÏÌÁ%jç1gùm:à™-_¾ü þ–½ÂgÏN11åù]¶QÔ¾}m¿%|z‹ÌNF—¢˜¢)ÜÉIf ËBo¾K/¿¼0 ¾5…dƒ„ÚĆqÆlxN áHNÙ-t/a× ×³“ØÑõ²eËÜá• _7uQiàÀ™ìê4ÓÆY•€Í‡s?0\—9á]®b!åàööœ=@rÂu–· ¤™íܹDVKo°[ÖgÙ1²{‘æ¼51Þl*ávÖ*V¬èv4û¶¬ÎCšÙ@~×¾þ:Ž]°ö±¢×óð‰^xd*Pþ–Ój¯wèÃBÒf3Ó»k×úã3‰ÝÒo7ggJ»ÏïF¦|wúgÈGO!ä™ õر±eMÕÓôuÚ>^Ù0æ85MYY²…„<³a’ñíi³f•iܸÌÛ¥íüâ «ÎHº³¡ÿûèðÔBÐÌö7%GŒhÍ…|§þ´§hë´|¼²wÖYj0Ôu'×N  ÍlOVþü9iĈV|ÜŠÕàÍ9Ü7çwjÈêWRîÒ&äw£ö„kÑb‚¼Ž[ǾHŸgZ²Ù›…×^[Ì¡‹ü'N§Š{ª™ÍnêªV-É«òã¬Ûq·ìªèS7) ™Í‚pÇ·â ¸;iïÞÀxÝÚb~™¥™ÍbZà饗ÚðfaŽE©{YxÕþoC4³9™ýŽëðk9ÄáÈ3î.u÷ô³´î•cþ·›+']}¶f¶T¦›…±c—ñ›®¥R+õ"H´Ÿ'Pþ ’:¦Þ/ÕÌ– +U*Î!¼«s˜ò%©ÔJ½hóÛ'èÞ®E(OÉì©W RÍliLò°a-iåʽ´{÷É4j:_ÿ';”DU»…ÎëKŽT¸£™í6-,S¹sGð÷ ­ièÐ9¶W«-+Úe"FÁÖwOÑ#KÙ>^±«r§ú ‚‹SÞ®ÝûÔ®]-Â+IÜ£€f6é†ô±±ÒÚµÃùS¹ñaëâØ2­š/¾VåÁÁµjÀwªÈÈÒ‡wzh=hÐ ¯±„ÏB5àûF þE¥K—zÕˆÞ ø×|56šÙ‚zzýkpšÙük>‚ŸÙl¾¤*>Øýá‡Ä•'ð`oBtãÆíŒh_¡—,y;<¥'ú±oƒÝcÉwžQQQöE~y’’ ž{öìé± i×®{ú5}ÿý÷¶Ã[Þ Á`î[¶l¡'Nxl^oÈkûÜTæA¥RªT||¼jÒ¤‰jÛ¶­ŠŽŽVo¼ñ†bŠW°8À;sæŒbÉ¡¥ &¨Ñ£G«mÛ¶)öò£ .¬ž}öY);yò¤jÔ¨‘*]º´êÑ£‡8Ó;tèbÏ?R^«V-ñiV¤HÕ¾}{i“¸¨nݺ)vÎ"×-Z´HêΚ5K=ÿüóivE¥xÒ%ßøa7ª~ýúŠýj(–zªeË–âØõ7n,Žù:wî¬Ø5‚ºpá‚øY+Z´¨jÕª•ÂøV¸UªTI±÷"5jÔ(5tèPõí·ßªäädWÊÙ±Œ\ÏîÄü»=øàƒêüùó’ïìN§·À/%œ¨@J4kÖŒ¿¼Ìï• 6mÚȶ|ܸqì#·Á=ÔªU«d1NŸ>xbèÕW_¥îÝ»s¼ø­âËâàÁƒôÎ;ï3¬´)ÿeføé§ŸØßG~Š‹‹pº’@<‰4{ölqÈ &—/^œà¢`Nã|È!Ô«W/ÛÁF̰ԯ_?ñ&IÇ"9,åDqw…~Ïž=ËÝгøãÀ˜áC­ÿþh’¬pÃø¡¢Ÿ{î9:zô(1 `¬Y³†˜ùñÚ r=ÆßëÖ­#¸\øæ›o$ßg?ÞââÔÚåÁ¦V,.9óäÉ#«ž£(v`'«’,,,L®}ýõ×O®‚äÊ—/ŸxS0`€¸õ?~¼â‰zUªTQìäXÒ3fÌfÉÆL«NŸ¾åRtòäÉâ½îDáÁÑHÅcÇŽ§ÿl¬p-jIIIŠ»¨zõê ÎÌ r$2h3vìXI;ûñ¶dóÛ ¤¤3åÎ[¼/bõСCbõ( áM‘Õ­H V{ifð䈈ˆ0.OñÇwÈ9«#þÐ墤<œ ž€“3xâ‰',7‘‘嘿ºÇ?O2Gœ9&Þ„Ð/(º~ýºàX¹reñ OCìŠÔÖ‡7[áß Hkx 2m‹´€–èß—à—jÔ‚”/_žØ6‹•Kà— Œuø4ƒú`ß³¢^PÁP»öí¯^½Zv“¸ƒŽIÀ¡& ®ß¡Úà댥(—°WÊÍid`!˜\ûÅ_KMQyìxY®~,A$ •>ÙNWUX ð"¹iÓ&)ÇnæE‡:Í›7—6±#†*für‡êL¤z3Ÿé“jóðlÍ“.u â P£Y³f•4~ØF‡ÆPYl Ráè˜ß)–RŠíÅv–´Ç¾Çlj”™U®Z†Gm–~²!8wåÛª\¹rÒÔ+€í?ٴاYz8ì"L8«"[6˜íÅ_¯Û—.]²å{2Á»Cs¿üò »Í¿bË·Â …À×X`¶ÊœÀ2‚oÈÚlP©ÅüíJ9Ìõ°Sµ–†¢V°»³Ø…†]g.g b>õhšoS8´g8b6XáïáV`5«z¾ÊóÉûl0˜y!fhÌ,ÁˆƒHÉU€­ƒ[¬jm—ÀÝ;Ú1êàÆÝ—`…›7ñ1ÞúÀ¿7Àow£i –·÷iUq(‡D03*Ø3ò|ÍdÀ`…Û­’Àü ØÝh`’;´±ö™dƒ* Èš5'›×ø6Éí{€<.~S×kèû„Ù2j¯yn4\¼ø@~ Uƒ£®tsãêкD«Ñ Ì÷öíÇ(GŽì|³xK¶Œmx2€FÀ\ª™-S5kÖV~”u©eá§2ÐRh\ª™ÍÍy†$[¸p?æº)^ÆgÌØâfK¡s™f67çzýúƒò€—Ã]¹rÇ—ºîfk¡q™f67çyæÌ-”˜x;nB¶lYÙv»õÞÍ&ƒþ2ÍlnL1$ØŠ{S<¹|9‰¦OßìFk¡s‰f67æú»ïöñûaŽÉ6oŽ—ÐDn4—hfscš!Á Éì!{ö¬Ës—}¶>ÿ›>yÈÔ‡V¾üp~3Øñ~86 p:7:‡è5Ü5³¹AÚ5kСCgäJ8 ,Uª U¨PLÎ|ð*W®°­ÿ%šÙ28Ç}ûN§&Mîßml*è/×6[ÐO±ÿ P3[ço¯Ë,$Eš—kfK“D©WÀ¦ ˜ÞbI}´+ÕÌ–1úé«ÓAÍlé –®š1 hfËýÄ^Ó6›kDÔÌæœÖÒ6›SÒ8hfs ‰Îð4³y‹²º] hfs ‰Îð4³y‹²º] hfs ‰Îð4³e²úq•ëÔÌæ:­,kê[–d±ÌÔÌfIé hfóUu›–ÐÌfIé hfóUu›–ÐÌfIé hfË Uõ­× ¨™ÍuZYÖÔ·>,Éb™©™Í’,:ÓÐÌ–AªBÂ}¼†´) ©”6R­5jĉJµ¢.$Ílš 2¼2]‚²eË:Ägb,C>/[¶"OË1v•¦ )„´4ƒ£w'|ŽÐˆóæÍcÇ)Žapœ\¢³C˜ˆƒ€»fÐjÔL ö*4³y•¼ºq34³™©¡Ó^¥€Ë6›W±p¡ñ«W¯Òþýû©Zµj.ÔN½ Lj'Ž÷éPéî»ï&#L¶C¡ .\hË—Þ…ÚÖU|š 8©€˜ô¼sRêZö´iÓèÀ÷x T9Gl¦;vØÄ¥wÙ™‡$Ó¬Y³¤¾³zæ|„GXóô‚G%Û³Ï>K|‹Dbœ×«WO\¬_¿ž8Œ6!Fú!CèÃ?¤ÈÈHš;w.»vO”2iÒ¤ õë×8Ô43†ˆC\B7vêÔÉ6¶Þ½{¤Úƪ1b„HWMa˜>LmÚ´¡=zЉ'„ÆŽ+ñÓQÖ«W/ékÏž=´{÷nÁíüùó4xð`ü qÓ;«üùóGX&éMG¥·Þz‹÷”ÃoSŸ>}løÙ'ÐÇøñã uŒŒo Ð{ï½'“†þÀSHmŽˆLš›Ú·o/LP¿~}ªS§9víÚEM›6%«ñ¢ï *Ð3Ï<“ ДÎ #sÈrBø@·Ÿ|ò aAqˆo™üÔÂbµlÙ’Þ~ûmÚ·oaâ@˜ï¾û®0ΧŸ~jÃ4>|¸àݰaC¡p L zZìÝ»WŽ{O_}õ•D“†ä„ª\¼x±ôwäÈŽRsÃÖ7ÆæÃâí&Nœ(e8oÖ¬õïß_ƒí‚t$<Êlè÷‘G¡Š+RáÂ…Eº”.]ZBbCB4nÜX¤“X»vm*^¼¸bÆ 2q=ýã?ÊŠŽŠŠ’I²O‡$øk‹-hË–[¡|p-&}‚¶mÛ&x@ A0g`…ê¶jÕJúj×®ôé 5…ɀꞘ`+Àb€„ŽI‰ ‰ œÁ€Ð?þ¸ÐLÀ"C=ùä“VMÚò¬Æ‹Â\¹rÉ¢ÂÂÂÍ€¶jÖ¬I , Ø…XˆV†¤‹‹³ ó…ú>ú¨H_w¤úò8³y¤a~8 qk†F ‘¡  @¨×Ž;ÊjïÖ­›L gÄzG+€d`«ÞÈ3ò1Ñé+üp½Ñ.úB›8†‚¤º“[Æ’'O[Ô'$ÉÙ³gSl‡2îæ´¨W ¼pnà†4Ã8ÐÿÇLS¦La/çÙE ž/àq!¢4 æÒxáÌìxœÙRC¶ì„/¿ü’ E°“ á`£ÕªUKŒu¬¨€¡våÄôƒ•‡ ‚„q°£°awÀNó@Ý ÀÄCm8+üP}°êaW+VL$ðíÒ¥‹l, j˜(L¼q@rlJÀœXh¯aa ’&ÆNïé§ŸU ü1¹†‘o¦‡Õx ‹Øœ°u¡ Ê ƶ¯ !IݵkWÙm®…‡ ûÎêö×¹rîÑ Bj°€ÉæÌ™#ÄÆ9¢gÏž2y×®]£˜˜ÙúÃF€=‡ÁA]Œ6@(ØA˜¬ÚaÆ £A Â0F>ÚS@e`±dÉÂ. v!ì,Œ6s{üë ú@pØ]¨¾Ñ£GKÒÆ>l0ô÷ÐCI>~°áÇ¢cÁ¼³ñ`:tîÜYÊ NÀþüù ¦ú]¶l™HCÃцý?»ù9rP™2edc‚¾Í€~[·nMo¾ù¦ÐëÏ?ÿZA¢uïÞ]61°k±(ìéfnÇYÚe×ô ŒâŒ>1c†ˆå¾}ûÚp‚4Âö÷— ÀÄ@]ÅÇÇËÎÕ|Û;±åË—K;†º…ôúßÿþ';)¨üî€=~`‚Ç{LÆb鉆ûM†Š1Êìÿ1>Ø­X扂Ú‚¤ ª àÎxAψˆé êjØŒ‹¹ØÔØP¡¾ÐÀÕ{€Øh@“Læ;dšdC‡Xý0þ é` aÅÆ ³Yˆd0š¹R‡;à ?´…Åfááá6©k_fœ žìÁj öupzŒf.OÏxÍ7¬Ív¤¹=#muÃÖl#õÒóŸ©’ †&V…Y:¤…,¤T©y ïö« +êÓ\/­¶íË­ðÃjÆ®ŒåOà‰ñzs<>—lî¨`L²=Ù3ˆ¶¯—^bZá—Ñ6Ó‹ƒ«õ=1^WûòT½LÝz iÝN`RÀeÝ€û,xt¢ASÀU Ø?'vÙfsµ]OSÀ´uFïq hfó8IuƒÎ( ™Íet¾Ç)ðƒu2cF{ ­IEND®B`‚mysql++-3.3.0/doc/html/refman/insertpolicy_8h.html000644 000765 000024 00000011646 14042362133 022613 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: insertpolicy.h File Reference
MySQL++  3.3.0
insertpolicy.h File Reference

Declares the InsertPolicy classes. More...

Go to the source code of this file.

Detailed Description

Declares the InsertPolicy classes.

One creates an insert policy object to control how Query::insertfrom() builds queries from collections of SSQLS objects. Policy objects are what cause Query::insertfrom() to have different insertion behavior than Query::insert(iter, iter)

These templates use a class called the AccessController, which is a stand-in for the mysqlpp::Transaction class and defaults to the Transaction class. Since some of the InsertPolicy objects (SizeThresholdInsertPolicy and MaxPacketInsertPolicy) may cause Query::insertfrom() to issue multiple SQL statements to perform the insertion of all the objects in the container, and a failure in one of these statements would leave the table in an indeterminate state, the whole operation is wrapped in a transaction.

However, a transaction may not be desired if the calling code is managing transactions, or transactions are not being used for some other reason. In this case, the template can be instantiated with the NoTransaction class. It provides the complete Transaction class interface, while doing nothing.

Where possible, you should use one of the provided insert policy classes, but you can define your own if you need a behavior that the provided set doesn't include.

This file is not meant to be included in end-user code. It's included in Query's public interface, since it is only used with Query::insertfrom(). You access it as Query::InsertPolicy<T>

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1WriteTimeoutOption.html000644 000765 000024 00000031256 14042362133 026435 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::WriteTimeoutOption Class Reference
MySQL++  3.3.0
mysqlpp::WriteTimeoutOption Class Reference

Set timeout for IPC data reads. More...

#include <options.h>

Inheritance diagram for mysqlpp::WriteTimeoutOption:
Collaboration diagram for mysqlpp::WriteTimeoutOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::DataOption< T >
typedef T ArgType
 Alias for template param.
 
- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 
- Protected Member Functions inherited from mysqlpp::DataOption< T >
 DataOption (const T &arg)
 Construct object.
 
- Protected Attributes inherited from mysqlpp::DataOption< T >
arg_
 The argument value.
 

Detailed Description

Set timeout for IPC data reads.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1WriteTimeoutOption__coll__graph.png000644 000765 000024 00000014223 14042362133 030740 0ustar00tangentstaff000000 000000 ‰PNG  IHDR›‰;JsRGB®ÎéMIDATxí] œÕûfˆd‹H)²Œ]²DøÙŠ­|Zì[H) QÈN(²TöaB’%ÅXgÌ}Ë2öm"[1FÎÿ|Ÿqîïû¿sçÞcîÜeÎóùÌÜ÷}Ïþ=ßó<Ïyï{ß'HH!#4@ 8 Ú0MC6C„4CÀ-Í 6 eô6 ”)S&ow#àÛ?sæ =õÔS^§×ÉvçÎzä‘GèŸþñ*Üx•*UÈÈfÌh ³ÌÇÆfÈæcÈÝ1d äÙõ±±²É ¹uëmܸ1U§&22’&OžL3gΤ}ûö¹\7|×Ôî‹Ë{8£!›øÜ¹sÔ±cÇT»ëæÍ›Ó»ï¾K'Ož¤;vðyïÞ½Öß­[7ŠŽŽ¦ëׯӚ5kœæõÛD|]åM¹yó¦»Q§]8v온S§ŽhÚ´©(X° 9r¤ O>ù¤˜8q¢¸xñ¢(S¦ŒZë™0a‚2dˆ“'jÖ¬)òæÍ+zöìÉirW&jÕª% *$Úµk'ºté"Ž=*BBB8ýùçŸ]»v?þ¸hÑ¢×9}útѦMQ¶lY.·|ùrλ`ÁñÉ'Ÿðqß¾}Å¢E‹Ä´iÓDÅŠŽ{÷ø:þ]½zUäÊ•KlݺU8ªköìÙŒADLL å6mÚ$J•*Åeåb’Èâûï¿:tè§¼•!f̘¬N¥råÊ"**Êiž´Hô ÍOëÖ­£zõêÑàÁƒ©ÿþÔ¤Iš2e 3†$1(cÆŒôÛo¿ñ¢Ÿ7oÉÉ ¡C‡RÛ¶miÛ¶m$'ŽþüóO7nIÂr}§OŸ¦S§N%Q»wï&I Ú¹s'ÅÅÅѪU«èÂ… ´zõj’d¢±cÇ’$—ÉŸ??•(Q‚K–,I8‡&“ ‚‚‚lõæÌ™“*T¨ÀæÔQ]­ZµâþÊE·<Èe¡ ¡q×®]Ëcذaýý÷ß´téRš:u*õë×FmkÇçÒ‚ÑÎÚpE³8p@dÏžWöÙ³gY Èûs¬u‚ƒƒ¹ú#FˆN: h.9¹BTôêÕKHˆñãÇ‹'Np¾Ò¥K‹íÛ·óqxx¸hРAÍ&I+Ο?ÏéÐ8íÛ·Æ cmÇå?hEi"Õi’OäWZÔš …ú’« šZ’J`¬Å‹—.]bíªêøúë¯E÷îÝ…\`B. ¾ ™%K•%ÙO£ÙÜ\†ÐFÐ^’\”-[6z衇’ÔвeKZ¹r%­X±‚7nÌßJHsKЬ$áÚLš+.›9sæ$u¨“G}”qÃ>D]Ã1®Cë9’¢E‹²&²¦!¯$‘M ºRnÂBÃ*‘f™î޽˧?xH†ñ±?üó 3ê ÅŠ#é›öÚk¯q‘—_~™ð·lÙ26mØåIMÆäCevíë_¿~=ý÷ßL^©‘8& .µ"eÍš•¤_Æwå÷ïßÏéØqJ­K­[·&écÒÂ… ù:Ès^¾|yÂ|ˆ£ºp› %ÈíÚ5:tèï–þùg‹J÷ÇO¿'›Õ7ɤY¦úõëó\HŸ¤SOU«Våg³fÍ»¾Aƒ‘4§ì‡©ISõ€PІ… ¦ØØX’¦˜³@Ó<ûì³T·n]0`ûdðáÈéðã/^Ìþ Ü8p;ùòå£Ü¹s“tÎIn*TSLRûºàc¿¼rå çCKÿí)R„._¾Ì>«­’ûªßö×}òüA¹q°]†Ÿ%I%þúë/qãÆ ÛugR3ŠÃ‡óNÙšÏY]Òù·fåãÛ·o‹ãÇ'ÙÝþ¿L)\ðŸÍë_Ä§Ö Ä}-ìÚðgìTí%C† $o›vžŽ~¡òë¬é=ö˜õÔé1ê€öJNÕeõåT9ø•в AXÞúÔ‡Ô`”'O‘\øHÿþû/áÖ„©½¸uŽOäà锕ԬËÕ¾ÀW”÷#m>£«åR;_Àh6øGî v´V¢¡<k/©A2UgjÖ¥êô—O¿ß ø ЦŸòV·AÀSº0-þ²« ¦,YJÑíÛ‡å­;Þ†ÏåöŸ~úi—óz*£×5LÜFùÛ½û¤4½¡ò>Ú¿é3°õö#á °×Éæ©Uä©z-Š–›` Ûê©&¶^C67§vñâíòÛ…{ò¶É)yÖünÂø ÙÜ@+*ê˜$Zâ"|/¹|ùN7J›¬†lnp <|›ÜÌÄs |†…EºQÚd5ds‘wïޓ϶í–;Ðÿݽ$¿|¿êb &›!›‹ˆˆ8Äkv!‚hÉ’íÖKæØ †lNÀ±&…‡GÉ'JM¨ºŸ@óçSªðHéÓ-%„dú­[ ´~ýA‡*ÆÅݤ#G.ºP‹Éâõoüa bbb)>þ.åÈ‘…»‹gÞ‚ƒñƒ ùôì=ùk¨}T¬˜ûßÍúÃØS³^ê#5ãɺ"#1áÐF×®sä_^·‘¯Fbòmc$RÂßh¶”ºŸ^­ZQ[ÎL™2Põê!ôØc‰¿°%˜§˜å蓘š²i  Í_žRўNJ²i@‹»^~ÀY£×Þ/bÈæý9H7=0dÓ˜jcF5@“E Ù4p3fT4C6=ÐL)=ŒfÓÃÍ”Ò@ÀM4SDC6=ÜL)  Ù4@3Eô0dÓÀÍÜúÐM1dÓÀÍÜúÐÍM4SJ£Ùôp3¥40dÓ O|˜§>ÜÎÍ}ÌlïøÐ(𮋲¥ëéOÛÁ²iàmn}h€&‹²iàfn}h€fȦš)¥‡€Ñl¸3ªš,bȦ›1£ ²éfJé!೿ˆG(_xé°#X³f-'ßÓ¶_ÞoK \æ(·®ýñÇnÒ[í;k×gÍ(Èö /Øn úÒ žoÞÜ%ßÓ–às}kß¾=ÇIu6áÞLóY²yÓ¶g0dó ®¦V²9Å\ò ~O¶Í›7s,NÏÀ“r­ˆ;?kÖ,šý^³)ÀebZºt)M:•5ÌèÑ£©U«V,þ“¡øœ‰4ƒBú‚I²H'($ÑÄ7’¤I +¤©Lr 'Ò¤ ´©+ò»Q!72ºÅ=^.`5›uÁ[}'[Ï%¼ƒÌ;7]ºt‰"""lE± €fJIœ=¢ü@kØ 8ø,é‚lÎ&&­yóæì¤cÇ—!CgÙ]Nƒi6’tO6ÀÛj™ý³ä´—~þ_2]ìFýšcæI]7ç1((˜²d)%w´‡åm;n–ö|vó¤®ƸÃçÝ×þvï>)¿‘¥… ·ø\߀n­øª3êæÌ,Z͕ÿ¾r³xºÎnÈææô/^¼]~ O~iŠ®\ùÇÍÒé;»!›óuLMp |W¹|ùN7J›¬†lnp <|›ü _bœx|†…™øðnÀg~ï*XϽjÕn¹MÔl({I>|yÕÕ*Ò}>£Ù\¤@DÄ!ÞX³ $Ÿ=Ûn½dŽ `ÈækRxx”|2Ñ„ªëññ 4¾1¥ ”> ÙRBH¦ßº•@ë×äûjöÙãânÒ‘#í/›s˜ïF€b)&&Vþ&à.åÈ‘…“ð@$^›E$Ÿª½'Ÿ?Û'ÛÎg_ÌœÛ!à³_WÙõÓë§‘‘ǘpèH×®säX^·‘¯Fbò±mc$Rš$£ÙRBè~zµjÿ{Ö,S¦ òG(!ò7 ‰¿yp±ŠtŸÍ,ÇtO´ÀMkóšS ÐdC6 ÜpcOXqC6÷ð2¹C6 ðŒÕM1dÓÀ͘Q Ð Ùô@3¥ô0šM7SJC6 ÐL= Ùôp3¥40dÓÍÑCÀM7sëC4YÄM7sëC4C6=ÐL)=ŒfÓÃÍ”Ò@ÀM4¼Òïß©1î-bȦ zÿˆFÑt]Ä-]OÚÞMosëC4YÄM7sëC4C6=ÐL)=ŒfÓÀ͘Q ÐdC6 ÜŒÕÍM4SJyÏÈ&2à~2dþRÀ kÖr"((£Á)œ>ûì3·päñˆn‚ƒí۷פ®)fHD\B a«ŸÍІ9ö(†l…×TnEÀÍŠ†9ö(I|6¶äb嫨yŽ¢Ù¹XgCäâ;wrŒx¼Ùq<áC ("*«tœEô="'#F|¹råø<¹ª.ûtÄÀ’¡$9B³ªÓ>'ÏÃcDtAD ,_¾¼ŒF“øN¹”ÚEDiħPܵãsšmÁ‚„8*ˆ®7tèP:tèWÍqØwìØÁçv;bĈ$QøQ!ãǧƒò±ý? “Š¿ &ÐÒ¥Kù†¸ó rZÈÊ•+¹m´Cݺu“oÈ\Ï£±ìÙ99AÇŒÃÉ`’&—75®»­ÙÖ­[G[¶l!D ¨Mš4á#®y¿~ýl!ª…“Ò½{wž¸ùóçÊæÌ™“ó!Ü""/\¸ ,È“ŽhÂJäž={€ Ü6¢ ¿øâ‹ BjoÚ´‰5ˆ HË1Þ?úè#Ç0Dê+u”.]š@6,—?rבŽzÚ²eKϽzõjŽfEß~û-iúô邱å_}õUêÒ¥ wšQ‘4hÀç~ø!ÇxŸ6% (´)&dU“­ƒÕ®üøtð¹P$ÆCë ]”uE@Ún·víÚT¸paB zà„ÉÏ›7/“±I1å›o¾I `íÍëH£ýEßÔSÃöæ„Âx!¨8*TˆªV­Ê‹ãCº7ò¡},<1n,|´~Á„ß ¿Ð]Ñ"[þüù¹ 8GŽIÚÄDÁLÁwÁˆLš4‰W*V 4Èõ¯Ä‘C 0”ÀLC“AÔu\ƒ©JN,ê]´hUªT‰³`áááÜonÛÆÛ¾.€Š )ÇV;&Âq†ê…_©êÅÍtL:p«‘7ÝYKÚ·«`,ŒSù£* &‹¢0ñKœ[ýRíã:´4úQ¤D¿Õ5NpñŸÙRªƒ†Ý ´ÚÆÙ7‚YV«\¹2¯j +> ½,¼™þ V°Š×Ž]&Êa‚P˜Eh?ûc f&‚Oœ+­Æ“ù‡IÖƒy‡©‡FEßqýA “pÍš5 ‡E±yóf®wáqŽ].´!Lþ‘#GX ªöÑÔ£ÜäÀuÁfrâÄ 6HV˜#ˆýX`™ $€/Æ “®,x€noœµ¥Ô9ˆ³€ ‚`báë`§‡AÀGÀŠƒ‰iÛ¶-%$$ØV ò«z°Ê¡Ê¯]»Æ>"®cEM™2…‰ŸÎ2Ÿð'P§õmÃ7‚é‡ÀlC#[ɦÚã ÷ÿØð§fK?³^½zÔN:Ô0Sp–áZÅQykºõyñŒ@ú·Þz‹Ç‡úaZ´hÁ~Õ¼yó¸½/¾ø‚w¸o¿ý6/`,bÆŠ5ú„MÀ¨Q£sV S§Nl:A.h>ìV± A4l2gÎÌ.ϬY³l]„ÿ²cÀ ÷îÝÛ–¦ÔÔ¹«ŸI^M­ƒÝʃ~7Š :;cÆ †Âjƒ¦¨J@$¨ç^½z1¡ÔD†……1ØÐ&ȯT8Ì& ~„Õ «úRóZ@™ÃäåË—ºñ° 0>«éÂà+¡-åsášµ?8‡@ë‚HÐnäo M]Ù°s7nA‘ù¡Ù07Ö9Áu˜S,f…;®¹#÷¿ýé§ŸlÅRU³¡Vì±-†“i´ d{±Ù•t¬,O ýPDSÇÖsû~êžc“àH°(íÅQûj®ò"£|H¡ìIe%³ªŸžÀ7Õ5L"4€3§Û:(uŒ‰U¤V£º b&4aJUušÏDàºÀ|&GBOà”&š *Ý]¢a°ö@Ø“Lbˆ¦pý Ø_×K§^NìFS¯{¦¦€B@îîl"UŸyú4…§OåäŒ\ÄÀþIÝ$>[@­"3ŸCÀ˜QŸ›’Àí![àέÏÌÍç¦$p;ô˜{ðˆâ»¹ºIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1RefCountedPointer.html000644 000765 000024 00000077427 14042362133 026214 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::RefCountedPointer< T, Destroyer > Class Template Reference
MySQL++  3.3.0
mysqlpp::RefCountedPointer< T, Destroyer > Class Template Reference

Creates an object that acts as a reference-counted pointer to another object. More...

#include <refcounted.h>

Inheritance diagram for mysqlpp::RefCountedPointer< T, Destroyer >:

Public Types

typedef RefCountedPointer< T > ThisType
 alias for this object's type
 

Public Member Functions

 RefCountedPointer ()
 Default constructor. More...
 
 RefCountedPointer (T *c)
 Standard constructor. More...
 
 RefCountedPointer (const ThisType &other)
 Copy constructor.
 
 ~RefCountedPointer ()
 Destructor. More...
 
ThisTypeassign (T *c)
 Sets (or resets) the pointer to the counted object. More...
 
ThisTypeassign (const ThisType &other)
 Copy an existing refcounted pointer. More...
 
ThisTypeoperator= (T *c)
 Set (or reset) the pointer to the counted object. More...
 
ThisTypeoperator= (const ThisType &rhs)
 Copy an existing refcounted pointer. More...
 
T * operator-> () const
 Access the object through the smart pointer.
 
T & operator* () const
 Dereference the smart pointer.
 
 operator void * ()
 Returns the internal raw pointer converted to void*. More...
 
 operator const void * () const
 Returns the internal raw pointer converted to const void*. More...
 
T * raw ()
 Return the raw pointer in T* context.
 
const T * raw () const
 Return the raw pointer when used in const T* context.
 
void swap (ThisType &other)
 Exchange our managed memory with another pointer.
 

Detailed Description

template<class T, class Destroyer = RefCountedPointerDestroyer<T>>
class mysqlpp::RefCountedPointer< T, Destroyer >

Creates an object that acts as a reference-counted pointer to another object.

Resulting type acts like a pointer in all respects, except that it manages the memory it points to by observing how many users there are for the object.

This attempts to be as automatic as reference counting in a programming language with memory management. Like all automatic memory management schemes, it has penalties: it turns the single indirection of an unmanaged pointer into a double indirection, and has additional management overhead in the assignment operators due to the reference counter. This is an acceptable tradeoff when wrapping objects that are expensive to copy, and which need to be "owned" by disparate parties: you can allocate the object just once, then pass around the reference counted pointer, knowing that the last user will "turn out the lights".

Implementation detail: You may notice that this class manages two pointers, one to the data we're managing, and one to the reference count. You might wonder why we don't wrap these up into a structure and keep just a pointer to an instance of it to simplify the memory management. It would indeed do that, but then every access to the data we manage would be a triple indirection instead of just double. It's a tradeoff, and we've chosen to take a minor complexity hit to avoid the performance hit.

Constructor & Destructor Documentation

◆ RefCountedPointer() [1/2]

template<class T , class Destroyer = RefCountedPointerDestroyer<T>>
mysqlpp::RefCountedPointer< T, Destroyer >::RefCountedPointer ( )
inline

Default constructor.

An object constructed this way is useless until you vivify it with operator =() or assign().

◆ RefCountedPointer() [2/2]

template<class T , class Destroyer = RefCountedPointerDestroyer<T>>
mysqlpp::RefCountedPointer< T, Destroyer >::RefCountedPointer ( T *  c)
inlineexplicit

Standard constructor.

Parameters
cA pointer to the object to be managed. If you pass 0, it's like calling the default ctor instead, only more work: the object's useless until you vivify it with operator =() or assign().

◆ ~RefCountedPointer()

template<class T , class Destroyer = RefCountedPointerDestroyer<T>>
mysqlpp::RefCountedPointer< T, Destroyer >::~RefCountedPointer ( )
inline

Destructor.

This only destroys the managed memory if the reference count drops to 0.

Member Function Documentation

◆ assign() [1/2]

template<class T , class Destroyer = RefCountedPointerDestroyer<T>>
ThisType& mysqlpp::RefCountedPointer< T, Destroyer >::assign ( const ThisType other)
inline

Copy an existing refcounted pointer.

If we are managing a pointer, this decrements the refcount for it and destroys the managed object if the refcount falls to 0. Then we increment the other object's reference count and copy that refcount and the managed pointer into this object.

This is a no-op if you pass a reference to this same object.

◆ assign() [2/2]

template<class T , class Destroyer = RefCountedPointerDestroyer<T>>
ThisType& mysqlpp::RefCountedPointer< T, Destroyer >::assign ( T *  c)
inline

Sets (or resets) the pointer to the counted object.

If we are managing a pointer, this decrements the refcount for it and destroys the managed object if the refcount falls to 0.

This is a no-op if you pass the same pointer we're already managing.

Referenced by mysqlpp::RefCountedPointer< T, Destroyer >::operator=().

◆ operator const void *()

template<class T , class Destroyer = RefCountedPointerDestroyer<T>>
mysqlpp::RefCountedPointer< T, Destroyer >::operator const void * ( ) const
inline

Returns the internal raw pointer converted to const void*.

See also
comments for operator void*()

◆ operator void *()

template<class T , class Destroyer = RefCountedPointerDestroyer<T>>
mysqlpp::RefCountedPointer< T, Destroyer >::operator void * ( )
inline

Returns the internal raw pointer converted to void*.

This isn't intended to be used directly; if you need the pointer, call raw() instead. It's used internally by the compiler to implement operators bool, ==, and !=

WARNING: This makes it possible to say

RefCountedPointer<Foo> bar(new Foo);
delete bar;

This will almost kinda sorta do the right thing: the Foo object held by the refcounted pointer will be destroyed as you wanted, but then when the refcounted pointer goes out of scope, the memory is deleted a second time, which will probably crash your program. This is easy to accidentally do when converting a good ol' unmanaged pointer to a refcounted pointer and forgetting to remove the delete calls needed previously.

◆ operator=() [1/2]

template<class T , class Destroyer = RefCountedPointerDestroyer<T>>
ThisType& mysqlpp::RefCountedPointer< T, Destroyer >::operator= ( const ThisType rhs)
inline

Copy an existing refcounted pointer.

This is essentially the same thing as assign(const ThisType&). The choice between the two is just a matter of syntactic preference.

References mysqlpp::RefCountedPointer< T, Destroyer >::assign().

◆ operator=() [2/2]

template<class T , class Destroyer = RefCountedPointerDestroyer<T>>
ThisType& mysqlpp::RefCountedPointer< T, Destroyer >::operator= ( T *  c)
inline

Set (or reset) the pointer to the counted object.

This is essentially the same thing as assign(T*). The choice between the two is just a matter of syntactic preference.

References mysqlpp::RefCountedPointer< T, Destroyer >::assign().


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ConnectTimeoutOption.html000644 000765 000024 00000031474 14042362133 026736 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::ConnectTimeoutOption Class Reference
MySQL++  3.3.0
mysqlpp::ConnectTimeoutOption Class Reference

Change Connection::connect() default timeout. More...

#include <options.h>

Inheritance diagram for mysqlpp::ConnectTimeoutOption:
Collaboration diagram for mysqlpp::ConnectTimeoutOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::DataOption< T >
typedef T ArgType
 Alias for template param.
 
- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 
- Protected Member Functions inherited from mysqlpp::DataOption< T >
 DataOption (const T &arg)
 Construct object.
 
- Protected Attributes inherited from mysqlpp::DataOption< T >
arg_
 The argument value.
 

Detailed Description

Change Connection::connect() default timeout.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SecureAuthOption-members.html000644 000765 000024 00000015337 14042362133 027476 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::SecureAuthOption Member List

This is the complete list of members for mysqlpp::SecureAuthOption, including all inherited members.

arg_mysqlpp::DataOption< T >protected
ArgType typedefmysqlpp::DataOption< T >
DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/namespacemembers.html000644 000765 000024 00000006515 14042362133 022776 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Namespace Members
MySQL++  3.3.0
Here is a list of all documented namespace members with links to the namespaces they belong to:
mysql++-3.3.0/doc/html/refman/functions_func_t.html000644 000765 000024 00000013566 14042362133 023041 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
MySQL++  3.3.0
mysql++-3.3.0/doc/html/refman/refcounted_8h_source.html000644 000765 000024 00000104312 14042362133 023576 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: refcounted.h Source File
MySQL++  3.3.0
refcounted.h
Go to the documentation of this file.
1 
4 /***********************************************************************
5  Copyright © 2007-2011, 2018 by Educational Technology Resources, Inc.
6  and © 2007 by Jonathan Wakely. Others may also hold copyrights on
7  code in this file. See the CREDITS.txt file in the top directory
8  of the distribution for details.
9 
10  This file is part of MySQL++.
11 
12  MySQL++ is free software; you can redistribute it and/or modify it
13  under the terms of the GNU Lesser General Public License as published
14  by the Free Software Foundation; either version 2.1 of the License, or
15  (at your option) any later version.
16 
17  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
18  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
20  License for more details.
21 
22  You should have received a copy of the GNU Lesser General Public
23  License along with MySQL++; if not, write to the Free Software
24  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
25  USA
26 ***********************************************************************/
27 
28 #if !defined(MYSQLPP_REFCOUNTED_H)
29 #define MYSQLPP_REFCOUNTED_H
30 
31 #include "common.h"
32 
33 #include <memory>
34 
35 #include <stddef.h>
36 
37 namespace mysqlpp {
38 
46 template <class T>
48 {
50  void operator()(T* doomed) const { delete doomed; }
51 };
52 
53 
80 
81 template <class T, class Destroyer = RefCountedPointerDestroyer<T> >
83 {
84 public:
86 
92  counted_(0),
93  refs_(0)
94  {
95  }
96 
102  explicit RefCountedPointer(T* c) :
103  counted_(c),
104  refs_(0)
105  {
106  UNIQUE_PTR(T) exception_guard(counted_);
107  if (counted_) {
108  refs_ = new size_t(1);
109  }
110  exception_guard.release(); // previous new didn't throw
111  }
112 
114  RefCountedPointer(const ThisType& other) :
115  counted_(other.counted_),
116  refs_(other.counted_ ? other.refs_ : 0)
117  {
118  if (counted_) {
119  ++(*refs_);
120  }
121  }
122 
128  {
129  if (refs_ && (--(*refs_) == 0)) {
130  Destroyer()(counted_);
131  delete refs_;
132  }
133  }
134 
143  {
144  // The create-temporary-and-swap idiom lets us keep memory
145  // allocation in the ctor and deallocation in the dtor so
146  // we don't leak in the face of an exception.
147  ThisType(c).swap(*this);
148  return *this;
149  }
150 
159  ThisType& assign(const ThisType& other)
160  {
161  // The create-temporary-and-swap idiom lets us keep memory
162  // allocation in the ctor and deallocation in the dtor so
163  // we don't leak in the face of an exception.
164  ThisType(other).swap(*this);
165  return *this;
166  }
167 
173  {
174  return assign(c);
175  }
176 
183  {
184  return assign(rhs);
185  }
186 
188  T* operator ->() const
189  {
190  return counted_;
191  }
192 
194  T& operator *() const
195  {
196  return *counted_;
197  }
198 
218  operator void*()
219  {
220  return counted_;
221  }
222 
226  operator const void*() const
227  {
228  return counted_;
229  }
230 
232  T* raw()
233  {
234  return counted_;
235  }
236 
238  const T* raw() const
239  {
240  return counted_;
241  }
242 
247  void swap(ThisType& other)
248  {
249  std::swap(counted_, other.counted_);
250  std::swap(refs_, other.refs_);
251  }
252 
253 private:
255  T* counted_;
256 
262  size_t* refs_;
263 };
264 
265 
266 } // end namespace mysqlpp
267 
268 #endif // !defined(MYSQLPP_REFCOUNTED_H)
269 
Creates an object that acts as a reference-counted pointer to another object.
Definition: refcounted.h:83
RefCountedPointer()
Default constructor.
Definition: refcounted.h:91
T * raw()
Return the raw pointer in T* context.
Definition: refcounted.h:232
ThisType & operator=(T *c)
Set (or reset) the pointer to the counted object.
Definition: refcounted.h:172
RefCountedPointer(T *c)
Standard constructor.
Definition: refcounted.h:102
~RefCountedPointer()
Destructor.
Definition: refcounted.h:127
RefCountedPointer< T > ThisType
alias for this object's type
Definition: refcounted.h:85
ThisType & assign(const ThisType &other)
Copy an existing refcounted pointer.
Definition: refcounted.h:159
T & operator*() const
Dereference the smart pointer.
Definition: refcounted.h:194
ThisType & assign(T *c)
Sets (or resets) the pointer to the counted object.
Definition: refcounted.h:142
void swap(ThisType &other)
Exchange our managed memory with another pointer.
Definition: refcounted.h:247
const T * raw() const
Return the raw pointer when used in const T* context.
Definition: refcounted.h:238
RefCountedPointer(const ThisType &other)
Copy constructor.
Definition: refcounted.h:114
T * operator->() const
Access the object through the smart pointer.
Definition: refcounted.h:188
This file includes top-level definitions for use both internal to the library, and outside it....
Functor to call delete on the pointer you pass to it.
Definition: refcounted.h:48
void operator()(T *doomed) const
Functor implementation.
Definition: refcounted.h:50
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1FieldNames__inherit__graph.png000644 000765 000024 00000007740 14042362133 027634 0ustar00tangentstaff000000 000000 ‰PNG  IHDRƒRwÿgìsRGB®ÎéšIDATxípUÇ‘’DÄÞÁ†»¢bc°÷^°½÷^°;ŽØÐ±7,h‰]Áѱ¢@€˜XÐÁBQĨ "‚îw~‡ïîÛ¼¼ä¥Y^|ñEËçoâĉrñÅË?þå59Á³ O“'Ov:0šñx÷Ýw»“N:ÉMŸ>Ýüñî‰'žpo½õ–ëÕ«—ûçŸÜYgåŽ9æWZZêvÚi'·Ï>ûX;Ê÷é§ŸZúúë¯wÓ¦Ms=zôpÇ·<¨¥ï¼óNw衇:µ*N™eméý§Âç¾úê+÷Úk¯9]p÷÷ß»¼¼<§Â↠æ¶Új+÷å—_º[n¹Åí¼óÎÖ&ãÓ­²{ýõ×íüßÿuO>ù¤Ûb‹-\÷îÝ «åó7gÎ×¹sg§‹êFŒá6ÜpCGù]vÙÅ»… º6ÚÈ 0Àéâ¸UVYÅÝ~ûíVßÏgêÔ©î†nÈÚÖ÷ßÏó wá…:µ6OU&;ÂG]X§ æÎ8ã kÞ¨pº>øÀ©À»Z>ðæüóÏwË-·œ;ðÀÝ{ï½]«/ÁúÀà “؉kˆ0°+¬°‚»æškÜØ±c­:Ìcá¡õ×_ß©D[zРA‘0XFÚßu×]çTÃ!,¶j¯1_Í©{àÜ•W^éºvíêÔ;ÕΨvII‰S÷à–Zj)«sÞyç9µ,ÑõUW]ÕUTT˜°ÞsÏ=–¯VÇP5ׄ—úqb±¨½öÚË©EpzÏÅ.ï¾ûîÆ`mùå—·~¹pâ‰'FÂo‡t¶¶8Úª®®¶ª½†§žzÊòà³Z^÷Ûo¿9µ²–Ç_¿~ýjƒ¿0{öl÷ðûÍ6ÛÌ©us¯¾úª¿”ñ˜Ií&>ø`}œnËÜž{îéÖ^{m§ZäˆO b†çŸÞÒñ?|².ºÅñ|µNN…ÈbŠN8Á.]qů›<øàƒæ³qC¸âÈÏÓ‹ï†êk 7·ÁX9þânBƒlË'ÃM@¸Lbøoã.Q•ÌÚ"Žð®Í*eùËä&Ðàˆ" &Püæ›oÌ7úÊ•••nÞ¼yvŠïWÓí/5éH¥X£.“¥mO¤ñ•žè3~îóë:ÆÛòeðçºcò§vÔH?:g Ï ¡lm5¤ Æx×]wY0 ?þxHÜAŒÒXÊ$ íhÄ›Ì&§*…>+[t‡fʸP\E~~~³FƶU­“ÅQÿohx§–Íj=T^lxä‘GDw¢–×âÅÕQ†ÅÅÙ·«qJŽ[¬Ý\£wµ›9m…5,ƒFÂö¦ûÔ¤ÐìÙ•RZZ!}útMÊ”£yvêÔ)J“¨@Ö¸’“AƒFèý’WôéjõÇ™oè$„áUùÁƒGê¾öR\<6!k^÷43L:SïØÍÊÊj)**©›K ¹’ha(.g÷UXëY³æÊøñӲ왧™ha(*¥ïSTgªªÈK/ÉÌ¥„ä&V&L¨ÐsæDËŒ0 šì¸!±Â€¨ªZô˜ÛKDuõB))™èOwL¬0 2V…a‘‹ð«>wî|}¥,¹d"…¡´tŠÆ 5߉D ô៾Q®ïEÔ´^XÚú1‘ÂðÆe¶‹èÒ¥@ß Ê—Î;é‘t¾@R)åå-ÿ¦rK^"ï@ΛW%£G/Š **fÉ€ÃdàÀ~ÆÿÂÂŽÒ«W÷–X‹–î3™°óó;賈ÆüÉ“§KAAê¼¥W¤%ûO¤›hI†·æ¾/ ¼Éœ——zÓº5/Öâ[â…×üØE’ðŸ )$Þ27„!â@p+‚›H±"¤ï&‚¤8„!ŋħ‚0$^R ÂâEâS‰†°µLé@â…!l-ƒ0¤8Ro"N„D¸éDÌÀ/PxPe¯¿7 Âd ÆÄÇ ak™’†Ä CØZaHq ¤"$Þ27ÉBØZ7„!ÅJq@5£^â³ùZºÍþòòò]aaÏ6;?ÖŽO77€†ÕøÚ[JDR)ÀDôà#Üþ{àãë ‡Ð '>€l—R(CBº!Ó ÂÐ.%¤LÖ˜¡5ð°0€=ø¢zs €PâÒ `h€ŠÔÕˆ0|A7 àwÜQ@Ãá«ï 5­0 jN}¨5QáVøOX 4,'ì]”<>±ï¸’ŠqQg ÆQ>@ìƒ@ÝyøFO V’3ìKßæâ<æÄ2ãRXXh ÇJÁ-„oPsDfˆ"ÕØ\aΠ„€ATTûtþ)§œbyÀü)Șá2)X™l³Í6ÑüÌC€äSû@øtÐA¢HzV<)P3¸$E­1ˆ"ÊvÚiòØc‰"çØXÀsc2NÀòè@Eå3Œ*3ØA_VÁ@ôí/ ã8VœÃ‡ÇÜð¶|,›¢þ ÐB`<¹„•QÔ9ƒ-Oj‡v°÷*€_Ú~ûíEÁÚ †ˆzŠÎ#Šô'ŠŠcóC ø%,p´™ ʉe€AeeeòÅâÀŒÞ½{Ø‹ V$ØMlsÀy" î%X•·Ýv›-ž>C›9ä¹öÚkõs:åfzýDZÐ𣸎À(›áA²ýE³© æ¤Ä ‚8zÏ8ÀÅò?ߋ΋ÍBúñ裚 ðc`±XTÀ[q/ñcØ‚³hÌ9Nàb¡½1p9!¬Hõ(Ç»ï¾+̾éÃÚ¾Æ\ûŒ.0¨P °¹ü\ãý55a ó‚‚Ó PßøZ9ÖM V,Iý¬^‰¡Ç’†)h/@¨L\aøD! %ŽÅÆw+æLÇš;†Çi·Ýv3\lL"i4JABE¿ Ê-Ý3ïá;tèoÂÒê´‚|~<Ï.døÃTç Äyb Œ@“HyX1O¸6LÁþA 65¾–í!AœÏÃÇÞzë­Ç`ªÙúù¶¬PÚcÁµû ˜¸4bâêíºë®ÖãDxÑötÂB2‡‹.ºÈ. Î$÷G€J`ZÑxÙXO0;Ù¶2°>‰cP*eÊeýô>™H?Ï&ˆ†ñ‹XOøfL^ÜD²ÐL´¨¨ÈÌ?f°+ ÂÆt²pÀ¤”Á‡b¦3!ÉZÁFüayè£.l(pAÓõ.-[ÓX>b)‚ ·VŸPÆÛƒGÄC9† HƒX‹L¯ëŸMxw¿––^rŸþì˜aâÄ„Ò †ÕG0 ÂrE,–C2µé-R¦k™ò|œÁµxÀš©lz^:ÀºnŽ¥×mÌù³ øëÆ.‚‰{ÀZ—¾Hh1‚–´6†mµl«´ 'ÝB`þÓr™òÈÔ8,±ÝDã†J·²º ‚núïr€{¬cžU²4.·(ö³–ÍŸIˆšÏÃ6ÓB†6³”ÍŸÈÿùä:°¹ÉýIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SetCharsetDirOption__inherit__graph.png000644 000765 000024 00000014333 14042362133 031516 0ustar00tangentstaff000000 000000 ‰PNG  IHDRŸ‰2”êfsRGB®Îé•IDATxí]tTE¾€¡I.Hï]AMi " E)Ò»tAà A¥( ‚ôGŠ ‚J‡DéTj€‚ùïwùg}»Ù$»ûb²»™{Îfß›öf¾ùæÞ;ï½ìM¦XȈA Hž×4—4†|†‰†€!_¢Ao.ü˜¿@IéÓ§÷—îm?._¾LO>ù¤_ŒÏoÈwëÖ-Ê‘#ýñÇ~L0v¢X±btåÊ¿!Ÿ1»ÁȲ“!_€LT0vÓ/g5@ÆdÈg™¨»wïÒ–-[,)öwîÜI_|ñ}ýõ×tàÀ¼}ûv¼÷Åã‹'PAC> Ð/^¤Ž;ZR|?ü矨I“&Ô«W/:{ö,…‡‡Ëù€bm´{÷î´k×.ºyó&­_¿>Ö²Ÿ‰Çkþ <ñŠw»±våäÉ“ªV­ZªqãÆ*oÞ¼jÔ¨QªvíÚ*gΜjâĉêÛo¿U-Z´p´ÑªU+õÝwß©™3gªâÅ‹KÙ³gKþ¦M›TÑ¢EUÙ²e¥ÎôéÓÕ‰'T¡B…$ÿ™gžQ]»vUÙ²eSM›6U¬‰Ê´mÛV•)SFåË—O­ZµJÊ.Z´H :Tެ–,Y¢¦Nª*T¨ >|(éø¡2eʤvìØ¡ºuë¦:wî,}zî¹çÔ±cÇÔ¬Y³TÚ´iUž—.]-òàÁ©Ó¥KåŽ||ÏQòA¨öíÛ ù  µ@û±IÕ§Nß(ß»wo§4œ@ƒ¡=Ú ræÌ•?~9†&ß°aƒÂBYÐWh_-Ÿþ¹êÑ£‡¯]»v’Œ1a¡Å%þF¾€óùØÜk%b²k4 qr}š5kFl~iõêÕ„ãdÉ’Ñš5kˆ5±Æ$6qôûï¿SöìÙ¥ TN•*•Súä‰'žC&¸ø`8Ñi8F:ž¸“‚ “È) e™T„›½ÝVlíœ?žØT;Úa3NQQQrŽñC€OŽéOÀ‘/.pÙGÎ:ޱ‰`?àèoß¾X“P–,Y;[¹yóf·Ínܸ‘X; yYcI”ØÒã?Nì×ÂfRò±£e­LmÚ´!öQiñâÅ’rŒ1‚Ê•+G•*U’4´Y¹r¥ôQNø6+ZPþÆĦ^úŒ…õÒK/éì€þòAÃA²fÍJlfe‚A²\¹r›-‚Ædçœ5jDO?ý´±zõêÄ> L®žEݲ9¤Ó§OSß¾}¥ˆ†:l6iذa¢YyƒAÇ—|Þxûlr=Þˆv¯Ð²ìŸQXXñ&E_Jˆ‰¶ÆŒC}úô‘tô‘Í)±Ï*çèÏûï¿/×+P ±?KìB8Úкßú< ¾ãò*ߟÏÓ¾Ô­[W­X±Â©8v²ØˆX…Ÿ'«ëׯ+ìPáóYø“çÎs$cÃÁ$“ êz"ð+=ªþúë/§âðù°q`í«Xû:å¡O®ò÷ß«S§N9íž]ËÄuîo>Ÿß¼X_+•w†b6lèÔ$|0WÑ>“kº>‡_É·=ô©ãÕSAÐn1 ïÒ£ei_К¿Z8˜$V‹? o³À²ûV ü-¾ïåÕð4$ᣣž»·?îܹ#ù¼Ëv”óõ~ÚqÝ0ùÚž'õ°Ña‹àØðxRç¿,tšÏ[â\l\ÅÝ;oñA:}Œ3êÃ$û4Ž$;ƒÛ¶¡ŒkÑwßí ˜>[C¾ÄZjñxÝE‹~æMJ2š?g<¶š´šòÍH°GE=ä§¿ò“ÅïÜ£;wîR÷ý¦¯†|>LÅÆ‡ùyj ©™2e Z·î7Z1U ù|àÀüùatëÖßR32òÍ™³Ý‡VLC>/9p÷î}~áˆS­½{§ë×Ý€vÊ0'±"`È+<Ñ3×­;à0¹:7$$9¿ÂµOŸšo0äó(]lîÜtûö=}*ߨp ݈wòyWDÄþG ³nkœ8ñ?—¾á6Ï$ºGÀÏ=.nSÃÂNñ‹žQ”!Cù¤K—Êq’‚¶m;æ¶žIt€ß¼Õâ¾{þ—Šûz¸¿iÛö+š1£¿™òè¶KEý¯Ã~Ü#¿y¶ëÇ9u-4ôßwóð„£zõ¢„{}F¼GÀ˜]ï135â C>@âßF ýŒø†€!Ÿo¸I-¼®ý?Í$Ùª†|Ivêà†|6æ&÷ÿÿ±i£•¤[ÕÏÆÜÃäúÇ¿_ÙD"V5äKDð“ú¥ ù’:qü†|‰~R¿´!_Rg@"Žß/ÁOê—6ä³Ás«Åx\ÕÏ~æV‹ ð ùìgjÛCÀh>{ø™Ú60ä³­™Çk¾hÈç;vòhÍ<^ó@C>ß±35m"`Èg@s«Åx\ÕÏ~æV‹ ð ùìgjÛCÀh>ø³k<®jÈg?cvm€gÈg}ºâ8·jêÔ© é ÇùUY³fÂ;vL±ÆT ,"×®]RÞ»w¯*\¸°Z³fvˆ*ŽvQ‘ʇ ¢8þ¯ UK—.U¬a£V‘‘‘ªyóæjáÂ…jíÚµª|ùòÒÏ#F¨ªU«J›ÈGÙ“'O*¾¿©@ÐØ$Étf·Q£FtèÐ!bÍÄñ26SÙ²eåÞ ¢ZâFl¦L™ÄÒÕ¯_ŸX3Òµ Ÿ CL,bm(f‘CÑSƒ &åsåÊ%Å94}4S}õêUþÍæø—JSJ™>}úHù:“Œf”àÎÖø¾HG>k-âÅBÇw¸ Ý»w§ Ð믿”&:¨È®sçÎ~àÀm :”¦L™¢ùåøfmæ8¶ ú%„5—Ü<R§Ní(ÂæQŽ ,H6lp¤ã×±tèz®þþýûÄÖ©¬>9wîœS$HúáÇ’íÚ]'X¾ƒŠ|)R¤ ì8?ùäÇ.“ŽöZ ™¼‘¢E‹ÒÆ9ÜÕ-:pà=zTªC[-_¾\Ò€ü±cÇ ùÑêaA°y¦’%KJšëõñH ”cÿ“Øß¤œ9sJÙ`ÿt?>xð`êß¿?ñ&AÌ\–,Yˆý-™GÞˆ mݺµ˜àØ&&ŸW_}•xÓB !44´b‹-èðáÃT¡B!ËåË—©Y³f4zôhiÚkÀ€Äþ˜zÜúñ؇#Þp8.ݤIZ±b…hkìʱ[w'èKÐIlN¬¿åy²áÐ}fsæØ­ê4ž|ÅJŸzô}úôi5wî\Ù•r$tÅÁ’ÕÝ»wuqÌQ6ŽD>À†ƒÍ­B?¬‚4ì†]å¼í›µ ³á𣥙'OÒ>—î4–ö£tZ\ß¹sçsŠ H¡B…ds`õq “jÝDè6aîÑ«ðn˜R¥JeM’c”ó¶oÑ °„ 3»ñ?È·Vèĉb>aÆ=¾uCÚ÷ó¤|R,cÈçá¬Cëy#lž½)ž$Ëþ» L’Ã7ƒNLJóñ#.ªV­Zbâå¸v²d)(Mš’|Kçߌr¤'æA:uóò^_Ûþó²Gvì8Á·V¾à·g:òëë¥|l%iW3f×Çù_´èg }5þN[0Õ ù|à@TÔC~jñ«„¾BTD7â=†|ÞcÆÍóSŽGÐîtݺß|hÅT1äóóç‡ñ³ÜG/ŸFFÞ£9s¶ûЊ©bÈç%î޽ϯjqªµwïïtýú§4s7†|qcäTbݺ“«3BB’ÓêÕûô©ùöC>ÒÅæÎÝA·oßÓ§ò Òx‡€!ŸxEDÜ¡ðð³nkœ8ñÿ7Ú ·y&Ñ=†|îqq›vŠßÉ‹¢ ÒÈ']ºTŽã´mÛ1·õL¢{Ì÷¸Ä˜Šûzøi4HÛ¶_ÑŒøÿ2Ýv©Q£hŒõLFtêÙnôî'|JhhÇEñãÕ«åzD>G†9ðcv=‚Éú/0ä³*þ­Úψoòù†›ÔBíÿÙh&ÉV5äK²SŸø7ä³1æ×èm€ÇU ùlàg~Þx†|öÀ3µí!`4Ÿ=üLmòÙÏTµ‡€!Ÿ=üLmòÙÏTµ‡€!Ÿ üÌ­àqUC>ø™[-6À3䳞©m£ùìágjÛ@ÀÏxx«%0Ô$^U5äó .çÂx«#¾!`Èçn¦V< `ÈgDs«Åx\ÕÏ~æV‹ ð ùìgjÛCÀh>ø³k<®jÈg?cvm€gÈgûÌ‘a|>æ ¡0äKhÄÍõò9 0 €ßýJâÑ"Z¤§öâ Q¾wíÚ%!骡æ=Ôݽ{7q¨S*_¾¼„œG]œß¾}›mèç!µjÕŠ^yå9r¤Lf¶lÙD»!Š8&P êànäèÒ¥ ÿ ýui¿^½z²hÐ&¢ŽW®\Y"ž£4/ÈÉǤC+qõ×+V¬˜c ]›6mø—P·ÑƒÚÚmüøñË7_¾|²8úõëG ÕEæÌ™CS¦L‘~Ìš5K¬ƃ9¬Y³¦#ÊyöìÙeœ˜S,ÂQ£FÉ.R¤oDLÇ®5eÊ”tðàA %\Ë[ñZóq4lÚ±cõêÕK‚c0”€|«V­"t+ 3qöìY # ¸nݺ´|ùrŽcq‹fÏžMÆ £×^{M4GàvôÿÚµk2i |õÕW’‡IGPdœÃ¬@ AJ”(!$´7lØPbå¶lÙRÂÞÃ\Ö¨QC& Õ»wo!ü—_~Ié[&¥@Â×)UÊ9¦ZõêÕe̸´)ê·mÛ–,X€$š-Ú ³qãÆ¢ í¬úå—_&|öÙg¥ú†¹Êœ9³6}úô„9Ƶ Y„ñÃ?¤õë×Ëõ¬×òäØkò¡Qø¥K—& ßú†_uñâE$Å„Aû@€¨ðW@V“‹6ªV­*>‰k‡18”G0wXáfÍš ÈÐd‚{“ÚOÔÇ Úµ]»v2ƒè²^ü hKøRXÙ˜0¬`‹~¢„CsÇ$zì ³îL64)îiA#â©T©’høˆ®8À'‹«/îú_,mÚ´NYè?ªŽ°îj6ÑŒ‚ÈæÀZòùçŸç:—q£/V?ø¾ñÆRþ­·Þ‹ƒúÐŽP$˜{Ì/4¯·âùråÊ%×ÁeÈÁéšPÅXy0/ø€8 ŤI“+ê+“ó¦Å:`f ûMÑéHƒ³“@#AÛ¤¸>zôhq&æŸÚµk;6º-ŠãVùøãÅM@ò!p`ñÁ¢‚;€qé|”Ñdp‡ƒ'}A®Òº Æ\ ?XLÀ„²Ê¾}ûd1#Mcˆc+¶8ׂ1ažô& çІëÆEc ëyúíùâj„ƒ—)S&™„-[¶p|²ubâ@h½Š+ŠYÒ>‹ÞÍYÛXÐ$0qX‘0éõ°*±r!0qÐŽÖc,˜vhdˆ†4h"˜x˜{hQôÑß0?ð©`Ž!èÎcŠi‹kÀ½>|¸Œ f“ew8xÒkè÷´iÓ¤íâÅ‹[³Ç ƒvo"##%}Û¸q£h`$œ9sF43òæ ¢Çc˜w˜`Œ‚ÍÎãK¼ÞpÄvatbݼyS&çð=àWa3Ò´hÑBV V.L"|ëJÒí`ÕÁ±†_é˜PøV 4éàÁƒq ùž8q¢h¤áD±Z·n-ÚDîß¿¿, ä½Åf¦©lÙ²âCA³Âe˜9s¦˜qô6Ê`’`Ò° \ý‚¶Á¸± Aa–±™‚¥Çã´W_PõêÕòFƒ©1b„ÃÇÕýÑ×Á967ÐôX`и[§NÄÔ‚lh㎠^Ž9»>úHðÐm6mÚTüÂyóæ cÆŒÑYNßÖk;eÄròŸ<Û…¯„$o=Y˜x¬>˜#˜f- ˆ‡Û i|3L:4ÊkrÂD‡g5Ûº=wß ̳ky¤CÂÑ‚•¾ê>‚H $ÊhI—u÷_ÚcÓ&K— Oú¢Ûðæí¯…‡>A@>hϱcÇÊøõ!šÄÔe‘ì)j8ÿu÷l7^5.sƒU‰ÝuP0wùóçwNŽkwùXe®Dr­g=‡cõqtž»tW‚áZVÿM×é[ßüE¾»¾Ç„ƒ'}‰éš±¥»kW—ÇÓ‹L§Á½q'Þ`ா»´x×|0¡Ð&ÚÉvwQwiX¡ÐnzÅéÛ.®`¸Ó&îÚ3i1#׿ÖÝ‚Œ¹–½œÑ|PÙÞÃr•tzèî´‰Î3ßž!€g5ã·Ô²Ûß.šÖ‚v¨Â[ióV®‡oå2! V^bë›ÌA»ÂÌÀücvýrZ’F§ ù’Æ<ûå( ùürZ’F§þŠkÑ=giIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ConnectTimeoutOption__inherit__graph.png000644 000765 000024 00000014246 14042362133 031755 0ustar00tangentstaff000000 000000 ‰PNG  IHDR©‰WysRGB®Îé`IDATxí]pUÅ÷>"MŠt½J• R¤ ˆCTŠ ½‹tD.  #@Pb¤K¤ „:„JBO ¸ÿýŽÿ}¾÷òR^ÞæÇ+»3/÷Þ-gw¿ýöœ³÷ÞÜÍ`ˆ@:hœ/'n›nšF€Ð$ÕDpz4I~ˆt39;3f¤W¯^9{3]º}—/_¦’%K:mœž¤ (~2dpZ]¹a7¦+W®85Iµ¹we†yHÛ5I=d ]¹›š¤®Z¶lIÁÁÁtóæM3f añòäÉ“$…ôïߟ:DÑÑÑ´}ûö$ó¹m‹:sÀbuŸlëÕ«gˆ4 .lôéÓÇèׯŸ‘?~£{÷îÆ;wŒ*UªB ±Œ¹sç“&M2Ä  40òåËg <˜Ó"""Œ† %J”0zôèÁ²ÂÃÃÒ¥KszÍš5¾}û²ìöíÛ³Ì%K–ݺu3ªV­Êå6lØÀyW¯^mŒ7ÎâüÌ™3†¯¯¯!ˆÏñò ©1uêTÖ¬eË–Ù²e3Š-j>|ØhÛ¶-Û·oŸQ©R%#wî܆˜DF||¼±jÕ*£gÏžÚ ,dIßÿ}cçÎI¦;C‚[hÒ‹/ÌòüA+V¬`­ô÷ßó54T¦L™è¯¿þbE³råJƒH“'O&Ab !1àüÝwßQ±bÅh×®]tãÆ º~ýº…r:qâ RбcÇèîÝ»´eË“€¶nÝJkÖ¬¡Y³f‘ &—)T¨•/_Þâå*T¨@ ´Û¨Q#:uê”MY;wæöŠÉE‚¬töìY.;bÄÖð;vìà>Àmxøð!­[·Ž/^ÌzÆŒõ¸ê…[àÃ$Ö®]›Š)BB“RÅŠ©\¹rsݱcGÚ¸q#›W¡©Y³fTªT)š={6*¶lÙ²„:t(ß3LÊÄ#‹IŠºÛµkÇuuèÐ'È]¿~}êÚµ+’Mç ôüùsŽ3ÿI™3gæ(kYQQQœ–3gNÓ½bL«W¯ÒðáÙÀèoPP—oÓ¦ 〺1ÑÜ!¸ Iýüüx<¼¼¼(Ož<còlÞ¼™‰ŠA!¦M›FÐF»wïf‡AÇ  ³Êe³dÉb!C^äÊ•‹O_¼xÁ>".dÎÙ ˜'Oždiž-(µnjd ·„5º”‡˜Âà#¬‡0Õ|îê܆¤É D™2eHøžLLhUhSüÖ¯_OMš4áUó|À¤EºtpnàF¼|ù’I/|BNÉ@”ÐÐPÊž=;Õ¨Qƒ@¤Ó§Osº<¯[·.“qÊ”)¦G½k×®%<–>p’² |NNÇŸjÕªÑãÇéܹsìælÚ´‰ûbÊàf'nORù8ä„Ú¢E B±ð!±Ø!v `fá2Lœ8‘*W®Ì~¦k)D„öÅsnê„ 8]žCˈ ·aÈ!ì6(P IYð¡á??xð€ó =_ý5× rÿþ}jÞ¼9§™ÿ‘í6sÉsgX½%×jŠ«ûäÊË4aÞ A*yÉGá ×®]³ˆf“Wßþù§!4«Eš0¡†0ç†ð9MñB+‚ŒÆ½{÷Œ˜˜S|J'µ0.]ºd‘-9YbQd‘¿5„vWXÝ;ý &*fþ AƒxQ„…‘y·©Ì/ùo]aõ•¼­m(ýVóô7ß|Óü2Ås,ð’ ¶d™ûª²üfg~{I¶ÓÑcÌHG…¤gy˜,˜YGLVÏyóæ%0µ>`ll,aU-ƒÐ–,G^ãˆ<¸=ähP)+µmÁƒ¸%8:kðM*ý={ÁÛÛÛ‚ ( ¢[ä”2UÊ’2Ýáèö 'w$OïƒÓ›{Wz3.‰O%qÃ>\¸(‰oÚ;+ÙœýÍ|§×¤¸' ·Ù~áá‘ÂEhJ;\¢½Sg_|9=IUûØjW``¨xO #­\yÐV²ŽK#š¤iÎV±U«‚ÅãÉ—téÒ]ñ€à‘­,:. h’¦4[EÂÂ"(&æ??4((ÔV6—4IÓš­"¿ý"^.yÉIqqñôË/Á¶²é¸4  IšЬ‹`t„M½L‹ŠŠ¦ðð(y©  Iêx²hpðeñf”å,Ä+âEèÃ2‹>:€€&©àÉ¢X0ÅÆ¾—|ŒO ¸:8Ž€&©ƒ&$¼ï–†‰›÷‰_ˆ/ª¸ÇÛñÂäPqMR‡à#:zôšxñøåÈáÃ?_ß,â˜•Ï #ƒøo€ãÖ ‹;ýcQW¢Ë‚¨ÿ¾9?tè¯âÅç)þÜt?ÊšÕÛºá´môˆ· Òý:uüLUøøx‹·ýýÄÚ÷~©I€>I„€6÷‰ ÑΆ€&©âñòÊàÐ ÚŠ›ãâ4I#Vù¸¹¯ƒ:4IÕa©%¥š¤ŠÕæ^1 Bœ&©bLµ¹W ¨&©z@µDõhMªS-Q1š¤ŠÕâÔ# IªS-Q1š¤ŠÕâÔ# IªS} J1 Bœ&©bLõ-(Å€j’ªTKT€Ö¤ê1Õ# IªP|Ê‘ÏT*nŽ[ˆÓ$U<ŒòûJŠÅz´8MR~×è¼&©âqÒ· *Äi’*ÆTß‚R ¨&©z@µDõhMªSmî*Äi’*ÆT›{Å€j’ªTKT€K~ÁÌÚÚ(L=<öKÌ–­²ØØá¢ø6Tœý…Ó¹Dpp0Õ©S'kQ/Þ%¿`‚íµ±U¸Ü`V=,î'{˜†„„¸$IµOê~|t»i’ºÝº_‡4IÝoLÝ®GnMÒýû÷ó^ð¯kÔ.\¸@K—.¥… Òž={ìúüÎÎ;ÅF–_~]ýxÝõº5Iû÷ï/>r{4IŒ‘~èС$ÓI˜>}:µlÙ’°¢¾yó&3†wB~òäI’b—,YB‹-âôM›6‰»ÿm¹“d!HpÉÕ½½ã²zõjÞï{Øß¹s‡¾ùæÞVü矟ßLGŽ¡½{÷Ò¸qãxÛòQ£FQïÞ½Y“ 8¶mÛF­[·&hFh¸3gÎÐçŸN×®]£öíÛÓœ9shýúõ´uëVñùñ4`ÀúöÛo9Á‚MÍmÒ¤ -X°€oŸ¡¾ãÇStt4ÍŸ?ŸJ—.McÇŽem[¼xq #lg~ëÖ-êÞ½;>|˜jÖ¬Ihs\\¡]Y³f¥p$¹M•¹Ñ‰[kR9N>¤uëÖÑâÅ‹Y£Í˜1ƒ:wî̃>wî\Ê•+A«Î›7fΜI£G¦sçÎÑöíÛ™ iBB“2AâV­Z±L- €=zDË—/§^½z‰H^R… Èœ (רQ#:uêOzÍš54kÖ,žeË–eâwëÖš5kÆù@R´ [¡CãçΛ~øá&)Ê·k×NlÍÄĽ}û6ªpËà$ÅȵiÓ†j×®M]»v¥7n°Êœ93ïi¿oß>Â^ó—.]bÍU¸pa:xð kÆ>}ú0áFŽÉˆ¥]»vQöìÙ™8~~~¬ÍóÞ·o_òöö¶iª### u"€`åÊ•£:\¸‰vÈ<È·eËžX ñ¤I“˜”ˆ‡¶¡ëÕ«GeÊ”á>!ÞƒÇÔ××—Ç/S¦L‰0 -ˆñøñcþuéÒ…ªV­J/^d2£`Þ¼yÙÀÓ.h¸gÏžqÞZµjQÛ¶mY¶| VªT):yò$kLNøÿ?X<•/_ž¯ ½eÀ r­ÞòGÛP7«W¯X£ã\öç¶ú„xw CÒ¤ „ƒ|úô) 4ˆ† Æ~'ˆM‡ ÈH^^^¬Áß´iSö!ïß¿OW®\±_·n]&ã”)S¸,×®]KØW¾Gœ„…ÜÐÐPÖ 5jÔàx´Gü¯TóæÍÙßEdÀð´à 'ëA•ÿ(‡…%x¼ Ó‰G­XQ7lØPlÎàOEŠ¡~ýú±o @–ûꫯ¨S§N,‹ø¥7n4¥ƒÌ 5ò@cBëA+ÂtÿDˆˆˆ ˜ð{÷î±ß ÙÕ«WgwõˀǙhbhüd[A¶ÍVšËÇ ð\.ˆÅ‡!¥¤ÝbQe’ƒs±b7] mgà'´ª!*†ðÿLiˆ;þ¼!I¦8['Â\Â×µHÖ˜0a‚!jÄÄÄX¤ nˆEšE.ÂÃù‰R1xð`C,ÂR™Û¹²y¤&5×,æ¾!Îͯ¡õ7nLð1q ·²dÀâš0¥mœTxóÍÄÛè`ád+  ž<ž¤É <|Ïëׯ“ИT²dIòññI.{ªÓ†žê¼:£Xj’G cÆŒì«&ŸË¾Ô¤´¥}R<'·Ç¯î=g¨]·§.©Iq?&mE‹öøøT«ðpq{Éùž»ã=W .©IóåËÇ·tÄÔ©Žáá‘â VSñ˜t‡SµKâäŠÿ:‚Iå’$uVm*žþd¤•+:k]²]𤠇mÕª`ñØò¥xà®xà‘BÉž-J“TÑø‡…EPLÌ~hPP¨"ÉZŒ&©"üö[ˆxÿô%K‹‹‹§_~qÍEŠ"8”ŠÑ$U'&AAGØÔKqQQÑ%/õÑ4IO ¾,^t~%/ù(¿‹—š[Äé‹´! Iš6Ü,JaÁkùOsññ @ÇÐ$uÄ„Wâÿ¤ÂÄÍ{#‘¤ØØ8ñ?O7ÅëûÐ$µ¯D¹½&ÞÒA9røðÏ×7‹8fåsÃÈ Þ3=ž¨ŒŽ°—ü`™}]LÿÜ!!—Qÿ}£~èÐ_iüøÅ„æàŠýýýÄ¿ x§#ܸ—|vïlãQ§ŽŸ©I>>Þâ­~?*V,ñ»¢¦LúÄ.´¹· .ùu  Iªuý9rÅ€ qš¤Š1ÕŸ#W ¨&©z@µDõhMªSmî*Äi’*ÆT›{Å€j’ªTKT€Ö¤ê1Õ# IªP-N=š¤ê1Õ# IªP-N=š¤Š1Õ· *Äi’*ÆTß‚R ¨&©z@µDõhMªS-Q1š¤ŠÅ÷ œíUŠ»ø?§IªrùÝ%Åb=Zœ&©G¿kt^“Tñ8é[PŠâ4IcªoA)T“T= Z¢z´&UŒ©6÷Šâ4IcªÍ½b@5IÕª%¦⾞)ìÞ½4Ò?0È–­²áå•Ecè†ü±‰“8±ø‚‰ )ï±ùÙgŸ¥ÃtÐ"5)#F«V­²È¨}R 8ô…3" Iꌣ¢Ûd€&©ú°ðI¡bÛmÞ)ÙÖÆiiŸØò›wX¾sçï'ïçç—1ÊÊ;vLlaùUhÏ;7¡ÏªúmOƒÑžãÇ“ØFë¯Zµ*åÍ›7U"Ä禶§ª@29&ÅvÝGMCWûÉÓÀiË–-âû¡Ïhݺu4dÈ>Oœ;}cúöí+¾«ÿ’·›úˆ?!!ÆŒC¡¡¡”={vêÔ©ÅÅÅ1sæÌ[ÆüÂÏ™3'ç+S¦ ŠïÊÿ&¾åYŒ°r¿~ýLÀlÞ¼™°Ò OŸ>er½ûÁÆßûöí#Ìø±cÇŠÔf¥‘#GÒ°aèpá¦ó+VP5¨ÿþ&¹{öì¡Ë—/³Œyóæ®óäÉCØÞûí·ß¦ÁƒSùòåiçÎT¼xqšÜ6mO ß*Uªp›—,Y">þŠºtéB~ø!aBN›6·=/[¶,×õüùsZ¼x1M:•ë=z4}ñÅ4eʺ}û¶øÐo~Þ*½zõêÜv pÇX¾÷Þ{Œ‡5Þæå1Æo½õ–Øy%R‹§¯¯¯¬*UG»5iLLŒi¶UªT‰AøòË/©~ýú´aÃ@;vìàÊ¡3eÊÄf›¯.[¶ŒZ´hA¿ÿþ»Ø˜+†–/_.¾Š<žÚµkÇ& Ê2€'Nd’ýôÓOœÒ¢“¸~ôè…„ü»yBÅŠ™¬È$Ï‘·råÊR$6lHh÷‘#Gèܹsôý÷ßS“&MƒŽpãÆ ž\óçϧèèh–¶îß¿Ÿ‰,îá™n‘€Xþþþ<èXL,L(pöìÙÔ£Gn'ˆˆ¡ÇÇuØúM–¾ÐÆsçÎeò`R£ ׯ_gL1Ù@Ê7ÞxƒÇfd”áæÍ›L&Lt¸=;w&Lžš5kÊ,|f( i oóò²ÝöàiQY*.ì&)dBƒaFW«VòüþýûT»vm±eá-º{÷.“¤€†À5„Ö©A`€˜±EŠIÔ\ù!æ ¡C‡ì3µlÙ’äÎÃÐnÒŸ“ç^^^L¸D‚EÊAb°ºvíJ@L DD{ a¤)ƒ‡†mÖ¬ÇaB¡ÐâgÏž¥‚ L6 ¹dɒܯQ£FqÈyR’ÃîêD{¡=á;¢^ôí.Z´(OXš¤&9”‡» Ö>2&'&ò Xãm^^Öa/ž²\jŽi"i¡B…X6H#ǿ߆—•eΜ™êÖ­Käò,X°€ š š¤…¹‘ÁÛ;ñwåÍÍÌ 4'‚ŒG\ll¬‘èˆÉ…Šy˜1c» \0(âá_bð`º“ŠC[P?Ì´'L"&4 Ü@"{ÿ$9|Ñnuâ+€ (|2eïÞ½´uëVö9'MšÄèwÞ¡“'O2˜Ððq­Vœð»ÎŸ?ÏÚ®ˆ‡AÀì-Q¢ÇA´-‚&ä@#ÂTJMÌ™Sø? Z¦ò“O>aצraúA ø°#FŒ0I© ØZ.4ÚŽ>ÔªU‹ûùxrˆkLX7¸/^ä6Êúe[`M0>W®\á$Lz,¢Z·nÍ“‘¶ð–å¥äÇC»`IÒ ò1É }‚k¼}ûö„*üaÄÃ'ÆD‚Ëôé§Ÿr9”E€+—léÒ¥Œ?n=õîÝ›'),”Œ\ÐÙ•åe_ÁSÊHêh±EÇÊ×Ñg÷0ü€€•C# hV ¨ Ì+Væ¸õÀ°2ØÐÈ/M0ÌÛ¶mÛØ4w¤<[G P (`ò³d>˜)]Ê—ñ©=bÀ AÑ/¸?2`B@&\LNô'­õH¹òùÐÖè“y€¯jÝOä•&[æE»1&r,Ð6”±ÍÛ˜ÞÖå¥\Gñ„ÂX9”jRÅj·m`FäÌE<¾“u~”u¼¼¶•’Z‚BòƒD¶‚=rl•‡ˆÅŠu°&Èj>øÖùí½†|ë: ÃV?må“‹"Y/Èjk|n oëòRŽ£xJ9æGå$ŽE˜½\¹r™×“â9îšbÇŽm– 2i'›t¤Rœoå$Å*Ý^‚UëÙŽÛ,¶‚-Íj+ŸŽSƒ€3àýŸ¥¦OZŠF@=bQa »õ›ùúzÞ¨ìT‚Ÿõ›ù«{õS@KÔ8Ž€6÷Žc¨%¤3š¤é °ï8š¤Žc¨%¤3ÿ¸)zqžAóIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1CommandLineBase-members.html000644 000765 000024 00000020146 14042362133 027210 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::CommandLineBase Member List

This is the complete list of members for mysqlpp::CommandLineBase, including all inherited members.

ArgumentList typedefmysqlpp::CommandLineBase
ArgumentListIt typedefmysqlpp::CommandLineBase
CommandLineBase(int argc, char *const argv[], const char *opts)mysqlpp::CommandLineBaseinlineprotected
extra_args() constmysqlpp::CommandLineBaseinline
finish_parse()mysqlpp::CommandLineBaseprotected
operator void *() constmysqlpp::CommandLineBaseinline
option_argument() constmysqlpp::CommandLineBaseprotected
option_index() constmysqlpp::CommandLineBaseprotected
parse_error(const char *message=0)mysqlpp::CommandLineBaseprotected
parse_next() constmysqlpp::CommandLineBaseprotected
print_usage() const =0mysqlpp::CommandLineBaseprotectedpure virtual
program_name() constmysqlpp::CommandLineBaseinlineprotected
successful() constmysqlpp::CommandLineBaseinlineprotected
~CommandLineBase()mysqlpp::CommandLineBaseinlineprotectedvirtual
mysql++-3.3.0/doc/html/refman/scopedconnection_8h.html000644 000765 000024 00000011725 14042362133 023422 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: scopedconnection.h File Reference
MySQL++  3.3.0
scopedconnection.h File Reference

Declares the ScopedConnection class. More...

#include "common.h"

Go to the source code of this file.

Classes

class  mysqlpp::ScopedConnection
 Grabs a Connection from a ConnectionPool on construction and releases it back to the pool on destruction, and provides access to the relevant Connection pointer. More...
 

Detailed Description

Declares the ScopedConnection class.

This class lets you grab a connection from a ConnectionPool in a scoped and therefore RAII way. The Connection object will always be returned to the pool when the scope block ends, plugging a potential leak in the pool.

mysql++-3.3.0/doc/html/refman/inherit_graph_41.png000644 000765 000024 00000003415 14042362133 022432 0ustar00tangentstaff000000 000000 ‰PNG  IHDRwF«sRGB®ÎéÇIDAThíZilM[þZ ¡³¶AÄáìÙ³rM˜07n”ö7ü–í«€øøx\¾|ï޽É'|óÇ|^ƒ»k×. >:t+´ 6 eË–hܸ1.\¸€ùóçcõêÕ²*822˜6mêÔ©#ýëׯËóuëÖ¡^½zèÙ³'úõë‡Û·o›ß¶mF-ó4h€C‡ɳèèhŒ?aaa2d衤>}ú ;;Ûl¿yóK–,‘«I“&:t¨´ t÷îÝ1{ölÄÆÆâñãÇ0`€Èã^½z…œœÙÏ Aƒdœ<¤+W® [·n¨]»6eÌ?0j´hÑõë×—uwî܉””Ùó“'Op÷î]á?þ¼è±zõê7n¾ÿêxìØ±àYëÖ­‹íÛ·Ë\o¼—JKKKÃÚµk%¼MŸ>[·nÅàÁƒ±yóf´oß©©©²S§N¡|ùò¸wïŽ=*"`ëׯå,\¸Pæ&$$àøñã&Pd~þü9Ž;†Ý»wƒÞ×'Ñ89oêÔ©ÒgD¢11"8P¢cÓ¦MÅPd‚—?^{.å7lØP– É•*T¨ áŽÀ>|XÀeqÄðC›8q"˜{¨,†dMä³¢éëׯ¢ öõ8ǘ¿|!†V=ŒÌõ™j4iÙ ‘: óô4~ìiÞ¼9r0îøi„Vþ5j bÅŠZ´y§ÁS'š~þü)a™}ͯ×Ös¼¹ûîï 'QÌ‹´vZãŽ;°|ùrìÙ³G ¦¾}û àÌ1TCœ¢xà«W¯JÈm×®L9sæ ~üø#GŽ U«V2FãaJ²¶eà?L {ô†E~óD½zõ¯ƒ¢GR ¹ãŠŠÂû÷ï%}þüY±þzôíÛ7S<ç1 Ü¿¬Oè ”_RT¢àêpCà ͰDEГ Ĉ#À•㎟)iéÒ¥à>¸;C8s.kê†D™ ,ó1²ðìÝ»·}iSÅün€_˜5©… õmYw}¾« ÖP^kX?d+O3îܹc(Kv‘«òŽŒuìØÑ¸xñ¢ùlñâůܹs •¿Œ¢¢"s\…)C…cCy»9æoãåË—†ò4£o(ò(’gRµ†ËsOü<«–«T±¤›æóT…þËuÍÉÊ8 õÀút¯OÕ¯ †ï‘|Ub¨óç3?ëjå¯Y³¦µ[¬Í|e'ʲækûsoûüh¢Éšõ˜õn=“÷ÄÏ MySQL++ Reference Manual MySQL++: Class Members
MySQL++  3.3.0
Here is a list of all documented class members with links to the class documentation for each member:

- i -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadInsertPolicy__coll__graph.png000644 000765 000024 00000020011 14042362133 030131 0ustar00tangentstaff000000 000000 ‰PNG  IHDR•”šþkêsRGB®ÎéÃIDATxí] |ÅÒ/B á’û>ƒ È ‚úàqÈ¥*OTn9ƒ"((ŠúäˆÀÇ% Ê}ú8A9r‡¨œ Hè¯þ…³LöJ²³›l6]¿ßîôôt÷TWWWU÷ÌTeR ¤ASÀ{Hò^[º%M»ÐL¥9ÁëÐLåu’êƒÍ$¸zõ*íÛ·Ïœ¥Óɤ@½zõ(kÖ¬É,í¼Øž={èúõëÎ/úIîÃ?L… v‹M"¦ºrå •)SF~nk鋉(°wï^ºyó¦e¦Š§:uêPhhh¢öýåäüùótíÚµ$™J«?±ÂC3U ¦¿tE3•¿ŒDááS¦ú믿hÇŽ~E®ØØXÚ¼y³_áä+d~øáºuë–¯šwÙ®W˜jÿþýôòË/;ÜäСC4vìX‡ü´Èxíµ×h÷îÝbh®]»6-PðÙ=¾Ùß`åÊ•gŸíóó3¤O‡¨`Á‚Ô¬Y3ºtéuîÜ™æÏŸOcÆŒ¡sçÎQãÆ©lÙ²4uêT[†J‹-’ó¦M›ÒñãÇ [Ï>û,)R„Z¶lIÑÑÑôå—_R«V­O¾ýö[jÒ¤ %$$Ї~HÅŠ£ªU«J>Z²d =øàƒF_|ñ…´=cÆ êÖ­U©R…î¿ÿ~);{ölš3gµoß^ð³¶nÝJ•*U¢|ùòQ=«¯ È©Y³&•(Q‚fΜ)eýåoÖ¬YT¡B*]º´ôÉÜ7LnбcÇŽ2™8@·oߦRß¾}eL°%€Õ*`Ó¦MÒôõÅ_”¾{¥ŸxögÀï¿ÿ®Nž}ºb&S,Õ‡òåË;¥ƒ9}奶9Ë£ôÎ;WW•Yu«œ9s*žjË–- ¸™ûvìØ1<ÇUýúõSgΜ:\¸pAh‹¾FFF*ê•W^‘[03)žlêÇTùóçWS¦LqukÉg¡Ž=ê¶ _ŒO´O•.-W®7N¤#OàrÌø,Y²PŽ9ˆ†.\HÕªU“4ÒÀððpI®X±Bfʆ Dª@ÚeË–>ùäjÞ¼¹H¬víÚ3 5lØPÊB²-Z”6nÜHÙ³g'&”´U¼xq›ýÆŒ* RlðàÁ"±1™;wnÊ”)“”ÿã?ˆ' 0@Îy2È}ÐþÓO?MµjÕ"42dˆ\÷‡?ÐRùõ×_íuŽ=-sßxrO|Êœ9s"”¡"¡= e>ÿüs¡ ´Ì /¼ å ¼)V­[·¦¹sçRTT=õÔSaÃåÎ;’Ï’Bòî»ï>Û5g žM¢æ QÖ`¦`ðÍmΞ=+ÄD]ü:uêD•+W–òyòä‘#þ`¨‚ìõ1w¨?K9 ~r☫V­ó‚%ª0>ð6K†Âuû>a2šŸ ž· ÅL…™ÏjŽ`»Œ1‚Xt .ÐÝAAA{é›o¾‘Á øå—_ÄžÁ9$Va-Z´ õÖ[oÑ<@Û·o—éž={Êl[·n­Y³Fì*÷bdÃNxòÉ'ÅžC½{÷¦þýû“y¥[Äfµ&Ò³zõê‚p4¶˜‘Õ$± !µÿú׿ŒË~yÄŽ6lÐAƒѶmÛDÚ`rÌ}KòÐ8`¬#GŽÈX€ÎÞ‚3$Dé£>*Æ1ëgQ@pôèÑb²n#÷矶©0ÛG‚7T uÔ…a †#õêÕ‹Æ/‹H­‰'ʽp‹¶¥„± Àó§®]»ŠÑZªT)‚tÂ# ÕI:|øpÁ¡F¢‚!ò˜õhe °q¦ u)•Òø hôýÁ‚ÆHü@’ƒ/Ê ŒÛ¼b*`B2{ÌV«™$ u”‡A~øðaňت³šQ¼|•sѧOŸ¶]K*zRÀÏ&Å@7—»|ù²:uê”- †:KPYHðÃY[>(kÀùĉ‰úb_&©óÔ2Ô <`¨3§rtÖ·DìN0F“'OC´â‰'k»R‰O}f¨ƒ“acijê€ãK–,iœ&y„$JÀжH(³ e\wf#8+"*ب—ŽP]öà¬oöeÌç#žÌÄ«B1°ýR¿~}sÓ^’wßßë cßë `ƒŸ}ö]¼xQ6H±ïå-8¦2VŒÞ"P ·“Ô»Qžô?ņº'7Ñu2I*èe¼ù‰}¡ô›7Ÿ4¼Tš£ ÛÌ*ÀÎá]õ7sçf&Šš“ ?ÿ7eÎáÛ£ìmigÈ&b*¼ pVÎ/óÖ¯_ÊÏæ¶ðþX^Þ3{Ú/qL RØ&H)\;s“Võ†¿†¾•*÷óô&kF*ìžàJ‰Ý H__n€>þøcõÑG‰› vE øÓ}Å%(öQ%eq ®†÷Hø¢¼@â2®Ÿ|ñp¤‘¡ wï5nÜ·~ÛçS›¯¨ÿksH%ܾëR€h(v 'ø²ÿ ñ…øýb€ÂTìàM±ÅŽËû¤OþᯠyðÇ…4\°ã9ÅÛ*vÏíËþÇgõgˆüÑ£[Ó×_ÎFž¿ñ²Ý¶wÏPƒ¥((ø®-8Kx§aGsò‰>;woxÆgêìdNœ—À¯û°Ï€ð¬O9,Ñä³vøy‡»|lkv!䋾g8¦*P '»âiÊÞ`–ø‚ž–Ú<ÿS Õî[œŠÚ½Ê×I`ø=xüñÇùIÁ§âÎðãeø¢Àwƒ,‚ÄÅʲÊã-•z©îì?Ã1F½{÷ú<ë¯ÓŠû-1·+—jp¿ˆwÏ›Ñ>ÜÁÈfw—ÂTð„‡ì Õ}d(‹„ö«êð¸w™öðÐC%ÌÈ¾Ž“óŒÍT ¿1JË—ïcב½œÐÇ÷Yøô*84å »ë<×÷wôù2ÆcwdìÒ¥.ÇØ‹cw×{ÜóÉ5¬ö~v‚r—ôÏPlžv:CêfbÁ°8±GHXÁ_7ß4_òi1lwšê-E™YRdx¦Â`âÛÁ&M*Ò{ïùvUdfœý_]d•J%ëû3~VÒš©þ¡Þ°a-Ù`ßË;׬Ð3YuñáÑToHòí&«a?)¤™êŸÈ›7; Ö‚w}½ûr|/ú“êóG¡~þUŒÇ$ÈÐ[ Ψ֬ÙÂk2:ÔrvYç%M½ú³§ŒöwÞù–C–¤~œ<{\Òë¹Vv#W¹r ŽàU™ãÜ‹«cWDŸ&AÍTN4th >¹Ÿò¯×t ê—Yš©œ <ɌيöEN®z–…W„áŸ3#€f*£Ü±c-~]„8Œ¯u7#¢ióØSüû· ˜lÍTn†Fûĉ«ùÍɿݔr jÿÌ(ª?,í¸ÇÔ{W5S¹¡e… Å8ômUï»ÒM)÷—vL>Ct)D¹Jdu_0€®j¦Jb0ß|³9­[wˆ<›DIÇ˧·\¥KÇã¨r׌óZ ¨ ™Ê‘åäÌÂï³·äÝ‹l¯ä&*àâ>ÎwM=G*mûˆÁEÑ€ËÖ;êÉÒ¶m?¦¶mk^•Ñà–ú%=·ä1]ăæ¦Ó¦MCù(?ó±iÂÓ’ é©Üq¸„Lw¿’*4´LºÃ;%´8p U~ˆO3—L*‚™«V­òНm¨›©ªÓ^¡€f*¯Q7b¦€f*35tÚ+H3›Ê+Ø{Ø>¬üé§Ÿär›HT½¯PB½Pi¸ˆ¯‚K”¸6.Q/°Û ùN¯hÑ¢^jÑ;ÍdHIÏs/¿ü²w(È­´mÛ–¿\N?þø£íç+ïv`$wñ>sæŒ×úᵆ¬®=©ÏÈ»­©7n¬Ú´i£J•*¥&L˜ ØŸ€â)޾.^¼¨X¨ØØXigÊ”)*<<\íÞ½[±WU°`AÕ§O¹vöìYÕ°aCU¦LÕ½{wqvüøqÅžRä:ßN… RíÚµ“6Ù†êÚµ«b'RoÅŠRvÁ‚ê­·ÞrH³‹Ń+ùÆ^®êÖ­«Øob)¦š7o.ÌPŽƒŸ‹²N:)þ$]]¹rEüL.\XµhÑB¡g¸U¨PA±·5zôh5dȵfÍuëÖ-éW¾|ù®³ƒ©ÏŸ±‹?*ø·jÔ¨‘º|ù²ä»úƒ34àiüÓ?œQ`Ö7iÒ„hŒá÷š†Q«V­d¹ûÞ{ï3ÁmÎúõëerEDD"¥¿ýöÛÔ­[7ާ¼K|=z”Þÿ}bÆ”ö0«á¿É ?ÿü3ûSÈKûöíp^Eÿ³È•UçN¹­W‚¹rå’YÌN&;ê’ÙÉ$uǯx$QîܹÅ;\ÿþýÅá| ˜àR®R¥JŠ­JzÞ¼yâÎ,©˜9Õ… w]!Κ5K¼ÑÁ "<Ò)wêÔ)ãÔáII —ˆÆ/..N±“ U§NÁ™]êAÂÂÀMðlР¸`„ËÅ7ß|S¤3®;Ãk(H @ÇŽÕüùóUïÞ½3«äá'†‚ô=yò¤äƒ6'N”´«?oI*¿5Ô!] ˜‰(gΜâM³Ù€öíÛ«5‘Pð ïp¬&E °º"Hxœƒt‚ç@HHˆQ=Ñ1Ož öÙ7¦¨0Ô¥=a7lØ «7ì(cpp†Ki¨$øzb©Èï­’ëæ42Àðæê~õÕWÄRPT;€•zÀ%‚¤¡ªqO¶£Ä…&¼âmß¾]®ãÏnæÉ…2M›6•6±… eŠÒtEèJú2Ÿéà¶y¨?\)Õ1€úËœ9³¤ñÇ6”8V…ªÀ`‡*„ÃUvð¥Xê(¶3ÛAÒû^²©?fJ©u ¾,ÍÄ0¿té’‚úãíU®\9ijÀö™,ìÓ, žŽ5JpûþûïoaÈ€Ý*ª;v¨ªU«JûXTÀÈfÛIðÅýX2 θ‡3Ü`ÄçÏŸ_¡}CýF̬Ò–ØÊÀtc ‹¦Û`©¦þÜ® ãý¿¤˜*¹wζ‚@t{û‡ÕØ/l¨ S™ËÃnÁÀ² ±eƒ©FŒ!^~¯_¿nË÷f‚ g‡æŽ;Æî¸oØòᆋÀטH¶Âœ@¬àð6ĺ;`ã”ßÈ\'?s9¬ í¥›¨¬¦œì6Ãî2_g‰`>õjš—ÿíaÍœáoÅÎÀYœ•óu^š¼¤Õ'–¥¾±D"v6O`˜äl,±YEÚªÀ4Ú1Êà:-Án¾ÄÇxKG à·«¿¤:ÅËæ¤Š8\Ç 73 Ø3òÒš™€Ànw¯ø÷º]ýù7Y36vi&© 2gÎΪü6o?ÜÛCKÏýâ7?-£Ÿ&LeÕž²Ük/6P¬Ø~üR£0tõb«é»)­þ,Œßž=§([¶¬¼©z˜%•µ…‡4ü®ªf* C²`Á.~„Ï’2ñîý -VUÍTŽ'$Ó²e{ùñÎñjO“ÊÞîDj¶;*,l(¿iê¸o ƒÎ;öí OM”üí^Úë‹'#²qã:~ü¢T…C´Ò¥óSùòEä¼Q£‡©\¹‚ž4(u4SYÉÞ½#¨qã‡Åw•Õ¶¤¾Žø éWÝІºÅáÀÛòÆ…ERتk¦²‘³Œó@zëÂ3*$®¥™*1=ô™( ™Ê DÔM$¦€fªÄôHñ™¶©I¦™Ê‘&)ÊÑ6•#¹4S9ÒDçX¤€f*‹ÔÕ) ™Ê‘&:Ç"4SY$ ®îHÍTŽ4Ñ9) ™Ê"õ–‚#5S9Ò$E9zKÁ‘\š©i¢s,R@3•EêêŽÐLåHc‘š©,PWw¤€f*Gšè‹ÐLe‘€zKÁ‘€š©i’¢½¥àH.ÍTŽ4Ñ9) ™Ê"¡þà–ZÃ= hjÜ£…G)¨?#ŒG `%ÍT8¨iÞ%ži–à™gžqˆËÂÊ0yY²âx9ޱi2 Œ •ÿ0R¼£—‰²9‚}òÉ'Ä1SXS Ìœ9S"Žqð&[w´ú³‘B'¼EÍTÞ¢¤nÇFÍT6Rè„·(`Ù¦ò"VÚAPmDEÈ[«pðàA‰´…vz–L&»IØ—ˆêU¼xqB;k`)Ù%£ ‚qÛk \Ýí™tžFî«Ðs!©8H·ÄNÆ8$Y„£›JˆYÄ_F<ÁîÝ»¢¦'šarœ8(drª¥¨ ÚnŽNJé”8Ð7qT‰ôŽXÏ®À G~•Hó®ÊYÍOIÕ§O*[¶¬Äæèçâz‡£–‡¥%ŽnNC‡¥.]ºGB}ýõ×’îß¿Ÿ|ðAâH¡2CÎÒîÝ» í9r„¾üòK P333u8‚'qøW9ž8q‚Zµj%Œ‚€Ý]8ºÄÆ5Ž/m!î2‡¤•ô‹/¾(Á´9-ávîÜITùꫯRåÊ•¿?üPúÉV»vm>H ¦1â0GFF‡Ò%´×¼ysZ³f q¤vÁ A½™#ÔÓ¤I“± ±šêÕ«mݺUú‹úˆã¼víZÁá¿ÿý¯Ü‡CÞR±bÅ$`E`ê'žxBbKƒ>åË—§aÆI¼i)ĈëŒ8Ë`ÀqãÆG„§š5kÒk¯½FC† ¡éÓ§K ñÅ‹³[ïXB¬ç”@ªH*±¾yó&qÌc! Ç–c?^Ô‚hµ™—-[6š3gލäïÚµ‹Ý"'0Ô Ä¸Î;'Ã|É’%„{mÛ¶Ú´i#ÒcÙ²etùòe!š¡ÚWÏÉ}îܹBl *¢¿#’:$ˆÁD íÙ³gË­ÁÈMš4¡~ýú ó™ñAšÃÏ c ‚ûóÏ?oc$0"$?""Bª}þùç2Y8Ü.8p@‚vÇÄÄ-Àˆ` 0 ð2Ô*&hœ!±Àè7"ŸrÌf‰(¿bÅŠDhEEE±#ÜZºt©Ÿ1c]¹rE‚ŽC}ïÙ³GÊCRã~)…Ta* ÕºukâÙ2c -Ê”)#!f9–°Ì,#Â9Ž 6”Ù‡ô¢E‹¨}ûö2˜ñO=õ”Ôm×®Ó¾bÀÁ$mÛ¶•B[¿~}© ‡@¤x¨6ŒaöÜ E1’R¥nݺԳgO‰éÆÄLÇñÙgŸ¥*Uª8H)£½zõêIßé=::šBBBˆÓÔ©SeRað!Q÷îÝ+Ìõ†híFdyàšqÐnB LØOxæàÀãìyµD¢Çd+Ãt…4£ßè#&¤3À$E» "ÍC#@Êîè&)˜4¥*êH"†$Ô„0ˆlZ$ $$ˆÆ©e4H$:  pe”ƒàÆ-³i#Ï>çΠF6õ‡ë0j!]Z¶l) 5u†¾ÆqŽ9œ5' x×Yúöî»ïŠZ¾|¹H¨=àŒþã‡.]º´HJ0“+€º2h‹2ht2$Ϊ#jÖÀÑXQR÷ÇDr¯Ù¡ASFªI*Ó=’` Ø}ô‘t 瘽P] Ú /¼ ³öŠ\RË`…€Êkܸ±¤a«@¢@äcU¡m¤¨6{€íû ƒ‹c³fÍöò1(aaa²R„=fHû6œ#6rxx¸H¸iÓ¦ óƒ1¡‚ÁÐ;wfÂ}œ˜Ï€v.¦H2gÒÆ(µ˜0a‚¨xHP01ìZH-O Õ$•+äÐ9:•€º>|8-\¸P˜Æ&ŒKH»ö³Ïh+0ˆ{מ\LØz°Õ @ÌmAmå í5j$Å00;jÕªeTKÑѲs~ÌÌ^«Ïþ°ÌEÍ«90lÌ`310Ó!¶a§É €š„-ò0T1ÐF0®ao`%ƒAô€Tf2Òhƒ &7TNrۇ͒+W®Dæ¤$öº µjßîgVéö×s´f…á°1›$óæÍ“IÓ»wowÕäžýAb9Ò(ëÑÞ²yýõ× ÄäˆÕT=`¦cºáö€Áwe‡Ù—uu|ðG¤“3À(g`{ÀÀvɽŸ³öµkf(HG˜f鿬޻<¿T ˜•ær‡´qíêÕ«‰¤fphhh¢™ ©’Ü0ÚΨG¨uH\Háä€ßJ*c’œN˜ËØ«gŒâ8Ë7·£Ó÷(³Á*Ym@××°§€{ ξ´“sÅØáÕq)`<ï4(`Ù¦2ÒGM( iVð>´Må}šfø5Sexð>þfÂu–9) IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadFieldName__inherit__graph.png000644 000765 000024 00000012416 14042362133 030054 0ustar00tangentstaff000000 000000 ‰PNG  IHDR…‰ûGsRGB®ÎéÈIDATxí”ÅóÇ8 D³˜PÌ Œ¨ (˜#fų1 ˜ž>³Oõ/Â0€¢"A}¤€EQ0`TDA¡ÿõ)ìev6p{p{»·UïííLÏLOOÍ·««g÷öSË93óÀ2Ì«¹lÙ–ÌK=`¢0%¤xÀD‘â+(˧ &NœèæÏŸŸÏSV‹s­µÖZ®Y³fy»–¼Šâßÿu-Z´p«®ºjÞ.°ØOô矺iÓ¦åõ2løÈ«»‹ãd&Šâ¸Oym¥‰"¯î.Ž“µ(Þ}÷]7oÞ¼‚òôäÉ“Ý÷ß_Pmʵ1E!Š /¼Ð?>åÚn¼ñF÷ÙgŸ¥”ç»!œ{î¹zÚ÷Þ{Ï}óÍ7ùnÂJ=_Á‰¢wïÞnûí·w›nº©ëÓ§{úé§õýøãw?ÿü³{à\“&MÜ~ûíçfÏž­Î˜>}º;ì°ÃtùÙgŸu]»vÕåO>ùĵlÙÒm´ÑFî²Ë.sÌ~Î?ÿ|wË-·èö›nºÉ]wÝunÑ¢EzS×^{mwÀ¸Ï?ÿÜñôÑm²É&n÷ÝwwÜlŒå .¸À­¿þúŽ6-X°Àzê©nÀ€®[·n¾rsçÎuÿüóëØ±££ÎvØÁ½õÖ[zü•W^©mÙ|óÍÝvÛmçÞÿ}-/¨?|ö‘/;v¬ÿûï¿3žN¦_¾^½zþ‹/¾ðo¿ý¶ßzë­ý_ýå[·níèE¾Aƒ~È!þ©§žâ3/7Ëûí·þæ›oÖzÅù^Ĥˇ~¸ïÞ½»—(ãwÚi'ß³gO?uêT_§NÿÜsÏù† ú™3gú¡C‡ú=÷ÜSë¿öÚkýÅ_ì'L˜à·ÙfÿÁø;î¸Ão¸á†~ñ➬¬Ì‹üwß}ç÷ÙgÿüóÏk{öØc/Ï`ü‰'žèE Zç.»ì¢ç£ ­ZµÒ6±}g̘áEL^Dªå™þP'mÉ£Í-¨H±úê«»­¶ÚÊ]tÑEîË/¿Ô!cµÕVs«¬²Š“èÞ|óMצM'7ÛuÖY®qãÆÚÁˆôRLäN?ýtíÁì_·n]­‡ž9fÌ×´iSwÉ%—8¹9N„¤iذazÌlàˆD“—_~Y£y‹Ñýúë¯nÖ¬YzŽË/¿Ü‰HÜ9çœãDPÚ¶Úµkë¹tùC9Û9ß 7Ü ÑçÇÔÍ ‡´ç„N(È¡¦ DQ£F ÷ꫯêÐð裺æÍ›»%K–?k·îºë&ÖJ&c¨!„K¤q¿ýö›†ý£>ZwG|˜D }—h¡7žÈÐ@^P«V-=–ãKýúõuÿ5ÖXCßv~ÿýw]Žÿùúë¯Ý:묓(fè ×"ÑPË%êè0•Ø©@ Jä't’»êª«=ô§Ÿ~r24¨«¸Á‡rˆ=z´ŽÙŒÝü±nãÑù;ï¼£ËìO99‰„ͺté¢=c>ýôSwß}÷9J4Ÿøá‡ÜAäˆ2<¸=zhÏ&Ñû;wîìÚ·oïúöí›ÅÈ‘#u_L¾€Ñ¾¨|ðÁN†9݈ըQ#G$*++¤F’×[o=xo×®.ï¶ÛnîÌ3ÏÔ›-c³1Ü0N¢ ‰æ‘G©b‘\ÁI>â^|ñEM&0†!’=Bö¥—^ªI BêÔ©“{ðÁÝk¯½¦B"z¼ôÒK:tèn±Åî—_~Ñá‰ÇóôvD‹×\sM'¹ BrŽ‚?=öX7xð`m#ÃF¯^½Â¦¤wÚ_p–ÇÆ//Ñ m!Ñ”1<¬ê»dô‰uNÉúëÙ$Ä{™¶j’˜m?¶ÅÏII¬ˆ‚E5Mê”á!é;eé’höûã?’öÍe¥*Í‚Š¡ÇÐ;ãÆqÊs ÃD™ÅÄ«K»Î§‘q#‰[Íš55’DË9O:cJ[lVP9E18§•$ ÕÙL9ÞÝèŒ"ÇC‹fwEÑܪü54¯9órI6ówuå<Ó¢E‹efòkÛvS o6.×)ç¥Uh·dÂ:²4|øGòôñI7hÐ%òͰÔ$·]jy.žâ—úõëjÖ¬!j-ýЫ<ž«Îû”|N±`Á"yØ5]JyyÄ>U>I]öX½:ßøl×Vò¢6lª|Þ±4µ*+«éFŽÌï—d³ÝœªÚVò¢èÓgŒ<²þ[ý?þB׿¿ !%-Š9sþtS¦|èäÜ£F}*Ÿ¬&¸•Ø¡DJZC†LqeeÉO'k×.sÇX"·?ýe–´(úôyW¾Œ³(É3 %ÿûߘ¤²R[)YQÌž=Ï͘ñsÚû=iÒLù–ø‚´ÛJ¡°dEÁ4”ÙFƒ«ë«^½UË<á7îËR¸ÿi¯±dŸh’TŽ=]‚:tø?ùæx]çQwëÖåû¸=­W‹»p^^?û($_ñ§6m¶Ñ&-\ø¯>Ñ ë…ÔΪhKÉUáìb9§‰BîQƒoS™-õ€yBü@~¾~oÂpÎDa*Hñ€‰B\bÃG².Lâ>LɰµX¤Hq‰˜(L)0Q¤¸Ä L¦˜(Ä%6%MÖ…‰BüaSRE²l-Å)R\b& Ñ9/³¥0QˆÈ)x™™(L<`‘BcSÒdu˜(Ä6%5Q${ÀÖR<`‘B\bÃG².Lâ>LɰµTH/© §BÑ RcѿרQÓ×­»KÑ_Gô^ë¤B÷Uª8ÚA8îì³ÏN<ø‘ÊŠvyÉ’ÅòÃ%ïmûã¾çwÁàTÔ,§¨¨çªñq&Šj|s+zi&ŠŠz®WÔÿuðåŽ;î¸Â·(b¢ÁiÛ¶m´h¥/ƒ­ž4i’ÙJ¯»¢u¤1b„\*zñÑã ¤ (>ᨲ,`5ÁM )$«TQ<óÌ3î”SNQ½ù‘GQ¼ä–[n©8(Àn ›0X_BT¬ä8¬3ËÁ ÷ÀÎy衇º?\öceO>ù¤’ƒØ¿‰Ð‚^yå=lj%„?…»±ì¤Pu°NÑeö¹çž{/€pS¦LÑv€• Ûu×]Ì1°U $©ûÎ;ïÔãÓ!/Óµ-ŠÕ¤Î€½‚T„Ÿø-îóÎ;O‘™ö¸ÞcŽ9FÙf@÷*Ý*:™•‹õ2%Íz¸Àádþ_×ËÅú:xÁ-éò5×\ãO;í4/X&¦“é…ùéAHn»í¶н÷Þë…*èçÌ™ãÍäGååå±´¢'Ÿxâ /Îó·Ýv›¼”>˜"!űZ§Èï¿ÿþŠ‹¨¢%ÙлwomËŒSô¤ˆA‘—õáÕ¿vñÂ5óB0T¼¤ µ Œ$Û9'xJhEé—éÚÅjŠ uI¥Ô)ÄOœ8Ñs o¼ñ†çyƒˆÀ‹´Íø“se3™’*²3Û>Y¶Í­ôœ‚±rï½÷V|#ã6ËÐûä†;z)¸Hz ½ø+Q„\A„£½Þ8HŽÛwß}µ“€©Œ= /Ž…ö‡Ñã`“« ù<²`\Ë:=”h,PäŠP”ÀiÓ¦)SŒhqòÉ'ë® 7ü”ï"Â$ä%T¢xÛæ¬føÆtDê¼âŠ+´N€¸/¼ð‚â2‰Fgœq†–sís¡#…ë)ï{¥‹þ&ƂĀڎ8âd>Ào\,a´_¿~N ±êdB*CG0Ž‹[''c¡Ð“'  Æ1GJèUh,c?.ƒ Þûè£4:±L½Ì0ŽçƆW¸)ä8Gu”’‰,;ï¼³Ò¹á“sЙ©¤C^Ro¦¶E±•ÔI‘‰¨è$x ‡çÝ*=Rdº¢6¹á’3h˜d_¯ ¥5#ç¦\}õÕºq ô… &õœP=P .’¤4”Ã>GI–ÿúë¯ks®¿þz=$bé +Ùœ$¯`@ma2| ±P£@ò!w×]wé± ¬%!6zyùøãëpo[ÀjÒ6ŒówëÖMiø¨ ]ðRZã®-^¾ÒÖ³$Y7•'ÑÌZÁAIJ”ðÂîLìS\zs ÒQ†-ƒKã<ÉœÌÅ=’h’¬ÉìE`a÷•örDdÔ@QF‘—™ÚÆ1Q¬f¨ƒ:eÆáEl¡(ç÷‚O4³©wòäÉ:e•l_!µa_Æï@e¼/êÆØžÎ6ÞxãtÅ+\FnÏo2!/Óµ-šk„ÆPÓꪴ*>¸h†ÆÛ(¿¼<Î>|xÒ2öø±LðÌãÛòµž©mù:EÎS¥¢ ›ÏU\d¼‡}Ü 6Œå}=SÛòÞNXå³Új»æË9g1ÿP½¾yUæëÔi&OJkñ Z¼xZA›[²?Øít† ŒzÂw‚2Iö‹»† Lk%Ÿh‚ÒD‘âCP¦¸¤´#…!(SAII† 4Q¤xÀ”).Ñ‚’† L/JKV† Ì,Š’}¢)€ A™^† Ä/† LVGÉÉn°µ¨Lâ ¾óhÊe²0Qˆ/È/ø®ÙR˜(L )0QˆKløHÖ…‰Büalj"Ù¶–â‹).±…i Å&Š—X‰Â4ⅸĦ¤Éº0Qˆ?lJj¢Hö€­¥xÀ"EŠK¬ÀD! §àe¶Ô& ñ9/3…i ƒ,RˆclJš¬…øÃ¦¤&ŠdØZŠ,RˆKløHÖ…‰Büalj"Ù¶–êé%  {”Ü«:"(s¹cÇŽMh@’Ñ" E€–4+ “ÅÉOZ»½öÚ+qÁ–S$\a Á&Šà {OxÀD‘p…-Téos‡FDßg̘¡¿½îWï£û•gyÖ¬Y Q§iÓ¦J÷)ϱì# ˜kÑ¢…²>@]F â@šfÍš9~¹?npIºDñSìÃ1µjÕr5R` @߃²¯J+¸H¡P~ây¥øЀ”û1.€òP RˆJÚ^à¡ ø§tŒºQÜ A.à8¨‡TÈ~zôè?$ïë9G ðMð:!ñpaíÚµsƒV”pMrè- ÁLÂãX~YŸý¤^€ÜÓ¸qcí=Ü´`y¦NªxHpN€áZ¶lé:vì¨X&h>ôÒ.]º(ª ˜\§N”¨–© ¢ µZ0L ¢ ¥‚ÊÛŒ¾éþûïw&LPXôŸŽÛ´i£$ ­è¿?½zõÒ댂òÀU‚Œ‚l5¸&VÔ AÅaF· ¨F‰@Ѳtí[žï‰„N(ŒúÓ€ï`´åj9G !ï¸1cÆ(Þ P ÊéÔºukÅ*–‰^EØ&Œ3í¡ÇA¤×Q|ή]»*+©ñãÇ;Ø¥ðEÁ.a0D­±NH7nœ–ráxaÑe`u·ß~»‚h‡ªN"Lƒ…ºõÖ[L0œˆÀX(ÊÁND¿x3lذ¯”i=´m…øiÃÃ?¬ÛÃÊA?§ÂQd÷Øc)Î*”gjßò|O[5uÒÁ¨7PCÝåyÏYTJE•ôBÞÃ2!µyóæN¸™JûC<`#áaAÿC@DD„` RG«V­\:zBcê — RJ¯ ” ®ˆ ãÙJÈC¢ËÔ+x)ÅFƒ·–¨£·rãÞ-ˆD¼4QJ`ûöíµÞð‡ºi ¯€¦ ÛˆœëBK ðY¶sÝ‚…R¨ù@ܨAQ „ƶLíc[6ß©%y Ã>ж…ãËcœOŒÐËDFrÆxË‹ŠC¹ õë×w0>Q3ÎÀlâÐtÉZ½HO É^(§Ld‰:Ò-B=¬Š‘6Á%úÌ(¤ÍÑ)f€·D#7Z!/†š¨QŸ< Tqq ¹`ԉ¢l6lJ¼Ãf¥“Z3"J×>Èæ{ÚAdFä¼€ôhâdåX¨(–W/B ‡ «¦WÂIði„k€“é©„<"9JÜ‹× éô†& çqQb³Í6Ó2ê"š`Ñe-?8‰1§‚ŽÄYä)8‘܇›J› uóNYyŒN@„€BÈõ’·#wB¸à©‰F\{Ü "’bŒŸ®}ñãâëDDΗhʹè8¹ZΉf¶„ž…sA>Ò8 F(ãI(§·† çЄIðpL°PÑ„^Ä+8ií¹Ü(B- òtîÜYãý¡‡Ò:Ã2õ·ð¢§rNÁ[«Ã{öìéµ­ n¹‘ðwÜqÊ1%I¦w‡Ú•éd$%,QÚ*„AÝ•ós^®–SQ¢f¸¾h}Е¡8ã 0—éÚ»5“Q'Ü…Äš‰áª"ÓÛ¤ŸL¤£èý샞Gæ ü=ÌÁéñ$Yô¤¨³q"‚`æÀÑ·o_½0ÏþA4„Ä#Fh¨?™œ•©œö0îR½‰6‡Ðγ ÊCÈÏTG¼œ±œq MySQL++ Reference Manual MySQL++: mysqlpp::AutoFlag< T > Class Template Reference
MySQL++  3.3.0
mysqlpp::AutoFlag< T > Class Template Reference

A template for setting a flag on a variable as long as the object that set it is in scope. Flag resets when object goes out of scope. Works on anything that looks like bool. More...

#include <autoflag.h>

Public Member Functions

 AutoFlag (T &ref)
 Constructor: sets ref to true.
 
 ~AutoFlag ()
 Destructor: sets referent passed to ctor to false.
 

Detailed Description

template<class T = bool>
class mysqlpp::AutoFlag< T >

A template for setting a flag on a variable as long as the object that set it is in scope. Flag resets when object goes out of scope. Works on anything that looks like bool.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/transaction_8h_source.html000644 000765 000024 00000057457 14042362133 024006 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: transaction.h Source File
MySQL++  3.3.0
transaction.h
Go to the documentation of this file.
1 
8 /***********************************************************************
9  Copyright (c) 2006-2009 by Educational Technology Resources, Inc. and
10  (c) 2008 by AboveNet, Inc. Others may also hold copyrights on code
11  in this file. See the CREDITS.txt file in the top directory of the
12  distribution for details.
13 
14  This file is part of MySQL++.
15 
16  MySQL++ is free software; you can redistribute it and/or modify it
17  under the terms of the GNU Lesser General Public License as published
18  by the Free Software Foundation; either version 2.1 of the License, or
19  (at your option) any later version.
20 
21  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
22  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
23  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
24  License for more details.
25 
26  You should have received a copy of the GNU Lesser General Public
27  License along with MySQL++; if not, write to the Free Software
28  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
29  USA
30 ***********************************************************************/
31 
32 #if !defined(MYSQLPP_TRANSACTION_H)
33 #define MYSQLPP_TRANSACTION_H
34 
35 #include "common.h"
36 
37 namespace mysqlpp {
38 
39 #if !defined(DOXYGEN_IGNORE)
40 // Make Doxygen ignore this
41 class MYSQLPP_EXPORT Connection;
42 #endif
43 
45 
46 class MYSQLPP_EXPORT Transaction
47 {
48 public:
59  serializable
60  };
61 
66  // the isolation scope will affect.
70  global
71  };
72 
79  Transaction(Connection& conn, bool consistent = false);
80 
90  Transaction(Connection& conn, IsolationLevel level,
91  IsolationScope scope = this_transaction,
92  bool consistent = false);
93 
102  ~Transaction();
103 
111  void commit();
112 
119  void rollback();
120 
121 private:
122  Connection& conn_;
123  bool finished_;
124 };
125 
126 
137 class MYSQLPP_EXPORT NoTransaction
138 {
139 public:
141  NoTransaction(Connection&, bool = false)
142  {
143  }
144 
147 
149  void commit() { }
150 
152  void rollback() { }
153 };
154 
155 } // end namespace mysqlpp
156 
157 #endif // !defined(MYSQLPP_TRANSACTION_H)
158 
Manages the connection to the database server.
Definition: connection.h:60
Compile-time substitute for Transaction, which purposely does nothing. Use it to instantiate template...
Definition: transaction.h:138
void rollback()
stub to replace Transaction::rollback()
Definition: transaction.h:152
void commit()
stub to replace Transaction::commit()
Definition: transaction.h:149
NoTransaction(Connection &, bool=false)
Constructor.
Definition: transaction.h:141
~NoTransaction()
Destructor.
Definition: transaction.h:146
Helper object for creating exception-safe SQL transactions.
Definition: transaction.h:47
IsolationLevel
Transaction isolation levels defined in SQL.
Definition: transaction.h:55
@ read_uncommitted
allow "dirty reads" from other transactions
Definition: transaction.h:56
@ repeatable_read
other transactions do not affect repeated reads in this transaction
Definition: transaction.h:58
@ read_committed
only read rows committed by other transactions
Definition: transaction.h:57
IsolationScope
Isolation level scopes defined in SQL.
Definition: transaction.h:67
@ session
change level for all transactions in this session
Definition: transaction.h:69
@ this_transaction
change level for this transaction only
Definition: transaction.h:68
This file includes top-level definitions for use both internal to the library, and outside it....
mysql++-3.3.0/doc/html/refman/structmysqlpp_1_1SQLParseElement__coll__graph.png000644 000765 000024 00000013513 14042362133 030272 0ustar00tangentstaff000000 000000 ‰PNG  IHDRÇ{À ”ÈsRGB®ÎéIDATxí ¸Må÷Ç×u% •(Ò ¢d*Jƒz¢f ø—TÏ£áI!3?"•4yJ¢¢¨„R† %ãR¡ÂÍX’©‹pqïþïÏ[ï±ïœs§s÷¹w­ç¹wïýîwXûû®õ®µÞ}ÎYIŽã|$JŠ€"‚@’«NH©(Š€S E <ªáqÑRE@-‡Ê€" â‘nhù¿ìرC233 %eÊ”‘’%KÊgË‹‡R刂âêÕ«%===J­Ä¼]£F ©X±bb2®U9b¹zõêR¥J•j&N•¹sç&³Ä©ä¼ëT9ü?GÊa! ÊQ@Àë°þG@•Ãÿs¤ª¼ëT9â8G»ví’ƒ†‘-ã-ZÈÖ­[ÃÞ×Âø# ÊGÌO9å™0aBØ322dïÞ½…ö…c؇öy¡*G>LÐdöìÙ²råJ±zÞ¸q£9ÿóÏ?`E8çíû‚ äœsÎ1ŠƒñÒqýúõæ^jjªÌŸ?ß´ñ²ºÿ~Y¶l™ìÙ³G:$»wïöÞÖó¼@€¬+EFÀ\gÓ¦M‘+Ý6l˜süñÇ;eË–å«Îõ×_ï¸ à¸Bo®‹+æ 2ÄéÙ³§S«V-§fÍš¦üÛo¿5ÇuëÖ9‹-2ç­[·v’““Íy… ×õ2£Í™3Ç9ùä“Mù1Çã4jÔÈ)_¾|'G¿d¼-[¶½R¿«–#/V˜ÿú`ïÝ»· 0@ÒÒÒÄ@™>}º± ÄÅ‹—1cÆH×®]M‹+VHýúõeéÒ¥R¢D‰N°@Û·oWŒ5™4i’9¶mÛV\…0÷è+£”÷èÇGòS>ÄW¹re5j”¸+¹4oÞ\öíÛg”"Ü0|ðoäÈ‘RªT)III ©2pà@9ñÄ¥qãÆR§NY»v­üð‹6yòdq­‡4mÚT\ 1– éT bF@-GÌPE¯èº82vìX©T©’tìØÑQH\ä3[(F$"þ°D=‚öÍ›7›¢jÕªÙ[R¯^½À¹žäªy‡¥ °ûí7™1c†pOœ8Q–,Y"o½õVŽFqã“vöS´Ë—/ÜcX)ïP·*1%nhß¾½Q,+:Ö×âå‰ô®#Vj×®m>f>hÐ )W®œ±$¯½öš”.]:–æZ'¨rd¬hUÖ=zÈÓO?-ݺu3Õq«Ú´icÎoºé&éÓ§O øNJJŠÖeà>uùC >üðCéСƒ æq½ˆ;¼–$ÐHOr…€þúHø.\(U«VÍÖ÷9øöàªU«¤nݺBÐí%v­P"¬HNˆw3gΔ ˜xÅÝ6–¾}ûš€w.Vâû¼[±nZ¬íŠR=µù0Ûì"]yå•a{>õÔSÖÇZˆRõïßß(ÝOnòâ‹/š²XûÐz±!ñÅÖNk #FŒ÷¥ <øàƒ2|øpéÞ½»tîܹ9*œC«åHÀyåǸqãóÄbY-GbÍ—rGT9âv´¡vo.œ¿rí¹ýz_ݪf†’oÛ¶-†š¹«òÝ‹;äüö'Èñ•òZÜÏæŽÙ"Ð:ÿg¡€ÈGËùËOr&É JËR»¤\sµ ù‰u¬}ë{ŽX‘Êçzk§ï’¯{­“²UJÊŸžŸÏ£i÷±  1G,(šΚ©;Ä}.»7«÷ÇaD"ªÑŠÃýô´ ù}±ûM>7(V# Ê‘ÏGê~ûÏûdï–ð?*hS,IÖNwc¥A@?xX °‹+ôÿÆÁ;U^vøäì¦ù»åàÞ )Q:Ù{KÏ *G@7D¥‹KK¹êYÓ?úO©rI©pÁñYšÞŸ©Ê‘‘ø\¨rÄçQNo|BHYÊK¿K¹s“so:9äžÄ9⹎˜ ¨r$ÈD)›ñG@•#þ˜ëˆ ‚€*G‚L”²T9⹎˜ ¨r$ÈD)›ñG@`!þ˜G1mCº”*W\J”Ñ~AŠã UŽ8‚­C%êV%Ö|)·qD@•#Ž`ëP‰…€*‡Ïç‹ÌP$šÉ Íš5KÈ&5xðàœ4/òmT9|.ä2'yN¨S§N&qg³fÍrҼȷQåHHMM5éÎþú믎7mÚ$óæÍ“Ý»|眾æ÷}[¶l)5jÔ0m233åÇ”iÓ¦ m¼ôûï¿Ëž={Lä:·®o{¯ÐÝï (ù7C­S¿~}¾.è¸ 3’%K:nâñ›ßÜi×®¹ç¦Cs’““gŸ}ÖÜ;ýôÓM9íºtéâìܹÓiÒ¤‰ã¦ovN:é$sìÕ«WàÉÝü€Ž«HŽ›cÐq]1çh}ò÷ËýJ~AàÓÿûÕIýrgvP=%%ÅY¿~½ãÆ Ž›ºÙq­„3tèP§xñâΔ)SœÃ‡;#GŽ4 ±xñbÓ‡››Ðqs ›óÇÜq3Ï:nªgs=zôhSwöìÙæå`,út-NÔ¾M£BþOÝ*ùiHúîЫºóÎ;¥aÆR­Z5yòÉ'åï¿ÿ–•+WÊøñãMºåÊ•+ ®yÏIÅ.«ì¤I“ä†n3Ï<Ó<ñ}÷Ýg²Ú´[ºõÖ[MnA’zf§oÛ¾°õËN 0£—^zi€Ëš5kšs×M’ 6‰uZµj¸ïZ“¯b³È°¢ÊᣩNÛè~Ÿã$ý>‡_¦D•Ã/3¡|ø¬Î«ïØS†‚C@•£à°×‘}Ž€*‡Ï'HÙ+8T9 {Ùç¨rø|‚”½‚C@•£à°×‘}Ž€*‡&hÊ}«å·¯þMjã#¶Š,+ª>šúHßçð‹EŠUŽ"5Ýú°ÙA@•#;hiÝ"…€*G‘šn}Øì  Ê‘´´n‘B@•£HM·>lvPåÈZZ·H! Y÷Ñt›ïsŸ£´æçðô¨røa”_" n•/§E™òª~˜åÁ—¨rørZ”)?  Êá‡YP|‰€*‡/§E™òª~˜åÁ—„üô¢E‹„ßfUŠ?öU—½%¶ËþâÇð">âgœ!Ï=÷\BÞsL˜0Aî¸ã¹êª«²TÔ E °"ÀO¤’ºÁû+ô\nPåÈ zÚ¶P# ÊQ¨§W.7¨rä=m[¨ˆ'ÊSùå—òóÏ?‹›J8_YÞ¿¿¼óÎ;²páB“̾N:rÉ%—H³fÍÄͺ{êÔ©2gΓoÏÍé-gŸ}¶IEf“U8p@úôé#·Ýv›ÉhøßÉÚµkåÍ7ßÌRì¦H–k®¹FêÖ­’¸&KÅ<¾ -[ûá~®»î:yþùç墋.2ü…«ﲌŒ !ßaÙ²es=tÂ[2­X±"×@Dë`ܸq‚à#ä;v4”^xáyå•WM9§ŒŒI¤2&¯ž›Ó[ºté"$²„Ü|áòÝwßɶmÛí¼'¤Qæ>šH‹ìæ 7H±Œ°Æ“Øâüå—_L²Í *d9¢ø)žÉ8åZ°`É® ι¥\[’/’öðܼs {ÖYg™ô¾¤ëå>«§›L^¶nÝjÇ«Õ ÂDþlhõêÕrèÐ!Ó‡7-ý¦¦¦JÕªUÅÍggRwU¬X1Ëó³bÚËÍg¬ {×Ô‡èsÏž=&÷öÆMŠbRˆÙUŸvðÊ5iż״%cë]wÝ%÷ÜsO`̤¤$“ó»sçβlÙ2“òá‡ò†["·w=äõ×_—Æ‹›ãÏÞ:ê‘>À‚—‡zH¦M›f,e¤OÆÊ$''%²©Ðà•ä™`³yóf9î¸ãÌ3ól,"(/¼àݸ­[·NÊ—/oÚÙrŽX-”;Vbå&û-Gæþ Ò¶Á3sÏ“ë^°¤kÖ¬1cŸvÚiY†Ažp°ÊHd†~x&˜Ì·È×»výû£x,J”[\²tãE®•ƒ êÔ©“1ùn"G3,ù¬²ŸBäŸ{ùå—eÀ€FI^zé%SÎ*Ù¦MyôÑG…6={ö”´´45tèP³r²:õêÕ˘K&µzõê‚€OŸ>ÝôcÿÑ/ÀÊÄêÑ¢E éÚµ«¤¤¤HïÞ½M&ÖU«V™{¬Ê¬ô‹p?õÔS&Ë*î‹÷š\{ÂÅXo×®\}õÕfx¬ <ã.y eC°±6óçÏÔ÷Ö‰vÎ3£äà‹¢Y–gá!ø_„‘‰±x‰‹{‡b‚©›ÓŠ›SÈkî&Ö4 òÕW_œÁ ¾øâ‹¥oß¾Å*oÞûXq批A(O8á8p ™ÿ÷Þ{O¾ùæSŽÀóLXVxD pBPpæ—åâ™;tè wß}·©‡¼1w¼´ƒg”ËZ¹re±²Õ¾}{yÿý÷C”Ýtã¿Ü321Ä_|ñ…Q ¡´„þùçÂd±šYÿž•–‰±ÖÈ{c"ñ¿[µjeú;v¬Y¡Qj&Á`…³+¥#å(IvÜÆ›7ožŒ9RÀªiÓ¦f,®kÕªeÜ,ð:õ<—XQYŒpQŒûï¿ß¸…( ŠN’M>2Af,ã»ï¾k¬3Ïfé?þ0)œIãìýc±&æ «N?X9ò¡Ã ±â“Ú™”ÏÄ)Œ žÌG“&MÌ‘zÜ'Í3ã1XfžÏ‹ò«¯¾jdŒÔÓŸ}ö™Ô«WOú÷ïoªÐÎÎ¥m“Ýcž)ÉÞ\pQ0¹´mݺµ1ÅÔÃD"!bêaª4K¬(L íÇZ;®Y¹, Á×(1y¾Y±ßqƒóxÀä§oܯé·ãqDy²K¸aL4‚‚»i’+'ö±Ç3nXîÝ»W¶oßže¬mX½™„••ØMÕl\A¬9m±ÔCQxʉy,á‡û³÷í‘9bd“‚~°`X!ÊY8 \)ÜLÜ]64X0ø¨¸Q×.³fÍ7õ³‘'\i<\åÅ‹Ûá¤eË–&{®›NÚXIøÏkʵ[eb¥‡ìʉpAV0X=˜(ÀÔböLÌ0„raþ±¼ÎgB¹g­“f #~¦—˜ÛåVø9çcF#|xVP¬qÖo¼aV6%ÄÇG”cIƒy W×–Ñ·9l™=‚ÖáªV­šq-ì={´ml\+0ÅUž‹{¡€^{KÄݺu³—(„µŸ1cF  &®(de„säü‰‰‚ ¾X€X,“ZY¢Œ¶–Xìp¯òšòL9¼ŒI\+L-¦wåòË/7Õ—,Y"mÛ¶5~?Öó)e„P€†ì c.‚þyWPìaÂ-Ñ üpÿަh¶ õXÅqðu!&šøŸ>q_FŒa\J«@Ô‡x*S¦Œ±œ¶ÏœQtwËŠ!ÜV8ƒûE‰Ql”Å`õ%ÀãPø´BŠõÆe—ìÜ<òÈ#Æ}¦=¼~ÿý÷M‘Xe„¾˜¯Òâ^Zìé;Ö¾¨›SÊ3·*V.»ì2c"Gm¬‡ n1ûøø¥¸FìF`J1©Xü`& _“Õ)ã¯Ú ·Áºv´a\úÁ¥càQ£F¦+bÜ&kž½×ø´˜~V^vu2¬q NÀŽõ`RYíX9Q`VÝ>øÀðC MySQL++ Reference Manual MySQL++: field_types.h Source File
MySQL++  3.3.0
field_types.h
Go to the documentation of this file.
1 
4 /***********************************************************************
5  Copyright (c) 1998 by Kevin Atkinson, (c) 1999, 2000 and 2001 by
6  MySQL AB, and (c) 2004-2007 by Educational Technology Resources, Inc.
7  Others may also hold copyrights on code in this file. See the CREDITS
8  file in the top directory of the distribution for details.
9 
10  This file is part of MySQL++.
11 
12  MySQL++ is free software; you can redistribute it and/or modify it
13  under the terms of the GNU Lesser General Public License as published
14  by the Free Software Foundation; either version 2.1 of the License, or
15  (at your option) any later version.
16 
17  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
18  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
20  License for more details.
21 
22  You should have received a copy of the GNU Lesser General Public
23  License along with MySQL++; if not, write to the Free Software
24  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
25  USA
26 ***********************************************************************/
27 
28 #ifndef MYSQLPP_FIELD_TYPES_H
29 #define MYSQLPP_FIELD_TYPES_H
30 
31 #include "type_info.h"
32 
33 #include <vector>
34 
35 namespace mysqlpp {
36 
37 #if !defined(DOXYGEN_IGNORE)
38 // Make Doxygen ignore this
39 class MYSQLPP_EXPORT ResultBase;
40 #endif
41 
43 class FieldTypes : public std::vector<mysql_type_info>
44 {
45 public:
47  FieldTypes() { }
48 
50  FieldTypes(const ResultBase* res)
51  {
52  init(res);
53  }
54 
56  FieldTypes(int i) :
57  std::vector<mysql_type_info>(i)
58  {
59  }
60 
63  {
64  init(res);
65  return *this;
66  }
67 
73  {
74  insert(begin(), i, mysql_type_info());
75  return *this;
76  }
77 
78 private:
79  void init(const ResultBase* res);
80 };
81 
82 } // end namespace mysqlpp
83 
84 #endif
A vector of SQL field types.
Definition: field_types.h:44
FieldTypes()
Default constructor.
Definition: field_types.h:47
FieldTypes(const ResultBase *res)
Create list of field types from a result set.
Definition: field_types.h:50
FieldTypes & operator=(const ResultBase *res)
Initialize field list based on a result set.
Definition: field_types.h:62
FieldTypes(int i)
Create fixed-size list of uninitialized field types.
Definition: field_types.h:56
Base class for StoreQueryResult and UseQueryResult.
Definition: result.h:111
SQL field type information.
Definition: type_info.h:159
Declares classes that provide an interface between the SQL and C++ type systems.
mysql++-3.3.0/doc/html/refman/inherit_graph_8.png000644 000765 000024 00000004477 14042362133 022366 0ustar00tangentstaff000000 000000 ‰PNG  IHDR$°¸i¾sRGB®ÎéùIDATxíZg¨I®g΢bÎ9‹9¡bÀ1Ç?¢ ‚`DQ fÅ€þEÌsÎ fÅ1çœC]}utßìììݾ½÷îÞ]0;ÝÕÕ=Ý5_WèÙ8"GN1h Y }\§Õ€BÌpà‰Yu®£Ã@ÌHáïyüøqš>}ºŸí꿸ºvíJmÛ¶ ÑB˜å¹wï­^½:DÈU~m lݺ•®\¹¦„0Ëc$V­ZeŠîþ‹k H‘"³~üH_¿~MôuÆëøªî%IÑñ•ÝËúÓòçÏŸùöíÛüýûw¾uëŸ?^åüøÁ.\à“'O²,ZywïÞå/^„Œ'çJüêÕ+Ë;uê øýû÷–‡Â»wïøÈ‘#üüùsþðáË‹ÒöQ£Fq¥J•´üæÍ~ýúµ>ïðáÃ,ÀR>~¾|ùÂ?ÖúåË—ùرcÊ3?þdyAŒyƒüuèdÚ´iF\ï;vìP]7Në³gÏÓt#áÁƒ«ŒX®^½zÈ8OŸ>åbÅŠq¹råô¹˜+ú®]»Æ=ÒuC'Ïž=cèÌK/_¾äû÷ï[ô]™Èa,¬íXc4T¸paž2eJ˜hJâ 9‘V…ÉÔ;”\·n]3mëµjÕÒZ»vm®_¿¾”–ƒ4kÖŒ²eËF²{Iv)Éî"1Í 8qtæÌÍÀIv¹ÊAQ‘HvuéÒEA 9œŽŠå²âcÇŽ¥´iÓ’¸ U¸XmCÏ6A«¿nðJ•*¥/›Àb\*T qQ øE‹™æÀ;Æan†&Mš¤ß“Ä–®§N:´fÍå­]»VŸ°B¯ˆ‹6€q’X}÷jûg̘‘/^¬²Ì –m!û¥HñûÅ‹׺˜l½‹yT4oÞ\ŽÅîÛ·O->XX®‘#GªZ¾|9+U³fM?Æ:X†§à?JÏž=»bb‚­tŽ9¨–CÁ/v²Y/Ž9@ȶŒ®”åO¤lëo§êQ>?DlÈ!,þ<„‡ŠdVzþúI²'MçFÉ¢,x¼r‹:Λp^bÈ€ÏëÂ’±™¦ÿÝç<ؼAzŒe±‘À“`³ì”¿$¸˜j¸¨™3g†É#Ø–³ 0>poÈ^¢!Œ)ØDP͘ÿ%ÄXøt’Øô‚ç> # cˆ•D#öÒcÉA„ã¶&û ’q¼xjÀoÆâóøû»úÿO‘ÜÖ?žmÅÛN< kÀ' ¿œ¤>5ž¤þ†’ðü"ÌøåÈi0ŸˆüÚ³<æŸo~AWÿu5€Qš·^-Ä!7ð2\Ùi Z „Yžh;:9§‡˜5àÀ³ê\G‡˜5ðö𡵿/IEND®B`‚mysql++-3.3.0/doc/html/refman/functions_h.html000644 000765 000024 00000006513 14042362133 022004 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
MySQL++  3.3.0
Here is a list of all documented class members with links to the class documentation for each member:

- h -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1StoreQueryResult__coll__graph.png000644 000765 000024 00000075301 14042362133 030433 0ustar00tangentstaff000000 000000 ‰PNG  IHDR)ž6ME:sRGB®Îé@IDATxìœÕõǽƒôbCDQ±`E¬`½ë_£±$j,‰%Öhc¬1±¡FÅØP{à ¨(‚¢¤÷ÎÒæ¾w¹ËÝÙy»ï-o—÷vÏù|fß¼)wîýÍÛ™û»¿sέ©‰™!`†€!`†€!`¹@ßš¹Q«…!`†€!`†€!`…I±_‚!`†€!`†€!`äFRrêvXe CÀ0 CÀ0 C ¶A`†@> ð¿ÿýOzöì™Uµ:æ0Ÿ~ú©ì½÷Þ9\C«š!`†˜’b¿CÀÈ  )ûÛß„\¶åù \yå•òÙgŸåÅïÝ*i†@uGÀHJuÿXû CÀ0 CÀ0 CÀHJŽÝ«Ž!`†€!`†€!PÝ0’RÝÖ~CÀ0 CÀ0 C ǰÀù»!VCÀÈ]FŽ)­[·–öíÛg¥’Ë—/—>úH~øáéСƒì»ï¾î3¿ùæiÛ¶mVêâÛÕ¨Q£Ä˜ý÷ß_6l˜NµÊ}Ìûï¿ïÚ_·nÝr—a'†€!`TLI©:÷ÒZbŒÀwÜ!|ðAV®2qâDéÑ£‡Ü}÷Ý2þ|yõÕWe¯½ö’çž{.eù“ßÿþ÷nÿ_|!“'ONyl&;|»~úé'9í´Ó\i§_–-[–IqiûŸÿüGxàwü믿.63CÀ0 CŒ¤ØïÀ0ª  pìÝwß]¶ß~{¹ï¾ûd»í¶“Î;;…à†np¤€ÓñÞi§dΜ9ò—¿üE6Þxc÷}Ĉýë_²é¦›ÊA$‡v˜|÷ÝwE8=úè£ræ™gºã·Øb yíµ×ܾÝvÛMþøÇ?:…ãÄO”¥K—ºí‡z¨Œ7®Øúµ×^+½zõ’ÁƒË7Þ(O?ý´<ùä“rî¹çJAA$•õÛßþVž}öYéÓ§üüóÏ2oÞ}ºL™2EvÙed‘qmÛm·•Í7ß\n½õVWÌ÷ßïÈxþùÏ–U«VÉ·ß~+Ç{¬rÈ!Ò®];WÔ#0èÝ»·¼ñÆ‚šC[¦N*|°l´ÑFràºëM˜0Á݃ãŽ;Îa{á…ºk >\PyÚ´iã®¶ÃÖ CÀ0ò#)ù}ÿ¬ö†€! @§Eâž{îqå+®¸Byä9þøã¥_¿~²ë®»ÊSO=åÎÀ½×":Õo¾ù¦Œ=Úÿûß®óqàØ‹/¾XÞyç"ÂÁÉtÖß~ûmyþùç]gþ¯ý«+“ÎxóæÍ¢3kÖ,W.;öÜsOÁ•*\ÿꫯr×þaþÔ„I“&¹Ž}¼¬Ûo¿]vØa!•.$ö¾÷Þ{Bg·±SO=U®»î:Wª$ Ò{ë­·Ü'DmРAò /¸cãêÅÌ™3åøCÑ!‚ÌAF®ºê*G|¨gÇŽÝwHD B8mÚ4·íð×—_~Ù]B·xñbw_.ºè"§Î ž@B¸Îï~÷;GJFåH ä7¶aÆ9,¹o6ð†¤P÷ÿþ÷¿îZ7ß|³»gC‡•O>ùDh³™!`†@Õ@ÀbRªÆ}´V†ÀZöÛo?7Yß/¿üâÔ:Ô ,»îºKP4Î8ã 7:úÚÊ‚R@ÇŸNðŸþô'סæ8E‚…s!Ø%—\âÔ‚sÎ9Ç‘®áñæ×Qâ2šàã2âeQf:uŠeB°Øya,̘1CjÔ¨!×\s#()¸†µhÑB˜Ìâ‚r.^íñõãÚo­Zµr«¿m¶ÙF7nìbhfÏžíˆÄÃ5lÍš5î’Ñ©S'2dˆSµ¶Þzk9æ˜cܱGq„¼ûî»®µjÕ*j/;ijǃÕÉ'ŸìÔ1Ô Æý =[n¹¥Üyç®"Ž13 CÀ¨˜’R5Â0Ö"@Ç«Y³¦ë”¯Ýì>êÕ«'Gy¤sÏ"A<wT Fú/¸àׯÕËçÅ %ÀÛŠ+œrÂw¿m .ô‡”ø¤ƒMG=4ÈŠË&›lâ6§SäÈ N‚ü@0V»vm7&*É{ìáÔ#â_êׯïö‡¸&DÍ/ž„P˜BbX纾|ÎÇM Å’…+—5ܼ0ßÖC¼øî !¾=´ƒö`áµ|{p1ÃU 5QÕ%3CÀ0 ª€‘”ªq­†€!&:·¸Apêß¿¿àJ5pà@§üæ7¿qÄ…2ñ$7"â1èDùå—ŽX§}øá‡²zõjgAŒ Z²dI±uÔ_|QpsÂ-ZäÔbRP°¤² ¡¡A¸¸&j1©²QçwÜQpiƒl ¢@ Bã;×öCPB6Ûl3§ptëÖÍ‘ÜåP„p¥ƒô ,ÇC¼ ʱ3ÇA’ /àÁ}ÀÂö þ·òÊ+¯¸}ÜâSRûX8õÆÇã¤:Þ¶†€!`äæî•?÷Êjjë` 2wî\kÂw:·ÄZW)!Ž…Qy:áÝŽâûrpÃ% ·'â(Øi¡3¢€2óøãs !Fƒ˜ ܨüú)§œâܦ 7 bXè¸ÿãÿpç$•E‡~üøñB\‰7âmpu"€7¯‡~Øï*ú¤n,tèqM㚨¸‡ ùcR÷îf¾€ûï¿ß¹ÀýøãŽx œ~úé®®´‡ºžtÒIÎÝêoû›sÑâ\H ÄaìØ±®LTÈÚ 'œàŽÝyçûw«ã‚íI>pË-·8òÃ}I2êK9.îê .xf†€!`U:jV|­j´ËZaU ›nºÉ‘>×ÇpE¢COLY¡0:Ùd›">%tí‚€4iÒÄŦ@DºwïîŽ÷èK/½ÔïI ñ"¨Ö‡îbî¤P! 5Ý×shª² *Ô7¬'Çã&1òua[’q.º¨eGÓ¦M“Mk$rÖrQPÀ±Ï>ûÌÅÇàÞ† œÇ €mñê‘¿(˜ Ú€Ci†:†[–AFq%ãÓÌ0 C §èkJJNß«œ!`dæaæ ;Êt¤½kVx=n ׉Èe¥KP8µ!éÚìK*+U§=Ýk†eRVªò¸~:Áˆ&ÊDeŠme -Õ$‘¸â¥cá}Lçx;Æ0 C ?0’’÷ÉjiY@÷-â2˜5>#ým¨P\vÙe‰§“‚7®$˜ÆÆl–•Æå*ô(?—L…^È 7 CÀ¨2I©2·Òbe!@¬E¦…2ÃÌT|O5ú_–ò¹éZ6ËJ÷šuñ/q +êZV®!`†@Õ@ÀHJÕ¸Ö CÀ0òeËVhÂÅ„ï—%ú}‘Æò,ÔIçk°…šuLdÀ€?*!¬›7í²Š†€!`d#)ÙÃÒJ2 D€ P={öf7Ë_Ú·¿T+) Y¹6ýqaæ±5H»¼.+~Œ_r~šõm9éÍ CÀ0r#)¹¬††€! @R,aþÿn¿ý-é×ïCMí\KïgᤓI­:ôФK>™„m3 C : °nت:´ÖÚh†€!°A¸êªÃäÍ7/Ó”Ë-Rºr5hPG¶Ý¶ƒ‘Ò z§ìↀ!`lXlž” ‹¿]Ý0 j‰ÀêÕkäÎ;ß–‡úHU\¿ÖÁP¯^mMãÜÒÅ©ì»ïÖêæ·[Ú·o¶î [3 CÀ¨Êô5’R•o¯µÍ0 Gàûï§ê¼5»`yê±-ɨQ}ݶÿýïGùè£1š:úGˆ±‰’•.ްì¹ç–:çJé=æxÓ­z†€!`©0’’Ûc†€!P¬ZµFî¸ã-yä‘ÿ©ª²JŽ=vg¹ÿþ3J\zäÈÉJX IËwßý*»íÖQzõÚV—md«­Ú–8Þ6†€!`ä-FRòöÖYÅ CÀ¨bŒ5E9äNUM®)“t,YR Ÿ~:V>þø'y÷Ýщƒî*´ìµWgÁeÌÌ0 C o0’’··Î*n†€!P„Àر3Yyï½ï•eï½·HË!‡tÕ <›g+†€!`y€‘”¼¸MVICÀ0 ´X´h¹‹cyûíïäƒ~ÎÛ*YÙ^;l]o“v9v !`†ÀCÀHʃÞ.l†€!PáElÈq2xðh]FI:µäˆ#v’ÃßQvÚiÓ ¿¾]À0 C \I)lv’!`†@^"€+Ø›oŽt q-–îÝ;I5ò²MViCÀ0ª FRªàMµ&†€!`¤À¸q3‹Ë”)óY9òÈ\Z+ CÀ0²…À”)óåõ׿‘×^ûF&Nœ­÷;ÊQGu“}öÙJLaÉÊVŽ!`¥"`$¥Txl§!`†@µF`êTË·Ž´üüólGVŽ9fgÃR­±Æ†€!P±I©X|­tCÀ0 ª‚.a/½ôµ¼òÊ×2oÞR9öØ]²㎛T•&Z; CÀÈŒ¤äʰz†€!`äÝô•–šL”¬ì"Ç·‹ÍÃ’?·Ðjj¹€‘”ܾ?V;CÀ0 \G`äÈÉòòË#aiÞ¼¡SXPY6Ù¤y®WÝêg†@®"`$%WïŒÕË0 C ÿ:t‚–¯]KÇŽ­Ö–¥eËÆù׫±!`#){»²!`dŠ@»vídÆŒ™žfÇ­¶ÚJ~úé§JAƒ™î?ùd¬#,ï¾;ÚÍn≻¹La Ô©”:ØE CÀÈcŒ¤äñͳªÕf͚ɤI“„O3C ¦OŸ.ݺu>+Û VÉ;^øR†/‡²½@XöÛok›å¾²o†]Ï0ò#)ùr§¬ž†€! ŽœI±_ByØ$%¬ïܹKœºaa–ûãßU ËîÒµk‡ð0[7 C º#`$¥ºÿ¬ý†@>!`JJ>ݭܪk®”• f9uåÅ¿”† ë9uå„v•víL) q²uCÀ¨–I©–·Ýmä)FRòôÆå@µs‘¤„° ö³#,¯½6B¶ß~GX˜å¾aúáa¶n†@uAÀHJu¹ÓÖNC * °¡IʲeËdøðáK°_Và|ï½÷dåÊ•®¬:ÙÆ¶Ûn+›o¾y©e?^&Ož,={ö”‚‚uxG&Nœ(½zõ’vØ¡Ôs+rç믿.Gy¤|õÕW2sæLw©:uêÈÞ{ï- 4Hyéo¾ùFÚ¶m+íÛ·OyL6vä:Iñm\¹rµ¼÷Þ÷JX†ËgŸ“ÜVN:iÙ‹_ñÙ§!`T ú֬ʹF†€!¦N*¿ÿýï³PRa§œrŠÎ­ñŠvF?“?üP:è ùÛßþ–²|ÈÈî»ï. ,êÒ£GyôÑGeñâÅrÿý÷;ò´dÉ’”çg²ã?ÿù<ðÀiŸròÉ'»co¸áWÚôöÛo;âôÚk¯¥,ç‹/¾p¤+Õ\p 6,Õî*·½NZšl½¯çh»{ëýÞBn¿ýMÙyç>rË-¯ “Hš†€!P0’RѨFì³Ï>rá…êDz›ÈùçŸ/tr©?묳\úâwÜQ–.]ê¹çž{䦛nrêÈþûï/mÚ´‘?ÿùÏnß”)SœZ±Å[ÈÙgŸíÊ aÜm·Ýäü£+ûÄOteBÎ<óLM7»“pžïœ“ööðÃw§?÷ÜsrÝu×u饗Jß¾}å¶Ûn“k®¹FÞxã ·ïûï¿—½öÚK6ÞxcW§U«V ¤†ºCþú׿ÊàHëýúõsÇ9Ò©3´½eË–ÝU>þøcWæž{î)óæÍsë‰_|Q&L˜ âÃt¶ôã\[Àî‡~k¯½Vz÷îíê“T—+V8¶馛Ê9çœ#«W¯.jÓñÇïÚtçw:<ÀƒôpèÈm…”qþùÏJ«V­ë1þ|GfP¸ 8UÕ:wn£¿§#åë¯oP×ûû³þ¦nRòü„’³1²fMTU›ní2 jŠ@íjÚnk¶!`TaPOp‹bDµc»í¶“.]º8©“N:É)t~Çç:átêõÇŠŽ2q!ï¾û®ë`£ˆÐfD?n—\r‰fbjç”HÊ–[né:û\‹åÊ+¯tóº@vúôéãNßwß}…ÅŠXªÇ¢–@Ž<ð@çêÔ©S'2dˆ#:Äy@"jÕªåȘ/'ü¤.¨Ĩ° Z”6 &í…`Lxˆ+ÄŠk à$Õ¥nݺ:Ê–«SëÖ­åñÇ/ªDòQ¯^=GFN8á§øÐîC=Ô‡ròÖ[oÃÊQGåîÛÖ[oí ä‡ë€Ä3©Ä¡¡U#v©gÏ.nY¼¸À¥3¾ë®·åòËÈÉ'ï®Ëú;l] °6†@GÀHJ¿ÁÖŸ_õ¶Ú†€!P.P ù‡˜ ª`¸4±ÄŽzA Ço~óùHÝ¥0ïæ¾PApŸ"Žr€ýïÿs„W(Ôˆ]vÙÅ©$Ÿ~ú©Ûÿ믿ÊèÑ£Ýzüq¸=¡l ÄHq™3gŽ»Úgœáê;fÌ·+T ¶£Vm‹º¡> ö= E†jCÀzY9IUðá >Cb“T.u/Èp}°NÇJ«G:çW‡cp»þú£Ô¬\rÉÁÎl—]XFg¹ŸP °6†@CÀ””*vC­9†€!\e0È †w=‰€z Ôâ3èœã*F`=îWÌ—ð—¿üÅuø‰MÁ݉ :à¸+Íž=[þõ¯¹ã‰Aµ€¯‚;1qC…!8|Ñ¢E.îÄgÌÂí âD0¿7Òýr}>—/_.ÄfGƒª@à:„W5ܼ~øawq.”‰»êG*£;ï¼³#<¨%ÄÀÄë¢-¨Dè{µÉã/—»ž={:Œißÿýßÿ•ª€ørP¼HF±KªÉ ü±ñkVÇï5kÖPò·[˜Ýž‰"¯¹æMW½R1ï®q>{h‚„Ô÷¾:bfm6 ÜD †Ž~­Óõs³ŽV+C`ƒ"@§“ î@ëkŒ"“™)4: Ä2Ðqó£ñá~ÖÉØÄè|. ?7ñ t”½KÿÖCã«_•,[ó¤üãÿpwˆŠ7æö ³ºfÑg;AòŽ0†‚ØÈ óox·°[n¹Å•»vï¾ä¯‘é'  ®]a`zX÷ÚDzP§ÐpYãwÖƒŸ¸Å Ïóë´v›’ª.¿üò‹kªúù²ü'ª¸fâ¢ÅÿŸw£KU_~ªÏ|™'%Uý×wû7ßL’gŸª.#¤{÷-Y9ä®zoÍ¡b}±µó C B°É+V+´J!€ï=®)<òÈz·  ÒÆ†A¾t¾ˆ C‰«N’±÷šßþö·Åv7lØÐu” §³Èˆ=å¡йćfU±l”‹/¾ØÅ’Ò0‚ð%‘HMˆ¯')d 3Ë-ª;Iñwcùò•êžø­<ýôn΂íO;mOéÔÉ‚í=Föi9€M昷Á*‘6ÉÞ~ûíEóOp"Y‚¦£ŽÚA&#\K}Fµ ^×oK§³¿¦Få8Üz|æ&â pùéÖ­›;ÇÏïÀ¹Œ¦{ì±.*>þ>[™¤Î;ïel¸îv¦øCÌ1w“!êý÷ßwAðþðtæ¦ cª‰7Ü{èlB2†Zæ|þ<”"FÙ™Ü%ìýÆ% E 7£ÐÈDEÇô /ȃ>讳¡Ö‰·`dŸÎ>ñ?(^´ LC+Maʦ*Ç5q¡ƒ€0ñ¡WàˆB)ä·…‹!uEôIÒUå ÞU¥"O{½ñÛByä>ƒKÒ õH³^íSå$ÒÓH;}‘NW´]žHcE"íˆEªÀm_Ÿ®¯)…S¡„-Òø€”ûã;tÄ;ÒQy·YDÚ鉒ò»ºòDÚ+ÚÏuUŠ´ÃU´Í¯¸û²ô×(úñÞ(Ù;І_EŸœEïíE__á+þ9óã(z^}û×(óÏ(úù©(šöN-)Ù~í”GÚA.~~ßhÇþóŸH J¤ŠJ¤ÿ‘và‹JP¥,Ræ¾k'>RÒèÖUÝŠÔÍ­ƒe‹-"UU"Mxi§3R¥#¢íÜíìGÜ%°‘ª n»ºì¹ß¿7%}®%B‘ª'îsŠ”ˆG}ûö””º{«#ç‘* î^ñÛsì»ï¾‹4.(b¿Ž¶»máÚ dÔm¢-Ú©ueè~¤“=ºöëH¾+‡ºð{P¥ÂµOGí#%ž‘&SpçÓ&%0÷צH‰‹Û§ÊI¤Ä×­ƒ“’"·Îµ©¦ÊJ¤÷H n¤ ŒÛ¦„>R¢“ˆ[ø›ç>ë€D¤ä?R¢âêþ]aüá~*ñ*vÆ}ŒÌú~I4ú¹YÑ࿌ž:xdôŸî_GïòU4uø¢bÇ–ö…ö«ŠèQÔµ•ÿ1 ŠTA‰ÀŠßϳ ðäžcç©[f¤*JÄ3EU,·è@„»?”«®~ÑÝwßí~_î¤ øG'ŠŒzè£h¿ýnzö¼-zôÑ£… —mÀÙ¥ C Š!p³Í8Ÿ“³crFº31Ô2T1ëwhL¢·pâ»ø>¾3ù"KÜpsÉ–1šލÇËõ N|{ªï>Ž…ýa ~ªãÃí7i$2Q]U 4&`ù,©©Ÿ]Y_ª±4»÷ u „,˜"²pŒ¥±3ÍtÌ6úÉz“ÎÅŽ-úÒz_–J0\Œˆ¥`ÁÍw&F®qa+˼"äU9T,Ü¿00>ãªûC…À—Ã6”;\º¸'¥ÍXÎRB‡¢…‹‘/‹k$nCñ™â¡ç<”5ÊÀåŠQ|\ûâåñF¨‹ ªJíEaô¿4£LÔ\ÊH´€Â€"ª™7ÊôF ¾¾p.¸BeÃZÖÞX& ž'ÓF,–i_.–“—Kíº5eͪHV¬Sqê6ª%õ6ª•Ñ%ýs̨7®p¿ïŸÕ>Mp± #Q&FlAàtl1âTèPÆÉ ²cÅÏ3¹V¥»|†È„Ç IG¦XVâáHMë¼×Ó%«²à;‘ñzñMqKR39&Óû/7éûmÓt"×;FȈG¦©º¥DhÙê¤ÃÜàÄàËÇK“öõ¤I‡ºÒX>›wj õš•®° ±áœA´…˜š0ÝuüÂþ<0“Ë‚ ¤¦OŸ>Ž›B¦??«D‚…\3bW.¸ —[† 'ýû¦ Ðëª`fflj/}7d6P”kí³ú†@å"PLI!$.>­dåVÅ®–ïà ‚« ŸfëÀŠy"c”„„ƒõúÚ™<ðƒ’»Àó‡×)žt4ÐA½V%Ïã-¡¤d G6T9®I4>!$ VÚ„îû“1()$KàsuA$ßœ%_+Y‰ÖD²r©2–Àšl\Wö»~sY4u…[O+pŸ­¶m(=®(éÖ¹`R,›³Ò‘šFmëh–‹ÂÂxŸò{ˆ¢h‘Ä€déçáVV\ȾGMa¾¢>ú¨DQÌÍ„Š“+6kÖ"yöÙ¡š `ˆªoMÕíoo%-Ý´mŠ“™!`©è[LII}œí1 r#°j‘æ#îU> µ›ˆ6¢d±kVˆÔ¬«Á#š}Ê÷Ù®ä±li¨#ñ;Þœ¼Ï¶fl¨rT*NPØfä*ÞjÕ«!;œÞF¶;¹µü0p¶|õÈT‰4.eå²B²ÒtãzÒaýÿLÓ–ÌX)_õ›êˆÌ²y+¥q›Bõe»[Ë*e(Z,éZÒïŒØo¸Ì%©p¹öjݺ‰¦L>HÓ¨)±PW°Ïu ôuwÛÝ©+:©ë¨™!` IIÅ6U0+ÕÕ¨ÎF|‘ ,~õ2‰ïºB¢ª8²=¡ä…#íøÔÕ8…¦] IêñõSŽúmE¶ÿ[Érl‹!`dZu5Ào[+Yi%ß¿0[¾~xš¬Òx•¶(ŒCK÷bvo,v/t©#ñô²XU˜:€Ÿd£Ì’‰Í/áNÖ²‹Æ¶¥ƒÂâ$]#×¶áÎvàÛ¹eÊ”y.nåØcïU÷µöN]aÆûZµÒ‹ʵ¶Y} C b0’R1¸Z©IÌùB羸Idê["ÿWP¨$WQÛ"õ?¯‘ÐiˆV‰|ui t¬ $_³Rä„9ɵi¨.-v^K:Ö“C.’¬N3‘í®NÚcÛ2D€Ñ㤸  ‹±Ã«)d2K²šu”¬œªdåÄV2ê™™Òõ”uŠEÒñ¥m«Y»†4ݤž[R·Õ-4¾¥~‘;Ù”/ºu¶os|IÍY£—Êê‘‹‹iÔf;Yªòs}ûÆ7—k®9BçY:L'1©ó^}¢sò¼àí‰]iÛ6=—¸\o§ÕÏ0Öœ#)#GŽtYc2 æL‚Ì(Ìî v‚“ÒÇúcHd†nfx¦34fÌ7q~ÄdTñ£þøÊúüñÇu”©–KqJêToøH™ÊÈÄCŠÕøÄk©ŽÏúvˆÁ䕜Ü(²d¢*D톚QJ'l¨Ýëck–+Ñ)™ Ø9ì¼éP«ÕzüÉK’¯ØT1¬¿oq÷*\¬’¬–޲nsyÒÛVÁO`fT•ÏL1ØÅ‹ÖmR+#w²y–ɘ—æ8ufÙ|u'k[ȿۅK›ôyš§V»vMcìæ–qãfj ý§rÀ·K[êD‘k²’ñ?yÚT«¶!`”œ#)d?!» ³Y¯¯‘O^'Ò’ã?Þ¥«©Oì.%d˜?¼3këd~.¯½N|&:ñ›è$€Ž°<ðÀröÙg«4}VxJ¹×u¢3ÑÉÓù(«f4'Í'ó#0OÁŸþô'—‹Ÿö‘T'tiâå0£ñàÁƒS’R[Þ{ï½òè£ÆO]¿ï«jÆ©~"ßß®“D¨j²rñºòjèH ioã$…sj7Öã$ÿaç‹,›Rœx t@:’Ô‘»­ $w©sut²náœë*²v 7­­/.±Ù6†€! l}TKaÁœ;ٴ€þúÍ”a=æ³['Ë‚IË¥ñÚìd.C™®·Ù¾¡@ÄÊ2¬VÚµKáŽZÖÉ빿†¾~ùe[yñÅ2þàõ,­úÎPô[Ì ª€@Bo°ôf 0@N;í4¡ƒÍÄRLôµÝvÛ ©%á¿á†DgÄu…É„ðLÞŤeò}ĈÂ`áýë_.ðüï‡v˜¾Öæ3Ï<ÓZÀdØn»íærË“—ž<ó>D‚üX¸NÊÆ¾}ûº…´Ž¤ü¤cÎd[LtFà!eB ƒ ’/¿üR¾ýö[—ú‘´Ìäº' $yë§Nꮡ³»ö3'‚ÎÞìrú?õÔSî: ³/K¯^½Ü±L˜¦³= êРÞù¢30»ë Î$Õ…ÉÜÆ´áÃ?teñEˆ6ÝrË-ò /ÈçŸ.(PÔ´—(@²Ã †üýXR= ƒÏ>û¬kó}ËŸ—õ"“ Fu–i·Ím(åO#Qò1üB‘õ‡zR îR!Aá\Þ‘ßÝ òá!"o©ËÔË:Z6 ®ÈKú¹ª0»Q‰K´ÙOd«?Šìúo­Ð{"Çé}8E•‘$‚ÂÉÏÙDSt¶ÞG'ÔXT¥Ä…lƒ!`¹‹€s'Û´žlܽIJ—²]Îm/;ÕNU–Fê&¶F&Y(Ãî"¸%Ù¯Ÿ/’ß,‘%3uàG Å’÷ï¦Ê^ÖhâÅ‹¿•yóÞ©ôkWv[³}=a™wĘ̀*dLRæÍ›çf¼¥ãÎ,ºW\q…<òÈ#N­èׯŸìºë®šjð)‡Ïûï¿/uëÖu.Wo¾ù¦ë,C<þýïëhžKu̱_|±s±ò„ƒ“yH¾ýöÛn,ÔfØÅ LŠÑP.¶çž{¹b…ë'NtõyòÉ'ÝuH Ig¨:òCþyf#ïÑ£‡›Ù—ú1+p˜M…ëúz@º±x÷ÝweèС™™;w®«7õ!Ý䨱cY•Ÿ~úÉ‘©?þØ6fkfr7Ä)©.Ô“ ¾˜¬ "º­dŠúCv -¼P }·aÆ9Œ¸f&NUÛo¿Ýåï'Ÿ?÷‘zó Ã­í’K.):oøðárÓMORŠmÕb–é9ã)tëJE8Ö¨ X£N"Û^¡7î1e•_¨"¢JËI^II¸HÇߊt8R¤ew‘Æz.™±Ì CÀ0J РUmGb¶9®¥ìvaéÕ·£ýØÖÒ¶[£DzaÆÈÅ2ô_Säåß‘G÷!ß^³Z×hžx¬m4 C ²(—»ñ äb'æãçŸvëŒÂã…ŠqÆg¸Q|ÔÔTrºÓf*\•pÅ¢ Ÿ$) ‘c»téâÎÅ] £óÌhÿ9çœãH ×çv ×Q^ýu7ÿ Š*³úr}TÔâMP{¸q©¢Ó¿zõj—Ó>éF@Ž ?—]v™ÛͬÁêšdd5¹æšk¤cÇŽN•˜¸[Å낲C} \à¼gâݳˆGaFcް¡Š0q0#1ª—·¤z@4I‹ )”TÔ+ÊÂ8¢¸óΪz”bÓ7•/kœ%»µ¦RÒ'zdMÕYGæV«»Wh‘~oÜQ¤*)f†€!`]Ïo/,Øš•‘ ÿp¤\™¬ºlЊÚÅ C Z!P.’‚€Ñ1ÆÝ)4:ù¸ AP ¨¸9áõôÓO»‘\‘è ‡9Þ9/naÚ!˜ßÎ6b.J3:Ḩa‘Í7ßܹFAD‡\a½{÷vÄÁ}Ñ?+”ÈÕ&›¨’Ĥ{÷î®m o¨«V­ò_Ý'ªJh~fffFâ -©.¨%` ÆÄÉ[ëÖ­å7Þð_Ý'eRŽŸ{!©NXV=ºvíê0¸yÆy¡¢Ä÷$[´¢žŒ•Cd·^§ênmãüoU{Wç_™û¥þ`ê*,«•¸,S"cf†€!S³B¢Â•\Ê©ZZe C : PØÎrKQ6n½õVçz´å–[:•¡ÿþ‚k.J¸¡ @\èÜ£à7\¨èl#ÂH?™¹0FúQ:è¨Ó©Æ( …!¾î6¬ýC^yêƒ+×Gá„«¯¾Ú¢ã†Ââ U„¸ê àz×_½›Mí2w#"±áXÜÀÒ1Ü«’ê‚ÊD?q:\çJ3ÔŽC9D^yåw8S§tŒ:`Ô—6H MùMO6ê¦Y°®9ø³Â÷^êš×õZÍ ¥¯ùÎå/ÚÎ4 CÀ¨Ò0@8jÔ¨¬´‘ä2¸Yû…>H| ±¼¢À`lhôküµøô®ßá1¶ne#U’BGƒ€ð8õTFÔÅq£¬@(ÔÆ… 7¥nݺ¹ {Òýú~Ž÷åðÂu‰Àúë®»Îm‡´BgW³K/Õù-Ô?üð¢ÀùpÝí þ ÂàJE¹¤…xâKB5ãñÇw.mÄy@pPR 5œG =õBUB¡ ð‚‚òòÒK/•PL¨çúö¿C]“êÂ|$! øžkP7®??h–[ýóŸÿì\ÇÈ\F< ý©Ì—¾Úq­óÎ;Ï©N²œïâ-Õ5ýþ2?k¨h×jo‘nÔ¹GTe"ÆÄÌ0 CÀH@€©ˆ³Ì†ÑW`ð÷ny÷Å=Ês-\Êé?`Ä‘ЇïvâUIlÃÀ®í%3CÀÈU ŠL;Þ‘º=}/üGÚ±4¦¢¨í¼G:*i wÑ6VÔ…ËmS7ªHÉCÑ>Í^©rÍž=;RE¡h»ºKEêæ©úR´m}V”¹k”VuÛâ¥-&Lˆ”8ùMîS Z±ï©¾¨‚Q¬mIuÑL`eÖ/^¾f9sÅ·§úžá}ÑQŸˆ{˜©ijäè™gžÉô4;Þ0 C ‡Ð ˜‘Þ•Z#ÜŠ4óctì±ÇF:0©÷D¤®Ü‘ºwGš'R"i¶È¢2tÐ2RU!ÒÁ¿hÛm·uç<ñÄn¿f²ŒÔ{!ÒìŸîM¡±è@[D]Ž9æ˜H=\¿BÔÜ9 {î¹®õnˆÔÃmW÷îHI[×AÅèùçŸ4û¥;×m\ûçôÓOÔ¥Ù}Ó,™‘’–H袇~ØmS²iüm¤îÕ‘ÆÑºm|*yrë´ïª«®Šxßržz‹D 6ŒÔ=ÒyÍðévÇñgÚ´i}uÉŽTeqõîСC¤I~"UaÜqI¸hm¤É|"ŽåÚôJ3Uˆ¢ž={–vˆí3ò ›Ë“R"½/ÁÚŒ,„q (Þ5+<ßÇP„ÛÂuŒ¸QVÏߟÉwÒ"—eIuàÔ ¸…ñ*ñ}áwâSB)©.a,Jxnië¨C™󡡤˜†€!`©(((p®ÛÌvôÑG»D6(dë$9}Ô ¼*PâIáçwÊI'äöiÇÝõÈ`Iü#ʽ’ç‘@’ß7@} © Þ $ØÑN¸\xá…ÎsB{[N© i×&¦vè…xULÉûÎ:nY>ó(Ê ó‡‘Â×,2mr }¼;n¾ùf7 Þ Ìµ†K:Þ>—oÒü{#}? mHìãû $»—u’ áe¸±‘ÕE‡$7´Ïcâ¢$È)2œ«„Ì•—ƒ™!P]È:IaÎbIîÎÄH7vØÃ í°þ x÷F¼׋{‚æã†¨7Hü¡›—ßgŸ†€!`†€!â8é<3§–ª®³OŒ#.PtÔÉÊ;—EÜH¢Ñ€dàúk”Ï– Iá8OÜpÍR5Åm&v’þ†K3¤Wg?/ƒcÊŒØNH¤£Áwˆñ$ÔÝÏ/Â`!.Z öAª # ’î”fõë×wS.Ð÷ðîÑÌÿ‘¢þÌkq#±ب׋¯;Ü»ã¸Ð·!v†DCà„Û7q¢FRJ» ¶¯ª!u’¼(™@õ»<À<4’Ì®ø}aÐY¼PkvØa§´$‘üD‰cáòõ×_»8•œÝ<+¾Ì²>yÐTÈ,íe]Øö†€!`9‚ñx@.dD•÷‰X¨"J Ä€N;ë|‚jäļ·‰û¤ ,iÐ0ì ’$eúôÛ\! (Ãgúd7ýÒöÓ§ ßâ3}KKœ*Ÿ b¢rSâçóE§xNQ‚ì0é4j1 8’ö$áBLXÒÇaaÒi”!3C :!ÕÀùÊŽ,Œšø9S‘ “ #Hɬ3R“ʘ³„cx0ë¼™`ÂD\Œ¤p d`‚â)âŨ¦p–ö_|Ñ$í±ÇnT„/®h”ôÌ( "}pEJX"%D.[ÈðáÃÝyŸ|òI¤ó˜¸u2èƒÖ­SW}°•­£=.³ˆ’—¥„ì]\KGâ#õ™4XÏ]‹ $ú@rYB4èÞeÿ(*$X¡®úÐrÙSh«ÊÇÁÞ ¿ZÙٽȆ¡q_ئJV¤rzD}øGúâpYØôqÿ0É‹T¹rÙÓ¸WJB#Mé ÆeGÓ’Ú 3š.Û£÷1)³Œº&f¡!Ó ×ÅÂu%Ý‘¾¬ÜöðsÈ(Gf7}A¹¬4K†9ŸI†ãu1R÷ÆHÝ]F%&EŨÿstÖYg¹ïœÇ1üƱþóŸ‘’éÄ6°Ÿß±¾øËÌtñ˜÷èŽ;îˆtT²pƒý5 ¼F€gYYÙ½Òm }»÷hx<Ï1ž³¡‘Å“gïÃðY¦ÊI´Ï>ûDª¶˲© C¤ƒE³Â²Ê³Îµùå—b§òìŒo#;—Ï;.üYídô:oIDAT’Îs~Œ*Cî4Úí³k&ᢃ—î½A†Ô²Ì²{•…íÏ3nÎy%™X;Àn$ƒI³iHËšöÐù¸zÿOFrðÿDžfäŸQ%6NvõÙAÂ:0‚á‚ÆÌàbƒ|4Í(sÅ0¢Â¨mÒ‹5 gwg´)L ^‡Ì à€K27¾­ÕÍP{ì17Ç£Z¨L¡áˆëŠ÷Ì0`ÅwMíæç4h;…OæëIRËp“"öŒ{Š’ØS Aš(">  (#¸þá¢Ào–Q@,\绦tÁŸ€2šˆáÀo1Ims¬ýCFFq+D Leü>“Ô¼¤6ð{¥\Úƒbȼ@´Ýgº!ï¿’¼b“¯šÒ— yÛnToxîáË{/4‚ÒãÞx,„±'áñ¬Gêßµá>Þ‹©Þ™áqe­smԋи^|× '~g½´6øcyøØ]Úíãp’p!εÈÇìø2ìÓ¨ä¼Ü'ܚȔB'ÛKüaat²ñ7'U<œŒÏ½E²È"Æ'’Á‘ª¢¹òpÝ{÷ÝwÝïâ“’,Ì,C&ÆËbËyÜc²ÐŸ¤*¥Û®³l7%–xêgêÔ®];÷›â·þFø}é(Ÿ›•àK&-Í|»q/7|­±xp ó™nÀ‹úòÿç3Ýà ÉB;½ÌÉ=\ñ;ç7Ïï”ïf†@uCw_(ÌÄ ñN̤ƒ‹SøÌÅUÌ?³CLy'òì3Ë3ê{¥øÀ[æ¥Ø†@Å#õì^Qe²u=ôÐCrÛm·¹‘gü2Q&ÂŽ’¿®÷ }úé§EݳĚûý|Òñã8b<ÈcN– Ìû²Î¨ 6r£Óé„,ùøRúYÚeñפcÚ³gO×áT ש~ä‡N¢ºÙ¸\é”Ï5ÕGÔ…Íù¯ÒñÃ|YîËÚ?ƒï-}øÅ2*žW¶|ºÈ¬OEf(Á›þ¾È¢ñêt§1§®Ò¯K']V›`d 5 2™êÅÇýÁحÿ¥À'#}`ŽêBG›rQ& êbàÊá·d~Ä,)Û Ç‡Û“Îgä"Œ? £d«CÙ Õ6ŽAÙ£m:K3È>ßøL{5ããmàšéfºáÿ'4¯ôQ7"ÈÙqÌ ê‚ñ‚93†ŠŠ é3J‘é‰A6»PêQwQaÉtE ZHYÔ]ÙeºâijŠï(šv£fr~>ƒ™ZÜ[‚÷N…e•õÌ ­®ë+W®–œ®ÁþSuPv’ÎÍò‹>—ghŒb¤ ×Jým¬q.=ª+<Öî<@ ¯z»<¨˜?… ¼âFp½7T†¤lXIçùsȤM¨6ŒjÓ„d Ê°0ÚíIÁn¸s!Ó2òî 2EÀ<Êž °-//ë’ñ‹Ètäxó’ EqƒÐ”–­,~üÿ¾@GÐg}&2í‘™ú¹j2†z*?-Òª­½oušfDPhÁ…ddãŽÂ…»J‰¢L§ÝÜ?"™8‹Ž;ß) åµ Uµ ò€+ ¿ T•$c„ãÂÌ2> ÷™,4üpCµƒô„ëIe†ÛPb Á$t ”‘Cï6±Ë.»D˜´–¨d¤)­ªy¤ÏöoA©¨{b~³\åâÏowC¼')(}ìûï¿_p·ã÷ Ùa0 ÛF™(Hf†@yàÿ é[ž²’Îaà u'²F2`NfˆÂòí·ßºÿ§#F¸ jTXþ—è\MyF‘±/i‚¿¤ëÚ6CÀ#0~+|}X òtÌZ Êx]í«DJt‹g¥lÒ¤¾b}›9Œ@^‘#KOü¶ø'AR gjÞÿ3<‘x~rŽKeÄ•„F‡ŽnRg7îâžç×óI995:Mä­ºJ@ô§µz©o‚®@Jý¶ëö¥¹Æ=‡° ŸŽ|ºnEþ7ƒªEö5²¬`(eqµŒNê J„3$·¾Ô-FCqïãÞòé³Ð0òIG¥³¯•®ƒä×}9©š_šÚ&;‚ßYsÊ*/®æqÝx ÖTAâP_ÂL7u"=o•©ô¡~1ø`£¨}ûL>M€‘îáå:ŽxÞ|âÊŸÌÐ+¸©B¸QQ!)¨¤®'-/ª)Ù¡Pb UáćåªT9N¢n#GŽLùL©¥Ï÷ ¶”Ml-›6Ô¥A¿d¤¼4å¾r\ÍNÉ&ûïZý ï…ZúîZ£ƒYË‹‡¸tîœù{8±0ÛhT5´óU$I>u€O³ì!ÀÈ/Á×ÙîË^­²_þ n/û6Ö˜\¼V.N}‘†›ˆ´í%Ò ƒ.í ?êz‹ÝUuQ’“¦1ŠŸ)‰#Vˆ¸F2½A*âjûˆË CÌý£ƒì eL¬ î- ¶yÂ*iþ¼ò|ÆÕ¶° \ÁÀ NŒÃcü:i‰ù-âvˆ%µÁ €t…A£tš .á6Ž/Ï=ð×Éô“{Á}2’’)rv¼')|V¤1A!ÿ'|’üe–bµP"àBÅ”ý¨Ã¸±¢Î‡1 Rûˆ;ƒ!(2¸yÏŠlCYe¿zÎOúx_--¶n -·n(-»4¶;5’Úõ×…¹Nÿz±´Û¥qYEÙþ @`Ê”ù:Ë+ú.­ƒJ«œ’¿L­Z5Ôƒ “•6ެ~¶Q²Ü"%9—aß F o^*) JÖ‹g6Ýêb¿Š’Œ£îVW¯·D¾¹VãO4Ùê%E^^E8´ÜMƒƒY6Uƒè5FeÖ'…ëÝiš0«îè¿ë©k4XH±,Z4kU£ŽEE¦³‚KubŒBKRËØBA‡#•17:©âXâǦó½4µ-ÝÎzij^Rñõ£¾¾Ž©HW¦$Ñ—gŸ†@UEÀ'VÁí˜ HJÜÍ’äÄV’]’¸K² ’MOSÞ:…˜AæÜ€ä\qÅn ‚„ñA‚la¸lî*™7~™Ì›°\?u™°Lv=¿½tؽI‰KùðVR³vÛ)ã§WçȘ—gKýfµå˜'Šg_,q‚m¨6Þx#ã=ÓÅ£\wÝ‹: 7IÙV»VÛ¶éïê7êr>ÓÅ©|ôÑ÷9gÎMêÓªˆ¸l½u;u)n£Kk}¯¥ö )V¸}1²„€‘”,iÅÄh˜¦®ÒeÖÇ…de®ªk´³pWCt­zˆlqfì¤R¾6Ú\d¡¦Ù=TUšk—™"}¨y}·(yâw¨"£×©×ZI.k?qy"΄´é„ƒ‹Ðˆ! Vh©²Ð„Çl¨u’BV8Tó’Ú°¡êg×5ª LÒGB\%?üp7i1j^íÄ[tã¸$ë¼X.Éê Š ñeLÛ§O—ý‘H ŸL|XQå³Û&Ë„Áó¤ù– ¤y§úÒ¢sÙòÐæNIº/q‚©ùªßT™2|‘t:¨¹pËÒºkñçcR9¶­bèÒ¥Æ2^$Æý¬ ª =GcS É ÊÉ^{uvKX ÈL!q¼ÌTwÄ‘ê¦<]cugiöÆ¦ê‚ØF—¶E$†õ–-ÓŸ†×²uC ,й{(ÜS³S™åE€@îÄŒNs¿ùV••™ª˜Ñ«û#"›ŸZÞË”}ÞOŽB³|–H.þ󰯕°´)yþw½Ej5©«ñDõ[~ÖÓÏfÛé±%G K`[* íî…ËYC·œõi7óðøQwFÛ‰}++™!Í<« ÐÆ]hâĉ.>‰ù e¯¿þºKªðÕW_¹x êAç['X-J ’T7’J 6ã6Y‘VYî^´aéÒ¥.I ƒÄÐá^JÜ&ì§>Ä¡„FŠpE<¡a÷2C6?°%ƒXÜHøšÌ_-3¾[" 'ÈÂ_—~N^!ÛŸÖF¶;YŸk1[¹tÔi¸ÎU+¶»Ì¯ß<6]ê7¯#Ó\j7(9e^ÈX/Þyg” ¬Ì»D<ì§IRŽL»<"&MšëÔ–±cgÖ1”b\ ?žÄl¾yKuO´÷gÚ Ûqú#)ñ½öÝÈ: õ;ò‘=Ó”g94ú2Vç5XªjIÁ]f¯ûH’nfA:Ét¾©F:®’d~#Êg¦‹_·_¿~®M~ÂÓø~:ødòKµ?~|ªï•IR|¨3÷‚ì{>–’.¡ªé/ë“ßßÄŸÔugîJY6o•ÔmTK6Råƒä>s$eŒ~n–Lþl¡4Û´ž4õË&õ¤ÙfšeÑOeÁ\¥÷C6üR³[î–5éYG\f­Ï˜±@]pk£SF´sŸžÄ4h~ìi•¾!Ö¸Ò0’R:¶ÏH‰À¤Jdf’™sõS>÷{I; ~»ok Nõí®ÛÜ™¦ŸºpžT?× TR·’‰¸:øÌÓ£G7a+þ¸YáãÿÔSO¹l†t¤ R¦ƒKRÁ?1¨çž{®sÓ ÁOšï‚Ž0fæ‘Áõ‘9g )Œ¦{%€d (Þ SÌDö&æYòóÝ@ˆˆi8ôÐCÝõ!0t™+Š#&„h„ÆÜ?D·´>úÈÍãsÝu×É'Ÿ|âÚEJmlšf“B…XPgÈDëQo?ßLâu!±õfÔþýû)” ¡`?x° H™#‰½ ƒ9@Î:ë,çªFznˆ u:t¨k+ÓnRöÒ±GQ‰×ƒûIÝ L‡œejkVE2þy2âÑé²dæ ‹Ç2-—ãã…m´ƒàô^˜-Kg­”¥³uÑÏ%³WÈv'¶–W”$-¶ª/ü} œÔi\¹ÿÓó'.—¯ž.S†-”ÝÎï@Ì ´¨W¯¶ºzè³vçbÇãÚ:yrS=º¹D´Ð ê&X»ðsÖ¬þ:ˆ±îùXìDûRåàýäUgkóUþ–[svÊ Ú 9E•”5Jhæk*g]ÜçÂe(©÷°§“f®Ôcø\¡ äå$ýŒ*Ͱ ÖH ‹ª<ÄàlZØÉŸ’oßáÇŠÌeLøÉ¼/¤‹&¥4îU¯½öšìºë®:¢7Ω R:ÓQ&.„Q}:ب¤Ž¥s·ø|>3‡ ×ba¢Pܰ ;}4ƒ\°xƒ@¡ÑqgþŽÅmЬN¤­6l˜›•¢ƒ»)kQ´ؾ<>QlP2ˆQaaÔÒ&Á¤½žAðÀ bÅ5H1T”%Hujݺµ#s¾"\ÓpAbBSˆ"Ší†aÌÄ™ BÇ}cRDHñ\|hkR=P|P˜<1ƒŒ~v–S¤F$+—èÿÑZ«±Rÿ}ôk4ùÀâi+ä§×æª ÖJY®®ÈrÅzÛË~½7óÅ}BŒp½j¿kciتŽ4l]GéR³N²/䤲¸ê§j0üg´qíS Wv}ìzù‰“có¬ ßÒ[R±ª¥_Øön`xß¡²IÙÀ7Â.o¤…@Mõ÷é–K;÷²ýunšt‰6Ûì·–Ð(©Y®nk$€Ô$‘HÒ‹J`j¯%3šÚº0×Í>êö·ÕËD~yVј#–:þS•ÆâGWÈwfúÆxØpj /N:Åt‚qA"áª*n_§ûÀæÐß?,˧iFA)Àü6ÖÙŽ‹RiY™ˆ×ðî^¸@=óÌ3šqg/£BÇœ… >¡,©©é´ŸvÚi\ÊĤk×®Žáæ ¢ÁÃ?4”oa¶;”‰`ú,WâeâuAáGŒ õ†k›w÷òÛ k¡›õ¡^¡ùzÄëÀ1à˜TÚ‘*=vX¶_ŸùÝ¡ÞS¾Xä6­^Q6’½jÈm¿Êªå«eù‚UR Ërí´·Þ®¡ôº¥£;/ü³Bç ‰tr¼æ[húñ]êHƒ:‚¬ .YIÖÒÍ/¢‰:rØÆ½5WZmÛ@ö»a³D´®ºUÍ0ª¦¤T‘iÍ0ÒF’Òéì´w.g(;¨4«´c·rí‚Ò“dYŸêq‹õø`©¥‰Öíq#ûÚû¬%5ô“E‰ $¨Ûmñ£×û;J#ÿ?w…©@1!¦w-bO>Rw©“O>Ù¹‡%]$œï‚cÈ’Hœ¸ÔÝQIˆS!^†¹.Pl qC•@…@Ù@‰9è ƒœ²€#’;v,:…4·¸?±’ãã>˜¨AƒB¶-T#êC\ Ù³P$ `Ä¡—CK3HAªºp.× †‡ÏØ$•‰‚‚ dŽ…ë+ƒrU–•VÚ”®ßü2y嬡*­¾5kÕ”ºMkJ›J=ï£þFµÜ'ªG’µØª°T%ÛîäÖ.cUj“µÅ0ò #)ùu¿¬¶†À†Ab㳘•UF÷ÇÊ:jÝ~ÊÝû™µ¤fIá䟜 0?ÚOçûáŽD9}Ô\¶èœã*F7îWÌ—‰ÏwA`8$w%¤™›†ã‰qAµ!îâùçŸwD„˜™¸¡Â0ÏŒäÄ@0Üž Nb{ƒLq}>É5þ|7I)ª1$tþqUÃÍëá‡ÕP *ÊÄ] õ#•Qçp¾¤ºà;L[P‰l÷j“Ç'^6.w$ cÚ¹)Mñå x/4zôèDLpÝóÇÆ¯ÿþÉâä‚ëΖŸßŸ'³~X*µëÕ”•ËÖ¨ˆ¨ñ_ñsïØs£j3×Ç*Å ž:˜Lñf†€!`lH,ñ†Dß®m!À¨9nC™Œž']µÎ;DÅÙ²è쇮YtÄÙN7„#Œ¡Hšï‚Œ]”»vï¾ä¯‘é'  ®]¡ŸnXŠ€e¡N¡á²F&¯°K–,q.nñcÃóü:äŒv›’ª.dÃ-.Uý|YþsΜ9®¥¬ÿ„€y7ºTõðǦúŒg÷Z½"’é#Ë//Ðe¾,›½Ê¹y­\ºZê6®%þ£“lÒCÝ«¸Í·L¦[¬s¨hb3C Ë 6›—~LJ–+ Åá*ŠšÍ M6Œgî¨Q£dâÄ”ðI 2Öç: ”¡¼S>.²  …®²ëSvx..¼dšôÆ;wMiXþØt>GŒá<p©NLjI!‘ î¾k­oM¿fŸ†€!`TH{KÆ.²d…F§9$(ì£s^Ú$ƒtÌ}ÜJXÊBH Â}™¬óÒ@•) "°ŸD:¨[¼¸ %›T/Ò4ƒ–ª.(N¥Õ/^.ØdBP8ßÖSÕƒ}™X­º5dãîMd¯+7‘S_ÛÞ-{_½©l¾_3!ƤQ›â„/“²óåØi_-–7þ8¶Z±|¹'VÏì#@òÒ±gÃèØ“í7Zâáî¸ã—²IŸ4Ùj&×e0…”ðdMdˆ„)¼³ˆ?̶‘á‘ ‘.–Ï?ÿ\p#æ3FÒ\›×—"º’ Y†€!`ä:¸.¡ŠøÎw:õe„‡Æ¡ñ€—'>áññuF°ˆ)ÅÏIõxŸÐÈê…ËYi³¹3ÊI¾wÕâ|”ÜÓ (dùŠAüÔ»ªYƒVµe«#[¸%[m#Vw¼ÐPqwKŠI «èõ“ ä­‹ÇÉ¡÷l)iÀ¿™!°¡ Î|Q¸Ê¢"wUk\sÍ5N!ÛbïÞ½]I«.$¹©P¯IÔÁ6:ÅŒÞ3è„»¨7²9öïßßúÌuÎÒ …û.iÛQž¯¿þz—7Y‰pSõëì纤hÇ ·U®:9£ˆµãXâŸ~úi«Ç|[¸Cl LLÊJ6Bbó˜4—kŸzê©îYÁ¹d8<ï¼ó|µÚÄ4¢Ò“Š—]ÛHCÊN* ‰sdÀ Â{BBÝ [<ç‰Åô†jM<%ﻤ2ÇŒãb QÐÐù­˜³‹ùÀ8žzCpx·ùl‹àâ8ùk–öiJJièØ>CÀ¨rÐi“‹²Éè}ÜÅ,I~çÏ’Ž1—­Ñ1Fà ^”çH/L\¾Ri‡!2¡ûA/#â`È6Æ ”u^Ðfé!àcŠÂ£éÑ Ø†‚òüq£å»·tjÒ†¬‹]Û€´{ÅòNB ‚²@<Û§Ÿ~ê:õË:sžyŒÖC*˜ó c2Üc=V˜ ÂÂH¾7TÈû!&!â‰õãyɹ¸V¡b`>Þ.\ßi§Ü Y"ûöíëÈÈ1Çã:ìT?wnnÌEݸ6.gï¼óŽ›ë ·*ÜÙOì#sd1€Á×Ì“7¢xžCj0”(÷Ù¤²ps㙃âÍ:iñ^¸WAYH³ÏÜWàžªLŽ r #Ô‡ë ú`¸‡ïÁ<.ñw¨;¡Œ?FRÊÈv†@ÕG€ â%áíòË/w£e¼L1‚T0ÅC—‡2“ ò²ÄxÁÏKƒ |”æî CO £|LâÈÈé¡‘Ê—Àp^LøLŽ¡Xðò‚TñBô/^Œò2£ÞèSG¿0ªE< /a|¨Q¨?åB^Bã%MyñßsÏ=n×)§œâ2 1ç £‡dCC)¢}¾. ¡áFþx’¡ <1^ö$ £Ú#<â¶%aävè:ð\ƒ‘Æ|4:ŒJ‚3÷œ=Æ((IÀ—ο3:0>»#Áü.x¹'ažÏïi}lÎËdøýSåˆ~[››×úiçfÈ£üݺu+šß‰užtny>2É+Jë¸2Ï _:ͨ¸KABx–†iØ}eùßD‘訙÷ÜsOWûŽ8â÷AÒÿ|$ƒ!uÂÂu¤@‚p…Ø:å†Á,ÜkQ¶iÏBTHuǺwïîž‘(1<{ù¿gЋ"ž<BãùÍÄj„»]ÌdRYDRp@ â=…ñéÓÇóEÅÛQbAý :1âŠУ“ø{ƒ €í ý“ýþð%…öÒq†œ0Ç 9¢®´‘ºò"çÅŠ*^Ô—NFF¾|ê†3÷•5 ÷tæRñelÈOpÄÇòˆR¸@¼¼¡¼áNg€öy—º$Ì8'~¾/Ç> ê€ê,¬£>ð,DñE‘„lðüðnQzâænxÎ~÷ÝwEŠƒAÏHTe ‚ÀQ¸Qè¯q-<û0¯*{bÉAŦ<ÈçCbx¶†Æ{Å„g?Ï}Ä8Å"Dù¨(à´“÷¤†Á)žÝ¸Q.–ª¬ðzºýöÛÏ=_!|©T Þ`“ªLÀD"“%-`ìëÄõK2ÚV«]ž“ìCÀ0òFãèãËÌK‚‡l’1²…ñ U¶¡hð¢€ðIÇ”ÿ“O>éFÒ™ˆñ¾ûîs×᥊1ºžd~´‹}¼dý‹ÑogjNiÆË 2“d´•8ïŸÍ¨—Š £a>ãVÒ(fX&/T^r¼ èhûô’a]©?×dŸ¿&p\ 8/ŽÑé§Ÿ^‘EÜ.p—ãeÈý‚LæºáÊåÝ(À1ìx|}øÍáHpýo¼áÜæPö’0#Î(~¾/§2?áõ²Ê¼®]+:¾eý¿&Ÿ™?[ýÿÏÜFQG¼JjBçOÜp™´–ï î`(Þ|9œZÉ3›ÿUÎÁH"B¬¿oŸ.U0æ™®ó#€wªÄi§æ\ψ½À-ÃàJåAz¨#æëÁw&fPƒç;.l d¡p0H…2!‚0ðÞ@©†´ðepŠÁ ,UY ~øëq\Ïž=¢‹j“ʨcð„Áª¤úûˆi¡>(ç`f Nqo|¼ ×àú!.þ=‘êúñíFRâˆØwCÀ¨òÜu×]îå‰ f—/=J×xøâ6Eà#/1¾3zÎ(q&¼lè\BȒˆªJ’±²ÀhW?ê–4£=£l¸8ðFr÷(©\¿öáf…Ë£p|÷.a0â\pU:Ì¥bnxû˜ ާ®´× ÚJ×5‚6„ÐôêÕ+£¤ ¶àçÍ Õ×ï^Z½raí‡t Àñv’’êG‡Šß ¿A”°T˜%›Î¶5«"3h¶0{|6ŒÑi:ƒž˜f£L+£|Ðie IY³&R7Òï´Cþ_Í€õG½oÅÕÕò]µbÎ"ðÜz¯d0Äâ–0[ Šn89-ƒüñ[Å ãyÇ‚rBšç?*‡'Ãÿ!û >± AùÞÂuž(› î㉭PÍéès ê2Ïu__&®Sê‚»-FY2qÑ6:õÜc\‚©XA [¥/ÿR¢{£[/^‚¸@ :j€&Ê®b¼8ÃŽ«/'i–z^n¼èIã%G1Ü ñ£,:þÄœørÜ è<“•…nŒÄù´ÃœË ——ăQ1ÿòñEÅ˧Ýd“Üx#˜¢ƒâc䟑DFqk`ŽõŽcäËÀ÷š$^x¡#*~ÄÔïÏõOH+±EtvìõSï8†l£Óî>)fê&O©lú׋哾“dëcZ¦:ĶWA-Z®±bCôÿçCíH®ÒÑîÕ2`À°¬“”%K ôÙ³TÕÎ%ú¬[ª.¤‹õû÷í~}Ò¤éêÆ”¬Tg?ÊŠ$9´¤‰4hRb’D´3I­IH ]†Óy~q|xޝ,õÛ"˜|’g…·TíKUçñnƒ´ñlÍÄ’Êô¤+,”pëImŒ“ôÝfœOBŶ†@N"ÀC)<‡¦ €<°xßâtÎg”×ïÏÌ9ŒŠQGF«ÂŽ%qÔ Wo©f©ç%ˆ«£uI/C~&ŸŒÌñ¢§7|†qWJçZ¬Î˜1ÃÊ!.… T^ð#‘샬A\B€TA`À?Ä2²aàˆ Ÿm¨Uà˜Éo)¬Sfìç 0 <Ô­ƒäGœL,/ûM•Ùß/•:Qåfû6+q|y7 rá®—ÔÁ+o™v^ù@I ;Ê?ÿ<[xàu5®¿»Zúì((*xÿý·Q5åü¢ïñ• –­%žd,YK@ëö¥ÅHH!1Y¬¿Ú:xÒH•‡FúÄ w…¸r*ŒBr/'Ÿ¾“!g}, 3Êã÷™tüÈæ¤8õd‡ÓÛJÏ›:J­º5Ö§vn ðé§c5éÇ` XþÅ©”«V1‡Fñ åÉ“çÈÍ7¿æÔ ¯pð á@iÖ¬.Œ†J:»OO26Ù¤…#"…Äc©S§VZè¬^=E·ëbCÒ:)á L EÄ;ä<_â…ã’¶±½*ÏÜ|4#)ùx׬Ά€!°ÁÀ剨‹L^p¨”‡–j–zT\ì´“m†T•aÝH]\šÔ¶×Ö˘ûÀü¤R¶®#ÿ÷êöR«~~2)‘½-Nb“Ú– ÛÈÞF°0ad0b} éú´«{÷»UM©¥u‚˜¤& .S·±ž·]KDÖ)( 5kæÇïe}°²sós÷ÊÏûfµ6ª%éîU-­F®Lw¯Š†5Ò>)Añ•­””×Ý —HboÈ€ÒÄAe’°"<¿´u’JØÅ3[†ÚÉà.›‚ŽI’póÍ7gëi—ƒ»× A£ä‡æhŒÚOÎU¥  ädŸM›6Ð9ŠÖ§}‘,HÊß0¶" EZUïò»¶‰}kVá¶ZÓ CÀ0 *ƒ@ÁBûá‰2à¨Q²j£ç¹gdù!Y ÉHÁ'Yˆ+`>":­â´°Ÿ~úÉ%„` d%"ےχ›$íHúÀGÄ>‘eŽ´°™†Èˆ‰ õ7³y“eéÙgŸuI"¸qS(6ø½›…¢I¦(2¬ÝtÓM®ÿ‡Ô×L@Ê|@q#õ,“Ÿ’pƒ8,Ÿ ¬{$Ç ;Yˆ¢$ƒ ÆLFŽéÈ q=ÔÙAá$ÃÈÔN9eg%ag+~·j6¹K5ÑJø¶tñ"×w* e.^\|óL¯³>ÇwÔÄ!>ÞÏ> ã ‡Ô8ÄãøÌÝk}þûì\CÀ¨Tð1Î×JÆ.–tlóÑæ[.£Ì”Ÿß›/{5“CîÞRê5K/& 2ÛK¢Rr£bà®q`²7Ô æ® ã~à 7¸,CÔ y¯²»Ež p å½ÿþû.ø™ÿ}THДÏ< ~VnæwàÜ!ÈŸd¬cž2©õë×OÎ:ë,G0¨—Ÿ_BA¶>’æ•,tqc^$&„È v™ø¨æQ6iÅÉ”y°ýðÃn‚SêÛg˜|€Œ‚¤œ…àil>Ø;~ýTß»ti§ä­œ{î~ŠóQ™¨iÁÇhêÚ‘Jbf¸mµkÛ¸t*ül{n"`î^¹y_¬V†€!`†€Lúd|zËd뤕ls|+©¿Ñ†[,ËÝ‹bT‚œQ2èä㢉ºê@F8R43—FçïIî^~îÜšPVP)H¡€x`Ë/¿Üe×C]ažÎ?~¼Ë(Ç5! œ‡ªBÔÈsA–ØF9‰sÏ=×ÍYŠJ dŠ6‘ òôØc¹öQ6íØç‡ÙÀÁâã?v™í˜£ƒAæ@Z´h‘›E<,Ÿ”ã¨2œ ɃœÅç¹g÷ ÷Å×W¬X­¤(÷Hm¼žö݈!`î^1@ì«!`†€!34ߢœúÆöÒíœv” ¤Áät´qsbnHoo¨+a–&:û© u…Iù˜“2!¸h¡@0‰! г÷à'5d8Ïĉóˆ#Á¨Šé îa(G}´‹1I"(îýÃü@(-Ô ×/æž`ž#Ÿaãü5p-#M9äÂÄ:n]¶¸áæ‚Km‚Ìx"?®<ß ”5;'0í/î‚ÕÁ0 C Ú"°º ’qoÍKl“MêJ<'öƒŒw¸>‘¹kæÌ™®OÃ4gRQÈz-ö¡J x`tøQ60/âçß´ ”‚€’k®Yo½õ–KÁûàƒÊõ×_ïÎçš'öûN?³`CBcNˆLûöí€\ïÉLxl¸ŽªB[˜Ò4fÌç†á(EÔ"ˆ¸ø9m|Y`qÕUW9Å…Ly´aèС~·}Õ §W[ȭᆀ!`†€ÈŒo–ȯΑŸ?˜'mwl,kž×° @´iÓÆu¶ùD™`OÜžÎ<óLG>öÙgôNÌ ôç:ê(×áÇý µá¥—^fÙ&n…8Œ2‰!`zÒ1ÓáïÔ©“ <Ø‘RaCHPIpû"†8‚ÓýÄ©‹qmoÄôîÝÛ] ‚Bl úçwž?¤Ä'12¸uA²úôéãÙ‰˜b„¡*y70âg¼›VXä‹öCL,VˆŒ­Ww,&¥ºÿ¬ý†€!`•Šq&Ÿßñ«ÔªWSºÝR:ÞB´Ìý1òbR<ˆÜŸ÷F†+Ÿô·/Öã“íùcËú¤¬… :K0{xM”” „N½ M¤t %%˜ýºÌS˜-5©£f´ PY'fzÊód'irϲ®gû Étæ}Ÿwý¼óËïù=£ë“€Ц€†{Íç®»–€$P¤>§fâ÷[IøŸŽPû*ªI@€G h¸—G=]Œ$  ä)ð¯Ä÷$P¿_PžÛ:n•ˆØ¨$û+o}BPƒû1*:n¢Ï€$à!îå!B—! H@¹ $6]´$P³gÏÆ²eË ò:ÖwDDD`âðøuþs$:Ù ùj5¹*JWýoFÅi3-J@€— (HñÒ§Ë–€ N ::DxxxÁTGú&={öàa¤ ûD#3Ó>´+Ãõa8ä+=) !ÝË»Þ@k%  HÀ«¤xõãÓÅK@(|Á‰ ûì]>Y>0µ%ö"ù [¦ýõçp/Þu³€«ô&…ïîH(ò RŠü?H@ð,³!ËÀŒ ‡y}ŒICbŒÍþJÃ{ûЯ„§©HŒµáÓÛtSDÏ÷R‹{Ö èj$  H໤|7¡  H@?BÀï'_”ùɼ\ß–”Å\ui$  x¹€‚/€º| H p\¸pmÛ¶EÉ’öqNßÙnܸwïÞ™£¢qãÆ([¶¬YfýÍóçÏÍç%J ]»vÙç}Š›7o:®Òg H@@ (H)PNL(¬Ó§Oǘ1c‚Ž;bÅŠ¨^½ºÉ~ÄÇǃ_ð/_¾lnÿêÕ«èÝ»7Þ¾}‹"((Ý»w7ÙôôtŒ5 UªTÁرcѬY³d&LÀ¸qãP³fM´jÕ =Â;wзo_téÒÁÁÁX¸paö>]»vÅãÇñðáCs VÇàÁƒÁ©|YÛÁ cÊ”)xýúµéîСƒ9§]nß¾=x½VãtÌK–,Á©S§0þ|Œ?ÞtñžçÌ™ƒ^½z÷ËlÊÌ™3±nÝ:ÓŸššjî…Ö¾}ûP·n]Ô©SÇKÜ€Ç1cjÕª¨I@€rP’›Žú$  ü!c²{÷îÅDZsçNpxTñâÅqøðaÔ«Wû÷ï7[óËÛ·o‡[Ý¿+VÄÌ>·oßÆÙ³gÍ:ö96ÌT\»vÍk×®ERR’9Çĉqþüylذqqqf·6mÚ À¼Ô¸j x(=xðÀt3ˆ1b„ j¶nÝj‚%WûqøÙ½{÷‘‘a‚ ¨¨(,^¼Ød|^¾|‰-Z`×®]f×sçΙ¡aåÊ•-^÷òåËÁ¬ï‘~tY³f1su>­“€$  X R, ½K@ÈC`È!hÚ´)š7oŽAƒ™šÖ­[#66ÖdLŽ9bŽÀ÷ víÚ&¸X½z5¦NŠÑ£GãÌ™3>|84h`²®NÉŒ 3-Ì~?~Ülj~Ç…ûõìÙ'Ož4ë-Z„Ê•+£jÕª92,ÎÇeýIéÒ¥Íjf8˜Ùéׯš4i‚¥K—:on–¹ bÅŠÁÇÇÇdxïVc¶èîÝ»&`âïÌ :ÔdmJ•*…'Ož^.6ÞOŸ>}¬Ýõ. H@øª€ ç¿J£ H@98T‰Í××>ëTùœ?"ÈŒFJJŠ JøÎ¬¿Øïرà êÔ©“©a‚ÅêlþþþæÝù³l6›Í ­âgkóz.çÕ^½z¾¬BwÒ6ÌìÆ +,, iii_æâÅ‹&ˆ±:XLïØÀ0Ø9zô(Ž;f²,¬sapóáó)ž çý¥Ï€$ GeR5ôYÀ7 0 éß¿?&Ožl²(\f͇jmÙ²óæÍ3_Ô»uë~ùgcVÅUãL_l‡kKØ8ìŠC¼øåŸµ/ÌÔ°ñsrr²9Uc:þøÃ}Xì ƒÇÆak»wï6ÇYŲ²²À!i¼ff}rkÌ(qkP˜ÑaÐÂë™4i¦M›c°¥& H@È€‚”ühi[ H@N Føbc‘< Ê™=` 7õÌVpv-ijž…ðœÞwÁ‚`@`5ë8,vçð®•+Wšabìg€Áì ÷°Î„ûVá<‡_YCÓ˜ñ©_¿¾©}Ù´i“éâ9XxϾ *˜ÌÏÆ­ÝLa>‡w1¨aÝ ¯ÙjÖõYË|çÐ3Ë[÷Ìl g*ã°´5j˜ ³Ll®ö7ú# H@pð±ÿùçÿNZ”€$PL0ÛÀ÷ïiœ®—Eã·nÝÊ> ³ \XHïø%u,üíÔsx˜Õ:wîlf²2 8•0gÇbæ…Ùo6õþý{s­ TòÓ ±Àžïj€$Pd"T“RdŸ½n\(HébúªU«r–uÌf87ÆsÚÞ¯µjÕª}ÑÅ–¯Õ±|±±›W°†Æ±ŽÆÍ—£ÓK@€— (Hñ²¦Ë•€ MySQL++ Reference Manual MySQL++: mysqlpp::SecureAuthOption Class Reference
MySQL++  3.3.0
mysqlpp::SecureAuthOption Class Reference

Enforce use of secure authentication, refusing connection if not available. More...

#include <options.h>

Inheritance diagram for mysqlpp::SecureAuthOption:
Collaboration diagram for mysqlpp::SecureAuthOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::DataOption< T >
typedef T ArgType
 Alias for template param.
 
- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 
- Protected Member Functions inherited from mysqlpp::DataOption< T >
 DataOption (const T &arg)
 Construct object.
 
- Protected Attributes inherited from mysqlpp::DataOption< T >
arg_
 The argument value.
 

Detailed Description

Enforce use of secure authentication, refusing connection if not available.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/inherit_graph_45.png000644 000765 000024 00000007456 14042362133 022447 0ustar00tangentstaff000000 000000 ‰PNG  IHDR‘1ÚÄKÍsRGB®ÎéèIDATxí¬Å€ˆ Å.Š 6삢ƨ(Q,`¨‰-X± ØhA,EIŒt¬°‹]AÁŠ *X°ƒçïìèŸ>bí¿kzêfXdóC‰"œt;üðãïý÷ßß)Ýà>øà¨K]Œ[mµÕÜwÜáæÍ›ç¶Þzk·îºëº ¸­¶Úʽ÷Þ{†«'Ím¸á†®aƆ¿Ï>û¸uÖYÇꮺê*צM{ïÑ£‡Ûe—]ÜFmäÖXc ÿŒ3ΰº‡~ؾ۵kÕûÅ_X½ÚêŸ{î¹jß»í¶›ëØ±£•ó£ŒìˆÞÞ~ûíN™Ûí»ï¾Öv½õÖs5rƒ 2Ü7ß|ÓÊ?üðCÇtœ2[ÔÏ^{í宼òJûV‰js‡>6ß|sm³À;ìàhø´×Ãì” ]‡lž7¶>ïºë.÷ì³ÏÁƒöàf±cÇZ_ ¸cË–D:% ,Z´Hn¹å;‘H(NçøñãM²¼ûî»rÊ)§È /¼„‡zH”1ä„Nn¸Aš7on’„v›m¶™·*={öe“t¨//QüØáSO†nRe̘1ÂßÔ©S#”-·ÜÒ$Ÿn¬Iµ+®¸Âê”å²Ë.ž@ø}Úi§É3Ï<IÌx@”Ñåä“O–»ï¾[è‹q‘‚ ÝÐj’Ô:Mùak¯½¶õƒDUÆ”“N:ItÓRZ®ºÿþûå‰'ž05‡ô¾øâ‹åºë®=ÄB€äÝf›m콜ŸŠ1‘JÙb‹-¤S§N6Œ=6Ì+ÇËñÇ/Êýòàƒ¢WO¸éçí·ß^^ýu2dˆ|ûí·ÆxC‡•7ÞxØçÜsÏ•-Zx½zõ*¸æÝwß݈s‚·ÝvÛ 6ƒ‡k®¹Æ6«eË–V¯’ǪøflOÔðæG½<òÈ#†‹Û¥KQ‰gƒy£¦¦M›&ï¼óŽüòË/¦Zý˜5=Q+¨pŒpÔ! yÄGD‡¦¦öIõ¬F¿ôÒKíP³î>úÈÊ’ðË)«©øµy¨(¶§ŠX{²€…1¡8 ß}÷̘1Ã6z˜ÍB’í¹çžÆ,Ø-ªn¨–ýöÛÏžüxi//„M7Ý4’|”o»í¶Q5¶ [p8;ì0›7RÆóŒŒAÛ¾}{Ùc=L’ÁYÁÛOÞ¾#7uôÑGÛßàÁƒEUºÙ0Yû ñT勚 f£ÂÐ>WTŒ‰8ùYFaF-jÿ؉¦ÝSO=%ýúõ3U…1Õ^ˆŒDo‚ËÆ‚Ðf“d!Ó…õ/½ôR•ºB}RŽJcŽ÷ÜsÍIí CgΨ!Rè’K.IìÆ&Ô<àÞaRàÖ[oµCÃÁ7Ýt“ì´ÓNVWìÏìÙ³¥U«VæÜ°æsÎ9ÇT­?”Åö—†ŸmçÓz(²®sç΢F±\}õÕB’w­µÖ²Øœ .¸Àì¨]wÝÕ¤–„&•8EØLxqj€ËwÞYpTˆ†Àãy•J#Ä:ý JñZŽ:ê(ë [‹ñ?þøãÄï®]»ŠëÒ¿9õÔSM-ƒˆÛd“MD m³n¼ñFkwŸ½dFÒ"y°¿ QøñT:U!‰ÝªÚsªšëü¼5NdkI¥¦ÓHtÁ??fb‡ZH˜dÖ¬Yæò‡8/rÌ%+¤1QÁûDÊ¥T®2ª ýÄ­Æ’âÅöÚSé”X/¤ìB7¾ áe-g¼pnØHü%ÎE!Hš7¶Æw 51:z›* içwN*6µVªªŒwX«LDügĈBlCµTÀ«"Ž"¶Þã‰×±yxxÞÀ××Õo¼Bþê2ÔªaÍIc3/¿üòÈ0-…8ÊyµTqNÆ#i¼™0áû?ðÀ-Cœª\À0'TÁ<ØÅB=ñžr kBµœ1*ѶV™78 ü•»‚ƒ„ =ôPÑTƒ¹Þ9Ï?ÿür»NmOþ‰ÄêôéÓ-À"ÃÈÜ, >Ì‹…8Yß dI¨fíoeáÕ*ùE¨)3gÎ4ÉÀ†ÔjüUsE‘¨FÜ`‚jêñYºƒxÈ„ ªà!&D:!¨X‚šÌ‰À#Œž°)ˆ^‡Àw’­AB™Æ©hÇ• ˜HOìØ0&T©÷鞤²5ø÷‡µÔ*Ä­ó•éyiï½÷6W^êH&ycÌ ‡Ä"n»¦ªL•Ä' DU)ÏÍI]ͦ;ߘ·¤ªÅÜf¦à{—|UYaƒ 6ØÀ©*47Þ÷Uè‰wÅÜñÕ€všæˆPq·)§O ÉJØ‚-å$¤•Q¬î¢‹.²Ä+t`~Ôk„Ùæºìžv…ÈÖÙ¿?ªÞÝÙgŸí”)Ãâ²ÞÓ¼³Zuñ=!4Èhnî“O>iñ MÀF ÔëNï»8 ÿ[,Góe¶ÙšÜŒpü‹æÓŒèdþɲk Ï\m_?lØ0ëC°Ž~Uõ>./16ìÚk¯µ˜Ê¸q㌱‰Õž‰4¨iLÄðY{M,[ß0ñ3âB*5qÈÖ«mè4õcm`"æqóÍ7ÛM‡þýûÛ7+‰‰4)ë!{"ö£ë'ü¹÷Þ{íÆýj ÉiBÚ©j QŠ~¯sLÄ&z ǵâZàM“¶¶1œfyþÄzüøSÕ”SCݵmÛÖ6Âi´×и2Â5 bÛÒ †»þúë¦'W$Â8 WCŠa"˜ýØc5†g@õ:-HJl†yÀDôÏ·æÔœæ †6L*ÝvÛm6G˜ˆ £‡o¾ùÆÚj>‘‰è˃ªr£ÿŽ?Uím}úص òįðRC dáÁ§¼]äËý³˜2ž*)#R@8"ÊØ©¹G?N1ÏZ7¬¹½Ç½#äºHrOZO¥¹Å0ÖYg•zíC†#çå7Ÿ `2‚pz9.Jjb`“Ÿ"g.8!¨ ?3½ãæÃª†Œ©¹î‚ž`Qµm÷¨Ÿ»MñXUü;l óšÈfRÕ.Í—‘#GÆ»,û»Ö™ˆ“éFj 1{ì19ñÄíê …ÁpÛ¹„”¡¸Â€D Zýõ—žd#Þ —ÃTUI“&MiÇ’¬\=!!Ë…1©¸Þ0cÌõží=ઇ Y_’$&©¬êI4‡'ÜC ‰Â ¤ ÒŠ+/xj¥zP…Èá˜$—YR‹p/”K€þöAˆ_ö{\?®LïL/uY2P™Ãô¾NÞ’ $ “ã’%:=ÉÓÀfÒKdQ_x`\ÁÅ`0@»uëÕ“ˆÄÛó€]„ÑË<0RéËÛDã”s­5ÞnÁ&¼!­ê¾C›Ï o”¾ð¾ôÖ€å÷ðY“Þ84{Îê¹2p5•hJ ûö<ñf±ôÊMX\Ö{šMTQ﬘d¡ŠÚ*÷ÓVˆgÀ!®žh3\1bqû“€±ðÆ4&S­šŒ6›ÎeŽ˜ˆ¦œJÆjmJ)À+ žÚŒ™¼gËzkJ “\­4¤1QU O@9@°,k²ûÔYAOpÁ4 ö*/ «ÐxÜâ/$Ši“–ÜŒ·Iû&pBxQ.,Ïò^S9)Ø™¥ßRq*ÊD«B²0P\ Ã{êÚZêr¹¢L”¶A«Bÿ0 ®‚O ×Åùý_¼³ºHˆ|N¥S g¢Òi—·ü—9å¬P6 ÚDñÈkÙ#å¬Òðÿ6.iÕ˜·6ÿï5&‘ª~—’à_'A‚RIyYNŒÈÿß •£¥P 7¬Sˆ“We£@ÎDÙè”c¥P g¢âäUÙ(ðn!ßF¸€OuIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1tiny__int.html000644 000765 000024 00000102250 14042362133 024570 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::tiny_int< VT > Class Template Reference
MySQL++  3.3.0
mysqlpp::tiny_int< VT > Class Template Reference

Class for holding an SQL TINYINT value. More...

#include <tiny_int.h>

Public Types

typedef tiny_int< VT > this_type
 alias for this object's type
 
typedef VT value_type
 alias for type of internal value
 

Public Member Functions

 tiny_int ()
 Default constructor. More...
 
 tiny_int (value_type v)
 Create object from any integral type that can be converted to a short int.
 
 operator bool () const
 Return truthiness of value.
 
 operator int () const
 Return value as an int.
 
 operator value_type () const
 Return raw data value with no size change.
 
this_typeoperator= (int v)
 Assign a new value to the object.
 
this_typeoperator+= (int v)
 Add another value to this object.
 
this_typeoperator-= (int v)
 Subtract another value to this object.
 
this_typeoperator*= (int v)
 Multiply this value by another object.
 
this_typeoperator/= (int v)
 Divide this value by another object.
 
this_typeoperator%= (int v)
 Divide this value by another object and store the remainder.
 
this_typeoperator&= (int v)
 Bitwise AND this value by another value.
 
this_typeoperator|= (int v)
 Bitwise OR this value by another value.
 
this_typeoperator^= (int v)
 Bitwise XOR this value by another value.
 
this_typeoperator<<= (int v)
 Shift this value left by v positions.
 
this_typeoperator>>= (int v)
 Shift this value right by v positions.
 
this_typeoperator++ ()
 Add one to this value and return that value.
 
this_typeoperator-- ()
 Subtract one from this value and return that value.
 
this_type operator++ (int)
 Add one to this value and return the previous value.
 
this_type operator-- (int)
 Subtract one from this value and return the previous value.
 
this_type operator- (const this_type &i) const
 Return this value minus i.
 
this_type operator+ (const this_type &i) const
 Return this value plus i.
 
this_type operator* (const this_type &i) const
 Return this value multiplied by i.
 
this_type operator/ (const this_type &i) const
 Return this value divided by i.
 
this_type operator% (const this_type &i) const
 Return the modulus of this value divided by i.
 
this_type operator| (const this_type &i) const
 Return this value bitwise OR'd by i.
 
this_type operator& (const this_type &i) const
 Return this value bitwise AND'd by i.
 
this_type operator^ (const this_type &i) const
 Return this value bitwise XOR'd by i.
 
this_type operator<< (const this_type &i) const
 Return this value bitwise shifted left by i.
 
this_type operator>> (const this_type &i) const
 Return this value bitwise shifted right by i.
 
bool operator== (const this_type &i) const
 Check for equality.
 
bool operator!= (const this_type &i) const
 Check for inequality.
 
bool operator< (const this_type &i) const
 Check that this object is less than another.
 
bool operator> (const this_type &i) const
 Check that this object is greater than another.
 
bool operator<= (const this_type &i) const
 Check this object is less than or equal to another.
 
bool operator>= (const this_type &i) const
 Check this object is greater than or equal to another.
 

Detailed Description

template<typename VT = signed char>
class mysqlpp::tiny_int< VT >

Class for holding an SQL TINYINT value.

This is required because the closest C++ type, char, doesn't have all the right semantics. For one, inserting a char into a stream won't give you a number. For another, if you don't specify signedness explicitly, C++ doesn't give a default, so it's signed on some platforms, unsigned on others.

The template parameter is intended to allow instantiating it as tiny_int<unsigned char> to hold TINYINT UNSIGNED values. There's nothing stopping you from using any other integer type if you want to be perverse, but please don't do that.

Several of the functions below accept an int argument, but internally we store the data as a char by default. Beware of integer overflows!

Constructor & Destructor Documentation

◆ tiny_int()

template<typename VT = signed char>
mysqlpp::tiny_int< VT >::tiny_int ( )
inline

Default constructor.

Value is uninitialized


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ObjectNotInitialized-members.html000644 000765 000024 00000014162 14042362133 030305 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::ObjectNotInitialized Member List

This is the complete list of members for mysqlpp::ObjectNotInitialized, including all inherited members.

Exception(const Exception &e) MAY_THROW()mysqlpp::Exceptioninline
Exception(const char *w="")mysqlpp::Exceptioninlineprotected
Exception(const std::string &w)mysqlpp::Exceptioninlineprotected
ObjectNotInitialized(const char *w="")mysqlpp::ObjectNotInitializedinlineexplicit
operator=(const Exception &rhs)mysqlpp::Exceptioninline
what() constmysqlpp::Exceptioninlinevirtual
what_mysqlpp::Exceptionprotected
~Exception()mysqlpp::Exceptioninline
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SslOption-members.html000644 000765 000024 00000013533 14042362133 026163 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::SslOption Member List

This is the complete list of members for mysqlpp::SslOption, including all inherited members.

err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
SslOption(const char *key=0, const char *cert=0, const char *ca=0, const char *capath=0, const char *cipher=0)mysqlpp::SslOptioninline
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BeecryptMutex-members.html000644 000765 000024 00000011607 14042362133 027031 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::BeecryptMutex Member List

This is the complete list of members for mysqlpp::BeecryptMutex, including all inherited members.

BeecryptMutex() MAY_THROW(MutexFailed)mysqlpp::BeecryptMutex
lock() MAY_THROW(MutexFailed)mysqlpp::BeecryptMutex
trylock() MAY_THROW(MutexFailed)mysqlpp::BeecryptMutex
unlock() MAY_THROW(MutexFailed)mysqlpp::BeecryptMutex
~BeecryptMutex()mysqlpp::BeecryptMutex
mysql++-3.3.0/doc/html/refman/nav_h.png000644 000765 000024 00000000142 14042362133 020370 0ustar00tangentstaff000000 000000 ‰PNG  IHDR ,é@)IDATxíÝA @BQ­³šÛ›Ð¢Žáà) )ëý éaÅèÜ¿Æo‡RlÐßIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ConnectionFailed.html000644 000765 000024 00000042031 14042362133 026000 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::ConnectionFailed Class Reference
MySQL++  3.3.0
mysqlpp::ConnectionFailed Class Reference

Exception thrown when there is a problem related to the database server connection. More...

#include <exceptions.h>

Inheritance diagram for mysqlpp::ConnectionFailed:
Collaboration diagram for mysqlpp::ConnectionFailed:

Public Member Functions

 ConnectionFailed (const char *w="", int e=0)
 Create exception object. More...
 
int errnum () const
 Return the error number corresponding to the error message returned by what(), if any. More...
 
- Public Member Functions inherited from mysqlpp::Exception
 Exception (const Exception &e) MAY_THROW()
 Create exception object as copy of another.
 
Exceptionoperator= (const Exception &rhs) throw ()
 Assign another exception object's contents to this one.
 
 ~Exception () throw ()
 Destroy exception object.
 
virtual const char * what () const throw ()
 Returns explanation of why exception was thrown.
 

Additional Inherited Members

- Protected Member Functions inherited from mysqlpp::Exception
 Exception (const char *w="") throw ()
 Create exception object.
 
 Exception (const std::string &w) throw ()
 Create exception object.
 
- Protected Attributes inherited from mysqlpp::Exception
std::string what_
 explanation of why exception was thrown
 

Detailed Description

Exception thrown when there is a problem related to the database server connection.

This is thrown not just on making the connection, but also on shutdown and when calling certain of Connection's methods that require a connection when there isn't one.

Constructor & Destructor Documentation

◆ ConnectionFailed()

mysqlpp::ConnectionFailed::ConnectionFailed ( const char *  w = "",
int  e = 0 
)
inlineexplicit

Create exception object.

Parameters
wexplanation for why the exception was thrown
ethe error number from the underlying database API

Member Function Documentation

◆ errnum()

int mysqlpp::ConnectionFailed::errnum ( ) const
inline

Return the error number corresponding to the error message returned by what(), if any.

If the error number is 0, it means that the error message doesn't come from the underlying database API, but rather from MySQL++ itself. This happens when an error condition is detected up at this higher level instead of letting the underlying database API do it.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ScopedConnection-members.html000644 000765 000024 00000012106 14042362133 027461 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::ScopedConnection Member List

This is the complete list of members for mysqlpp::ScopedConnection, including all inherited members.

operator void *() constmysqlpp::ScopedConnectioninline
operator*() constmysqlpp::ScopedConnectioninline
operator->() constmysqlpp::ScopedConnectioninline
ScopedConnection(ConnectionPool &pool, bool safe=false)mysqlpp::ScopedConnectionexplicit
~ScopedConnection()mysqlpp::ScopedConnection
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ScopedLock-members.html000644 000765 000024 00000010120 14042362133 026244 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::ScopedLock Member List

This is the complete list of members for mysqlpp::ScopedLock, including all inherited members.

ScopedLock(BeecryptMutex &mutex)mysqlpp::ScopedLockinlineexplicit
~ScopedLock()mysqlpp::ScopedLockinline
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ReconnectOption-members.html000644 000765 000024 00000015332 14042362133 027341 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::ReconnectOption Member List

This is the complete list of members for mysqlpp::ReconnectOption, including all inherited members.

arg_mysqlpp::DataOption< T >protected
ArgType typedefmysqlpp::DataOption< T >
DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1MultiStatementsOption__inherit__graph.png000644 000765 000024 00000013651 14042362133 032156 0ustar00tangentstaff000000 000000 ‰PNG  IHDRŠ“Q^7sRGB®ÎécIDATxí ¼USÆß†[*C™g•ÈPŠ*š ‘RI*2“Bò}B”¡$…JŸ4P„ ¡ˆÈ”"¡¢R„DJh¼·ìoýßî:í³ï>ÝsëÜkß{Öûû{ö^{íµ×~Ö³Þõ®µ÷=O1Ϙ8sä‚@ñ\Ž»ÃEÀÅ!)Q’‚ÉeÊw¢Ì™3GŠ+æ>ùˆÁ 'œïL.¢têÔIˆ™Ý'õ,]ºTV¯^]ø‰’ïwà.P ä»G)»pÉwQòâ¢q’Eã6¶?ýô“¬Y³FªU«¶ýŒIݸq£LŸ>],X x œrÊ)úÌéË–-“¿ÿþ[Ž=öØd²G&OZx”)S¦È#<’пÿþ{©W¯ž 8PÉ÷Ê+¯Hýúõe„ Ëÿâ‹/¤sçÎz|É’%òùçŸ'ÌÕ‘ Êøñãå’K.‘:uêh¯2dˆsÌ1R¥JùðÃåÎ;ï 6H5dÕªUróÍ7ËA¤ûLÃ1qÈ!‡Èi§&gu–|õÕWšÎŸ‘#GJÇŽ5¥J•äÕW_ÕcW]u•\qÅrØa‡IݺueÑ¢Eš~Ûm·ÉóÏ?¯ÛÍš5“Å‹K¯^½¤I“&2uêT¹ë®»dܸq2fÌéÚµ«lÚ´Ij×®-ݺu“ýöÛOZ·n-ëׯ—víÚɳÏ>+}úô‘•+W ^%++K®¼òJÙk¯½Ô»¼ÿþûzîÝ»Ëõ×_/•+W–£>:2¤ŠQþøã¡g4H{g=dĈrÁÈOûì3%¡&fÿiР0A€¹sçJ… âB êøÀHõêÕ¥gÏžòûï¿Ë?þ(o¿ý¶Ìš5K‡°¶mÛJïÞ½µ´ŸþYfΜ©Ç¹ïaÆù/õ¯mG‚(Ü}Æ À7n¬e·—/_.ôæï¾ûN/@OÅÛ{þQG%Ç—wÞyGËhÔ¨‘´lÙRŽ8âˆÀžþùRµjU-cíÚµÚ¸dêÒ¥‹’‚ÞLãbxêAÀ8@6oÞ¬¤ÐÄì?x7<Æn¸á-ëòË/ײöØcÉÈÈP¢eŸ¢é‡@wÜq‡z±_ýUãáð(mÚ´QRÙsþÍïÈ`°âŋ˞{î‡IéÒ¥¥E‹J’×^{M™Fûàƒ´÷^sÍ5¸ôT†kœ´òåËÇ’233µ×“`Óýi±Œ¾Ã?\Þzë-_ŠÃÞæàƒÖtYýõW\^»ƒ÷Ù{ï½í®ðŸþÑý]wÝU¿K–,©‹”±LÿâFdˆ’x‘~ýúéØOc½øâ‹2jÔ(uëÄx“3Ïê¾ÿþû«Çòç‰Òvä§Ç<' KÕÄØ©§ž*·Ür‹•ƒ¸†!¨fÍšXÚžI~[ÃÕ‘G©±±ˆMgÖòÒK/ Àz b®ÃPÒ¼ys™1c†’ˆi1ë‡@âþýûs%!A6ñÊSO=¥ÃC'A9„Àˆ¿&Mš$Õ 9 afëv¬@Óxq)?ÍÌ4<ó¬g§/a‚RÏÌ$<j¬,Ó=Ó³=HÆÒØ0§i'žx¢÷É'ŸÄŽõíÛ×3ñ€gJÏx‚Xº™!y&¸ôÌÐåÒÅÒ··af_zmCˆ¸lf¸ðÌðå—NZ°žd Ÿ¿.q'%±cžõxf¶–DÎËyB¯a‚é3kûî»o¬#Ï„-\ùÇþXfßSÒ0³1Fر`Ú.»ìzmòQ/¬DÁl˜ó…å‰BZ¡ k*Äûì³Ož0c*ì~nºé¦Ðó'Nœ(eË– =–×Ä_~ùEl¬’×s£œ¿P…ig^Ièvöa ˜¾¦Êróf©ºNA—Shf= Œ»^ qr?Û<×à-ÿBó)Yrw¯L™ª…¦¾`{üñÇçÞ;™£ç¸“Ö»wÜñ¢üï3ÌLßä\°KWpÜÐhù—^úܶ¥Ìû—#é½ëˆâkÿO?]*™™›ÍƒÄL=úCß·éˆâãÀøñŸ˜×¶.µýõOæU†µ¾£é½éˆ’Ýþ[¶üc:ÎÕ%x’X yùå­ï¸¤7E¶Þ½#J6 Þ¡YQÝF‰ ~>Ú–æ[>hÒ‰±c?6O‚3ã@X¶l•yç帴tÝqD1-¿qc–yÔ¿Àlů°pðüó³Ò•q÷íˆbàxë­yæí´­ï’øÑÙ´)˼ëú‰?)m· ųžünb‚ÙÝw/c.噀–'À[߃aèa:ôÐð'Îù]·¨”ïVfMK¬Y³Þ¼Êð£¶ÉüùËÍl³å?ÿ9W÷÷ܳ¬wܶ×+£Òp]çQ âåË—•Æ«*ö Aï¼3?¶_Ð Õë¹%ª-±z9¢„wTyCÍY<‘x<ôß#ì¿M¥õ®#JZ7ò7ïˆÀÊ =@²wQ¸ð—z ˜]G”œ˜¸”QB@qI9pDɉ‰K AÀ%—”G”œ˜¸”Q ¸éqì]G”.nzÄ%—Ž€ó(ḸÔŽ(@ˆQø8‹GÀ%˜H 9íwQÒžÉàˆÀÉM€dï:¢pqÓã Ž(းÔpœG à↞ Ù»Ž(\ÜÐÄ%—šÓƒ Ìø•iSHJ”ØÍüØß‘‘®#šŸ^/°vãB:ô ­ƒ´ˆ¹nd?›7ÿe~šëÛÈÖì«B{¨ ­@‰R7殕ZQR‹g‘-Í¥È6mjo,r¿f€v_Å1ÈDjÛƒâË/¿ÔßÏGS'¶3¶¨ƒ F™ªº¤â~òZFä< ª¤È¾!Àˆê€VÌ)/7‡¸$ÊZ©°•°5šA‘ÑÜa<˜ú”•-ÏÌz¶{9#Ãæ5nÜ8–Ç(ŠzFDR÷ø¤‡“QÃðš6mê5/M:t¨g´v<£(ê=ú裚־}{Ϩ•zæ¿þT̉ãFõÓ3J¤zܨzFyÔ3r¸ž‘•Õ4£Òå¥1ÏWzFÈ3„Õô‹/¾Ø3.ºmÿAo·ÝvS±&Ê¥ ÎiÕª•g$å<#c¦Ùe<£úå¥2ÏHÂ¨à“‘ÍõŒf¢7Ò2Ze_wÝužQ󌊙g”PíeB¿Í¬Ç3:E¡Çò+1rÆ#UÛ¡C•`»úê«U“˜t¤ÝpáŸ~ú©Ê°!u‹´ ¢O>ù¤ i{ß}÷©Lù1ägÑDÝÔ4¢~ø—Qô…­dˆBï…¼?x14 G-èï쬄- ©ÝÂ&a»Á­#IbÄ­Ï=÷\9ãŒ3䡇R]>df­FrИèÿ!y˜#D@~ö7ÞˆÝ#zʨl1¤í¾ûî*¬ýÃ?¨&2„A8’¸è·ß~ÓsɾôÒKµäpQ>MW Ûˆf#’DÁk Gƒ!Þȃ:z²_1ÌÊɦ«„­ÅïHÅV©W”C׬Y£òóxäf1†O‚|,C ¤Ž(‹Z;ûì³UÏïÖ[okȘ1cthbx{æ™gÔs1+1c»=%ÇwºJØúˆÜôï1}úôØÏcÑ㑬G•ónݺɽ÷Þ«jæS§NUéZüª”-ÄÁ TR2¸Äxäîûô飲¤#I A8ŸYÞ+h”òÎHØÚ2 „­­8ßù%‡•›Ì¬'ì¼`ÚâÅ‹uáOG¢Ö/uë?Æ63$òøÍ/_<æÏg·£"aûoÌz"çQü$N´wZn‹rfh¢½„ï¯hAl÷±YÞߤ—bèY²deA\¶P\Ãy”ìfB{ÆŒ…±F3±œLœ8;¶ŸîŽ(Ù xã/®à¶Ø~Ó¦ÍNOÐ×;Q²Á@WpíÚ>hÄÈÛn4/6ý—–®;Ž(¦åW¯^'sç.ËÁÌÌ-2aÂÌéé˜àˆbZýµ×æšÙNN9ÛÍ›·è4™x%ÝÍÅ0àÝwȆ Y£dd”4/:•Ðmb–?ÿÜ ?ü°*Ýy"NÎÖPÍãuë2• 3g.‘¡C§™—ºê~FFq)S¦TÚe[˜ŸÆP”(Qܼx½‹"P®\)]t³ûi KÜ­»¡'ó±QPçõGgñ8¢ÄãaÞâßú“ä´ßuDI{ $€#Jr8¥}.G”ˆOœ’z³ëˆÀ„Å5þÛÐY<Ž(ñx¸½8¢$Æ%Ç#àˆ‡ÛK€€#J`\r<Ž(ñx¸½8¢€qKø@²wQ¸¸%ü Ž(းÔpœG àâVf€dï:¢pq+³@QÂq©á8ÀÅ =@²wQ¸¸¡'ˆ#J8 .5çQÂqq©Q€¸%Hö®#J£qD Ä¥&@Àô ˜™ŸüÜ™ÛÈ×:+–á!i›ß׉zù1^°÷Ÿ‚ü=Š:uJ@+—œ V …ß\ŒâGÃm'DÀ%!4î€G?n;!‘#Š€T9·„5ÎÃ$áÐôº( "—ÈæÌ™#™™[ÃæAW0++Kw9†"(‹¥ƒEŽ(ãÇÓ=Þ™F@- å¯o¾ù&V Ú‚è~ôÑG±´à–`òäÉæW¬'éa£nªä1ZAÒµkWùöÛoR#65kÖ,Í3pà@€ –g÷ýåÙ´üüέ>y¹vܬ'™ÑldÙèYD&ú~4ÀìÙ³¥\¹rrá…ªê'*£TxܸqªCl¤h5:~'N4¿‘6A=ôPÕýCÝË ¢ JÃyXmúõë‹‘•ªU«ª²èqÇ'½zõRž={Ê7Þ(èòØmÊB”š:™X-šm+TpåŠ+T9:ÔÁ ¤ù¸¿áÇë6‡K–,Ñ{äÞ¹FçÎõ"™CÝE2¤ê8ë sÇ¿§¢üU³f͸ò¨ªcx¶† ªb*Ûm–-[V-Z$çwž*¤¢rÚ®];-‡íàyFWq‡¸«W¯ÖY+×õ×Y<êäÇ_o É?yö(ȱÑ­æ·íüqéÑ£‡*…¢Š‚( €¡ˆŽ€#CŽ5J5¶±ùÅÅ¿åé§Ÿ–Þ½{«|,½µrkÜ0Ã†Ñ VÁì#Fè!ˆƒ@$û4.Ãft†•0ÁmÈe4Šõ7ø!ÜÂ… ¥zõêz:„\ƒèFWY·ùc4”=Bt k×®-K—.5¿Ì´EÎ9çahB’y]ˆ†Ô\Ó¦MõÞ‘ÈÅ»ûî»cR»È×ùË6l˜ÝeéÛ·¯v:CeשSG.»ì2½Gêot‘ÍO™>«å†– …äC´“¼þú„ᯅåáOž‰BÙôdÀ¦—ðm·W­Z¥7¹|ùrY¹r¥ªQ£FÚÙ‡Txˆ‰ªU«¦eœ|òÉqj\¶þÈÔ’Ÿ2ŒL[,®hݺµª•Ò›! ÆÚUñòoW¨PAõ¼š‚I#$óOèä1×J>³ød«$FÜZ=aÇŽ•dAËR¥J©È%$¦×¡nášx lyŽûGQ ­B¼Ë¼yóôäiÑ¢…âXºtiõ*léH‰ÎƒPxMÖ?æõ×¥³ þ±Jrc‡ˆBoÃ-a¿QÁzõê c:™8£<®®ýá‡ÖŠ[‘HÎ÷7†-Ï/-Kǃ`6´õë×Ûì ¿©n5S¶ÃŒ^™ŒáÂñ"íåþýûÇâ{>bØF…]&è `â7XC"†R: Æ0‡ü®%*ÙÚö΃`çš…T{Š~‡á—!‰"JnåÒÄ$ôfÆs\?c81àÒ+êÖ­«=ŽÞÅØLL4dfùeGzÆ{æ<¼IÅŠ5Þ‹×ÁüÛìã™ A-ʤֈ¥¸.e[… ê7!“ŽÑФY#ÿܹs¥råÊWÑÐÂ6ÇQ\ÅSÖªUKc†@äær³9ë…áŸÛµ‚Ç·Ñ5xdöyDAnézŒÆal¥1häaªJ•*‚ ·nY3›?¶Üe‡tBLD:€?öØcJ <³ŒïÁƒk™v›ü|rãzxB¥¡ˆ§Ú´i£CŸmLÊã<êÇ ¨F$©³@ôöíÛ«l.DîÞ½»ƒÈýúõ“!C†¨t.³#zx¥J•4hgˆ¶åq_t C¼f‰Œú`açA¿Ù¼¶>C‡Í¿?2Ûq?JʼnàwöY=¨mÛ¶2räHõ*T@ ªð0~WÌ4·ÉŒ2”bŒû̪ˆGÈo]+â×S¦LÑøÀ?téI;ø‡aÒ…qÃ" î·µk×ê°¬é Ü/:˧Wƒ Ì_éx0ñ{%ÿu¶órž¿>aø‡•Og&ÖᬥԣP(³’{î¹Gš7o# éAÏ ßö,ì8=&Ø@Û+#·c‰HÂy yal¬ä?nÓ¸_[G¼˜õdþòHC<¯–—óüõ Ã?Ùk§Ü£0Œ0n—/_>Ù:h>˜×°=×N•ýÀ’FžD#$f`&@ôÏLÍz§DçØtVc™á…Ú6OQüó(Û¢°Ý1 æ•$\æ[’°A‚$!=/$am†Ù³ÈËJ- v ¯‰Ì¿zjWcåM§ô”=QÀôþûï×E¨ Ī5zôh]Ï0£Ì ž â°ÂܤI“¸ÕSÒ‰ˆ5R™} ²Œçd—ø‰5VWYð*ª–r ˜¾òñO‡©C«¬L¥YŽoÙ²¥>bà1Á¦õԮƲ’ÌB †Ä3¬@C<SoV`Y.·Sæ¨`ÊzY¢0ÎbÁ§À,†ÙÀ’@’…®Š+êr:1 ñ Cž?.a½†¥qò_f–Ög̘¡e³8Ö¬Y3]™fæBTT­È…µ›Æ÷‹x¬©`vFÀ6CŒ]ùeßCë966bß’Ð_ù×aìùEå»È…†£·3l0£ÂXG °%ÁXbÇÃpœÕ\»¼i¬1çY Ý°éæ½böÓÍŠl0KC°ò,†bžwà1ºté¢Ã ÄÀã0+"^$,‘‡­Æ¶jÕJ㘱cÇêPÆ«afWDÃŽö´”¯£D<3b ;‡(¼72`À:ó\ÊšõÔ¦ñÍkÄ%6Æñ+JÛaë(E򣯮#ñÇ#6o¦·þG ¤…­ßNÀš®Vdc”Ü”gJ¬8K´% CP"/“té•+m‰’^Íœ‚»5sÿ˜™©_ÚÿÏ­Ôa`003Â/؈›õ¤€w®ˆ"Š€zŠhæú¶QRh-Ï¥ˆ6lªoëÿØYÁ§CµIEND®B`‚mysql++-3.3.0/doc/html/refman/functions_func_u.html000644 000765 000024 00000010567 14042362133 023040 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
MySQL++  3.3.0
 

- u -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1UseEmbeddedConnectionOption.html000644 000765 000024 00000022414 14042362133 030156 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::UseEmbeddedConnectionOption Class Reference
MySQL++  3.3.0
mysqlpp::UseEmbeddedConnectionOption Class Reference

Connect to embedded server in preference to remote server. More...

#include <options.h>

Inheritance diagram for mysqlpp::UseEmbeddedConnectionOption:
Collaboration diagram for mysqlpp::UseEmbeddedConnectionOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 

Detailed Description

Connect to embedded server in preference to remote server.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ReadDefaultFileOption__inherit__graph.png000644 000765 000024 00000014254 14042362133 031774 0ustar00tangentstaff000000 000000 ‰PNG  IHDRŠ“Q^7sRGB®ÎéfIDATxí ¼MÕÇ7ÏÐ$Ñ\”¤‘2 E)ç Ò@E%MRšû ”¤>2dè/’R’d(dŒJ©¨h…dêü×w½·¯óÎ=ï¹Çöú|î½ç¬}ÎÞû¬ýÛk¯½Ï¹çWÀ1Nœvc‚»IwÉÎj„˜,à€“™ÜAû(Ÿ}ö™)P €ûìCT®\yŸ#yŸeñâŦ}ûö†˜Ù}òß«V­2þùgòeŸ_+`¿X`Ÿ{”ýr®}n”}nâÔ( Pj\FîWñÓO?™ 6˜ *ä~`Œ©ÿþû¯™1c†ùòË/ÍqÇgj×®­¿±œþÃ?˜7šòåËÇrx“eòäÉæ¹çžË£<Ö¬YÓôíÛWÁ7aÂsÞyç™×_=×ü«W¯nvîÜi¾ûî;³hÑ¢\MÄÄ„ÊèÑ£MÛ¶m Ƥ׿ð æÌ3Ï4åÊ•3³gÏ6?ü°6 ܲe‹©X±¢Y·n¹ë®»ÌñǯûÌ®QºtisÑE™† š/¾øBõ| <Ø´k×N?餓Ì;ï¼£i·Ür‹¹ñÆ͉'žhÎ9çóÍ7ߨþ¾ûî3cÇŽÕíK.¹Ä¬\¹ÒtïÞÝ\xá…æƒ>0>ú¨5j”1b„騱£Ùºu«©V­š¹ùæ›ÍÑGm®¸â óÏ?ÿ˜N:™… š&Mš˜ßÿÝàU_|QëÊ5pÍÈwÞin¿ývS¶lYsÆg$ ¨(ëׯ7ôÌ~ýúiï¼ûî»Í AƒLóæÍÍË/¿lªV­jFŽ©†œ:uª)R¤ˆY¾|¹yï½÷̲eË´ñû÷ïoȇÆãØÎ;< eå—_~1ï¿ÿ¾3fŒéÓ§¹ÿþû5 ÐÓçÌ™£Ãˆõ>4C R£F sðÁ›O?ýTA¨Ê¬¯Zµj†#°dÉS¢D puìÝ»·)X° >|¸ùã?Ì?þhþþûo­ë+¯¼b¨{Ïž=ͦM›Ìš5k̼yó̇~¨×=`ÀQqÛN põuêÔ1ü‚ .ÐÆ²Ûk×®5ôæo¿ýVˆ §âmˆ=î¹çsúé§›šiÓ¦iuëÖ5M›65§œrJ”a›5kfN;í4̓†±½»C‡ z3‹à}¨=öX³cÇ…*³¾ðnÛ·oW£êÒ¥‹æuýõ×k^ÅŠÓGdeÊ”)z\[‹-´œI“&i2Ò²eK•='ž¿  ƒÐóJ–,™Í&E‹U· HÞ}÷]mdmÖ¬YÚ{q헞ʰc…ó‚rØa‡ETÛ¶mÓ^ÂêýºÈ¾“O>ÙÐÈ~ùøãÕÛ”*UJÕþ¼ða@8âˆHÒÿý§ DqÈ!‡¨¾P¡BºH9(Ž ”ÝÙ/Ò«W/ûi¬7ß|Ó 6Ì<õÔSGàM.½ôR½ž†øú믣²ýè£ BÌÀPR¥J=fúôéúûöÛo›Ö­[ëöÒ¥KÕ‹±(7oÞlðãÆ3¤!Ì`žyæQ222TG^®'NÌ6»ÁëXÁ“p@Â3Î;×Ô¯_ß&'ÜoÂO¹O„–ª‰=Œzï½÷jP 0ˆk‚*Uª¤0¥í™oó¡QN=õTˆE¬žYËøñãµá¬Ç †¡†’F™™3g*ˆ˜0¼q &A!A6ÃCÍСCUOœE­ZµÒ}‚u†Yê ØÚ´icŽ:ê(MóÙúùuqÙæÁ¥})C† ñä^Ï^!A©'3 ï×_ä%½Ö“žíI ѱ!§ºsÏ=דžI{â‰'¼=zxPzÒ8½Ì< =º<]DŸÛ†Ì¾´lD¶Ãd¸ðdøòÄ£eÓ‹7ÉV¦M¤.þk²úXeºîp ±¾ÇÇ%¼G¡÷pšéó 7Ü­×Ï„-\ùÇþ°Þwøá‡‡©1BÊ8 ´l£^þX ñ†ßáCrªKfjâ|'PpÓÄGydž,ÇTØß8]»v =ÿ7Þ0tPhZ^•?ÿü³±±J^ÏMäã“(¬›ä$ÝÎ>lä†âÅ‹ÛCöúwwÞl¯ ˆSI3뉓}\±Ö{ÝÄx¢¬Pò”Ò| :Ô;ðÀÓ“¦¾ØVfz1¶ÆžV€S-hܯ1>8^î }lV¬èeŠ;À™$Ënè @aüøO%°-"‹eŸRÒ{×Å×þ |/w€wÊÄmrGø_ŠÛt@ñaàÿ›'1lUͲekdõv“/5½7P²ÚçÎÿäù”Ïd >3dËÈ(hÞz+ù0ÚWpv@ɲìÌ™_ËŠjæ}%T[¶¸áÇ:”,kŒ9WnÎýë·<¶ð§~²)ÓtÇE~ëÖfêÔeQ`áà7FéÓQá€"­>eÊ2y:-únÆÖ­Û器¹éˆ‹¨k޶NÔ!©¯`*L0{è¡ÊÅzÐr83^Y»v½Y½z«Œcy‰Ÿà<$îJ5I \{íµF¸v”`’J˜Byé6-гeOicaž%¨„륗^RæQ?Ûi°,$aE ²ƒˆ2ådÏߎž?gBŒ$³ž\3ƒÔ‰c„!4rœ4Ž'Ä”žP´È»ëô„òÖëÖ­›'t°žPÕz¯½öš‘“VzÂæ ¥' [žpjÂæ á¤'¼:žÐÏzõêÕó„½ËVRO¦£‘rØxì±Ç¼ xJïòË/÷.¾øb%™¢LaKõ„QÃÞO@¢ù@Ö$l£„QÂÜ¡:a˱.Ù ìž'ìfíþߥWÆUb … ö„‹Ï?O¨iµÞ4Žp{äsõÕW{eʔц–îÝtÓMÚÒ»½W_}Õ^@Ox`Bdé ±µ¦”ÆåØ «—K*€8_¨Û¼·ÞzË“aÍjÍKø‘=áò`ÎOh켫®ºÊ[±b…',¤Ê<¨Âê’[$ P’fèyúé§åMHSu N‹OTÞ–TÜ€”HwmpÍâk†.¨i¡¸…ÍÒ'H±á6†›¿àÐ!TnªZøÅ«(oaãÆ•±KÖ‚à²%.Û.d™HX]ì9‰ü›@‘^iüqå –áD˜/V(㺠/Q¶ #pô³€YŠXØÒ¡{C c‚4Fs(p!§ö ìcñ“EåD}+BÁhIžÈ"auÑ„ÿJ  Èp¢³xiz<w⧉ÕÞdxÒˆÌpÈ Š7<ì¥6lЬ`$…ÁTâ݇Áý·ß~“þ¥·0”"þ:à•$¦1,½#cÇŽ5×èv²~%Pèå>ø ¹í¶ÛŒªÊ„.̜ڨ¸vXÖ%°Ô6ˆ…þ•cn Ç…’–¡Ìž÷ä“O*Á¥0¢Z­Z5óÀèpC /)“{Æ u(©\¹²4hP„ãŸþyC=ɦö0±å†¥%”.·@j¤ÅÌÚº4úE¼K¥­?=l[†çJ¼âIü’í°õë×kÀ ­‚ÙóÏ?߃Ê6HA+k-¡T¸+W®Ô2lyýM”`6î7óÚkð A!˜Í«à1dJl`e_°`=zt¶,ˆEüñˆ?‘ØÆÆ7VO0&äŸ ’t@É/££°zK`Ìp&k1»Íš…8â¤t”´ Mð §r¬ÂŒ)'/kÉz\R³ÉjÜTªwÜ= ³Y¢Ì:âmÜ"EŽ—Å»ªrOiB¼«)ßN³#Š8lÄ(¢2ˆÃ¥‡Ù¹óHYEýÔ¬]»A¦Îùǰ^ZòhÝÐãk«íÛwšI“>—ÕÙ _RÚo: ø 0}úWàf:9:[ŸiÜ{fýÆ5ê¹Ñ˜ù,É/¿l”ßßýÉi½íeÊ-£C]‚ûç↠f„ŽÖŒ7N]¶PÌ* [³fÍ´üì ô Ó¡€®b¥b#SG¨Ùàý›7/óŸÐ©X²%ÿ6G}00\¼í¬³Î2°²C*Ù«W/è¢kê3xð`m$ˆ±%¼>¬ȉÞí˜cŽÑaT€á$„zA×®];%·¤,8 ‡ªyÂb 8-™%$ob@bßN:i‡C`úô飸„È"¿„ÕÅŸËvžB¦ôdŒ]©R%ýµÛëÖ­3ô!®Ö  êÖ­«½œ ¨ð U¨PAóú5SªT©¨úÖ®]['¡g‹ > §DXû±qCÓ3© c6 ƒ­ ¯(¼Å °k:C.ÀŒ3FYÛ…2N=€l+õm›6m¢êéW@aóÇSQ&¼…“¬z¼G±bÅä O‡*x(¯(üÅŸ§ÝÆK‘?×`ÁŠ7Á¦|,+ª=Þþr­ÁºØ´Xó<ô±uu\4ì.—Mãð¡Ó€ô(hbûõëgªV­ª¬[~êÙ0º7?õ+½Ó2‡Z=:ÛûüuðoFz0B/¦¡ ˜îh „!ƒ€”¡†ëƒ`z[ïF§@m$Uø¾è |Ê”)£ùóKþœÓ²eKß‘¼²t½zJÀN'Ožœ-(G%ø K¶=Pûƒw{ך[]ìq¹ýî‘GÉ-CÒðÄ$Œƒ›€‹ñ•7‹7¡!èM¼JœžLÌ¡¸×ÞÛÇ}[>Az)çáM0B^xà¶*²¾ ÓÆ¨ŒÙ€ \yå•c04q>†îÑ£‡ÖaŽ¡ŠºzÊä]PhxNñ‚€žüñ$Âî®6 àõ ± ³$ØLž‰çÈ—øÎ66±L˜Xå°´0ÝîêvNP·G%˜‰Ý·= ÃâÊë‘*Uª˜h ‹±[·n­®²\¹r:nÃìçô³ùÐ;¯¹æõÄDè1&qŠ ïÖ­›–Á/ yÚmM|á˜Ö2|Ñ‹ ñ4—4,u‡arð"ÛsOŸ>]t<¨zMê°˰ŠÐÓ{÷î­³"ò‡ØÛ/ÅÐÜ2 °ðRÖx˜Ø6C bmBg!®&ñ^,Ây»«KLùˆA"݃ÞÎÔmoïõÐ;è©„6ºfܧ§àaü†Æˆ€„ `°#FŒÐÀŒåx ¤úõëk3ø‡®X.6ìÀHþ4ŠtŒé4 õ³iƔɫ¬Y³Fc¸›ƒ‚Mˆ¡È/Ýð(t&¶²Âh‡ß°ôœt¹Õ%x³94L¾z Ã]ÓÃ5j zŒK¯ Šm„ ÞÓKò$”A@¿Î_>³š¼ŠsÂÎÃ&ö:~ø 4'¾' á¼ÜêBzn’í…ÄùáQFàòÊæI/Ák`$ÄÎì”×^„¿‡[]n¿ÀÄt̬N¬wÊí<Òˆ˜á…Ú»;7ÙÓƒ%vã•cÔ¼‚„¬é%$ì HÐû{8û¹ d¬Á_^HY°Ëme”5WÖ%œ˜üzŨŒ¯ÌBºvíjjÕª©ÖðáÃu=Àâ¹+Ìô"»â Ó:zbâHf_“¬ã9™êß°F½ÊJUÉw’(†bñ3.¿0ô°Äͬ‰…¨¦M›êê)^„@²qãÆ¦AƒºTÏq–¬$ܲ`Èì†h€‚Çb:ÌŠ-ÓkÊKUIY ÐÀHpè`½Ã¥K—6¬ —‘µ˜5jhLBüÂçKX¯iÛ¶­áøö2fIÁëpK‚•iEâ T•” ËÙ4vpÑŠE<»6áŸ=0ÄØ•_c3„1]¶±û„þ ˜øÊ?ôç‘ Û) ÎÞ€dF…°ŽC`K<‚ð܆tVvYQFü+ŸLÅY›5k–¦ÍçŠÙO7É÷u”D2 +«£¬s¿ Ñ¡Cn‡Yñ a„•]žãð?$Ô¢E cFŽ©C+§abWOÃÒ’]—ïë(‰h<3b ;(ÌpxNƒ©³]A¦þÌ„‘=Ö^+›Ä%6ƱúTü ®£¤´G± H,âG¬ž_¦·|ü¶~CúÞ¬lúóOÆí”Qv×ÜSbmÄIlH[ 0¬ääeb3]z•¶@I¯f·«•¹DdêÇ#îãl ˆC6²Ízòw.‹µ€zR´aóû²PòÛ¢)šŸJŠ6l~_ÖÿJVqí'“IEND®B`‚mysql++-3.3.0/doc/html/refman/tcp__connection_8h_source.html000644 000765 000024 00000043304 14042362133 024607 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: tcp_connection.h Source File
MySQL++  3.3.0
tcp_connection.h
Go to the documentation of this file.
1 
4 /***********************************************************************
5  Copyright (c) 2007-2008 by Educational Technology Resources, Inc.
6  Others may also hold copyrights on code in this file. See the
7  CREDITS.txt file in the top directory of the distribution for details.
8 
9  This file is part of MySQL++.
10 
11  MySQL++ is free software; you can redistribute it and/or modify it
12  under the terms of the GNU Lesser General Public License as published
13  by the Free Software Foundation; either version 2.1 of the License, or
14  (at your option) any later version.
15 
16  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
19  License for more details.
20 
21  You should have received a copy of the GNU Lesser General Public
22  License along with MySQL++; if not, write to the Free Software
23  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
24  USA
25 ***********************************************************************/
26 
27 #if !defined(MYSQLPP_TCP_CONNECTION_H)
28 #define MYSQLPP_TCP_CONNECTION_H
29 
30 #include "connection.h"
31 
32 namespace mysqlpp {
33 
38 
39 class MYSQLPP_EXPORT TCPConnection : public Connection
40 {
41 public:
44  Connection()
45  {
46  }
47 
62  TCPConnection(const char* addr, const char* db = 0, const char* user = 0,
63  const char* password = 0) :
64  Connection()
65  {
66  connect(addr, db, user, password);
67  }
68 
73  TCPConnection(const TCPConnection& other) :
74  Connection(other)
75  {
76  }
77 
80 
89  bool connect(const char* addr = 0, const char* db = 0,
90  const char* user = 0, const char* password = 0);
91 
119  static bool parse_address(std::string& addr, unsigned int& port,
120  std::string& error);
121 
122 private:
126  TCPConnection(bool) { }
127  TCPConnection(const char*, const char*, const char*, const char*,
128  unsigned int) { }
129 
132  bool connect(const char*, const char*, const char*, const char*,
133  unsigned int) { return false; }
134 };
135 
136 
137 } // end namespace mysqlpp
138 
139 #endif // !defined(MYSQLPP_TCP_CONNECTION_H)
140 
Manages the connection to the database server.
Definition: connection.h:60
Specialization of Connection for TCP/IP.
Definition: tcp_connection.h:40
TCPConnection(const char *addr, const char *db=0, const char *user=0, const char *password=0)
Create object and connect to database server over TCP/IP in one step.
Definition: tcp_connection.h:62
TCPConnection()
Create object without connecting it to the MySQL server.
Definition: tcp_connection.h:43
~TCPConnection()
Destroy object.
Definition: tcp_connection.h:79
TCPConnection(const TCPConnection &other)
Establish a new connection using the same parameters as an existing connection.
Definition: tcp_connection.h:73
Declares the Connection class.
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Query_1_1RowCountInsertPolicy.html000644 000765 000024 00000022122 14042362133 030406 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::Query::RowCountInsertPolicy< AccessController > Class Template Reference
MySQL++  3.2.5
mysqlpp::Query::RowCountInsertPolicy< AccessController > Class Template Reference

An insert policy object that triggers a new INSERT statement after a given number of rows have been inserted. More...

#include <query.h>

Public Types

typedef AccessController access_controller
 Alias for our access controller type.
 

Public Member Functions

 RowCountInsertPolicy (unsigned int rows)
 Constructor.
 
 ~RowCountInsertPolicy ()
 Destructor.
 
template<class RowT >
bool can_add (int, const RowT &)
 Can we add another object to the query? More...
 

Detailed Description

template<class AccessController = Transaction>
class mysqlpp::Query::RowCountInsertPolicy< AccessController >

An insert policy object that triggers a new INSERT statement after a given number of rows have been inserted.

This policy is very lightweight, but is only reliable when you can predict the size of each INSERT in advance. The others do more processing to reduce the risk of unpredictable row sizes.

Member Function Documentation

◆ can_add()

template<class AccessController = Transaction>
template<class RowT >
bool mysqlpp::Query::RowCountInsertPolicy< AccessController >::can_add ( int  ,
const RowT &   
)
inline

Can we add another object to the query?

Return values
trueif the object is allowed to be added to the INSERT statement

The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1DBDriver-members.html000644 000765 000024 00000052463 14042362133 025677 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::DBDriver Member List

This is the complete list of members for mysqlpp::DBDriver, including all inherited members.

affected_rows()mysqlpp::DBDriverinline
client_version() constmysqlpp::DBDriverinline
connect(const MYSQL &mysql)mysqlpp::DBDriver
connect(const char *host, const char *socket_name, unsigned int port, const char *db, const char *user, const char *password)mysqlpp::DBDrivervirtual
connect_prepare()mysqlpp::DBDriverprotected
connected() constmysqlpp::DBDriverinline
copy(const DBDriver &other)mysqlpp::DBDriver
create_db(const char *db) constmysqlpp::DBDriver
data_seek(MYSQL_RES *res, ulonglong offset) constmysqlpp::DBDriverinline
DBDriver()mysqlpp::DBDriver
DBDriver(const DBDriver &other)mysqlpp::DBDriver
disconnect()mysqlpp::DBDriver
drop_db(const std::string &db) constmysqlpp::DBDriver
enable_ssl(const char *key=0, const char *cert=0, const char *ca=0, const char *capath=0, const char *cipher=0)mysqlpp::DBDriver
errnum()mysqlpp::DBDriverinline
error()mysqlpp::DBDriverinline
escape_string(char *to, const char *from, size_t length)mysqlpp::DBDriverinline
escape_string(std::string *ps, const char *original, size_t length)mysqlpp::DBDriver
escape_string_no_conn(char *to, const char *from, size_t length)mysqlpp::DBDriverinlinestatic
escape_string_no_conn(std::string *ps, const char *original=0, size_t length=0)mysqlpp::DBDriverstatic
execute(const char *qstr, size_t length)mysqlpp::DBDriverinline
fetch_field(MYSQL_RES *res, size_t i=UINT_MAX) constmysqlpp::DBDriverinline
fetch_lengths(MYSQL_RES *res) constmysqlpp::DBDriverinline
fetch_row(MYSQL_RES *res) constmysqlpp::DBDriverinline
field_seek(MYSQL_RES *res, size_t field) constmysqlpp::DBDriverinline
free_result(MYSQL_RES *res) constmysqlpp::DBDriverinline
get_options() constmysqlpp::DBDriverinline
insert_id()mysqlpp::DBDriverinline
ipc_info()mysqlpp::DBDriverinline
kill(unsigned long tid)mysqlpp::DBDriverinline
more_results()mysqlpp::DBDriverinline
next_result()mysqlpp::DBDriverinline
nr_code enum namemysqlpp::DBDriver
nr_error enum valuemysqlpp::DBDriver
nr_last_result enum valuemysqlpp::DBDriver
nr_more_results enum valuemysqlpp::DBDriver
nr_not_supported enum valuemysqlpp::DBDriver
num_fields(MYSQL_RES *res) constmysqlpp::DBDriverinline
num_rows(MYSQL_RES *res) constmysqlpp::DBDriverinline
ping()mysqlpp::DBDriverinline
protocol_version()mysqlpp::DBDriverinline
query_info()mysqlpp::DBDriver
refresh(unsigned options)mysqlpp::DBDriverinline
result_empty()mysqlpp::DBDriverinline
select_db(const char *db)mysqlpp::DBDriverinline
server_status()mysqlpp::DBDriverinline
server_version()mysqlpp::DBDriverinline
set_option(Option *o)mysqlpp::DBDriver
set_option(mysql_option moption, const void *arg=0)mysqlpp::DBDriverinline
set_option(unsigned int option, bool arg)mysqlpp::DBDriver
set_option_default(Option *o)mysqlpp::DBDriverinline
set_option_impl(Option *o)mysqlpp::DBDriverprotected
shutdown()mysqlpp::DBDriver
store_result()mysqlpp::DBDriverinline
thread_aware()mysqlpp::DBDriverstatic
thread_end()mysqlpp::DBDriverinlinestatic
thread_id()mysqlpp::DBDriverinline
thread_start()mysqlpp::DBDriverinlinestatic
use_result()mysqlpp::DBDriverinline
~DBDriver()mysqlpp::DBDrivervirtual
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SslOption.html000644 000765 000024 00000027020 14042362133 024527 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::SslOption Class Reference
MySQL++  3.3.0
mysqlpp::SslOption Class Reference

Specialized option for handling SSL parameters. More...

#include <options.h>

Inheritance diagram for mysqlpp::SslOption:
Collaboration diagram for mysqlpp::SslOption:

Public Member Functions

 SslOption (const char *key=0, const char *cert=0, const char *ca=0, const char *capath=0, const char *cipher=0)
 Create a set of SSL connection option parameters. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 

Additional Inherited Members

- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 

Detailed Description

Specialized option for handling SSL parameters.

Constructor & Destructor Documentation

◆ SslOption()

mysqlpp::SslOption::SslOption ( const char *  key = 0,
const char *  cert = 0,
const char *  ca = 0,
const char *  capath = 0,
const char *  cipher = 0 
)
inline

Create a set of SSL connection option parameters.

Parameters
keythe pathname to the key file
certthe pathname to the certificate file
cathe pathname to the certificate authority file
capathdirectory that contains trusted SSL CA certificates in pem format.
cipherlist of allowable ciphers to use

This option replaces Connection::enable_ssl() from MySQL++ version 2. Now you can set this connection option just like any other.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadOption__coll__graph.png000644 000765 000024 00000017302 14042362133 026766 0ustar00tangentstaff000000 000000 ‰PNG  IHDR”|× ®sRGB®Îé|IDATxí] œMõ?f†[vÙ‰¨=Id©È’dŒ([¡þEÖˆ’­(RIi±…È’„,Ù÷,eÏR˜Ê>ÃøýÏ÷è>wÞ¼7óÖyïÎûÏç½{ïïþ–ó;¿ó;çüs2(Ò )à!Â<,§‹i 4iFðŠš¼"Ÿ.a&Á… hçÎæ$}î"jÖ¬I™2er1·ãlÛ·o§K—.9¾$©÷ÜsÝ~ûí6l’0Ðùóç©D‰ò³åÐ'©R`ÇŽtõêU¯èúõëT£F ŠŠŠJµÍ@døóÏ?éâÅ‹IH«°@ŒD:jS3P:Ì@tE3P ¨žŽÚô+ýóÏ?´iÓ¦ "W\\­]»6¨pò2+W®¤„„U/õú„víÚE:uJ†èÞ½{iذaÉÒ‘ðâ‹/ÒÖ­[Å\¶lY Pð[›FßìX´hÅÇÇÛ'ûôÚm‚T‰‰‰¡|ùòQ£FèìÙ³ôÌ3ÏÐÌ™3iÈ!ôÇPýúõ©dÉ’4nÜ8²ýû÷§9sæÈuÆ éСC„ÇO=õ(P€š6mJ±±±ôÙgŸQ³fÍoX¾ûî;jР%&&Òûï¿O… ¢J•*I:*š;w.Ýu×]Tºtiš4i’ÔýùçŸS‡¨bÅŠtÇwHÞ)S¦ÐÔ©S©eË–‚°~ýz*_¾<åΛ:wîLXÍš5K&CµjÕ¨H‘"ôÅ_HÞ`ù›ûì³Òw·û‰waüþûïêèѣƥÃã{ï½§:vì¨þþûoÕ¶m[Å®˜ÓUõêÕÕåË—Õÿþ÷?ÕºukÅÏ4Ôƒ>¨{ì1©‡;®xÀä|РAŠ—„jÔ¨QêÉ'ŸT< Š;-å®\¹¢xàÕ| ø‘‚úæ›o3šb†U{öìQ ,PåÊ•SLI[²d‰š7ožÊ•+—úõ×_Õ[o½¥òçϯ~ûí7Å «˜AÔ¿ÿþ«j×®-u¡-f:Á83FýôÓO’oÅŠj„ ŠJ±´Ê”)ãæDô•—·æ$Î7oÞ,¸:+ÌêWeË–MñäSëÖ­SÀÍÜ·ƒ⽦êÑ£‡:qâ„ÐáÔ©SB[ôõðáÊ'»zþùç¥ fÅKýøã*Ož¢Æ‹$ŠŽŽ&fªS§Žä…Ä(X° ­^½š²dÉBL©«páÂ6{‹™R$¤Sß¾}E²á!_Ž9(C† ’ÿ¯¿þ"ž0Ô«W/¹fÆ—vPÿã?N÷ÝwñQ¿~ýä~0ü6¶/½ô’H}¨d<32÷'ñ$§ððð$(CÍA+@{|òÉ'BhvíÚI>HzOÀmöÄOдiÓèôéÓôÈ#ÐôéÓmíÞ¸qCÒYHÚm·Ýf»çè„g‰¨*¨2ä5„€Ahs]`–“'O áP¿6mÚP… $Μ9åˆ?‘`{@yÛààY.LjˆÁO.‚àÌÿý÷ß‹‰À’R˜x›%I2æÁ}û>a♟œ£œ'à6aF³ª"Ø$Ò.tmXXÁ¾™?¾5à—_~û×XX 5iÒD$Ïk¯½FwÞy'mܸQžè¾ð 2‹–/_NK—.;ˆE¶ÀÐë?ü°Ø_¨£[·nÔ³gO2¯8 ÛAXVM"«T©"hG`KñXÕ«‚Áù裷ƒòˆ'Á°ûôéC6l)‚‰0÷Íä¡IÀDû÷ï—±=·âðþûïÕõ©ˆz 3xð`1ÖX—ŠúóÏ?ÛT˜„íÁê F4ÊÂhó€iºvíJ#FŒÒhäÈ‘ÒîÃ`gÛG˜Æ:ÞÇ´oß^ ÊbÅŠ¤^@T¨HÈ×_]p¨Zµª¨Qˆmf3êAˆv,‰qCåI¡ÿaéŽþ¢?Xlç0ÐWðEÔƒqbUÔ=&$®Û`¶ˆXU¤jD#?Œå}ûö)nÔVœU…â%£\ÃÀ=~ü¸í^j'0þ`<§ü®NŒgs¾sçΩcÇŽÙ’`D³d#Ÿ_LÚÒq‚¼öœ9’¤/öyR»N+#ÚÀF43‹q)GG}K’Áîc4zôh1ÂAûºuë*–øv¹’^úĈ‡ÂXÆrÐ 0¢ '-ZÔ¸Lõ ã À¶H³ÍcÜw¤Ó勌Œ5j”³ÂêÇõÍ>ùcÄ—xu&ªúcËEºŸhëVXF~5q¯–@6‚¸s;ÈBF9H£Aƒæ±a=ÏH²ü1vÏú&æWºüg]¿šô üõø”÷î›_.¤uG-/ªT)ÎßÄÜzb5Vhé–¿r„n\»A7“/Ós¢ i»ø²‘Õò CÇ ‘‘){ö(úàƒgÌÉ–>žu7•j˜[ìsGðf½pµìæ¤4=·<åÈ‘™_¦ÞÔÿ f¦LT»viþh0EGWKSbú³±¨\Tghqªýz1ŠÈF3ߺŒ|^ êÍàüÙ¾³º-Ï@èXåÊE™qÂù»–´`AwþPê/Ú¶-ý­Än\S´cÒizø­’T¹KAŠˆ £„¸Dº½b` haª¤_|XóŠW^jÚ´6ä׬ٯî¿ÿMþ>éš--=œì˜tJ±-dëÊåS jÿ·Û®q’:OVNþù)"‘úôihånØpÇ+‹o;ì§è¯ï¡,ù’/lÓø$]¨0G4:´¹¬ÂŽÿÇÑmË¥­qœ*w.TÌ"¦[ „Î}üñ*Þês˜7àuÆ¥eϽJEÜjËñÒ­B‡»t©CÇŽýM?üð‹³þ["=[LAÉ< ^ºf ˆˆ0zûí–ôÆó’=+²çXÉtÍ@ ÍšwòîÙ;xoýr ‡õPL×61±±å-ý¢E=yF^#Y}@t/@£üùoãÝ« ,õrõôÎËôÛüÔWØ}‹«‚` ÷¹çj1¡ÏÓâÅ»Ek—Û;s–÷9B…ïK}ÕÅNdK¸+•ÃuöÔûñô2PmnÞ|XU©2„wÁ& —Ú]Öû°ÂSgÜÛðVr9Ç®[Ã5ˇ~¨Æ/®[x»¹âíÙŠ?xWì#HòâÜ¿ .k°“8oÞ¼âÆîx|p‚RЭÛt5|øwAÛçckÏ«¯›ïU‰×nngçŠp ¾ì@|á~—ØÓš0;ÓRì¼B±“(Å>d[7ü%! þpŽíèìäKñÆKÅ.‰}ÖÿQa†Ø<ø úê«ÍòÂÕH –#> ÛðÎ ª=°…EÜôc'Ø6/"ìÔK¶a³#-ñ2flEf‡^âx~Ø'x\ƒx4aI%[—áÇ[Ò±ñÒìÖÅÛ¾‡å͛ݣ4d¯s½¥ÏËÿ¹í2Uï^˜ Ú}žw6`ìc衇ø ûÇâlËð£døÀ¾2-âöyYmñcŒš~u\r „QïØ±ÏæK´pá.Ÿ37«}4vËé•Q\ÐÀf—Â@ð0†4gÿHp¶ÅvHö¾as”å®!gmé!É@aaèwbhÈ–ØK •…˜Àá£:8Ê‚³S8Öb.¼ñà^Âj n'±3ÒÅ‹ãïõ1$$:£R¯^3ÙÍ]Vþ¿™³,–M‡Ã(0Üì€áà… n!àòö‘=@ÂÁÍ‹;Ò töl«„·Ù%ßËì¼òVwhżðd—ƒöp÷Ýw' ¤bßÑuH3Â_2Ò·ßîd÷{]ÑÇïiØ®•r—¾éXÔï ú¸´Ì4lÛöŽÑÏ.~·›“Óä«®•ŽPŽ¢ÁÞÉ"„<Áè92†=»/ä]­W]¡™OòàùõÃS­þÅ(œ%U!䇽e ”£wßõÝê$5†ØõåV[QT´V`ö´§†Ÿ«÷5ýG©š²1½ƒŸøžr•vçÃò{gÅRÍ~®;"õ¸1?Ô ôsåÊB4áßM_Öþ¤û¾9S-Þ L»+<íoȯÂì רÑXùô#&æ>û[úÚ´²# ê·ÞúŽÃ*ø7Ζ]³–½Ô d7t*áHAøUÇ­8vYô¥‰šLÄ0Nû÷oÂêvÑÞ½ûTÔÀ%ØšŒ<~¼ñF36¨ç8¸ëY>S…?ÃôšœŒh«V÷ñ'Ä¡<½w•·gz,­vŒ"þsÉâ¤IK&kJaØ`P¹˜¿èû7…\)ß‚äÙõÅiª5 ðÎÐSÆÔ³»šR [Ù²…8üe%ñ¹(…\)ßÚ4úÝÛ6?e/’)匽«(•{õÕÆ´|ù^Ú³çd*9“ß>¾î=OÚ§ßOE4%÷$)Ù²Eò÷ÓM9øîÛg¡I28¹€ç-ãþ ‡·} ï$«¥“õ“h‡¯E‹©E‹ª„Ï?4Ü¢€f [´Hñ /Ycb&К5ýyÛL}¦ˆenúl‡™q7áVÏr¿ÈÈ¢**ª„åðv‡Ö½{÷vc$• {jæžôéš1"ÀwM"L»»{çµí;ú‡dMšBrØ}×iÍ@¾£eHÖ0(ÔÆ&»mÛ¶É6a_àÁ^2(1ñVø%ԉݠEŠÜ Eå‹vìë`W.²«`Á‚ö·Òì:$%ºŸ:ùóçWÑÑÑR';2PíÛ·Wì @Ê-\¸PòΚ5K½öÚkÉÎÙmŠâ”tã·«x@ñ>tÅÒI5nÜXœE!6gOmÚ´Q¼íX?^üüp wÕ¤I…þáV¶lYÅ^9ÔàÁƒU¿~ýÔÒ¥KUBB‚ô+wîÜ ÷Ù¹‚”ç­Êâþ…êÕ«§Î;'éÎþàx xºA)àH³¹Aƒìa—3€š5k&KÌwß}—}æ'¸2Y±b…LšéÓ§"¿ùæ›Ô¡CŽŸºEö~8p€Þ{ï=b&”ú0[á?Ç ?ÿü3ïÏ%áαgŽNŸ>M<04{ölqJÀL#E *DØþ 0Ÿãú•W^¡Î;Û~<ÄLHÝ»w/HìIŒCP} ®YÐnll,‡Y °}†Ÿ=z Jr„úõØ·o_ ÏÎL!t€J^½z5nï^^—òè?ö¯]»–°yÉ’%’îÓ?w¸ÍWy¹)VwlÙ³g—ÙÉ;E’Y‰&eGŒ¡xÀ$ ‡+¯[={ö—ncÆŒQ¿ÿþ»ä+_¾¼bG”r>cÆ ñìe–@̈êÔ©›îä&Ož,^¾àJž¾ €ô:vì˜q™ì  ·rÆ/>>^±ƒU£F Á™XÊArÂs€™Jð¬]»¶¸±ƒÛºW_}U¤.î;Â"(H@«V­ÔÌ™3U·nÝ3¦¤á’Œ'‚T=zô¨¤ƒ6#GŽ”sgžH  5¢!5 e˜a8´w6ñÒ…Yj@Ë–-‰U“Hxæ‚×-Vu2»Yå¤_¦ä{ •f®™yÁžyhÆG¸Ý¼<ÿ–]… C“€I ¨±ôááYX_ã%ÿ­gTVî‘èúa oí·zèçÌ… õâW•Ù{|{?·œÕkæÅ¸lß~Œ2gÎÄ(÷±ònQà-ªÈ òÏšµ…_s\ç×-ø©÷~/j²nQÍ@Ž$΂;øÈ ñî:cÆfk²v1Í@Žßºuä%)ŠÃ¦[¾|dz¸îamÖ-¦Èñ›9s3ÅÅÝò+1c8ÛB7_´zX¥%‹iò`Ø i–-Û›äiúåËñ4}ú&j³vÍ@ŒßÊ•ûøûšä¯P6m:,a<¨Ò²E4y0t48ö)S¸%¢BÛãíÍu@^¦zƒp ËÂî)]º?™ü,Œi8^عsh ÑL³ö5y@êÕ«÷Ó¡Cg¤$œO/ž‡Ê”) ×õêÝC¥Jåó VkÑ äå¸qqª_ÿñäeU–,®m K[ð ­È˱ÀWéåËOH¡Èª™ÊÀpNO_˜ºæÒ©f —Ȥ39£€f g”Ñé.Q@3KdržIÛ@Îi£ï¸@m¹@$ESÀ´ sFî4¹D&É49£ŒNw‰š\"“Î䌚œQÆÅt½Œw‘P:›c èe¼cºèTM—( U˜KdÒ™œQ@33Êèt—( È%2éLÎ( ÈetºKР䙜gÒËxç´Ñw\ €^Æ»@$ESÀ´ sFÓ¡ÂàŠ7T!t{ 3âRø¨JKU£ÈRÄÈò J3à8VÉbJ0I,–1c~Žß‘úè#™Õ»ví’ðÞ¾’æÎ+çÇ—©mÛ¶•Ðט±_}õõïߟ8R3¡Ì]wÝEmPB6!ä7Ç’'ŽœLû÷ï'Žo#%òã Âe#ì7Êp˜KâhÍRGG–Y㘋0ÛQÊpteâÈRb²«•gŸ}V‚ê–)S†æÍ›GóçÏ—§Ô-Z´ßÜ FXq#¸‚ðN›6=¼N's€;=Aº»{÷nöˆvˆÝ ÇIñÂ… “„½:räˆïó!ð0ú €;b¤7N‚#Þ+‡ÙLÔ×FO‚N˜ÅF[ 3±ÒuxÆ 9ÁtdDR渤³"3M:Uâ!±ãAt0b„ÙÇ‹çpâ ñ&  "Oš4‰ÎŸ?/õ ½lÙ²ÂH`&³ªÂàƒ±»ví*Ÿ=ê w‡ &ýã"ê2ò‚YÑ7Ô à0—ì"¯xæA:˜’CvÇp•I0xð`zñÅ/0:õ6hЀªU«&ùp}@$DŽÍ*¡½ „I¡ÅŸeË–I y´á :B§êׯ/3‘™ëÖ­+6ãŒÊµÕG„þ.T¨D:ž3g!8ˆ‹hË<ò•(Q‚¢££Ò ùÔ bóæ[¡ PÒ5jdK‡t„@¤h¨*ÀX’ˆ ‰¶téR±‡8Ž;ÁF‚‚ä€m[¥M›6"7n,U`àÁ\öpîÜ9™4HÇàc¢ ¯Pk˜d˜0`fsøKôáé§Ÿ–ðÀ )…Èγž ½bcc%ÝA§ÂÐ)0/)aœš‚C]½zU¤^hBBA2õéÓ‡zôè!qÞA0€3ƒÙˆ©Ž8ë†D@~sºþ鎠jÕª6†ûÀ¡.3=¤°|ùò"!Á\&Fx#*"újHsU¨c„ƒø ~{\‘àÇÆÒg#"#®Qf3!BqÏW”(¥ÎY ÇÇ/3×Ù˜™ýúõ£víÚÑŽ;¨zõêdÙ…4rX‘ÀŒz ÄÇŒ.Á i‚6ðù= >ìư##ÕÈ£ØÀ€ŽØ>_J×,FHc01ØFº}yG¸y ÛÆ¸Æ’ÎÀPN+°A}Á^1ÏÄÔˆ…™‹š 2 T£ýŒ6—Kë󘘘´nÒ­ö,Ç@Pž€ý 6¯lÌõÙç3ß Ä¹#&ÎÚ´Ü*ÌYGtz€(ÀšAzü"‘‡ÍÒ_T:ÃßÕ/Ót 9¢›õ#´ ó#qC¡jÍ@¡0Ê~ì£f ?7ªþ?ÌÀgvVú‰ïIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1LocalFilesOption__inherit__graph.png000644 000765 000024 00000012277 14042362133 031034 0ustar00tangentstaff000000 000000 ‰PNG  IHDR‰Ï»³sRGB®ÎéyIDATxí ÔÕÃǧÒFvE"•($‰²¦Í–í%[ 6Š:¡„ÿ($Y¡¢=m"e­PD’%KQHH‘¥Rùýçóhî™{»óvoïvßî3çÜ÷Îof~³|ç;Ï<ó»÷½ßb‘ Fƒ"ÅÓ(«EA@I£DH%MÚé »¥J•2›7o.¨æ²²eË–™jÕªåûØ Œ4[·n5[¶l1%J”È÷Aecgu–)(Òèö” Ë嘕4¹0oWÒdã¬çrÌYCš 6˜9sæä®øÛ¿üòK3räHó裚·Þzˤúœô¯¿þÊó¾Ä÷,¯²†4«V­2:tÈ34ï¹çÓ¬Y33þ|óÃ?˜>}ú˜&Mš˜?ÿü3ØF×®]Í{ï½gÖ¯_ofÍš,—ñ|ŒP¡xñâ‘==åØÔi§Y`£J•*E:uŠºtéU¨P!j×®]´zõêèØcì*•:† Ýyç‘„èŒ3Έʗ/uïÞ]ò¾ÿþû¨aÆQ•*U¢öíÛK]_ýuT½zuÉ?á„¢Î;KÝ—\r‰Ô9|øð¨mÛ¶QíÚµå¾iÓ¦IÙ±cÇF}ûö‹öÙgQ¹rå"KDIw,i¢DÉêzúé§£Ýwß=:ôÐC£÷ß?jÞ¼¹Ü6wîÜè˜cމöÝwßÈ’:²%¢1cÆD×\sMD?ÁbĈ®‰àû™gžY"óó2#£,ÍW_}eØF&OžlF%«ö7ÞkVðn»íf^}õUYˆÏ=÷œ± šþýûK*³`Ác'À°e <ØT®\Ù¼þúëæ»ï¾3+W®Œ[¼‹/6v’Ì¢E‹Ì/¿üb^zé%cIifΜiÆo d,Q䞃>ØÔ¬Y3.Î}Gu”©X±b\½52Ÿ|òIÒºZ·n-ýµd7–<æóÏ?—{{õê%pöìÙ2¶¹uëÖ™)S¦˜¡C‡Š»÷Þ{ãÚ)싌" ``ÂëÕ«g9äc-9úè£M5 ÛK«V­ÌôéÓe;°–ÃðlâðÃ7÷ß¿€ ÐGy¤an¸áSµjÕà–D>„°+ZHCÛ-Z´¶Z¶l)„…l 40mÚ´!;çyÓÆ%ÍÿóÓO?bëúùçŸ%oï½÷6ÅŠ“2öÛo¿5={öB1Þ^xAò.¼ðBÁ¶!~&…Œ#{¢i·3³ß~ûÅaÅdΘ1Cˆ¨LÐÀ «õÍ7ß‹À$²ÝäÞÒ¥KÇÕá.öÙg‰þóÏ?âcpáÒˆ“Τ& uÉ’%bQü|¬„³J©Ôe·Q±x®ŽÿýW€rm·?IƺڭÅɈ÷Œ#MN¨qÄÆú.B¬kÃkêÔ©¦iÓ¦r*9÷Üs…Dä»íŒ¸ØöxJ ­O!YL:·páB³Ç{˜ºuë&öÓO?•|?å”S„wÝu—”'s„ fùòåÆúPR6Y]dø¥Ô©SÇüþûïféÒ¥²-¿øâ‹2© ƒÿÒ8“YðoÎ9çÕ:²Æ:¯æä“O–-Œm-®_¿~¦V­Zâ§8ü]ëÄöõÍ7ߘ=zHHÁöfJsë­·Ê6‚sÛm·I¾‹c'Nœh …mîú믗mîÀ Ö…†ÿµvíZ)Cî¸ãi û믿š³Ï>[òü?®ß~Z¡ÆóҫΩ®TNO9ÝïòìvÙIv—òn}‰hÅŠqiœÔ8ݼüòË‘µ GVùƒ>ÈÓ¾äf¹¹7c-͵×^kÆ'b ˆœ¢þöᇦ5V•UN ®Ô Û¯xØk¯½"{zʱ]ä”­.e¬ 2Ä–<"î…ü²Õ·Œ¬(jdeÿ¤ŒÕÆŽʲ=Q+ulUâ"_VÙJ Fö´Y8‘bFÊ!±Ž;JšU¦‹¬Ø»Ô…Ô³#죨qãÆÂ^™(«LŸßyçFÉXKíш¼êª«Ì©§ž*~]t‘hR²å tzùå—‹l ezè!ƒ´béÈ'?þøã$ÇZHçwž¨êZr«u-ªH"³m ônu¾¥<[šM”C"ЪӉs6Ë*Ç€´‘Œ& º”L4ä@¤Ô ¢‹N$²ÈÖ‰¶$ZÞ<(D[»OŸ>¢AÉä;©b ÐèFÌR!eÊ e[zòÉ'e{J­k_J%–SÃ\·§ÔpÒRJ ?ª?Ÿæ£WÒÄã»ÒŸO‹A±]DI³$š°#”4„t{ c“•4lt{ £¤ £9aÔÒ„±ÑœJš0šF@IÆFs(iÀhr%M=r€±ÉJš6z䣤 £9aÔÒ„±ÑœJš0ü?7/ Û# ¤ÙI±¿†%ÿoÈÎêd%MVOÿÎ ^IÀMÜ`l²’&€¹À(iÂÀhNµ4lt{ c“•4lt{ £¤ £99 àÿ:7úJ¶¨¾,Vb9*^¼Œba±hÙ²¥O“(î?,ÑPjÛ¶­¹úê«s ™feèG ™äõi|44žJš”`ÒB>J §„@œO“Òù\hÙ²eòkæÉÔLÒmÚÊûÈ-h9åUØ´i“Yºt©9î¸ãŒ•U:¿n¤Q¯CG…;+ $ÚT~™Å­Äùè£ÌŠ+ 8Ô®];¦š·£{­t‘´ø…ÚÊ8K3vìØ´¥”Cƒ›1c†ˆx…òw&°ûî»OnÅAD"ég÷B(Õ*ëô0ÑËœ8qbZÍðkîÈK?^‡Öf·nÝDE/TDq}rm‡ÊæEzÚ– @ÄÌQQcE `‹ÒZ’ˆ….\¸Pô“P`cUÀ<`PNã^+P´·±%J”e87(&üã?6‚:Êq¨ævîÜY¤çÎ++yA”ânºé&Ó£GQjsqWWâ;ý¥?|ýáÊ+¯4-Z´KTé¾±Ò‡h\¢b·víZ3xð`±(ˆ ’–P¿CœÕVöYdÓ†.Ö!WDW±XC‡‹Ò¤I#JyǼ¹îºëb·ƒØž~úé¢çY£F ãUaTñ*T¨ ˜#ÑÈ| nG_¬µAZëˆhÍš5Ík¯½fiìß¿Ê:W®Ci[«¾&J³°u}ã7š ˆ”"\³gÏ–úY}ÈbfçÏŸ/G74(YÔóÌ3ψD2“†l22‚.0a¬Ô~ýú™®]»šaÆI$BÌ‹kK,X éV£[ÈÃ…—Lï¤]ˆ€Å#ˆŠºnÕªUEz™zçÍ›'„®X±¢5j”lÓ§O÷jú/Šüò AƒäõØcI"Ö‚mÉd‡ "í!™øÄOˆ€ë³Ï>kÀ !â­È;#aè‡ZµjÉÅz%? ‰m±uëÖÆµl4¤|ðÁMÓ¦M „%Ћùá‡6ëׯáç··£xÚ–† Ùc‘8FC†g20©õêÕ3 •‹imذ¡¬~kr]|ñÅb­£N:ÒÇd”Šñâ^Ú#؇M²zš5k&d¤ ÿÙ’—¼?XBú_¿~}IÅúA<^è\¢¸‹EA]‰gˆ‹þ$“‰zLbÀwp>/YX¼x±Ú ÎK6mðüÁV,-Øa-° î&—t !qüX:òüþ±HI‡L¼ ‘o#¢@L[X4'+í··£øN‘†Áµz”qm”*UÊ ,ûî»ïÊ  °<òˆ±Ã|V«sêR‰Á—ÄÜb.44·Ó €Äé[õ@H'Kˆà“„ ü’%KDy“ž,@¾Äí)±m2©ƒÀÊg"y–˶ۗ|v¤+_¾¼ÜŸÊøi“Åìãa¬G.\—æÊ¥òžöö”J¥¬||N¨ÁΙ3ÇÌœ9S|„ÖÙ¶› a0L>RbàÁ „S «ØéO.Z´Hîc5U©REn£.¶‚w݃–û™@¬Ž#$Æè„Jœ-ÓÏʦÜÎL}'t’l½lÃÔÅøéK¯^½¤]|)ú9 xá[XXðóÏ?_ü>Ò’ŸúüÀ8øÒ~M^¨vÊÒøóãî‹Ø“ H„ºuëÊ>Î b콘ôêÕ«›víÚÉVàØOyW“Ú¦M9ÂâC‘ÎÄá;@=÷ÜÓôîÝ›[ä}š:I#N@£›— O=õ”l‰|\„à€Bnú„ÃŽÃjoܸ±ŠS }Ã"àT’îúçêÌé²ÔnxûöíeëÁ!ÅïbquèÐA°`;d;fqàvìØQ&ëJ¹N:I3ÉÆaV­ZeFŽë – ¿ §{ݺuBÐXæ¶}Kg,îþ¸Ÿ„Å ,_¾<Î?pÓyÇÑ¢³#FŒÀ¸—X¶0x¦Á¤pò€IÀùdogeRÞ‘ “þÊ+¯Èþìoo®¾Tßi—>1¡~€ìþ–ˤ•.]ZÚÇygkØ iç çt¼IcB§ŸF:iø@øn줇Æq-åÙ¦X\~¤§ÜgOX]òÔÒP)Þ=Ç8̬?!ø?¬ÖÄàû‰y\'ËgÒrC˜P½¤û„áÚ—MüÜçüW‘KãÉO†yÉÆïœdòý[œüº\<ÏIÃÙç×Û5–Ó»Û\™V­Z¹hÜ;Gc¸l ™0þ<' § t W`èøšÌòd2aüùrzʦIÌʱZo<ÞÔoîé7õ’|sÓFb!wzÊÊU£ƒNÝžÒ†LoPÒ(ÒF@I“6dzÃÿòPæ«ëÀ3"IEND®B`‚mysql++-3.3.0/doc/html/refman/inherit_graph_44.png000644 000765 000024 00000005025 14042362133 022434 0ustar00tangentstaff000000 000000 ‰PNG  IHDRž$xÔƒhsRGB®Îé ÏIDATxíZUŒM®;ww· Áƒ ‚'<ð‚&¸Áõ<!—www‚»»KS_ýôdvvçno•Ÿt%»Ó=ÕúuuõW½£XȈA ÂÄF¸?ÓA@0†g !*Ë ì¦ScxÆ¢‚@œ³×£GÒÔ©S¯MÞ 0M›6¥=zxÔ÷òx÷ïß§U«Vy2ƒ@ ìÞ½›Îž=ëUÝËãé+W®ÔIó4Œ@­Zµ|Öõòx>K™—#` /Ä€šæüCÀž8™R!FÀ^ˆ5Íù‡€kpá_õè—Zºt);vŒfÏž¶ÁôìÙ“?~ìÚþºuë(UªT®úh+~üøAïÞ½£,Y²ÈPºwïN-Z´ ¶mÛFmhÿ{ûví>|8¬,XÒ¦M+}ìØ±ƒž?N:u²úŒ‰‰±ÒcbÓ¦MÔ¦Múöí%Ožœ>}ú$éhŽ5hÃûúõ«xƒüùóÓ½{÷èÇT®\9úõë]¾|™ /_¾¼LútéÒY;ðà¼Ë”)“àpúôi«Ž^l(Ðîùóç©dÉ’”:ujY|„]°«ñg›4iÒÐñãÇ){öìT¢D )Ð_¿~M9s椫W¯Ò›7o¨R¥J”"E Ñ£Þ—/_(eÊ”+íèüèÑ£­nºvíJgΜ¡Y³fYïÐ.>9rä \ÀרQƒ`Œ?~¤“'ORñâÅ)Ož|¸ªX±¢¤;wî¬J•*¥øHQlPÒ?“¢[¿~½äëÖ­kéP–/ÌE¿sçNÑïÝ»×g^^òW—.]T™2etVžôù³ÁªaÆI?2dvÁÏŸ?¥áY“"n'Å .Mñ¢‰·æR{öìQl€âýf̘!zxô­eæÌ™â½wÃ:x+>J°^±b…âcOÕ®]*5pà@ñô’ùóÅ›^±Ñ«µk× †À¢=ž>­¶lÙò§†ÉF%kÜ€Ÿ6xigÛ¶múU¢Ï°{¼\¹rÉ&÷€€×@4ñæ ¯iÒ¤‰ì@x^‚„ðq%ixÌ *_‚G€T¯^]žøÒ^ÉzaK0P¶ ÏÓŠÂ… [zp2 ¡bÅŠ ÷D[˜k¿~ýÄ»À{ðB '³÷ƒ¾µ€³"ò„¸áo>ḼaÅ›ê:Ð?kÌ‘‡tìØÑâ¸ÿ½ñüFx–ܹsKë±SGîLDÌWÈŽZ™þ y-\¸P‚Š–-[J5D‹ÌQäÅqÅžˆ˜'Y·_gܺu˵«GY:9ì†j×}ú¿C䄨Ñ)¼¢Spp3DWšùh^¢3ðJð72xL³fͬ¢|LK;øojÞ¼¹è°hèÿæÍ›>óV~$à°á-À›`0ˆpÁW7PFî‹'®H6lØ`]‹´nÝZæ…9c“Ž3F8%PVäŽhÞX <<x"8*ð¯FDŒH;¬â<¤åxHHSì„€?@øŠCòàXZiò¤ß¿éW Ѹï0áC|£xW‹~ëÖ­Â_P»¯E¤¢ZÌ*‹HxòäÉ¢ÓuÑSá—|• z£Z>:}Fµz hìýû÷ŠUúA$ÉÆ­Zµj%cç C(P@ñ¥_|±±)pDHB8pð#Øö⊃ ™Ç!C¤îرc­ÜlÉ’%òžé„D®˜7o,é_Gµ˜7_»ÈXÑ.SuéÒ%©ÞÈÁŒ¤ñņ)å6oÞl½K,áÆñ°<$©†çQÙÏLÿþýßõy•f 8ÒS0^§pT%W0dŽV-ó—ƒáaÑ $_‹6<è>GÆZ¶'ˆ=*-6˜—é¬ë3!ÐÚÕ‚+)º¤à9W<ö±ØõÀ–XiW_ùØõÁ¤Ý /è dÞE~ ޱ]»vŽ\58 Ây_b‹‹híàÛMœˆ[¹`ßëËkÝŽkêw¾ž á ‚Ð»à‚Þd@Ïw{ò±—Õi`‹ËôHJD ÷zsçΕû(Ü*àNvb­ÛÁB# ð%X,DÆá"˾ú4ï܈µ«AºùÆÛƒ„Úõ&mH ¸ðF°â<á"Õ&eЦ쿋€1¼wmÿê™Ãû«—çßœkpžgÄ ,¸˜ÇsŠ—ÇÃ?Dð‹‚ƒ@(hРüúälË+ªu0yƒ@8ðòxáèÄ´ip"` ωˆÉGcxÙtâDÀž“¿NÂêU×ùIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1TCPConnection.html000644 000765 000024 00000151543 14042362133 025253 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::TCPConnection Class Reference
MySQL++  3.3.0

Specialization of Connection for TCP/IP. More...

#include <tcp_connection.h>

Inheritance diagram for mysqlpp::TCPConnection:
Collaboration diagram for mysqlpp::TCPConnection:

Public Member Functions

 TCPConnection ()
 Create object without connecting it to the MySQL server.
 
 TCPConnection (const char *addr, const char *db=0, const char *user=0, const char *password=0)
 Create object and connect to database server over TCP/IP in one step. More...
 
 TCPConnection (const TCPConnection &other)
 Establish a new connection using the same parameters as an existing connection. More...
 
 ~TCPConnection ()
 Destroy object.
 
bool connect (const char *addr=0, const char *db=0, const char *user=0, const char *password=0)
 Connect to database after object is created. More...
 
- Public Member Functions inherited from mysqlpp::Connection
 Connection (bool te=true)
 Create object without connecting to the database server. More...
 
 Connection (const char *db, const char *server=0, const char *user=0, const char *password=0, unsigned int port=0)
 Create object and connect to database server in one step. More...
 
 Connection (const Connection &other)
 Establish a new connection using the same parameters as an existing connection. More...
 
virtual ~Connection ()
 Destroy object.
 
std::string client_version () const
 Get version of library underpinning the current database driver.
 
bool connected () const
 Returns true if connection was established successfully. More...
 
ulonglong count_rows (const std::string &table)
 Returns the number of rows in a table. More...
 
bool create_db (const std::string &db)
 Ask the database server to create a database. More...
 
void disconnect ()
 Drop the connection to the database server.
 
DBDriverdriver ()
 Returns a reference to the current database driver.
 
bool drop_db (const std::string &db)
 Asks the database server to drop (destroy) a database. More...
 
int errnum ()
 Return last error number associated with this connection.
 
const char * error () const
 Return error message for last error associated with this connection. More...
 
std::string ipc_info () const
 Get information about the IPC connection to the database server. More...
 
bool kill (unsigned long tid) const
 Kill a database server thread. More...
 
 operator private_bool_type () const
 Test whether any error has occurred within the object. More...
 
Connectionoperator= (const Connection &rhs)
 Copy an existing Connection object's state into this object.
 
bool ping ()
 "Pings" the database server More...
 
int protocol_version () const
 Returns version number of the protocol the database driver uses to communicate with the server.
 
Query query (const char *qstr=0)
 Return a new query object. More...
 
Query query (const std::string &qstr)
 Return a new query object. More...
 
bool select_db (const std::string &db)
 Change to a different database managed by the database server we are connected to. More...
 
std::string server_version () const
 Get the database server's version string.
 
bool set_option (Option *o)
 Sets a connection option. More...
 
bool shutdown ()
 Ask database server to shut down.
 
std::string server_status () const
 Returns information about database server's status.
 
unsigned long thread_id ()
 Returns the database server's thread ID for this connection. More...
 
- Public Member Functions inherited from mysqlpp::OptionalExceptions
 OptionalExceptions (bool e=true)
 Default constructor. More...
 
virtual ~OptionalExceptions ()
 Destroy object.
 
void enable_exceptions () const
 Enable exceptions from the object.
 
void disable_exceptions () const
 Disable exceptions from the object.
 
bool throw_exceptions () const
 Returns true if exceptions are enabled.
 

Static Public Member Functions

static bool parse_address (std::string &addr, unsigned int &port, std::string &error)
 Break the given TCP/IP address up into a separate address and port form. More...
 
- Static Public Member Functions inherited from mysqlpp::Connection
static bool thread_aware ()
 Returns true if both MySQL++ and database driver we're using were compiled with thread awareness.
 
static void thread_end ()
 Tells the underlying database driver that this thread is done using the library.
 
static bool thread_start ()
 Tells the underlying database driver that the current thread is now using its services. More...
 

Additional Inherited Members

- Protected Member Functions inherited from mysqlpp::Connection
void build_error_message (const char *core)
 Build an error message in the standard form used whenever one of the methods can't succeed because we're not connected to the database server.
 
void copy (const Connection &other)
 Establish a new connection as a copy of an existing one. More...
 
bool parse_ipc_method (const char *server, std::string &host, unsigned int &port, std::string &socket_name)
 Extract elements from the server parameter in formats suitable for passing to DBDriver::connect().
 
- Protected Member Functions inherited from mysqlpp::OptionalExceptions
void set_exceptions (bool e) const
 Sets the exception state to a particular value. More...
 
- Protected Attributes inherited from mysqlpp::Connection
std::string error_message_
 MySQL++ specific error, if any.
 

Detailed Description

Specialization of Connection for TCP/IP.

This class just simplifies the connection creation interface of Connection. It does not add new functionality.

Constructor & Destructor Documentation

◆ TCPConnection() [1/2]

mysqlpp::TCPConnection::TCPConnection ( const char *  addr,
const char *  db = 0,
const char *  user = 0,
const char *  password = 0 
)
inline

Create object and connect to database server over TCP/IP in one step.

Parameters
addrTCP/IP address of server, in either dotted quad form or as a host or domain name; may be followed by a colon and a port number or service name to override default port
dbname of database to use
useruser name to log in under, or 0 to use the user name the program is running under
passwordpassword to use when logging in

BEWARE: These parameters are not in the same order as those in the corresponding constructor for Connection. This is a feature, not a bug. :)

◆ TCPConnection() [2/2]

mysqlpp::TCPConnection::TCPConnection ( const TCPConnection other)
inline

Establish a new connection using the same parameters as an existing connection.

Parameters
otherpre-existing connection to clone

Member Function Documentation

◆ connect()

bool mysqlpp::TCPConnection::connect ( const char *  addr = 0,
const char *  db = 0,
const char *  user = 0,
const char *  password = 0 
)

Connect to database after object is created.

It's better to use the connect-on-create constructor if you can. See its documentation for the meaning of these parameters.

If you call this method on an object that is already connected to a database server, the previous connection is dropped and a new connection is established.

◆ parse_address()

bool mysqlpp::TCPConnection::parse_address ( std::string &  addr,
unsigned int &  port,
std::string &  error 
)
static

Break the given TCP/IP address up into a separate address and port form.

Does some sanity checking on the address. Only intended to try and prevent library misuse, not ensure that the address can actually be used to contact a server.

It understands the following forms:

- 1.2.3.4
  • a.b.com:89
  • d.e.fr:mysvcname

It also understands IPv6 addresses, but to avoid confusion between the colons they use and the colon separating the address part from the service/port part, they must be in RFC 2732 form. Example: [2010:836B:4179::836B:4179]:1234

Parameters
addrthe address and optional port/service combo to check on input, and the verified address on successful return
portthe port number (resolved from the service name if necessary) on successful return
erroron false return, reason for failure is placed here
Returns
false if address fails to pass sanity checks

Referenced by mysqlpp::Connection::parse_ipc_method().


The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadConversion-members.html000644 000765 000024 00000020237 14042362133 026764 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::BadConversion Member List

This is the complete list of members for mysqlpp::BadConversion, including all inherited members.

actual_sizemysqlpp::BadConversion
BadConversion(const char *tn, const char *d, size_t r, size_t a)mysqlpp::BadConversioninline
BadConversion(const std::string &w, const char *tn, const char *d, size_t r, size_t a)mysqlpp::BadConversioninline
BadConversion(const char *w="")mysqlpp::BadConversioninlineexplicit
datamysqlpp::BadConversion
Exception(const Exception &e) MAY_THROW()mysqlpp::Exceptioninline
Exception(const char *w="")mysqlpp::Exceptioninlineprotected
Exception(const std::string &w)mysqlpp::Exceptioninlineprotected
operator=(const Exception &rhs)mysqlpp::Exceptioninline
retrievedmysqlpp::BadConversion
type_namemysqlpp::BadConversion
what() constmysqlpp::Exceptioninlinevirtual
what_mysqlpp::Exceptionprotected
~BadConversion()mysqlpp::BadConversioninline
~Exception()mysqlpp::Exceptioninline
mysql++-3.3.0/doc/html/refman/connection_8h_source.html000644 000765 000024 00000067550 14042362133 023613 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: connection.h Source File
MySQL++  3.3.0
connection.h
Go to the documentation of this file.
1 
11 /***********************************************************************
12  Copyright (c) 1998 by Kevin Atkinson, (c) 1999-2001 by MySQL AB, and
13  (c) 2004-2007 by Educational Technology Resources, Inc. Others may
14  also hold copyrights on code in this file. See the CREDITS.txt file
15  in the top directory of the distribution for details.
16 
17  This file is part of MySQL++.
18 
19  MySQL++ is free software; you can redistribute it and/or modify it
20  under the terms of the GNU Lesser General Public License as published
21  by the Free Software Foundation; either version 2.1 of the License, or
22  (at your option) any later version.
23 
24  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
25  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
26  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
27  License for more details.
28 
29  You should have received a copy of the GNU Lesser General Public
30  License along with MySQL++; if not, write to the Free Software
31  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
32  USA
33 ***********************************************************************/
34 
35 #if !defined(MYSQLPP_CONNECTION_H)
36 #define MYSQLPP_CONNECTION_H
37 
38 #include "common.h"
39 
40 #include "noexceptions.h"
41 #include "options.h"
42 
43 #include <string>
44 
45 namespace mysqlpp {
46 
47 #if !defined(DOXYGEN_IGNORE)
48 // Make Doxygen ignore this
49 class MYSQLPP_EXPORT Query;
50 class DBDriver;
51 #endif
52 
58 
59 class MYSQLPP_EXPORT Connection : public OptionalExceptions
60 {
61 private:
66  typedef bool Connection::*private_bool_type;
67 
68 public:
72  Connection(bool te = true);
73 
107  Connection(const char* db, const char* server = 0, const char* user = 0,
108  const char* password = 0, unsigned int port = 0);
109 
114  Connection(const Connection& other);
115 
117  virtual ~Connection();
118 
121  std::string client_version() const;
122 
131  virtual bool connect(const char* db = 0, const char* server = 0,
132  const char* user = 0, const char* password = 0,
133  unsigned int port = 0);
134 
138  bool connected() const;
139 
146  ulonglong count_rows(const std::string& table);
147 
153  bool create_db(const std::string& db);
154 
156  void disconnect();
157 
167  DBDriver* driver() { return driver_; }
168 
174  bool drop_db(const std::string& db);
175 
178  int errnum();
179 
185  const char* error() const;
186 
192  std::string ipc_info() const;
193 
199  bool kill(unsigned long tid) const;
200 
220  operator private_bool_type() const
221  {
222  return copacetic_ ? &Connection::copacetic_ : 0;
223  }
224 
227  Connection& operator=(const Connection& rhs);
228 
235  bool ping();
236 
239  int protocol_version() const;
240 
251  Query query(const char* qstr = 0);
252 
256  Query query(const std::string& qstr);
257 
264  bool select_db(const std::string& db);
265 
267  std::string server_version() const;
268 
292  bool set_option(Option* o);
293 
295  bool shutdown();
296 
298  std::string server_status() const;
299 
302  static bool thread_aware();
303 
306  static void thread_end();
307 
312  unsigned long thread_id();
313 
333  static bool thread_start();
334 
335 protected:
339  void build_error_message(const char* core);
340 
344  void copy(const Connection& other);
345 
348  bool parse_ipc_method(const char* server, std::string& host,
349  unsigned int& port, std::string& socket_name);
350 
352  mutable std::string error_message_;
353 
354 private:
355  DBDriver* driver_;
356  bool copacetic_;
357 };
358 
359 
360 } // end namespace mysqlpp
361 
362 // Not strictly required, but bring in our specialization subclasses
363 #include "tcp_connection.h"
364 #include "uds_connection.h"
365 #include "wnp_connection.h"
366 
367 #endif // !defined(MYSQLPP_CONNECTION_H)
368 
Manages the connection to the database server.
Definition: connection.h:60
DBDriver * driver()
Returns a reference to the current database driver.
Definition: connection.h:167
std::string error_message_
MySQL++ specific error, if any.
Definition: connection.h:352
Provides a thin abstraction layer over the underlying database client library.
Definition: dbdriver.h:58
Define abstract interface for all *Option subclasses.
Definition: options.h:58
Interface allowing a class to have optional exceptions.
Definition: noexceptions.h:72
A class for building and executing SQL queries.
Definition: query.h:124
This file includes top-level definitions for use both internal to the library, and outside it....
Declares interface that allows exceptions to be optional.
Declares the Option class hierarchy, used to implement connection options in Connection and DBDriver ...
Declares the TCPConnection class.
Declares the UnixDomainSocketConnection class.
Declares the WindowsNamedPipeConnection class.
mysql++-3.3.0/doc/html/refman/tab_h.png000644 000765 000024 00000000261 14042362133 020354 0ustar00tangentstaff000000 000000 ‰PNG  IHDR$ÇÇ[xIDATxíÝMÁ@†áž~¥ÜÆÎ’Evˆ¿"!•²‘d*×rGq=Š{¼ßSݧçë­ÓÉHÇ uO^õø[À_‡¢ãXvyËþÒ±=·VCffææ{°öŠó´Rçœ%_õçÿŽ¢ö·°Çrug¶(?gh\i>|sIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1DateTime__coll__graph.png000644 000765 000024 00000017237 14042362133 026612 0ustar00tangentstaff000000 000000 ‰PNG  IHDRžÝLƒÈsRGB®ÎéYIDATxí ¸UÇ‚´€Ñ$HTR|Dä J EIR3Ÿ˜h%FŠæÍ4Ê”§©€(˜P@Ï>û,þÿyÄÊÀ\ˆ‹Ó4 Üpà •ÿy”çž{NV¬X‘¦vÓ(-ÅŸxäÀ/@90Ég‰ç€ xÞø”8P#‡<»4Ë¢E‹¤AƒÒ¨Q£2¹nqq±<õÔSòöÛoKûöíåè£.“z˪’^xAš7o.õêÕKU¹uëVy饗¤]»v©¸|ï½÷ž,Y²¤D‘o~ó›rÄG”ˆ/$b·Ó@wÞy§Ì˜1£gJ•]µj•œtÒIrÿý÷˦M›äÞ{ïµFÙ¼ys*OE(¯¼òJÚmpß—^ziZ\>'«W¯^~]ºt‘)S¦X8êçSglÞð˜ìÆot: G•?òÈ#îÜsÏu­ZµrGu”»çž{Ü·¾õ-w衇ºY³fYù»îºËÊmÙ²ÅsÌ1níÚµî׿þµ;è ƒì|þüù–>xð`÷õ¯ÝuìØÑýà?pª}ÜOúS7fÌ7räH÷³ŸýÌò7iÒÄýãÿ°2ßùÎwÜÏþswÀ¸³Ï>Û©0X|§NܲeËÒÂ^x¡»æšk,.ø{ì±Çœöz·mÛ6wùå—;íùîÈ#t3gδ,'Ÿ|²»òÊ+ÝÁléW\q…]‹º¾üòKÇyÏž=]ãÆÝw¿û]·téR+÷—¿üÅ~øáÆ‹ûî»Ïâþþ÷¿»Ë.»Ìòi§p™ò|ï{ßsgœq†]ƒg{õÕWÝ›o¾éš5kfu¨p9íÆ»>}ú¸íÛ·[|ø{ íwÞ G[xï½÷vª}KÄß~û펶„¹’ ¤kÓ¦MZö¼5ÐÇ,Ú˜¢/­[·–¾}ûʈ#䬳Β¡C‡Š2ATL`ÿýïKQQ‘(SäÉ'Ÿ´ž¦ !ÊH¡ž›nºÉòöîÝÛÌŒ \JÐéEÓ¦M“ñãÇ Zé·¿ý­¥½üò˲ß~ûÉ‚ ä£>²zI8ñÄå+_ùŠå  .‹ þºwïnZiúôéf&˜ºÐ! °,*„‚ ™8q¢Œ=Ú4×3Ï®y…7aêß¿¿œvÚi2iÒ$Ó"hSH[Qþõ¯Éé§Ÿ.'œp‚ìµ×^if0\G¦0×¢ µsÊ­·Þj¼Ì”/k\XœrÑ@ô®þð‡Vìá‡vô hêÔ©®C‡NçêÔ©ãÞÿ}ëÁHºªd÷Õ¯~Õz#ùzz§ªW+˽wΜ9) tË-·˜¦ 2 …èa5jÔp|ðE?øàƒîâ‹/²”8¶lÙÒq™H…Ö´gÖ°aC§Bkšà¿ÿý¯EvØa¦U9AÛÐy^z.DÏVÁ0Í„¦2dˆi/mL§BeZ´k×®–í•)õ© Zõ[¬¾@¡]÷Ùgw÷Ýw»¿þõ¯®[·n¦•áúMîØcuÇwjž­|¦¿8 ä7ož»ä’KœvJãå'Ÿ|$•8–‰B"qÆ LR_³fÍ”Ý}â‰'„C¬æÍ4G¯^½DM„àèrÈ!V”‹Ò×¾öµT” ]ª—ñÄ}úé§©<Ñ€šþ”2KÔÄÊ»ï¾+û↑ÈçŸ.ÚÈvžô|d_-øá‡ÊñÇoš­\«V­T½jj-œ”'0PN[-U–ºÕd™FÔ†uäÌ3Ïoø÷“ŸüDT¨Rš7U0À·¿ým«„–Kâg¦jó6a™*‰Æ!4ƒ íÕ¢¾‘©vÕò‡?üAÔ±FUŸÇ„І£1ÕŽG«õK¬QçÎkLRbyP÷_|ñ…¨6õÃ, œã ¬Óî2yòdyýõ×-ö6cñ;wœzpÚ<ðÀœG~\¢î=zØ}ª¯gæ“) yy–¸<Œ!L j$ ó÷o|ÃFMÄ]wÝuf*q„é˜PÂŒªÔWÕš©r¹HÌ/#Àßüæ7VÇÊ•+E}Ò\Чò”é0¾ZµjV1±~ýzÁ·ÔIl96ÁoâÆ;î8QVj«‰³¼üõ¨5m¢N¸=,ñh uŒÍ7Ázà¬~ÂóÏ?/ªÖÍg Ì„¼Ÿæ£ðÙèqø&kÖ¬5©ëÇ‚û7nœùDôÖ§Ÿ~Ú˜Þ¯_?AÀÕÄš/ƒß¦&0õ,ßÿþ÷%S®Å(‰:©AÁµ®¿þz9çœs, ÅÈ Bc 6Lî¸ãã>¬CÁ¯\è¿ø… 9üCk–šÂ†.(œ?.Ìè ŸB&•E{ºÃÆã#…IÕ´Å©#h>P†ô»ßýÎFp7n ¢Í‡R­•ŠËÀÿÀ¯ \”¨'\4=zŽÏ¢¸Sâ´3¤’y¾àž¸N&_")ö~§)U_8@}o¼ñ†£|ñŒIéÑr™FsÑ<ÑóL>P™j ¤˜‘Ïyçg#Àþ¿˜Î û!A\øX¿~ýð©…©+ì?•ȉ 7cJ3Q>õ„ËGU}øžÔq~QJÊ£SÑì©sêʦYxÆ@k¥ &ДeAeSKèN0IØ{f“ó!†ìa3ö«_ý*cqIõêÕ3¦íŠH†éûî»ï®¸T¥¸F™ Nd¾Â§‚‘MÀµ¸Fʦ±‚òåu¬[·nyU])ë-—QX¥ä„¿éÒq ì(é¬,“þ·“=N7äϰLD¿H¬†•Nôª@©i­DÖÏ顯XªïS8ÿGô&,ŽgÅêKªÅ"5j‹¬œ—«ÊÇ{ŠwÕÙ<c|¾QdÙ°¸\U>Þ Pœ¼©BóÅί>š%²}C\Î*ï(Sóo^!²qùÿSª‰¼÷øÿÏ}(Å/@)V„+ÆèIhl±}“𱡡 >pÀ PÀ‰ðñ­‘j¾ŠÃ1êP/ùluzœ?/@Q!øDG^Åk£±z®¯OÞ›!¾jGyжÿòQ"_nƪFÚ*ò戒ñU<¦Ìß…Uz~¾7AA¿LÜKg#|¡ß9É'úaÚ¶u"Eõw¦ùƒŸ‰ŽÊÀ—Ûtîgç²æ‚Ö<+rüNºº~v[Ý¿‰³Ìk 07£yô‹£ºÊ¡)Úoǹÿ/Áï•`I(‚Ot«y…8R"è¹S‚%¡Þ3»+5B±>†3|0xJâYM]7V;ó·ÔIŪRš…U¥Ö.‡gõ¨˜Z•ªôÃø2nmVˆ²¨b• «Q ù?뇕´ºž­ÔBeõØ^•'wÖÃ2aÐJþóŸÿˆ"˜qžD Ü`K¬3å‰Ãúyíµ×R«X3•Ûeqáê}8w°Zä]ïŸVè”SNq>úh*]’lÈ wãzư‡À8‚t‰1ïJ ‰Õ¥¬Æ3 ¬ ]ÿžª‡@iC!fœ-Xz6L#…qº<ÚV +LÚŠa*( V]XÿXí)ŽÅkÛ´<-•åÚ¿ÿýï"jðÓ?ÿùÏ´ô¨‘¨«_ À 8 \€~ÔJ×ï;]ïtŪSô§°vNÁœb¹Ûn»Í@¥ÂË•Ãy!À¶.ºè"÷â‹/ ]@ɳÒn]§oÐ0Ä!HŠêaå‚? wXZKʹ—\É›°$]¿rªÈ¢–(m$…MÀ,`V’ÈF,¶¬]»¶hÀ€@¾Ï’d€"îb©5æOßÐ8)[õ–d¦%׊¢f  w—G½øL Š4U0 î;LS(6“<žE9`przñædB8<Í@É…@áÇ’o:€pAH@îˆ3˶¹?@ß°\( ÓˆzU£XfܲñÒ`yÊ¥u4X=àçdŒâBŠâC&öR4 =(`ð€ú;v¬(›PШ$\@ 8â€G±—«õd:R/š˜@@·¢a-5VP®¶®Jæ[þs/¤ï ð@Q|‰ |3Lø@ÚˆNÍ’xHÀÇàÀâ·(Ò†9Íø¢›¹SO=ÕòýèG?r*¬NñÍw ×ä“Q?þ,~–âJ:Õ.„ªŽÈaÒNaÀ©j:ÃÑ9…ýLt¦.Ä­%²zºÈIzŒ!³òJÁœi‡©B+_C`è$h:À¤2AÛÄÜFNÑ„*ú¬(îbZþ|Ÿ!\Ø P˜Ñðª'uióK"-v8ÒÑd®_» §<#<JËïD—–s¾œqÀ „‚8ਠöùÂ^€¼ Ä/@Iìc @ žb9à(–5šz–”­*§yªÊ­_Ïî(‰‰~]Xw,Í P‹˜cõëÂ’8äá]¹ã³rÀk $ùuaIܱ4ÿ.,+‹|†$x ”ÄŸ–•^€²²ÈgH†$îø´¬ð”•E>C¼%qÇ¿ K⎥´6>Ÿ-³ÞÉn˜áÅÒlPGdþþ>õ­·ÞJmåžo3$@\Ì›/Ëw¯ül)ÎbÂ`]Y¾wçMX¾óùÓ8à(þ$_xÊ—c>*µmݺUž{î¹´*ôäõ×_7|ŸqãÆÉæÍ;Ç ­´ŒÊ\]–LÕ‹-¶C¯ªÔòÄ¥—^Zf|5£[·n¢0(€¨>ø`™Õ_hEÜÓõ×__¢…o‘3f”ˆßå*@x÷;v´Fœ@Œ¯_qh ˜ð à¶lÙ±3ààÁƒE±wDqrDט‹âÞÈUW]e|`¹¯®7€‹/¾X )?­Zµ2X“† J÷îÝ­Îûï¿_tíº(.•›2eŠ•A» 0 -ÌPöÆo”™3g ÷AxÒ¤IBF] /-Z´zõêÉe—]fË‘HÊÀ€U! D2P80¢Eפ‹‚@I§N ^…:!–7xÀ½´ ëÚ-¾C‡rÝu×I—.]bóÀ©2ÞÏ`…õ1úü²¥¼©\¨¸¸Øz „y0§k×®rß}÷‰"{XW>}º®?W3fŒ(2—Ü|óÍÖðà *8€,]ºÔ0u7nlõWFO˜h,0vœÉüàá¦M›&ãÇz)èܼyó´ðâÅ‹m(‹ÐD}A9ÐvO?ý´p_ÚÇl/\ëÖ­¥oß¾fþ@ã:t¨lÚ´ÉÒ{õêe÷ÍsÓiþøÇ?š@¿ñƶN~ذ{²òœt:Q\ÊôéÓGè”ãš7ož<öØc†ósöÙg ?ðˆÊ“j”gåÔ ÓG­úiqj6œ ”U™•–¦fÒ½«Îu*ÄQ`sµ·¦PÂR‰ òƒÆ%rÀ몰F“2žƒb¦ìTk•¨Oµ’ÓNcåt~'cqy¨Oç}2^“Hí4ö̱B :Jvê_†bò –»MÈ{÷îm2Nr˜_ ª>j<¡E?)œž/ÒW\~zsiR|~aÂlö¯‚8Žqy¨ ÔÕ8…lWQAÕ£.U^ ºWÔòþûïoo¹VÄ(޹£ðøÌå„·À1&£¿Ò×À‡Šuâ 1‚ÃDÅŽ6¦9ìHÇå­¨xÌòµ×^kæ¹4÷Pá#_ÂQ åBTFBLæ1¢b" _‡i„8ÂA&Ú-JIðª„ICó£>Ú´õS6I€}îÎÂ}ÞRçgñÒsëÓ#vᙎȜ:ÖiWŒ¢Ä«œÚf@T§¯& Õÿ ÿ"ŸmtTèt*u=56?#Û6øKøaqÛ²Í@êf êUØ(¬4Ò’éßþö7ùæu#˜$băÁìm¦™]^­à71)™ï,î’%KlBM„¦š8q¢á:c²˜NàœW9ÙêE£1“ݤI¹õÖ[cç©’ž³"Ó*1½@<þøãÆhf­™yÎF˜fÙýå½\0³ËÜ ñøq8±q³¸Ùê'=Û68öqÛ²Í@.÷VÞy*1©HƒƒàŽã‡æÈFÌñÃw‰›Ù ê(d7i6:×zK³Í@pïyÌÞ yw¡k3“ÌÛn^"¢‰x1›´ †É8^l¢…âfv¹Dyo34;Ì u©·ñ§¢‚•F€05Ì´òª‚F2 …vâe$#³áÇ[–L3»h^âbFr™Ååò¡àž9ÆÍ«#oo÷™Ÿ?¾ÍG‘ä󹿮Î[áó@…Ê PxøáÙR\¼=-eÉ’÷u9Ϧ´8"~¯Œ¨,[¶F¿ ,)(|3=yò‚hö*î5PDÆQ—-—$غu›~úêÍX„]âgÇ"aø^­šÓu\{Û’%æJ÷Úk‡?´téjý d‹~[ºeB‘Kí§½ÊØ#8yˆââÏõÕÅ”„iΜåú öY– ¡ª];}`¤x•;õ(Òä¼²hР¶ÅÖ©³i¢à<’ÕŸ*¼äÅ  x*ˆ}¾° /qÀ PAìó…½y(ˆ^€ØÇ2°`(![•Nò”ÐüL"*¸FBŸäÈË@Að”À>o˜³3É P¼ K`Ž ìÌñ9²sÀk ì<ò98à(‰9úGžˆ. µí™I^€Ú•!ü¾v2áésKò”Ÿ|®xŠaŒÎ^€øä瘳3É Pü2aÂÛâ›m6ÙŸõ¸ãŽKm³Ù°aCiÔ¨‘Íš5Ò®];éÕ«—œþùVÕ˜1clSàË/¿Ü· fÞeã[…Ïœ9SFŽ©+g¿”sÏ=WºtéÜÞ.=VˆD¯cßÓÞ½{ÛŽÊC† ‘¾}ûJÛ¶mmûí#Ä6Þôô˜0±‰m@ìçÎvÛ¤#d)[]²ýä|`e9æÛJœ2 &$¶ˆÐ»@#\‹½NÙ’ü¦›n²=à€äôÓO—N:I«V­¡@ÃÜrË-²hÑ",Ÿª)=¸zõjë<ÙøÃ6úÓŸ¾âŠ+ìï¾ûnze»è¬Bˆg£áèIôXŽAxݺuÖã=öXÛŒsD˜†EK y*L€:è »OT? ¥SN9EfÏžmšŠ0Nëí·ß.ì¯Îòô<¶öÆñ ö§a£Þ‰ÐAA|8.Z6î³Ù¬Y3ÓfW^y¥¼ýöÛÒ¢E 3£á2\‹ú‹‹‹M¸Ž8âæpž¸pxnöZÅâ×±cGÓÐqu•g|… P¶‡Bk°W E­Ó3£Dãb¶•¡)Fˆ‘„‰ëСƒ…™Eg…á\ƒÙ\üü®‡i½êª«¬AÝ·ì#¶À/ÃïÁ$c: ¥N8ÁüºnݺI÷îÝm»p®W´Û‚á1Îëa‡f#œXmsÎ9çØ±uëÖÖ@œ_}õÕ–4'A=h%´þÂC£BÏ<óŒ<ÿüóº#Ï ^»Œ1BZ¶li„Ñ4ì/ß¾}{«“{Â_cxü¡C‡JÏž=${Ìè¸qãÌ â«az/¸à|®YTTd~áÒÏð±и~cEP™ãDÓ0 ŸƒF)ä¡ú÷ïo#'4P@ØýÚµk§™=„í0vìX3MçwžeGã >\îºë.Sõ0ºæšk„aì³Ï>k=ö˜ýòË/I7LBüÍ7ßø$~ðÁù<üøãÆD3a<òˆk±XèÏ?ÿ´¨Í^ýu{üñÇ´HBýí·ß~K„"ûL9Ú§yï.êÚñ³Ï>‹¯14fäWLd¬<ð€kÞ˜ÖìuÆg´k®¹Æ&šh¢¤ ÞÏ=÷$ýøý÷ßíË/¿ô|úRk!$ uÚMöX'žPfÓ‹ž%$~’5pàÀäDk‰%–Ë-·\ò¼È"‹ RXtÑEÀ’¦Äà0Â#„3Ï<3¼ð aê©§cŒ1FèÓ§O˜bŠ)Âk¯½æe5ñaÜqÇ }ûöõòóÏ?}ôÑ=ïC óÌ3ßo²É&a–Yf ã7^i¤‘üý[o½µçÝxãþ¼ä’K&y”ýè£<_“ïù÷ßî³L„0Úh£…GÑË-¿üòA‹ÒËVëŸL¦Àø#½ýöÛ^ÿ¹çžó¤ƒ>Øû3ÖXcy:e¥(1õ‡zÈÐèhå+®¸Â5ñ«¯¾j›nº©=øàƒ‰Ö¸á†Lkl°}ôÑ6å”Sºæ¥ÞÄOlgŸ}¶ká-·ÜÒ$À¾3°UG ß¾jAØgœáZø‚ .0~7ß|sRdòÉ'÷B‚à»ÀAäyZX¶ÿþûW(ýüÎ;ïØ6ÛlcÛm·}ýõׯ;´mðàÁ ÷ÏÿÿøuÜqÇÙi§fß}÷1¶§žzÊàK;èÚk¯µ;ï¼ÓÞ}÷]ë>ûìcGy¤IÁy»Uÿþýý¾Ûþ´M¸¥el²É&³UVYÅy„ Hñ“eýõ×7ij»þúë½ ÛçŠ+®è¶ßtÓMgO?ý´p öÕW_ù‚8餓LÎ…z—]v±©¦šÊ(·ÕV[ÎÃì³Ïnm´‘/ÊM;í´¾åÇ ‡~¸:ê¨6ýôÓ{;ÒÔžÅ3ïŽ~¦¿˜0k®¹¦IóºY$má‚Óhÿb?¸N8á„Æ¢_yå•}Ñß~ûíÞo„¾Äص Ú~ûíç ‡±ÓÒþ Ô6ážd’Iœ_Úúü:à 3ø52RÛž 1^=Z 8dÈ׿dq ÙÑüsÏ=· 1v±Ìogá…ö+¢vMR7Lhš h_’>Í4Ó$ÙØ¥,¤ZmìÍ6ÛÌÖXc ÿ±e5Ü?4e$x²çž{ú‚¢m´lä_,ÓÊUæ›Éäs?Hf”/¦ã?¾•&;ªnÛ„ó¢B€Ñ–çwžÉ¾¶ÕW_Ý«Ý}÷ÝF &N¨ln“=š8Fi§Œm¶ˆ€Ã" YÓ‹!ÿðÃWäÅzÙ뤓Nj²á]Ë²ØøÉ†wS*:nEýcq§W ºH—]v™Ýu×]®µió)*ƒX¦•+&ÎsÌáŽ=ãÞyçí˜cŽId+mwBÝú$²#YmµÕ\ãvØaFpÖ(£Œâ­Ÿþù¶ûî»»>묳º–—äZí‹Mª‚­{Î9çöˆ…ªÂbA°¢iD%¶fÚÁ$AXuÕU½-ì]Þ} ¥Ÿ)ÊA]4ý­·ÞêmbF°ËTë;Ø+¯¼â»‚}ÔQGyûüaB)°@@yؽ@NÚÏñÞu×]ב#|úÂÎ0òÈ#ûb¥ Gì ]IY/¹Y´DN 7%­êž;^;$øÌŸA+"`ˆ™A°ZL r4ƒJGJ@:æœsÎ HÐó…á:B™(hɼóÎëå@Kd“'eAX´ {^DK¨K; ZhAžç×BKÎ:ë¬ ¡ðºÔ úé§ŸjöO3Ì4ÓL^ÄB~€ßƒ–P¾ùæógP#-¢ »ÞÇ(­@KâØüE@šèS-ÑB  CäI‰-¢ ?Æ[Ñ"õgò´  ZîŒä"´„U[A wEå:€m´]ö(-„OH–d«:\Èb’wºÂpÐ΋/¾„Ø$ÙQ¸Éc2eþ$yõÞH»:ÔÖhÿ„#û˜d&å¾J»D’ä {Ú)’g GiýÂ_zœI¥Ô ê“O>™@Œ1KxwÅ{cz§]‹„»0ž[+ºíÄ–ï½÷&ðW–Ø2……g“ýóEÚ<7/›H;ØšE”u:‹ÊeÓ;Zh¡l²?WëvtÚ‘Í6ÀÁKšÒ>éØÎ§ÓE*îá%HUÍ<ó̹Y˜'üº•zU¸Á¯µ½Øòæ›oÞ4O±Q\pÁõœÈ<â¨Ä¥[Þ{H+ê_QùZéË.»¬ñ+©Ad· v›%š·§³ïiæuß}÷uûQ©›(µ¶åFß…I#§´¡jrÞ‚` l?h‘9§A¨PCmT+,Ç/È‘'žxbÐîW­hEž0î ³„ 4ª"N+ÉÓaY¼F¤¬‚œôF«µ¥ü03K8‘ÓnqÈ„(ÛÚäˆq(‡WCPy7§‘Ä[pTi†•ùØqÇ=¹òÊ+ý¤DŒ¹"Y’¤ì€À¤ÀzµÞpbŒI•Õþ§œrŠ£%EfK­¶Óùì˜iÈ37Ìî³K§ÝšäC'|˜ ´G½ŽœUÑ5œ1bFŽ=öØŠôÝvÛ-Œ9昧-ŽŽ)ŽY–ÐþäáÀ&¤Ël¿ýöÞ–&ÃQŒlÝ¢gEØ9"Á#‚I“‚Ç‚„-ÐÇ, ëv„ˆ±w¢¨°+0FÚÝi§Â8ãŒp²kq> % 5¢»ãÒARÒ í NuçûH‚VÃçŸîN:Î)õÓN/ü¤}vQÊA8² ^E;+Î};¨Hsu´á΂‘²wÑE[>Þ»4^Xf™eÂX1n\&̺bR„% w³N¼ŒEÈV½øâ‹7$Ü—\r‰/»½cªðƒ˜`¶nø@ðc‰0%ùÂý=¨Á>da°¨Ϋ®ºŠbNô“v´sŤÂ+½Î:ëôh˜Q¡ a®¹æJ„8V¾‰ LÚP<Œ§e…Åé€ðæøœ½‚㣠âs{á…vòz¨H¸{ ‚‹¤Ió[°[¢ÕdGq%Yg'–Wb7ÀÉÅlÓà=™8Ú¸øâ‹¨Át€S¬Ç•8b7 t_²x²hâhhǰ 7ÜÐ4³K¤Ðw6é›L+ºŠ¯:4ÉGãÓF$" #i‚=WÚßÛ‚_ÕpíX/}%„‡÷¦›nòpÞ—Å×µð=d~AÈAš€8#ëC²ËcRÅ5ëS¯Z€šÌÛa‡ü‡Ž#¯…mDxüÕ,õJl‰œ¶¤DÓA p4A+ÞPo2W<&$5—TÒ ANÒBóÓ‰— ªBø[ pŠm6s%î%ûOŒäg¸ ²!„‘1²ÈâïôÓO÷zŒ#xEym÷\œ@`@‰ø”LöiÂM#D0"àÒÈWÃÂK‘“ĶÈYõ¯¥ø*{–ÐÈA#jÚõŒïEe2zÌNŗÛÙf›-Ýņï{E¸œÐn5rÉI#PÚV¶µÉdð¸k&åJœsšlV8ÐAÀN|p@ ’Ð_á­8¥ß•wó œÊ#‚ÁÁ`) ”“XàÀ¥–ZÊ«ýH á¾uãÉöz™gR—ƒ.ÆñIØE]äÑ“œ¼ê+šä'ÎËÈd0´n-bg!è‹0+ÜÔ•sè‰påK´<|n†ŠÔÒmñ¢*Ÿs>òf'‘Iä2Á3q÷-QÖ¦P ´tòyŸå9‹ôD;ÛK_Åd»æP¢VµÛz´·‰Ó£°Ñ¤l³NIºÁ¡\`ÒIîáœö;6-ýâGÐÖÚk¯ÀyØä<Ç|ʦaM§@“ÈÇcœØÜ A±Nö˰íùœ-°¹õ%“g›-F"@ {‚ç8ä 62Ù‚N’ݯ¹ÒW<îÅzØÉô'Úþ€i´$ÚÏøEéµXŸ+¶~´¯e›¥"›»%(o¸(¨l4Ž"§liì4æå]‹œ °Qœ°jCñ.¢£'Ÿ.ÃEW-+]>Þã@±H«ï%šÅ[4Npn„„%KàÚŒ üXuôp(³åã3Θ>òˆ-]Axp4#µÆèǘVí¡ÀzÔ˜‹vP‘p·äP{ÌIY± J[y6'düꥢ€¶æZ'jÍ8Uëæ”ŒªññÕr€ð1øå‘à0ã×(a¶Äo"­›-O ¿HĪ7KµÔ¢SÚlûµêµ$Ü|IƒƒÓ©„ŸušŠÆRôŸD‹Ê·šŽ3šRáü /Ä‘jÄùZ}oI¸‡V§z«]¾ÐI¥Ó[ï­ç=|݉T;¼,¶^AK:q’Ê>w>Jáîü9,GPÀR¸ S&w> mî<¿ó‡[Ž 9ÀH‡UÄ1öÐÜÀTÙ£äX¸¼–9À±½Bw{t­ zÔ2¡ä@p ‡æî‚1•C(9à(…»„®å@)Ü];µåÀJá.e k9ð?;{8ôOˆIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1FieldTypes__coll__graph.png000644 000765 000024 00000010313 14042362133 027152 0ustar00tangentstaff000000 000000 ‰PNG  IHDRs\]¹ŠsRGB®Îé…IDATxíU@û¨b@QÌ‚Y1 ¢b.sÄœ&0£eΊ9+j™3 #ZЍ€ŠdE„NNÆ~MýqnœMÇÜÞîÜtÕîü™ùóCwÿîþ=»Ýž‚¤ 4JÄ,ÒIRb&ˆRb&ˆ˜sÍ¥²²R>ÿüó\ÕÒûuŒÍ6ÛL–Yf™¬½äEÌW\Q6Ø`ƒ¬ ¥7ëßÿ½Ìœ93'1S1[w4(zË)1‹Žòºë0%fÝá¶è-˜¿ýö› 2¤è-ÕG-S§NexuFÌ‘#GÊÉ'Ÿü¿A~ùå—ríµ×þïz\N?ýtùì³Ïâj®ÎÛ¹í¶Ûäý÷ߥŸXˆÉj;ì°Ã¤uëÖ²÷Þ{Ëï¿ÿ.ÇsŒôéÓG®¹æùé§Ÿd—]v‘víÚÉÝwßíü’K.‘_|ÑÎ]yçw–O?ýÔ®qÜo¿ýã•W^)«­¶šl¹å–2tèP»ÿá‡𕽯kÈM7Ý$O=õ”<ýôÓr衇ÊôéÓåþûï·gVYe¹ï¾ûü~Î?ÿ|Ëüùóíšûš0a‚tïÞ]~øáwIÎ;ï<9å”Sdíµ×¶9€|Ʊí¶ÛZûì³|üñÇVðàÁ²ÿþûK>è뤓N’•W^Yºví*:tðûˆ« 1Aâ’K.)ãÇ—å—_^úõë'·Þz«l¼ñÆrá…Êõ×_/loúöí+¿þú«?v¶;Lpåõ×_ßžçõÛ·o/_|ñ…½ÿþrÈ!‡ØgÁ‚rÑEÉUW]% 0bí¸ã޲Å[È]wÝ%M›6•=zÈ£>*÷ÜsÜxã2gÎc¬—_~Ù˜ªI“&Æ(<¿ï¾ûÊÖ[o-5’V­ZѽŒ8|øpËŸþ)Ï<óŒ¼õÖ[³¯½öš0^Ú8r…žAZ½÷Þ{†#p;àhÏ¿üò‹÷ÕW_e«â½òÊ+ž"À»ì²ËúÈÛn»í¬¬\í)B¬üøã{{íµWÆöTäxm´‘ÿœ"ÀÓUéí¶Ûnž®.û4kÖÌ6l˜·Â +øí(r<•Þ®»îê½û2‚§„÷ïëjõ^xáïØcõî¼óN»NE¾·é¦›z?ü°§Äöë»Âá‡îÝrË-vª+ÊSÆ´²2©§êÂÓÕè1?`Ýu×õTjDâ㬳Îòn¿ýv«÷óÏ?{Í›7·2ãQ±r¦¯É“'{“&MÊtÛ¿ËÊ<à€¤W¯^2mÚ4Q¤÷:®cq]o—–Zj)w+òÈêš1c†¼ñÆÒ¸qcQDË?þ(‹-¶˜Ìš5Ë>¬F6ÑHË-·œ´hÑš¨DJ8`ÕÕÕvêÆ‚X¤í#¨ •×éÌe8ÉWgÂ!Y!_bfm$Á7ÕZ6èÕW_Í{–ª[}(Ÿ‡ò%f,b¶Öb¡Dâ¸È¨‡f«âßCÄŽ1B:wîì_ËUÀ ŠJŽ˜ì Ùì×|÷Ýw¶oÌÔ¾®騱£YÍ™ê¯c­êà½lå ¥­^!÷JŠ˜ãÆ“K/½ÔxŽØ288úè£åí·ß6Ði§fNŒž¿þú+£‡È=<âbuBT¼UlIphœqÆV ã‹6?ùäÑý ì¾ûîöKB‡î§ƒ—êµ\RÄÄ*ÅuÆáÔSOÕCæTƒFÔ1a{:¬áe—]ÖD„yóÍ73zˆ¢0ËWUUeÌ1ñÜàÄá­³~qöìÙÓ¯—>|ðÁM2ÞãŽ;N6ß|syòÉ'­ÍŠ|RRÄdÉÆ}ñÅ—•VZIp àcEî´ÓNþ›ösÎ9ÇÜ€ø:!&n5ü¥¬&ľQ¶6¹€­ Œ£ž*YguŒÈK/½´íi[¶limã3†h¸Ûε‹ß–νçž{ζF7Üpƒ»]ôcΟ}D£¯¿þºíç(;p¿…Ñ­9XiÎCDÇ’&f>Hëü‡œ:Å `÷â÷¿GË£¤o´ô}å}OÙ^÷žMËcУä¿&¹ /bò’·\aèЉêê¯FT'û”ë<òwâÅlŸ>ül³B}¯ƒóÁGY×I41««¨—h”9&L˜¦{ÓYeM¬\ƒO41¯Ž‡…SdoÛ¯ßð\ø(ëû‰&fïÞCÕíWeš7o¾þ4ÙÿqI,1çί?µWãMÈÔ©3õ•Õô²^}ÙŸXb0Vý¦5]wø7ûö– e}/±ÄìÕkˆTV.±ŽBUUÕúg¦…:r×’tL$1gÍš«A5&EÒiöì*3fJä½r¿˜HbŽ;Eÿ¢P­ŸæöiÑ¢‰þ‚®™•y©‰ÐåNÌœoMÊu‚“&ÍÐ_#,°áwîÜS]õ7D _­µk×Zî±ð/å:¿¨qçtçE=T×Ú¶ýï`¶jý/¯r˜O>cL¤˜ÍgâI¬“3ATM‰™3AHÐTÄÊÄÉþe‚hèO¥A7^Ž_”ú)çBƒ f9¨±§Ä,[%^·A3Õ™%Î…… /Õ™…`+­[HÅlI!žA4b¦b6fI[)"ÄÊ,">뵫AÌtkR¯<oç©ÎŒŸikEÀ@*f‹€äbuÑ ˆ™ŠÙb±SÚOlh+3µfcã—úo(³õOƒt…b@¹Ö~L´®Ä}š6mãUT4Jܼȫ„¿h'”5!;O<ñÄBy"­_d ?ŒØ»AhPpÂI.§ÄLuSb&ˆ˜5tf)Ì‹p D¤tñeeLÄ\'¸~ˆ½§FƒEÐÌÔ©-JL¦?ä!# ¡S ÙÒO¹Õá{Å:/9b‡–Фá¨ËµAÈ Aƒ,Æ;i­€t“=1IÏH:ò:˜¬)2ž}öY‹ûí·ßZîL2ôº|&Ä”/;bbEØ.%F:“!³t N¯©-F¬¦*´l¤˜Ð‡†ž% =õ@&ù1Ÿþy ÌKX¢.; K)|A\ee¥å#™Y )(È Fê “LíÜsϵ¦®L[Ë'øpÈýÕ¦M[¡šÒú“3“@þn¸¡_•ì –@Å6HêʇDtcÆŒ±¼g\'éyÄÈ-Æ=¿ýöÛGÎÆ ©*ñI*@; <‘c“ù‘ /WFCú BÁ:söìÙBªBÍi¢ˆ¸ä\pì°Ã–Åä¹,t$%À.ñRÉFKº²ç½ôÒKB;$ %8=é(4礪Îvƒ#€=)(H‚1H@\åsNÚE—"@T X&»ˆsÚ…8 ndÎ#+.H%P?aà €ÆdG ¯l@¤h$£qži0¯I øï¼óŽ¥Œ$<9 _›|)“Á²"à@"-rtet ÙzHîWCtb­7–sÏ$!>„&cmÀÁ.·$í;€A¨Oä¦t‘5ɤ€î#FºKYÌÞØ‰Í`™¨œ´á>ÁÐÜHD)+ŒèÓ¤gt}0Bƒ“y%^|6 X$óܼ)‡ç€gî0aÇÏ0~yŽÀþÌ4“…B­t¦K-Lxí°(ÀhèÔ©“å¥D§è$ß{ï½–¢—œÓ¤E$@½KÈ ƒHv“¦ª@Œ»Õá®sxíÙ€¸ædŠâÏ#ÞãRœÊÊrzÐ]j‡kHÔ BbÚà n¬Ôa¼¨'ŽÔáƒH%¿ cu“P‘_¨ÝP«•ÉÀ²+ ˆbU2@Í Yp&F+‚è¬&ôH%_œÌ °6yŽU ±Úbõ†Ëv!ÃL1Y}èA²#¸ì¸0*c$98Ö¯“š²¿ "ªÉoÍüÝ_Ãs O¤ M’u¤V7R‹ñ“Zƒìà¨P¨ÕÊÌÔ‰›H`èB€ôJè Œ#ˆÀJaB$.%‰C"õ];ˆf&ƶÍu‹¥ÉÄÉ]‚áp‘´éÊv#ËãDWTú8á„üí}‘itR0&’KàštãtçˆZ²3èFÍ9ÁÔ’ é3c?h^lÓçv…BÐ1t@:¤EõÍ">àvÒ;°Â0„X©áý„Ä…`ÎšÄø@l¡?¨ïˆ ¢ "0(¦ x°>§ 0À|ØùôEÄl,R2 ™æÀ=D-+| Ñ£‡Å*¾ØÐ;±®LÅÚ¼îºëÌ`p„ä:ŽJä…@ê;ˆºÏDóA®k#×1¸Ÿ ×E çÓiïÞ½ýlÁv¢æ€~ §ê€aÑŸµ…ØW&"ƒÂùŒ­“y~·Ý°ýBF!Çݯ¯#s†aa™æÇ‹²2±J %$“ Z}œ‡‰È5  ɸØ…!ÓÂõâ:¯k6®Á¥íˆà›ê ý¥¢$q¿2`Ná_ÔЙòAZ½Ä0ŠÙ#È¢ '%æ¢`¯ÄžM‰YbY”áü 3²îÝ'IEND®B`‚mysql++-3.3.0/doc/html/refman/myset_8h_source.html000644 000765 000024 00000067731 14042362133 022616 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: myset.h Source File
MySQL++  3.3.0
myset.h
Go to the documentation of this file.
1 
5 /***********************************************************************
6  Copyright (c) 1998 by Kevin Atkinson, (c) 1999-2001 by MySQL AB, and
7  (c) 2004-2007 by Educational Technology Resources, Inc. Others may
8  also hold copyrights on code in this file. See the CREDITS.txt file
9  in the top directory of the distribution for details.
10 
11  This file is part of MySQL++.
12 
13  MySQL++ is free software; you can redistribute it and/or modify it
14  under the terms of the GNU Lesser General Public License as published
15  by the Free Software Foundation; either version 2.1 of the License, or
16  (at your option) any later version.
17 
18  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
21  License for more details.
22 
23  You should have received a copy of the GNU Lesser General Public
24  License along with MySQL++; if not, write to the Free Software
25  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
26  USA
27 ***********************************************************************/
28 
29 #ifndef MYSQLPP_MYSET_H
30 #define MYSQLPP_MYSET_H
31 
32 #include "common.h"
33 
34 #include "mystring.h"
35 #include "stream2string.h"
36 
37 #include <iostream>
38 #include <set>
39 
40 namespace mysqlpp {
41 
42 #if !defined(DOXYGEN_IGNORE)
43 // Doxygen will not generate documentation for this section.
44 
45 template <class T, class key_type = typename T::key_type>
46 class MYSQLPP_EXPORT SetInsert
47 {
48 public:
49  SetInsert(T* o) : object_(o) { }
50  void operator ()(const key_type& data) { object_->insert(data); }
51 
52 private:
53  T* object_;
54 };
55 
56 template <class T>
57 inline SetInsert< std::set<T> > set_insert(std::set<T>* o)
58 {
59  return SetInsert< std::set<T> >(o);
60 }
61 
62 template <class Insert>
63 void set2container(const char* str, Insert insert);
64 
65 #endif // !defined(DOXYGEN_IGNORE)
66 
67 
69 
70 template <class Container = std::set<std::string> >
71 class MYSQLPP_EXPORT Set : public Container
72 {
73 public:
75  Set() {};
76 
78  Set(const char* str)
79  {
80  set2container(str, set_insert(this));
81  }
82 
84  Set(const std::string& str)
85  {
86  set2container(str.c_str(), set_insert(this));
87  }
88 
90  Set(const String& str)
91  {
92  set2container(str.c_str(), set_insert(this));
93  }
94 
97  operator std::string() const { return stream2string(*this); }
98 
100  std::string str() const { return *this; }
101 };
102 
103 
105 template <class Container>
106 inline std::ostream& operator <<(std::ostream& s,
107  const Set<Container>& d)
108 {
109  typename Container::const_iterator i = d.begin();
110  typename Container::const_iterator e = d.end();
111 
112  if (i != e) {
113  while (true) {
114  s << *i;
115  if (++i == e) {
116  break;
117  }
118  s << ",";
119  }
120  }
121 
122  return s;
123 }
124 
125 
126 #if !defined(DOXYGEN_IGNORE)
127 // Doxygen will not generate documentation for this section.
128 
129 template <class Insert>
130 void set2container(const char* str, Insert insert)
131 {
132  std::string temp;
133 
134  // Break str up using comma separators
135  while (str && *str) {
136  if (*str == ',') {
137  insert(temp);
138  temp.clear();
139 
140  // Handle comma at end of string case
141  if (*++str) {
142  ++str;
143  }
144  }
145  else {
146  temp += *str++;
147  }
148  }
149 
150  // Save final element of set, if any
151  if (!temp.empty()) {
152  insert(temp);
153  }
154 }
155 
156 #endif // !defined(DOXYGEN_IGNORE)
157 
158 
159 } // end namespace mysqlpp
160 
161 #endif
A special std::set derivative for holding MySQL data sets.
Definition: myset.h:72
Set(const std::string &str)
Create object from a comma-separated list of values.
Definition: myset.h:84
Set()
Default constructor.
Definition: myset.h:75
Set(const String &str)
Create object from a comma-separated list of values.
Definition: myset.h:90
Set(const char *str)
Create object from a comma-separated list of values.
Definition: myset.h:78
std::string str() const
Return our value in std::string form.
Definition: myset.h:100
A std::string work-alike that can convert itself from SQL text data formats to C++ data types.
Definition: mystring.h:140
const char * c_str() const
Return a const pointer to the string data.
Definition: mystring.h:288
This file includes top-level definitions for use both internal to the library, and outside it....
Declares String class, MySQL++'s generic std::string-like class, used for holding data received from ...
Declares an adapter that converts something that can be inserted into a C++ stream into a std::string...
std::string stream2string(const T &object)
Converts anything you can insert into a C++ stream to a std::string via std::ostringstream.
Definition: stream2string.h:41
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SetCharsetNameOption__coll__graph.png000644 000765 000024 00000014754 14042362133 031156 0ustar00tangentstaff000000 000000 ‰PNG  IHDR­‰^’¸csRGB®Îé¦IDATxí]tE¾½÷"R¥wép蔢ˆÒ›ô&ðPP‘(  ÒŒ‚´@B9”P¥£é¤H¨IöŸïâ<÷=6ñ=²+oóæžó²³³3wf¾ùæÎy›7~šR¢°‘‰ìSWUS…Àsil‡€"­íºLUØßܾ}›2fÌh‡ªÚºŽ÷îÝ£Ô©S{}lCÚ ÐÉ“'½P»V0gΜtÿþ}[V¹ve™×[‘Ö‡;ß®MW¤µkÏùp½máÓzCÿ\¾|™ÂÃéX±b¦Ug×®]tàÀ ¤ *¸­;22’öïßOÕªU3­.vR¤,­›½µnÝ:š2eŠ›©ãNöìÙ3jÙ²%õéÓ‡.\¸ÀÄý AƒâÌX¾|yŠŽŽæÓúõëãL›&Òž={–j×®M-Z´ |˜š7oNuëÖ¥¬Y³Ò˜1cøÒtìØ‘J–,Iyóæ¥Õ«WsüâÅ‹iäÈ‘>|8ýòË/ôÃ?0Y÷íÛG&L éÓ§ÓÞ½{iîܹëÛ³gOêÖ­× øÔ©SÔ»woBúÆÓãÇéèÑ£¬sÆŒ”+W.Ê‘#}óÍ7·hÑ"êܹ3•+Wް+€ò”àÝo—'NhbË+Îj;v ïPh¢5ÑI–Q[¾|¹&:N»uë––,Y2MìùjwîÜÑÄ”¬]¹rEK™2¥vúôimÛ¶mZÁ‚¹ŒÒ¥KkS§NÕŽ9¢ bjbh³gÏÖºté¢mß¾]óóóÓV¬X¡ âh™2eÒ®_¿®7NËœ9³öçŸj‚˜šp#XWXX˜&‡Åáü]»vÕ† òB{jÕª¥Íš5KƒMë7pà@MVÛQZ¢D‰´7nhhk¡B…4±¯ÊeŠÁ§-]ºTË–-›öàÁÆ }úôÚž={41`íz¡@]„ ½véÒ%]Œ×#”O›*U*„ ѱ”=Âúo cbb(**Š“¡ýà!l&‡ÊŸEÚëø¢XÀàƒ0,p›6mx´cǶаÈ=bò‚ðo]ä‚5ÇמÂ] Ò‚8ð=S¤HAeÊ”!ì:HÿS¸$\êС9s†àïB@ª±cDz]±bEŽÛ¼y3_W®\Éuäñ3‡XX¤Ã7Y(g÷îÝì×Ëç õš ÜƒØ: "üOþ*[O"üP¶Ð¸ÂÀ"«x¸PŠÔƒ) $l=µjÕŠó ˆƒéÓ7v~É’%$üe¾51‚IÕ¯_?ÂTÓ?¬)Ü”U«VÉ¢˜ÐÈBJ«\¶lYjذ!Ï Hˆd5Ø: _–h‡«Èz»ÆÛöÞkÝm]ÅÜYˆé’ÇÖ‰QúDXˆa¦,hîÞ½« 6ŒbòbUªTÑ„5昌ÇBlÔ¨Q¼àC^wDl_ihrzÁBlãÆ¼0ÖÞñHXY^h9"þ`‘éªÃ5Ϳݫ…˜—aXGLÛX¤è>¦«HŸÐ5^Þ‹ÂÇU¤w7ºÇB–96Áv•^àŸÕË“2õúìöÃôöÊãí.ìOÆ÷-/ø“ØÏôDà€\øÖ ?7""±P’º>|ÈAìZÄWà+CëB2¾zãÊŸØu Ä•ç=‹ô ŸV‚ë)a‘–Y/°vre¯7ƒ¬R_š4idP] ð©Ýƒö«("` K Ÿ _eÚeìçç/܉"bëì¨ØÎŠ¶ -ìð_ Ó–¤…ëm—Ϻu‡„ Q›ÂÂŽÛ¦ÎÀV‘Ö6öÅüŠíf¥‹ýf¾r¥Ñ–ÖNýôèÑSñÍØŸlaCB~ß`ÙÇ=° ζpì&êzD|ߟ˜«œ8qbڴ鸪o‹º*ÒšÜM î_ï>a­)(h—É%(uŠ´&r <ü¡ø/„ NÃÂNÒÇOâÔMüP¤~N¹ƒƒ‹o±œ! H,\†?œÒ©›ø!àŒpütù|îùów¼`U#"žÐ‚;|3P¤5 Ík×îÑéÓ7 µóëþýû´~ýz9qþüyªT©Mž<™ÂÃÃiÕªUT¹reZ¼xq¬º@ÔÎ;ósœ~éÒ¥XÓúü±ºLR²dIMìÄÙ–š5kj'Nt¤„ÔA´^½záEB­~ýúÚÒ¥Kµ.]ºh‚ÄZPP&HÎéßzë-mÀ€ZÖ¬Y5è¹{÷®öäÉN›+W.­GZ­Zµ8mÛ¶m9­£  ÓR¥J¥ ¬•-[VëÞ½»–9sf­U«Vš°èZ‘"E´ÀÀ@môèÑÚСCµÐÐPíéÓ§Z·nÝ´ôéÓóó­[·ÆZ}Y®a±{ ‰Aäm×ûŸ²´ýû÷§!C†P¹råèÿû RÅŠiüøñâ§9‰=°eœ?>[½‚ òôËvò$ŽVz(λ £Û·oSHH[ácǎѺuë(**Š] ¤…KQ§N"HOp.^¼H‡¦téÒñÝÍ›7iíÚµ4aÂ*^¼8×–Z Ú¸q#íÝ»—Ý ì³Ž9’õÕÅQ|Š´M›6%LXBqèVÖ™¶mÛFÂò _TKH)R¤pPõǧ °¨<} kHÂÒo¼Ád“‰A`T/ ú³gÏ( €£ûõëÇ>n§N˜´iÒ¤g6$q*dÆsyÔ¨Q|;Ü£ºèËJèaŸ!-üÕ®]»RÞ¼yiðàÁl1GŒA3gÎ|¡Å´ýB"R¦LÉñþþþüÅÁ©S§(Y²d—1cFñ›´1Η/mذÃò,4AΜ99*mÚ´|.Áw6Xeè•‚Á Ëp­‹Lã WŸ!-ΩÅ Óð£G¸oA¸R` =‘B… Qpp0IøÂ]°ŽË–-£#GްºФI“xРÍ›7óÂoÍš5T´hQŽs-¿^½z¬nÓ¦MìÎ`×Ã×åŸó$† Æ»báD°†X¥öÙgÜr±8¢† rÓo\"¿Ó‡|çÎÞšúöÛoyÚF¾6mÚX˜Q™2e(Ož<¼}•?~öñÖrРAlõÏ;Gðµá?Ÿ9s†ÄB IXZ¶lI7nÜàtpYPž«Èº¸Æ'è{».!]ëíÎîÌ#¦]^ýË{\…•Ó„EÔGýk«y|°ÊÇj; z]ÖV‹ˆˆÐGk½à<¨‡^ » ®‚tžÖM¯#¡íøÜ— °@°´®?Uú‰®Ïb»ÇX”Ájc•¿hÑ"§¤ðwåÔïô@ÜÀ-q­bFâšÎ(/Åù$iÍê`ø´X,8q‚§p±Ïê–j¼‘&}[·2¨DN(Ò:Ááù È'¾ð(£~GÀ£Œ*1#àS 1Õç ci±Tºti¯è??ñ"N±µvTìç:¿Ïðª*ˆ/TЍ-èÉ ŽÒÌ/Èô¤*U XP‚O«ŒTîý´›µ.Zô›Ú•JEZ“9ðèÑSñ^ßü5oHÈïâ}ïpLnæ+U§Hk2ü¡¡GÈßÿùWµØYØ´é¸É%(uŠ´&s`áÂù„µFD<¦  ]&— Ô)ÒšÈðð‡â]ZçÕ Ã{¸OM,E©R¤5‘ÁÁ‡Å;±Î$¦ÐÐ?L,E©rFXá/æÏßñ‚Uˆx"þ#bG¼ôªÌÎ(Ò:ãñÒw׮ݣӧoæ?xð’ø÷™‡†ÏT¤ç(ÒzŽ™aŽ;O±k:u á“2eR¾"üìY”xw÷Œa>é9ê1Ï1‹5Ç–-'øYtt uì8›~ü±ß'Jä'~;¡`¬ùÔˆL0ïxÔl‹רQˆ5GEň÷eýHÞ[TœÏªUîÏv½}®HkAß©Ÿ¯·TJEZfÕÏ×›…¤±EZc\T¬# HkAç(÷ÀPu*iu`˜TîYHëQ¤5ÆEÅz1Š´^Ü9ªjÆ(Òã¢b½EZ/îU5ciqQ±^Œ€"­£¶¼,U§R‘V†YAµåe’ÆziqQ±^Œ€"­wŽªš1Š´Æ¸Ä+>->J¬A@‘Ö\áÓâ£Äi­ÁUiµEZ ÀU[^€ªS©H«ì Úò2 Ic=Š´Æ¸¨X/F@‘Ö‚ÎQî êT*ÒêÀ0+¨Ü³4Ö£HkŒ‹Šõfô'ûmÙ²»‹êO ÄÑŸZŠeŽñÄQr'Nê$Âéfiéý÷ß§?üЛǙª›!ðÝwß‘ -U®\ÙÑjå8 P»  Hk—žRõt  Hë€B삀בöÌ™3tûömÓðÇÑÓöíÛiãÆtïÞ=ô"/ü©eË–ÑÙ³gyÿúë/B=ÿ+Á¡ÑüáüøÇŽó¸=îÖ÷Ò¥KBË—/§C‡ññRîæÝ¿¿ø=Þgî&©t^GZ?àÀ—jŒk¦Ó§OS×®]ù”p¬oß¾|Ľk:yô&LàÛ[·nQïÞ½iíÚµâ¸ÐG´bÅ Îðo¿ýFÁÁÁ2›%W}]Ö¬YÃe=zÔQÖôéÓÅ/ŸvÜ›øé§Ÿhذa„A fÍšE ` b+õ>]»v»•â´{àNA›6mbësùòe®\Ó¦M¹ÂQQQ4|øpÚ·o¥H‘‚Þyçzòä õêÕ‹&Ož,Ž& gjm¢4iÒpº ÐÒ¥KÅQœ‹)wîÜ|”|=U¿ÿþ;wLdd$wVÝ»w'Y¿mÛ6*Q¢}üñÇ”,Y22dõïߟräÈáÃJâ¾sçά·Aƒ‹¹uëVš={6ÅÄÄP»ví¨qãÆ4nÜ8±ö™3g&XÓ2eÊPÏž=uBiqA˜nݺ‰Ÿ¥¿Ëúëׯσ :oÞ¼I•*U¢Šƒð¶Òž={Ø2£îèTWþ­.¨@¹råhâĉôý÷ß‹sÊþé¶èèhúꫯÄ/ïæzCàòÑGÑ믿N;wî¤7ß|S¼ßëǘU¬X‘I L'MšD‡f<‡J÷ïß§… Šƒþ‘2dÈàh7Úñ믿òΛ7?~Ì8 ïkÖ¬ÉÄFâ,Y²p<¸ÂñÅl0 ,Èý üõ×_S@@aV«V„£ 7[Ú0}úô¡¢E‹ÒÌ™3iðàÁTµjUZµj¡‚6làâa1ð… T4¸^½z<ÝBÏüùóiäȑԢE ¶€CÊ;w¸³GÍÄAgA@–”)Srç…‡‡³ÕC<ޝyõá&MšÐÁƒ ‡O™2…‰X£F ’ŽE'c[S0H…ŽnÓ¦ —S¬X1Ö'ÿT¯^ÛŒû'N01°Eë™1c·eΜ9<à0¥GDDкuë¨aÆXW(”[·n]X¨ Ú—*}úôÌT©R17@Ú½{÷2W>ýôS®×˸‚“ÀH.^¼87WFÊ—/Ï ÀÚ`”££aíp‚ê‚ä 4H@ªT©B9sæ„j'Á@@zè`ׯ_çç­[·¦Œ3,'HÁÞ²´2 Ð`Í;vìH °$°.è¨+W®°E€.Œ|  ²ÀÀ@ñKÞ‰¸ÓY¹ÁÔíÆ õ‚k˽dɶÀ°ÂX(X¥|ùò½€ƒ;u‘ÅòÃÏ„Ï)ƒ >;|wY&ž7kÖŒ .L™2eâò_{í5Ê•+¯@>àƒAÜÑ~Íhj‡NiÝ‘ý]°àðaðL’$‰¬÷Kûöí¹¼>ø€ ÂÃp;ðâÆ ãÃUŠ /EÚìÙ³³*tlêÔ©ÔÂôHX|@8 ##ÓF¸"pK`µQtD^1Ýp ¨îo$(nШQ£¸mpc$±dz#Ü©‹Ì+ê ßóøñçgîbºÅ ìÔ©ûã®eêóêÃ0,°°ï½÷÷Ñ‘#GØ%ÅlÜ!ø–~>|vÈùóçÙšÃíæèkˆÄ aøÏðÁ:po–üãÑ› •…€C° ßˆEÈŸ#7þüÛõöm¸"­}ûÎgkþ1­Ù09½ûUIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SimpleResult-members.html000644 000765 000024 00000012542 14042362133 026660 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::SimpleResult Member List

This is the complete list of members for mysqlpp::SimpleResult, including all inherited members.

info() constmysqlpp::SimpleResultinline
insert_id() constmysqlpp::SimpleResultinline
operator private_bool_type() constmysqlpp::SimpleResultinline
rows() constmysqlpp::SimpleResultinline
SimpleResult()mysqlpp::SimpleResultinline
SimpleResult(bool copacetic, ulonglong insert_id, ulonglong rows, const std::string &info)mysqlpp::SimpleResultinline
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Time.html000644 000765 000024 00000074540 14042362133 023504 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::Time Class Reference
MySQL++  3.3.0
mysqlpp::Time Class Reference

C++ form of SQL's TIME type. More...

#include <datetime.h>

Inheritance diagram for mysqlpp::Time:
Collaboration diagram for mysqlpp::Time:

Public Member Functions

 Time ()
 Default constructor.
 
 Time (unsigned char h, unsigned char m, unsigned char s)
 Initialize object. More...
 
 Time (const Time &other)
 Initialize object as a copy of another Time.
 
 Time (const DateTime &other)
 Initialize object from time part of date/time object.
 
 Time (const char *str)
 Initialize object from a C string containing a SQL time string. More...
 
template<class Str >
 Time (const Str &str)
 Initialize object from a C++ string containing a SQL time string. More...
 
 Time (time_t t)
 Initialize object from a time_t. More...
 
int compare (const Time &other) const
 Compare this time to another. More...
 
const char * convert (const char *)
 Parse a SQL time string into this object.
 
unsigned char hour () const
 Get the time's hour part, 0-255.
 
void hour (unsigned char h)
 Change the time's hour part, 0-255.
 
unsigned char minute () const
 Get the time's minute part, 0-59.
 
void minute (unsigned char m)
 Change the time's minute part, 0-59.
 
 operator std::string () const
 Convert to std::string.
 
 operator time_t () const
 Convert to time_t. More...
 
unsigned char second () const
 Get the time's second part, 0-59.
 
void second (unsigned char s)
 Change the time's second part, 0-59.
 
std::string str () const
 Return our value in std::string form.
 
- Public Member Functions inherited from mysqlpp::Comparable< Time >
bool operator== (const Time &other) const
 Returns true if "other" is equal to this object.
 
bool operator!= (const Time &other) const
 Returns true if "other" is not equal to this object.
 
bool operator< (const Time &other) const
 Returns true if "other" is less than this object.
 
bool operator<= (const Time &other) const
 Returns true if "other" is less than or equal to this object.
 
bool operator> (const Time &other) const
 Returns true if "other" is greater than this object.
 
bool operator>= (const Time &other) const
 Returns true if "other" is greater than or equal to this object.
 

Additional Inherited Members

- Protected Member Functions inherited from mysqlpp::Comparable< Time >
virtual ~Comparable ()
 Destroy object. More...
 

Detailed Description

C++ form of SQL's TIME type.

Objects of this class can be inserted into streams, and initialized from SQL TIME strings.

Constructor & Destructor Documentation

◆ Time() [1/4]

mysqlpp::Time::Time ( unsigned char  h,
unsigned char  m,
unsigned char  s 
)
inline

Initialize object.

Parameters
hhour, 0-255 (yes, > 1 day is legal in SQL!)
mminute, 0-59
ssecond, 0-59

◆ Time() [2/4]

mysqlpp::Time::Time ( const char *  str)
inlineexplicit

Initialize object from a C string containing a SQL time string.

String must be in the HH:MM:SS format. It doesn't have to be zero-padded.

◆ Time() [3/4]

template<class Str >
mysqlpp::Time::Time ( const Str &  str)
inlineexplicit

Initialize object from a C++ string containing a SQL time string.

This works with any stringish class that declares a c_str() member function: std::string, mysqlpp::String...

See also
Time(const char*)

◆ Time() [4/4]

mysqlpp::Time::Time ( time_t  t)
explicit

Initialize object from a time_t.

Naturally, we throw away the "date" part of the time_t. If you need to keep it, you want to use DateTime instead.

Member Function Documentation

◆ compare()

int mysqlpp::Time::compare ( const Time other) const
virtual

Compare this time to another.

Returns < 0 if this time is before the other, 0 of they are equal, and > 0 if this time is after the other.

Implements mysqlpp::Comparable< Time >.

◆ operator time_t()

mysqlpp::Time::operator time_t ( ) const

Convert to time_t.

The "date" part of the time_t is "today"


The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/mysql_09_09_8h.html000644 000765 000024 00000023415 14042362133 022051 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysql++.h File Reference
MySQL++  3.3.0
mysql++.h File Reference

The main MySQL++ header file. More...

#include "connection.h"
#include "cpool.h"
#include "query.h"
#include "scopedconnection.h"
#include "sql_types.h"
#include "transaction.h"

Go to the source code of this file.

Macros

#define MYSQLPP_VERSION(major, minor, bugfix)    (((major) << 16) | ((minor) << 8) | (bugfix))
 Encode MySQL++ library version number. More...
 
#define MYSQLPP_HEADER_VERSION   MYSQLPP_VERSION(3, 3, 0)
 Get the library version number that mysql++.h comes from. More...
 

Functions

unsigned int mysqlpp::get_library_version ()
 Get the current MySQL++ library version number. More...
 

Detailed Description

The main MySQL++ header file.

This file brings in all MySQL++ headers except for custom.h and custom-macros.h which are a strictly optional feature of MySQL++.

There is no point in trying to optimize which headers you include, because the MySQL++ headers are so intertwined. You can only get trivial compile time benefits, at the expense of clarity.

Macro Definition Documentation

◆ MYSQLPP_HEADER_VERSION

#define MYSQLPP_HEADER_VERSION   MYSQLPP_VERSION(3, 3, 0)

Get the library version number that mysql++.h comes from.

MySQL++ Version number that the mysql++.h header file comes from, encoded by MYSQLPP_VERSION macro. Compare this value to what get_library_version() returns in order to ensure that your program is using header files from the same version of MySQL++ as the actual library you're linking to.

◆ MYSQLPP_VERSION

#define MYSQLPP_VERSION (   major,
  minor,
  bugfix 
)     (((major) << 16) | ((minor) << 8) | (bugfix))

Encode MySQL++ library version number.

This macro takes major, minor and bugfix numbers (e.g. 1, 2, and 3) and encodes them like 0x010203.

Function Documentation

◆ get_library_version()

MYSQLPP_EXPORT unsigned int mysqlpp::get_library_version ( )

Get the current MySQL++ library version number.

MySQL++ version number that the program is actually linked to, encoded by MYSQLPP_VERSION macro. Compare this value to the MYSQLPP_HEADER_VERSION constant in order to ensure that your program is using header files from the same version of MySQL++ as the actual library you're linking to.

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ReportDataTruncationOption__coll__graph.png000644 000765 000024 00000015526 14042362133 032422 0ustar00tangentstaff000000 000000 ‰PNG  IHDR¥“ïÙjsRGB®ÎéIDATxí]”ÅÓ¯;rR‘œ%)I$HP¢ä äÌ”œ£Ê{þA2b€$‰ò%#AáGÎ('’ÄþúWØëÜ0»w»7¸³w]ïínOOwuOõ¯+ôÌN I¤IKÀ98윾èžh <–€¥F‚ã$ Aé¸!ÑJêD\¸pråÊåÄ®%¨>=|ø’&uœ×#9ìe¹rå(,,,AÀI“*U*r*(µùvRt_X”Ž“€¥ã†DwÈ‘>¥†~mtt4+V̶îìÚµ‹8@ðçÊ–-gÞçΣ›7oRÑ¢Emë‹“iMéft6lØ@“&MrsÖ»lMš4¡Þ½{Óï¿ÿNû÷ïçãAƒydT¦Lzôè…‡‡3˜=N@'”¨êÕ«SãÆ)Ož<4nÜ8ªQ£eÏžBBBhíÚµÔªU+×PµiÓ†Ö¯_OsçÎ¥"EŠpyóæñù­[·R¡B…¨D‰\gÖ¬Y®z‡¦FQ­Zµ(kÖ¬4|øp>×£GêÚµ+óÖûõ×_9Ñ¢E4lØ0N:”–,YB³gÏf0îÛ·&L˜@S§N¥½{÷Òœ9sÚÓŠW¯^½åß|óMŠˆˆ hKдiÓx¹,GŽ4eÊÎ8p õíÛ—òåËG… |ãÞ·ÓH”KB»uâÄ Ü³r„tNKÍ&–/_.ræÌ)®^½*R¦L)®]»&"##…4™ââÅ‹"mÚ´âôéÓ"44T¼øâ‹ÜFÉ’%ÅäɓűcÇ„ž3gÎ;wÛ·oAAAbÅŠâøñã"S¦LâòåËBN!'ó” DÌkÛ¶mB‚Órpý.]ºˆÁƒ?q=ÕªU3f̰äuãÆ ,®\¹Âר­[7qýúu‘9sf!'—Xºt©È–-›f]´hÑBȉ!Μ9#Ú¶m+ädy¢-sdsçÎs¶Ž´O™.]:’Nrà(uêÔ¬q`*/]ºD2d Ê•+ÓºuëH.U©R…ä RÁ‚©gÏž$öìÙÃZèìٳ̈́r 4`ícü’ॆ rVýúõYãâ@‚–53´Ôo¼Áç+UªDø€:tèÀ¿Ð¼÷îÝã´ñK‚›’'OÎYf^Ђr2Púôé]U~øáæ]»vmÎ[¸p!_ m¡)›7oNÓ§OwÕ ÄDÀšo;wîÜ|G`’’%Kc š5kFkÖ¬¡Õ«WÒd˜u©¡Ø Âg;þkXüÂT#HHaÞAÐ>Š˜X3·oߦ¦M›r”ȤË QšpñâÅ$ýUÎÿàƒ4ýúõ#˜Z˜h˜zhC¸«V­RMYò*]º4Õ«W¤ÏÈå U­Z•µ+–ˆÈá:̤úmΘc'x¶æ>Ä%Ð1×qw,µ )Æót CTT”2d:êŠ+ ©M9ÀQùt6mÚ$¤ùRêl¿ryGœf’‘¾9Ëí1|_MîÈÌ þ¡U¿”ÖwÇ'Ðóƒ0Ûœvð•ú÷ïï§„àÏa=Ï‚‰xp×?óÖ­[®@Dñ‚‰ˆß\©óÞüÚÉ+®íâúäR™ë:ãZï?(w(Aú”JpÞõ Ym¥"ccþ³Ï>k<ŒWÚN^ñêˆC*'èèÛ!2ÖÝðRŽ4ßöäypp éo¾(—–ŽË垣w/Çâ?/Žå&>yîÌ3Âᇫ(Ÿ BéÙg«Ó±cç¦Ï­ÉS›oôÓ7ß씜D®5î±›f¡AO \»v‹Ž=/£ôGò‰ ½ñ䦫C”ñÄÁÊ•)I’$Ì寿þ¦Ý»ÃãÉQW× Œ'`ºïÞ}À\îÜy MøîxrÔÕ5(ã ¢äû×\pß|õêÃòiñÀ‰À]wPBƒ2ƒ±té>޶,‚ƒƒä“F'Y:í¥4(½˜±øüù»èþýÇÏ3ªü›7ïÓüùú% J¾üjPú"5Yç—_þ ¨¨ÛµýøãÏòI󟃴(¤³bCy9@®2üñ‡[¼ññr{eÞä]î+ªU«&¤6är¡¡¡Ì7}úô¢S§N¾Ïœ9StîÜ™Ï/]ºTȽ¹…ÔºbÆŒœ‡ çëÕ«'2gÎ,êÔ©#äÊ€8sæ §5jÄù=zôà²_~ù¥(Uª”/¾âc|I-,ÐÞÎ;E÷îÝE—.]Dîܹ…¢8uê”èÙ³'_x/^¼XŒ5ŠëN:UÈ­EöìÙEHHç 0@ôéÓGäÍ›W*THHÐs¾»/iM„|3œ»ÓNÊ?˜ 4¥ÒíÚµ£6mÚPåÊ•©víÚ„=¡ù°Î¹gÏ’€ .%ÁÈfvëÖ­Š ïñ-ÁÅu'L˜@C† ‘ï8ÿ…&NœHtòäIÊ–-MŸ>]¾Jú>­_¿ž7nLË–-£yóæ‘œ¬«W¯ãá_l¡\²dI^Þ:}ú4kChöJ•*q[ãÆãW ‚ÇÕ«WIN‚1bÉ C“'O¦1cưÀ^æè÷¦M›¨téÒÜ×x"A²nݺT¿~}&Lñ¡C‡èûï¿§¡C‡’Ôz<¸NDD={–¤¶á•Z‹¥ÆrÛ¶m¼Á¼Ô‚téÒ%ÞÈà;v,hRs1è°† Ê“'µoßž*T¨À¾,À?÷Þ½{Š¥ë÷òåË®õB©•Ij?êÛ·/÷3]ºt bLEð•ZL²¦M›rëÖ­ãÓ˜8ùòå£æÍ›3€U@ÿMŽhIEÒìÓòåËy°2fÌÈÙx‡$À‚€Æ8ð*_Õ¨’'ONׯ_ç¬Ö­[SñâÅé½÷Þ£íÛ·SÛ¶m ¾Ÿ¢´iÓª$ï +m!åÏŸŸ¾ýö[W>˜ 'Nœ in9_mnÿàÁ>£ð?xTÿ‘eì«j»Ñ¢Í„B JSªA‘>›HD®µjÕ¢•+Wò©%K–PÍš5©D‰ 8˜ä»wïÒš5k8_Շƽ}û6)ýû÷§Í›7€í;~üxÖ°0ž€WšvÑ¢EÌeGŽÉm—+WŽó¶lÙ¿è_Ë–-Uó„ I4$ÊÁŒc2………±¶Vçâo‚ДêO[êÏЂ0u 6dóó•—)S&•Œá—º2M hoYî+F‚¨|Ec~† Œ‡ :h@é´Q”ë á;­_N襟Fk–š¬% £oëKÕ¹"ÇkJDÂÇqgÄiÂM’$­ô/Òµkÿçq™ÈßýÆÚk ã5%@)ƒKGBBVɧ€²Ê[•¿8ºŸðWž3Že Ììo¿Ý%×;ÿ¦ vBwßG ÊxQxx„|#š5äúõGåݘGñ䨫kPÆK—îsí˘4i°¼%ùs<9êê”ñÄÀ‚aòâcíxëÖ}š?g<9êê”ñÀÀ‘#ä_b>žú+ݹó \uU Êx``Ñ¢Ý.-©Ø$Ož”Ö­söK T_ú«AéãÈ`™jÙ²ýòù̘ͭ[÷äÓçÚ„û(V®¦Aé£ôÂÂÂyȪúáÃç(2ò¶Õ) hPÆAHVENœ¸$ÿ+s_>¡ž”?I“&q¥øœ9óø¯Vuužg 8þWž»ïß³7n<r®^½I…È¿J|À ’Ÿ¥ðoç·uç¿àÊɲ}晔ܽû÷Ê{óDêØÉ}„¾iómÃ(á¯ê¯6°Kô,4(m€"qüËP“=Р´GŽš‹Р´Q˜š•=Р´AŽÚ§´Aˆ”aøšÔ>¥¯’³®§Ai-ëG hPúQøºik hPZËEçúQ”~¾nÚZ”Örѹ~”€¥ Â×KB6ÑÀBƒÒ _“zIÈWÉY×Ó ´–‹Îõ£4(m¾6ß6ÑÀBƒÒ _“Ú|û*9ëz”Örѹ~”€¥ Â׿Û!XhP„ákR›o_%g]OƒÒZ.:×Рô£ðuÓÖР´–‹W¹Ú§ôJ\±Ö ŒUD±Ð>eì2ò¦„¥7ÒÒeÿ ÈY~ú‰÷›–-ë_/d,÷NËÌ ™1öóÏ?»0(cì!AÉ{¾óÎ;ÿ͌Э$z `Llܪvö…@´ùNô°pž4(7&‰¾G”‰Î@ ŸÒ ÝÃÆíØ9ÖŽ][ÿüóO’[#».+Mš4¼£ìÓÞyëâÅ‹¼a<Æ®´ØûÛ¸û­«CqLÈ- éðáÃO”Æõ+Vì‰ü§•q÷î]:uê½òÊ+O« æë8M‰Û8`ËEïܹ“¦M›FÇŽã6€oÛ¶-ɽ·máod"÷§ &p6”Ÿ5k·‰à±ÿþôñÇó^;Æ:Æô§Ÿ~J2 5f¹ÒØ)  Äç³Ï>£+Vpmþ¤úvçÎÚ·oßSoÒkMùã?ÒŽ;XÈMÝ©Aƒ,$¹É9 :”;Ü¢E ‚0{öìI¸¨ùóçêb÷V”+X° a{áE‹±&I’$ uïÞÝuÁk×®¥#GŽûömêÛ·/½þúëÔ­[7z饗(44”Š/Nï¿ÿ>¥L™’̃Ÿ#GW̰Ïw§N\|Ñ/ðÄöz³gϦõë×ÓóÏ?Oýúõ£"EŠXò‡¶›4i’Üæn+—0`k ü.\˜~ûí7¹ÁÓü_¢IÕ®\æ víÚÉ—ªnçk°Â¸¸æK—.ÑÆ9oÆŒ,§åË—óë›4iB 6¤®]»2_hª*UªP:uøØØ‡jÕª¬ÚŠŽŽ&D¶Ÿþ9õéÓ‡û³yófÊ“'9’°×9ú>a,À'[¶lœç®o¨‡k=z”ÇõêÕ«T¹re8p Ov´K„ý4‘¾Þ’ךòæÍ› Ô»wo*Z´(}ñÅôî»ïR¥J•š®CS€ ñ0 0¡¸Ð¹sçRíÚµé»ï¾“[}ܤ¯¿þš† F7¦½{÷Ì”¢ÈÈHÚ³gýïÿ£=zÐW_}ŧ(lÒŽc~÷îÇ[ÏP'È˜Æ ¡?t yùå—Ù dcÇŽeá}øá‡ü:?+þû÷ïçe ¼zõê4sæLnçÂ… tòäIÂ&K¾|ù¨eË–|Îø…ÛèSxx8íÚµ‹à«_¿>Ë`‚ÜzõêÅÕæÌ™C}ô1‚ÛÂäwGÆ>ܸqC¾k=’‹BIÀ?žÄäÉ“ e 3ŒÍÙ³g m¡mŒIl}Ï;ÇÑo”…?†ê*³Û¬Y3ÖXuëÖe°£ ãÚª1™ aãý‘:uêÔÜ>ü<Ìxc°ÜñØ1>Ðbjð¡é iÀ0UªTO\2’%KÆí¼öÚkò¿ÏЦM›èàÁƒÅšçÑ7X’¶ð¯!WLVO~°±VcR´iÓ†²fÍJ%K–¤+W®°&«Y³&ûîíÛ·gmý /xìø€  0Ù›7oÎǰ–°\P.Y²daŃw´åm|൦DcÙ³gÇ›ØH àÀ StºtéØœÀl¤ÊÔ¡>ÅL$E˜ùHå#~Ž'ð¡aÊ )!L 6„—ƒŽà™ù£¬qÓøG¹üCeq!øƒ `s‰¾ÜºuË2`Ha0ÐwO`TíZõ–ÈHj²àša- ¸Y È>}úô±öMñÃØa,dRí ­ÚBÚò ”±5 ‡ąb¶lÛ¶}7Ìh˜$˜Ž²e˲vÁÅ@CÁ ™ &&Ú f ƒzp 0»AÐTˆÍiÎøç À„ 0q ´Ö­[Ì'L¨™?´?&ÚDßáƒZÍ~L3AËÁTcààÂM†ïر#[ä+B}€Ú>44/ürcUÖê ƒÑÏØ\Ì8Ê®\¹’³Øú¦ÚÄä‚ aÊÑ?ÈæÕW_U§ãýë“ùvתRïÌ!Ô9¨T©R4}út„¿ &סCöE P^ñÁŒ„Ó~ýúuöa‘‚?b¶2Uø>x"i+‚„`Æ ƒÿÛo¿ÍZÉŠ?|%04Ù Aƒ\¬U_á~ `†¼Õ«WóZî ‚L,ø¤ð·˜:¸pe0áàßN™2…àrtéÒ…'MÞ¼y9TVmªN¨ãÒ¥K³ÿ ³ŠþXeñâ[µjÅAÏèÑ£¹/žú†kPíC^Æn@‰~›IõÍœïé8Æ–%ÐbpÆ>™§ÊîÎaö`±,m ‚ÆCÀÍi4I‰eO@ß|óÜbîƒåh1¨Óhþ¹’_>ø+óì‰?Ì8&‚ꋹ9h:\§ñúÌepŒ Áì" :Ð>˜4àÆõ'Ê*SkÅÏœÓm4¯æóÆc(£ [ߌu1>dà«ú>ð‚+ƒ±oÔ¨‘bmÿ–%ˆ^1£(@¢5잀Yo&s¾:¶:ØH´aµ¨íŽlmÂÜÆ…jlõ‹zÊ—…¬T[àW¾ªí¸å€Äql}CE˜HXF²›â&E/ZÅ: +çÛ,<HEvæ:Ë–-cÍbηëü¡iàÛA3 b…ÀØ7OmaRb2ZùœžêésÿJÀö@>”·€Dw %`ÆÁÿÂÇLVšÓ\&>ÇXœFô»eËŽÊ` n;ÕÝø«³&ß%`»¦ô½+þ¯‰À`üøñ|¢B… ®Í›7×Iιò"j€ëspøG庛ÿ>|A«»@VwW”Ùv5˜È¶kÊ@–'œv|°Z`$˜oÜ^C€HN9nâ4¢qãݬÿ!`qwÈê-–±h!ü+,o€U}HO¹r墊+r¹òåËó­P¬}â¼±ÖP­î!ˆ2ß]afúË%­)]¢ ʘ1#ßÝ€–3ñ±® 2šZ˜hu—ÉXiOwx}½ãan+¡kPF QŒÀƒ°¶Š þ#·ÿ 9qw‘° @×»@Æ::ýXÚ|›ÿpܸq|7 Ë:Є;wf“ buÑ9üKA žžQws;<¶åî.*Sަ˜РŒ)6ψ¦¡ qW>¤q© fü“O>áå"us¿xôË|7u™ïá #Ex@Ó“Р|R&œßÑè?‹áN†ùV¢ „ŒåVwfÌùúؽ´Oé^6OœÁ}y<4¡ééJ@ƒÒ ùÂŒ»Óž^°ÑEc‘€e,Ò§ý ykÍE?éw é÷ùø> ]Ÿeg~—PŒç)ý0't“Zf ÒæÛ,}ìw hPú}tÌР4KDû]ÿ—ÌJ{]ðµºIEND®B`‚mysql++-3.3.0/doc/html/refman/noexceptions_8h.html000644 000765 000024 00000013010 14042362133 022570 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: noexceptions.h File Reference
MySQL++  3.3.0
noexceptions.h File Reference

Declares interface that allows exceptions to be optional. More...

#include "common.h"

Go to the source code of this file.

Classes

class  mysqlpp::OptionalExceptions
 Interface allowing a class to have optional exceptions. More...
 
class  mysqlpp::NoExceptions
 Disable exceptions in an object derived from OptionalExceptions. More...
 

Detailed Description

Declares interface that allows exceptions to be optional.

A class may inherit from OptionalExceptions, which will add to it a mechanism by which a user can tell objects of that class to suppress exceptions. (They are enabled by default.) This module also declares a NoExceptions class, objects of which take a reference to any class derived from OptionalExceptions. The NoExceptions constructor calls the method that disables exceptions, and the destructor reverts them to the previous state. One uses the NoExceptions object within a scope to suppress exceptions in that block, without having to worry about reverting the setting when the block exits.

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1GuessConnectionOption-members.html000644 000765 000024 00000013472 14042362133 030532 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::GuessConnectionOption Member List

This is the complete list of members for mysqlpp::GuessConnectionOption, including all inherited members.

err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Field-members.html000644 000765 000024 00000021472 14042362133 025255 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::Field Member List

This is the complete list of members for mysqlpp::Field, including all inherited members.

auto_increment() constmysqlpp::Fieldinline
binary_type() constmysqlpp::Fieldinline
blob_type() constmysqlpp::Fieldinline
db() constmysqlpp::Fieldinline
enumeration() constmysqlpp::Fieldinline
Field()mysqlpp::Fieldinline
Field(const MYSQL_FIELD *pf)mysqlpp::Fieldinline
Field(const Field &other)mysqlpp::Fieldinline
length() constmysqlpp::Fieldinline
max_length() constmysqlpp::Fieldinline
multiple_key() constmysqlpp::Fieldinline
name() constmysqlpp::Fieldinline
primary_key() constmysqlpp::Fieldinline
set_type() constmysqlpp::Fieldinline
table() constmysqlpp::Fieldinline
timestamp() constmysqlpp::Fieldinline
type() constmysqlpp::Fieldinline
unique_key() constmysqlpp::Fieldinline
zerofill() constmysqlpp::Fieldinline
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1MutexFailed-members.html000644 000765 000024 00000014054 14042362133 026437 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::MutexFailed Member List

This is the complete list of members for mysqlpp::MutexFailed, including all inherited members.

Exception(const Exception &e) MAY_THROW()mysqlpp::Exceptioninline
Exception(const char *w="")mysqlpp::Exceptioninlineprotected
Exception(const std::string &w)mysqlpp::Exceptioninlineprotected
MutexFailed(const char *w="lock failed")mysqlpp::MutexFailedinlineexplicit
operator=(const Exception &rhs)mysqlpp::Exceptioninline
what() constmysqlpp::Exceptioninlinevirtual
what_mysqlpp::Exceptionprotected
~Exception()mysqlpp::Exceptioninline
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Field.html000644 000765 000024 00000041577 14042362133 023635 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::Field Class Reference
MySQL++  3.3.0
mysqlpp::Field Class Reference

Class to hold information about a SQL field. More...

#include <field.h>

Public Member Functions

 Field ()
 Create empty object.
 
 Field (const MYSQL_FIELD *pf)
 Create object from C API field structure.
 
 Field (const Field &other)
 Create object as a copy of another Field.
 
bool auto_increment () const
 Returns true if field auto-increments.
 
bool binary_type () const
 Returns true if field is of some binary type.
 
bool blob_type () const
 Returns true if field is of some BLOB type.
 
const char * db () const
 Return the name of the database the field comes from.
 
bool enumeration () const
 Returns true if field is of an enumerated value type.
 
size_t length () const
 Return the creation size of the field. More...
 
size_t max_length () const
 Return the maximum number of bytes stored in this field in any of the rows in the result set we were created from.
 
bool multiple_key () const
 Returns true if field is part of a key.
 
const char * name () const
 Return the field's name.
 
bool primary_key () const
 Returns true if field is part of a primary key.
 
bool set_type () const
 Returns true if field is of some 'set' type.
 
const char * table () const
 Return the name of the table the field comes from.
 
bool timestamp () const
 Returns true if field's type is timestamp.
 
const mysql_type_infotype () const
 Return information about the field's type.
 
bool unique_key () const
 Returns true if field is part of a unique key.
 
bool zerofill () const
 Returns true if field has the zerofill attribute.
 

Detailed Description

Class to hold information about a SQL field.

This is a cut-down version of MYSQL_FIELD, using MySQL++ and generic C++ types instead of the C types it uses, and hiding all fields behind accessors. It leaves out data members we have decided aren't very useful. Given a good argument, we're willing to mirror more of the fields; we just don't want to mirror the underlying structure slavishly for no benefit.

Member Function Documentation

◆ length()

size_t mysqlpp::Field::length ( ) const
inline

Return the creation size of the field.

This is the number of bytes the field can hold, not how much is actually stored in the field on any particular row.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/functions_d.html000644 000765 000024 00000015313 14042362133 021776 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
MySQL++  3.3.0
mysql++-3.3.0/doc/html/refman/inherit_graph_46.png000644 000765 000024 00000007356 14042362133 022447 0ustar00tangentstaff000000 000000 ‰PNG  IHDR‘1ÚÄKÍsRGB®Îé¨IDATxí¬UÇAÁŠbAÅ‚]°€bŒ5Šƒ"VÆBbE ŠQ°Ä. ¨ ¨ØP»ˆ`ï…¢Àùæ7ßwöÛ»owï»÷¾rì$÷ÞÝÓÏœ9sfæ^^=§$e(žÖ+¾nV3ãÀ9 Q& %s ¢’Y˜5 Q&¥sÃ:LO>ù$†vöÉx+«W¯‹ Ïã$‰¡ SRV–¾ràí·ß–áÇÇÎ+[n¹¥üûï¿©å*›Y²­\¹RØqLàË/¿”>øÀúf"óçÏ—wß}7ìâÅ‹+ì€%K–Èo¿ýŒ÷½÷Þ“7ß|Sþþûï ˜ƒ°üüó϶(_}õUN>/üñ‡°p0çõ×_·é ýóÏ?âwèG}$o½õ–æIƒf²|ùò`Âïôõ믿ú¢ö7ﯾúj¢ÀÐ| /0*Ü.âý÷ßx? ¥=÷ÜSžzê)Ùf›m‚ªß~û­LŸ>]ø…V¬X!?üðƒ=GÇc‰Å|r “X‡ÓÒžu1,²yÔQGζmÛºcŽ9&x?ôÐC2ÑvØaîÈ# šÓɸúõë»Ñ£G»yóæ¹wÞÙm²É&®^½zn‡vp .´²ºÓÜ[lá4Vaå:è ·ñÆ[Þu×]ç8à{îÑ£‡kÑ¢…kÒ¤‰Û`ƒ ¬ÿóÎ;Ïò&NœhïGqDGÙ¯¿þÚò•Ñ–ÿòË/WxßgŸ}ܱÇké|© »õ×_ß9Ò©p»ƒ>Øên¶Ùf®AƒnðàÁVvîܹ–þé§Ÿ:æ ëãTØ‚v<ð@wíµ×Ú»jT;ehcÛm·uð¶2´Ç{¸[n¹ÅÊS_7³#²Ü±cGçFmdmŽ3ƽøâ‹ÆGÊÁ{ÊV†Æoã§Ý/Yé`Œ”²téR¹ýöÛmG¢¡Ø=ö˜i– È™gž)¯¼òJ°žyæ!ˆuúé§ËM7Ý$;iê5mÚTî¾ûnÓ*çœsލ ˜¦ãøòÅ÷þUÁ“Q£F™V¹ÿþû…ÏäÉ“ƒ"Íš53ͧ kZíšk®±<`¹êª«„_(ü~ÖYgÉŒ39aÂQA—3Î8Cî½÷^¡-úE Þ|óÍ¢ ZA“Z£)_Ìqà 7´vШ*˜Ò½{wÑK©•œ¥‹.S§Nµcí}ùå—ËÀE7±¡y›7onÏ¥|U™©Fí·ß^Ž?þxÆ æßUâ¥k×®¢Ò/O?ý´•Aõê·óy·Ýv“wÞyG†*?þø£ Þ°aÃdΜ9&<]t‘ì´ÓNB¹sÏ=7qÎû1á¤Ü®»î*Ø žn¸á[¬ÝwßÝòUóXïôí™~Gø9^&Mšde1bO:é$QgƒqsL=ÿüóòá‡ÊŸþiG«ï3ß/Ç G8F8öÙ¡C‡`Óä«—ϼô+¯¼Ò65óþì³Ï,-®|)iU&Dª~mªŠíWU¬ý2ˆ…1£Ø ?ýô“¼ôÒK¶ä#„,š¬uëÖ&,Ø-zÜ-‡rˆýòåµEz€yaÚzë­ÍGú.»ìdc; °ùˆÍѾ}{7ZÁó‚ŒA{ôÑGK«V­L“!•%op{ûÍ{òÉ'ÛgÈ!¢GºÙ0•m/\N|Q3ÁlT>ÐfuP• Q¶8‚Â"Œ;VÔþ±Mþ /¼ ×_½Uã0Pí…ÀHô†!eY¸$ »Ó,š,,táü×^{-'/©MÒ9Òã}÷ÝgcR{Ê3fŽ!6ZèŠ+®ˆmÆo&Žy͆v†RèŽ;î°MÃÆ·Þz«ìµ×^–Wè×ìÙ³e¿ýö3ç†9_xá…vÔúMYh{iå«LˆÒ: çx≢F±ôë×Oy5jdÙ,Nß¾}ÍŽjÙ²¥i-5M+±‹°™ðâÔ—{î¹'ÜdÎ3ÌÇÃ`ñŠü‘JAÔ:íp”ⵜp V[‹þ?ÿüóØ÷Î;‹ëÒ¿éÙ³§ËäÛj«­D m³ dõ£î³×ÌhZ4ö—(´§ºÍïñì³Ï–«¯¾Z6lhíú…@wéÒżTìKúç” =æÑO±6WÎx"–¶+Ö;ó^‡j ³â½g¡F¢½ãyÂcÒA8uÙ}’SƒÛ©amžžÕþûïïÔN°|µ˜ÇE<4=Úr¼3¼ïLm¦ ,ªpËóÞuiHÚ¼+ ¤ygÖ€~éfuÕIðINµ“ÓcÑÆ¥©:]4§î¶yœô…wþùV_µ’ÃKTûÍá]Bxr*L–OxáçoR¾è‹yzOKC$Öm1.ƨ6¦µ¢G¸½“§›&¥åÿg¥ygHb*D9•+ùr饗:UµJëîußqb”Ô“°EA(Õã „(\!:å”Síh¼ÅéN²½‘ãÔ¶ òJ} MB¾?=F!±Íê±çôhŽÍóãÖ8‘ÍBª5F¢?¾ÏØ5‘0ɬY³Ìå—Ñx‘c,•¥4!J¼O¤RZåÄQ«ÌÑÅù%Ô­Æ’¢Éöα§Ú)6/šH;ØI5¾“ÊU6þÂcÃFâG8I7nlï$U1>z›*®ÐÞ{ï—lÇZ±Ge´Á"â?wÝu—›ÁP-–𪈣D‰ˆ­÷x¢y,ž7p£ùåúŽWȧ¬)ªÎªú8S˜½í§:ÞÕ˜tê";O™M¢†²SO°:ºÊiSƒ™ÑÆŠÇ ÑnŽÚRI›î’K.)µ™¢ê§gÕî¡Æý­nRΘ7B@í‚ .Ë.»Ì<b8Ó¦M«Öî‰ ´r9ª ñÉSa.y xsD™Ëª]ˆü„±‡p©=øçÓùå˜K/ÃeyV4šdÑb"½D•qíûôé#ŠÉvÛm'O<ñDP>ÈÉXrÒÈB6m?÷ÜsA_<¨fuÓ“æL:‚0ËJò„Ûï†i`³/Ïoð §WésT·Uõq†»Ž ®ƒ6÷wSw§u›^FÇÅ»þÅëÕ«—¹ÿÑü‡zÈúШoNG(È©±+kƒ0Âæ›oî4Ðgn}Nƒ1/#FŒ0o‘£ôÔSO Jà±1oŽ2ŽX(ßœqí¯Õè5€”ú§jWø ÑfØlþ÷E€–Àwß}Î*è9í8«v!RÌË@Õ¾1ˆÂUWÍÐyìH±+·é¦›±Ò@Ìï¼óN ÀÐÃ?Ü=òÈ#då^²rê‰Ø¢±tTØå6M¸áŠ9…AœîV‹ÉÐþ€,Æò裚ÐÊG‘zc¶9øUì̪€ÐʸñÆ!Ê7gÆ®ÁU§xœ… ˆ'µiÓÆÚ‹ ãeC‚¬öà]5qÎpU£ÙMnE¨÷ç4hêã«àòçTŠy©u!R0C&K &fƒ¦ÐcÀ©ÇfyÄX0ˆ%·@Œ%(çƒvAc‘ãñÇ· »~XTN;p¼ÓŽFµí£h¿¥!T W8®L„ã.ìôB„á¡?R×i;GˆÒæL檑jÐÆÛsTˆV†‰`%eâASTßuëÖÍxŠPáø«0quÂiiBT#.~<Յѵ»œôÁ¹{|à‰k`>À#ýjýO#.ÃÎW&Ù‡²\îâæxÖƒ>hÕ9ý3 ääÂÀ/mxâÖ@!ÄÊÏ<1òé?l“¥ÍÙ÷EÓ ¥`kÅQ4Þ›ÃuÀ6bù`w‰¨†4€—Û ¥PÖx/ž¸6Ц—Ü¯Ò ^¶ ÜÑaòI¶ýƒK=ºŒY ï> —r‚/…A^úaÁ %„oŒ!w êÔ©“i34Z(JisŽ–Í÷žl¦>^M¯ö•ñ“ Šö'$ÕfùúŒÍŸ{ MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::FieldTypes Member List

This is the complete list of members for mysqlpp::FieldTypes, including all inherited members.

FieldTypes()mysqlpp::FieldTypesinline
FieldTypes(const ResultBase *res)mysqlpp::FieldTypesinline
FieldTypes(int i)mysqlpp::FieldTypesinline
operator=(const ResultBase *res)mysqlpp::FieldTypesinline
operator=(int i)mysqlpp::FieldTypesinline
mysql++-3.3.0/doc/html/refman/manip_8h_source.html000644 000765 000024 00000150046 14042362133 022551 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: manip.h Source File
MySQL++  3.3.0
manip.h
Go to the documentation of this file.
1 
17 /***********************************************************************
18  Copyright (c) 1998 by Kevin Atkinson, (c) 1999-2001 by MySQL AB, and
19  (c) 2004-2007 by Educational Technology Resources, Inc. Others may
20  also hold copyrights on code in this file. See the CREDITS.txt file
21  in the top directory of the distribution for details.
22 
23  This file is part of MySQL++.
24 
25  MySQL++ is free software; you can redistribute it and/or modify it
26  under the terms of the GNU Lesser General Public License as published
27  by the Free Software Foundation; either version 2.1 of the License, or
28  (at your option) any later version.
29 
30  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
31  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
32  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
33  License for more details.
34 
35  You should have received a copy of the GNU Lesser General Public
36  License along with MySQL++; if not, write to the Free Software
37  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
38  USA
39 ***********************************************************************/
40 
41 #ifndef MYSQLPP_MANIP_H
42 #define MYSQLPP_MANIP_H
43 
44 #include "common.h"
45 
46 #include "myset.h"
47 #include "stadapter.h"
48 
49 #include <iostream>
50 
51 namespace mysqlpp {
52 
53 class SQLQueryParms;
54 
55 
69 
71 {
72  quote
73 };
74 
75 
76 #if !defined(DOXYGEN_IGNORE)
77 // Doxygen will not generate documentation for this section.
78 
79 struct quote_type1
80 {
81  std::ostream * ostr;
82  quote_type1(std::ostream * o) :
83  ostr(o)
84  {
85  }
86 };
87 
88 
89 inline quote_type1
90 operator <<(std::ostream& o, quote_type0 /* esc */)
91 {
92  return quote_type1(&o);
93 }
94 
95 
96 struct quote_type2
97 {
98  SQLQueryParms *qparms;
99  quote_type2(SQLQueryParms* p) :
100  qparms(p)
101  {
102  }
103 };
104 
105 
106 inline quote_type2
107 operator <<(SQLQueryParms& p, quote_type0 /* esc */)
108 {
109  return quote_type2(&p);
110 }
111 
112 
115 
116 MYSQLPP_EXPORT SQLQueryParms& operator <<(quote_type2 p,
117  SQLTypeAdapter& in);
118 
119 
122 
123 MYSQLPP_EXPORT std::ostream& operator <<(quote_type1 o,
124  const SQLTypeAdapter& in);
125 
126 
133 
134 MYSQLPP_EXPORT std::ostream& operator <<(std::ostream& o,
135  const SQLTypeAdapter& in);
136 
137 
138 template <class ST>
139 inline std::ostream&
140 operator <<(quote_type1 o, const Set<ST>& in)
141 {
142  return *o.ostr << '\'' << in << '\'';
143 }
144 
145 #endif // !defined(DOXYGEN_IGNORE)
146 
147 
155 
157 {
158  quote_only
159 };
160 
161 
162 #if !defined(DOXYGEN_IGNORE)
163 // Doxygen will not generate documentation for this section.
164 
165 struct quote_only_type1
166 {
167  std::ostream* ostr;
168  quote_only_type1(std::ostream* o) :
169  ostr(o)
170  {
171  }
172 };
173 
174 
175 inline quote_only_type1
176 operator <<(std::ostream& o, quote_only_type0 /* esc */)
177 {
178  return quote_only_type1(&o);
179 }
180 
181 
182 struct quote_only_type2
183 {
184  SQLQueryParms* qparms;
185  quote_only_type2(SQLQueryParms* p) :
186  qparms(p)
187  {
188  }
189 };
190 
191 
192 inline quote_only_type2
193 operator <<(SQLQueryParms& p, quote_only_type0 /* esc */)
194 {
195  return quote_only_type2(&p);
196 }
197 
198 
205 
206 MYSQLPP_EXPORT SQLQueryParms&
207 operator <<(quote_only_type2 p, SQLTypeAdapter& in);
208 
209 
210 MYSQLPP_EXPORT std::ostream&
211 operator <<(quote_only_type1 o, const SQLTypeAdapter& in);
212 
213 
214 template <class ST>
215 inline std::ostream&
216 operator <<(quote_only_type1 o, const Set<ST>& in)
217 {
218  return *o.ostr << '\'' << in << '\'';
219 }
220 
221 #endif // !defined(DOXYGEN_IGNORE)
222 
223 
236 
238 {
240 };
241 
242 
243 #if !defined(DOXYGEN_IGNORE)
244 // Doxygen will not generate documentation for this section.
245 
246 struct quote_double_only_type1
247 {
248  std::ostream* ostr;
249  quote_double_only_type1(std::ostream* o) :
250  ostr(o)
251  {
252  }
253 };
254 
255 
256 inline quote_double_only_type1
257 operator <<(std::ostream& o, quote_double_only_type0 /* esc */)
258 {
259  return quote_double_only_type1(&o);
260 }
261 
262 
263 struct quote_double_only_type2
264 {
265  SQLQueryParms *qparms;
266  quote_double_only_type2(SQLQueryParms* p) :
267  qparms(p)
268  {
269  }
270 };
271 
272 
273 inline quote_double_only_type2
274 operator <<(SQLQueryParms& p, quote_double_only_type0 /* esc */)
275 {
276  return quote_double_only_type2(&p);
277 }
278 
279 
286 
287 MYSQLPP_EXPORT SQLQueryParms&
288 operator <<(quote_double_only_type2 p, SQLTypeAdapter& in);
289 
290 
291 MYSQLPP_EXPORT std::ostream&
292 operator <<(quote_double_only_type1 o, const SQLTypeAdapter& in);
293 
294 
295 template <class ST>
296 inline std::ostream&
297 operator <<(quote_double_only_type1 o, const Set<ST>& in)
298 {
299  return *o.ostr << '"' << in << '"';
300 }
301 
302 #endif // !defined(DOXYGEN_IGNORE)
303 
304 
315 
316 enum escape_type0 { escape };
317 
318 
319 #if !defined(DOXYGEN_IGNORE)
320 // Doxygen will not generate documentation for this section.
321 
322 struct escape_type1
323 {
324  std::ostream* ostr;
325  escape_type1(std::ostream* o) :
326  ostr(o)
327  {
328  }
329 };
330 
331 
332 inline escape_type1
333 operator <<(std::ostream& o, escape_type0 /* esc */)
334 {
335  return escape_type1(&o);
336 }
337 
338 
339 struct escape_type2
340 {
341  SQLQueryParms *qparms;
342  escape_type2(SQLQueryParms* p) :
343  qparms(p)
344  {
345  }
346 };
347 
348 
349 inline escape_type2
350 operator <<(SQLQueryParms& p, escape_type0 /* esc */)
351 {
352  return escape_type2(&p);
353 }
354 
355 #endif // !defined(DOXYGEN_IGNORE)
356 
357 
364 
365 MYSQLPP_EXPORT SQLQueryParms&
366 operator <<(escape_type2 p, SQLTypeAdapter& in);
367 
368 
371 
372 MYSQLPP_EXPORT std::ostream&
373 operator <<(escape_type1 o, const SQLTypeAdapter& in);
374 
375 
386 
388 {
389  do_nothing
390 };
391 
392 
393 #if !defined(DOXYGEN_IGNORE)
394 // Doxygen will not generate documentation for this section.
395 
396 struct do_nothing_type1
397 {
398  std::ostream* ostr;
399  do_nothing_type1(std::ostream* o) :
400  ostr(o)
401  {
402  }
403 };
404 
405 
406 inline do_nothing_type1
407 operator <<(std::ostream& o, do_nothing_type0 /* esc */)
408 {
409  return do_nothing_type1(&o);
410 }
411 
412 
413 MYSQLPP_EXPORT std::ostream&
414 operator <<(do_nothing_type1 o, const SQLTypeAdapter& in);
415 
416 
417 struct do_nothing_type2
418 {
419  SQLQueryParms *qparms;
420  do_nothing_type2(SQLQueryParms* p) :
421  qparms(p)
422  {
423  }
424 };
425 
426 
427 inline do_nothing_type2
428 operator <<(SQLQueryParms& p, do_nothing_type0 /* esc */)
429 {
430  return do_nothing_type2(&p);
431 }
432 
433 
436 
437 MYSQLPP_EXPORT SQLQueryParms&
438 operator <<(do_nothing_type2 p, SQLTypeAdapter& in);
439 
440 #endif // !defined(DOXYGEN_IGNORE)
441 
442 
452 
454 {
455  ignore
456 };
457 
458 
459 #if !defined(DOXYGEN_IGNORE)
460 // Doxygen will not generate documentation for this section.
461 
462 struct ignore_type2
463 {
464  SQLQueryParms* qparms;
465  ignore_type2(SQLQueryParms* p) :
466  qparms(p)
467  {
468  }
469 };
470 
471 
472 inline ignore_type2
473 operator <<(SQLQueryParms& p, ignore_type0 /* esc */)
474 {
475  return ignore_type2(&p);
476 }
477 
478 
481 
482 MYSQLPP_EXPORT SQLQueryParms&
483 operator <<(ignore_type2 p, SQLTypeAdapter& in);
484 
485 #endif // !defined(DOXYGEN_IGNORE)
486 
487 } // end namespace mysqlpp
488 
489 #endif
This file includes top-level definitions for use both internal to the library, and outside it....
quote_double_only_type0
Definition: manip.h:238
@ quote_double_only
insert into a std::ostream to double-quote next item
Definition: manip.h:239
quote_only_type0
Definition: manip.h:157
@ quote_only
insert into a std::ostream to single-quote next item
Definition: manip.h:158
do_nothing_type0
Definition: manip.h:388
@ do_nothing
insert into a std::ostream to override manipulation of next item
Definition: manip.h:389
escape_type0
Definition: manip.h:316
quote_type0
Definition: manip.h:71
@ quote
insert into a Query stream to single-quote and escape next item
Definition: manip.h:72
ignore_type0
Definition: manip.h:454
@ ignore
insert into a std::ostream as a dummy manipulator
Definition: manip.h:455
Declares templates for generating custom containers used elsewhere in the library.
Declares the SQLTypeAdapter class.
mysql++-3.3.0/doc/html/refman/sqlstream_8h_source.html000644 000765 000024 00000034621 14042362133 023460 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: sqlstream.h Source File
MySQL++  3.3.0
sqlstream.h
Go to the documentation of this file.
1 
4 /***********************************************************************
5  Copyright (c) 2008 by AboveNet, Inc. Others may also hold copyrights
6  on code in this file. See the CREDITS file in the top directory of
7  the distribution for details.
8 
9  This file is part of MySQL++.
10 
11  MySQL++ is free software; you can redistribute it and/or modify it
12  under the terms of the GNU Lesser General Public License as published
13  by the Free Software Foundation; either version 2.1 of the License, or
14  (at your option) any later version.
15 
16  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
19  License for more details.
20 
21  You should have received a copy of the GNU Lesser General Public
22  License along with MySQL++; if not, write to the Free Software
23  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
24  USA
25 ***********************************************************************/
26 
27 #if !defined(MYSQLPP_SQLSTREAM_H)
28 #define MYSQLPP_SQLSTREAM_H
29 
30 #include "common.h"
31 
32 #include <sstream>
33 
34 namespace mysqlpp {
35 
36 #if !defined(DOXYGEN_IGNORE)
37 // Make Doxygen ignore this
38 class MYSQLPP_EXPORT Connection;
39 #endif
40 
44 
45 class MYSQLPP_EXPORT SQLStream :
46 public std::ostringstream
47 {
48 public:
53  SQLStream(Connection* c, const char* pstr = 0);
54 
58  SQLStream(const SQLStream& s);
59 
74  size_t escape_string(std::string* ps, const char* original = 0,
75  size_t length = 0) const;
76 
98  size_t escape_string(char* escaped, const char* original,
99  size_t length) const;
100 
102  SQLStream& operator=(const SQLStream& rhs);
103 
106 };
107 
108 
112 inline std::ostream& operator <<(std::ostream& os, SQLStream& s)
113 {
114  return os << s.str();
115 }
116 
117 
118 } // end namespace mysqlpp
119 
120 #endif // !defined(MYSQLPP_SQLSTREAM_H)
121 
Manages the connection to the database server.
Definition: connection.h:60
A class for building SQL-formatted strings.
Definition: sqlstream.h:47
Connection * conn_
Connection to send queries through.
Definition: sqlstream.h:105
This file includes top-level definitions for use both internal to the library, and outside it....
mysql++-3.3.0/doc/html/refman/functions_func_y.html000644 000765 000024 00000006333 14042362133 023040 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
MySQL++  3.3.0
 

- y -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1MutexFailed__inherit__graph.png000644 000765 000024 00000012046 14042362133 030027 0ustar00tangentstaff000000 000000 ‰PNG  IHDRy‰h—PsRGB®ÎéàIDATxí”ÅóÇ‹$ADÁœP1'TPA愊9gŒ˜Å€(¢è™Š˜žÊO’€9£‚ñP$šT0ú_ŸòßëìÞì··ËíÍL½·7½=Ó©R×ÌÎÕ·–S’„"ÍÚ‘^]²8ã@"ä(B"ä¹n!ÖøÕW_É·ß~[ˆ®#ÝgíÚµe·ÝvËû "äùóçKË–-¥Y³fyŸpT;$þ}óÍ7 ²¼Ä]„­ÅÕi"äâ’GAf“¹ l-®Nk„?ÿüs!˜+&š5k–|üñÇÅ4¥¬s)*!?øàƒrï½÷–™ì°aÃdäÈ‘eê«£b§v’%K–ÈôéÓe„ Õ1…JYmBþàƒd÷Ýw—5ÖXC.ºè"ùôÓO¥GÒ«W/yþùçe̘1²Í6ÛX”þÆo¤¶ÿþû›UñÅràZý'Ÿ|"íÚµ“u×]×úZ¼x±œ}öÙríµ×Úyú¼âŠ+dÑ¢ErÆgȪ«®*ûì³|ùå—BT{õÕWËúë¯/;”––Z›sÏ=×úØ`ƒ dçw¶kÏ?ÿ|?~¼tìØQæÍ›'X3„bÒžñû÷ïou_|±Í¥E‹²å–[V¯Bðì:ß4yòd÷ÓO?•ÛíÁìzè!§á¶ß~{§‚r*×­[7·páB·Å[¸›o¾Ù;Ö©"¸›nºÉúS¹Ù³g;½w×\sÕtÐA®OŸ>îý÷ßwÛm·»ï¾ûÜ”)S\£FÜðáÃÝÊ+¯ì¾þúk÷ /¸6mÚXûË.»Ì©Ðœ*›Û|óÍÝĉ]II‰[guœZªS%p{ï½·ûî»ïœ Ì®ýý÷ßÞ˺¹sç:¬ëܹ³ûí·ßl~/½ô’1b„[{íµÝüáŽ9æ§Êá¦M›æN<ñD§JW.?–.]êT±Ë½&ד¹O6U®àÏÆo,}ûöe’<õÔS‚Ŭ¸âŠR§NQ&Êœ9s¤{÷î‚:¤zóÖIEïÞ½…{ò×_]T ¢B,çÝw߀\pÁ¢Ì–~ýúYÿ·Ýv›œ|òÉ¢‚0¡ŒYá;ï¼#Mš4UN™9s¦wæ™gŠ Ý,rÏ=÷4+­U«–4mÚ45ŸW_}UvÝuWÁÃ@C‡•_|ÑÊxæsôÑGËÀ­®:þT›»¾ñÆå’K.1·¬V+ji©õÿðÃö Cj‰©s™Üæ?ÿü# ,0…ÁåvØavYÆ í¨mGÆ@Ð +¬ k®¹¦|óÍ7¦X(\ûJ+­d׬²Ê*vÄÍ3Ná²W[mµÔ)µHa»€7nlǺuëÚ¶`_ªáOµ yß}÷>O?ý´Y¡ÚƒÀZµj%êòdêÔ©f©¯½öZŠ5o¿ý¶üõ×_òçŸ e<€º[ÛcÙÓ±Ä3fÈgŸ}f¬®Ûöcg¿ýö3+#p0`€\uÕU¢®^êÕ«'—_~¹wÜq2hР”},À=öØÔ˜£',˜ëÔ•Û£\öt¼J1Qµ¹ë#<Ò‚*¬K9üðÃí±L÷[ÁEb¸LÜ$D°õÖ[oY„«ûºüòË/8á–¡ X?¸È /¼ÐÜ6ÊеkW¹óÎ;å•W^1ÅÀºÓc=&l?þø£mõë×·¾ˆêŸ|òI njݺµÍÁ·ÕV[É{ì!¬ÅDQ&3ÉÏ?³~¹|Ïu3/¯Ý²^´×}×éþ—Ö•Z©Swgu¿þú«SƧÏöEÅéý´MÙ®ñõaA!\p,¯Ñ£G;uç©ùÐ^­Ø+ß—?Ò–õäJ‘ ¼Ðà0÷û'çËÛ‹9$\îf›m¬ÊZûá„ÛŸ0Zo½õÒªñ,~¯ žà¶¬X©ÚÜu±2ÄÏ‹¨;¨p¾¾&!g‘Ze¼H–.ЦºÚ¢ë¢á@ &RKÆÍé§¢cŸE2vì7úør-ÝWW(ºùùçùžX-¢Á|wZ¬ýMŸ>OÚ·/‘’’#¥S§öÅ:ͼÏ+VîzĈñú࣮üïïå‘ÅÜa¬„],Ӧ͓ٳ-f¹äun±ò”)ßê©¿SÌ9r|ªõBl„m£éŒëGf=¤Š®ˆ*ü ²È¶mÛVÞ{/^y6ŠØ.SS#» ¹B,©ØíÉ)Ũ9ÂN„!W¸'À}Ô´ÈÔ¡||}°.Ø.XæZ@H2 èÆF ”A€ B ¬ Õ°. ŠøQ„;‡ü(g›‡Ú— Ï+VÄíŸkóAyÙ“—e"`5ä‡2û0<`Cíøa ¶ûa&±r-N Ä 0P¼û¬ÍT÷o{×Â<üPÏ\ð(,F\4cþý÷߆$ZMDí³Í-¨ì(71H6qÐI…¤¼Yr¶I²(H÷OÑýV°N„ 4C9âšqW0w¡åž|?X‘0ØPÀÑ ƒ÷Q?ƒöçÊ+¯´ §}ûöäÝ'íï¹çyæ™g„W¬ =餓,ˆ¦ˆ¹CÄx™çsýŽ÷ÉŒ²A…Í-ÛýwØÚscyí î®ýà¸ÌlØKþšÌ#nÑaœSÄTyöÙg3/3PÍlŒ,sq*²Í­@ÃUªÛå&äÊ ˜U`ùA"â F°þ\1Àûd››Ÿcu—[t]‹ŒýØmúQz3D£UÎæÍÜ€F⣷™‰ÐÅ"ª·ä2Ès"ÂÇ2(ÂÂõKK ƒ<'"zL ƒ"*Øà²È  7"XÖð3 Š \Ó–”@¥±#š_È hÊ5µª2(0~ dH,žx%A)ÇÝB]Ù&+ûÄî§Æ$ûO t?I'!Çq‰‰»ŽÔc'äÄ]Ç@«ã¸ÄØYr"ä8r kN,9r 8ƒ%ÆÎ’“'^1Ðêä*BŽãcç®!Ç€ü÷~Þþƒ¿†ð+v–Ìë¹|âD±rœ„ë×;!'·P^ô>&·Pnœ—–¸ëH?vBNÜu ´:–K f3fL$’¥¨ ³®#jAakÕŒ»A±º´<^*dKÅ{Úi§ÅRᣰh§“f9H±Û“ƒ‹K9r $9BNÛ“‹a½Ó¦M³ü™>'vUæ4sæL™3gŽåÇöý,\¸P&Mš$n¸¡%?_Dþm§‰ü×代?üPZ¶l)³fÍZæõrm:u*ˆ¶è,yèС2a„0¾TºŽìðš3[$$Õ–,ù þ!šÇ;U—YèׯŸaPdÖ—÷,ùd»gîþ“)ô`{°/0¨ÌzÉΖÍ?ØoX¹Ò– ÈŒbQL’ŒóŠîbp0 ²Û’Ù«ú¦=þøãÐAF[®HcĈ–qžìõh(ÙÜ=OA¤¨‰¿-K=ÙÞÛµk';w6xE 1KèÑ£‡å¾¾ôÒK¥k×®¦å¾L_u0g`ˆ ʼ  ‚È,¸XïÞ½¥C‡¡PZZ*÷ß¿ÁíDæzG:vì(}ûö0$:uê$Šžck'Û>yºX Ò’%KäöÛo7\+2ô³F,ˆ <ñó'}œÒ¬Y3éÒ¥‹Á)áu™Ç~oÒ¤IšWòm+:VÚ’5«¼YBêÈÖ[o- îÝ»j éýATyMŠ`Ü&LJ³×ËÈ‘#…~Çp›À“R(KÕï'¬ÐB†0£p>Æ8ü…Ða&ß̸q㬠øR>Ñy°Œb(tý†ŒKükÛm·µ6 ½1ÃÁgÚk¯½l Ú0”á 8ÐÜëGaÈ-ç¨Q£R¨7ôÄ›B@XìŒ3La@¿aÍu(€'æ…•‚=òN¯^½L±00+:|Ì…*mÉ ‚&Â(ö;Å9²2 ó³’’þ—ˆ†“ëšï(>0 oÌ`PXÖy®ÅÊùЖñ ÀEÐvÀ²PÆÞÛËM›65 °©S§Ú\™_ÛÂ: üa%+=Æ“ 8Âz.ñ ]¸g<@dŸ ÐÌÕ0Jð =z´Lœ8QvÁŸN;Âp:˜' ÚQ€K¸@’»“ý?ÊIÈ ·A Ì‚“vÙeÓ`´WCÒ {©uëÖ²ÑFÀˆo c3 F{ÂÒ°\È×S7þ|IÖ#J€›Æ5£`y&ØÏ’I Ö 8­E‹VöpþH%ÂA AÂ:án,ªl "ŒÅ–åÇŠíþúìý™IÞƒã”W®´».¯3¦²cEX1î’½—烴­Åea¡ìñ™„»Ãê@xÁ¢Ø ,‚vX1Q2D_À e–ùŽG@È`­Zµ²køÓ—¾ˆ%‚„9TÛ Þƒí‡z¢\¼V·nÝÌ {—lïËlCXþé§Ÿnž$Û«GBfßgË@ØQböoæÁø¹PN–œm ÿ‚ÄÝÀƲŸÁHжãÖ6ÙdC^7I¡ýRÝú~pñE¸Bbêa`awHô qTø?ëÓ—¹žn–ñð@X¦'< ñP@l^({#1û!A&–È~O€‡G èD¹ú÷ïokòóöýsÄújÏbnÙP\shÏíŽõ2&Š 2Ê„àÃÆöVNKñ„•¡5Á=-¬QEu¸40M¬Â" °l\º'„€a‚„‰Ð AƒŒ±X×{%€i0f­æƒpÕ(LýòÛeÜh®÷Õ($<?ƒ2 ò 8.ŠÍ¹ ®ãcÁº`›`Ù?»f«ôôŸZûš*‰~ûôé#fyÓ%û ûp&U4ñ°óhs¾Ì|2L°/¿SWBA½’úc¶ö_™T•±é+ïB@# õ%sòÁï·ÜrKŠÔãBÈ[,!¡eç@Þ…L”\Y3ÝLmõ÷¼™K ³ìÌk’ïé(Ht>Dò­Ú9 eŠÆÄàÍexÖ·F¢r.óÍ´èºÚ5.™@A8¸ë‚°µ¸:M„\\ò(Èl!„­ÅÕéÿÚ Ñàãš1IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1FoundRowsOption.html000644 000765 000024 00000031544 14042362133 025722 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::FoundRowsOption Class Reference
MySQL++  3.3.0
mysqlpp::FoundRowsOption Class Reference

Make Query::affected_rows() return number of matched rows. More...

#include <options.h>

Inheritance diagram for mysqlpp::FoundRowsOption:
Collaboration diagram for mysqlpp::FoundRowsOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::DataOption< T >
typedef T ArgType
 Alias for template param.
 
- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 
- Protected Member Functions inherited from mysqlpp::DataOption< T >
 DataOption (const T &arg)
 Construct object.
 
- Protected Attributes inherited from mysqlpp::DataOption< T >
arg_
 The argument value.
 

Detailed Description

Make Query::affected_rows() return number of matched rows.

Default is to return number of changed rows.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/stream2string_8h_source.html000644 000765 000024 00000024147 14042362133 024253 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: stream2string.h Source File
MySQL++  3.3.0
stream2string.h
Go to the documentation of this file.
1 
5 /***********************************************************************
6  Copyright (c) 1998 by Kevin Atkinson, (c) 1999-2001 by MySQL AB, and
7  (c) 2004-2007 by Educational Technology Resources, Inc. Others may
8  also hold copyrights on code in this file. See the CREDITS.txt file
9  in the top directory of the distribution for details.
10 
11  This file is part of MySQL++.
12 
13  MySQL++ is free software; you can redistribute it and/or modify it
14  under the terms of the GNU Lesser General Public License as published
15  by the Free Software Foundation; either version 2.1 of the License, or
16  (at your option) any later version.
17 
18  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
21  License for more details.
22 
23  You should have received a copy of the GNU Lesser General Public
24  License along with MySQL++; if not, write to the Free Software
25  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
26  USA
27 ***********************************************************************/
28 
29 #if !defined(MYSQLPP_STREAM2STRING_H)
30 #define MYSQLPP_STREAM2STRING_H
31 
32 #include <sstream>
33 #include <string>
34 
35 namespace mysqlpp {
36 
39 
40 template <class T>
41 std::string stream2string(const T& object)
42 {
43  std::ostringstream str;
44  str << object;
45  return str.str();
46 }
47 
48 } // end namespace mysqlpp
49 
50 #endif // !defined(MYSQLPP_STREAM2STRING_H)
51 
std::string stream2string(const T &object)
Converts anything you can insert into a C++ stream to a std::string via std::ostringstream.
Definition: stream2string.h:41
mysql++-3.3.0/doc/html/refman/classes.html000644 000765 000024 00000035234 14042362133 021124 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Index
MySQL++  3.3.0
Class Index
A | B | C | D | E | F | G | I | L | M | N | O | Q | R | S | T | U | V | W
A
AutoFlag (mysqlpp)
B
BadConversion (mysqlpp)
BadFieldName (mysqlpp)
BadIndex (mysqlpp)
BadInsertPolicy (mysqlpp)
BadOption (mysqlpp)
BadParamCount (mysqlpp)
BadQuery (mysqlpp)
BeecryptMutex (mysqlpp)
C
CommandLine (mysqlpp::examples)
CommandLine (mysqlpp::ssqlsxlat)
CommandLineBase (mysqlpp)
Comparable (mysqlpp)
CompressOption (mysqlpp)
Connection (mysqlpp)
ConnectionFailed (mysqlpp)
ConnectionPool (mysqlpp)
ConnectTimeoutOption (mysqlpp)
D
DataOption (mysqlpp)
Date (mysqlpp)
DateTime (mysqlpp)
DBDriver (mysqlpp)
DBSelectionFailed (mysqlpp)
E
equal_list_b (mysqlpp)
equal_list_ba (mysqlpp)
Exception (mysqlpp)
F
Field (mysqlpp)
FieldNames (mysqlpp)
FieldTypes (mysqlpp)
FoundRowsOption (mysqlpp)
G
GuessConnectionOption (mysqlpp)
I
IgnoreSpaceOption (mysqlpp)
InitCommandOption (mysqlpp)
InteractiveOption (mysqlpp)
L
LocalFilesOption (mysqlpp)
LocalInfileOption (mysqlpp)
M
MultiResultsOption (mysqlpp)
MultiStatementsOption (mysqlpp)
MutexFailed (mysqlpp)
mysql_type_info (mysqlpp)
N
NamedPipeOption (mysqlpp)
NoExceptions (mysqlpp)
NoSchemaOption (mysqlpp)
NoTransaction (mysqlpp)
Null (mysqlpp)
null_type (mysqlpp)
NullIsBlank (mysqlpp)
NullIsNull (mysqlpp)
NullIsZero (mysqlpp)
O
ObjectNotInitialized (mysqlpp)
Option (mysqlpp)
OptionalExceptions (mysqlpp)
Q
Query (mysqlpp)
R
ReadDefaultFileOption (mysqlpp)
ReadDefaultGroupOption (mysqlpp)
ReadTimeoutOption (mysqlpp)
ReconnectOption (mysqlpp)
RefCountedPointer (mysqlpp)
RefCountedPointerDestroyer (mysqlpp)
RefCountedPointerDestroyer< MYSQL_RES > (mysqlpp)
ReportDataTruncationOption (mysqlpp)
ResultBase (mysqlpp)
Row (mysqlpp)
S
ScopedConnection (mysqlpp)
ScopedLock (mysqlpp)
SecureAuthOption (mysqlpp)
SelfTestFailed (mysqlpp)
Set (mysqlpp)
SetCharsetDirOption (mysqlpp)
SetCharsetNameOption (mysqlpp)
SetClientIpOption (mysqlpp)
SharedMemoryBaseNameOption (mysqlpp)
SimpleResult (mysqlpp)
SQLBuffer (mysqlpp)
SQLParseElement (mysqlpp)
SQLQueryParms (mysqlpp)
SQLStream (mysqlpp)
SQLTypeAdapter (mysqlpp)
SslOption (mysqlpp)
StoreQueryResult (mysqlpp)
String (mysqlpp)
T
TCPConnection (mysqlpp)
Time (mysqlpp)
tiny_int (mysqlpp)
TooOld (mysqlpp)
Transaction (mysqlpp)
TypeLookupFailed (mysqlpp)
U
UnixDomainSocketConnection (mysqlpp)
UseEmbeddedConnectionOption (mysqlpp)
UseQueryError (mysqlpp)
UseQueryResult (mysqlpp)
UseRemoteConnectionOption (mysqlpp)
V
value_list_b (mysqlpp)
value_list_ba (mysqlpp)
W
WindowsNamedPipeConnection (mysqlpp)
WriteTimeoutOption (mysqlpp)
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1TCPConnection-members.html000644 000765 000024 00000042452 14042362133 026701 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::TCPConnection Member List

This is the complete list of members for mysqlpp::TCPConnection, including all inherited members.

build_error_message(const char *core)mysqlpp::Connectionprotected
client_version() constmysqlpp::Connection
connect(const char *addr=0, const char *db=0, const char *user=0, const char *password=0)mysqlpp::TCPConnection
connected() constmysqlpp::Connection
Connection(bool te=true)mysqlpp::Connection
Connection(const char *db, const char *server=0, const char *user=0, const char *password=0, unsigned int port=0)mysqlpp::Connection
Connection(const Connection &other)mysqlpp::Connection
copy(const Connection &other)mysqlpp::Connectionprotected
count_rows(const std::string &table)mysqlpp::Connection
create_db(const std::string &db)mysqlpp::Connection
disable_exceptions() constmysqlpp::OptionalExceptionsinline
disconnect()mysqlpp::Connection
driver()mysqlpp::Connectioninline
drop_db(const std::string &db)mysqlpp::Connection
enable_exceptions() constmysqlpp::OptionalExceptionsinline
errnum()mysqlpp::Connection
error() constmysqlpp::Connection
error_message_mysqlpp::Connectionmutableprotected
ipc_info() constmysqlpp::Connection
kill(unsigned long tid) constmysqlpp::Connection
operator private_bool_type() constmysqlpp::Connectioninline
operator=(const Connection &rhs)mysqlpp::Connection
OptionalExceptions(bool e=true)mysqlpp::OptionalExceptionsinline
parse_address(std::string &addr, unsigned int &port, std::string &error)mysqlpp::TCPConnectionstatic
parse_ipc_method(const char *server, std::string &host, unsigned int &port, std::string &socket_name)mysqlpp::Connectionprotected
ping()mysqlpp::Connection
protocol_version() constmysqlpp::Connection
query(const char *qstr=0)mysqlpp::Connection
query(const std::string &qstr)mysqlpp::Connection
select_db(const std::string &db)mysqlpp::Connection
server_status() constmysqlpp::Connection
server_version() constmysqlpp::Connection
set_exceptions(bool e) constmysqlpp::OptionalExceptionsinlineprotected
set_option(Option *o)mysqlpp::Connection
shutdown()mysqlpp::Connection
TCPConnection()mysqlpp::TCPConnectioninline
TCPConnection(const char *addr, const char *db=0, const char *user=0, const char *password=0)mysqlpp::TCPConnectioninline
TCPConnection(const TCPConnection &other)mysqlpp::TCPConnectioninline
thread_aware()mysqlpp::Connectionstatic
thread_end()mysqlpp::Connectionstatic
thread_id()mysqlpp::Connection
thread_start()mysqlpp::Connectionstatic
throw_exceptions() constmysqlpp::OptionalExceptionsinline
~Connection()mysqlpp::Connectionvirtual
~OptionalExceptions()mysqlpp::OptionalExceptionsinlinevirtual
~TCPConnection()mysqlpp::TCPConnectioninline
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Row__inherit__graph.png000644 000765 000024 00000010242 14042362133 026363 0ustar00tangentstaff000000 000000 ‰PNG  IHDR™RGsvÍsRGB®Îé\IDATxíTEÇûA`D1 ((Š"ÆË1¢˜sBQ S!Rf $H ŠDA‰"Q$ƒ€€ˆ(ˆHNóõ¯õí÷vï·{ì}ßÞ1]õnß›™×3óŸÿôôÌí]g9ñâ(86+8Ý^³Gà<É< O²‡ØW ødŒ;ÿÌ_ƒ=âÀ„ Jñ¹!Î’)ɤ}ûöÏ_ƒ|qà‘G%YœùŽ#Y\Žð¤ O²4éÕ䎀'YîØøœ4!P"MzÒ¦fæÌ™rÈ!‡ÈG‘[¶l|ÍyóæIÅŠ¥~ýúö™ŒòüQ;ì°´´%è×~ûí—Ãg¡-çwž”)S&™få»Ì¨Q£¬ÿ%K–Ì·Žü¼˜q–ì•W^‘Ñ£Gç§/9ÞYºt©Ô­[Wºté"ÙÙÙ2dÈ9çœsdàÀ9Ê ëÖ[oµÇÉ“'Ëòå˃¬=ú úõÓO?IË–-­ô3¸6oÞ¼Gús{¹gÏžòæ›oZöСC…I÷?—ð^ó¹çžsº» 'å¸ÿàƒ\‹-ÜgœáN9å×½{wwÒI'¹ãŽ;Î?ÞÞõÕWí½M›6¹5j¸?ÿüÓ=ôÐCN-‰=O›6Íò»víêŽ:ê(wÁ¸K/½Ôélw7Üpƒ{ÿý÷‚ãn¼ñF+ì±Ç:%ˆ½S»vmwÇw¸C=Ô]{íµnãÆ–~ñÅ»… ÆÝ7oÞÜ=øàƒ–ü7nœ+W®œS°]”®“O>Ù•.]Ú=ûì³î±ÇsÇwÛ¶msmÚ´qx #ÿ›o¾1uçž{®é?üðÃÝùçŸïÖ®]kéݺus'œp‚á¢liA¿¾ÿþ{Ã*hOð©ä¶¾®\¹Òýúë¯îôÓOwK–,qj…݉'žèŽ9æ÷â‹/Zñ9sæ8<†ç½÷Þë¶oßîxÿÊ+¯t]t‘SëkíŸ;w®;øàƒÝAä”`®Q£F6+V¬p^x¡«P¡‚¥QßâÅ‹m ®ºê*ömÛ¶V×wß}ç4hàtuqÔ•—èîÒuêÔ)\,þ#†+f” fزöèÑC®¹æyûí·EN”$¦ óŒiÖÎÊ—_~) Ž´nÝZt=:t°²÷Üs|õÕW¢¤Œ5á÷ß`ùðÃ+ðÔSOYÞŒ3ä€éÓ§ËêÕ«M/gŸ}¶°…ï§N* ¦¥?”6›ùå‰Ò¥É©§ž*>ú¨` içÈ‘#EÉ!:à¢LÚµkgê°J´Y‰+kÖ¬‘aÆ٧T>ùä4h•M´«V­’Ûn»-véä–š5kŠNVQb‹NH¡:¹ì™c¥¯¿þZ^ýuQZÚe—]&Ÿ}ö™ÕÝ«W/Ù°aƒËÝwßmÖëµÿþû[:YEÉ'³gÏ%¤¼öÚkæ( KÆmëÖ­†÷ÕW_mmïÛ·¯ÕÕ±cG³)S¦È·ß~+ô9UÉ—O¦Ì6–-[&:Ûì~ݺu¢L.¹äiÕª•èl‘Ï?ÿ\š4i"U«V-6ptBg„ø"ÈñÇŸ£í”­V­š] :Ä@î¿ÿ~Që!·Ür‹‘Œ: l ÁýŽ;r, ¿$Q:÷ÙgŸaÑÉ!òq1Øüñ‡deeÉOê†T¨µ±[&®Z-)[¶¬ùºÑ!6ÂÒºk×.ûTë/¤J•*2qâD©^½º¨õµfV¶qãÆ2bÄëGñâÅcý%“þèŠdåÁêºë®³%¼R¥J!ÆWAW(éܹ³õRS&UÉ—OFÇbÅŠ  †¥T©Rrùå—Áð N<Àc˜ijŠ­G}tìUÞKfb ºd™åâ9H'mýúõA‘ŸÐaÁê`ñt™¶ädtAylB %J”°ÃK¬T:uÌzãÿí»ï¾–þAL´à H„0…„ÜSo Ÿ÷uÙ3‹Å$Á‡ƒÀ궈.q¦>è a¼,óߺŽöAèýAÂuýy饗äá‡6+ÎXªÖ=UÉÉòªbÑ8vf 4KGïÞ½…¥è£>²™¨>˜f”VßÇó‡~0bÔªU˪3fŒìܹS¾øâ Q¿ÐÒ ±úgq÷XŸ?þØ– 2þþûo³¶·ß~»0»‘(] bX°ÎLêÄš`EsÛýÒfõCÍ%€,X16,iË3« B9HùÀƒq@ÂýÁúªÿ*ƒ¶<ƃ¥47!‹òXO&iª’¯å2·Jèþúë/Á×Bh¾~¤ÂcV¢:Òæ„gQ ‡%–%€e?‚tfƒ‚e|ï½÷¬||–¡à¾Y³f¶ì@NHð/¿ü²½¥‹Q'Xð«Áßd©¨\¹²-“ï¾ûnû¤m\ K;ub X^ñ)‘ ÌÏ?ÿ·|‘÷Æo˜ ±`Á#J7 ÖVúC[›6mjËÕ3ÏQè+WXr;äÅ•IFÂã˜LùÄ2i'Ë~ §ö©Çá%SÏ·"_g øS‘RHL§®ª-¢ºØf«@”ï¡Ò´“ g7U‚чðΈçÜf_^–w“•têJ¶Î‚*‡ÿ—ˆaAÕ•ªÞÙ]¦Ú_¾ˆ#vÝÆúoÆrÖë••U•)SÃeeϵÌîÞß[ò¿›ÉŠø1x’¥€¦_.S+TÔ“,F^·~¹Ì ¡è|O²h\|jð$K#˜^U4ždѸøÔ4"àI–F0½ªh<É¢qñ©iDÀ“,0ýF `…Šz’…ÀÈëÖaä…Pt¾'Y4.>5x’¥L¯*O²h\"Sñɸ¼¤†€'Y xá“qyI O²Ôðò¥ó€'Y  ù#ŒÀ õ$ ‘×­?ÂÈ ¡è|O²h\|jð$KL¿\¦V¨¨'YŒ¼nýr™BÑùždѸøÔ4"q$#ä_&Ó>K–,¡á|ÆdlûÀ‹`™&÷ä„×#~ñ¼¤†1œˆJ̪L’Œ³d™ŽoKzð$KŽ^Ënð$Û 8>+=dœO–žní™â]§(*B]ªš‰¥Ní@ˆLt7bPí-â-YÄH0@¦M›‘“zñÁ :Oy®!C†Èõ×_oÁYS×V8ß(”–ŒÍ¿GˆìK4Ù+®¸Â"ë˜ÀóA8i¸oݺUîºë.éÒ¥‹þ[ôþÞ¹B… VŽ`îƒ Ò06-$3ÿŸŸˆ¶~š`õ|Ô¢á²ã%®8ºˆ¤Ëq у5ø«Å4'¢/Vªaƽ÷0UÄ•$þg ´ XJ"º‘Xî„_ÌÎÎ6‚s߯_? ÷L¤âO?ýÔUE¸°I¡´dÄÇB~š`©o½õ–…œ®_¿¾Y :pE"LK–F–Þ½{ 1ʼnMŽž>}úH»víìØÒë;B\s¤B¨è¶mÛJ=,kÅŠB¬LB::]±Ãƒ%–¸ŸApS–LÚCfHE8+ÂFO:UæÏŸ/]»vµÚ={ö”*UªX˜kôMš4ÉÜ£¿0J¡$@3¸ gB|÷kÖ¬‘3ÏW‡ÌŠÕ©SGfÍš% ®s7/Q/¿¦ÁÿÒ ò¶üq¿±H¾a£Fì~É’%f-y@/–/Qð™ ¸Þ,.“€ú±ªŠÉÀÀ„œ5kÖ´°Ï¤V)´–,7ÀùýÖ¯_o¾ÏX‡wÞyÇ6 j³fÍl¬ZµªþGëÖúïÒ·KéÒ¥)jèY½zµ-eX |À }̘1æ;mÚ´I:wîlïà³QO“&MäñÇ—nݺý«-þ+8wî\aÉ?~¼´hÑBã¬|BÑ–GBmc- 3É2î_¬ãL5jwÉ®’ÁëÕ«—Y3‹„ƒe ŸSA Æn"á´#ìîØ½BÊ$„ -[¶4’b}ؕl–+W.¦?¿ºøÝ%mÅÌ )šÿbãŽ;šSÍrþ[åÊ•ƒÇØ'KØî$·|¬L:$ì¦C_¦é(rË%WªTÉœ}NíS‘N:ÅY“¦M›F¾ŽOODð‰qI’±KL•` ì„r#Rb¹ ¼ÿŒF Èî.£»ëSÿdœãÏ©;;C/ùC ¿´¸1ãH–?hý[ŒÀF¿\fð蕦y’•‘Ìà~x’eðà•¦ýg÷èµÝÃIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1DataOption__inherit__graph.png000644 000765 000024 00000352712 14042362133 027671 0ustar00tangentstaff000000 000000 ‰PNG  IHDRÒ©®¦sRGB®Îé@IDATxì]˜E-%J’$ƒä¬€"9£ˆHNJ$(AA$çœ$çœsÎ9çœóüõúþYæöfï6ÌîíÝVß¹³=ÝÕÝopßTuUõ’"‚€ î 0äMwzIA@A@B@ˆTþ%‚€  DêxÒUA@ˆ*‚€ àϼ|ù’¢F•Ÿ*~F2·³gÏRš4iB,Wþu†€D*AÀŸ‘F‹ž={æOÓ’¹E‹%GD*¦ÝûÇ ËA@°!Rkñi‚€ †€i€=pY® ‚€µÈ©µxŠ4A@ˆ„<~ü˜¶oßNÅŠ³luGŽ¡õë×S¼xñèÓO?¥Ø±c[&ÛUAçÏŸ§„è–¿ýö›ÆÄ­ÅŠKK:µvíÚ5ÕÿÖgΜQßO:¥0 _4¾sçŽV³fM-Y²dZÅŠmë3[°^ºt©cÁ‚Úwß}§µlÙéjµ *h‡Ò€¿À¨6úðŒ1w3¼ëaëš7ú±Ö¯åÈ‘CK˜0¡Æ/CÚóçÏ5Gxêã˜})RDã— ³[ƒ…HÍ`‘:A@ðœ!RüðâGxÈ!ÚèÑ£ÕõÀµÿþûO “/_>mîܹj] ü€WªTI‘#oÞ¼ÚÑ£G1}ùå—ê@Æøa7)Ç´j¬i¬%)ž1c†Ö³gOE¬l®ÕðÍjüðŽ?^]ã‡~Æ jN \³r÷î]%gÉ’%ÚÌ™3Õ‹›VÕº%J¤ˆäš9sfÕ/ u6*ŸæêÕ«v¬õ),­GMÄðÈÇMmÛ¶Um@|0»–)S†~üñGe¦dç"E’h‚á}O¥13F¥›ƒ í)ˆ/{öìT¢D E"Ù²eSÞ¼ìÔd›ƒ~¡ÏEÿŽOÔá/ø„V‡µÁÛÚ'¼`áŒ9B;‡„ “³#íÙ(ßѵ>vÊ"˜¢A¢¼oK­Zµr¸žFÑĉ†x¹Ð æƒ9ª¬@ÂÐþ"ÎF4äR"/ß|ór~C±Ø“îa‘Cg‘Ûê×ИtÕëð íҕ⨽£zWdƒÌì HÞ~ß×JÅxÐHí‹Ùz€±‘DÑû¿FE‡áô˜É5[Ö ‚·Šh¤ÞBVä ‚€%X¥‘B…ã ~À-ØoƒÖ„==½Ü¸q#˜ êÑÞÂþRöìÙ£˜ðB`ev‰ŒCØÇ ¯x‡¦‘ÊixýKqAÀ§`oÍÅä`Æ5’(êŒ^¨øŽõ'Åœà¨OZ« œ§8žÓj±.Éó7¼…H]z|ÒXë€Ç/gö &Î5zz>xà á1H›§(¼è}˜³1©½VôC#g:Rû‹ˆ¯Å0©t/`N0@íÛ·W&l¤ÞÃÞ"ʬY³”g1¼œGŒ¡ê°ßŠ6ا0`€ª3þñ™È¨Eˆ4PŸ¼¬[Â88q&Bˆ¼Xc,p²ÑcT› 2ƒÓ <‰A¤H,€d—/_¦_ýUyßnݺUL¯gØD 2FØ §äSŽFH掂60‘"Ç.̵Hüg-¬žòFèÂP@Ü𤅖}'0gƒ"„üŒåd˜g !Ò@zÚ²VA@ð `Eø ´?x ÂÓÙ’œ)èÇy}‰óì´F˜oê‚ MÈ΄?›^@¼MA8 2.éÞ«ÈŠÐ6!¤ ³)çÖU^®pXâ\½*ÖÙ”@”fÉû¡ÙB[æüÅ*sĺ¥‘Ê“–u ‚€ß €ðXEÂÄ 8´¢ÇE¢Ñ«UÏrd–¡I—‡,JƒAÁþ.â`õ¢ËÒå€L‘ñ 0þRÇ—!ÔG÷nFÖ"³‚5 ¹ú nk ”úÓ d‚€ ød?úçŸhÚ´iJ3íܹ³JÐ`œBhÙŒípm–¡Io“12ú€@õ„ú=ûOì¿â,O„ !&våÊ•ÊÜ‹|€ÊÄ„ýZû‚ýXh¬Ø‡Åÿþû/ÁÌ(Eˆ4Pž´¬Sü˜U‘‡Tz³AŠ=cq”ýÇØ×e–¡Ios.4Z„Á :Ô4!dàZ'ÌÆÈ°RDL&²>Á I,Ó‰$hk, `äöy")¿ž]ÉØ&2_Kid~º²6A  `U©¿CG˜XÅ,ûñ¾ñÚ,CîcßqŸ8õŽI|œ›ªsôxðÂÑɘí óƒc“Y" ³¹;’QëC‹# þÔ"ê eÞ‚€ DpìIË1Ëþãh™ú¦ý}xÛ™I“A>ܰ 4Qû A˜Ÿ‰B–ÙÜÃ#2Ý"LOSÖ"‚€Ø#Åqf|h¹J“çêñivâä« B¤& H• ‘ h¶Ø÷”âÄÙÈ;¸ŠTA@A@4ÒyвLA ¢"m ^­öž¢ÆõDžŒO5IG÷ïNÈ…qýríh¬‘š¡"u‚€ à7€H›üäÉsÎýºŒ&OÞÊE7レ¹å7 ’‰D:„H#Ý#• À±cW8õÝ8>ÿ2)­^ýŸ'0.«ô;„Hýî‘È„A ,¦MÛÆñó8™z5úüó|a5—û‚€W"õ*¼"\¬DàÅ‹Wœx}íÞ}Ž“³·VÚ¨•òE– àB¤î &}AÀçܾýˆOMI’Äå#¿Úsbôh>Ÿƒ (˜! á/f¨H øçÎݤJ•ð1^iiذB¢~õtd2¢‘Ê¿A@ðkNºNÕ«æÓE>ácÇ úõ\er‰€i`>wYµ !8{ö&Ÿl2˜ºt©H5jˆs–IbÚ ¼g.+"wï>æKz²sQ!ÑñÄw’B¤ûìeå‚€ß"pëÖCúøã?©|ùœT·î‡~;O™˜ „Håß ø?còFU«¾OcÆ4ñ«¹Éd3dÔ ©pA©¿új,U¬˜‡¾ý¶t¸ÌA\E@4RW“ö‚€ à5úö]LÈŸÛ²eI¯!‚«ÔjDEž ¸…À¢EûhÖ¬´dIŠEÞñÝQ:… B¤á» *FŽ¿Jß?ƒ¦OoI‰Å6Þ’kAÀï×>¿D2AA r#SnÓ¦c©{÷Ê”-[ŠÈ½XY]¤D@ˆ4R>VY” qèÞ}åÊ•Š³å8“–™ Ä´kC.AÀ·`_týúc´|yGß,£ " Dj!˜"JœGàÊ•»ôÃ3iÊ”æ;v ç;:hyùòezçwÜ•jAÀ1Û¶m£ÜOA)Dê[¹#^D S§éÔ¨QÊ‘Ãò»téŸóíܹӋ³Ñ‘ –-[ÒöíÛ="RÙ#lÿ*d=‚@@`ÆŒí´uë2`¶2EA tD# ¹+#píÚ=úùç¹4cF+‰µ[>ˆF>¸Ë¨‚@À"€xÑfÍJH¨KÀþ ˆ| 4ò=SY‘ à·,[vNœ¸F#F4òÛ9z2± .Ð;w(gΜžˆQ}ïÝ»G7n &'f̘T²¤µéoÞ¼IÇŽã#ë ÑŠ+èùóçjÌ7Þxƒ_v²QÚ´iƒÍÁŠ/k{ô葪X±b„ñœ)+W®¤¢E‹RôèÑiî“6¢‘úfD?~N]»Î¢ß¯AQ£FΟž¥K—ÒÀ-yØ ›ZµjѪU«l›6m²D¶QÈÁƒé—_~QUoîܹŠäV¯^MeÊ”¡nݺ›{|ݧO>"ïcÚ²e ]¼x‘=· R¥JуÊ9r$ 2DÝ_°`çc~â°m¸ÜàÓ¤‚€ àuzõš¯}óÍD¯³cǽvC•òäI´µÏ?ÿ\K“&Ö»wo­téÒZŠ)´Aƒiü#­1™ØdÔ©SG[¼x±6f̵3Õgܸqêþš5k´,Y²hyòäQ}øÇ^ÃßW_}¥íÙ³G«\¹²V¶lY-Y²dZ÷îÝUŸæÍ›kM›6Ur8ÜBc²TõS§NÕºt颮¿ÿþ{múôé{’j©S§VuÆÿ<{öLkÖ¬™–(Q"-{öìÚÚµkÕío¿ýVc"W×XÇwß}§a½*TPëMš4©Ö¢E uŸ5g5[-}úôZ•*UTÜ€ÌÇ«6øÖ“/_>õ}ýúõZŽ9´„ jMš4ÑXsU28 Ý¾}[á³wï^ óÃsxúô©Ö¾}{C’´Ü¹sk»víÒ:¤Å‰GckÛ¸À3ùí·ßÔxõë×WíÓ¥K§Í›7Oõyûí·µÄ‰«çƒ¶7nÜИ„5&z-~üøª?Öäh½Á³ûLlWëÒ×Á‘óµ0\^IdPA@p„̹S¦le'£Ï5ñI=ÿ¸+í®\¹rÔ£Gêܹ3}öÙgJÛéÛ·/}øá‡J#»uë19М9sˆI€tû–æÏŸO“&M¢^½z©¹¶k׎Zµj¥ê˜ÌˆÜmk€vÅ$ îC£„6uíÚ56kŸ S§NÑæÍ›•yR×^ÿš5kVÕæT=fW&fÛÆùáLäÄDO?þø£ê³2ÌÁ(wïÞUÚÖ»dÉb²¤Ù³gÓøñã ñ¶={ö$&xš9s¦š—êôÿÿ`Þ'N$~± ?ÿüSiŸաCbåäËiëÖ­„¹$Ožœ6lØ ´K&`Z·n1aLÐh³hÑ"‚ÆÛ A%o÷îÝÊ\Ì/.Æ!©D‰Ą̞ÜWÔ|ùE‚þøãâ— Êœ9³Z?,ñ‹‰jó3°ÃÊäNC‡%Gë 6˜¾È©@‘‚€ ¤lÓ¦¬_$¤7.çömª$V¬XĉÚD*k=„ý:ÖBéÍ7ߤâÅ‹~ô3eÊÄG»µ¤zõê©îëׯә3gQ¢Èؾ€X+UÕ+VT/ FeëÖ­mûØóà H…5lŠ-š`QÂù5nܘÓ*æRÿüó]½z·M ö8AB(XÇùó烬XÛTäˆk½À¤ËZž2µ‚ôYs'}½xy@aÍZ3L¿ O˜hYË'˜žavEý»ï¾K ÷N:)"ÇËÈ”)SLͲ˜¿¾ç ÒgM_ý¡/dÇŽ›=¼£ØÚ` iÈÎ?ÿü3Õ¬Y“„¯«ötí×kOÜèoe"µM‘%!X³æ(“Î •|!ÄÍp¨1DU%›Yé6˜NõêÕ ûpp~Á5>.\¨´9h–ÐæØ«´!(JŒ!33%H@ÝÃØÜ©È×z½±õf%^¼xÔ±cðô‰çΣ… Ûš¿xñ‚^½zeûŽ hÔzÁõ‚u¿|ùRi~lêUÕÃXþúë/yCcŸ¸ç#6¼ª6ù*ú|ðÅ~½hëí"¦]o#,òFàÕ+OuùO™t#ʣЬ–-[¦þp MN80mÂÓ&Zh®?V?æ }áý@ÕfV H œz šL (0q‚˜•òåË+¢!Âl BiA‹„yæ_Gäÿý÷dð’à¨,XP™¸óæÍ«ÌÅGŽQëÆ‹̬ÐvAb÷ƒ> 20‚‰¦ä±cÇ*¢1c†š+<ƒaÂéêä{Ð|6l¨¦,q94Qd«B1¾ìàåæy`ˆ˜OxÑHà yW&LØÄ?ôñÙÔ—ÝïW«‡_$I’D™<¡e‚0Q ½A“Å'̸ +L¿(:)àZ—S%ˆZµjÕla$Ó¦MS$†ýLì7¢À´ÊÎ<ªû‚ÐÞŠ)b“¥ýÿ?U«VU{·ì(¤LºÃ‡Ww íÁd=zôh‚¦ó¨YÁü`VF{v¶RDŒ½F³í/ØóÅž2L¶ ð”)S*"CxÜê¦e˜§AŠ0Ic ìð¤^Hð²Í$Ó4̰ íd3­>¼TÀ\‹=gìƒb¾0Aùå—6¼1.Ö3ö¬aNÆËYÑŸ‡Ù=ËêxRA@°‡Ÿ²÷e7öL½b¹l3Îxíšõ3«cMcG£`·ØQHcçŸ`u÷ïßW«ð´å°Û=Ö@5&BµVIÆV/SÖ5Þ§Ô˜\lõî\°‰WÃøÆ™LÐÆ*‡×𺅠W –ÆD©ñ‹ƒSݘt5xõ¢Ÿ}ð²5ÖTµ®]»*¯\ûµñ ‰)fx.ðv·Xáµ+©e¯$"HŒ ºš5ˆ¬ìàb®íÛúÓ5´H˜+UªlZ3f ö_Œûq!nr¼Wñg_R¥Je_åòw Ñ9p¦r¦`¿ÔLFh}¡¥Cv¶@åÓæ¡a [ŒáfVÌž‹Y;oÖ ‘z]‘-(·o?¢Q£Ö³§jû‡öaºt¥ iîx„~Ø/D¸Œ}YÓ!Ø·uå;Ʋ'~Wúc¿!5ðXÏ¢{‡çÜ[œÜAMú‚@¨ ´œÃ!Þc'Q¨íüñ¦«$Š5@ƒ}ë­·l˶gô>ÕoÀ!û‡V—5jx$Uˆ ï‚— o¼hx{]B¤ÞFXä †ÀåËwÙyf;µm~^”‘rxµ"¦ÕXà„J˜D‡ ç x¹~ýõתæUÄ{¢€4áá ¢‡C#áßÿ]…ù½ecÊõk„H_c!W‚€ `ÿ½‚|DI’8·WgÁ‘^¼Rá‹0xÛšyäÂÛÙŽàõŠGÌ2™ˆ„  téÒ)ÏX$ebŽ€©9.R+n €ÃºçÌÙÅaAa!nˆ.v ¡<ÂmfÍš¥ iÛ´ic׊T!â1‘<!%z$ö„¥ãÇ«0Ô#Q¼žñžfå“O>Q©ÿ°ÿŠ7äéiÍúji >yY· à^ÅÙm>ô‹T€^X^¸ˆDÒxâÖ®][Åqšô Á[WÏT/a!d@Ò3ÿ b9aFŠ@½ñ¯¨­ †cƒ¤‘{Xˆ4$ZB¤!1‘A@pk×î±Ö´ƒ÷ïJºÑ[º8B~O‰ ™"mßÙ³gƒ5A”‹ýLdBâ³ HÈñëlF dd‚™ˆ8NVåëÅ~jha+Á&@_$ü%€¶,Uð&C†¬âŒ5Ù¹åunWoŽ(²‘™‡BS0±"ß/’à#• ^E ™ƒp¨8Ž`–ÅI(Ð í3 9ÊdŸMÐlù9úè£ô¡äÓ7 ¤^ªA@p[·òé%½Ù3ô‡p#Ò;wŸÓIøŒìæX„Ø ~ÊáhÑHŠ0å"á¼}òÎ*¤Ò: Ç1Ã8^d¹Æ CΜ9CxB»°¾!ÁŸ„ =¥© :cÆl`-)w¸‘¨>@ù´'Q¬äi–©È¬íÃÊd6úI ‰€iHL¤F\@àñãç|ÊÇ>È:¤'© b¤© ag£ûèdâ‚€ 0yò>6+#ïÅ é³’Y¾C@ˆÔwXËH‚@¤CàåËW4lØjúæ›Ò‘nm² AÀYÄ´ë,RÒNB 0þ^ÖD“Pž ×¹Èà‰€i`>wYµ à1;wžå¸ÅGüŸÝcYî¸yó§Ê›L7n<à$ù-)[¶>‚€ÇȩNJA 01b-½U,\L©ëÖã“Kþà$îihñâvB¢ùOÐoV-©ß< ™ˆ qÀQiëÖ¥þýkù|Ò}û.¦3¶ÓСõ•·°Ï'  v‘Ú"_A l7Št€±cÇ»±E->|ªL¹0é._Þ‘ÏÓŒe‘d#x†€˜v=ÃOz ‡À³g/iÒ¤Í|¤VŸ­ýêÕ{|`õß/Þ[j?THÔgÐË@N © IA@xÀ¼y»9Ü% çiMüºÒ‹WçÏߢêÕÓW_“sN½ˆ³ˆvÑHÝÇNz ‰Ìº öÉÚA¢ÐD‘ðA ÷ ä2ˆ‘ºšt.̬¾yAhÍüJmÛ–£/¿”c¼õß\DX·iDxJ2GAÀO7n£"5ã1]Þ˜Ⱥ\¹þôÙgùT¢oŒ!2«=R«9‚@$GàÁƒ§´`ÁÚ´©«WWz÷îcöB¡-Jzu,.X€h¤V (2@`öìT¬X>$Ú{a'/^¼boàÑôñǹ„DàßTdY¢idy’²AÀËิºu?ôê(]ºÌâ—˜ôý÷Ÿxu.X‰€˜v­DSd ‘8ݺõ€ŠÏⵎ½žvì8Íæã¶á’vÐk Á‘!ÒHÿˆe‚€ç ƒ7µÑíÛOÓ?ÿ¬¤ùóÛR¬XÑ=Ÿ°H|ˆ€˜v}¶ %DDžúHµ†/^¼P(tÇŽÔ·o_¥•ë1cÆ´T<ȇœ‚ ÒñãÇÙË»•jÿé§ŸÒõë× Z)ŠÙš§NJMš4!¬Ï¯W‹&E÷ï?Ñ2eúA»wﱡֳ˵kj~ØS{úô…g‚ôæ\Ã_Ü ªf2Ô˜4µmÛ¶io½õ–öÅ_hlÔâÅ‹§8qBãXT E5~ÿý÷µ h•*UÒF¥±¤åÍ›W;zô¨Ö®];íË/¿TuLlZ… TþÁÖ.\¸ EUcòÒ˜p5Öì´3fhlªÕø0tM§jÌ$I’hLÞª}÷îÝUÿuëÖiãÇW×9sæÔX#ÔæÏŸ¯1 iLFÚW_}¥Å_ݯY³¦Æ£Þ,B¤ÞDWd ˜u«UËoÙÌGŽ\Ë?¬Éý"—.ˆ…5b%Øa†]¸p¡"SüãæIìÛ­Y³†²fÍJ ü(Ã|Š#FŒ`2ô/ %߇)•5)U­×á êaž «À¤3fÐ ÍÛo¿­ˆIïäºd ˜XcR¦N´Ñ H fT˜¦Q0÷(Q¢(³-L·?ýô“"¨>}ú¨µÁTÍ´Â&S³yã¥~çεŸŠv0µêsÂ÷ĉ«Ø}üø±¦V˜Šñ‚4à30pFÑÇ +ŒéhÍú\t|ŒcY}-Dj5¢"OˆÀ\¿~Ÿ½!/R™2Ù-YNvÁñh]»~f‰"ˆ9GŽ ôŠ hn 0x傸‘I×(lበm™MÌŠ@Ù\«^B öÿ h¢Ä YØÿÔ÷Tõ>Є£E‹Æ§Ï¡Mµi„ ŠHA®?ÿü3±‰W5… ¼l ˜ÍŽHж±ŒŒR r6}«õ =´M6«—¬MµœO¹³Ò€ÑZ"›¥ ûÂ(èýYÈøàƒ S†°`_«Ök5³^œY³ÞÖ›Ÿ’Á›èŠlA ‚!³néÒÙ-K øçŸK !4éÓ¿Ö”üÞ¿TÓþõ×_Ê<Š ˜Há„- šQ•*U” Ì 8'(ô9Сł$a†„ È.g>|¨ä‘ž¹Ð~‘âpúôéÊiŽ>z9cñ~§2ëóÔï럨‡™NP˜+ï*¢Ô5Q½^xVi„qYZ5ˆ &X˜Ÿ¡mã%`ذaJ¼Ù¼a¾Ãt G(0š-œ§€°ÄáÜÄ{ºJ´k¼Œ`^p‚ù¦[`‹˜žõ’ u]{9C¾./´5ërð©¯ßXgéu›¨r[Ï?¤­XqÐ’Ÿ:u]Ë‘ãGíÖ­‡–È MœdÂr6 ­¿~M¹ZÛ¶mõ¯êNA¼¬ŽM¦i˜HlÎFz811hlvÔ«”Ó{ klâTNF¶a\°¬†?ȃï{†ÑCÓ˜ ÃNQhg_˜Ðž7¿((ÇÈ€Sk¡J>qÏX08jÁ±ÉXðõÀØXàlÄھƦh Xë…µQ5–þ]ÿtfÍz[GŸž8‰Fjék‰".W®Ü%œÈR¼xЕ§+éÕk>Ç –f­,–§¢|Ò1Ð|tíGT×êôïø„)Z"ÂZÌ Ì¢ú>ªñ>42}ÏÓXïèá9ìɪ4H„‡@‹ «`o2¬‚ð³‚}I}oÒxßlÞp ÒOJÑ÷#Ñ®ýÞ1ÌÉÐví p2«×ÛÁ)ÌX°ßiK¿çÌšõ¶Þø|ìì Á"S"#F¬¥#G.s„ÚO|ß¾óÔ°á(Þ§ëæO]ïPû–øt·ÀcŽ+ Ig öë`Þå°[˜L0¸§˜zÍHÊÖÑÁ̬¬µ)/aÛ1moc˜ˆÝ-pQ#ƒ±x2o£W¯±+V,µŸëj_wÛã¥eß¾}*þ×ECÄÙÈEĤ¹ Y˜;w7‡=ä³dy½{/¤öíËû„D-™0 Á©+$Šq¡iIuö$Š:hRî(úbNØ tD¢h£;GáÚ‚ð³POæíÎ<ô>ÀØF”"DQž”ÌSð"—.ÝáTm79&/¤ùÍÕa·l9É¡79ž0ÈûÒÕþÒ>t=šŒZkݺuUÈ ¢ ýB[F'˜=á9 '&<‘AìðêEü¨YAœ(LÉF/Y³vR')å߀ 0ðÖ­P!‡<y¯z ´ÑN*°&%ïéžàhì‹p¤¹Cxb=žÂz;„î¬áxW„¾ ì¡90×¢^¶zúÁ*í àUÌ™†tÁ>såÊEH•sy¯^½œŠ{ & €¾È¿ôzزTAÀ s;ºít=§äЋ'–çéuz‘°!ÂlF2kÖ,EhȺ„ÌIö¡2 ¿† ÒÒ¥KU6 Äz¢®k×®*_-ö‘%ùwáäƒØÑÙ³gÛ‹Rßf‚XTì¿"I<Èòô¦´Rˆ4@¼,[иví;v…Šñܬ‹¸Ñ6mÊê¢åÓéñ·‰Äz¢£hì£êÞÅð°…©}Ö8ÁŒìFú>®1û‘Qžñšs«±AÈÈh$DjD'èZˆ4$&R#‹íã=³œìãÙÏÁ† Ç9±ÀCvXÊPøy{±8!'¹ A4SdB~\cA”‹ýL$Fá"ë®qÉOùq Èé±_jVà9 30< މÃ~ª}HŠYß@«“8Ò@{â²^AÀ… ÷q†™àavMœú m´mÛrÞÏ"ãÔl"O#dåAF"üÁÄŠ¸Hõg<Ù‡:vì¨rß¹fY2 ǽÁ¤Ë§ª(PIÙ’°ï‰½WýÜQûì?ph‚f‹ÌL8MŠc$ŽÔ16rGˆôpÖ!*T¨'ÇÏýÊAôî¿WoÝzŠŒ¦ÑÚµ?„ ‘Â!N5ø „3-BSŒ¤G#hŒFR„)NEö‰ ëéý…™˜a/²]{GüID6dd=‚€ *Ë—T¹u=!Q 0hÐ >Œ¹T°ðP–›!`O¢ò4˦dV‡ö8%´b6Fhíùžg›"Œœ¬]ˆ,^¼Ÿ÷È‚N'qw9‡_æ¤ì—ø4ëŽ^sw.ÒO„HÃuSð?~F›6ðøÈ´ÁƒWòáÓÅÙDè|j=?X¾LA° !RË A‚@ÄB`Íš£|fdZ­:8ÚÙ_¸p›ÏÀ<ÂâŒâ~Ò'r {¤‘ã9Ê*—X²d?‡Hät¹Ÿ±Ã°ak¨AƒÂ| H cµÏ¯&Lĉj°§ê¹áóñeÀÈ€½C–³«"u)i'D"^½Òø¸°ƒ“XÑíUÝ»÷„fÎÜÎ9\;»-ÊŽ{öœã|²u8±{<;ö+11[ªÈp !R—à’Æ‚@ä@á*iÒ$æ ý×ǹº²‰7qpNJ’$®«]-iÿüùKB^ß9svÑO?U¦Ï?·æäK&'B !Ò€zܲXA eËpоû¹u_¾|ÅIÔ×Ó¸qMÃÒãǯr¸ÍxŽ}›ãG xñÜßç —È ‘ q6ŠTS#8‡ÀÒ¥<òÖÅi1 ±9Þqn@ [MºªTù›ÏÏ,F#G6µ[墑º‡›ô",'N\£gÏ^ðž¢û$8rä:Ÿ'§ñâõè1‡³'åcÂÚqÞÙÄöÈÄ#B¤‘ëyÊj0X±â k£î'aØ·ï<áĘҥ³…9–U îÜyÄGxVÞÁ‹·çtwáë%lÕºDNä@@L»‘ã9Ê*§X¶ì ; ¹O¤£Goà3/‹ø,à•+w©råAôÁh„¦B¢N?iiè+„H}…´Œ#øwï>æSC.Rá™ܚ ’Ü/]ºŸêÔùÀ­þ®v:þË6êÖýòúÄÕîÒ^ð B¤>YüU«3‰¾ëöI/“'oQÞ¾ Äòú‚@Ú|ð+µlYоþº„×Ç“w"u9é'D@@¤ž$©?~£ò–õöÒOºN¥Jõ¥Úµ?Pfdo'òO"õ=é+D p^%ˆ´T)÷œ„V¬8DÉ’Å÷ÈÛ׸Μ¹Á'É ¦®]+ÑŸÖv¦‹´Â!Òp…_|‡ÀîÝçT&#w³M˜°‰¾üÒ»ÉéÏ»IÕª Vû¡r,›ïþmÈHž! Dê~Ò[ˆ0x¢^¾|—¶o?ÍŽ?y½¶Þ‹ï°&:„:uú˜jÕ*èµqD° `5B¤V#*ò?E`åÊÃnÇ~ÂɨjÕ÷)fÌh^YÝÍ›¨fÍ!œö¯$ï‹ ‰zdê5„H½­üÕéÓש@ô.O 'Å€H½eÖ½ÿ k ÿRù©Q£".ÏO:á€ix?_ð8|»hÑÌ%Šëÿ˯^}˜OŠIDY²$·|¦Ož<§zõ†Q‘"™©mÛr–Ë‚€/pýÿ*_ÌJÆK–)“Ý-™S¦lem±€[}Cë„ܹMšŒ¦Œ“rÝÊ¡5•{‚€_# Dê×G&'xŽÂ^è½xñ,. ƒIxÆã|Öç{.÷ «CÛ¶“)Ož4âPrßï¤õ~ÿˆd‚‚€gìÛwߎçÖ!Þ3gî ?ÎE±bE÷lv½q 7B]ú÷¯íQÎÞ3gÎPúô®ïûÚMG¾ 6Ö¯_Ï[ ®íÕ‹FjƒO.ȉÀš5G¨D ×µQ '£:u>´˜ñã7ñ1h{iüø¦n§*Ô'túôi^[ ‚Ö-‚§ÿ¾ÿþ{¶ÀlÐÿy9ý)Dê4TÒPˆ˜™u³º<ù={Î)r*XÐ:'ÏüùçRš:µù"_¯Ë‹–‚€ˆi× Ð¤‹ Qxøð)Á´[¨PF—§©›:u*Õ­[—Ó# œ9sÒ?ÿüÃGÁe§wß}—6nÜÈÄ 9¿ïëãÚÐvÉ’%"B»´iÓ²‡ñx5×µk×RÖ¬Y)oÞ¼ªÏ¨Q£lkØ»w/ÇÛ~NåÊ•ãP£äœd¢‡ºÂkÖ¬™’S°`A:~ü¸ªÿá‡hÆŒ!®Uÿ§}ûöÔºukÊ!?Ãl´k×.E ¢qãÆ©9U¯^]‘)ÆÂÜ  Æ3g›Ó/)QðBź%JD_}õ•"é°09uêçe.­ÈëïÓ§'ô(Êwèï¿ÿVr¡‰W¬X‘ÖKÆ!R4KôÃ5Hõ-[¶Tm/^¼ÈÖˆRj-˜# ^²5j¤æ "íÞ½»zÀ¿cÇŽd†'^:wîL?ýô“j»oß>‚µ–-[–بycûL­©oß¾Jn¿~ýT ïÑ£G)EŠj~臗éìÙ³Ù_¾|™zö쩈&\`‚‚z ÛXÎS¹ž J¼ Ô¯__'ÚHaqCCÇÚñ\ÍÅ8–U×®y X5ªÈ¯#°~ý1ޱt=ìeÖ¬ôÝw{4¿ýû/ðð&¥Ö7nLdYѹX±bT¸pa:{ö,'ï?­®ïÞ½Ë !úSâĉ ÷±7ùæ›oòËGqE ™2eRU½zõÔ44.$€Q¢ˆÅ¾dΜ™*WJwm ¤‚‚&4Ì’%Kªº ¨OüG¿Æþ¡±@›IÖ¨QC•~/f̘=ztŠ?>=~üXýé÷ŒŸúœñ€Ò¼ysEpÐPCÃmãÆËæø¦ŠøbÅŠÅ&ú6í÷{÷î­Ö7xð`Ú¹s'ʼnÕJóÑ¡ÃóçÏ«—hùòåS¤Žk˜¯ßxã õr;vlÕÿ¹zõªZ®íñÄËÚF‰ÅÖí-ZDS¦LQíþùgÞ–¨©¬ЦíçÒ·º„ßk¢Õ+y‚€  i±b®%b8{ö&ÿðÝR îƒ sá Læ?þ¨ÅæÓ×Z’ ",o 2BÂÄi_`"Å~4P\ã&_˜#±³0Zd ÄˆÃ^Œ2-ê•p‚‘¡@“B1Ö©Š0þ£“SÔ¨Q: ÁD s1L­zác®xi€†¦—W¯^Ùö_ÃÂ$Mš4lIˆªÖ‹yD‹M£>¿ûî;µ× €^ô9ã;ú¿|ù’®\¹bÓ˜ãÅ‹§š¦L™RaÛXtó9êtÜpí;˜ˆñlÞ~ûm4#ãíç‚¶Þ(B¤Þ@Ud áŒÀ™0b³fߥ™Ìž½“÷ùòñç.õÓãȵfÍÆ2åW©õzÿÄÞ&_ð‡k˜a>…Yû¨0GBs…ö‡mhSøÁ·/‡Rm¡íbo¤Œ²zõjõ 2ä¢À, ³¬ýµªpò?0kfÉ’EL® W×®]9#UU¹À£sÇËö­(p²úý÷ß Ú.LÐŽH /åË—§ÿþûOµÁ ´Jh‹0ËÞ¹sGÕÁl ¯chÎ(Žðĺõ‚—˜ - ö­Z£>FXŸB¤a!$÷ˆ´Ñ¢E]ÓF±L)ðv·üúë<³ê©iØÝñ]í‡a”$I’(³#œ ð¼°? SºYÑÇ5»çQ¿EHH†Ÿñ©-]zÀ¥Uqæ!­P¡ž.õ16ž7o·êÏu«½zÍN=Z‰%,ƒµ&‚ÉbG!É'XÝýû÷5vÖј¨4öfµÝc Tãdçk~ïóÙê™Ä46_j¬Éj¬ÉÚê­¸À<Œ…Ÿ‚­ßã½X56{êU–|²¦®±S’ÅÎZ¡Êg-R;wîœé¸X{#kh£Gxâ>ÇÉšb‰çÅ&`]„ËŸx¦¼÷ëj¿ÁâläÑkˆtüœó¹uë)ÞÛ røpv†ðÖ…IÖrúô öìœÉšWKv:‰áŽˆpí-N,•*U 6ŒC¦V4î»küÿ/pŸ}6fu1î!B6´Q³‚}Loœ’M^/ƽX½Îø‰ýÒÔ©S«l×X‡ýZô›fxÂùɬ˜=/³vV× ‘Z¨ÈÂ]»ÎªÃ²ãÅ ùcÚÔæÎÝÍDØ"´&¦÷ž>}Á¦´1ôÃ9RP8‡iC?®Äþœ_\)ݺu³9¡ÌÂpV²/0ß:úá·o+ß_#àÏ×-üçJˆÔž…ÌD°»œÍhûöÓJñ–[^¶]»Îæ$Éé‹/ Y2ÿðâ*‰bŽÆ |‡Æe¦U!DEŠë8ÂÓuIÞï!ÎFÞÇXF|ŠÀ† ®)´ÑÏ?ÏåyΚµCeAê×/ÈÕeÒAˆˆF ¢,AЀ™uïÞslfÌ W…ùÉžꤗ¹s[‡ÙÖØàÔ©ëì:—þõ8 ’Q®+ר÷[|ƒ²@IDAT³fòNE¿hÑ’r"Bœ¥((ÂYÒVëׯw!R—!“‚€ÿ"-Nmq%½ßæÍ'9Þ4‡´;³:845o>ŽC,>qËìÌδAÈ^@êü±˜µãS¢RžÍÌsœé.mK"µF"ø›6p9+Ѽy{8n/ŸK èÝ{!Ç& ÷}QÑÖ¯ßR>=d'‚(AþY‡_"‚gàqiaÒXpÙ#u4é"ø+p4*T(dȆ£ùB›[¸p/}úiGMBÔãh6„ÊüùçëSB4òAÇÉr Ä>œ8þ>›ã:s’ùÒB¢>À]†‰€h¤!1‘A B"ðøñs>ògâIçôüoŠÃ»S§™ÖLòè¶m;™"û‚=TÍcùÌúYYwçÎ#Nª?ƒÓÞ]âl6õøôç_¬œ‡ÈtD#Õ‘OA ‚#€ýÑܹSq2çM› ìå3%×F;t˜Ê¹b ÒG½.hÁt]¦ÌŠøW­ú^H4\ž‚ j€h¤öˆÈwA ‚"°yó —‰D ¯[gÊôéÛÕÉ0#F4r¦¹¥m`‚ƾ,Î80 .›t3[*_„ ž Dê zÒWð#à}Û±c§g 6qâ8œ:.loÝ‹ïð‘YsiÖ¬o|~H÷ÇOù\Ð |æK>ײ“:ÕÆéEJCAÀˆi× Ë‚€·Àþ(ŽNËŸ?ÓC-\¸O5ÉëTû6m&1™•â#»’;ÕÞªFçÎÝdG¨”ƒZ¬GXÁYôæÍtìØU‡û Ð_~™ÇG’Õ´~²&‘YièÐ5*»Rš4‰MZH• àÿˆi×ÿŸ‘ÌPpˆb-‘t>aBçÈ/_~ˆJ”Èê0;ѯ¿Î£ªUߣœ9S:ÓªS¦lå³C§Ò¦M?RÊ”¾ó ¶jþ"GÐ"Õ‘OA "°mÛi‡Ú¥Ùr–.ÝÏIÌÏÅ^ëºuGù¯³YWKë¦M󮂡-Uñ©®(né$D˜ `bÚµH#„Û¶r:-à“'ÏiãÆTºtöSEÍwßM§ž=«9íýBˆ“sæìæLE‹ø0î–”'Oj'{¹ÞlìØ±Êãø7ÞOÁ ؿʕ+»þ*”B¤¡€#·Gû£ 8?йóæMCñâÅ ±¬ÿ]­BN*Tpì„¢“8ŒûçŸç*u&Y¾CغlÛ¶̱°šü ¶;vì  .ØþXq!¦]+P‚@8 pñâmzõJsÚÓuÅŠƒ¦Þºˆ6l -[ÖÑ««ÀY¢;N£iÓZHœ¨W‘á¾F@4R_#.ã !€ýQgµQ ¹lÙA>;¤Y·{÷ÿ¨Y³âìð“À¢™…§¨¯¿G#F4¤ìÙß Ù@jŒ€i~x2õÀFf]gÓîÛwA™tÓ¦ bsïÁƒ—¨E‹R^™”êÕÆ™’j¹ïêµ ‰`AÀb„H-TÄ ¾BÀ•ýQ˜uË”Élj/^¼¢®]gѯ¿Vá“`¢»gÕ—k×îQÍšÿRçÎŸšš•­Ç_åìÛ·._¾lÉô:Ä1ÀÇ,‘å®sçÎñ‹×A—»?yò„–,YBýõ›ö§Ñ¥K—œ–±gÏË0tzP ‘º˜4ü‡ŸÒéÓ78Þ3•SÓAühÙ²Á‰tĈµ”.]Ss¯SBÃh„ÃÆ¿ür5lX˜j×.FëÈyû?þ U«VY²¸ÿý—ÆçP§I“&ï{r£@ôòåK:uêíÚµË%QgΜá#þ q¸ÓŸtçΚ7o‡l}¤Õ‘ ãZ¶lÙBçÏŸwÔÔ/ê…Hýâ1È$×عó,åÎÊab£´70é^fF†£!CVQ¯^UM-»†ÎÍ“' µlé=³±§nß¾=Ïó+v~z—l+Åþ`ç­Ôê‡þúõëôÉ'ŸÐ† Ô0›6m¢J•*ÑÍ›7©F”$I>Šîcºuë|þœ7nÌÉ1Þ¡¦M›R¾|ÁcuGE 4`<òPúôéiþüùJfþüù9§qsJ–,U¯^=z¤êË—/O'NœP(æ`, 3Œ[¥JÕ¯eË–êv½zõhÊ”)Ô£Gº{÷.ÕªU‹’'ONŸ~ú)]»vM‘®kÖ¬ÉÙ«~Q‚K•*•šƒ>ÆÀÕ:òæÍ«æÙªU+‚§+úh¥:u¢¿ÿþ[u¶‰õÞ¸qƒÓ<΢,Y²ð! ™x?|„ºß¹sg*Y²$ïÑ/cíŸiÒ¤I4aÂ…ÓÓ§O9|+$Ƶœ>}šSVÞVýõ×”8qbÊ‘#Ç;¯Sò‹)BxŽ)R¤PÏdíë"DêkÄemñâE¥aÍœ9“îÝ»ÇÇ·Mä$‹)Z´hJsÊš5+ŸF3[Í Ÿø­0Nœ8täÈzûí·9½áª´¨+V¨:Ü3–+W®(ÓæôéÓYwéÒEÝÞ»w/g¥JH»wïV$µhÑ"Uÿá‡RìØ±Õ_Á‚Áµy̤ RÌiüøñÊôÙ·o_Ê•+—"9ÈÚ0ä´iÓ†ž={F .T$ Òù€$a~^¿~½za½zõ²‘H°OŸ>ôæ›oªq@–Ðßÿ}Eˆ˜ìÊ•+)FŒ” AÞkoÁ‡ $Ìåûï¿Wíܹ“­eÔºôÿ.\˜@À e3 ŒkF "¶Û·o§5kÖP:uèÇTâ`îÆ ˆ/9x~¾.¯ÿÏòõÈ2ž ¸€+û£Ë—ä$ Ùlc>|™ÏÙ¶mY[•Ðtwî<£ÀÊÙ¹è}ŒŸlÐøÂXåéõ`ÑH½úš"Âëؾý ›?SðåËwÙä;Ò¤æ}¾g¬A-aS^ó0û¹Ú [·Ùìô’Ií»ºÚ×ßÛÃ| Í Ú§±À4›-Ûë}gý4=hcŽ ö(í öf±OiE·±±À¬ZÑ÷(ÑÆ878û öõ}Hc½Ù5ö;õ=Oã}ìëš®±×fدEïcVº<+>…H­@Qd>Bû›HÆàÌž«Wì›]™º†]CE‹fæ2kóÜâH4¤\º´ƒðí00ë"ÓYÁì@p¼1ÝÙÇX‡kìUêû„ö÷\ùb˜€Ý-p¤BhI±bÅÜáv?«0p{tg# @‚€¯@"†÷ÞKëÔp«Wá}ªÌœ0à!‡¢¬åŠNõs¶Ñ‰×TŠÁQ£1ÑÄp¶[„jVWHT_œÑ»u ÁŸ}±ogßÙï |O Röy++RXó² ƒ°Æñæ}!Ro¢+²‹صë ;~„M¤p,Ú°áiVNͶ”3ñàPƒ×q€žNëÑ£güÃ;š[*s’ÿðœôtM¥?¼õlFúœá”T·n]ežE¼*¼Šá°c– ¤‰Ð˜_á•‹¤få÷ß§©S§*9f÷¥î5B¤¯±+AÀï@üh¾|aéîÝç˜8ÑÓ§/hîÜÝŽPÎÒµuè0•½13(‚¶T°3Eû®HŽ€Äð”Eȉ}AÊBdýw0Bie‚Ç0Râàsx :Ô^”úŽÄ àm„t*Û‘÷jÚ8À+…Hü€,?â À®…´gÏy§L»k׬›…µÑ%–òÿ`†4+º»ò1c6phÂ5êÙÓ¿Óÿ¹»>뇼¸Èd„XL¤ïC^d²/ˆoù!ìY‹eB=2!\”ôˆöòî‚pì¿"¿/È1¡Î&°—™¿ ‘Fæ§+k‹T9rE¾íLF¢µkòer• °E‹’–á°gÏ9e*9²‘׎^³l²‘DÐܹs9 U\>A§¶Ê¤Wû‡%Äq¢ÀÙ /]f™€`†#”¾/‰Nd ­ !=ÆI#ŽSˆ4$Z!ŸHÈ6R#~€€³fÝû÷ŸpÖšKœýåæ—°,àíÛøÄŽ±L¤µ)Mša~Q¤œ2!ýóÏ?êØ1h¦H$ÏqšÁÖ ‚„)û¢ÈþƒÔ…f™€žƒìE g”3f¨ýÒ`Âþÿiþ`F¢~$ Gn_ì§CfÌúb„¿âS—5GHœu4Ú°á8‡¹¤ä´p'ù å:–­•APÕªï‡8×Ô²D)ÈÔƒ,Døƒ‰uÈ!* žrã¶cÇŽ*ÓâAa–Å)1f™€TG·ÁLŒ½Wo†bŸMÐl‘m ç‡JqŒ€©cläŽ àWìÚuŽMІ9§5kް׿>…¤ ½õVÐéav £Âgà¸Ô¹³µ!4a +·í@‚ý~ýúÙÒëé·‘ã¤G#hŒ:)‚$aÊ…S‘ƃó;AÂHÁ—&Mub äà82cAêC$b6‚RØI A Ü@†óçoò1]a'TX±â g2zA_|aMbz$£8p9Ÿ9“.„ûÃucfò4ËúcV‡!q\hÅlŒÐÚò=Ù# ä§/k0 œÉàÃJ6úô 6ï=æ8Ã’ìt<]œ;‹å<º,kýôSeKãPÝ™‹ôü!R}22/AÀ€€³ŽFÿý·“O yÅ&à"†Þî_r"z>mãm>õ£€ûB©çÓ§o„ÓÈ2l ! DhO\Ö!‘:“ÑhêÔm챙ϻô;™y!àŒFzîÜ-O¸Mݺ}æ12<åš'rf›:–&sðxb¡À>rÿþK99oöbÊÉòR«V­”ã öåO0À¿üùó[Â#ÎF¡ü)·@àÂ…Ûì=ù&¥Hüh+û¹ýúëŸ ’“ Ý©Éí<舰–æÍdzéú;Tu¢X±¬ÉìÁ”¤«  1íƒC¾þ…ÀÞ½ç•ÉÖlV0ûޱNåÔ=~üª2ïšµ «nÛ¶Óì¡{5ÒJa5õùý³goòI'TzÂ)Sš ‰úü ȀΠDê JÒF'öî=çHaæLœ86=|øŒŒÒ«XSW§‰\º:L¥ß~«Î§ƒxž ÉÕñCkøðeª\y5hP˜z÷®fžáÐdÉ=AÀ›ˆi×›èŠlAÀ3t#Y½Y>|­:¸{ãÆã*Y›°êpªK–,É9Œ$gXM}z&í/¿¡ÎSEb)‚€?# ©??™[@#€ãËÚa¶'xðà%:{ö›=sÓúõÇT,¥«`Á;Pé7l8®¼v‘ŒÛ•2iÒæbÕáß®Œí¨-bD¿ýv"‡·4u’Ôû%B¤~ùXdR‚‘#tôèõT­Z~Blé¦MÇUrWðBÌhß¾‹8.³Š+ݼÚvöì*g.’,äËg®…{u"\ð!RÀ“®‚€·€7í±cW(gÎà&Û§O_Ðĉ›é«¯Š©¡¡‘ºjÅQcåËç !Û[k KîºuǨ{÷94kÖ7”=û;a5—û‚€ß! {¤~÷HdB‚Ñá×(C†$#FðÿEqÐ6Ò¦K÷6ïÞ£{÷SæÌɆ ™’fÌØÎJîã͆ÐDqîéš5ßÓ»ï&õæP"[ð¢‘z Z,¸Àž=çM3 ¾†C^Š+Á›6 ?tÍ!§[·Ù*~¢D±ÝŸœE=±'úË/óhÁ‚¶.½ X4¼ˆ,C øë®ebE x‚À¾}!‰tóæ“ÊA)Qð½P¡ kgÆBö¢‹oS£FEœiîÕ6kÖ¡ï¾›®Ï‹9׫P‹p DêeAÀUàhT¿þGÁº¿1ØÁÝ[¶œ † kãè ö\úiýþ{ ÂñcáY¶l9ÉÞ¹“hüø¦^Ý}ñâ¿xøï™ªáù }ì3gÎPÚ´i-ƒAˆÔ2(E `  ½“'¯QÖ¬¯onÝzH«WaoÛšj7þ²eKáÔ È‚”5kröðÍìT{o5Ú½û5m:–†oèuï\iŒ1èÉ“'ÞZŽÈ€/^œ„H#àƒ“) ® €³p4Šýõqf8åå“OrSܸAÇ©mÞ|BâíLü(âN‡ YE‹µse–·EºÃúõGÐß×sÙÓØòɈ@AÀBÂׯcáBD” YÀAÞ¹r¥ ¶œñã7©äíz¥+û£¿ý¶€SîbSVb½»Ï?Ïœ¹Áféá*wn‰Y}>¾ (x!Ro¢+²78pàÇx¾&RÄY"ùBž<¯³HñØE¾Þ+QëÖeݘ‰5]Æ$Ú±cÉk ¤"ÅÏ=R?{ 2Ai•*ïÛ€˜0ak”¯@Lð¾u&¿nïÞ ‰š%¾· àÅ $hØp$Uª”‡ÉôC/ŽäŸ¢?~LÛ·oç½é žÌòåË—´lÙ2N¦Qž”³NÚ·o%I’„bÇŽM7n 6Ř1cRÁ‚içÎ|è{·×rìØ1%ûÑ£Gü’˜Sáá̶ÄÇÕØVàla±îiX<1'"¯^itäÈe[Ö!8át—ªU_+¼^?ø …õC´}ûi>†í¢Óž½ÞÀÉR§N¤’ã{C¾¿Ë¼té.ÐÄ’iÂiê“O>±Üyê?þ U«Vq&­cT«V-uïøÛ´i'ý¸§ÜݵôéÓ‡>þøcÚ²e ¿^ä ?P©R¥èÁƒqiÑ¢mÛ¶Í6¶Ã†~rCˆÔO„LC'N\¥)ØŽN›ó %nâĉœ¢ñ}úõ×_nݺ•-ë•6׿J“&’wþüy:wî\°)ìÝ»—&L¨æúõëìE½ˆ®\¹BK–,¡éÓ§+òêÒ¥‹ê"Ïš5È)+[¶lŠƒ 3|a‚œ¡ÁAþСC•&ƒ)øçŸVëºyó&ç4îN³gϦ™3g*¢¶ B”þ·víZE¤ Dcùî»ï”vNœT®\£x¯u»vShÒ¤¯ÙÔòGØ{#»/Z$´N8ðĉ'D6$˜a.\¨È?Úø‘ïÝ»·ÒÖ¬Y£ˆ?òÐBS§ò¬F"³2Cyöì™Òq­×éõ g ¬÷í·ßV]^½z¥Lž˜O¼x¯l‡ rá8¤›eáHd_ЧcÇŽ¶?˜µí äàEŽT c˜U?ÿüsEÖ jo«V­Ô ^öï߯4O£h“:a;³~´‘ÔõuB&ž ž!ð"D¨Ë˜‚€„i7›¬)'£J•òk¹uë)~ûN¬ÎøåÅ‹WÔ§Ï"6ÛU2Vûä¦ä&MFó>X5Ê‘ãuV&Ÿ îÅA2eʤ¼ZAžÐNQ°'‰¿¹sç*Í Z^… ÄŠ¢›‚ÕÃV¯^Mð¾1çÈô¢R1ìØ±Cyξ÷Þ{J³Ó÷aÕ÷=! $¦ÿ¡ÌÒ˜ öR1/ÔÁÔ G!hŸÐ1ˆ&W¼ @³t‡x }CƒÄ^2Lá0Ÿ>}ZiˆÐÈaÇ< µ*THfÏž=Õõ9boºaÆøªæe¿~ÔczÁ>/HûÈ‘#ŠÀ,X Ö©ßïO1í†÷ñÿ#“-âE&ŒEcÆlàÜ6§#¤mÛN³é¬‚þ5Ä'Be2gN¦¼zCÜôb¼¿þzU®œMmÁÉß‹ÃzU´Ñ+Š=;„ž T«VM‘´*h—º³LŽpFIlPt9 ìóÁ[ÚÕ˜1cÔ^,´-˜%oܸ¡„Ð{¦ ÂÿþûMô]bßŨÁamÛ¶UNLØ…û¢0yÂSV'k8\aúQC{Ë•+—Ú—…LŒ©ÿợ¢¯¥[·n2 4[¼H@ ‡|ŒG h¶Ðò±‹¶˜7´G7ÌÑØ×E1[?Ìè0icý(·ïaƒ¼ñ" ë™4i’º¯ÿGŸŸþÝgŸ¼()‚€ à,X°GkÔh”šÉÇÿ©ñ )ÁfÅ1™ZÆŒßi= V¯A}Þ¼Ý5ŸÑ«|öùóÏsµ:u†jL>3¬Øô¨ñ{XÍœºÏڨƄ¬-ïóigÏž VÇ¢ñÞª¶xñb5Ô`÷˜¼4&]lõ¬©i]»vÕ˜Dµû÷ïÛêݹàý[%ߨ÷Î;kv¶*&!Ûø˜ ky¶{®^ ÿÑ£G5ÈÔ ®YƒÖ˜Ðõ*Û'› µ“'OÚ¾ã"´õ³#Q°¶ø¹¬ÍzôïŒcRùÿ­5!d{P1X4RŸ½²È@‚@èèû£'N\£Ë—ï†H0¿gÏ9unç[oE34qâ&eöÍ’Åùƒ¾M¹X9gÎnÂÙ¢K–´·i_.Šðëæß|ór$‚3‘± ôžD‰EíÂC׬@CÓ÷Q÷'NlüêÖ5ö#í vŒÅ8>‹<9}¡I äëZ°±×OqTÌÖoÔ¼õ~Ðz^äoEˆÔßžˆÌ'`Ø¿ÿ¢r.š1c;ÇÐåAJÛ¶bg‘ ¦ø<{ö’Í„«ÙÔÕÌô¾·*‘ˆ‡…Ϙђ½,ýßC×`ÆDˆ HÒÙ‚=IìËåË—CÈнPíܹFœ(¡Ü-Vf`reV­ß•1½ÑVœ¼ªÈÜ@ŽFHV?sæÞS*BöG‘ÑȬLž¼™òæMíÕó=íÇ…sQƣ؃µ:;”´o‘¿c/ÏÅZ¡­Ùkƒºg­ „ÛàÏÓ¢;A¹+ÇݬE÷³jýº¼ðú" /äe\AÀ€Ž:{ñâ%Ç)^cѸ”)S#†¡ gÓFÒ¬OÝþYÉa'åŒÍ½zÍûIìà2^%|øôÓ<^K„GÞ·-[¶ V œºuërÜqbåø‡&x½"»ê`n…CŠ£LHÁò$7@æ £÷¬}ù„€©üKüƒ/±6™’M¤Af]û)á$gÀŸ}™6m{ˆ¦`/Ò×§ÃØ·±úû A+øö%{i~lµh‘g‚¼q‘þa H?¨{›"ñ<;Ñ(/X„×  óQW§N[ÊA³LHF9ú5¼z‘1]ºt*ÍŸ+ñ­ºŒ@ù" ”'-ëôk\a+K—– ^Ÿ´£ýÑ—/_qNØ>ÕFab5j=§eû2Ä>®>_ù´„Ó vsÖ¬YŠÐ] ’ì ²"ür|æÒ¥KUˆ 2(¡Ž=ƒéøñã*£BONOÏ„„ Af ò‘hû¯ˆûyCbS¥G@ˆ48òMà´óìÙ uÆh¢D±CÌäeæh„,FiÒ$VÙŽBtòBöE[¶ÏÎ7u9íëÌ9^JDþ$[@ÃÚµk«8JxÆÚìáê^Ĉë„é¹~û²ˆí„ Ø,’½<ãw¤ÄØ däµ"5¢tò‰„l#5‚€ àe`ÚÅ_ùMGBF#ûýQüX¸Ü§ÚhëÖ“9Ü{T²dPBuÓÉJ¥¥ ãÑ?ÿüC8š)² qüj°1@0åb?Y¸É#p{È2„¿H†o– )˜°ÿA&!˜‘tâûï¿§úõë« K¡…±˜É „:  „§,kôkºræÌuÎür…˜+bJ?~ÆÉÁ“»7wîå˜äÌ‘jÁ:ºùeäÈuœ}ç>ïÕ5vS‚tsdëAúAüÁÄŠ“i*V¬¨NOÑå!å2 qå\³,N¶‰¸K$‰>|¸jŽcßɘ 7ì³Á¡ /kÈÀ„#Ó¤8F@ˆÔ16rGð G^æôi±U†¨QC‰°?jö2hÐrNGWÅ'sD²h¿‹ý½«€sâèâSÜÝ‹îRÜ¡HÒBе/VÜ ¥X(Rh¡H‘RÜÝÝwwwwÏ÷þ/ßæ6¹Mn“lr‘™ßï.+3ofÞÞåí³ÿëHðrá×è•EÈI¸Ò ªÎ nªº¡2 „àö 1*Bp}0å’Pw/]º4 aBâ²o ( {«ê‚JP¶ˆ9 ¹1dÉrþQ˜ßPÀ[«íÙs!œ E‰µ(QÞ¥KgÕbèµ§O_Š-þ¥/ïZ„Ê“ÄPÚ’˜kÐpžZ¨IZ×0«’z5Zs¨ïËã0ÈWË0^È#ÉHáÀîÝç©ÖäKª©íwÄý‚C¬Ö6vì2Ï}huÍS'={ÎcŸhõê2_ÔS<–tý›R#õïç'Wؾý iœ™5M¦ÏŸ¿¦´…›V…¼‘SzüøuúñôöW¯>J¹ˆçźu]==•¤/9à·©ß>:¹ð@áÀåË÷(a¾˜æv¼Ä°Ñ£‡á¼Ž³ê~–Õ¼šD\¼ˆš¨ÝºÍæT—رc¸H%r†]»ö€Êͧº›ž7}GÎ嬾Ä©‘úÒÓk :ìÛw‘ƒD>þ8ŸæÞá-T(ÄrP‚+W¦DùÞ–kž:èÞ}ƒç;*$]¥{ëÖ#*\½–ŠLïß|S‚j·Þ¸JSŽ <­ÉÈ&©‘Ü”´$œäÀ´i;¨ÀqBE×6AªsK'NÜBÈG…=^i¥ÑNºAù‹_;¹£Èé8¢˜§LÙ.êÔ)*¶ní)lñÃo"gAr֠․Aõ¸åf}›6 ¢!v—µgÏy¯Í÷!,¦N ¥$ûvûqZJ£MŸþ™FÃLÊFÐöÅ‹PÐ"*[–ElÚÔƒÐ|Âã{b^ISr@ဤ 'ä§ä€—9põê8xBH3áA°” îø&S¦4CñÍž½‹Ó`2dp¿´£­vê4“€ÑKsI7Gý"û*åÀüüøñsÂýmÈEÍ#{Mrþà䀶=)8y!w-9àU,Y²Ÿet«ˆ\õöîµöŽ»‘Êb•Ww1üxúô,ÜÛ·¯l8m£xWŸ}6’J†$€öÎRˆÅ\IÇ%HÔ%¶ÉA’îs`áÂ}âÅ‹×á–L“ØîÝ,`ôHCA 5Oþ@;8p9Uic×g«¹P/^6o>)J”ÈÂå¿Nº!*VÔΠݾý´È’%…áHF(‚=wî±eKOû‹ôð»wŸˆråŠZµŠx\ˆb+¯_¿&3v,ò7?÷ðÎ$yâ@ùòå©òÒC©4íúÓ_€\«ßr`ÆãâÃsðút„€#Û­ù—±½åöy¿~‹DçÎU#-µQȵjæ¼X )É&9H‚4ž¦Ü‹Ïr`Æ,Hl„:¤Ð:mÛÆ'øÒ'Ÿ°½åÖ9@ NŸ¾ÉBÌ-B.†o¶N¿É¤›[tïþ±‹Tä0Éß値¾ûläÊ„.B¤,êhž?‡£rµò%gÎÜÉAH±cë×ëß±èÙóN½ñ6KQ¢­^½1 ÒߣGuoO/ç“ð ¤ õ ›å$ÁÌhšå˛ͺðÚ‹ØÝµëœ¨QãCYµxñ¦W£†±Z®žE¾|ù†ÀƉ\¹Òˆ~ý>Ó3$àúÀ?»yófCöõöí[±bÅ ñîÝ;Cè)D:$®_¿Î>eÐG®±½öêÕ+‚p\"nÞ¼)6lØÀÝðùòåK{Cøú©S§Ä¤I“ĨQ£Ä¦M›Ρ&ôôéSÃø§¦kô±¤FsTÒ“°á€bÖÅe1h RÀBðÔ©SÔf´ë§wøõץ⧟j¸NÄÅ‘¨,Ó¢ÅdQ¦L61xðW.Rñÿa×®]M›65d#/^¼ü1U za=…Èï¿ÿN…ÖSîò#¦hg{í»ï¾# èܲe˸[Æ Å;wì ¡”«¢ZµjbÇŽâêÕ«TD¾¥UOž<±;¦U«Vb×®]¼¦Õ«WÛíç+7¤ õ•'!×€isß¾‹\8„ Õ 4š†à™3gký‚°®\¹2•ÂKÄ{Á:ÐFŒÁû(P k‘¸†=eÏž¬¹¨Öë߸¤Ù:uêÄûÊ”)¥j夿á}¼¦ùóçSQú=w[>|Øjì±cÇDÉ’%Åûï¿Ïc!?.~ùå±uëVªê3–^ì~¡¡¡"J”(¼­ýCPO™2…y„½=z”確¬}Å?ü@æõbôèѤIfA-Z4B¥ZËý§N* *$ ÀpçΔR´EÀt9tèP‘>}z¦wùòeqéÒ%«¥ßO1+b¡ ðÙÁü‹öå—_²P‚€©+Áäˆ`$)4…„´X˜oáËD:|±š0Ë"òþNô‡Ï‚pÁ‚ì7… D€ šZƒÃ::tèÀALð‰ÂŒ ¿(Lºˆ”U„5ü¯®ðcBPCËÌ›7/ûeASY#޵šžû½{÷&Œhs„6´]¼\@ˇ?×±nhÞ0GµøeaÒÆþÑ0_òaCPãE6ö3mÚ4¾¯üŠhJ?£?ߣMÙO2z6IOr ˆ8бã 4jذ$ïºeË)ôEœÇª„Ùwßý+âÇMoÛÏ(8§‘ÛÜéÝ{øx«ª RvjÖ)>ù$¿hÛ¶¢Ûë7’ÌŒˆðħ» )ðëA˜* ¾<.˜†•†/y\G`„"ò2•}X˜9°"ü aVÌ”Êg>Ïž=ËkQõC‹ƒ– Á‰aíó+¦Xµ Ø™ù´ú‚&4Ñ,Y²°U÷ÀÄKü§Js´ÿX½4` ‚Ãà»!ÀyW…& ”ñiP-M»qR’‘°å4RuMQÛÒgÏ^QRû ²7Â? Sòܹ»½šrÒ¾ýtžò5!jû,Ü9oÛ¶-ktQ7¤¾¨…(î!Ç6BU=š"DÕד&Mê–-ø#ÕB×°£Qœ«çG_#…(èƒ&´kÌcÛ`þU Qõ}­ý«5o¥/^62Rz‘«BT¡cô§ù5Åhª’žä@sàÒ%_¼£/·äÌ 3ÆîmzS7›³p¾QäxÂwZ½z>·9†t—¯¿.iˆ‰XÏbæ‚}.\ØNOw¿í“%´KÛHUG‚)þAuz- [á¬îïîñØ|êH°»2üŸH÷±ÝŸ+´<¹WÖãê˜ð¯ ®R’ã$$,@þh©RY,çZ» ì#³è rÅí@£«WPÀÉ~ѺuËœžÂ÷¿!Üõ^¹rŸ‘‘¼¡1©Y³I¥W›¢>Óz”‡NJJ@j •(_eßÎQrM4a†` !APz0k!-!—‚¹£«V­âÓ½{÷ò0Ï"ø ѵ0×"0 9¨¶0eÙ Â)'H_àF.‚©lü¢@DðäÉ“#±·ïïçRúû”ë÷9œ={›‚.¢Ô²6¤¾÷Vi+V&8µ|ÝyÙm³îèÑëÉ7ZÂm­VY›£OäŠV¬˜“£tõ“÷s¦Q`ûBûCä*“€z¤§a€âv­æ[-¤%…o‹-ª¯k×®ÊeØ"h@ÛU˜[ŒèX¤™y±JêŒj4[ä†Y ø·X#ö,M Ò`yÒrŸ^W¯~w@IDATãÀöíÖù£˜©h {h¬•+ç&ÿèe·4Ò;wžP®Ý^ú¢,ïñýµžrŸP5™šŸ+Ð'€  ë֭˹‘ZQ®jÜ»wÏrªN‘QP‡´–”§OŸfx?œÃO‹¥)´:¦@n‚ŒŸzõêqN*Rv¥Œf/Ò{ÆÄŽÛ¡ÌÈŸRòÓ•{‹Øšu‘ª}î0vÍ_Dë×'lІ<~ü%Í¿ïò:ÇÛHà…=©zV`.äºF‹&¿6\~`ÿ#àÝ¢Ê ´7 ]¼xÑŠ,‚•P=ÍR’2@ iI¹“1€ @ašu$´áE‰4¤ü ·uݺulîÀ𷬔OSèãþXh¬ðÃb€Èô>Xšü–'-÷é5@è”.†htùò=‘4i\KTz©V-¥Ü`ìÝ8qÌàÝÎ.ðñã ߪUg‡:ÕÈE­ZM¡¢ÌßP`”u$ªS„dg  HA8€»È zõê–û8€ßÕf7 ÿ¨½Z ÒRñâÅÙ$ ªÒ`Î…F‹ "T†ÑÊÁÄ5ü@ë„ÙeÖ ‘Ë š|rA6aKBÂ˜ÄØ›me=ùI›—Mr@rÀ æi*R¤Ÿµµkšê×Ã×^½zcÊžýÓ;M³fí2µm;Õª¯3'”7jj×nš3CœîK5EM5jŒ0a.kHc"¨:¿Y6 Ópk¥à…»®u—L¤Õ†»EÁ&üPô®‰ü¥&ò­†ëc{‚”ÂÑÂú¨2mW>×Z»fG¸HUqL„yläJFI@†€|=’›Š, ¥¥H‘ŒVÓÃ?ªÁì›3gjÒPãQUŒ+.G¾¾xñZüóÏfŠÜlk5—Ñ'¿ÿ¾‚ò!ãFRÉhÒ’ž ÔDÊ-ä¯Â—ª§)>LÛ¾ˆ¶E0’&ƒ` ˆ4Q[d!¬O • ´´ÖÑt_ Ò@zšr/‘Î]»ÎQ©ªLVë€ Eqo4˜u­‹†@#W¦OßAód¤&³ß• ü &êY³v“Ÿ,,ÒÓà)$9/p>RÔ8=yò$›‰$›±>Rcù)©9´4Ò3gn±FJ¶$†„ ÅñÑ£×("Òù\LÀ "åÅ“Zâýûϸ,Úˆõ=Èä2^Ù>4[ø=¥õ »¥ õ _%Õ ä„€ãaºU7Á´»k×y‘&M"0‚p¢Q¼x1Õ]u ©4ùòS¿TkÒNfPaæ‚¢lÙlZ·ýâÚ›7ï(BUGùÅÃòóEJÓ®Ÿ?@¹|ßá´ÑÂ…­Ë;!ï2jÔ(¬Õ­Ys”¢uóò‚ÝñŽ·ItíZÕc†îõë)Õ¥±Çæð$áWT,}Ö¬TÀz ¥|Ä ®èQO26€h‡P6#›¤FrSÒ jh™uÕF¤þù5óþQW4Ê;ÏQžßKBÊå^£ÔÛ!+)…¡½ßå‹¢6êÿm§Æ œ›‹úx„O’¨ä€šÒ´«æ†<–pƒö`ÖE.éƒÏHxš}¢¨øâ V-@š7/çÆ*í}ýú- ÿG0oŸ‰dö;úàùó÷RîÇxŽ+ÒL™ÒÌ-Ä(Ü¢\’s@j¤>üpäÒü‡0'=zÕ«¬\ÑH¡Vª¦E9rÕiAŠÚŸýõBÞÐÏ¡CW’M*¾ø¢¡t=IlË–STÒk±ˆ3i¢ Ù´îÉù$mÉ-HAªÅyMrÀI8p‰«»ÄŽÝj$)@ÞÇßÄE·qpI’Ä¥üLçÒÆßÌàô¶sXMèâ Ö?}úN±aC7)xw|¸½{ϧ”ޝWÝ’RäÝUÈÙ$̦]ù— 9`öì9.d!HÓ¥KÌ»åÊeç™`ÖuÖ? 8À¹swl\VkMàß?J£Õb 뻾u†ÔQT®ü;¥s¤7v—BÔ·QP®Fj¤AùØå¦æÀÞ½8]DMU^>|F%²n‹B…B¨<•S&àüùK]™6-”Lù©&dõ†¸Œ}· P„!D=@äĉëTjl:U‰MÁP\À¿ü¸`‰$é#©<¹ ÿæÀþý—4ü£·èË>9!³Š²EÄnîÜitoà &l!àøuÑÛ>×E‹ˆ_­¥wH¤ôƒZ»öhñÝwåÅœ9­¥”§ 'µÇ©‘Ú㌼.9 “a@ÄkÚ´‰­Fœ={‹ðMSP ¬c$+Xî9›CºjÕQr€)ÓÈÞðáõœö×¹G´ÀÛNf ˜¶—/ïHfò$ŽºË{’‘©‘F Ûå¤Ä-mûƒ …&]Å yíÚ*œÍ)_ä¿ÿnß~[Êp– ´B+–I”/oöÝ>›·m;M帆q$î¢Eí¤u“Ÿr¸ç8 5RÏñVR âõƒÒ‡Û-)YeÙ·©ÜDÚKž<ú yŸ?G`Ì”)͆|¼¼`Á^ Öéa=£‰Ta̘ Œ®p~Ù$|™RúòÓ‘kó @#mÝ:¼ÿ‚4J”÷ÄW_±ìãÈç€×W¿~q=zT wù siß¾Ÿ‰Ä‰ã¸KÎÐñÏž™ÍÍW¯Þ«Vu–…Ä å®$æ)HÓ®§8+é  ‘(^#E´îéÓ·D‰™-¼@ÄnîÜú4R¤¥Ìž½K4lh¬YÚ^Ê” Å矴¬ËΞ½MXÄÃH¸Ç¥¨vRˆúÂC‘kÐÅ)Hu±Iv’Ðæª¸ Hw¢DÖšÝÕ«¨dUt°±c›Ó^@áðaý¦Ý… ÷s‘ð÷ßO¤=¹ W/\¸Ã&ÓÁƒk»0ÚsC€PôÅrPÖf¤î¹UKÊ’fHÓ®üKpƒŽü£  ¦xøð9ãíêű·ÁÇ©F02Gìš«¿„`saÊ”m¢Iãà‘‡ùóÏK¨ÌX ›™"ç9¬þ¹Ž#’—-ëHiB±"g!rVÉ8 }¤0Q’N¼yóNœ:uƒ„ex&_”I{ï½÷,Ì Õh„ÈÕeˉZµ [ƺ{ÓiÕªy-eÜÜ¥çÎø{÷žŠ/¿%îÜy,fÎl)…¨;Ì”c}‚RúÄc‹ðGûæÈ1§¦\¼xWT¨Ój[ÐRõä.\¸jkfu ´Áj"›“cÇ® ÐìÙó›;Þ?EZK#ØwE‘“Åß7ô˜5tÁ’˜ä€“‚ÔI†Éî’ ì™vÉ›3gj¥B{¨z ‚—æÎÝc˜ö8tè*Q¥J§J¶Y-Ú€”kÓæ? nÆ~_HJ’>Ç)H}î‘Èù&Ÿ$I\͈SÜ+Q"‹Õ6ð‘ ]µê°È‘#µ!ù”XÃܹ» t°ÚT'+V&_ï 1mZ MņËÛ’~Ãé#õ›G%êK°>'Z¡B!ü©üÒ“ú2sæ.Ñ A eˆ[Ÿýû/"M°" {·¹8xÑ¢ýâ§ŸˆY³ZEøáâ>9 >Ú’%KŠ˜1cº½¾­[·RDx Q´hQ ­«W¯ŠC‡‰2eʈxñâY®+ð÷íÞ½›€@Â@7ž>}*öîÝË×öïß/nܸ¡t'„«÷Éå‡\ îëTW®\á€ÐÓÓBCCž}ûJ36ïQï¸K—.Q}ÚÇdiÉ­g¯ôqŸ{^Y¦œDrÀ·8`6놟 =C 5q`‘²bÅ+¯rŸ·o?{öœ§\O}_B걶Ǩãyüøu î û2µíãÉó={.fî1cFË ¢àiÆ )?öŽ!ìmݺ5¥PU¯^½²ÐûùçŸÅÇLà-×Ô×®]M›6åK­Zµ»ví=«W¯æk?räH±mÛ6±eËÑ®]; lûÊýQ½?7ÛªU«Äˆ#Ä,kÐ"ùúõkÂUþB´mÛ–÷!óÎ;ku·\+R¤νçÎcl¹áRúÀCKð?ØÓ07nuêÔaúŸ|ò‰¸uËl]€ƒæš?~k¬Q£†…x-Qi 4 —¨¼?-ÞaN¼ìÙ³‡á‹Q£F±=iÒ$-U‹wmÚ´áþX×íÛ·-ó=š ¾§ãõýõ×_¼„N:1o2eÊD± 9½"t¥ Už¾ü”p‚‡k×ݱ㌕6 ’ðæÎícþL#Œ¦Oß)/Z­Z^'vcL×Õ«Š=ærQ :ùbƒ@ƒùsÁ‚—øŸxòä §ÌàšNŽ9ÄüùóyéøÄ9„̨'NœÉ’%ã±+V¬`ÍkíÚµ| ÷ÔíÌ™3L‚fXhj˜kñâÅdro#Ö¯_/  ¬âÆk1ߪAïóÏ?'ô§™Lc *ĦP\€)Ú&„ ¦Ò Ñwøðá"Nœ8d¡8®Ü;wîS§N&LàµT­Z•þfRõñü‚€y°ŽöíÛ³Ö á Aüí·ß²6ûâÅ Þ›B{UkÍŽyóæ]»vÕä4Њ+Z¡~a~¼Œ9rDhñnàÀl~ÆË4þË—/óÞûõë'þùç^^ Àcð{ijÆŽ«,ÕcŸRzŒµ’p rfX´T©ZmñܹÛ|Ž€!uƒ ͙Ӿ ÌàÝ»OÉ·f ¤¦¡çЂC†¬$mã =Ý íƒÜÙÎgŠéÓ¿chDC‰L Ì„ÐJ[¶„ù9ed0‹Bó\²d ψOht™3gf8lØ0.0®Y³†üÙ x,4C­Ö¬Y3ÖXqÂ-[¶l¬bÎêÕ«‹•+W²6¥h§Ðü”cô‡ áúå—_âr„-V¬Xì_…€RÃTb |¬K—.%Êeü2 Bš2ü¼3fdtj6uC€A“†€²mŽæÖâ„+„ º?ÇŽcaë ŸñædX”öîÝ;6ã\ ÄŠ-š!þ_e{ŸRÚ㌼.9`‡€ºË‘#<ÔߎgÙ/ #¥¡ÊÉÙ{•ûøâš7o½9Q.¹ôy÷îòwm!?Y5—Æ»:èС+äkü—Ì‚¬*ݸJ/²ÇA{ƒÖ÷ý÷ß³6Šshc0Âúã?²YæÐM›6ñrm…‚²hvh‹-bß#Ž!,`Î…°‚//h+~Yõ1ú£¡ü”0SBÀ) šŸb²…ÖªÕàËuÔð¢€9¡%BC†&Ú³gOM>bEØÂ\;gÎÞ;æ½~ý:ï>SøAm›2¯ï¾ùæqöìYŠèžÅÃð?0`ÀJ‘* Š3#piñº8†&Š~0oÃ̽cÇ6ãž·›Lñ6Çå|~Ï€ÕÛ¦·`S»wŸgAš1c˜ =vì:™óRÙE*Ú¶íŒH‘"}qYk±Î2iøðÕ$Œ “™0Ìôå, gûÔýÍ7ãİaué Ьå9K×ú+&P˜ÙZ¯^=^´*ü :”Ó;à3 a-)ˆ$…0PšB‚¾W|ÑCØâSIgAJ 6‚‘MóþýûÈ£ƒ~ à ¥˜uúÀ†v‰àhf0O£)÷!xá×Äì5˜L¡™C!8 óÀ| á¸páBnݺuã &Û.]ºðše›5kV†B@”Ò07Ì×”}úôa¾Ùò.}úô¬Ã| ³7´NЂ@i¶¼ÃuìM_}õwƒy¼|ùò¬Å"¦nݺô¿þÿHá‡BÛ#Ÿô ›ä€ä€¨Vm˜‰R<¬FÖiÊ»—)sæn¦§O_ZîQ]Qù-ç¶íÛO7·Éö²Sç/Þ1åÊÕËDåÉœçNçëטŠégš={—;d [®\9i(nÓ¤!iGVtHk3‘6i"ó¡Õu l1á™w­®“ ØDZ¢‰Ì¥&@|´NE ›Èdl" UWO@›´Ýá$œíÞ³wƒ²LÏž=³Ü¦™È¯i¹†G´I8ZúÛãèž¿†ØÞ%5R¼žH¢ÌÙšv‘š'OZ³oœ81,ÛÆ®½4T„Y½ú¥«Ô°ôwå`Рå¤M”³J¹q…ŽÞ1<#Såß”+XÖm“´Þ9½Õæ[DˆBûT7D±"•¶!ýE+pFé§øQ•s|§jϯªî§ç8jÔ¨”£ßnWÅ×h·ƒÆ ˜uÕ «ø#Ú6Rš=Þ.´W{Í–wðw*¾Oõ˜¤I“ªO#åXúH#…írRåÀ¥Kw-(n\käšÝ»/P>[bò1…?`ÇŽÙ/æ½víQö+jÐÕA½uëi¤å]%áÔ8ÿ† Ç“‰-ùF½3§S t³3̺ðû©ó$#" ¡h:wî\+t!ЀÿO‰Žˆ¦³÷Ý¥‹À*ä“úBÓâ/¬ËѤ uÄyOrÀ†'NÜ _”uz º@#M 6¥JXûh ¡ÚÓH-:@_ØÖ‰ü6ÓExŠê.]»V£ÜÂ0 ÂAnthÛv*cwïþ±T|w(‚y´´žˆV¬ŽE_%D=•#-NÝ×Ùc¼¸ÓÔˆHîÐ1b¬ëIRz’»’vÀqF¶©/¯^½eH¾×¯ßZi¤—/ßch@ÀÚ6Dó"÷š« P|§Oߤ s¤£«tôŽûùç%„ò„‚‹ÌA8zÇÉ~ÆrÑÂ@gR7<Õ¯__ÀÌ Dâ"ÂèM¸Ó¬¢qBhV®\™…:€Ô@jšƒ â  u¤¬ú¾<〤a¼G’rºmý£^âÈÜ«WïSšK˜F ¼[[¡«L°jÕQŽt ‘«í÷ßWP®ßG\DÜUzÇMJÉî‡Å¤IM)ò4ªÞa²ŸA€ѹHA´®¡«&Ã7r*À{\Cr¯^½¸;P–i ^䇎3FMÆr t¢?þøC„P„ò/¿übÉ…µtHAja…<ˆ˜Z¦]h†EŠ„PÈÿmúÒ |€öjÑhñâý”àºYwçÎs„7zRÜË?xÇ‚r3bÒŒß1ü ž1²qèß¿?§œ” z€ï³mÈÙ„ðC ðy¦<`\Cþ+à„ë=zôà@@ì)ˆ¶ôj‚´ø_Ÿá zHã‘ÍšRZóCžIØåÀÛ·ïè åkŸêNð.œ‘€¸ï 62C†÷§>yò’„ªVÍ«&ãÔ1"u»t©"¢Fõì¿0ÊÂQŠa¦63¤NªS›”™t@d.ò$¬„hWÛ†è]%‡ÁO”ŸÁÀîjß-ò@aF`”r]dKS9.æ†@Fn©¤ gÂ>Ã?‘°{òHr@r@ÅËN—.I8Ó&"vÓ¦MLѼñ¬ª·?®±»bêIf¥ ëÈ_ÕT·l9EÀÝÉVÈa?woÞ¿ÿŒÆ‹~ý> Ô"wùYãQ%•MR‡~ø!\5H˜ráÏŽ..pŒ{¢Ž.ÒuP} hEð—j5 /Á Œ]T–A‰8øSmÓR´ÆÛ5™GlO\î×e@;S£ŠbÅŠF¸¬¯¬´Q !U&kÖ0Ôeb½vpðàWÕ.Z’2;ŸÐ¾›5›DQŨV¤g¶;ë †±@æ$!~`bEÕ ¡RŠÒ€˜Ô¡pp̲/_¾d °0é*€ó@X?ÌÄð½*¥Øl€ÐÍåÍP¬\6û‚Ô>oäÉ+œ9s“ ü¬ãþý—D¾|é´U5Æ.@ t£E³6úÀ¬ Ÿêøñ­hë=Ù¼ù” ä$·ü«zæêÕk>G÷è˜i.zxà‹}¸?dÈP¯ƒzÀœ…ƨEI˜rT¤¤õ &+„0`ü×§€' Î¨º );²EÌÉ¥ˆy${H0Ξ½EAE­¸qðàe‹ UûGÍFáý£@2B¹4Wó>ÿøcµhÛ¶¢ÕŒ>™2e;ã/YÒÞò…lô’ž{ÐpžJI45u­k¸*,ŽšÖŽúó=ë×å`æ„Ü»ä@€i×V#=pà¥$¤ç@#5ƒ9õ%| Òå˹œ;ŠH]T’ù쳂¬ÔõÛ{÷^H«™4©‰Ô¡ëåHÉÀ瀤ÿŒå â€Ù´–' SÚ¡C—Y"õ%C†°ÔåÊe­‘¾xñš’âOQpGn—V4bÄ*ï…¨Í÷\Ñ ;wžÔàd 0©/#t#b–¼/9 â€¤*fÈCÉ{¢ÒÔ¸¸ÐPQ-A‚XáR_´4Ò Nˆ‚3¸”‹ ¿«;AJöö†ë.‚mР¸¨P!<8»£±òžä@°s@úHƒý/@î_ 43g«3ŠAf³n:6·gWñ{"mäÙ³—T4‘mw̺ü±F´iS1\ð’Õnœ °Xˆ¿S§*nP‰Ü¡ˆNýðí3fzÚ×™·“ê^Þ°º'O$ß×&©;Ü“cƒ†ÚþQ³Y÷Â…;V»€Ìû}+Þ¼yóN¬[wLôîý©Õu='\Ú·ï¢øûï†zº;ÝgéÒƒ”q”~º8=Ö— M?ÏŸ¿sçîÿü³™^<¢R¹·2„C[Ü—–*×`‚4À¨ÜŽg8€ˆ]u0fF ˜?ÜSGìÑ({öTV Ù¶í4*¥`S°Õ '£F­§¼¿ò"fLãÿ]ñðÃs œ¼•Ë:¶à•.>&l“'oE‹f¤‘Ú¢D Ç‘©^Y˜œ$à9`üfÀ³Ln09´X±L–­CĦ˜7oZB9f%HÇ›;·uÄ.ß?ù¤€e¼Þƒ«W0Öío¿ÕÒ;Dw?€FÀ/Š2l¶ëÕMÄ:Þ¾ýXŒ»QLŸ¾ƒ#¢—.m/ƒ¥|à¹Ód°Q0=m¹W—9pþüm«ÔÔEoøEÆ ÖHÍb¬#vW­:âR´îøñ¨ÜQÌ#ÚbŸ> ¸ZMÆþ‰Z_tß¾ É/:ˆüŸoÈtÞÀ êH!êò_¹è*¤Fê*ç丠áÀ»w&†LŸ>‰eÏGŽ\±Tv¹xñ®ª4Uµi÷ðá+,!xi½ |Õ]T«‡3Ãtõ…_tãÆ“„Ïê~QÀ1B7nÃnÞüƒU4µ.ÈN’r@ R™)I&Pg4EŠø¥Õ²Á£G¯Š}jRé8ÏÁ#úâþåšüƒ2ØÈ?ž“\e$rÀ¬‘†Áÿ¡<4#˜oq/$$ì©Zø­YsŒ‚ar8]€9­[W0t×Àê1c'CJØCÄ,Ø'Ê—DþåXbÛ¶žRˆzˆÏ’¬û©û<”œ–jMèèÑkÀ…‹m#voˆÆK[8²víQªéùå\Ï‚€àU§Ûè稗¾ÿ~ª6¬®H–,ž£®‘~ïæÍGlÆÅ ü¸þd‚ŽtæÉD ¤F)l—“úl}¤ð*ÈE.ܵ˜v súôMKÄîË—oÄÖ­§EŊοI4o^ÎPõè1‡r,ó³vl(aƒ‰Í™³›³~çü\ -I!j0ƒ%9p@j¤a«$H€ U§® õ¥nÝb¼EhMÈóDƒ/Ú^ìØ1ø<4ô, %‰/Fð Ud.3iRÓz꿽xñöé^Oÿ /÷DNh×®³ø9{vkJ-²ÎÃõòrät’Nq@j¤N±Kv6 ´#Ý•¦áB6]:s~)"v³g6'_e˜®ÏþÙ$#FXª®v:!Ø©W¯yâÏ?¿öÄ iº S6@еbE')Dâžìì ©/<¹ŸåÔ»ð5>yò’…'ê‹Þ¿ÿT¤Ic®òb›úA:jÔ7º÷¬Ø… ÷‰-[zêQÇŽg²Ï6_¾´uõú}¤ø ê PŸÆŽýÖPŸ°×7#' jH4¨¿Ü|DxZ¢`w¶l)yî)Ú(.À?š#‡Y#½rå¾xðà9›v#šC¹¬Ø*Uò 4uj¨@UäŒúZˆEõêù݆ ݤõµ$×㤠uŠ]²s°qÂ2mÚÄ–m›µN³°´ B‚UR_œ5ë"PiÒ¤-†åwiРå¬Gê[ÿæóæí¡HæâÛoK‰ñãY™Í-Œ–’~ÄiÚõ£‡%—ê}@³ÌŸ?eb3Ž®Y"¸(Cs)!Ê©… ÒâÓOõW{Y·î¸Hž}ŠÚµ‹XŠ»MÐEÇŽ]#è0´7î[‹6ï"99LrÀ/8 ï¿Ý/¶")9`,l HD„³®’ú¡š"E›7ŸeËf×µЃÖë,¨½-ñ-[N ”HëÒ¥ªí-¯ž¯XqXÔ©ó7× íÔ©ŠWçöõÉ:$®_¿nÈ2·nÝ*víÚeEëêÕ«¯¸‚¢¢ŸX]WŸlذA¼|ùR}I¬[·N¼zõН½xñ‚, ÅôéÓÅ;w¬úÉÇ‚Ô1äÝ æÀµkÈäÆä"%ˆÂSíÍ–Íì;EÚ‹^ÿ(ÒTêÕ+î–)0…ݺ̓׶˜™#㑱Fôî=Ÿ¾„¿#Ä¢ü‘±Ÿžó÷ßëׯ7d­[·*T°@ýùçŸÉð1N¸hwކ ²€üçŸÄèÑ£¹ßÒ¥KèÁƒEÁ‚ÅÞ½{ù¸lÙ²bõêÕܧH‘"âíÛ·véªéÙídàV­Z…{‘0¼K¤¤ u‰mrP0p»È Eƒ-I’¸ü MRxðLWé/Í›·WÔ¯ïžYwøðÕÈãLÎ*oÀ _0kwë6›¾t2à|Þ¼¾‡é«g«:uÍš5#‹CR|éÒ¥%K–·oßf!Mmûöí”û)vÝ%szmÒH.ªU«F#÷ÄëׯE“&M9 •Âk.>øÀº-„@‹-Èš‘\E Vò4Ó,\¸°hÙ²¥H™2%ù—kQð3¾^¥JqæÌˆSJ¥¡ßªU«øôÍ›7bùòåô·j~™k×®E.[¶Œj»vW†ñ|?üðƒøé§ŸîASÆš-ZÄ{0`!b  , ÿCõh#öìÙÃÑ®¦Xûûï¿/J”(A˜Ð[ÄñãÇ…šÞ±cǘgèƒu`m3gΤ¿óú9Ož<⯿þ¢ÿ‘\<ß¶mÛxmóæÍ£¨÷ìô¢š•ЮÆó5ŒkÚ´)ý}¦Èù´ù=Qüûï¿ á¹tîܙד?~±ÿ~Ë>½} ©·9.çó '3uꄼÞ3gnJÙ¬‹ êª/0ÑB#…‰µL™lºö·lÙAQ @zú0 j]ƒl:aMÓ¦…о}kÚÜñÎ)´á¦M' ˜ÀçÍkC%¾w&öÀ,0îÛ·OÌ;WAUÉXøÀ¼Št›µk×ò5ÜS7ÅsçΉÐÐPú[)#FŒÁ·¡&Nœ˜…#ZñâÅ B1.ÿ@ð*íóÏ?g…shº… "‹Dl¾}åÊÞN ±7¥eÊ”‰_ V®\Y9r„)$L¿!!!Tþ{úû¾À/ $‹I^K–,áþÐZ!àúõëG÷Ù¬èuëÖ>LÄ›7o&L Â÷™‡üñ Ù.]º°°üâ‹/Ę1cXØâ¼Y@È#Ú*|¨Ð`oݺ%Ôô }B¨CðÇ ¡ í ¦b€!”/_ž_ ”cðë9{ö,óÚ,^4РùC“EðåË—éï,¯;a„¬½â¥¡k×®üb3nÜ8¿¤ ®Ë9}ž€ùƒ™VѲ ,³d1W}yýú-™•[ʧ>mBBÄnñâ™#Ü"|¡ÑV©’'¾ö:ÌŸ¿—aQ»ÔÛ š:@ç‹ÉHuNЗi`|à‹ X’$æ—$…·Ð !´ âÚaÍš5ÅÿýÇ‚§R¥J¬ÅâËfH4|ékµD‰ÌVù@ûTšú:´bG ‚-L¢º8Z æf= š'´ÐÆ‹9sæ°ÙWñ£*ã¡”ýàÁŒÊuå{™ü& “ìgŸ}Æ·ñ<ƒPÇüÔ«WOäË—ÇAãG‹-šžµºáævy˜ ¡ÕFV Œÿ€Èâžœ7`9póæCŽÄ´šYšM»ð¦I“˜ßÔqœ(Q¬èªDò:b̬Y»Ä_r9Èèñãœ3:hPm^ƒ£¹Œ¾360s¿þº¤øñGí/o£çôzø;€Ö³'´QœCB”,Ì—?þø#kcU«V›6mâ%C;Õj0¡¢A«ƒ©Ri¸?$|—¹sçæËOŸ>åy­Òë€fÝ (—´5ø.Ñ µj5Yx˜•á{´FZ6ÉÉ,^¼ßÔ¼ùd¾úêÕS† ]LoÞ¼åsQ0uí:‹ÇŒÙ`ú駦￟f"¿§ •ð§àn¢‚Öáoè¼B5OMùóÿd"¥ÎÆtÛ°á„)oÞÞ&Ê“5† ©|ýõ×&ÂÚu{Fúâ6‘ÕŠ >EªšHZ]'£ ÷H˜X]'mÍDZ¢‰Ì™ô÷ôÆrL—&2õš.]ºd¹æÎh“ ¶K‚4@«ù•Ž$¨Ã­´?Óãǹ öD¾Q>Æ5||¬¦‡}œ )rKCCÏPDbÄéÌ™; ÞÕ÷ì9$Ðö¿¹J×Ѹ5kŽ’Is*ù›ëŽJvDÏïÁ| -æOuC`MΜ9-Ú rAC0—Úkð£ÚÞ‡)Ú  ´(d¯ÁÇj;?úÂOk»ø'_%ö‹t4\‹3&«é!Òš­Ú4Ì"ø…¹¡éêiŠ?sÀ ®¬CÏXOô‘‚Ô\•4ýžÈ UR_PåE_ÀÆ(¤T„9{ö6ù¤âp R¥¤š½Í#ÒuãÆdtÍ, xÔó4RÐÞm¯/_~Htê4“òå3æKÞv8‡YyŠˆfÕÛ`ÚD º!¨é/£Fb_*©@|¾I-Á¦Œ…fR£‚‘”ÈZWi#ri4Áܤ æ§/÷n—¥OÚ] Á©’jè@T„¹}ûi£Gë.X°—1r‘¦à¼6 øþý‰_~ù2œöcwnÞX°`Ìe®¿-¸ÉËpó(Z™å¢Žø(•! ÿ!j‚ÜH Á/ªî§ôǧ‚⪂4¤¾ïî1‚’à×t§Bɇu‡Ž?•‚ÔŸŸž\»Ç8€`#àç¢?‡‚H¾!H¡¡"&zô¨âðá+ºæÌÙCQšÅ\ZóŸ®åÔ¤œx£!²xÀ€Å(ÒÖRñÆóêX¿üò §k ˆç×_å`˜&ÿüóOŽüE z2fÌȹªj^ !zÁLHÑAN*m´P€ly‰HW䀵IÝ@Á=úéÕ«ßB~'`B­X±¢ÔAkn5-å(M’ –&i°Rø”ß‹[°|›î~*©ß?B¹Op¦]-ôÒ¥{ŒaNÖ‡ M›6 7(`ööÖ‚¢ÛŸ^Ð¥ÜÑ_~YJ‰ò¥-ë±7‡×QÁeäȵÍÖÎÊœmí`¦­©¶íæÍ›„!Àþ!Uù¡0÷B¨y¡Jê@œÐ±cGÎ…æ§@Ú¢!%é1€3¤h`n€?¹®ê„& 1}øá‡ü2@`z†@D€æp4·šŽ] _0ÆB[†‡F¨M Ò@}²r_.s²”òBIî±8ˆPéÓ›…§Ú? AŠH^=æVÒZµŠ8½¦}û.r‰´V­*8=ÖÙÐD;{v+K0•³4dm@X>|˜µ=u€7@С)‘¨8¶E=Â54ö@CTòO!¤Ñ®‚” %Ϲ¯€?Ôjj-R ‰ )Åo«Ìáhn-º0[Ã<Œ¹ Š@mRê“•ûr™f³®Ù? Á‰ £°Ô—{–Ô˜k=zFpq™Î ƒ¸qcR˜~‡ý´nþøã|ò[}âñið‰¢ÚªU­üÁZk’ל窥@`¢ÜÐx µAkDƒPÅ=#!ÍfQ4ø6•a Pw@ñ¡ „•Vƒÿ'*¯À$ Ó2ü±\R7æÃœ‹¤ðk‚ÞG}d|X'®937–€tð<ÌÐÚ¤ Ô'+÷å2nÝzLfTsžmÄ.rJ•Ôäâ<"tÞ¼=„>SÈéõ,\¸Ÿ¾XM 'èô`'` %͞ݚügþY͉íFJWhg(€„æ©­‡/ L©€ØCÐ̹ Š‚™‹k¯Gà׆B϶)¦`h‚ð§ÂG‹º¡0íÚ‚éÃt \\hÍ¥K—f€|ôÐ… „AMŽæVæSÖØ?¤ö@xäædÛ>J߀øtÊAŽ“TPqã ¼½I“¶˜Á²U2}š–,9`¢€#SÆŒÝL™3w3QmQË}Û¸7åÎÝËD¶·žM©hÑþ¦Ý»Ï;ìçîMì5_¾Þ&z)p—”ÏŽ7 ÙȨ Õˆ*X‘#MÕDx½&Ò -(BJ þØ6 ‘6QɶŸÖ9Šli·&Êeµ½l¢²oŒ¸¤¾¡gn­9Ô4"ãØ“ÈFk7 ^‡ä&Œä€:bW­b !ØèÌ™›dòM@~¤øÕîô6'-#E@šMÅv;Úܘ0a3¥8¼ÏE»mnvJp…\”{Ö¬VŒÎdaIÈ!”ê0Z’&Mî²ÚwªÜ’Òd\ið¡Ú6øF•Âàê{ÐRm›ž¹µæ°¥Hçá9H»“{‘pêˆ]øH  ±PQ‚€P+VŒÓ^.ÜÇѺ:€€4jÔzŽœÕÑÝ¥.¨Ú¾ýt®%š+—ó¾[—&•ƒìrQ¸²ù/¤ÔŸ\¹‡8TÑ !8•ˆ]ä¾|ùšáãr)Ž?ø ƒÝU úwíÚc¢zõüvûhÝ@úÉÇç#Ÿ•9wU«;×üÔªÕªVÒÌëdÜYw Ež(~dóOHÔ?Ÿ›\µ9pçÎc‘4©¹ 0)rEÑ`ÖU0w±‹š¥… ‡ð=­_{Ç}^½íêÕ”w·“0y»ëâT?H!Åeôh$ËÛ pЍì,9ä‚4ÈÿäöÃsàÎ`ŸÆc#ä“*‚Bõý÷Í9|G^¥…Xô£ðT™f÷QÝNs ƒÖ}­kƒ/§ɲéjÓs BºnÝ1Œ×[¦L6=C¢Ò6Pï?Q¢Ä$“|VJ'Ê.ž=;B)$'brú8P²dI}ì%©“ “ÝŸwï>aÔŒbü¡øG‘’råÊ=Ê­Ëm—Ož¼¤œ¼Ó”›ÙÀnÛЩî'a°šñNmï»s~ÿþ3‚œ-Ú¶­HL´óÝ¡ïËcÛ´iGÁTùžá²e³±ßæó€NÉðå‡`k“‚4À¨ÜŽûPéŽg-þQP…i9¤—.Ý¥ú‡Ñ1¬Zu˜¿°ãÅ3×kÔ³ª—æiEoÐÓ_oàׯ?V|úiѤI½Ãü¾0a&_¹ò0›±a9²!é&~Ϲ¯p@ R¯°YNâ/xûö™ü^¾il‚I ÃÕÅúq^ @:J}¹EšŒpècDíPg̺û÷_‡]¦ä÷o eÕ›7ïHxNäTšîÝ?6”¶/ƒùzöì]ô³›Ñ êÖ-FeÂjXÌó¾¸f¹&ÿ瀤þÿ å ä´ÑĉÍÁAÐ@3d3휋À£mÛN“oíµ°WèfÝÐгУwi¿ü²DtéRÍaNª^Zê~íÚM£hЄ\T[}9 Žñò³zõQ1eÊ6z¹ÂfÛ±c¿¥ç#QšêAûðf¤ õá‡#—æ}À—¨R”/SGå*êÞ½ Œ!¡]¡·zõQªTÝ&ZøírS·nQC7ܯß"2hß_É¥ª3†.ÆÄnÞ|Dy°¡üƒÂë•&aš—kÄz`:IRrÀ.¤ µËy#9pïÞS‹U_XF0€¤…¾âhÞ'® G K—Ÿ|¢?w8·:U1”ݨ_ºnÝ1Â9íp‚Úþĉ[¨Àõ)Â!.ÌÕj"*cg(s%1ÉHAjÃyܸwï‰E^»ö€ÀÅ͂ڨ"T!`QT«´&‚Zô4ÀôaŒ‘‘´@]2d%UéÀ¾^=ëðõ>ˆ”&Œcª"²_hZ´(O<®O~о¾t¹¾ à€¤Aðåõs¦]€1Àï†|ÒT©Ì¹JÄî£G/¨þã[ŽÈÕ¢ $£’%³èŽ Éå/Ë—ë HA$ZnS H±KÕZ&PÉ3T¾Ì„D¯Õ¨š •ŒÊ«u+ܵU«ŽpýÉjÕôõGÀæ|† ŽÖrQl3Ì'OñÂ2nÜFz!Ø&1aB<ä“OJ. ‚TþH¨8ðàÁ3öƒ"B1ëâ6CºiÓIFŠ…ò_lÚ«Wo Úï„øí·Z6w´O‡ [%ŒJIæöÍ7ã8OÔYl_íÕEÎUðìØ4´]àcÅŠNÌ÷ÈYœUr@$h½>>É^AÂû÷Ÿ² TûG±uÅ´{àÀ%*¨¬ &¿yóIÊ×Lkñ±:bÙÊ•GØœ[±¢ûfJø¿ûî_ÊqÍ Z·®àhZŸ½‡ ¯_]Jfñ_¨XõS±jUgòóÖ‘BÔgŸ˜\˜šR#UsC==zN‚4Ž8þ¶WL1k¤IÄÙ³·¨š‹6ÄÞŠ‡X‹ÒÃÄaÃVrÞ¨ž¾õéÛw! ÑôùûQD]}î>rnG^Ï9 5j|@ÕrºZY|nÁrA’‚Tƒ)òRðrš|¤×¯?´Ò†à#`=´%Ù6“ÉDZÔfUmo…;GUê.>úÈ>Vo¸Av.Ìœ¹K ò&PÅŸk§«O]F:RX DY š*UBŸZ£\Œä€^HAª—S²_PpEµ&ŒÃÁFJAo˜NÈ?~LñúõQ®\øÊ)¨ñ™.]R¶ætGÌ:t•!y£{ö\ J.KÄ¢Eíhm±Mé3÷ =}ú1lØj»X°à{ð™Ê…H¸À)H]`š¸€i7A‚ØâÖ­G–âÞˆàM–,¾Ø¼ùƒhå.]†‰ê.HŸq7R>ÜfÍ&‰?ÿüÚ®ÏÖמҊ‡Yð£¦+ŠŠK?_{Br=®r@ RW9'Ç$5š(Ò_©hŒÝdÉÌy¥¶›Öë¸ql/‡;>|•hß¾r¸ëÎ\Îo£Fÿp`QùòÙ)}¼,àÇEJ 0K•Ê)ë“JxŠRzг’®ßq&\òŽ7&™r‘GjöÙ!ÐþÑǯŠ0{eƒ¨óòåk‘;¬¥W@IDATwå’æ'ʲÁÇê | !ÑçÎý¾hÑ¢œÖmŸ¹†¢ß~[J ÿg8ͧN"~åÇõFÊ…ø<dú‹Ï?"¹@oqþÑxñb±æ=zT.Ã…¹aFJÐÅ‹w4+¾ xÈQ‘oeý#F¬ayw‚‚@…ƒ}¥õ¹O`?¸råßEÆŒÉÅöí½ß}ûÜ&å‚$T©Šò0¸9ðøñsÚQûGÁDìfÉ’R<|øL”(‘9“Pí%"s-jž>}SÔªU8Üx½B0zäXƈUï0¯ö[¸p¿0`1£mÜØ]¤H¡m ÷ä¢.\¸@<£'§´„[¶l¥Kkãf;³E)Há–ìЀ/A‚Xÿ‡ KÅ€‰2sæTŠ,ŠÈžÝ>UTƒ‰Èï7räZѶmE-škF K—îŠfp°€}­ã·gÏyâÅ‹×ì+.T(C¤-ñüùó¢|ùòbÆ ‘¶9±ïs GT`b«¤¾ÿ¨ä ý‰Ož@š#vÕ9ð‘BE®("NÕ 9œÈ+…)Ø^;{ö¶Ø¹óœøë¯¯íuqx©Q£ n_°`ä (­EâEfÜeˉ=>õê“~P-FÉkÍ×^š%rsÁÊh¤ð‘¢È¶Zëƒ E@Q¢Dqñ‚´BÇ0£G¯M›–±bE7^Ï….]f±o¶aÃ’zº{­Ï¬Y»È„û›ˆ3½Ù÷õë—BÔkÜ—ù¤i×—ž†\K¤r)€ H“'Ïk„@NŸ¾%2d°ÖF¡¡Böî]Ãîº䀊0;vô¶ÛÇÑI“¶Š“'oP-ÎöŽºyõÖÓ½ûŽpž9³U„ÑÊ^]œœLr 8 5ÒH`ºœÒ79¡‰Ôµ ½ví>Gì^¸p›SNÔ+ß»÷"§Å¤Li? u4ëÔ)êRmÐG…˜‰›¸¬Íª×ëî1òW XBS£8hjùòŽRˆÚaê•+WÄ‘#GìÜuîòíÛ· ry¼± ¹¦HáL»wï>±”Bƒ4V¬h䌊pŽÊ !U¥|ù"uê°`½kÕjŠøöÛRâÃsèâ‘~è(ÑÖ·ï"†#1¢¾…7™ÐKDgΜI>Ýú¢H‘"Tú.‚ý%råÊEiNY@bO-£Ü׺–Õ ïÊ•+úeÈÁ"È6mÚ$räÈAx ð˜ &XÆAˆ}öÙgùò§">öå{­Zµ"@L§hѢ푤sæÌá>êcÐ3f U:k¡­@ФK—ެ#ïó>p}Ñ¢E¼—P0Ø ±`Á ˜{ÈC àÓ¤IÃë]²d _ýO?ý”@HRR®ó÷| ®‹Þ½{3m¼;vðu¤‹´nÝšŠ:¤¥¿ïö‚q5â€?~\üðÃâ§Ÿ~⾇"¬ë×”×}r”+SÌB"úÿ«H•™®ŠsçÎìf5ñùçŸó¼XŸ7›¤Þ䶜˧9A ]h]É’™SL HQ©ø¸™3‡Õ!…°½páŽP€ím7¿êøñ›EË–Îk£C†¬ä ví*Ù’õêùŒ;I∠º“6‘É«ó{r²û÷ï‹Å‹ó{É’%ùË|üøñâ‹/¾`U¼xqF÷îÝè i¾|ùXÈ@øL›6pƒá%vìØQ´iÓ†¯A¨ªÍ¨0›b܇ùBïÖ­[¼v†¿üCCC)`«ŒE{Í™3' 9VCh@ø@p©4»~ýú hn#GŽ¤š®¿ Ì !ôŸ^3rkk׮͚ Ö í㠨Рü œ €'MšD)`7X›…PÇ~¿üòKþy÷ñ§ÅóçÏY8ÿ÷ß<æ‚°†@2dçñžaÏÍš5 6䵡)^ ¸¡©'Nœ˜Ÿ×Ë—/ùE‚tþüùü’ƒ9½Õd°‘·8-çñy@ƃ5R%بFB‚ U̽ØÈÆ't J”÷4÷µhÑ~@yò¼¯yßÞÅ­[O‹©SCźu]#-/;Ï¢/ËW¤µ&m+µ½åúõu˜;K•*EˆU©þìy>†fjÒ¤IÙ ß$ò‡Ë•+ÇB!kÖ¬¬5hЀ¿È¡mAHAP¢_áϲeË&j֬ɼ‚¦Í Bš!̪~h~áúöÛoù~)ÇÐŽ•óqãÆQ.ñ¿|Ž_kÖ¬aA\¥J¾Mk†Ð„¦6oÞ< v[Îë‚v m{Ž:Çøñã³f=ztzaÌ,.]ºÄ>LhºÐÐ$H@ÿw™W˜Z(´yh¥-[¶dºÙ³ggaùÛo¿ñGÅÂ8^¼xìß²L³qã†E¿ß¼y“ÀEbðÚmù„½¡oÔ¨Q-}Ðû™1c†@¼ |õÕWl]€•B Ï &kìÏMj¤ÞಜÃ/8A5jÊ fÉ … €=°vÕmãÆ“l¶U_S³¾\­ß¾Õ÷µŽäÔ¦Íä;jh•~£Õ××€5Œuúé®N³lY‡€¢à_¦Lf 0I’$áXZ«V-&ÐÈp A¡V¡BÖ,!Hðe í4ÐbÆŒŽ4+¥!XÂM¹®¾¦ôÓúÄü0AwëÖÍB/Y²d–îŠJ8p x˜S¡UbÝІ!ô!•s0è¦OŸžþæÍéYÑ¢EcS,ö!†— üÀÄ ‹æˆwX_ÿþý™àæoÖ®]ËçÊ/Å,Žs…8¶Ç˜›±.eÏÊ~1[iÊ”sOJAêiKú~ÃD¥â3I’°7f˜vQF-[6kD#h¤öü—¡¡g Äþ Úìº÷Ž/ˆ–-§Ÿ©´& ¡nB.vDžl#H>NÚDgÒ–ÊFšFìâ ŸL øÁ1|suêÔ!m½3ki0ÑBs…™_î` ¶íرclÎ…0’„2š‚¼s*è¢Á| MÒö˜/Ð/ÁÌ S.4QЉæYø1a>…„¶¦˜7q¾ZÀâá>G[S+ýÿ/hϮݻwgß/Ì¸Š U÷³=F ü²0yïܹ“…2ÖmfÙðø@gÍšÅ-.Øã̹JƒÐÇÀ34¼$À$ÙMšv#û Èù}†0á¾~ýÖJ"ýjöì)-ëY˜?až}ûö-û*aÎEPNîܹ™äï¿ÿnÙ¯z¬½jÕªìk„©~_Jiiܶãš4i"ð¡‹y ì ¥B¸6¢€$hð0¹B3‡Ofo˜µøþc/ 1Lá0'Ã× S1^t´šÂ­{†_£$Ù$$ˆÕª 3‘4}óÍx晲gïa*P iöì]n®©OŸ…–sõùMyòüh"ÿ¢ú²Ãã-[N™ ìk¢&‡ýŒ¾yòäuSÕªÃLuëþm¢š«F“4zÔc"ábÈü¤ñ™(ÐÈŠ ѳºku„˜‰‚’L¤½™È¬j¹G¨‰¢\éïṉü–ë•*U2‘™ÓDš¬‰4YËuWHÐYÑWè`MdþUN-Ÿ¤šHÓ³œ;: M×úÎ4ÒÖM@ÄC(`ËD/–áXÓÑ£G­æ·Ç' ¢Má9 ØB×Ù<+òç:;L«ÿ(©‘þj" ú+ž={ÅuE%ŠÃ[@iܸ±XËÈ!ÌE‚¢'µ5ÎþÙÌ9–záïÝ{JQ•ÓH+üÚJö$雀|¡Éß¶ŽQ™êÖ-êÉéü–6´H» -DÝ ¡Ù6µÎöÎcÅŠÅ?¶÷¬cDS4f[Zð;ª}Êý„ õ§dÁ¿élƒ6¯4DÖª›½5¡ŸâÄ1ÿ?ªiàXë9ØöñÖ¹¤Þâ´œÇç9¿&ü¤I’˜ÿqQ÷ÕZîßθØúìÛw‘ü˜Öæ6ÜC°Ò¼y{(¢·;Nuµöí§“¬ßëàf§‹ï’ilí+*™ÄºPˆ¶yÚÍib8̮ΠDÆ*G`”\M5S€îcO@¨ûé=ƶ_ïXôƒŸw÷îÝ©ìÌ8£úÚã“Qô=MGyšÃ’¾ßpàÙ³—èF‰›ƒ±ûòåk "1YòJwì8Kù„iéKв¯ÞÜÌ™»È—“Ý*MF}ßöx„-i×®Õloyä|Ê”í”(?œ¾p Ào#…h\vVˆ‚4ØØ±c[(#zÔžF¨DÉZ:»q€tw©š6mê ·ÆÚã“[D½8X R/2[NåÛ€6úüù‹ …FŠŠ0™2Y›u˔ɦ¹‘‰·Ð—QYÍ{¶¿N`«)ÕåN¹±½oä9€ó4+fÎÜIÑŽí9"×Hú’–w9€È`[ä%&^€àÑ®pÀ5ýlÞ¼™ª… ¤µ!/U5«ÕO^B RùW 9ð îç“'Ϲ&).˜¹•(ê­4&”->­p€,\8Déj÷ó´lù/¥'|®¾©ÝA.Þ@å™Ê•‡‰13åDv°Bgr‘¤ @têĉÖ¹¡?°mðKnܸ‘Ó`7ŠœM˜kq­^½z¢W¯^ÒsçîPEpgfE¬Ï»M_féÂq Úhóæú´QŠøåú¢_|Q(£.À_Û±ã J/X*þû¯9ùE+‘ïΜŽaÔ’Žw8p¤Ì¥)€DzŒmëÚµ+ ?¤˜ —@HC@üñÇÚHB¸_zZ @ùÈK…ÿÐÞ ‡tÙ¬9 ©5?äYrAD1cF§/‰çdÚ5 R1 ú6cFs"€ŠÍÎ{éÒ]±ÿEò=~!÷V¯>JIù§ÅàÁîù´M´gÏÊEüó_׬é"òç/ø—÷|‹@N&@ô)mÆ*˜IY)?ІÈW¼Ú¢0&`{È@ -ÛOärbnd`KAjË!iÚ Ïy%(9s+ª¼Ü¿ÿÌbÚ}ôè}! bÖH·m;Mx¬YÃñgòämd:+N åQÃÝS_Ð}×®³¸4Àñn0CºŠË'SÝÐÏYX{b£×-é9æÀž={ÐL4|`uƒ€„)þL”ƒÀêŽq€ù¨>l_½È@@b‚•m€nd" .•²£^¿¿Ëô‚rý†p)"q¡‘&L›ë‘Æ´£L™Ì)4IÔU7`k`X=õu­ãNPº«8UŒ1#Ûhõqõr^[·žÂ{€Šª²”! ÁÄ Ì\À÷© ‡åÈ¿‡à"˜eQdÆŒLº¼G³‡ d‹„€&h¶¨ƒ 9²Ù瀤öy#ïæ‚Üʇ±Fzüø5‚N3ç¢ êrÞ¼ùÌ[ÖÉéK– £Œô–ntn˺iÓvÐøGb„&¶·Ü>Çzöœ'Ú¶­HQšåݦ' ø.2e¥W7ÀBèo£"ŸS.@ÐÔ…FmS5Xý©S§Ô$¹Ê ÒRd‹˜’KóHö¼zõ†iŒÑ„9¤ÀÝUÀêCCϰYWù‚RX³n§N)§šŸA8páª~Ï´5;¹peÎz÷^@!gÅôéß‘7%Ç…¥È!^怖€Ãß&pum›Ö5ô‰Hk[ÚòÜÌl$ÿ$ˆ¯^½¥ ¢÷8… 9qâ:û<³îöíg¶>rä*o?¢²Z9íò~˶m§RíG"K–°4»tÞÀú>úh(k!0åJ!ª“q²›ä€8 ©˜*Iú }´?~L^üÉ“7ÈßÓâݱãçbªw¤ ¯¿.i1£©ï)ÇÀ³E M“&e”Knþ÷ßv*Å5Š4á*\T—tŒ\r{‘’€ä@q@švƒèaË­ÚçL»ð‰&LhN}AJ kúôI9’uIÕþQäi.^¼ŸRYzÚ% ô¢ñã7Q‰¬.vû8sãÉ“—$}“1àóÞºõ(]:›(]:+¿ÅŽ]k˜¼&9àR:d¼,xýú ù/ ö€ÔC™1h¤8P‚ŒîÝ{•^”kêOÜŸÈ R¦ ¯m¤‹Ô” º»´]é^½æ±ð^¼¸½ŒÊÕà" ¯£xÀöí§Å–-§ Éçù¯³0XF£F¥EΜ©5FÉK’žå€¤žå¯¤î'°7J©!'óÌ™›\ &C†d¤y³*6}úNÍÂØ0 wè0MºÉ’9s _^³f“´!¥X±¢£Ì ýÿß |Õ;wž³h0³)ÂæÚ¡Cëp9:YÎOþÉx™RðÕ[ÓÏh¤øA0 ýðå’TìÛw‘@æC˜ÐåË÷Ø_ª9;zôzÂ8M"\1éBXwì8“Ñ7.­ÑØ/${öœ·ø8¾ÂÂB}ûÖäg-šÄ‘ ÀGï×[’‚Ô¯Ÿ\¼Q@pÑ»wï8ýåúõ‡|Œ/õT©X }Ïœ¹‹eÁp²Ïœ¹ÅÀ «W;¼0dÈJ1kÖ.Šòm* 4¾*ŒQüñX¼lœû÷_Y³¦dgÇŽU¸þ+jÂÊ&9à˂ԗŸŽ\›×8€/tN÷¾ÿ‰xúô•¸~ýWvQ1kÖN1uj å”?!€;uš!ºu«Fy£ú>|NeÏþ£4›WbÕªÎ"I’¸Vtù¾dsçi2Û¢IRöq6o^ŽóuPŒ@æÜ[`q@ ÒÀzžr7.r©/ÐH¡ý ýåì ¼”ÓûÀö}/Z´ª´ï %•ˆ-DJö­Å"~H’µDBÊB ÑfI¡ET´ªDíJÝÿó}æ¦w¦™{gîÌÜõ<ŸÏ½óÎyÏú¼ïœç<{‘"ùÅèh“?P=îäø<õÔ@câíæÎË\~yäù 8߯ßÓ±c=ÉÞÒY‚ågmQåš5ÛÄ0h•rP|7O?ýÓ«W3I}©¤øò…eLå£sÍÒަû#pÈ(€+EGJp†“O.k¾ÿ~½¹îº¶:½·ß^$ó€©"~üñOÌ (OîËôéKÔ27+»¶ K¶~œ|r8iÕêI6]_ƒ Äâ_›nÝ=‡ô€#¤é…y7n†Â)Îûû÷ÿ«n0Xì~ñÅϦfÍ“Tü:særsÿýÌùî»ß‘ø·m#òU¤ÿGùH‚Í/1ï¾{£?Ïi@‡™ôË_íV ÑäµjUÝÜyg'9””Ȥ+sÓvˆ ŽF†'W+ b`ûö½BØ–Š•î6á*—ˆntŸ¹þúIswÞ¼•ªó$²ÑÇ/ËÑŠò¹Ô/Â1c™Y»v›õO3èC¯»îU%ÐèC‹ËÜ¢Ì]»ökØÄyóV©[ x„hBNWè0;!‡®‡ÌŠõë·‹8r„ZëF»†|ùòˆ«LNåN ŠÞ¬Ù¢_=¤ùL?ÿüv3mÚ÷æ7¾1/¿<@cõFÛZÖÇíÃ*ô›XÕ.]ºQ’˜WðNRØXÃi9/7–Ã@&Á€#¤™äA¹i&M›>`¶lù;¦Þ»woªì‰•›#GÉúRXõ«¯¾zuØÄß1 cc Ÿ‚€¸vþüÕOx½?ù‚ p(hÚ´Š„(tAbD³kž}0ðœ36Ê>Û­4®½ö,Ɇ¸•b\éWœn^}õ+ðEݱc¯Zª&2ÈÂË/Ï7/¼ð¥4&ÆQ’‘< -‰¬á:ɯŠ%-ÆAýûŸaÆëglÖºq·B`ÀéHC Åe †«~ýaB#·¹Ã`ßHÐðáï›5kþR‹\/ÖðGíÖ­©yì±Þ☯ឱ,^±b³ê)_ýZ £Ü1Alz12¥L‚,)OŒ„Iäƒç’Þßüq‰<:í]zÏÍŸ¶8í´ÓD}ñu¼ui¼1êúË\€ `‰»zõŸa'ÇgÛóäÉ¥î+ï¼s£†·ƒ°…²{'kÉë¯mzôhš¢eo؃n s½ÿþ÷ÅOóˆ„3<¢zK\Pš7¯b6oÞ¥iÅ žè9sæØEbG¾0hØLÿuéÒ¥’Þî5sÙe—eúµ¸¤¿þú«XÏwJ}É´t¢Ýdãne ÜpC;MjµyóæRÎÂHŠ5BNž|­V>ü50ò¶#N,Æ;0ú%)x¬±¾á†I†µ4Y8|øˆyÿýÌ;ï,Öò3ÎðA î¯ ‚`±ä>GHc7BÇ@çÎ %ðü”ë]âßBDO;­šêÕvíÚD¬t{(a¥> \+¹D¯¾º¹à‚qË':yò·æ¾ûÞós¡Á¨$é'Ÿ _NŸËMð}÷ÝaÀa ñp„4ñ8v#dp `¡JPr_Z î.:Eô¡A@m`ú+¶˜)Sª«KÁ‚…DdxšéÓ§e\¹À={š¾}Ç뜼\¨Ÿý„ÀiÈÀÃ@úa ÀØhîܹ¦mÛ¶é7›l0rß¾}ÅÊóÕ ±Ò 6˜Ê•+gˆ¹¤÷$òä)+ыڙ\¹ŠIö—ùtáD‰dô¹±o œçN!¦üSÌŸ¿º”76{÷~-œâ&¿þÔ_!ÅŠu®¶–ô5°ó5æá|É“Ó3B’¤|ûAçì)Œér×®]¢.S©1ºÑŽ;¦«ŽôË/¿#¯ÓEz‘7fÔüøãfëÖ­þ~Ê—//A@êÊ¡/õY„vìØ!v«åðxšèþš;wjÿ… õD}S´hò:vÞÖØ­[7ÿ¼RºØ´i“ùûï¿uî¶îîÝ»ÅHî+ûU?óåË'vÍÅ×ù{Ó¦M'5¸´:R>ã ÆFsæÌ1Ò}æˆó8®;00oÞÒoÖ"¤žå¥Û%èo¿ýÖ@ôb…‡zHtâûM“&MT*Æpìß‘¸B…ÅŠfĈ¢&øD Ü)VÝ%LíÚµ D‡y³o]}õÕ¡šjYãÆ%f¿¨é¬Y³´ïñãÇ‹A^3½†˜÷êÕË\{­ÏÎ9Ôzê©5ìS%¤ñÄeØEy#õG˜(rÕ"Ç@þü>#§¢EóJâë"rj/-MysÞyÕ„pÖ67ÞØD6·VæÙg;­yÇ®fH 2Ä\uÕU¢ç>Åœ}öÙ’ïqÕŸ¬\ä¶mÛÔÚsÁ‚ÚÂÕ¹sgñÞ!VÙ=$¿jiy.ç)wøðaså•WšråÊ)áá ê…믿^2]c*Uª¤\–厚6m*‰ ®3'žx¢¹øâ‹•PÒ®C‡æ·ß~SnÑkqzÑEê#<"ѳ^ÖC:ÜÜ?ÿü£„褓N]ý毿þÒáÇŽ+™Œj*q|þùçµlóæÍºÖªU«š§žzJËì?ˆýO:Uû¾å–[ÌŸþ²ÿÛo¿ÝlܸÑ|þùçæÈ‘#º> p·óçÏ×.[¶l©4¾Üÿý’é];”¼Ë7šÅ‹ë|)„p‚ûwÏ=÷HLìƒâòµÂ߆‹pk ¨”F_!M#D»a2. *?ü€ô;Âùïץו;Ë;·™>}ºrDÓ¦MÓ𠇄ŠÑçÊ•+%‚U)óÞ{ïi›%K–(Q¡Œ{^€(®]»V¢J}cÎ8ã ‰×ú¨Š¥'MšÄW/‡û‡ÊBúË/¿è}û/ÔZí½´þt„4­1îÆspÈèÝ»·iذ¡ALÙ³gOÕݵhÑBBHnQÎ"ð ×X­Z5%²¨F XŽÏ>ûL Ïú(ç p¬Ü·“zôA9­-GÍV¶lY >ÜßݲeË$,åG’Úïcá†{ úp£è+«T©¢ÁÓÂMÃ>óÌ3ÊÉ!†ƒ$PëeîÉAž#^PNlñšK$cRgÙ²ßåö_Ȉ5‘ö‘YêqúÞ»w¯þèc3œ„=µòÃdCaƒI­ÞÈ;ÄJœª1©U«VÄó=pà€¶kР·»˜¯á\:æSj;D׋щí'¹Ï¿ÿÞ/¿©U¦K—@±erm2Ã=Dœ€% Þ9Ãò,Ù¼ù„;ä½"ÐbÊsÎ9G‰Ôï¿ÿ.Ñ£ZkSŒdB5äâùñþ[ð–ó.'è+è!ìãÆ3Œ_§N%–EŠ1ƒVbÆ|!ÐéÀIʃ¥2eÊhÔ ñG¿¡ú÷¶{ÿý÷ÍM7ݤâ] ƒÀO0XC¦àrû¹ÜvÛmö«~Úßµ·0¥¹xë&ú:Ãq¤ÈÅKÄÖ¯_¯rzNŒX‡ñ#àEBî žöt†’‡•@H7Òz5lx¿è¼ž–Mêé´6ÝÇøî»ïT´‰ 2Cg„hiÑ¢EzÍ©Ÿg8Ñóãÿý÷Ÿ6l˜ŠàÐALùþÜsÏ…k¢å¼süø9ù£ÿ‰7üüóÏx~©žü_|ñE½æ;d"€€ï½÷ƒéÞýyGïÓo½µ(CeÈ>!šÝ»w77ß|³-¾£äˆxcö-D¬ˆ"¸ÓP·À±¡‹´@9âOÞIˆ'¹oß>Çêhm}û ‘d¼«çŸ¾òî¾ûnÕ÷¢Ïe>XÞ>ýôÓbžGßIæþq4†JŒ ùB€±Æ¥m¨þ½í0¢þƒ>hÖ­[ç·hGìÌïy²¯†DÒÑ@Js‰¦¯XëFÍ‘N™2E JrNfœŠØT8]qÒ‘ å=÷9Éñ‚±ÁѽÁĉÕZýÀ¨Q£T ;ÿØcù×Ãˉ•+„Ó/ ~”òüñÀ]"WG>ÏKñì³ÏêËc¯ÙðÎ:묫TÄ<€.]ºHµVÇõ…X†N†ù#ásÊB——ƒ²žÓ'O^btp)è ì©Ò¿d.þøãº­­[wëˆh5@FɾX‹gŽyæ9`†Î!\Á­³a 'þ÷¿ÿé³àÔ ^ðÃâ™ð,!0ü +V¬¨V‡ÚHþ¡;â½ >ñ /T+@êC Œˆxذ*T¨ §ï5j¨»'q®Á=ïž=Ñ73NÅl€<Þ86Äx´<Àm¾ôÒKÊ%`(Á;Œˆ  ±bóØ .¹äsæ™g*7tŸÖ¬ ^)û˜ô} B¾Ÿ¤y¶ü¡Ï³ïï1žŒà•lÁ$`AË!4gΜzŸÃûûžÕwrƒß•KD½¯Üc^Þw£)¦XÎæÏŸ_›ó.ñ®Ò7ï;¿7D;ï˜ìsá€w)Tÿü¾ÂHbPÑqè„Iâw€Û ô€ï졜±/óÛÂ-/`T¬á–Å%*ºPs n›ߣ&¤L nŒ5 æq "9™±a^~ùåúЬRž “S3ĉ ˜M bL;NõS0P—Ž?ÚÚ ‰”„ÎR¯ï«½FÔÁÃñ§4^$(Ü}ò ±”³À”s’ã…=\ ?œ»îºËT–S(&óöÛv¡>×®m ˆéò¢ýê¶¿ìÈ‘$Ñåö·üàØ CAr÷Bէ줓|\V¸û”ócĈ€2?¸—lèÿ°"d|®!pC1èŽà௲I@H©Š(ðc¶ú%Cˆ}ˆ‡-t><3Dhì5„)x–pÓl¸ ƒ‡ûC\Æ{ÀÚØÌ¨1ãÀe­ü±A…ÒEr 5?úcS°›«]?\ ÇÍa ‰\&18cg~]~_à«Ýµqÿx9  Kã ÁA„÷C‹ãÐÝ—ƒÒ»‚“²öÐï™mwï½ÓÂÆ(¶uøŒæ½LDÝâÅ‹ÉûâQô×??ìq^ÏlòÁÀ&¼÷xë𬃵{ Zðýh¾³çzÁÛ7ï&ïpjÆ îß;–µ2¦Œß€ïžjËì'óðÖµå‘|&7—HÚÇ£NªirJy6Z~üQ¬ÊàÖ8yÁ©¼ñÆjªÝ®];åä¼vÁà“zó¶œ2ï‰-¸=Vul"lÀ˜Ծȑô÷nüKÌìÃçEðŠqìxÁŸU«.qøÃ²9~%§Æ¿t£=xðx£²wlÙòdpó¸~ƒÍM±OD>~ŒÖ ,pœ¢Á5Ÿl:H-àà­"úELD€ý!Û>ø´¸äšþ­nÓ–{˨ @\ù¡Aøàñ÷CŠÀܼÀ³CºÂˆ¸Þ:ÎóÝŠßl}æµ^DÛpÂ@$óè±–Ƴ\„åÀ1å:™7šZ´DÔŽÁ'}£áw‚±sò„t—»›9s6Ê!u©Ô½{ÿ ùn?ôP7×ù¸3ï˜í:Y_8!­°Ï:’5bl|¸F=ÄÁ.à -w|/Ôw$%pqp~¼Ï07öЪ¾-ãi#Ù2÷;bl„˜¹;0Ä ñÔĉõÄÿöÛoû•òW6G/F0 ?‚`¡C‚ø!b’SÊsŸ~yaà"ƒ°yˆÑ8QrJ·/m¨¾àT¼—Í¡€1Üpj-ysäøOc³~öÙmbš~lÞ„£-%ù-y¤ê\ãjº\³1óŒøã R6¸@!ŒÀ#b¬`€8Að!VµÒ DË„@b-½×zSþ1ÆQñ±É0@¸4ÿþ{Œ8ðÂ]⃅"ƒ¨µoß^Åtëâ]glˆkCëæwg5 ‡KxCµ U†*åá‡V‘¸\k骾¯ì¨ˆÞË‹üR¥NörÁA‘Dä’ßàñ‡Ýðýd­;¼¿ÑQ»úàCœP‡Èàz¶}¨O©щ"®E*Æï‚÷+pˆDÂà ý½ƒøb ®;·=!jC7†. €EÙÌdsáä( }›‹÷%µýp2Lj„}åÖä”òˆÑ1!6c#Gï†ð±ñBäyP}AD­¡ã³G‹Ò1’U¼Ûû|27;ooyr×eËëdzõ«Ý·ß^¤ÁÐ BŽ•dF»^¸zDóllÜ'Æ|"ºäðÁwIJÉ‚í‡öüàÑß@LhpØáyrúÆÀ›çÊó´×+8ô4ôÉœx×8ÌaæØÔ¢x–èÅÕcÇ{Å€¹ñnrâ7чޤ´±j~¼·&Ñù̧ŸðîBÑAHÑ¿{Á⟼+®¸BãÃBDádPŸ`' p¸`|DéàÜûûФ=uråÊ!¢ùÚúÇû8kÖOÂÕ~-¦urPM^5é®^t`?ãpãá=̳Çò~òžó¾ Ñ€hbÀ^Ìáƒ5˜!†ƒƒú\ö8~ôˆ47Å/ºu~’Ç@@Ðz¸ˆ‹Õ1&ß4ü]kíŠ>Êú)Ñ//›WŒ ‘DäÅÆ ±ÄÐàeAÇ€Ñ õíFÀfˆ¬”?£ý@+‹.Ó+§×›%óõΓþÙ¤! v.Éê/8ŸÉAZù‘2ð‹áW¬ÀA ½ŸWlÈi9ØJwB‚Ã6x¼ôÒKuh8P(H &€gÂCĨ+IЛQþã™ò¾ñNr ãÇûÀ{Æ»@ß¶ì8.{0 -ëaÎvn)Í!ø]+‡ûå`‰f¤Ëo‘®ŸºˆÑ£k`6Xáàï¿÷ §¿JtåÂUÉPå!h}¼ÂïÛk?`ûåÀ†1Œ Ä“ß6¿)örôþHV8P¡Ï…hR—½ [$6òèU} —çŠ4k}/Ѷcf¶OÖ“Ågœ!0h}<:ç$ÄÆ‡5–%¢ôËÚúFyÇII¤a-3½mèË«_õÞ uÍé*ÔØÔ Õ›j(ˆfÌPí#-«_ߥ$Òúé]S-8¶®v>VÏh¿óiõÞ2ï5F`ÖÌ[+ð¬í;‰x—?€¹[ðŽc‰(÷B½'¶ ŸÞv¶<˜ˆRÎÚR»)EJD'šºÔŠ+iˆh4ëÊ u9†2bBRf7ÁFš¨S¸ÇûlVQ¥`¼ð†[EŠˆ›¶RˆÔ¾³ÚI6øWÑ.øâ4ƒ^*ÔÆ’>quñn<ö·‰V)ÜÞû=ž}yûÍnל†£}ÞXvCœ,ðÞ Š NÔ^B|?½¿gôù¥7~ÜøñÅ\"œ&9«ú`ö\8o­5 ¤Ük¤Éw ¨Í¼’$.´¼û0‡M¯ƶwŸ8¶“–§ú'Ÿh7Uãá[ïX¶…²nK‰ƒ¥m¤Ͼ"3+ÖKÍó†3õŠÎá ¼?`‹'ʼï…-Ï(Ÿ}~OnñÁB°/!à<ÄÀ0 ßMij@8#M¯%6¨.ñ¢nÁ˜ÿ|©Ã@Ü9ÒÔMõrpðb š|¤:TýtuoswE1€Ã3 ÷`>8ÈÁ1âën#…2Ò$ÆkÀñ>\ý¼Ñ§£†AŠ@0Xqpp¹û~ ÆFœdÚ¶m{ì®»Š;Ð= ÈÏ€»XГVR;Ù`òеã|Ñ)•‘ûç"i "¯mb˜´É¦üù«‹®·–E8~SBD_ÅŠµ—1jK߈Ûà<°rÆx!RNù³$óøAçlKbýÄÉ+Œµ¿ônŸ•Œ¼¸„`"ºµ~ýÜ g¤É=ÜЂŸ+wXí²du‚™fÆFXÎ:y8¯\öŒ Üóö=ëvíÑ÷‡~)Z´­~vêÔMèqøURCõˆ]§kùŠ[D ö¸X÷Öñt.ÑM.v-IJزP+ÅøoÏžƒ2ÞxñÞœl¬"EòK$¦ b-í8ÒQžéšÛ 2¡&ÊH3˜ˆÒõJrÚ¡úveÇc î:Òã‡p%;w£[&‰máµÂ'4—¸| a*ß×£b^NÜZ§zT|ôöI@û/Å}k¤ˆÆF Q[$:§C}¥æKáÂùÄwùf÷"áŠóˆžØË…ëqÿþCÂeøâ©+uWÙi:4».?ÝÖíiº¡Þ œQ0ðÁ? g8 9 R üªÖÅ\O›ö½¸}Œ‘ïÑ/uâæûùüû/>©‡…{Ü$ ÞËõ{$Xü«šW6°×è¿õésš£¸[¢ UT‚ÜCÅŠ¥$ÈÄ«˜žÔf¯i¦–ßß\Í}Ï&g¤™M–ŸnËt„4ÝPïÎ(xñÅ9aEÜHËaò ±<óÌG%Ôán!¦6ˆ?Ö>Z*ÒŸÇùu1/“X|p‹o/wš;wN‰\ÔH Þ#™‡˼jJظ5’b¬DizP|ßÔÅâ*ñOÌsp8 8 „Ç@€±QøjîŽÃ@ÖÄÀºuÛ…P1møž ·Ž±¬9rœ ÆI¹E¤{…ˆ^§KHÉ¿Ž#ļnÝšJ|i_¶—ð}GwgË–¿%Œâ$ ó¶E8eò‘^+D³Êqrò«¯~õÿ•(QP’ÜŸ¢ºÔV­ª‹~÷Xv£ãg±Â;yËÃîC„>Œ3<çiœ1êºË\1b†Ä(%Þí1Bé ПöíÛJ3ùxsÊ’»Aƒ“ÅÕàf!váøÃ„ óU7»pá°ˆ¬-W®üCDÄ> ×Z¾|qÉ S]¢QU[MB9‹îÿÙº²4!ÍÒ×-.E Ô©sdœÙŸb½ä*tïÞTD¹KT¤‹‘R‰$„e !°WK ´cù“ë#-ï=š¤úÛ¯¿þMˆëj‰Åº^BÁ¨Ü*Ö¿Í›WU#«´œ“Ëa cÀÒLüðÜÔcÄÀ¢EëLω/ž/4Z4Ý!Ú…ó|챞ÂÙÕ0Íš= ÆI… å•ü¥·«aÒo|c^~y€Uˆ¦ë4¯‹õñ÷߯W10ÄuÉ’’§‚r«Ö¦M+KPÿÐVÃi>Y7 Ã@ÆÃ€#¤¥ zSÜU¾‹r¸„€æ”Ô€µ$ËF¿±Ñøñó$õÞ{JDqfÎüI\f¦Š“|w‰<Ô0ÊqÒ¯:bjŒ¤ðŸÅjyåÊ­¦I“J’ܾºr­ˆ­sætvŠé÷„ÜÈ Žf°⦓†¨VíN¿EnrÃâÃIà,r«V-%\h/q9yEš5;ÞÐÇÛþ©W\ñ’¹à‚æî»/H˜ÎÔ;f¼¯÷îýW­!ª0mذCõªÖÓO?ÅÔ­[>ÞCºþ2!ÍLOËÍ5¾ÀMå‡6¨(óå—˜?þø[ŵ‡ÿ§¢ÌråJ‡9D"/“$ßß)Wi£͘±L¢Í0³gßá÷' 7»Ý»*á%Û /ô• ÂUÍåä#ýæ›5’ór•p­¿I×=JP·n]Cr—Éëp“tˆ!"]7™ø’˜#!ˆÃ¾}‡D|y‚Y½z„ä<,†Kù=n#ýûOòJæ–[ÎIqõ„b|øá̇.1¯½vµ©Qã¤Ûd– øÔZn•OðQ…cE N8 da <—S2 Ï tKsˆ?þ¸ARQm“$‘ñ.IQuDÒV‚P¶l1óë¯JÐïýJ8m‡-ZT3ƒM6:Ô °ö¾÷n´M›š’¡£¨F=ªP¡„©Y3kÓ‚óšZµÊ ê ç}¦éܹ¡ºäp yôÑfâįÌÏ?oQÑx‰…$cI^/jܵÃ@fÇÀ"çGšÙ¡›\00~ü\3kÖO¦\¹â"®]!›}>Qž¨ºÍK.i¡×ÿþ7]êÜ0Þ«¯~e¦O_bÞ}÷Æ€òä¾àÓ‰Þô¼óê›aÃ:gyÂC,X°Zqq-Y² ß"®•ˇLŒçœé]&~znêñÃ#FEò¡b]\[Øàq‘UîØ±W,X}bìÈ}ûžnЩ¾öZäÑRN=µ¬Z÷Âåâ~Càû¬ Õª•–ƒC+3~|?‰Èôyþù+ eo¿½È´hñ?ɉù¸„?|ß|úé åZ³2.ÜÚ²&!ÍšÏÕ­*J àÎ[ –¹¹sçÐ,/ÖÅ‹}„”îzõja¦LYÐ3ø‰'.KÞOÄX)ò˜¶EŠä“óר‘Nûö£Ôè) ã,ü÷ DÀ¯¾z•L1?ÞK¸ÔÂæ•Wæ«.úüóŸ2#F|læÎ]¥úÖ,Œ ·´,‚'ÚÍ"Ò-#6 Lœ¸ÀÌ™ãÛ¸7oÞ%‰²Ȧ^Q ŒÖˆOå0µ´%« ›ü’%çÆòôÓŸ+1œ8q@Ôùâ‹_ÌÀ“Í!Lÿþ­£nŸ•‚à FKˆ—-û]Zœì÷amܸ’ ‘•xÖX‹³ÚÍÏÑ­"V š…"S >£¸wT¬XÂ`htõÕm$Cmâ⋟5W^y†éÔ©~Àä)%é7ž-Áê›Ü‹ä DzÀ€—U/;zt/ Ñ—'’fY¾Î‡X«þ«×Õ«ÿÔHKXãÃJpˆDÅ3ÎòÈu ŒœŽ4^˜týdn ÚE”K®ÑŠKª®”À„Ç[¼x½q½ùf x—›´3æR‰nô¾Ù¾}¯¿~¤¸ˆ|øá Í9Jú5²Ò80ó—ôp³˜1c°J 8C}W‰U«ÖÝj¸…±–ÁÒ¹ÒcP7¦Ã@FÄC#Dº5\:08‚¨¾ùæ·þé^pAC%–þ¹[\YŠøË¹ ÂîºëmóÒKýîEò%oÞ\fÔ¨^¢‡%øÃóÐCÝ$‘x£Hšf›:¸Îœ{nýcÑj!†[4éký§jƒC`ÔäÀa Ñp„4Ñvýg @HÉÜ‚±Q¹rÅTW¦LqƒÉ#zºMb™{DË vSŒŽ<÷¸µ Ü^ü)GkÐúÔˆxé°wïæ*²DÔKʳ誆PÇ æ Ô—ð‹üpca}öÙÙòÜŽjPK\+T(î°æ0w 8«Ý¸£Ôu˜1€X]ºNèÑ£G•ˆnܸS£ýøãFÿ².»ì4±¸ýÆÿÝ{A–‚Ù#â%âOj¡V-\dn—›}àà)³qãŽÔv•­Ú!%àóĽE·zŸD«ºYu©óç¯C±'MË–™[o"¹bPñp¶BŽ[lÂ0àiÂPë:ÎLÈ•+‡æ-Z´€Xèæ—`ö‡UgúÛo‰¯cÕ7D¸DèÁ8)p¿_¿Öæ¶ÛÞ u;â2ÄËãÆ]!j µ&`„ƒè0€hÿÙg/7K—>¨áIG¬ä6mF˜3Ï|Tô¯ïêwž¹‡Ô`À‰vSƒ5×&ËaŽô¿ÿލ›KÞ¼¹5·è¡CGÌš5™k®i«è 7œí_7ºÐÉ“¿•¸¦¿Ì{Ø÷¼óžÐ =z4óÞŠú—Ò˜]sÍ«šˆû¾û.r¢ÞXœ?¾Ç6!î„.ÂxÍšÒâ¶t²dò9YžÿNÑ‘Ï ]Ù•fi Üq1Ü|@IDATÇ’„bdª×è8ÒT£Î5ÌJ zТEó›]»öiLÜ;öÈF»MÄÕ4ÂÑÑ£Iþ%wéÒH9Òpºp¸ˆx|pººÔø¦ò_ÊÏ?¿]ÄÅ{Dø¤³ê Çyóæ wy·!A@$ˆïúÓìÙ³XDèï‰Åö܈ÚEÒ·«Ù3ÈxúàƒÌ/¿ü⊼ÈÒÈqåjfa À…ZŽ”àô•+—T72™ ;%ïO?möc±ë…6R®Ô_tž“>C†L º“º¯X¬"ê…Fo:mÚ÷©ëȵrpˆ+!+:]g™ ‘Ÿ´D‰‚êKJÀz|J«U;Q3¿œvZ5µ õ®8»¯¿þµr1ÞrïõM7µ3{÷4&Ì÷Çt !}çÍSO}*zØ©%'i@רaÀa Y 8Bš,zÜÍì‚é¡Cÿ‰h·€ú"‘Âu–-[Tõ¤R"ìx£¢R¥ ›/¿\é-¸†›;ö2%z.Å |O&Dcçœ3Ê,_¾)^]»~¢Ä€#¤Q"ÌUÏšð‰v*GŠŽ´R¥Rê7Š/ð´ÓNQÿD—0"@rP©RI Òp¾¹é¦×E||4¹ªQÝ#ŒàèѽÍСç›K/}Q fæDÕÞUŽ?–-[&É 3¥v” 6˜O>ùÄÿ÷õ×_Kÿƒ©íÎßî£>Òë… úûÆPëŸRNºpèÐ!‰Àõ¡äæýÛß_J0è¯CÁï¿ÿ.É ^•Ì@ãå0¸¥ùòå–„ß çYH –/?¦'eNèIIµ¶iÓ®d§Ø§OK„4zôÌdë¥æ&ÁfμU]8 ¨¤{s>xüñÇÍ_|—Á§OŸ.>¯·Êî+ý{á…$ó)âS¼1¦þ{öì©íï¼óN%`ôÿÌ3ÏHr€úú=¹Î¯½öZ%|GŽI®ZÀ½-[¶Hi_2‡ë¯¿^$;ßéý)S¦H„ªsEeò­>† "úÿËÚf–/Žf–'åæ™P @H1,*Y²œ¶}ÆFD9ÂR—@éa爚ãÚõêÕ\6—¯¼Å!¯ €ËÌ÷ßoy?–Âòå‹I› ÙQÎ=w”sXKwY¶-›÷¥—^jš5k&!ë*©]»¶(Êý÷ß/ÁžÐõÃI5hÐ@&;” •/_^¿ÿøãz̘1Nòd­Ÿ#®NçpT&LÀWhý*Uª(G£¦M›šë®»NU'š‹/¾Xܬök_wÝu—¸J½­×:t)Èoz q{衇ôoÒ¤I}kÉ’%*Ò6l˜ŽOŸ#"~Úi§™ *è8”ÁEBȘë•W^)ÄcD°W¯^Ú÷Ô©S•k¼å–[$:ÔŸÊr邏N+ñ ÄZü/CiÓ¦‰OõbåHÇŽkjÖ¬iÀßóÏ?ÏP†öŸ~ú©^üñÇbmΓ5°îU«V‰;×5rø›¡mï»ï>QUÌIP%Å÷»ï¾+†zW›æÍ›‹êäK‰Tµ@ŸW‰%ÌUW]%’ÿÄ>áu;ýoÛ¶ÍœuÖY:T8Ûy$âÓÒD`Õõ™é0@\]üF16Ú¶mêGáF¹&3 Üi«VÇRÚ¯_+ÇKûä"MîÍ[ny#!Bèco»­£Xöö3ƽgî¸ã턌“Ü3ú½]»v8½§žzJ".øºM¹°nݺ8¾&MšèÍ:fÏž-þºy$þϺá¯X±B‰ãÓO?-.R»$tãZ÷¦›nR"`‰"m·nÝ*R‚™æ­·Þ’gþ¸ºåP¾téR‘z7c6 P«V-± /§×-[¶”÷¯ ^¯_¿^Çxíµ×D5p“FÜjݺµƾW‹˜µ{÷îú‡;\Ý7Þ(a-—‰Ïñ|%@ï½÷ž?ˆS¾|ù”kçAÿ b¥K—V"‡¨õðáÃJ˜™ËÀ%îóEJ¤GŒa .¬‡ë;ï¼cî¹ç;oÚ´I|q}½oÞ|L‚a¿O>ù¤æR¥J™ªU«ê, ¢ˆœ!œÿþû¯j/#œ9ן}ö™A$=wî\±eØ©x¦æú믾Cn8-7®_!+:]g™MŒ ¤ˆvòå‹› ¶Ë龸úmú ŽÖ)Qõ®1p£F•„ëðq*Þ{Á×íÛ×QÎ"—( cÍìÙ·ËæòŸr§K—þž¨¡2e¿mhÕª•iÛ¶­Äá=ÃnpÍš5J RpOˆS!·ß~»9õÔSå 2N }œy晦K—.¦zõêÇá¢k׮ʱÑÇÞ½{ý"YˆDîÐR¸Wú ÐeË–Õkæa.pfÅŠS"Æa.ºH‘"ÊÅ¡S… APG­œ%œäçŸ.‡½~J¤XCrÀÁ"Iÿp£Œ G~"œ7o^1È+ª.bX¢é=H„ƒöôOû}ûöÉ!DóÅ_4}ûöõëSáò%£æ@1xð`%Äpôðä Ž“«ë=GHcÅ kŸ%0`u¤XáZBŠ Ì–-k¬]"+V@NÐ¥%•×ñ„‰¥ãÇÏ‹<ÐEV'Ò‹ã'Ÿ¼DÓ]~ùx ñ¹Š©#š`¯d¹ ’ *ô„Q&„ „¨A4à$áöÐóa$!³@»`€èY@¼  ØrÊ,÷fëÂ5#ކ³Å`‚·Éø9s’öïýC4Z¨P!Õ9Bd˜›%î?Ái]":… üÕ©SGûǰŽþióîn9B$ƒŽ1T«VM¹IËENžŒ¼ ¢V¡¶„p8öÎ?î×2¸‡‡Á@ݺ÷&‰X7©mÛ‘I¿ü²%I‚$U«vGÒ+¯ÌOêØñ Å‘p­Rvg’Xô‡3‰`”T«ÖÝI’>í¸{á .»l\Òˆ…»÷òõë·'IxÁ¤nÝžIÚ´igÜûOÏź5IRÌSî*I¸Ñ$±^õ÷%v’pI¢¯ó—q!âZ-kÑ¢E’8ÿ=ærï½÷& ÁHÚ³g¿B}Ùu°&k5ÆÎ2T-ŽÚOˆ^ó)¸_»vmm¼ ‡ïפhq,±vå7Ñ9 (¿<ë8Ò¸M\‡™ˆ\÷ï?$ùH}zÒjÕÊhØ@cNÐ0¬ ]*.&ß|ãsOð®½äÅ7˜+¥í˜1—ÊIü;éo·«„]âƒn‘Ó|mM@>uªÏ§/af²Ž‡Â5ÁáYK€kƒ# Ö…ÂÅ—y—Œ8ÖË­Ú¾¼úUoýh¯qÉa /À¡¡?¼÷°ÊeÑiþüùC6¡/»ÄÌèRÆÆ`)Xý%÷á6™xL À3œ®åTm}¯þÔ–yçfËùV9×·Ã@:c @<ê.Bð…­[ÿ‘ $·¡Œ€ EŠäÓ2¦xÆ5ÄZ1ПÔN}À€6’rí[Õ·Ú²ä>±~öÙËDtöšßÈ)¹úñ¸ÇFtýõg‰îï&Ñý}¥Q‘6oŽ¡–½‘Š ½ý¸ëÄb€ˆHXØÚ€ v´¶mÛª M¨ˆJÞˆBpÉÖ=%T´ ÜPSCHqû!¤¢RÉcÀÒäñãîf# `,´oÆFE$„™/ÌYãÆ•Õ W‚2X@¼;gNhBJë®;KôW³mõˆ>)?ûì墿œäçˆ#j§Jp§ÌûÊãRñ%|ʬ\é6Ñ8¡7.Ýà * ñqKÁ•ðå~—ÖP‡àb-2ZÆ?D"ÒAþà y 8Bš<~ÜÝl„‚ó!ýW³´üù§Ö¨q¢l>F,/ó8ÒùóW‡tÑE”ð®X±%* ðá²ËNSÿÒôâ+W.¥†H$ïÑã93rä CÕB\å„`¿QÒÁyz)|[¯U¬7¢’·~rÑ‚¼VÆè}Óë=ôÎ7£_;BšÑŸ›_ša páüJHáH·oߣãžt’ï¿mÛ>‰]{D‚•û²u€‚óý÷ëCÎ/gÎâÔ~¦d¶ˆ>¥ç1cÒV_¼K.i!âë;Åjy›ˆ²•`á‰Íƒë»ï‰Ç™] ˜d„!ð@Öt›ý$ž..¢…,„‹dï»Ïè0àitørµ³0puAGŠKÊîÝü\a!˜p§«Wã 8{öÏa1G‡ø×ê[ÃV qã¹ç.ׄááô°!š$¤W Â>ø`W1Jz]²€LN37„,(“wŠ$çIð{R—üã TD%QÈÆ¤EÄ*ZP(ôXqp¨{®Ì‡GHÝ›à0ðÿ(\8ŸÄËýW¿Á‰nÝê³Ê-W®˜çÞ|œÁÑ9çÔ‘Ìá ):×^½Z!ú2jCÀÆï¯)×Hã–Þ@‡¹s‡Šã|aÉxò¨s•IÇB`,o‰«‹å-Æ@d¡±gJª1*áø€‘#Gj<`ôžÄ¬ýG¦âè.Z´H*`ÈDÜ_ ”œÞAòp„4yü¸»ÙèAáH!õéI±hݰa‡ˆÔÊúcîR§q㊚ÆêS) Ä»o½µH“…ßKé{“&•$¿d‰áûrÄRê3–û¨6¬³pD7Š8q‘#E«Že|×6D0²™lïø"yuÜ÷êNmýpÑ‚ì}÷! O®V6À:RBp¡Ör·~ýŠzMZµU«ŽY±"ò:ûìZÉr¥Œ?ï¼zêÖ’öïßZrZž$N÷¾€æ©é#Þm˜a]÷îý¼ˆßQ¸ïï±\Ña \D¥èzqµ£Å€#¤ÑbÌÕϲ(\8¯Ÿs„#• îºVüB±æõéHÿ X?„ô‹/‹w©|à íÔ/“4m©Q£ziþÒI“SY¥¦¯x¶éÝ»¹X.ÕxÄ­[?¢¡…g<1}_á"*Eß“k ![®n–Æ)9E8Rk$D$#I8ñÿ‰”÷+Qµˆh×®¶ùê«ßÔ¢×–âƒÚ¢EU N¿0øVDß ¦?qâISõ‰ùᇠµI«J$;1âbYÛu"ò]$Ü÷“ådM«ù¹qÒަ–Ý™¦ÇZ€zCå¡\°`µäOòM½¢Eókð ~åkX¸å–sÌ3ÏÌ–äÊ>—…°ÃܨX±¤$A¾D\j&¦K°†0Óò“ý½÷nÖ€×]÷ªZ÷ZѸ¿R‚/Ú´i£!ó¹»?‡ƒHß‹.ºH£EÅòz:B ö\Û,…"Eò‹±‘Ïj·\¹âjHdX¢D!õ£D?øë¯âÝsÏ­#ÀY:Ú6ÞÏúõOV«ßh‚Ù{Ûs ÷Û·o+ù{Éïš\'½¿wéÒHŽåËßÓ‘fôèY¿8-æE‚mDËîÏá Úw«æXÀÒX°çÚf) À]îÚµO×T¶lQ¿h—8BIö­ÄpÕªc¾¤Üƒ~ö™/8ßÃÁÀçš±c?)R œ-DêŽ;Þ 7Lº—³øŽ;ΜÜnÖ­Û&ÙeÒœ«NšîÆM Ap„4AˆuÝf> à÷‰AБ#G5LàÎ{ý¢ØÚµËšwªm0!Å=&oÞÜâÛ—|8À–-«‰f!‰e»4&ä ¿Öqã¢Ë0Ó ©h\¾|1g_&%®2S§.”dâ£DŸœ¼<ø&éŽGHÓý¸ d$ À•þóÏÕ±áºB‚o qãJÊ­B4ý5#å~ûö)‹w©7hP{óôÓŸq™j@_;qâUæ¹ç¾ÈI‘g˜Iõ€16D¬þ”ЇwÞù¶¹ä’Ä ySŒ½ºæŽfœgáf’0P¼¸/< S©P¡„ßà¨F²bµ›C9Ô;öùýMí”;v¬gfÍJ^OJ] æÊ•Ó|òÉrÛ4UŸC½ôR ÛG,ÜÌøÓÎ{—rh w^2W_=1 ÀEfXƒ›£Ã@( 8B +®,Ûb€0ÿ½_×.rãÆz]±b ùþü³OOê¹K…æÍ«(ÑõZújÃÿHâýijB܉®¨iÓÊæž{:‹ñÑx¿ÛNt=¤}m#d·ùöÛ{•ËïÚu¬¤òzÓÏù§ýŒÜˆ±cÀÒØqèzÈB€#µ^N>¹„äbôe€ÀæÉ“Ký8 ¸zu å.¦öˆw#á41N’êb雲RJ¨%(A!®»nRLFL)ïû$>¿þú³$‰ù½âjT\ô§›¡Cß °”Ž÷˜®?‡DaÀÒDaÖõ›)1@¦k¹[¡Bq‰n´Ë¿¢‘¦zõr“Ú çW?"BJý!C:Æ…+¥¯áû˜9NýcÆ #ȼ"âß~{G3oÞP šž_ *É^¼GÒ«ã0žp„4=±ïÆÎp Ríz9R& Åb_Ò`Ë]î·iSS2glŠ(ÍXÇŽu•ƒL. }FQR-Y²A "i“ÑêºnèÐó%É=ša¦C‡ÑæÖ[§8‚šÑ”›OH 8B-®0»b€ «] ˜B@ñ…,Q¢@@^R‹«Õpõ2k9:aô¨ß¿ŠÉ÷Ú°áýÊ¥º„™õ©fÎy;Bš9Ÿ››u‚0P²d!ó×_{ü½WªtŒRX©RISµj) n¿råþzÞ Dµ§V-bë]ÚÞ}÷’rlfÜÓ£ÓGu‰Ä¸ÍªÀ‡ðƒ“'_+8¿Í”.]Hó¶ž}öcâ4'@TŸUqàÖ•¾p„4}ñïFÏ`À……FÖ"½èúõ¾0LµJ•Ò*N$ Æ.Öç4x^Ø0*7,S îþê« ‚»Šé{®\9Ä%æJÕëÆËÕ&¦ %¸1gH @Â#.V©A«V«¾øí·ùŸk‚§áºÏfp„4›=p·Ü”1Wj]`|„ôXPxŒ ´K–l4uê”+ÞíСžDëYÕÆ}×]Äâv¶‰T$œòJ|5È ·öá‡KÔÏ4Òv™½^‹UE÷ÜÛüøã¢Gm¡nF(]uÕ+棖fIqwff™uþŽfÖ'çæ0 ”)SØOH1>’ ~ÎQïÁƒÿ)!%ÒQ(Ë]&†x÷Œ3ªËæ½,âyÖ¨q’f‡IDžQÖ1uê æÙg¿0|ðcÄsÊè—/_®)ïˆu¯¼2À¬Yó¤è¢G›~ý”gT+l›p}¹òðxÎ*¸™:ujÔ¯½#¤Q£Ì5Èê ùöŸîö/®tßx·rå’¤œ ­\y|nRÛ°K—Ææý÷°_#ú¼ãŽN’mžÙ¶í˜ž6¢†TBìùæ›×š{ïfæÏ_A‹Œ_BzÉ%—¨.Q§Rú;rä pü?™íÛßW¦•)ÖO©?w?eœg&=õÔSb(øuÔ/¾#¤Q£Ì5Èê(]ºˆÒuë|.0p¤¤Vkذ¢rª«V…68GgX¼x}TÆ.»Þ½[hàDà®w„+5ì^f~”ü¸>RƒGHSƒ5×&KcÑ®×r×çãӓ‰’¥¤Zµ2ê&óË/á i¾|¹Å—³vTFG ö–[Î13f,1ä1Ýl<NîÔçŸï«Éµ—.ý=ž]»¾²%!Í–Ý-:9 ²Ý¶íG Ñüí·¿üMõRgùòß ú7¯Ø_éÿ/ï¾÷^tâÝ¢Eó›o<Û<òȇÁÝÅí;¾«cÆ\*I¶Ç’•;ppH=r¥¾©ké051Pºt G !Eoi¡jÕÒb¹›Ó¬X±Å4iRY Ž Î:«–<øM%¶áê„j7`@1ŽY ¢á¦M+‡ªs Á ·wÉ%/˜wÞ¹QÓÄÅÜi6ì`Ó¦MbŒö·©[·n̫߰aƒl~ö÷S´hQ …ØØäË—Ï_–š‹¯¾úJ\·ª˜¥KÏ Äã¸3ä½Î“šîcj³mÛ63wî\‰ ý»¼ƒÕÅàî,S°`Áˆúœ={vºÍÛ;AÇ‘z±á®p›^é)§r¤¸ÀlÙò·¡¼T©‚!“|[DâÇyþù >ŒÑó‡½@ ƒ¢im]<ð@WqyÞX=p´}d÷ú³fÍî~L\Ð0}út‰Öt«ðñ÷ /È{vŠèå7ÆÔÿ°aÃÄ—ø'qÉš§7Ü€÷³z½dÉqúH¬ÑÆ4F¤_zé%É›ûœVÿôÓOM‹-Ì[o½%Ãv‹ÊáyÓ´iS‘ö„Ï ämŸ–óNn}Ž&‡w/[b©×j¶pá|†`ôV„[¹ri%:p£II'G^O »wojÞ}÷û¨qÙ¥K#É6s‚™6-ú¶Ñ Æ8ÄûíÙó9#MÛÌPwÊ”)æÒK/5Íš5S®ñ™gž1µk×V±ºÿþûÅßô ] œYƒ Äýi‡´òåËë÷ô¹ A0O>ùdÑ}Ÿ#єΠØðáöºtébÚ·o/!$O2Ç×>¯¿þz‰´tDŪdš7on~ýõW-¿ë®»ä€õ¶^wèÐAÔ¿éuýúõÍC=¤“&MÒT{;¬_!ˆŒ±ùöÛoµþ_|!‘´N“ð•Ìu×]§eüÃ.ôì³Ï–ƒßIXT‚TŒÐ?8¿=zè5DuÙ²eæðáÃfÈ!âg{•â†v?þ¸Žwúé§Ëob[Ø9,X°@q[¢D mÿßÿI2ÕæÂ /ôϧS§NrèСæ¾ûîSâÝ¿'„”çðñÇ볺í¶Û”{Æç/¿üâoO];oÖwî¹çšbÅŠ™víڙ͛7븭[·Ö5•-[Vñ€ä ài"°êúÌÔ¶Úe1pŸkÖøô¤¸ÀÈ‘ëÎ{“åHi‹qAG =ÔÍ<üðG"z;mÓ¨ê÷êÕ\#uè0Ú[8ª2på]»vI@ûéºaCؤÇ/î»)ÇפIóúë¯ë Øèo"^1c†<³b”u…yúé§Å¸l—pïhÝ›nºÉÀ‰î߿߿ò½{÷ê87Þx£¸Áuýõ×_J ×®]+ÉÊ¿Q1¤å^kÕªeÊ•+§í[¶lég®_¿^Çxíµ× ã=zT2 µ–˜Âß+áýðÃåpÖ]ÿ¸ñcLˆÊüùó DmëÖ­J˜84ôíÛW‡¬òÏ3ÔÜ*„ôÃ?ˆ¨ÿåÁË'Ÿ|brçέk 7¸è˜Ï>ûLRÞ-TQ-.ë¶ÀAb¡fNˆÂ!€>/´mÛV¹çPø„PÚöN;opzâ‰'šï¾ûÎ/^\Ÿ+}BÌyFpâŽXK"ÀÒD`Õõ™©1€þÔþ=é1Bê‹¿ !%')†HGJÔ†dàâ‹›Êæx—î7®$¢¯ª"òú"™Þãs«OŸ–êÓ³çóY"—©+mÚ´1­Zµ2lÒèí59Üàš5k”ˆ@¤.¾øbåÈÐ}Þ~ûí’éçT3nÜ8%Ž´;óÌ3•ó„« †5jHð‡‹”ã=ÿüó%íÛL­ÂæѼå–[”@S¦? ×0'D–ÌåË/¿T.«páÂJÈàFᢋ)¢„*‚:zôh‘šü©Ä›keýúõ“,FµïHþõîÝ[Ü»ªn¶gÏžJð¿2/$Ás€ðBü,6M”+ž6mZÈ¡ræÌ©† (§M‡`‘2k°ºÚ`|B¨ÑŸÒÞÖa =pøÔ—v|ú§œg‡6ài"°êúÌô8ñÄ¢âÝjÕJû i±b$"Ž1… ç—Sü ’nS­…[8„-â¹háž{.PÃ#¯Þ6Ú>"­Î÷›®]Çf)iÕªU9räXÉ%Б7o^I}w.„¢gw·‡x–M"bvÁÇdáСC*å»-÷–ÙzÁŸp͈£wÂIA¤à6BôÏ?ÿèâÑB… ©HÂÁÜ,qÿã?ä½,íï±n¤®BÍÝ&x²QG´ ;wî (Bl?ÿüó€r 8¼o\‡Ã¿)æUªT)ªé¡Â;>8råÊ•ªßŸ6NáŸ#¤) ÈÝΞ([¶¨p(Çô)Á.0|‡x"¶%6ïŠ>L8laéK ¶ùó}ú±põB•—/_Ü_ôÁ§‡º÷²Ë.;Ía‰Ÿ^·Ÿ¸”:„x¢?Døà1ìê¥×ˆ%­.ºûöíÓrï¿’%Kê|+Ã]"b½óÎ;%hGoƒèñ'cNž½í© 2;v¬Š°±tF” v Áåqù.l±‡‡ <öØ'I’Ô_*⪤ªUïHÚ¿ÿ_-ãþ¨Q3“~üqCRóæ&õë÷’¿n¸ ѹ&Õ¨qWÒîÝÂUI¶\‚Í'{îãIÌ%­àã—&Õ«7,I" ¥ÕQóÆo$ ñ‹ªM¨Êb’$}’èçü·9’$\c’èðüe\ˆõª–‰Þ0Iœÿžp•IB¼’Äò7 !0I"¾Lñc’p³þú©½ÝmÒöíÛš{ûöÞ½¦¼³ûêÆãK¨9€'1.:îý®ø¸!…ûÀuİ+I8MÝpø¤Bp{ÛH#I"¶_£þKç$!ÊѶ{Öq¤q9ޏN²ínÝúYœf±Ü]½úO-ó… ÜnêÕ« z°½)ŠviDÄ"4DÈÞN‚§… å3o¼ás{°å‰üìÔ©¾±ôÒ|žË–%ÆP#‘ó¤oÄ¡ÉÀáÁY@Ÿ G¬ E\fÛð ‡æíÇÞÃbqf¬€n‘¯¼}{ï¡ëÍŸ?¿·j\®CÍœ„â|½zN;8ÆB^\PN=f0„Âgp{ÛnñwZƒ#¤iq7^¦À„”  ^@¼»jÕV-"L ¢Ýœ9sˆb%õ1%ÑwJ€›ÉԩߥT-ìýGé.¢»OÌž=iã<ÏD¾?vìeNp|–ÉãE08úć~Ø[œâ5¹` X¶"\I°Nkà€€Ž2Þ€èWžDC8|&zÜÔôïij°æÚdy øt¤Ç8R\³æ1BŠñÔ¢E5±-‘.±mÛšjÄ”Z#žSO-k:wn(ÎúÇo؉|(Ìû¥—úkÖ˜÷ßÏ:ùLÁz8¯…k¤x„‹òrP\‡â¾0ºI. ½*Ö¬ñ|k|ðÁxw{\áðy\Å Pàixn '(Úe†>Bê;áC8q}Ù½û iÙ²š9rähDÁßcÈ3eJꌎ˜QˆfÍúI"¿Ä“¤ÿp€…ò´i7 Ÿ.Æ"sÃUså©À1†¼€ !ô¢ø`­K€Œ˜ºvíª:¶Í¢E‹Ô¿‘2í¬u±ÚÅmäꫯVCÜxl„pQÞ}÷]y×kª‘+¬‹ñÃĘˆˆIÁ€•-Á ²+8Bš]Ÿ¼[w²€PèßùÃ!Úµ:Rû\`¶iЄþ9qx=Ä»„ ‹†dçî&! ï»ïBÙXßNuáúN©¼zõE|9H"ï|“æ\qJsËl÷ DðòË/«%0¡ò ^^ >š.$³ÿýWƒ<@Hñ%„ âÛÿýïà¨B4\sÖ¯_¯„bŒ pÝ!:*ê÷!¶¸¤àúñÆ­……XÝ"¦Æ½'°H¾üòËÕz·!æ™ÀÒìô´ÝZ£Â@¹rÅô¤¸¼ìرWBŽùt¡„ Ä%†¼£ÕÅ‹#sMA,Œ±ÒÌ™?E5oånÝšhô¥I“¾ö§É5úãéÓJ8¶µÂýLVn \‡‡èñ€Ëù[£GH£Å˜«Ÿ­0P¡B‰G?ÿìíV«VZ"ºøD» ¦U«SDì»)*U¬XRÂÄUÀ¢jª2Q‡†½@¢äLNw¯ßÙg×23f 6o½õ„Ÿ‹¯ÞBŠÁ—ûs8ˆ×;ЫW/ûêFüéiĨr³#àH7m ô%…xþùçnsàÀaá@ËøE»àçœsêhŒÞàl)á®_¿ÖfâÄØÅ»ŒÓ§OK5ˆ‚3Í(€u21zɧڡÃhP‹Œ2?7‡X0ài,Øsm³<ˆ¯kÓ¥ÙÅ"2#‰® Ê«ÖÀý)'ãh$´kWKŒrvÇ- ÁSO]bž}ö‹"oçŸ^ŸèM¼§pËçJgb‘˜^ëpã: cÀÒ`Œ¸ï àÞ²~ývO‰ï²Aƒ“ýiÌ@ÿÛo>d‘"ù œà¸6É@œû÷?#nzDÂ’níÆ_ËpAå ¸OÐ{ ¬®¹æUåà“ûç0Ñ1àiFBn~銈d0GÊ„ê×?Y9R®½–»öÞ·ß®QΔï‘qsgÍZ•ûLr}W”1c>K®ZºÜgÙÛ¼òÊ™ktP1Aˆzz¨›Zõ^{í«šß”é2!ÍlOÌÍ7Í1à N(Þ%¼E$ÿ†»Z»öX²cô¤ÕÌ»*ê¹^uÕ™’¬ùk ì»+ ƒsxøáîææ›_HRõÄØ mÛšæË/ïT:>§¿üòGGs]; ĎƧ®Ç,†Ä»ë×sqayd=ÁŸtùòMÃ4ЦNrfïÞƒ©"¤ôU¯^Iλ+Œ} E€¸q|ú+['½? ½øÒKýÍÕWŸizö|ÎŒ=Ëü÷ŸãNÓû¹¸ñ#À#¤‘áÉÕÊÆÅ‘‚Ÿžt“©\¹´æ-µ¡ñ %Ñõòå›Íßïs“ñãçFÝ.¹>ÚC|9—™/¾ˆ.XDr}&â^Í$ˆÿíz@ÁMÆúë&b,×§Ã@¼0ài¼0éúɲ€nؘà›ÅZƒ#t}'T,Àß´nÝò–‘eôyBu>|$®8X?óÌefÈ)q3fJÔG=qâ±8>Û\rÉ ’¸ü}áðÿMÔp®_‡˜1àiÌ(tdu ø8Ò@Ñ.köºÀT­Š L žô¤“ŠjŠ´Ôà®?ÐxBóæU –ÁD=Ê €› ºÓ}û™3Î!1Œ¿Ï Óvs̆p„4>t·äè0àÓ‘ÑC'j„#¸¥jÕˆpHHõ‘Z‘o4£"â\ºtcÜcæÞzkÉŸº?nþªÑ¬)5uÉjC‡W^¹RbÏ5=z<çϼ“šþ\‡D`ÀÒD`Õõ™¥0@pƒ]»ögõJÜ`/^¯„ÔË‘"Ú%CùòÅÌ÷߯ˆ‹ hcž{.¾\iΜ9ÌóÏ÷UßÒ̤$ñ'Ÿ Öl2}ú¼hnºéuÕKGX×Àa p„4Hu]f= Þ •Q¥I“Êæ‡|„ÔË‘žzjYõ¶m[+Õâ]âïΜ¹\¹Þxb”øÁ<ÒÝ\uÕ+™J÷ÈÁ…Dèß|s9å”2’žíIsï½Ó$Yõ¾x¢Çõå05!e®AvÄ·—ã´8hܸ’pœþß—ô˜5wîœZ†È÷ó϶գúÄ@¨W¯æq·àe\ÐÀœyfMMÕ¤2@åüùó˜AƒÚ› î6äŒEzß}ïIÞØ2Àìܲ#!ÍŽOÝ­9j œrʉþxºÞÆ–#-W®˜Ù½û`@ÜØºu+HœÛ#ÊQnÝšºMþê«ÛJ¾Í… áx «’ Df|O‡ï"þºw™BêËð¼~Ë•*Ðf¡Š~úi“騱žè: nñ÷›nj'B_gìqÉTD÷ûè£g:}i¨%«xÈâ;Lá×2wÝõ¶p©›É“¿:@¨þ]™Ã@8 8B3®ÜaÀƒ)Y`È5 VOŠ>Ô«G…#Å2¶M›fÉ’âvr ¸iDßkÖ<É@¬!‰€óÏo ɶëšë®{5ݧyŸùóçפœfÞ¼¡æ«¯ž‘8ÃJrc%÷çp`ßQ£FÅíÝt„4n¨tee `àR²dAóûï;[¦åHƒÅ¿ æ5'žXÔlÞü·ÓÏ>[q\ÛH  :W4ÌNXüÙaÃ:2Ü<ñĬH§”¡ë-\¸P\dn’PÌŽï 7ÿ‡‚8¹?‡ƒ×^{M·Kâö;B7TºŽ²:|GÇ‚.Øõ"Â]»v»©P¡x@PîÕØÞ'Þ.Ù·íŸOÂ’qæí·y‹ãvéøñýDûM†Ç·E»Žâ„GHã„H×MÖÇ@0ÇiWŒ _Ý®[·-@ü‹å®58š7ouLzÎÏ5cÇ~žªHIv®É}’œ ,„t–¯ÉaÊÝsÄ€#¤øpßÂb œ Z´¨ªzPˆÑ¦M»ü}Ô«‡åî&S¬XCtž9s¢bo;c â÷Æ3ÅšíÛ~¢ï½ýöóLÿþ/«¨×–»O‡‡ðp„4ù¤ùè£Äç:òˆTè3ã…ËD ÍÒD`Õõ™%1!]±bsȵ5o^U#U©RÚ¬^}ÌM5oÞÜjptÞyõ5ÊQj‚ØÛA±.T(¯p¥?Ú¢„|>üp7³gÏAq™‘þ³C§?þ¸è›ã+yúôéæÖ[o+ä¯ôï…^0‰§ˆ~c†EåK/½$±¢ŸÓù}úé§"µiaÞzë- \²[ܹž7M›6•Cfx»ˆç€´ý·ß~+†~¿gص:Bša›XFÃâÙòš-[þ>nj… ç“ß%å~žãbòØñnÙ²E ™dæÍ[u\ûh “=zfÂt¥Ì㣠ú›>ø1˦/›2eФ•»T¸ïfbVW8ýgLíÚµ•@A°î¿ÿ~±b~BÍ$m^±Þ¡­|ùòúýÇ}š1cƘ“O>Y‚oœ#1€Ï &L0W\q…Ö¯R¥ŠùðõOÉu×]'–Ý'š‹/¾XDé¾$ðwÝu—•½­u:tè Rßôº~ýú桇Ò¿I“&™9r¨å)VÈÆ Óñé¢Ì;×ÔªUËTªTÉŒ1BË,X k-Q¢„ø_%VàÿðÁ¢m… ÌË/¿¬u‡ bn¹å uYUûùᇴüÝwß55kÖ4Õ«WµñZ¶iÓ&ñÝ=Ë”.]Zq :t¨„n¼O¹Ïþýû›§žzJ )xýøãµÞm·Ý&YŽ–š.]º˜öíÛ‹êâ$‰V5\ûìÓ§DõzS¿¯[·NGì’<½‡Íµ×^+ô%Å.¡Žü–æiÝÖ­[‹ñù••&g›¿ÿ>þ7ªôÏÒ!Öu›51P«VY³rehq]‹Õ„‹û7 (X@¼‹)йs#3}zlf÷­[W— «°yï½Äæçäàðúë×Ay_6»ŒË (bSñN þôÓO—ð‚·)aèÖ­›ãkÒ¤‰¬ÿuíyöìÙ†0øÿ,Qªfˆdb…ǧŸ~Z7øx@ëâr3kÖ,?Q¤ñÖ­[E¤?S‰\êÝwß­}B@Š/n ƈ=逸•+WN¯[¶li ,¨×ëׯ×1pÝ`œ£GÈ÷߯„ݽ{wýãÞwÜ¡„ nC¢Q¸ZˆægŸ}&ªˆ…JlÁÃû￯\"D|äÈ‘:ÞæÍ›µÎ矮¸xñÅ•ð^ýõ’=hŒyì±ÇÌwÞ)¿‡•b7V 4kú믿Oê¾}ûjù–-[$8F;í×þkÛ¶­0’ð—{õ9ÜxãÊÁÃÅÒý׫WOtö·K&¥õŠgæ²hÑ"±5˜#Iß/1÷Üsv·zõjÅ9„•Ãbð´GHÓÛn¬L²ºüòK8BZUÄO;Bp¤'‹¾Ì§'íܹêIÿûïhL¸¸óÎNfÔ¨YË7¶~Rš–ÊcÆ\*Dã¥,iÉÛ¦MÓªU+æ~Ægø¯Ùøá׬Y#bùÍÊEÂ5"N…ûbs?õÔS%Äâ8ÝüéãÌ3ÏTÎ N-ºvíª\}@8¬HvàÀJ4¯¼òJ?!…{¥? —0't‹Ì/¿üR ØŠ™Â… +‚†‹.R¤ˆˆ3Äb÷ˆˆ™q)Ž«[üAcïbÜT±b árãWjçÎ'±~o»­£lÊ/¦::“·¿Œt ‘Øìwz!oÞ¼·÷%\0ˆ D ñ(œ$„†MBfvÁѳpèÐ!å@ùnË)Cw˜À5#†EÏAƒ(bÐÄø9sæ”góþ!NE´Y¨P!wˆBáÔ˜·¸VD»€­›+Cëã@IDATW®³àrÆ‚3·cA¨!jCAĈ;DÐÄœÀMzÑ3‡Àâk/~øî ¥J•ò1ÖÏÕ_) .!M$»!²|é– *S¦ˆl dS-.G[ýu ž€ÍÓ¹sØŻô‡›Ê“O~ª„›ï‰„Ë.;MtõÄ-f‚ltG9T†êâ‰~=fµjÕ”ƒ›8q¢ŠÑcÂéuìØQ‰+›:=bÆ`€h°á/^¼X9¬Æk8K2¡3Dç î„  Ú¡¬[!ŒÌ±,œbÖÞ½{+GÑ…E 'ˆ˜ý#Q,:_çž{®Žé?ô¿ÌÑò Aƒ$×îlÕ[ÒýpÔ¬@§ ‘GÄ‹8Øê.ùå3uêTÕSy"Îe~¬¼´÷RÆgàž5YŽÝ[/­¯!MkŒ»ñ25à&×®ÝV¤ WŠAR°›Lƒ'ûõŒä5ky̰iÓÊ"Ê:Q¸”…i‚S2¬`…ë8Ò¸I\GÙɵn]CtV;BZîÚÀ à)^â]BbÅ;nÜœ4AÞ¼¹Ì¤IW‹qÉróâ‹i3fš,,Ä ø1"…Û²€>Ž4XŠî.¸Ì¶áq¬—[¥Œ¾¼úUÊR è"à ÌÇZýÚrÊàèbáÚà†áHƒ!XÏŒ±¢] ´ƒ›E ùòå À3÷Y‡Â)8 ÆepiùÝҴĶ+K`ƒ£_~ ­'ÅW·‘àÀ ·G B:{öÏ1ÅÞµÈÄ‚wܸ¹¢/;fàdï%â“õMz½ø™ÎKXýDÌ;Ú>ÙðÑm>üðÃQ5ÅÕl+Y|*ƒw/‘ ¾Íwë›Mo]t¦Ö'Ó[ž×jˆuþi1ÏäÆp„49ì¸{!0P§Nù°.0ToÛ¶¦è‰öÉò勉Nôˆèw|–™¥J½ÚÉ1‡ d¼ŠKš®]‹1ǧ|MÀ€jÊ”ë%8À‡â“¸"MÆLëAÐÛ` Z€ëòr\peüƒ×ú4ø^´ßqO‰peóNWà,3ƒ#¤™ùé¹¹§ Èè’\€Ä»$—68òq¥>R&Þ½{Sóî»ñ ª0xp{ድç®4ÃIÕª¥ÅBô1>š¢q†Ólàl>\ò 7Ü€¬X‰Ò„hŸU,vÃE‚hbe ñÂxÊZt(_0ÂÝ&Ør6¸žû."z‡‡‡è0wyèÐÊu†jÙªUuq9øÏ¬Zŭz^R¾ãN²pá± ÝÇטkÚ+¯ÐhA[ÀKß`ÀhÉZcý*¾«‡%`"`¢Ùr|Y)Oðelˆ41y!=[Ç?‘ã븇‡ @H½V¸A·%Æ©6m{@qùòÅ%¢Ìa‘íñ—·iSSêíÐ?a —^ÚB¢ÃP÷”ºIUÓsÏ­#¢å `´#¦©Â`èFDC"è<‘€T€0!ù¼D”‹>“È?ÜPQ€ˆ…Kˆ3@t¦pш2„˜€DM":úT2Ä8Ä€#¤øpß"Â@Ji×®M„h °Ü¥ã† +J¶þ1rä8ÁtëÖD"Ùć+Å7ðÿë*lÞ—M5íCùuêT_ÂTbšÖ"f?R³ØÏ”èEHzC, è,Œ‰.¡Eô‹X6\ R£‘­?Pô£di‚ýJ1h"CÌ+¯¼"1¤ðGLòŽë®}p„Ô½ ©ÀyE1Ú½û`ÈÖÅ‹GòÜÇåòô† ´ ±ÞgJ´ÓO?EœÞÿ½«€·¢èâ#ÝÝÝ ÒÝÝ€´HKKˆ¢  ( "-Š HˆtH#!ÝÒŠîwþç}ûØ{ßÞÞ{ï‹3¿ß{»;;sfæ¿ïíÙ““NÍšµM" G¤.œ>½=©gPÕÀÚkºÐ †Ô~ãÇç}HÃ#ÿ-¶vãC"{$§GZl¡†]a9pQ°õòù"Ï/$L80!½ }Žàùóç«E‹ñsƱä<,ÂHÃb"5‚€[„H¥!»º˜uȘ1Y˜8ÑFúR"E?x¾ÆŒÃÒ’÷ßo¤¦NÝh‰G°ÙÚ\Õ5jT„Õ¼-[NwªwEGî›#`ŒSÕ[@¢DÆ{ÉÒQ 0OdrTÌÆpÔ6ª× #ê²~¯p¥Þ-V, o«fª]³Ô×_/­¾ùf·±©O瘛7/AÌ,d³hŸˆyÙá=“&µ¦äî3Ã8^yIRº áa¤áò±È¤"®)rà>zô7mÈü t9©S'¢¬7ÑÃ$N€÷î/¿¥@úBÛúz2p`-¢yŒÔx![rùJÏ›þÕªå#ɸ9ªÌ¢í±lü¡'}ðˆ€0ÒðøTdN¨d1)l¹†XÑM›Nج©íCc{ Þå˳iëËE„qÈóy\~ç ŸûV¬˜‹¶ÓêH›`/ ˜ÄC>Ó‚@xC@ix{"2Ÿƒö½~ý!‡›˜M:GŽTж7#§Ž“6·ÍŽÐ¡+‹Y§ÞÍ×^+Ap4Ëé‚¶'¥T©lä™Ü‹¼‰W¨yóvxÒÕ«¶H„ŽØ åG0°ÿh×®;YyõÇeÒI© (R%¸ƒþ9CÂYlcúô¾qâĤTl‰9ÛЋÿéÕÜçС°NJ•*åV7n<$ïIÛÔ‚¡½<3¦9mò¼F=x˜ÝaM3wî4Ó‡½‰ým»Å&ÑHJ ?‚£¿„ YU„‘Z…¤Ð‰’-š)ŒC‘„¡¤H‘Píß1´Ú~K5ýs«VÖK¥˜¼hÇŒY­´#’R ÎtëÖS”îneÚyù´IÉÀ‚€#õ@éµ(R$³SFš+Wj…$÷›7¿´“š(Q\uá‚mæ# Ùºu)ÞÆêd ƒ×áPœ#GlSãéaýßß‹“ú·ný¥ÃXÜ`ÌMƼA@©7¨IAàÿ˜…¸ÁÃQ̘ÑiWŽSÆêÿ«w/ÙÔá±§Øïtݺ£aîùRÇ£áÃ’óÑ2_ÈXÖNXóçwæÄõêM´,E¢eB‚€#õ,i*Ø#€ º$ˆ­.^ +]¢-$Ò;wÑÖV÷Ø1IïïÈá÷Û·/«æÌÙ®7µìؼyqÞ'õ«¯¶YFÓBPeÑHuëVY5l8ÙFýí ]é+a¤F\Æ‹t-6ñ‚¾Hxöž?‡’ˆç#)ów½Z-šÙaÆŸZµ PŸÛêÌ™›¡í­:?¾%%"ÿ%L«Uô½¡Ó¶mò°mK¹\çÐFÒ{½!!} " Œ4¨ðËà‘0Åß~3÷Ü… 3UªD ¶T$GÐKÈ&ßWLm¢G¦Úµ+KÉ­É’%…êÞ½Š<8¸±¥:ú±B…\”—¸7åèÝÄq¯VÛˆõqä(øa¤þ@UhF)Šq°Ä‰ãª}û.¨'OB2Å›í¡'N\7Å RÙ#Õê‚ ÀoÞ|Hô­Kþ`ųgOIÛ¿  ëUãÆSlTáVЂ€¿Fê/d…n”Aá,§NÝPÿþk¾mYžlý@BQða¤€%Mg@½ë˜‘¦eÏ]ôoÐàUµjUÈ×ÎB`ô±`W-S&»Zºt^eùÛÁa?ÔÁƒ¿µœ¶?¦K—„Ò(¾Áa<“&­çƒGŽ„ÝšÎc MAÀa¤öˆÈµ à%Î$R]µ ÒõëV?ýÂH3eJÎ’æíÛœŽŠ|´3gnuÚÆ×›Ö&Ûã]Ê0tÀWRëÏ^H§ÈõÆs(dh6«©6H „‘ÊŸ `™3'ç”faY³¦àM»Ÿ>}¦)ðô¬FH1xà€ãxRL¯D‰¬”)1—öU‹¦J»ÔLŸÞN½ÿþΙ§E‹jçÎ÷6GïÔi¶êÐa–ºvíAèÚäDð'ÂHý‰®ÐŽr”.]íÞ6ž4Z´WTöì©ÔéÓ!‰èΡK¥ÅŠe&ÏÝK.±êÞ½²š1c‹Ëv¾4@òˆAƒêP>Þêùóð·év£Fì¤f?HŒñÆÈv:Š<|¿PyòÔ3mgÖWêÌ1\BpÑ4ç A„‘úòÖ‘¾‚€ÎÔ»ð:=u*Ä«ŒT·“.œ™óðÚ‘ sY¿þ«zôèÕ0÷¬¬èСœJ›6±;vµ•d-¡uõêUÂjŸÂ‹ÍÑÏÿ=S¢ ÃuØÆQ_©wŒkTÅ&Z´h”YËùG¥0RKþ½…ˆ ‚$R=á‚=&H^ G(ØôéÓçìÉ ‰ôСË.Óà!î¼þ¶•b~Ÿ}ÖZ-_þ›Ú¶í4.¥‚€„‘:Gn ž"€lEpºu+lÜÓ%RÐ QïV ÆQéÓ' µ™:N5›6W—.ÝuÖÌç{I“Æ£˜¶ªoßEêÞ½'>Ó‚@dF@id~º²¶  €¹;vœ 3vÞ¼é(±ýKµ,Tµºz·X1l~1Lû l¿Ö¡CyÚ{“ý-˯rÓ²e Õ¯ßbËi AA 2!#2-FÖ"„°Iõöí§UÓ¦Ål¦ƒØÇ¿ÿþ—·.ƒÄ‡R\Ÿ>}C‘B% ‰ÓUz·\¹ÑjàÀZ Û­ù³Àñ¨iÓ/ÔçŸoP}úT÷çP†öæÍ›UÙ²eUìØ±}žó† ȃ;$Ñ{òæÍ«2gÎì3]WöìÙCš†{Ü,A‚äI^ˆ¼Â»êæðþåË—é#ñh˜ûÙ²eS¹sçS﯊K—.©GQêÍüþ”®H¤¦°H¥ à=åË›K¤ ˆÜºÇ¿”J±•Ùwßí'Fš™$Rç!0úŒÀ„‘ƒwÆŒÍz•ߎ°Ë~õUGJ~°ÝTÊöÛÀá˜pûöíÕ;w,™aË–-ÕŠ+Ô¯¿þJ{ÕnVÕ«WWÇ·„¶=‘=zÐÇÚ^®2d=ׯxÜ/¾ø‚)®•%JPx—ùž»7nÜ {ú6þ©_¿>y¤ÿÄç.\pFÒ²{úÜΟ?OÿGAذž<±¤‚€Å+6B;þvªÃ†}¯‘³Ph=ÙLµ¢EGhä¨åÈ1D{ðà¯Ð{ÎNnÜx¨åÉóŽvÿþgÍ,»·sçY­P¡áÚõë,£é ¡bÅŠiäµë´k¹rå4bZúôéµ®]»jÝ»w×R¥J¥uèÐq®S§Ž¶}ûv¦A L£¿FŒQkÞ¼¹–"E ­víÚÚÝ»wµÿýWëÔ©“–6mZíÍ7ßÔ .Ì}2dÈ ]¹r…évéÒEË”)“F/ríôéÓÚ¡C‡4 ÑÑjÔ¨¡¥NZûàƒ¸Ï©S§4Œ‹²dÉmذa|ž,Y2íĉ|Ž_³fÍÒŠ)Â×ÇŽÓÊ”)£¥K—NëÝ»·F’«CúäͬÖHªÔªV­Êó#éL«W¯žÖ¢E ­qãÆZ¼xñ´Œ3j·nÝÒ*UªÄóоxñ¢'N¢¶qãF­téÒŒ_·nݸIÏž=ÿÁØ<þ\ú1/´#ª“ác̘15ÐC1ÎaäÈ‘Z©R¥4’„ùÞû￯-[¶L;wîÓÅñœðìPHÊÕ*W®ÌϤuëÖ¼~ÔÕ­[—Ûá9a-ƹ}ûí·Ú¨Q£¸ÿÔ©S5<+ÌsÊ”)\׿Æ2kÖ¬ôÿ“G;pà×;ûE^»Öì¤L‰Ô²o"!$¼D@Wᆲ 9ƒÃщ!yvQƒ¸ÍäÉãó^¦!‰.†4tñ*]8+ÍšµÍEKknÃ^ÚµkeÊs;/\Æ—WyæÌR™ÿ­~üñGõõ×_S(Ìc–öp ‰…^ ”½éî‚#®çÏŸ¯ â‘×¢­¡NN™2%9ÃR àù9r„LÐDì P¨± a ,`ij\bBªsçΊ¤N&ÌÑ8‡7ÞxƒÌ§C¥Úëׯ“™ã¾úçŸhßÙŸi£ù&ü\0îóS  ëÃŒ!p?~¼"&Èó¤õå—_ÚÌ š¨™ÿüóOž}˜0®ü1c‡ð)¨µñLú[Q„‘Z¢ÐìpÌHÓ…ñÎ…-iùÜÉpd¦W¯jjÞ¼N÷35¶÷õ¼W¯ªôN >üp…¯¤üÞjL¨ûH"¡äÝi³€|l«»vímÃÖ‚™&$I¢”,#»C#ëÛ·/3ˆõë׫6mÚpß>}ú˜Î™$UfT¸¿fÍn“+W.Úš®÷#‰™IÇjĈ|L·]»v¡ô Ò]µj•úå—_˜1“„KÏô/fÄ`ÀPÇÂÖ¸sçN‡ô1öСCéÃ,3ýCLu„ *GŽ*V¬Xl…-Ö¬à~„ Õºuë8nýnÞ¼ÉL õèzPÝ~òÉ'jÑ¢E¬–Ƈ‚³¢ÏÏÂQ#‡Êœ´ *gÎœÌ ñ!ƒg‡|áyŽ3FU«VM‘´ÉŒcç¦ÓdzεjÕRÍš5cº ‡‚¿ à‰¿0]+Š0R+P‚€°“þú«™çnZv."5QhØI±ƒ bK¸Zïê) ‘oþü_]5µì>Bb°?ªž•É2‹R©Om¨“:’%V0NH®Áøð²†­vJHˆxÉê/R{ÚÐÐ/’$I§¼nß¾Íçz.Œõ|Óä¤DR÷23íׯ3(Ђæ÷ðáCU¼xqEªOîmOÌs…$‚䤊äóäÉ“«èÑ£ó¹³_¤ªVøÁ©¥Y2$5035û~ Á„·ÿ¦u'$4x»‚©¿óÎ;´½Ý]¥;îØÓS«Y³&Ïô¾ûî;f†ö´q­{ïCíÚ´iSô!m’M—UÛFfƒþœÑ s2Þ7Ò5;3$›0ã±{÷n³&\‡g†I…ìÛ¬¦†´ i˜l¬¢5Žm\$Q<¨x7Æ‚$ë¯"ŒÔ_È Ý(Ô»fñ¤ùòÙÚIT³fÅI¥v”™/ÂaÜ-9r¤"V.òÀ yá»ÛÏ—v°óN˜ÐŠwZ1K<á m÷Å ÌR 9±ð5$R¨üȆ½YÉI‰%@Øç`§#§!†¡ÓYºt)«Sa»ƒJ*R0D¨SÁŒÀalРß'‡fÖ|a÷ Ò&B8à½ûÚk¯±M¶Î¶mÛrk3úP-æµ0ì£P9£èóÄ9l‚`HºäܪU+–ØrémæÌ™¬FÅDÑ¢E™9“³ÛWõþ°Ù3|pS”‚ÍöLH÷ŽŠq(±&Ð×¥M³~èóöÛoóœ Ãö‰~`àøÁ3Á‡> cm˜›^ Ycî°c}¸GŽLúíУqn¡•ÞœG—"~@`íÚßµ×_Ÿ†ò§Ÿ®Õðc,?Õræªuë6_ûæ›]Æ[.Ïá\ À{ÚŸþí²­• &O^O”5ÚÑÆJ²NiÑ Ó¥×®Sÿ¿IB¡^¸z{’5bbìÙ«×áX܃W«±ÀK–œVØ»T÷ê$©S+_¾¼F*Yì‹Ææ^“jXƒÇ/…pWôÉн FÒ®£[6õÄœB=UáÑŒBŸF žÏI²|Žº§OŸò¹;¿Ðër·ÀƒÚX0.h ÀïÆ¹Ûbî¾>ñÚõæËBú!;éþýyË4#I3‰‹ªUËKö¬Wh÷’KÆæ.ϱE[õêù’ƒ×8$hÈ”)IKÕáþÒœ}ì½MáØéÅ^J³‹3;#ì¨ö÷aS5“€<‡BIXâ…­×XчÓú8*Fûª£6¨7® 6NØuû"°‚—/ ê³R'^!{"0Ø;!Uàñã/C`tâÍ›WçÎÝ&ÛOØmØô6ŽŽØ”I<øËQ¿ÔOšôº:sæ&¥,Üèúþ µîÁƒUÆ Ý&Æ¢±P dg¨†á ì¨@Å;wî\ö:…ý•¤'GMmêŸÎè;¢á¬Ž?¾fR‚âX£rF•Ÿ¾¬ÝnÚdËH¡ŠB"†'Bö&Õ'Í¿[µ*Eá H%|A¯vûد_M áØðÝZà…}:KºÑ Â[>úè#öF^Ý‚ ê·øˆlF‚2˜<æb–) ÍÆ¶!öÿ $†€Þ¹óæÍãìEfí"K0ÒÈò$eájÕò‘z×VíY @S;i–,)T–,É)éyœ¡«EÂè»ïöQFš?]5µü~åʹIMØ€>f°êÚò"0AHäÙfÈ„p¤ÈCH‡w ˆ{P!ëP]¡<¶G & ÉOÏb„ð$)ƒ= :vìÈ! õAö#ØCÞb,pPB§*UªðTÈf™’œm¤‡s¤D:F8tAZF$òÈZ„‘FÖ'+ë 7˜©w!©=j›¬AŸpçÎÙéèùóÿô*·Hѱcy5j”c‡·‰yѰE‹ôR.C?_†±{A.Òt³úý÷ßYÚ3. Ò$bQŒ¶UG‘àØOU½8ËØƒ„ˆïD¼'b?)é¾ÞÍæh”’áTš`ĺMXÃÙØ6ÿµ5ÔÃ;nܸ¡ #ÌÚFô:a¤ý ÊüÃ=+æRûö] ï³Ð¹‚‘ÂFjæµ²©F™Yl“¤‡vvq‚œ¸ØÕ>«’‹n–݆T\¸pfJp?7Ü'¸·lÑ.Ñ..Ì0igfThŽdÚ 5¢€©‚iíß¿ŸÃ; E1fì3ƒD}¤Dæ0+³)¶Í×_U²P-à Ç%cAÒ ¨s‘ôvMÐ3Ë”äÉØÈx„ä Hïf¨œ¡†Ž¬Eid}²²®pƒbD Îd“0aŠqKÆvŠIÃ6W®´ì ëÍ"âÆE±µ)…›ãl3ÞÐõ¤ÏرÍÉ£5%_çI·HÛÒ ÒÖAòDlªžè»¶ @âƒmiáôu.Ô·pBÒóÒ¢nĈÜù„‘:LϾèª`H‚pB‚;¡@µkŸ€ªc8)Aj¦d öÍ2%9[OŸ¼“ñ‘æ Ç)¨“íÛèm#Ãñdˆ ‘5álÂýÇwi÷Šæ¡Ó|ó͹”,½o‡Zùÿ“)S6ªI“Ö‘Š÷Sû[n]S²²w}¢Þ¿!y]æs«Õþùç9IC_Ò :¥úôÓ×,!>RàáQ &T·zb}¬öCØP‘´É Œá9°uÕ¾h­ÇàY›%Kìµ£1ŒqÒ¤Ic¬¦¿¿s,UÃ|ÜÛl ÂèÉ6ð¼ì“n–0M$Rr*ø ‡#Û0$k8v,$¬À~ܦM‹’Jï? Â?mË­k„Ò€‰B*S Fd½paVa¿ÿþÁ˜B¸á)F&jœ$2ñ™(îÙ3QÔÙb_No¤<{& z°Ú3QÔ›eJrgl³1@/²a¤‘õÉʺÂ9sB}§©³go…Î vÒcÇÂf8Bƒôé“RÈC,Š/ÜÚÞÓ0oÄx.Zäx— OizÚjæÅ‹»s8Ϙ1«=íeÚc7ìò"%b" Œ4b>7™uD V­‚Vp$tæ 8–HѨ\¹œ¼{Œ/¡,JÇÿ™cYCð R%.]Úƒ2ó£-°Öxôˆ1âDñ#%b" Œ4b>7™uD N‚Šv„ 9¤N$k¸wïIhñ¤\¹dKîÓÆÝ fàmÖ¦NÝd$ðó$I⑳MOμ4bÄŠ€/ þD@©?ÑÚ‚€Ò¥³Ó˜w)—îÃÐZØI5·“/ž•Pž3óñ&¦Tä½÷P¢ôìì¤×ã/åƒGR<áAÊœc¾Q¶«yÁ£I`”Á I²ß}ÇþïT©="r-ø 8Õ¬™Ÿ¤R÷Ô»Pý"¹=òò®\yÐëY¥NH½õV5ÚLú¯iXÕ1fÌè´ùÊÆs€Ráýì1Ù+VpX‚ äG0Ô߀+§.a¤ÿ+KAÀ{êÔ)d£Þuæ¹ Æ[¼xU²d6Þ"ÍûQ%G¨Déµ~½w©}Û¾/ ~ü±7ÙLRØàd`²Ÿ“\ ¾ ŒÔô¤¯ à!•*åV‡#ê_Ü3_>8™{î¢A©RÙ(fðçÎõ%SQŒÑhÇ‘æ,•"¾3Ø%Y²øêûïߢPÎR‚öïƒ=_ð a¤>Á'Ï@l%˜)Ò'.ZÔâko’úÛm_ZÈÂeH…€0ÒHõ8e15òSÞݳ¡±Qq¤Þ… ;êùó·T½z…Ô7ßø–\{–öèQ•$Àà;éÏ*nܘ´uÊ®Sµh1•öÖ Q{ë÷å(„w„‘†÷'$ó‹t a=œˆôÝ]à »©£‚°™Ý»Ï«7Þ¨H çWŸU Ý»WV§OßT[¶x·»Œ£yúRÉü‹/Úª2erPîáI´×=_ÈI_A  # (Ü2˜ ‚€19$RgŽD°“îÙsž$Ót”_5%y¼þæŒ`ZãÆ½¦ úV=yòO´¬îüÎ;õT·n•Uýú“Ô‘#Ž?.¬Wè ¾ ŒÔô¤¯ à%ƒÙ¸ñ8%¦¡ ‘Âê(¹|‰YÕo¿ý¡^¼øOõìY•œ…|ÏRT¶lU¹rÚud•—+ð_·víʪ ZñÎ1Þ&í÷ß섲 a¤a1‘AÀï¤H‘@AE\'»gȔԭ7LÇ…*8kÖ$¡]!æ—›ÛlÙrÊ´­'•Èà ¦½{/xÒ- m«WÏGöànªoßEêË/·dLDða¤Þ"'ýhܸh¨šÖ=õî9±W¯ªjÚ4ߥR0hÄ–¸„ö[|áãj¬ïþê«ÕªU}£=PºÄgÖ" FjˆBBðzõ^U[·žb;¥{Œô<ƒÍÀáÅëÌ®êî|j×. òæM§&N\çn—€¶Cbÿ•+û²Ô^¯Þ$Úhúv@Ç—ÁwFêJÒFðHH€^°#Œ+F oÖ}ûBT°Ñ£Gc‡+¤R,ëã›ÑÜ»ÔñãŽ3,ùaùn“Œ+ºúì³Väµ\A5l8™ð»ÝY @@i@–!G4jTT-_þÛÿ©ù.0è ›jÒ¤ñ) PHâ†6mʨíÛO[&ÚØ!fÀ€%žÍ?õmÚ”¦ý\ûSjÁýªU«œÐ?ãËX‚€#„‘:BFê P«VvöÁ6i)S&tªº„TºsçYžU¼x±¼[gÌØbÉ,[¶,©°ghxwìÉœ99«záu\µê§œÌß‘·³%ÀAÀ „‘º’4ü…²úÀCuÕªC.Õ»`Hò®—Î+Òvdû-Ëõ)ÔÅŽöGÕÇ ö»âôéSwY³æˆª]{{4{^2~ÔE@iÔ}ö²òp‚€î½ëÊNZ¶lvb¤!ž»˜:T² ¡döÛ,YIºtIh[³¦ªW¯¯#DÎÛ9R©eËzqÊÃöí¿âP™«WX‚…üÛ’™5n\„DŒqö mÒ¤(å.F±¸ÉhãôñêÃWr¢ K"‚€#u$i"ø¤ì«[·o¼ýûïÎÓâ•)©ô¥zÌ·~ýWÉVºÙ²)ŽÓ‚5 4'¢ì"3hPmÕ¬Y<òðý\%Nœ_½òÊ+ò#¸ü(Uª”ÏæÂH}†P¾#© {”&H‡÷'uDÑèp¤·éÛ·†š?ÿWe•TаœÉ“_Wýû/Ý€\+¼Ïž=JvÞ7Ô_ääþš¦ÉQ0pø7pöìYuçΟÿ¬…‘ú ¡|GŽD·oÿ©²dIáT½‹v»w¿´“bdH¥¶[$¶—"ÎFê¹+¨![¶,EN>Ïœ2ÒÔ©q˜ ’Ü‹ÕR)hc'–³go‘CÏ~ãPr.v#µD.`!ЪUIuêÔ uàÀN§iQ'ÕúC*…ívúôvjäÈêÂßÕ_ú\å(D6„‘F¶'*뉰d̘LåÉ“–·Ls¶3;)ÚûC*Å|† «Oéù樿ÿ–¤ñΞ‹~oóæÍ¤Y°nŸWØðæÎK`?Ó3°Æ;[Ÿ«;GØ™×®]«nݺåNsnóøñcµi“ùÆ OŸ>åµLœ8Q-]ºT]»æ~jÊK—.©cÇŽ¹=@5F(¤eAÀ ­/®óç'g7³“‚4¤R$·:;QëÖ¥vb:ô;7V MÚ·oo‰ œ9s&Ùª3³Y±b…*T¨ºyóf@AƇAݺuÕøñã]ŽÛ£GÊÔµ—RW^¦¤}´¿xñ¢*S¦ yVFŽl(KÕJU¶lYf¨aÿ¿âСCªsçÎ|uþüyúÐômc{GãøR/ŒÔô¤¯ `1`„ØÀ{Û6Ç¡'ºÔlÿRH¥_½SýùçSKg6vlsδhÑnKéƒØ€Ô›o¾©rä@šÁªjܸq*cÆŒüB¿}û63;vðÔvîÜII/¨»wïª-ZPÇ”ªN:êÞ½{«úŒ$õ7TºtéT—.]T‘"El–¦ÒµkW•9sfU²dIuæÌ¾_¼xqÕ½{w•:ujÕ¼ysò0þ‹ëkÕªE6é³´/íiž*—,Y¢š4i¢Þ}÷]R³O'äi Ìåûï¿W¹sçV9sæT_}õ×]¹rEU©R…çùú믫çÏŸ3Cûå—_øþêÕ«Õ!C˜ÑÕ¯__½öÚkwû!y|?$}K•&M §ªo#}Λ7r1¿§-ZD¹˜ÿc:`’ö4çÏŸ¯,XÀk>  ì°ÎÞ½{s¿wÞy‡ç‡¾#Gޤ=g¿¡¿×¯?HñfØ´iÓF-^¼X1‚òn“Wû%ƾ[·n*yòä*þüôÿ²éãÙbnÙ²e£]òŒé #eøå— >@ÊÀÒ«+:¤ÒíÛC^ÌÆ†Ø q¥Vo‹'NLÊ Ô‰vŠYnw‰1âàìüêÕ«ü‚]¶l}püI;ß,dÕe̘1YBÊ“'¥^üIàˆk0‰ P⌓”Q*¥'ü‘û@ZÚ°a×áž±€)B‚Úµk—ªP¡…MæÛ‡¦ ’ªƒ2cX³f ×—.]ZÅŸÀxQúõëGžÓƒ˜Á >œâÁ Á¨AóÓO?eæˆñ§L™B?Æ€*vùòå ÌëDsÃúÿý÷_¦Š| €ãÃêXÌ¡oß¾ÜþÑ£G´ùüzr<{‡™¤S3š`ÄÅŠ£¿½‰¼>´©Q£ý-¯`Õô°ÿ ”˜Õ™†þ«\¹r´×ìSffØ`} d æ†´ Ì÷íÛ§¶lÙ¢Z·nÍ ‡µíÙ³‡ïc._~ù¥>Œ_ÂHý ¯À`!-CÚ×UÞøÀ€DŠç¦ˆ"Œ4(Ë‚€´hQ‚^6Ïé‹û¢Ã^åËçdÏ]³O’'O@/úŠjìØIÇ!/n4hP˜Tsy8YƒÝÃM¼hQ¢E‹Fi“ÙÌ /~8õÀ~‡#¤ÃF1c‚T‰ R,^Ò`B(`"f%I’$\ jI½ëuiQ¿§_¼xÁ*O0¶·ß~›™ç°aÃXÅ‹±Áx aâR˜Êü¡%JÄ$ÀÈÀ„Œ*W½@-=zt¾=ØæA ýû÷ïÏõP낎Î@!¡ëªhŽ‘¦^‡#0 JŒ1˜>*>@ŒjY0IKw°S†f@/`кÚš}L½?ÂHý‰®Ð¼@ A‚ØœSwæÌ-{#ç.¼|6ÿâîÑ£ ïWzì˜û‘³»1bDcb"÷HÕ»ÝîNä¸DLo³fÍØ®i×P¯ÂuöìÙ,AZ»vm–±j{æ #¡«B¡Þ„êS/¨£„z6>ØeŸrg=7/¦µ ¤Hz(H¡2„úöD8Á›6=¨…?øà–¸¸1ý-„wäÊ•‹=^u»#$§2ãºpá3B´…g¬îl'8 à ÒÜîÝ»ÕèÑ£UªT©¼ƒ¡V†ä)’4$Wxú¢=ì‰p&êÔ©KÐlaCÔ‹>G\c=pl…O¯^½ØqëÖ¥J´Ãš!;¢ »$¸™”Šñð1Õ3Têp‚#Æ;v,ȳTi ðƒ ë¥iÓ¦lÆšðQ³b\£Ù}ËêHœ—"á ™3·j¥K¤‘®Ã™mØpLkÑbšÃûÏŸ¿ÐÊ–­‘°Ã6¾Üøí·?´ÞÓÈ{Ø2–ö%Ƨ‘'¨Ï4ÉÞ¨‘ Õ†I¤Ih1B›zbNî‘zצžTÀI€©M5R=†Þ#•£Fª^uh«´½ÿ~˜f¨#un˜z²;ÚÔa|’fmêÌ.ÈÖ¨‘êÖìV˜:G4Íæiß™$l¤RÆÍxÏ6À‹l«Æ¦|\Hª Sïn}¸h¤æw·¹£vSE"µì“D Ö!P¸pF²ñDWóæ…„a˜QFbbf÷=y3Ö§=F­—J1Ÿ"E2QCc’ŒfY¶¹¸Ù:]õm»vÈè4ÒfhØñRa/åÀ±GWKÚtøÿlö÷¡ž…ÔènA[Ývhìƒ:H¤öÅÞî‹ñaëtU Æ×U3¾ïˆ¦Ù<í ¦ •¶ÑHoc† ¤âرcëMBÀE·‰†VáDi@—!W`“oxÝÂéhïÞ ¦Í¡¾ÍŸ?9%™ßG'lÏ+V ²q0¥ákeÓ¦Åȳ´0y§Î%ÌC_i»?ÔºMǬ»Œ;Æ‚ðšŠ+«øüúõëak˜FVè^Æv m¬‹Z„`ˆe# Ê2† à!ˆÛÌš5%mT]À©TZ®\NÚÔ:l<©q¸÷ßoD6¨ÕäŒòÂXmÙ9’Û'L‡R ~oÍ`‚ת7RŽÑ‹ó×Ã6ì×bßÎþ¾7×`þ¾85éÙƒ|¡ãk_`ãëœÜé/ŒÔ”¤  ÞM›6y%ž ǑǦ3¨PÁ±Ã‘Þ¡dɬ‘Š}|,š°“ 6Ç ðêu7ÆÔ8·¨pþ R5D……ʈˆÀêÕ‡Õ²eû9%߸q?SRñ¿(í_Ó0K]*^lÂíªœ;w›˜&“SÐPòò Iðíª·÷G^Ev¶sêÛo{ÒK8$¹·´ÜéÏU짉cd.PÇ")»±àUŽ­Ë 1™"T¹p*²éAÚ=cby#-œ›aß&¢_Hè8úP¦‰DêzÒUð7p8Bö"”ŽËQâðßÈFÖC·R¥‹ü>žýZåZð7ÂHý°Ð|DÀ¨ÞÍ‘#åg"oË}a¨Vª”Ûmõ.:Ã!ûšNº) -«+ÀL,èB[_ý©„™Z®Ð 6ÂHƒýd|AÀHûíbh«^½ªªéÓÃ2?Oì¤:±qãZ­Íp[¯òÛê]0ÓÛ·ù™*THµiÓ†í„`Þò#8ûÀn7zL­/øâµë zÒWÿý/Å“W'OŽ!OÍoߺu'Rv›l3Õ§ðÏ?Ïi7˜÷H½;’U·z½«ãœ9Û){Í!rdêíª©%÷1ÏfÑ ,úüó6d~źBDâµ$àeXAÀmÇ6K–êøñ«¡} •"¯­±@â+Q"‹Ú±Ãùn0Æ>8ïÔ©„ß`¦sçvVGŽ\æÁ¡ò•"DD„‘Fħ&sŽr-š‰b>mó«¶lY’¶Âº`ã(”7oZ…-Õ®\¹ï1FP#7î?𸯷tÉá8-[N§ÌM{KJú AC@iР—÷È•+ Ûïß™·Iè±ÅÚŒ[lU«–WmÞ|¦΋èÑ£Ñþ“­Õ,g•«;}¬hƒ­à¦Li£ ¾nÔè󀩗­˜»Ð€€0Rù;"PïîÝ{Þf¶ØctÕªC6̧jÕ¼jýúã6íܽ@|Hºï¾û½»],k÷þû )GniÕ°ádÓäü– $„‹Fj1 BNððÈÅF߯’4i<Š›,CÛlm ­†‰â½µ9RWa§™%Kö†Ò ÔI×®•Ô°aõ)YÄNs85@IDATaÖ¨9È8‚€§#õ1i/ âųòÆÜöÃ÷èQ…RðíçD¸—(QU @zµk×Yû¦n]CÕ:}z{Úef%í{y×­>V6jÒ¤(«z;ušMù€OYIZh ~A@©_`¢‚€õ ÃÑï¿_¡ý(móì"Í_«V¥(ÕßK©´Zµ|´Ñ³wê]̼ [ýú“|^Ï‚€ ÂHM@‘*A ¼";©#Å|ûô©ÎLIáQ ÞݸÑ{õ.h$Ož€²µR½z-Tÿƒª€ÄšNœØZµo_–=zgÏÞð9È€‚€3„‘:CGî á 3Ï]}ŠJ[·.­&O^ÏUV¨wA ¹zõ|¼w©>V0ŽíÚ•U«W÷W+WTÍšMU×®=Æ4dLA ÂHÃ@"‚@øE }ú¤¼[ÊåË÷L'ùÖ[ÕØ¦&S±b.!Áî1¾Äx"•ßòå}%åSÿÌ™“Óz«5òÑÎ7ø£Á~“sŸ΂€#õ4é"GvRÌ ¼:”£ E¿(8'/žEmÛvÚçé"‹Ò´iíÕðá?ÝN’g¸ŠZ³¦¿:zôªªPácJ@qÌç5 AÀ[„‘z‹œô‚„€3;)¦Ô£GUµvíï R«Uê]ÐÍŸ?zï½´íÚlõ×_¾K¹ éKɘ1™ú꫎lÃ3f5'qصëœ/$¥¯ àÂH½‚M: ÁC dIÇG˜2téRI}üñ*KŽŒ+EúÀR¥²q|§±>˜çåÊ夘ÙAªmÛ2êí·—’÷òÔ $’&2vpˆÜáetA@ðd-ºxñŽzòä…]SÌ i¹r£ÙÓ6nܘêĉë ;ÃXQFjÆÉå‘()ý‚U²fÍJ8\´þ•W¢‘J;úå—…´ În›{r!x‚À½{÷(Ž:©[]„‘º“4ÂØ¥åÕW3±#2™0Ïj©Ñ£"Ûüjݺß-c¤±bEW³fuRuê|FóÈȪÙü]÷øñcÚÜü–J™2¥¿‡úQ lÙ²©û÷ï»ÍHEµÅþ@d¹‘¨wíØÛ¯ ;©À{7uê„$¡Y댓>}J”ß–6_@ÌìOû¡åZˆR#R[Y(U*»Ú¹ÓyRúhÑ^áT°Q÷… ·C“Ú[…Âk:v,GêÝùAÉÇkÕ:„Ž à+ÂH}EPú A@éá×Â$°·ŸJ:9 &gÎT–K¥«oß*qâ¸êÃWÚ-ׂ@”A@i”yÔ²ÐÈ„@¼x±h‡–4êàÁK.—õá‡MhÑÛsÄe[o|þyfÒÁNÖàÍÜ}éó÷ßSŒî6_H„é{úôi5cÆ ÚÀ}¯úï¿ÿÂÜwVqòäI úŠ6/XJŽhOB›þüóÏ”w9páJk×®¥¿µŸÐf/SKnܸÑá\víÚE;MUsæÌ¡øà£¡ówu‚µZý\i_©="r-D†²gÏy—³-\8e9Ê©vì8£ž>}æ²½§ ‘.\Ø•“5D¥8Îk×®©Î;{ —ÃöíÛ·§8Ý÷ØÉeÒ¤IªJ•*JÓ4‡í{ôèÁ  &L˜ š4i¢Ž;FÚ'TݺuÕ¼yó¸o‡ÔŸú׎mœ Æþå—_˜¹ 6L*Tˆ6šñ ^µjý >åy鿞={F1ÀMÕ[o½EaK(0_\8PobzÔÇÄÚ0^P =()‚€  ¤ Úë¯éÖ̯^½¯eÌ8P£\ÜjïM#²Ùj ¼§={Ë›î÷I‘"…F^»Nû•+WN£®–>}z­k×®Z÷îݵT©RiÄ\´7nh ÔH¢a'NÔFŽ©‘4¨U¬XQ#o`­wïÞ|ïÊ•+Z¥J•´,Y²h;vdZgÏžÕräÈÁ÷‹+¦uëÖi7kÖŒi:tHkÔ¨‘V£F -uêÔÚ|ÀmO:¥Õ©S‡Ï—,Y¢³Ñþúë/-^¼x1®Ç¯Y³fiĬ5’L5b°Z† 4ŒC’›FL’Ûg̘QÛ³g– AíæÍ›¡})tC=z4_cĤµ4iÒhÕªUÓúˆÒ,v i¢³‚º½ÈÕ¦M›(cÔeué’­JýðáÃ*qðàArêºMé ×ðX+W®¤szq¿iÓ¦q¸NüøñUÉ’%yyÄÈh˻ч±ì(ŒÔ2(… X°é6’ØÿþûU·5ª)1ûôâºìV{oµhQ‚ÔrÅÈ›wV¸Ùˆ*@’dIt̬òå˧rçÎM¡Aט ^ìxa“ôH›§gWãǧäøËù'W®\übîÛ·¯BGê\Üc$é‡)ðC_’JÆ$)OÁ^IR‘1bà ÆÐ®];>ǘ`vÅ‹g;),˜=˜1Ižê×_¥¬U‰hóö»Š¤O+V,rôJÌøXpVzöìÉs(_¾<€Iƒ¡,Z´ˆö{]Á ýÁtǧHBd06˜:Ö†u»š úÛÌÑ£G·¹Õ§OÚ¯¡"é8Œº õ5âüÍ7ßdlÑ)qâÄ ]¿>&>` £ÿþÌdñafÒ AþÖø²º#µQ¡'Ò¥a'u/¿l¶l)é%žDõîý[R¬·Ë<¸1­dª_¿EÞ’°´¤5”hÑ¢QRÿd6´IuI[³­ffŠ—-^úcÆŒaÉfË–-,-â北/˜JìØ±mhèI’$áS8öè6I½7P—½Y!u/KÂ`¬£FR¸.P 3:Œ &ôðáCþyÿý÷U„ CÉz™œÉÎ(R?‡ÖaΤNuìAHàNñ‘€R¡’ý¼bh?œè’-> Å“ œ’zT';øBÆÁÙ\lýÿR᫯¾æ–>>\ A p‚‹ GgbýÆLDpÖ“Fd¢¯Ÿ/,ü%ŒÔB0…” hOêŽÃ‘>/$ixòä)½ ÷èU~9Nšôºº~ý¡;vµ_è[E4gΜœ ÌŒR)~ ©AåP¨[ÁXQtU0_~Ae õ%3Ùéø˜²/ îØ±ƒò7g)ç(xùÃA(K–,,…B:£ƒC˜˜?$Ù˜1c*²+ªV­Z1sÓ)Ô¤®!qúé§Üs€ÓRëÖ­ùÀ²ûçHÎPá^¸`n4hÏ•lŠLjmWs1ƒu@m‹¹´iÓÆxËæR"Ù#ÙÛ7ÐêõÂ… SÖ¬RÜØ¢à™@­«¬_/hœ¡Š†„Ç&<Ç@a¤@YÆü„$ÒݻݓH1…ºu ñ‹ê“OÖÐKǹ:З)#àܹPRK–ìõ…”ßúê*A0P¨PkÕªÅcÁ OSØ+¡þ…7,ÔÃä,ÄR"Ô³zÑi@ú}ª_0¦~ýúqH¸°‡B"$#•9sf¶¹BúEùöÛo™Ñ@Ê>|8i z3 0GØdáÉ &Žq ¹a^P±¢=ì¹°åBÕ;wî\öx…šŸ÷—"Ò¥G‘'ã ·W@ÉìÉëty‹~ïvoƒ·P¡áäzÊ[û¹ãµë°³áI£1>CưŠaSOWxÑ’³{±o’ÊP# R#'¤Ðj’:5²Ij$ÙxÔ†6pp¯^н sžÃð¤5r2^ò}£÷®ÍM» úxõz~ôè‘FR°] MC’ªmÕ)ÏkÄÐ'ÄFëå4¥› àa¤.!’‚@Ä@ lÙœ”ØüŒÛ“Eü)m¯FùSC2à Þ€vF9é ·sаmÛ2¤æ-O‰î¿ œ®´’jA |# Œ4|?™ à6åÊyf'…z·~ýW9‰?6yñ¾¦ XB¹J_æ0u{^6ìÝ»¥Â+ÇHÈÏ+Eˆh#hOLæ+8@ |ù\´g£ûywA¦aÃ"¡ê]\W®œG•)“#àÉæ»v­D[œU&fú9å‰u_=9K‚€0Ò`?_°l‘;v ÚRë¦Û¡Þ…÷®Ñ¶úá‡M˜¹z¢&v{@' †Ó¿-–LuoU'ää– 0„‘ jHð?*äRÛ·Ÿv{ ¨w6,LÛSýÚ'Q¢8jâÄÖ´ƒÉâ€yñꃷjU’¤á´;É vµÑûËQÂHƒºŒ)ø òåsÒ¾—î;a¥žÚÌ)ýàÅûÞ{?ØÔâ¢víjæÌŽ”¸a^Àb[±.#ò" Œ4ò>[YYD)T²žìEQ¬Xfν{êÔ Ćo¨öí» ~þù¨M} .ʔɮ/îN{|.UsælÄ2† à5ÂH½†N: ádÉâ«ô铪#G®x4¹FŠTúR½‹ÎHh?eJ[5lØ2uïÞèYѸ@ô¤rî­.Ü¥þNý÷ŸlTe®BÃz„‘Z©P‚Š€§vRL¶I“bÄ´lÕ»¨‡´Ú¦MÞ ×.™2%'ǧ~œ°¡U«êÎÇž‚Œ'¸D@©Kˆ¤ ±#õ$ï.V—?:NøÛo„Ylÿþ5iÿÍÕ—_n s/ñâÅ¢­Þ:«âų¨êÕÇ©bXCpa¤nC% ˆì‹{÷^PÿüóÜ£ 7kV\}ÿý0}zpÚ´vê‹/6ªß÷Le†˜ƒ×Q_}ÕQ½óÎ÷ô³Lýûï ¨IWAÀ:„‘Z‡¥PÂÈPûâž=îoö‰7mZŒ²T/^üf°»ŽÓœ’&, ¬Gÿ†¹¨Š%²’'ï`õøñ?ªR¥±œÒ0PcË8‚€#„‘:BFêŒÂW¶m;åÑ 2dHª²fMAýÌãP‘NÉíß}7ð!1Æ…$H›œ ÚPÂûžóæ›s%é½ 98ÂH¹ (øŠs{ÌH1+¨wüÑÖ{×8Û?n¦¼¤-Úm¬Ê9lÁ›7aé»Zµq$1¯Vþ”¹È Qa¤QûùËê#)E‹fæM»= [AîÝ_~9Êq¥fÐĉSÍžÝI½J8qݬI@ëbÅŠN˜jªuëªû÷Ÿ¨òå?VŸ¾! sÁW(p[‚³äï@ˆ„tê4›òÖ¥ÌEE§h€9Wª”›’Ì/qÚÎ×›÷îÝSçÏŸçLMøæwõóìÙ=J±š’7¼pÙÖ-¹ï行QÊ”)Icc› D©¯ÿéÒ_§ÀNºiÓ gW½z>uêÔuÞôÛYgìsåÊ= IÙ꬙Ü"=ÂH#ý#–FUà3ftuú´m]WxĈÙ/[¶ßiSО5«“š:u“W’¯SârSˆ@#@K¦*xŠÔ»[¶xƒ1Z¶,áR½‹véÒ%¡ŒGTÏž_“tzUR(‡€0Ò(÷ÈeÁQ *UòPˆˆçêÝB…2ªX±b¸•Ô±¥}ûÖPpnzúôY¤ƒwóæÍ”%êËÖuúôi5cÆ Ê>µ—l¹ž9D_²d‰6lØ0í¯¿þÒâÅ‹§3àzüš5k–víÚ5$S,…qHÓˆIrûŒ3j{öìÑ$H Ý¼y3´/y4k£Gæk¬ƒ˜´–&M­ZµjÚƒ´çÏŸk]ºtÑÒ¥K§•.]ZÛ¶m·2dˆ6`À-kÖ¬Úõë×µæÍ›k)R¤Ðj×®­Ý½{×å\.\¸€I­V­ZÚ7ß|Ã4×­[§•/_žÏ7nÜÈãáy/”Å‹k­[·ÖŠ/®åÏŸ_›2eŠ–7o^-{öìÚŽ;¸ IŽZ™2ex¾x&ÄD5’ܵ¢E‹òœ¸ýÂÚ’&Mªíܹ“Ÿ5Ö˜)S&˜§FÒ¾Ö³gOžÖóí·ßj£Fâ®$Ñ2¾Àã£`^o¼ñ?[ÌwöìÙ\ïì°6>j;U$Rg_rOˆT©’WmÝê¹{›B¢]¾<ìöjf°ÄŽCÍŸÿ&K±?ýtȬ‰_êΜ9Cùÿ¦ŒL?ª¯¿þšòð>&uöf¾ÆyŒ1Ô† !I.\H[ÃS}ô‘‚DE Jmß¾²N³ÄG/dòtÞ¤._¾¬ 4–Ç+zSf§ƒêöíÛjÍš5<ÖÊ•+i›¹^ÜoÚ´i¬òDŒaÉ’!q¸ôâVyòä¡ý]ãR®âîŠ˜š¢—¼úì³ÏTýúõUÚ´iYÒúî»ïÔO?ýDÙ¥šñO‹-x®ÄüɃúªÊ–-›¢„Ð)a.Ä ùú•W^aÉ–˜K»P½‚Ô â:wî¬è‚Û‚Ö?üÀñ¢E‹1h•11SÆ íÍíP>ÿüsEL™Âîñµþ‹˜4ãqäÈÆ–%Ï 8A /[¶¬zûí·YE ijn”Áƒ³¤»|ùrÊʵÌæ¹Ó‡Âúô’8qbU¤H^ÛÙ³gYê„ê·B… ¤™¬ÆŽ«¢E‹¦,XÀšn&LÈŒzÁ³Ås )š?R06>6P4hÀ;xF`ºÞa¤Þ &}„v‚yôè)§ ôtÚðú½víI,î§Ì›7­š8±5;¡o ^¼(D’%Kf3$©.ÕêÕ«™™â¥ æ4fÌf[¶laiñâÅ‹ü3C‰;¶ ý"I’$| ÇÝ&©×áê!­šR÷²$Œ:©)V÷å .ÀŒ/ðèÑ£S®à‡üóþûï3CÐéäÈ‘CAò&³^¥0gR'‡:¡ ˜.©ù#¤ U`bÆ¢K¶ø€O*pÚ뵺‚Äîj.F:°÷âÃR< ÆÅ‡ $^`™3gÎÐæÎž0ƒ= À7fF&h,h{üøq~n¨×ñw†=´ º$>pò“FDŽ¢ãÆþFê!`Ò\ˆˆT«–׫ ±±iëÖ¥é»Ë£e#©C÷îUH}:‹7÷¨³Åñ2G60O0¼ìñI ªC¨¡ncEÑUÁ|aø•1œXÀ˜ÉÖÇwðR‡Ô5&7¤Lœ£€ùÁs”l¯,…Bå †I /0H²1cÆdUi«V­˜¹A²Bƒt ‰ûÓO?徘˜ÙùÀÚýúå—_XrþðÃÙ5¹Ÿ]vÂ\¡F=0DWs1Ò€ )[W‰’Í•™¤`²+²!›Žk¤óÌ™3óÁÌßyç–È1gH‰çÎc/e´nPË.\˜v"*…*VããˆgÙ²eKœrnz$Šg‡<xã¹[U„‘Z…¤ÐÂ1Õªå#Fz«B½ûÃ<öüíÚµÙ³33}ö,8›pëjH0P0 ¼PQ`‡,T¨Û+¡Z„7,ÔÃä,ÄR"Ô³Æ:b Æ„ê/ù~ýúqH¸°‡B"óS€ÍÒ/ 9¼0“‚”;|øpEŽ4LÌ6Yxò‚‰c ¨œ1/¨XÑö\Ør¡ê;w.{®B Mž<9K¤°QšÐ“ƒ„=jm09¨mQt\ ‘bÝ`J«!g-—sD¨÷­×^{MU­Z§¬bÅZÈAˆò5×d5î¸qãøž£_:-`ZÀ*PrÖâ9bÝÐ6€ êëM„AÍ †õ4 pƒW³^ v¯\¹2K±ääÄ÷t©\oƒ£>c[çÄ᥂@$G€T»ZŽC4Ú”Û«•¶oÿ•¶té^û•’à“'åû¢Iq.½vÝ!LÒ¨FŒÏ¦)4’–¹é£G4’‚ÃtC’ªmt<ÁÎØÏÕ¹íl]µ–û‚€ a¨Q#ÙÀ¼Sï"„ ê¿æñú±g(Âb6l8F™i¶{Üß×PÂŽiÏ4Ñ…ý *EcjTgz=T¢°yJ Ë–- ãHŒ™# ê2¦ ªVÍK›v{—. NGíÛ—Sóæ…8Ðx:ýĉãªÅ‹»“³Íf·røzJßY{ØÖì ³ö¸Éa'ÆbôúÔë!ùØKŒú=9ú<#<«`a¤Á~2¾  råJCê;Eaží£O¯M›ÒääqˆCiô:OŽHp¿tiOõñÇ«(†ïwOºJ[A \##\ÏN&'–"P³f–JsçNã1ÝäÉPÈ@^b†{)Þ6.Ñ]bØÚmÑ¢n¦0]Å›Ôr¹œv…—¦è´¡ÜˆìÊÆ"© 9"95jä§ >îïžaGÇŽåÉÞù«}µG×ùò¥#çŸÎ”FîkµÿE§}‘®Ž¼%åG0WÂHþÛÊMA r#P¦LvVíÞ»÷Ä«…–(‘UÅ‹˫ܽÆ‹ÏBÛbµ£xÉ9êÈïÒ²éɹ LD" &ú2¶ `bÆŒNêÔÜ^e9Ò§ µîÌ™[ôK¯PëNžüºjÓff@óòz=aé(8@@©`¤Zˆ¬Ô¬™ßë$öÀ¤qã¢$E^¡Ôm·}†¹|ÁLÛ¶Iû¦^𙞂€0Ò` .c ADé·l9Iy^½KÛ©¶Ò¯¾ÚjÉ*–3iRkÚAåsJÿvΚBD$ÂH‰¶Œ%„°Ïhþüé)©úi¯gÓ±c9 …9èu(ŒýÀ`î›7QM›~AÛh‰dj\‡o„‘†ïç#³ü‚@íÚißLïc9 S«Vò¾õ.AƒÙ¢’³hQwÚ±d¶ÚµK$S3Œ¤.|" Œ4|>™• àWj×.@ŒÔû0L®G*œòÏ[±Ù+WÎM;–¼A»Ì# õ¤Y©ÂÂHÃÝ#‘ þG S¦ä´ÑquàÀ^†LIØ4üûï÷{Mìc©RÙh?Î.ªOŸo(æÕ»”†ft¥NðÂHý…¬ÐÂ9PÍ®[ç½zËëÙ³*çϵz©… g¢œ¼=ÕàÁß© vZM^è –" ŒÔR8…˜ q¨S§1RßÔ»eËæ  ±} §q„XÞ¼iÕ?¾¥fÍÚJn/wÔLê # Œ4è@& B…2¨'OþQgÎÜôi½{WS'þâ G³dI¡V¯î¯Nž¼Nù}çò|µ•zA X# ò2® ¨_ÿUµjÕaŸfR·n! ƒù›ÂiÎøDÇQç„ ãp¢ûdÉ4œdAr”Ô a¤Aƒ^‚@ݺ¯’Äç#Å*úö­AIü#•‚~ôèÑÔ§Ÿ¶ o#΂4mÚ&TKÂÂHÃÅcIÁA D‰,êÖ­GêÒ¥»>M I“bDãžO^ÀîL N‚d×È[Á5o>U={ËnÒFð+ÂHý ¯Â7¯ÐNßPÍúªÞí–J?ûlߌ Âá„T¯Þ«”÷÷sõÉ'kÔóçÿù}\@p„€0RGÈH½ E¨W¯OYŽt˜Z¶,ÉŽK®öÕÛûrÄ@§NåÕ¦MƒÕ… wTåÊc-QQû2'éuFuŸ½¬\`ÂrþümuõꟉ#š0 Ù2×úDǓΩR%¢8Ööê㛫)S6ªÚµ?SÛ¶yŸCØ“±¥­  #ð í>¯ér¨‰ÀàÁߪlÙRªîÝ«øÀ‹ÿ©rå>æ­Ñ¡(ÐŽScÇ®QN£P™+^Æ‹`\»vM¥M›Ö×YO‰ÔW¥¿  hР0íærÈç•À»öí·k«qã'•' »éÖ­CÉfúXýóÏ? r‚üfEŠQׯ_7þùx}.ŒÔk褣 y(W.'{î^½zßçE5kVLݾýˆì—'|¦å 8>ý÷ßoºJAÀ+„‘z›t"`>æV¬8èóÂàôî» ÔèÑ«Xô™ Â9ÂHÃù’é B aCkÔ»˜oÍšùUüø±(Lå·@M_Æ‚†€0Ò A/ á xïÞ¸ñP]¾|Ï’‰ Þc<Ÿ={a ½ˆDäï¿ÿ&ïám–NùôéÓä¡{öL5mÚT½õÖ[ê?þ  XøÚYÓ×ñçŸR6+ÿ¥ t8qwo7“A@.j+ޱ ?þ¸£åÏÿ®vëÖŸ–Ñt‡P̘15òÚuÚ´\¹r½¨µôéÓk]»vÕºwﮥJ•JëСƒvãÆ ­`Á‚IBLcâĉÚÈ‘#5’ ŸŠZÊ”)µÞ½{ó½+W®h•*UÒ²dÉ¢uìØ‘i={VË‘#ß/V¬˜Ö­[7¦Ý¬Y3¦9kÖ,˜˜V¨P!î·råJn{êÔ)­N:|¾dÉmذaÚ_ý¥Å‹O#æÃõø…þĬµh¯½öš–:uj­^½zI†1InŸ1cFmÏž=Z‚ ¸^ï|ïÞ=môèÑ|™!C ó-nܸÚ| -[¶L+[¶,Ó4[/IÒZÑ¢E5’¤¹ ~aîI“&ÕvîÜÉë±ÇøŽ}ûöi7æ¾Û·o§¿©üÜ—¹FLZ[¼x±öÆohÏsöìÙ¡ã8:!¯]Lµs£~ªH¤î~qH;A P´hfõôé3’^®Y²ÚL™’«Ö­KSlçjKèYIäÌ™3 *ØüQ}ýõ×êñãÇ ªN\ãRÄh1(E/tu+$¾L™2‘—ò&R‹_&ïçK6Ó<|ø°"†A±­É›ù¶Z³f ©ÐoP6©Ÿióòo)Thœ"†É}âǯJ–,ÉçéÒ¥SyòäQĬ(¾·»*]º4%œ¨­>ûì3U¿~}Ž„ºÒÆFß¾}ûª–-[ò\‰ùS’«œMÑBèœ0}<½òâÅ‹,íšÑC¬“:«WïÞ½«Ö®]K‰7>%CA5hÐ ÍÖ ´Zµj Z½$NœX!*^3<Œë  –¦ÑR,$áõë×ósغu+Ï}ùòåjúôéjèСdRøD& Ga¤Y"M›S?üpÀ² cg˜M›NZÆœ-›‚ê°D‰Š$3fV$e©Ü¹s+¨f[´h¡~úé'fF$aª5j¨ìÙ³«ñãÇ+¼´ñ“+W.~¡ƒeÍš5TÕi?GÜc$©‰)îCÝŠ±š7oÎŒ ˜¤)5bÄî^¡BÕ®];>ǘ7nTÅ‹g;),˜=I²Š¤DþÀø$Ý©8qâ¨X±b)0*| àcÁÝbF}ÁÁ ræÌ©ªV­Ê  O’?3p{úöë}þü9} =µo¦`[Å\Qìñ¸uëVè:tŒ0}’Žùc?üð÷oР?K`橚š øðK©àIWA 2"Fº|¹uÞ¶ Ä& ¨I.KÚõ‚%¤5”hÑ¢©dÉ’ÙL nõêÕÌLñ’Æ ̘1,mÙ²…¥E¼ÔñÒ&5*÷;¶ ý"I’$|úï¿ÿ*ØûPô:œ£L¬º—%a0ÖQ£F)\(P€öh]Äc“êQ=|øP%J”ˆŒ‘©—)ÿñEêÛÐjÌ™TÁ…-Ò/ ì§`zr‡®È¹‰i€9Â& [r’Rä”ÄL”šT¯^½¸/ì¹°åž9wî\ö”…šõÍ7]-]l¯={~MvÅ!*aÂ8–ÒÖ‰Y!‘£4EŠÌ$uº®ŽÐ }£U/Hx:Æ‚6(ëˆlÅl½®Ö ö™–‘ö)E.Þ>zi3Þ/ç°åAÒô¤@B32Qôµg¢¨ŒLÔÑzQï¬Dt<ÄÙÈÙÓ•{‚@F¶Ñúõ_¥ÖÅ”êp"ïÖ­§(íÛ1½JŽ‚@„E@T»öÑÉÄÿ#{æÛo/åͲ­í·ßþP;ΦDƒ(Ì$¡¥äa/4K`é B,Â#‡¥´iÓúºŽi1|¥ ýA ò"€Äó/^ü§Àô>ÐÊz:”£´v‹(¹@7+I{”ÍÇÒ…X”D@T»Qò±Ë¢÷@®ÜÅ‹÷¸ßÁƒ–ýúÕ 0•§”p`³½¤© ¾F¾ž‡ÌFw¼öZ J“wˆ¤<ó,6¾L8zôhjæÌŽ”l|³Úµëœ/¤¤¯ 4„‘ zXˆÀ~Yºtvf¦þ˜qš4‰ÿ×Þ™ÀÝTu|%d&Q!2¤âm0BÆŠ$””’· …â-…·"•D¯ è/¤ IhPÒ€"Q”¡AB†óßßíÝ÷=®ó\÷yÜû8Ͻk}>ž{î>ûì½öoûÜßYk¯½¶9ìù*“õf’Ij°/m2úÑ6d! Dš,dµ]E …èØ±¶Iñ–÷.0Õ«WÙœœÒÀœŽò¤É#»'…Ó¡¤J¤é0Ë:FEàhÚ´ªÉ»ÉœK¹á[Êøñ^½Î7)ßJHïÞÏf\Iï(!D@‰4„“¢*)aC W®#¤S§:2iÒÿNI†Ž£F]!ë×ÿf»þ_ò÷dô£m*‰D@‰4‘hj[Š@ #ЩS]yå•ÍþÌÄ9ØrçÎeòÛv5§‚,‘qãæ¹býTB€i¨§G•Sƒ@©RE¥V­Šæ,Î%IUªxñ‚æÜʆHçÚœ¼IíLW€€i@Ô&tA sçsLûäÎ]ºt1“>°ŸLúiÒÝÉé2w:Îä! Dš}©ÜpÃÓ²sçîléW;QâE@‰4^¤´ž" XŠÍ/­ZÕ”gžIþZ©ƒ¼D‰B2eÊ‚E|ñÅËÆ[Ý-ýT;J¤‡} TE ç!@¢‰çËÞ½^¶)Ïù¨£G_)­[×4ƒ”™3õ,Ól_;Љ€iLxô¦" !P¥J)©P¡¤¼õÖÒ ÛI-ëÙ³±Y3½F šbÿíÚ¥)“ ¸6~P”H ‘VP ®»î<{jKнd—uVy™5ëÙ¼ùOiÒäY¼xu²»Ôö P"ͽ¡(±hÞ¼ªüúë_òÑG‡‡Ä Îgˆ¼³ ØJºwJn½õ¥Xêê=E iáIZëÚ°" ¤4O=õ¼ÿþ ?¾K¶séÒ¥R£F Ûo®\GIáÂçšCÂËž=f».Úaj!0iÒ$¹êª«âÔXµHã…Jë)ŠÀtèPË$MX%kÖl>à^² >ÿüs¹òÊ+[`ÏžòÛo³e÷î­ö;eúO1ÈÊÿÑ£GËÂ… 3õßW‰4SpieE@ð#?Cfum¹^+é„€i:ͶŽUHq*̦MêRM¼Úd@@‰4L’ª¨„Nki×îlyüñ9aVSuS’†€iÒ Õ†ôA GF&ÓÑÙºuGú ÚŒtݺu²lÙ²„yÇŽ&·ðTyî¹çŒ…¿)ÒîŒ3äï¿ÿŽ|OäÅòåËåÛo¿•ŸþÙì ~ËDbÿº_ósæÌ‘%K’{tÞ~þ÷ËîÝ»­>èÄ¿•+WU E™i(¦A•Pr6{Ö¢EuyòÉ÷sö@2©ýÛo¿-=ôP&Ÿ ®NðÔgœ!Ÿ|ò‰pÝ As”Ü;¶òÕW_-üñGðƒ‡X:yòdãšE>øà¹à‚ LöøH‹?ýô“4jÔHî½÷ÞHYv]0^ôY´h‘|øá‡2`À9ï¼óLdvø–”H³ë…ö£¤8½z51§Â¼/;vì ÍH_xá¹âŠ+äì³Ï–jÕª™ƒ£å´ÓN““N:ÉÇwÞ)>ø Õwûöív;ÍæÍ›¥_¿~R¦LûÝYcfÙ²eMˆ&Ò²eKùâ‹/"ãœ0a‚@vlÇ©P¡‚¼ñÆö^=äú믗O<ÑŠ^+bUÝvÛmòÒKûö½6oÞÜZ„¯½öšÕëî»ï–ûï¿_^}õUùý÷ßm;DŸ¢S©R¥lÿ”ïٳǶžuëÖ5Ûö½Ä4nÜXn¿ýv¹è¢‹läò¿ÿýo«÷Yg‰FÅÊÓO?]Þ{ï½È8*V¬(`æ)sòÕW_É9çœc±éÝ»·‰’ÞmëǘgÇŽku@WæÆDûƒ :`¶lÙbëÝu×]2dÈsœÞ#²`Áý›õ\xá…rÜqÇٹظq£­;qâD;¿àÍ$Hg{#”H¦6¥¤3+–”úõ+‹f^h`ÀMùúë¯Ë¨Q£,üë_ÿ2Æã¤mÛ¶òØcÉ™gži\ÒÏX}gÏž-yóæµ?¼Ó§O—/¿üÒ’ãÃ?l݃¶uo¼ñFÁý믿"ãܰaƒ9g†¼øâ‹òÀX뉛¸LW­Ze-ªúõëG¬×*UªHéÒ¥íóuêÔ‘‚ ZR„ÔÊ—//½zõ’ï¿ÿ^Ú·ooë¬2EGÆ„«²Æ­ŒÛµkWA?dÅŠ&IÆG–|¸R÷ÒK/µÿöîÝ+|çÎ-©A4NxÁÀ…ìܨX«—\r‰»m’^Üj­DÜÏóæÍ3/N¬>±0ƲD7,]°ÄºÅªüñÇÍASìÜð’=Å‹·ý²Ÿ¢ÆBç¥ã„N#FØÜÒ¼\<þøãv>À±>ûì³rÏ=÷ØçƒtŽ (AJ¤ R›Q‘¾}[Ø £mÛv†~€Ï=÷\iذ¡!úú‘kÜ–ü0÷ÝwöGàvíÚY«µÏ[n¹EN=õTyâ‰'äÝwßµÏáZlÓ¦T®\ù€ñA8§œrŠm¢øá‡lþóŸ–4±à hëH28þøã­XÉsëÖ­eèС¶zöìi­­zõêÙ¶±8±\YOÅšýå—_l]H2ÇM ÁaEã¶-R¤ˆI©¸ÙZ¥¬‡òR6-Z´ˆôÁ„‹UºfÍ[«áÅ ýÅ‹[K ‰…ñÌ™3-î`MÛŒ›LgÐ<Ø æÖ?Ö'dÊ ÌgŸ}&÷ÝwŸœþù2fÌû"ÁØóçÏoçœxyAÇX:»öñ©Dšµ E@°TªTÒÖ©ÖÅHœk2W®\⬧ÛQGe] è›o¾iIR›?¾}ôÑæüÓ¬õ¶víZKHþçܵû,V¬˜»´Vs7ºr,=W©è»6l˜µB»téb­ÈiÓ¦Y—¨«‚µˆäÎÛZ§X…X¬¸:!2¿{ì±ö+zyä‘ÖEŒ;øŽ;î°äà-ZÔ~º?¼L@¤X×~kÝwíÚ%¸Ài W1/H,Œy¡(Q¢„kÞœ´×º„)pz̓{íÔ©“àâ…t7V&î^žÃmðf¸¶q%SÎ CF:»öñ©Dšµ E@ˆ зoscÅÍ‘0Y¥å. ,ÖÛ*Uªdݬµ >ÜVVäÊš Ä€û4ZæÎkIâã?¶V!âÖ ±/»ì2[†K×&B»Û¶m³„‡uº~ýz[ŽKÔ‘-ˆúC Òµ×^k eõêÕ–\£ªXK.Ož<Ò¿¹üòËåé§Ÿ¶áÖ­[í/îb¿°vÊú+îS,H'¬;bq³FÌ,Ö-ýL°6Á€ñ`é“5k2Z¢ç!ú>Ö/¸±ÆeŠ5~óÍ7Û`$ÜÞxÀ—uW,p¬T^"²¢stßûžû`ô¾" (™A B…æÇ¶ª!ӹ懮YfÍÖºX0$I` kŸ?òX<ĉ oÍš5íøÎ;¥P¡B¶.\;ÄÉ'Ÿl·­˜äÊYg$p"Á͉J?}úô±kŽ ±iÓîXÈŒµ¿ ¡íŽ;ZrÄMZ®\9KÀ¸r×7c#膶Ó`ÕáÅ}L4.Ö-kµÔwÿxeÍ«î›o¾¡È K:t°×ùòå³ë¤Düf$´ ñ5lØÐbCèÎuzò|ô<¸{îez]|ñÅÖuËKDáÂ…¥jÕªö…‡9£]°àë•ë 3Ò7Ëå†ÉUE@H(ëÖýêU©2ÀÛ´ikBÛõ7fÂ3¹výEYº6V™g¬Qϸ#ÏóŒõã™}‘2.Œ{Ó–Õ®]Û3–UäžYËôLä©ï&ÏE¤ÜXoÞ¬Y³<ãbõ )GÊc]˜`"ÏX½±ªDXÏX^ö;ýFëë*’·º¹ï|—ðeþû]µg‚|<0ÊŒ€ãègƒæ!ºŽÿ;ãfüˆyòŒËØ^›/ÏXËöÚýÉŒÎ&ªØ3ë¬îÑx>Ǩk7˯ ú " d„@™2ÅŒ›­–ŒùvFUBQNà ‘»D½:+ Ű‚°tXƒó k}ÑeþûÇs7ƒž€0IDATÌ~Öª»G¤)nÆx„5U,Òx„ÀŸ’%KÚªXÉ鯶tó k£Ñeþû]ã*Æjv–bFõ¢Ëé˱ÿ~Fóà¯}͸?‚µê,X¬ïèµð¬êÝgFßÕµ›2Z®(‡„@Ÿ>MÍzܽҭ[C³rÿñCj8ãvdmÓ‘Q¼M³ÕÅïÞe­.H^~ùe)P @Ð-xÄzjÓ¦M­‹•J¬½BAQÁd¢`!ÆJíãÚuDt°f :Ö ÄJ†du’¡KVÚT‹4+¨é3Š€"pPŠ+`Ünd‚Bömù8臡ûF3K¢¨‰ÕÈú¢È2ˆ0±ú°†‚„ídî9rdä6AN.‘@¤0¬÷w´Äe­öÑGµQ·þ¤ÑÝ@žXêBp²$«ó,}2Û®ifÓúŠ€"7×]×À$Xmöô<º3îFS¨"L$†`/k´É‡ˆS¬5ˆéÛ·¯°/•­0ló`¿(n`² aqš=\C™ËdD[jHJÁ–Ø&¶©HGÈ6–fÍšÙ½¬$!l9yþùç…ïDç’‚­$ݺu³.a\ß$e@ØÛŠnX¬èÅ–œt%Òtšm«"ÍäË—Çü°·6ÿ¦nÏÈfuB×–-Ä9ù…­%”“ù÷ðÀMêÅvȨ̈Ÿ~j˰,‰¬%j«—ˆÝ LFl³akHô–"iÙNBòžeÏ,QÃìÁdëÛªW¯nS|o²,A¤&pÊfM"Å QÃè…à’f+ ÄŠî.á‚L©|­DšÊ³«cSB€@ëÖ5Í–‹¼f“ÿâh>Èr =õÔSå–a)ÛbÈMKê lÁ’eŸ*[QØ÷‰Û² Êd ²î û…d¸T‚‡ØV‚õK!Ö€[Ú¿ŽJf&¶@°äÇ%• íÐ>¹sY{Å"M¦Ø?†°\+‘†e&TE …:´­ 6ÍX?áI¸!!È’}¸g,BòϺ„ëìÙt+‹Ér#škÒ/±?qÙ—¸Ž•):KûlÉT„¸à+—yɦÉ%Ò4™h¦"p8¨V­ŒÙp_ݸ Ãxt8ñÁº$Ù€; ’#Ç-IÞ±±FYë<˜`Mâæõg2‚$IPO’·vùõ×_ ‰"ºwïn›„°!o,_,a² !¬‰ú…,E¤R$Yn`ò'+’×ßoد•HÃ>CªŸ"" p‘I®¾D–.M^ôgN†Šõ.'-[bXÛ„`IÕ‡+•À¢Œ«–d⓽”1Q·X£¤Óc'[XÊ›ÓeDb}w.YcÄD’xÒâî%еZ'œšáV0GÅQÄþÑât‰.OåïG¶!•¨cSð 0eÊ'&Jõ=³×Ïlèß—¢/«Ú‘7–m|¦¢à2…L‰Àu‰×9Á%á9ÜÁÑ °HYK…$ÝöòÒ²¾IúB˜üIè=¢=àB& ‚sçÆ£SN©Ã‰2Xè|Æ)cÕ")­¦(‡Ž@Û¶gšà‚æt˜y‡ÞXŠ·@æ —áwm¼$ ,A™Œ(ÇÍK@‘#QÊœ@¼~¥œ~£I”rôJEelY%Ò¬ ¦Ï(Š@–>¼ƒYû›eNQÙœå6ôÁÄ!@Ä/ÇÈ©d%Ò¬c§O*Š@ ]àM75“^½ž+€& ]è#™@ëÔµ›‰GµêP"Õÿ Š€"ítíZßlÓÈeZËöεCE Áh°Q‚ÕæE >ÌQk&òóA™:µ·‰2Ýw‚I|OtéR©Q£FfѺŠ@\ï˜óaã”±J¤q"¥ÕE ñLž¼ØDñÎ1)ån6Q¦ÁÉÝß«¶¨$ÚM(œÚ˜" d Î,­Zµ´ÜqÇÔL=§•0! k¤aš ÕEHCˆâ?…‰ý, G¯CN”HSau Š@F @¼òøãWË€¯ÈªUûrÍæàá¨êiˆ€iNºYÕ«Ÿ ƒ·1g`>aò½n›zª"%Ò˜ðèME@È.ÈzÔ²eus6çS&-f.Í.ܵŸCG@‰ôÐ1ÔE A ÔÊ$]2äµµ¨Í(ÉG@‰4ùkŠ€"'$²7®‹,Xð­9ökfœOi5Eàð" ûH/þÚ»"  °iÓŸÒªÕCvkÌøñ]jh‘"tih¦BQ%J2G­õ•éӗʳÏ.Œ”ë…"Fr‡Q)ÕIP¢EóËÂ…ƒ¤M›GìÙ¥;ÖVPP" DÊiQ¥EÊ•;F^}µ—´o?FvïÞcòŸž£À(¡C@ƒB7%ª" øàØ5Ètüøy&•ૺ5ÆŽ^‡%ÒPLƒ*¡(±(Sæh“Bð&Y¹ògc•>!Û·ÿ«ºÞS²%Òl…[;S¬"P¤H>xÔM*T()MšŒeË~ÌjSúœ"PtûKBáÔÆE ;˜6íséßÿ%éׯ…téR/;ºÔ>ŒÐóH3BFËE ܬ]»Å¦,V¬€<ðÀeR¦L±p+¬Ú¥*º4UgVÇ¥¤:eË7ë¦}äœsN’fÍFÈÿýßüT²Ž/¤¨k7¤£j)Š@|(P@víÊ'ÅŠ5“M›&Ç÷ÖR2@`ýúõrüñÇgp7°x¬î# ÄE E § °{÷nÙ¶mƒä͛רüBNQ[õ !ÿøÇ?$ D*µÂÉT•E@PrJ¤9g®TSE@P" DÂIQ•E@PrºFšsæJ5U"°}ûvù裤Aƒ‡¬Ý²eËL‚þ\rÚi§Ù¶>ÿüsû½zõêö;÷0'ŸW­Z5Ò×gŸ}&Çwœ”*U*RtA[?ýôÓ·¬a}Ùßæ•’Xðá‡ʧŸ~*ùóç—ZµjIµjÕâêmÛ¶mòÉ'Ÿ$÷¸:ŒQI-Òàè-E@P†äÔµk׃U‹ëþÛo¿-7ÝtS¤n§NL‰ÿÇzà 7ÈìÙ³#÷¹X¸p¡¬]»V ÔXz|óÍ72oÞ[öìÙc"­wIÛ¶måÆo”5kÖXRä{¿~ýböÞ£GY¼x±üñÇòÎ;ïĬ›m7=E@Pr0yòäñvîÜsçž{®g~€½2eÊx×_½×½{wïØcõ®¾újoÆ ž±ø÷úë¯ÛºË—/÷Z¶li¯_xáoÀ€Þ’%K¼B… y&Ù£¯SN9Å«T©’÷Ë/¿Ø1æË—Ï3V©×¨Q#ï¶Ûnó.¼ðBïÖ[oõf̘á+Ö3Vwçwz¿ýö›×¡CÏXª¶ÎÏ?ÿlûáÏ|`õp/¾ø¢7tèPï»ï¾ó7nìµiÓÆ+W®œwß}÷y矾g,]ïᇶÕ3jw̘1Þ 'œà•.]Ú{ä‘Gl]03/öúÍ7ß´zöìÙÓ3äæµhÑÂ{ì±Ç¼3Î8ÃÛ»w¯SÅê}ôÑG{ ,ð‚p›8q¢g¶;yeË–õŒÀêÊÃï¿ÿ¾g,jgÍË„gHÚ{þùç½k¯½ÖcN˜÷ &DúÉè¢fÍšž±Ž3ºQùµH³í•E;RÃ…ÀÊ•+M¢ûíæ™Wåé§Ÿ–?ÿüSÞ{ï=ûëܹsˬY³¬zÏ<óŒ˜_¹ûî»Å­,Z´H̵¬X±BFŽiŽv+'ï¾û®µøá‡ý†„ûÔü˜‹!DÙ¸q£9˜|º¢6‡”ÏCX&ÓbÓ>S°`AëÊä‹! 9õÔS¥FrÔQGYë’g ‘‰!7ÁRýøãÍ^ÙbÖ‹.¸“‡ "ßÿ½üúë¯2|øpÁ|Ë-·È¸qã¬Å‡žôÓ§OŸýôôÙ´i“‹y±ãjÖ¬™Üu×]rûí·KëÖ­eìØ±¶mž jËмx˜ÓyÆ‹!\¹÷Þ{-¾æEÀZ<÷ûï¿Ë?þ(Æ ³®êI“&Y ”ñáªvR´hQa .ì Ü.»ì2;7æeGØ?üõ×_ÛG±b±ÆgΜiçkîܹ“©S§Ê£>*æ¥Cî¿ÿ~×MÂ?•H©6¨(aD— nEc9‰±Hí:¤±øìºaûöíM–¤7ì½±0¥iÓ¦b,A1b„ðcÌ¿“O>ÙþPCJ*TÈÐÊ}ˆÑXC–HÁâ’K.új×®%ØXI–°¸_¿~}sªÍU–T Îùóç[òmÒ¤‰IÐßÄ^SÆ=ò”Eg¿ó2Ö¹%NcõÚ¤¼, «±ð"õb].\X®»î:iÞ¼¹%*0ƒXÝÚjP»úóŒ±ÂÅXÿòÖ[ovCûèÎËûwìØq@=c=ÿwOð¸ËÜÞc¬Ž€yaáeâæ›o¶$ËÜN™2Ŷ۪U+;ç`‹û;Y¢Dš,dµ]E@+V´úÌS¼xñýtƒà¦M›fÉ”_‚oŒkÓ®×Í™3ÇZ‹üXóclÜŠöY,Ç ÁjDþþûïˆEæÊ\9?þ d òϸp-yBVXYªãšv—|¢§ñCZK°H‘"–d¨P€µuFÆÅl‰Ù_-¨]^ J”(©f\µ–$#æbË–-þ¯öšÆåpùꫯ,ޔǃ–/ÄìÄß?c@x$K”H“…¬¶«(9Ê•+‹Y µä‰uŠ`•òïµ×^³.VsÌÚž@¬ˆsÛ/¾? Á4³‹„…ùÇ=‹«K—2V&|ùå—öw'}šuWK$.nbîÅx³vj-QÜÈ´¯E«íŒÚÅe̸xÁOè‰Õè\¯ÑX¡'V¢Y—•É“÷¥u„èp§›uJ©]»¶U%7n¸qrM}\ÇSá¾7ë±vÞ¸—]¢Dš]Hk?Š€"Jœ‹…Ü 7¥ ’:uêX×&îY\&˜ÇnÑ` Ó‰k²d½wêêÕ«#¸ ®a,ÊZ·$ëœX¿맃 ²×:V¯ßúäBÄbtâútßibB?P%&€É>c‚Ÿ„h_¿D?ë¿tíêµËV† Z+²J•*rÁÖ2ÑÆ¬7ƒë£NX¦cAG0eû^H÷±“ Üxžµkgå¢Û]fMŒð:lÞ¼Ùº£]îÓÁ}Oä§&­O$šÚ–" d;¸a!À}¹v³Þ=0¬ÏÈâ„59Öñü†µI9E=ôÐ~ë¬Qþõ×_6Pƹ€ï¹çÛÛZp;w£ë#‘ŸXj¹s;³ÞËZ,{4)AíB``ãw9óù¤ xŠ÷SO“Ög,­ª()Š{Y¯‹^³óÿ°»¡yä‘6ùD$¬/:õß?æ˜cü_“r ‘û+6ÔnÐøÀÊO¢èÂz¥#Q¾ƒÖtFÔ®íÔ=ÇËÖïáµHêÚ§" $ DX¤X¢¬Eòï`ýam±è„­$þÀÊ©ƒ°]#;%ÞŒG™Õ Ë·tݺu3ûh¦êܲj‘êi¦¦V++Š@*"À]fH °þü$JY4‰Rf7‰Ò¯ËxÄu"… (ö¯&[nY—iVPÓgE@H D§š¬?ûµØ»wïH <"€û÷ï/«V­“ ÉîK…üÝ3$g0—ì#Ï!;‘¨m8ì e—Àù[¯^=éÛ·¯uS³å†uGä•W^±{^ z"B°uæ5j”-óÿaï&I+ÒU”HÓuæuÜŠ€"pX ˆ‰À¶oáJ¿±Ê–Äe" †ha"ˆI:@† ¢ÊÂľWˆ”|´ìÍ$;>$zGpÏâ>e[îZ’(p²%ˆŠLI7ÛJL AYûòË/Û@+Û€ïkœlga[ÏĉmàïvÊ_*‘¦üëE là=ñÄ­õGt*Q«±Òøùõç9“»×fÂj$IBP&÷ Ä˶¶¦>Ð ÛAHGX›´©âRe °Dür: û@MN_K”A‰ñ±l±–IÈ–td\é"J¤é2Ó:NE@ $\ šõòË/·û‰\%nÏ$uü¯.cOP&×y†M²{û•5\¶›8qm¹v S‚·°€ùÇ)1kFÞ[ÁL¦¤ a $°à¶Û0Æt‘س—.(è8E@ÈFÈp4zôh›Õëñ%æ—X™üõ¸ÊÂäêà2&ÛŠk6i³þÊ9Ÿlbß+G¶áî%I ÿÉ>Äzm´°‹ÅÊ:,}(ždÿé"J¤é2Ó:NE@ ¸UI7Á‘¾­4¤õóKF™üu¸¦­ ,L®î\,Zþ6G—&+  þauâ6&[¤È~M2;ÀD¢ þ³–º~€!YÈ“äÿŒ-ºŽ¿~ª]ë>ÒT›Q"f$bi ÃòÃÅê— Ì@þûþë ,LÜgÝaß'Ǫ˜ärüÚˆà%ÐÉŸÑ ýl J6¤{@³¡/Êê>Òýg-ôÃTE@HM¢I”QeÊhôn 3ú>Ûd&" ‰m2L°D£³¡_‰ÒVîë#•î+‘¦ÒlêXE@ˆB€5RŽ:[¾|¹M¡—è¼»QÝ¥åW%Ò´œv´" ¤X¶¬{ª$ 6J®Úª" (Š@š  išL´SHUXŸsdž¥êu\Ù‡ÑÍ™%ÒÌ"¦õE T¸SBB¥”*“V¨k7­¦[«(Š€"h”H¨¶§(Š€"V(‘¦Õtë`E@PÀÿådÕ뀣êTIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1DBSelectionFailed__coll__graph.png000644 000765 000024 00000020214 14042362133 030343 0ustar00tangentstaff000000 000000 ‰PNG  IHDR›”„7[YsRGB®Îé FIDATxí]|TEB ¡÷Jhb¡÷Ž(H‘&ˆ èG¯‚ MAé( (" ¨tE¥IïE¤#= Òƒ¡î7ÿÁw¼Ü½K.—\®dç÷»{ûöm™™}e&™b š‰@ DèCw¡) Ð̦!Ñ( ™-ÑH­; 6“àÚµk´gÏs–N»H*UªPÊ”)],m]l×®]tãÆ ë‹>’ûÔSOQŽ9ÜÂ&³]½z•òçÏ/?·ZK¢•vïÞM·oߎ7³Ý»w*UªD¡¡¡>IÉóçÏÓõë×Ýf6­F}rZ)Íl9¯>9*Íl>9-‰”G™íï¿ÿ¦­[·úå"##iÆ >…“§Y³f ݹsÇSÍǹÝa¶½{÷R‡:?pà >Ü!ßo½õíØ±C Ü•+WzõiŒÍ¾ƒ~ø¢¢¢ì³½vgfƒ´jÞ¼9eË–êÕ«G—/_¦Ö­[Ó¼yóhèСtîÜ9ªU«,X&NœhXÿþýé»ï¾“óºuëÒ±cÇ·Z^~ùeÊ™3'5lØ.]ºD_|ñ5jÔˆðíûï¿§:uêÐýû÷é£>¢\¹rQ©R¥$ -\¸žxâ *\¸0M›6MÚž>}:µmÛ–J–,I ²³fÍ¢¯¾úŠš5k&øa6mÚDÅŠ£Ì™3SÇŽ »ÁùóçËÂ)W®åÉ“‡¾üòK)ë+3gΤ"EŠP¾|ùdLæ±aуŽ-Z´E¾oß>º{÷.õêÕ‹ºuë&s‚[Ø=Ö¯_/ãÇXÿóŸÿÈØ=:N<5à?þP'Ož4N-ãÆSíÚµSýõ—zõÕW3‡â¤*T¨ nÞ¼©Þ|óMÕ²eKÅ÷ŒTÕªUÕóÏ?/í0‘O®¤¬x­ÆŒ£^zé%Å“¯˜@RïÖ­[Š™DMš4Iñmµ`ÁÅL©˜¹ÕþýûÕ’%KTÑ¢EQò~úé'µhÑ"•)S&õûï¿«÷ß_eÏž]:tH1s+f&õÏ?ÿ¨êÕ«K[è‹TðÎãÇWÿûßÿ¤ÜêÕ«ÕäÉ“3Ÿb)(8<þøã–t0gb¬|KÀœåVzÛ¶m‚«³Êl¨´iÓ*^¨jãÆ ¸™ÇvôèQ<çVÝ»wWgΜ:\¸pAh‹±?~\±`Po¼ñ†tÁL¦xª_~ùEeÉ’EM˜0ÁY×’Ï‚D9r$Æ21]ŒvŸÍ®.T¨1B¤ а* !R¤HAiÒ¤!ž0úöÛo©téÒ"!@Ú0lØ0I.[¶LVÖÚµkE A:¦J•Š>ýôSª_¿¾H¸¦M›3Õ¨QCÊB………Ѻuë(uêÔÄ”¶rçÎm³™EâAêõíÛW$&n¸fÈ’%K&åÿüóOâÅE={ö”s^$ÒÚá…¨|ùòÄ“Iýúõ“ë¾ðÚ@Šÿ÷¿ÿm³÷äÌcãEG,(yòäÑP†ª…¶Vúì³Ï„&ÐJ¯½öš”ƒñ4ÄY¾øâ‹4{ölŠˆˆ gŸ}–æÌ™cÃñÁƒ’Ï’EòÒ§Oo»f•àÕ'êêe‰Q`&˜ÂÜëìÙ³BdÔůU«VT¢D )Ÿ1cF9â2ËPcp‡°ôcpp°à''>ð‡…²|ùr1SXË‚Þf` åÀh¸n?&,RóÔó4ę٠)X]l£Aƒ‹`Á¶APPÁ[¼x±LcÀo¿ý&öÎ! ±+lРH´wÞy‡{ì1Ú²e‹Ü‰ïÔ©“¬ÎU«VÑÏ?ÿ,v« 1îa‡Ô®][ìE´Ñ¥KêÑ£™w^°E0 ¬EÚ–)SFÐŽÀö“²º%VEcú¹çž3.ûäwðaãöîÝ›6oÞ,Ò ‹`›+ÈCCá>,s:{âÌllÉ+V£œõ¿¨ >dÈ1DY÷‹qý믿ÚÔŠí/T$6¨ ƒŒëܹ39R6r£F’¾p›¶Õ„A±Áó¹6mÚˆ±NfxÔÀ@Bò8Pp([¶¬¨r¨¤ÚA¨l|¬T‰¡v¥’—ÿ°A‚ÖÀx1l¤Œ4ÌŒÁ|Qí`žØ¦“‹’Ü£`6èX]źA@yl<¨A[uVWŠ·ÙrãýôéÓ¶k±%`Øbcð³[Ù˜Ë]¹rE:uÊ–… K\ÙÀðCm[>(kÀùĉÑÆb_&¶óÄÚ x`ƒÀŒeœÊÑjlÑ Ø`ŽÆŽ+ Ðþ™gžQ¬IìJE?Mô 8l¡Í€ ‚X!yóæ5Nc=Br¹0ðíÍl£×­l«r!!!¢Êzþp„ ´«±Ù—1ŸcŽx‘ïRÅœÀm¢jÕª™‹$xÚÃr3ÁñµAc“kA]€¦NJ/^”¿¸oçi8f3v°ž&\ ´ïî»iîŒ?Îw:Ñu4@h’ zoêâ¾–?À† §ͧŸ÷:º°ýâ °£ø)Bœ›yp;E|•Šr¼ò%OãÙåìmõ¸ Ù`€ó®$.õ½ZvõêEüìr#ßßËÄ÷ü^ð*. Ñ9ngÄ®Ÿ¹MË;¥È‹w¨J¥ª”*K´)ks-ï×j´jÕÂ|g<”fÎÜÌO¦Ò­[¾ó:Ggí߯Ïn¹N [ýN‘Þ¡ÐŒÁ>Íh@Ù¯™­T©p~ÄtŸ™ì6mß~‚Ÿ,Œá§Wcž½ÞÇžé´²ïqº÷ÏRüÄ*{±4^Ç)6üšÙÂÂ2ð 8GEÝå'—©fÍÑüÞÚÉØÆí·×ïG)ZÙóíýò"!  ¢<•b~í ökf‹Ïc£ãýûø¹mµl9…æÎÝnË”Ä͈;´ åA:·ý:Ý‹ºoVP ~üT\K6A<•€ÝfH7£H¹Áƒñ¦a‘‘å÷ÇKûoÑ‚æ¿ÓÍówèÞíèozÜ‹z@YŸ|ø†Œ/Ôï%[™2ùø®GÊ bc³€j Àª>'èÁÝôà¾ã­ ùB)™ïnBmSà÷̆M$™BBRPºt¡4iRks¶_§›Î’ ÕÍ,ö™y xƒ#w¹tæ,ŸMû=³eÈŠÄ?´W@ø”)ƒ©zõÂü.ÛjÚ´œÏ>®ˆ…f ¦ÃòQõáœ:ˆR¤z8u)8³ì×=ãÚfb—÷{fÁJ—ÎËL–œßËÊIK–tã—ÿ¤;oGú஢ÝÓ"¨öû©ôëaDw"ïSŽ’¾¿9ÆŽþÆ’žñTÍž½Å†üúõ‡UÅŠïñûuwmyØ=í‚bÛÍ6”›î¨ÃKÿ²ûz"Llqšý½ñÆ,‘t½{×MŒî<ÞK-m{˜š~ó¥Îæ¸!ò8 ÐA@¨Q+: ÖXv£§OÿmuÙïò6þøcq‡Å.1»Pü1ŠbmR×àR ypY³f×Xpqæ €˜$]ºÌQ#F|ï³c>µáªú¦ñuÿîC×ìøE±³DÁ—ý«ˆï8œÀï{ÐfcLJŠ÷(vè§ØgЏž€¿:äÁÒp™ÁĭؾWÆŸdÔ¨¡:† y‘¾þz›<¬7ò|列 7x†ª § à‡~äà ®-àm‰0Š«vz(Þ# w ì|QœîÀ¯ûXOšðÏO,Žâ4Àm>â6»ÊJ̱'9fËš5-»œªËÞ&&]êëüΛT¡[n ³{e.ÂÀ4ðËñôÓOó“‘)âÑðcgøJÁw§,²Ä•ʲêä[?U|&ˆG’c6Ìz»vÕXJÜ eËöºÄ‰U(¼zz~Aò‘ƒB£_¸õ‚qÏnc…Ùà9yÎþéà‘í6‘bì¥ÈæÔ0®~ÜœõáN~’d¶  dôá‡ÍièÐ%~ñ­)$Ô Ô&~`ğHáÔŽ´á‘ÝbñGAÅ »V¸žÆŽ®üñGwx%Þu’ÄM]gTêÙs»:MÃÇ4rVÄoóáÜ ×e`Nxׄ«XH9¸}…=gœpå)HÒÌvùr$«¥Ø-kWvŒì^¤9OMŒ'Û…‡J¸µ‡'Ÿ|Òí hömY'ifAø _Zºt»`ílEçá½àÐd”¹ðC§ÕïЋ$I›ÍLïW_­Ì1>£Ø-ý.sv¢¤±û\3àeÈë›!šIžÙ`PÕœ#¢,ã¯éo'4}¶‡W68MÕú‡Sr–lI’<³a’ñíi:EiôèÄÛ¥íq‘Ug(å­æû>:j!hfû—’4äÂn¾S!¡hë´|¼r`þ%ªÒÏu'×Nó£ šÙþ¬L™RÓ€ ø÷0Vƒ'çðàwQ5þØØ_¿’r—6I~7jO¸zõ&ÈëHÍ›—·¿¤ÏãI-ÙìˆÍÂûïÏ¡‹|'N§Š~{ª™ÍnêJ”ÈÃKðã¬Gq·ìŠèS7) ™Í‚pýû7à ¸{éÀÿxÝÚb>™¥™ÍbZàéÝwñfá;‹«îeáUoø¿MÊ ™ÍÉì·hQž_Ë!Gw©ûç\¢ ÃOQð¿n®œtðÙšÙb˜blFú‘ßtý'†R1_‚DÛûeUàýÀ 1cêù«šÙb q‘"¹8„w)SþC ¥b¾´uì*þjvJ—'eÌ“ÀUÍl±LòÛo×§U«Ðþýgc)éxùôÆktùX•h“t^_r¤Â£Ílha™J›6„¿WhHýú}g{µÚ² ]&blŸxŽžœÏöñŠ]‘$wªŸ ¸8åMš|BMš”%¼’¤Á= hfs‘nx@ß¼ùdZ¿¾?*ç'>l][¢óÆ×ª<8¸Võ»_HH^šßïðŽ ­{õêå1–ðZ¨|ߨÁ·(°|ùrúÑßšï€ÆF3[@O¯o N3›oÍG@cã5›Í›TÅ»;wîW {¢û÷…dD›ø =OžGá)¢û6Ø=–|çfÉ'Ï“¤dƒ§Æ:$Ø„4iÒ„¿=]J¿üò‹íç)o`0÷mÛ¶Ñ™3gloÈcûÜæAÅpU©ãÇ«Zµj©Æ«ððpõÁ(öw¡x‹¼‹/*–*22RÚ™0a‚6l˜Ú±c‡b/?*[¶lªk×®ríìÙ³ªF*þüª]»vâLïØ±cŠ=ÿÈõ²eËŠO³ìÙ³«¦M›J›ìÄEµiÓF±s©·lÙ2);þ|õÎ;ï8¤Ù•âI—|ãݨʕ++ö«¡Xê©úõë‹c?”{æ™gÄ1_«V­»FPW¯^?k9räP 4PÀ ·"EŠ(ö^¤† ¢úõë§~þùguçÎWæÌ™®³c©ÏîÄü»Õ¬YS]¹rEòýÁI ðôø¤dƒH‰:uê°ó—¡ü^ÙjÔ¨‘lËGÍ>r³ÜC­^½Zãœ9sˆ'†Þ{ï=jÛ¶-Ç‹ß.¾,Ž9BãÆ#fXiRþËÌð믿²¿L´gÏñ§+Ä“Hß~û­8da“*¹rå"¸(˜Ó8ïÓ§uìØÑöã #fXêÖ­›x‚¤c‘–r’¸»B¿—.]âÀnKÄÙ üq`Ìð¡Ö½{w4IV¸aüPÑ}ûö¥?þøƒ˜„0 Ö­[GÌÀüxm ÔÇøáÛcÆ — ?ýô“ä{íÏS\S»<ؘ.‹KÎtéÒɪgç(ŠØÉê…$ ’º#GŽT<¹ ’+C† âM±GâÖsüøñŠ'BÊ+VL±“cIÏ;W<6š%3­ºpá¡KÑ™3gŠ÷F¸…G O:eœ:!Ù YáZÔøEEE)vî¢*Uª$833H=Hdx„0 žÕ«WW¦p]úöÛo‹4Çu+ÜØ!Œ‚Ä´hÑBÍ›7OuéÒE1Kþ !yÁ(Hë“'OJ>h3jÔ(I;ûó´dóÙ ¤¤3¥M›V¼/bõЬY3bõ( áM‘Õ­H V{ifðä 1ªG;f̘QÎYñ‡.×%mäáùðüœœAûöí-7¡¡嘿ºÇ‘'™#ΜoBh‡Ý»wOp,Z´¨xˆ„§!vEjëÆÀÃŒ›íâ¿ Hkx 2m‹´€–èß›à“jÔ‚.\˜Ø6kÞ¼¹T_2ü`¬Ã§Ôûžõ‚†ÚµoíÚµ²›ÄtL:õ0apýÕ_g,Eù»„rÝœF‚ù‡º3fÌ –š¢òØñ²Ô~,A$ •>ÙNWUX ð"¹e˹Ž?+ÜÌ‹eêÖ­+mbG UÌ6ùäÕ™Hõd>Ó'ÆæáÙš']Ê@ÅA F“'O.iü±&¡²Ø(@¥ÂÑ1;¾S,¥Û1Ší,i}ÙÔ(3«ÔZ†Gm–~²!¸|ù²‚åÛªP¡BÒÔ+€í?ٴاYz8MÐ4ߦphÏpÄl¾`…¼‡[Õ¬Êy+Ï+ï³Á`æ…¯1³#"A`$W¶n°ªµU»w´c”À»7Á 7Oâc¼õ£'Àgw£± –·÷±q¸‰`f4°g4äy›É€À ·‡Wüóßow£þI×$Ti @òä©Ù$¸Ë·IÝôçqñ›ºCß+Ì_{ÍcÔp£á\¹zòc¨Òu¥µ“V­Fã1ß»v¢T©RòÍâƒ,Ùâ·á‰~SU3[<¦jþüíü(ë?RKÆO+Ç£¥¤QU3››ó I¶dÉn~Ìõ@¼ŒÏ»ÍÍ–’N5ÍlnÎõÆGä;ªÃ]µê Ç—ºçfkI£šf67çyÞ¼mù(nBŠÉÙv{øÞÍ&¾šf67¦låÊÑž‚ܼEsælu£µ¤SE3›s½fÍA~?Ìñ1ÙÖ­Ç%4‘M&‰*šÙܘfH0H2{H™29ÇòÜgŸ­Ïÿ¥€WÄû3õa§.ÜŸß v¼ŽœÎìÙ3ÌŸ‡è1Ü5³¹AÚuëÓ±c¥&æË—…<§œ×¬ù*”ÍV¿Šf¶xÎq—.s¨V­§Äw[<› øêÚf ø)öjf‹ç\àí•@yƒ%ž¤ˆµºf¶XIsl é-–˜G¿«šÙâG?];ÐÌbé¢ñ£€f¶øÑOì5m³¹FDÍl®ÑÉi)m³9%ÃÍl$Ñž¢€f6OQV·ë@Íl$Ñž¢€f6OQV·ë@Íl$Ñž¢€f¶xRV?®r€šÙ\§•eI}ëÃ’,–™šÙ,É¢3=AÍlž ªnÓ’šÙ,É¢3=AÍlž ªnÓ’šÙ,É¢3=AÍlñ¤ª¾õá:5³¹N+Ë’úÖ‡%Y,35³Y’Egz‚šÙâIU¨Q¸×;4•b§QŒ% F8Q1ÔI3›f‚Ä£¯ÌX!z#ý³ AŠÙ9ž–cì*M/²Å3ÌÑ;ŠŸ#š BÝL›6ÍâªÎÒp¤xÆÞͽV£ŽtÒ9¢€f6V7ëHÍlŽ4Ñ9¢€K6›‡úŽS³›}óæM‰8§Š…š!½¸O†È߈4¢#z²¹s玎›]âïÄ1è%º2®;ƒøâ̱ì)S¦L—P”Xð3ã„æìלeK}àö«ô½víšD•6¢NÛ‹%á7’mÇŽ´`Á‚X†ãÚå'NÐÈ‘#eRvîÜ)énݺÑÕ«WÙx$õïß_˜!º±)êÞ½;q4dù½þúëÒ›#.Ó˜1chúôéN;ugLþèÑ£¥MŽ(M—.]rÚ¾Õ„6líÞ½ÛöÃâpFqÁ mÖ¬YΚtšŸ`’íüùó4vìX ŸÈ9žÓ‹´k×.‘­[·–à²FËᦹ-±Í1ióæÍ#Ž LíÛ·—¼½{÷ÒøñãÙ•hJ §²eËÚ€Éà°ÔRLÓ¨Q#j×®”Çêó@p$d‘Hˆ™Žr;v¤Ï?ÿœ=D>N[BAvèÐÁÖ.göìÙ„¸í´ ~ˆAU1âm…††RË–-iÙ²eâň£7 óaÆá¸©sçÎRßøCÌù/¾øBn·jÕŠ6l(1å9Ô8mÚ´‰]§¦ž={Gq–¸òÒ{ûöm‘º š>úè#arÅE¹’%KR×®]‰C’Óš5kØûe>MFœÞzë-£kÛqÑ¢E´xñbyâѤI™#݇d7ƒ®ÒX rgÂ\ÞÕt‚I6ŽÝ³g•/_^& ¡J•*B0S‘"E„¨PaZZÒ "b`Ž9sæÞŸ~ú)5nܘH`<ˆm a6oÞ,×ÁK–,¡+W®Ð¹sçd’P·D‰´páB©‚˜`XŽÎTT˜Ò€#FÈäAâU¨P²eË&Œc³fÍ„)8þ¼LÔïgŸ}F•*U’ü}ûö‘9@,T3˜ Ìñæ›oJY±-’RbÆŒ²€s§Ntyùå—ebÁäX´‡¢‰'RíÚµ…iç™3g„!?þøc]·oß.è#Åcü ¢ŸáÇ‹äãsøo[ƸኅˆE © à$³¡óT©RÉŠÃ…„„ÈD”+WŽ8ºH¬F"iL|žÌ€yQõ\9&¨d‹­CH#ìôðC«b„ÁªÓ`B¼cÐ *Vš=@õ@uBÅ`¥‚qPã¨ÙZµjI¶ÆÉ“'%#ÎÍ€> a§ÀÖ²ר›*ö¢!å Æ€})Ûö)˜ ¶’"/½ô’¨`HA0'4¤pÀb36¸f”Ã"E9Ô…ÝæÌ0×3§AG08Ì0>…ÁœærV¸Â†)‡:†Ö0×s% ’ÍY‡`¬ ÂæXíXÍ-Z´U Æ*α˜ b´ƒúX¥°ßÀh†»víZ‘`lVȃ Ãvd™2eD‚ÁÞ„B›À©OŸ>ìR¾Ø“¨‡k¨ 0!Ô96,PË=zô Ç„j ê €r0è·lÙ"ícŒPåíxÓ…6,Ô-64ØhÀ쀈Å“ö•è 5†EÖ»woã’íˆqô1޶‹œ€93uêT‘Æ‚0Q¾ùæs‘q…i2jÔ(úúë¯eìS\Á%×ôè,!žöë×OvlÀ–1ì #Œ„•°X`{Z®˜Øß¨ÏF1·$Šd3:ÃN †2$˜¬nŒÆFPL„ýd Mì= ¬Ø¤ØÔ“U¾Q6¥aWy8š çhÇ \™d«zF€ÑúpÖÊ[áŠlÔ7ÚŒË1Q%쥸2$ˆ5ÀêBžý¤a%‚‘c"`\£ËÆ^—lqe4 ×^ÂauÙ3ÊYå!_ƒïP Qw£¾3l‰W(À»½XE"nê蟦Aœx€ŸÊDã-—l6¯¬ÝiÀQ@«Ñ€›Rßf6ß›€ÃL3[ÀM©ïèÿõaº ‘SIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadConversion.html000644 000765 000024 00000055312 14042362133 025336 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::BadConversion Class Reference
MySQL++  3.3.0
mysqlpp::BadConversion Class Reference

Exception thrown when a bad type conversion is attempted. More...

#include <exceptions.h>

Inheritance diagram for mysqlpp::BadConversion:
Collaboration diagram for mysqlpp::BadConversion:

Public Member Functions

 BadConversion (const char *tn, const char *d, size_t r, size_t a)
 Create exception object, building error string dynamically. More...
 
 BadConversion (const std::string &w, const char *tn, const char *d, size_t r, size_t a)
 Create exception object, given completed error string. More...
 
 BadConversion (const char *w="")
 Create exception object, with error string only. More...
 
 ~BadConversion () throw ()
 Destroy exception.
 
- Public Member Functions inherited from mysqlpp::Exception
 Exception (const Exception &e) MAY_THROW()
 Create exception object as copy of another.
 
Exceptionoperator= (const Exception &rhs) throw ()
 Assign another exception object's contents to this one.
 
 ~Exception () throw ()
 Destroy exception object.
 
virtual const char * what () const throw ()
 Returns explanation of why exception was thrown.
 

Public Attributes

const char * type_name
 name of type we tried to convert to
 
std::string data
 string form of data we tried to convert
 
size_t retrieved
 documentation needed!
 
size_t actual_size
 documentation needed!
 

Additional Inherited Members

- Protected Member Functions inherited from mysqlpp::Exception
 Exception (const char *w="") throw ()
 Create exception object.
 
 Exception (const std::string &w) throw ()
 Create exception object.
 
- Protected Attributes inherited from mysqlpp::Exception
std::string what_
 explanation of why exception was thrown
 

Detailed Description

Exception thrown when a bad type conversion is attempted.

Constructor & Destructor Documentation

◆ BadConversion() [1/3]

mysqlpp::BadConversion::BadConversion ( const char *  tn,
const char *  d,
size_t  r,
size_t  a 
)
inline

Create exception object, building error string dynamically.

Parameters
tntype name we tried to convert to
dstring form of data we tried to convert
r??
a??

◆ BadConversion() [2/3]

mysqlpp::BadConversion::BadConversion ( const std::string &  w,
const char *  tn,
const char *  d,
size_t  r,
size_t  a 
)
inline

Create exception object, given completed error string.

Parameters
wthe "what" error string
tntype name we tried to convert to
dstring form of data we tried to convert
r??
a??

◆ BadConversion() [3/3]

mysqlpp::BadConversion::BadConversion ( const char *  w = "")
inlineexplicit

Create exception object, with error string only.

Parameters
wthe "what" error string

All other data members are initialize to default values


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ReadTimeoutOption__coll__graph.png000644 000765 000024 00000014053 14042362133 030522 0ustar00tangentstaff000000 000000 ‰PNG  IHDRœ‰Ù£QesRGB®ÎéåIDATxí] ˜MÕ_”BïG„AIÞ’gÞ’¼“òÈ#BLjDyT’/DßG…Æ#Iò*E1ÂÈ 24yÅÈ£AÆŒó_¿eöýŸ{ç÷3×=s÷ú¾{ï9û¹ÎZ¿½ÖÞûœ{V&ƒ‰4i øFq™}ÓîEKà¦4à4|* 8ŸŠ[wæ€3f eÊ”IÒQsæÌñ ´ûàöîÝKK–,!¬_ô'íe0mÚ4Ú¶m›œ_H@3áS ø……óéëÎîª4àîªø¯s ¸doذ®]»–f8{ö,-]º”&OžL+W®¤Ë—/{Üö?þH —·SA ¸dm½ð —&ºûþûï©F²ºtéMŸ>ªV­J{öìIµý™3g&÷ ô¿ÿþKµ¬­3pkënSûöí ^¥Þ’!C†½zõ2zè!£AƒÆ„ Œ"EеjÕ2Μ9c4oÞÜØ´i“´±yóf£U«VÈ@Û>ø Ñ¬Y3ãܹs[£GFÁ‚—^zɨ\¹²ÔA[Ç7úõëgôîÝÛ(V¬˜Q­Z5#&&Fòüq£oß¾FþüùvíÚl±$½I“&ÆÁƒ7nÜ0 *d|óÍ7’¯¾ÆŽk ì®]»Œ6mÚO=õ”Q @cÔ¨QÆþýû…Ǽyó 6£aÆÂû‰'ŒÆ¹rå’4ðªS§Žy„„„ˆ,Ο?¯ºqûË@–ër›éÛij¶±p,|ŠŽŽ7«1þ|Z³f eÉ’…V¬XAåÊ•£eË–ÉàÇ/ÎçÎK÷ß?ýñÇÄ £¯¿þZê°Òé‡~4ä™éСCK[¶l¡ºuëÒ”)S${÷îÝ”;wnÚ¹s'Á]®^½ZÒkÖ¬IÙ³g—OõêÕéÔ©StòäIjÔ¨‘¹Yª_¿>aû'>>^ø0`­_¿^¬Ú<@ ~‚•e J¹ëׯKß JŠŠŠ’¾?ùäi“]¹r…6nÜH<ˆäšœ:óãÛ2ìܹ3±E¢*UªPÇŽ©bŊ⺠à:зß~+¢Æ/[6bk(Ê4i <˜ØBÒºuë¨k×®Jƒ r«(Ÿ­”ä+`¡ Ú@zÏž=€Ã¦5[K*\¸0=šeÛÕ%þý÷ß$ý=üðÃÄVNxhÙ²¥ðÐfË–ÍQÑwxx8¡<úQ ›äH/S¦ ±5¤¿þúKڵ×­WªT)‘iæÌ™)OžÖÎaÅ âyuêÔÉQéIII´jÕ*ªP¡‚¤GFFÊ ®Ç÷Üs¸F¸â .H™ßÿ/^Lø€ºwïN˜ÁÝÂJŽ7Nxá¸MX`l•`/^œ{ì1êÖ­Õ«WO±#. }ï½÷dÕŠÕ¯+™¯ß5Ï/Ï}»Hqß›'«T÷5Sy¢ïXuª¶<² ÄêÑLX"ݪ9YV…¼ 0Øõ<sä±ë’î±cÇi·;Àêqß¾}[.GQ¶‚ÆOU&/d¤ouîí¯?­RmoáÔ(†Û?~¼X3•†_LÆË—/oN’cLþ]'öæBjžgNÃܱhÑ¢æ¤[c®fž¯™ cþè:‡Ä¢Áañ“Q(Ãîó-5™öDAP¸ë wÜ)Û˜ŸÝ)aCX­¦ï´-;ÖÏ0€Ë™3§%ù«U ªÌ›¬êÐé×µœS¦'XU¦fõ¼hƶE3Ì*Õ¶0ÆýÂÂaň\»PppQ^Ý&òÚ)»°ìXUßm†3aÅs·™°[ÿ¡¡#ø¶X¾µn7Öï6¿úo‚Þj &æ4?ÆtŽ‹ãÍ[÷w¼m3Êë9œ—Ú^²d;ßbº!+ÖåË£½¬­‹kÀy‰Å‹·ñ-¨$¾o›@_|±ÅËÚº¸œˆŽ>Êî4ÑQãĉótäHÚ<´éh4ƒhÀy¡àE‹¢Ø²ýÿ;?ÓÁÏçýêE º¨œ‡à[±„9[RÒ G X»… ýãÿž¦üü@ÎCEFä’)w.\¸Bûöô°]LÎC DDláljRþ“êúõD~Ö-ÊÃVt1½ñë° R¬XåÈ‘Už½S{åx ÏÉÅÇ_ãÿ1Lö ¥€/§ç!bcÏòfï?R:"b«€¯uëÊr^ºt~~l=·‡-t±8¿¸—j”*•ðEFÆð*²ó?±ÊÚu¿âQÏáüJŸ 8 :ÆÜ-sæ›ÿ£°P= «hÀYP? Ø—Óä½4༗™®qЀ³ <¸Sõ—B ÕºŠœõê½8 ÕºŠ\@«ß÷¯ç{™tp­~ß_¼œïeÐ=jÀ´ú}ñpd®·E,-¹ŠœÙém BÓ€³.4]Óº´…³.;]Ó‚4à,Ívo´péUE΂dq[KßÚ² 8®¢gMnº–E hÀYœÞ± ´ä*pd§·E,MκÐtMëÐ΂ìô,-¹ŠœÙéÿ4Xšœu¡éšw ­~Kò»OPPa#((Äïø‚¬8¦ßê“óïx©€Æ¡ƒd“•™õ›ßk׎ó‹ Où ?J6Zwøðá;0?é_UÏáÒ_ƺ“4àLÂЇé/ ¸ô—±îÁ$Û¿= Án¿ aºï!"áO?ýD‹…uëÖ•_OxÙµk—#¦ª'å3BÛ[¸éÓ§ï¦FP*bݧ9r„jÕªE“&M’À+V¬ ÚµkKôçÔú3ó³uëÖÑ S«—QÒm8¥ˆØØXjÞ¼9µmÛV¬Fÿþý%«k×®üâç…4zôh ù—!!!ÔªU+ ŽBˆ"HѨpà111nË"Ô%ê!.ØØ±ciøðáÔ AB¤æ1cÆÐ‚ $ÚtïÞ½y{ªV­*aÇí^¹r…Ìü`E‰Ò=Þ·o_Ê›7¯„6߸q£ðÎ|ièСUºaÃ†Žæ’iÓ¯ 8(xíÚµ¸eË–qÐŽ/1N'L˜@•*U¢aÆь3D¹ëׯ—À½ƒ%"Ä7bÊ?óÌ3ôÕW_ 0Ü•MHHx÷p={ö¤;vPãÆT_§N üË‘£i÷îÝ„på;wî”0ä«W¯vâ€ãÔ´}ûvqÍŸ>bÄiÀHÀsçÎÑš5kœú²ãI†„Øñ¼ñIPz™2eÄ]!þi–,Y`py°n6l ’%KÒ/¿ü"ÊFÜújÕª‰•˜@îÊ"š8q"¿bµ‡@JLUÀ€Å Bq¨@83?R€¿c`Œ9’}¨{÷îôÙgŸÉœhùò儉9&ý¬ ¬¬‰»²èËü^8,@°R¥JÈÙ³geq0~üxa V*,,Œ_«/®xöìÙân?Š÷gŸ}–£Ü,—ÁW þ\)Ãüq‡]ŒßRùòå ¾—zÇü±;3x¿ÌÑÏ‘ žŒË9¯yóæ(súôiƒ]›qõêU·e‰.(ÏVÎ``9å0p¥]v™Né®ü¨L”c+©N½þå{©ïz]χüûæ½ë(·zŽECpp°£:Üé}÷Ý'ç… 7ˆI9Òá&Ís:sYG.(w ëèJ™3g¦¢E‹:%»ò£2QNÍÙTZFûÍÐ.ÕeAùض8tè¸=, ÒŠ°-£æriÕ¦ÝÛ xÀ)Â’¥5™Wžiݶ]Û ˆUª]•“ùök —?~™ù›àƒƒ‹ò~^"%$œò7ÖdãÛï˜21¤ƒ»™„áéahèÞ¨ÍÁ›¼ážVÑånJ N»T/¡sšoÌ_çÈ‚q|óßý/› ¨âp^ª{É’í|õ†¬>’\“wЀóN^ü¬Û6¾[DW¯&ð)[¼¬­‹kÀyèè£ìN5Nœ8OGŽÄ9ÎõÁí% w{9J,ZÅ–íæƒ7 ZºôWG¾>¸½4àn/#)7&aΖ”tó±!$ÂÚ-\¸ÍÃt1H@ÎCDFä’ÎÏ×¡ê… WøÏÚ'=lEÓ€ó[èòå„¥¯_Oä…DTŠtà^zã×½\œR± R¬XåÈ‘Už‡ãÇy$Ϩᙷøøktòäd§:úÄ­â4àÜÊ%eblìYÞìýG2""¶ øZ·®,ç¥KççGÊs§¬¤S\%ç×÷R]¹½›ç¥Jå#|@‘‘1”'Ovª_¿ìÝdÉ–}ë9œ-Õf_¦5à,ès7¼É\“÷Ѐó^fòWCìËiò^pÞËL׸ hÀYž bAhÉU4à,ÈîTíÅY¨ÐU4àZý¾¿x 8ßË< {Ô€ hõûþâ5à|/ó€îQ. Õïû‹×€³ s½-bAhÉU4à,ÈNo‹Xšœu¡éšÖ% -œuÙéš$ gAhæm”®ýN«hÀY nké[[ÇU4à¬ÉMײ( 8 ‚ÓÛ"„–\E΂ìô¶ˆ¡iÀYš®i]ÚÂYþOƒ¡%WÑ€³ ;¬Põ,Ž«hÀY“›®eUÿüsZ»v-¿ë- <˜BCCì3gÎ$Dw®U« :T¢8Ož<™¶oßNU«V•·^–+WŽð-Y²„ºté"¡Ã²«}ÐÀùr¥Œ5kÖK¾kÔ¨!ÀÀu!d9€ŠˆÔ¯¿þº„ÐܳgÈ  yòÉ'…È»[·nü^á Ð7kÖL¢Yoݺ•Þzë-â@Ã4þ|'ïþ—-[&^ÃUž•Š>] @Šå '‰Ö÷ß_±Ã#@Æ›þÑG‰wà ÉÂÀì-ymá×–ã•W^‘ÀkÓ§O§×^{8±X0¸nÝ:á– á¼1ê!”9sæH|wĉG;sçÎ¥#FPÛ¶mE™pŠ`A°¤Fèð—_~™f̘!Y ‚Øâ‚ç}IXT`]ó1”~f|Ê”)ò[¥J•(&&†8‚2A°PêÛo¿-@‚E?³fÍÀCùÉhìØ±"ð[¹(XŽì,üðC±V»ví¢K—.‰UE>êœ8q‚Tò0`€€±xñâN`CÙÊ•+‹ëw'Ï"EŠPË–-©I“&20EHJJ"胺͑#‡è€Ã€ƒž!ÈóܹsèÂ+òph~JÃÅàWƒjÕª‰0a!Ìzõê‰ÕÁ9.Ö +V¬(m î<.Þ•pq(6 ,ăµoßžƒ«=HÍ›7 # {‡jÞg>†•€«/Ä °fË–M¬t¾|ù€Â9Šö'L˜ ÀƒÕ:þ¼|0·5áèÔ¹sgtç1µiÓF,!ú‚7(Q¢„Dˆ†¬à) XðU°`A~ú>D$:t«‡:¨;Â\†qMx×°;wˆkÀ ¹Ê²Adl€í(‚qxî¹ç„ÏîÝ»;ú‡lÚ´©èÖñÌ™3ªŠÇ¿–W¨P!éáµsæÌéÔ„W%ã°½-0Ëå Üš"ó«4s8nŒjX4JG&è·"€Ö .ÊÄÂÂB´f¸5|°á ác0@Áà BÁ:`!8oeá¤éëV²¼û.ý£]€ rœ!VÇLð®„~`¡À«™`1hAJn86ËçŠÐxÀÔdî_…mG:d‡ÜÿÈ‘#ewîB¯<è¿VmæCc`²=ÿüó"',l™üÁ-ã?Ì1/†ŒÀƒë¢à©P¡‚X$Ìã 3æ’˜SÂ:ƒR“'ê+Â`B‘‘‘’„6pžVtÓÖ¦QkjäCApQ˜ ªT©BŸ~ú© ëÔ©“Œ:÷Å_” ©yô¨v0Ò0I¾xñ¢Ì‘ecŽpÀ`UÂïÔ©SEaêX2\¾0Ê±Šƒ[þî»ïdÕŠö»³ë€òÁ{Ÿ>}¤L°¨ÁlÆ ²‚E¿Óm°„kiÕª?žV®\)×øî»ïJ:x pÁCá°ä˜‹Â bú¡@Aˆy(æÇÌø ]ÈeÐ>Ü6È<¡ƒqãÆ9mã´k×Næ•X€ÀMc.鎔žÜ奖æôÚ|0‹•ÊÞKÅÈ„åÀÄV„Që7eV” á`…‰…&ü ŒT\,€ò 5 Àu˜]²T²ð% }åBÐÒ $X@ð§òàŽÑ'¦iIX`Nìh׎y^HHˆ“ ‡;5»\T€E4»KðI¾rç(“š<‘‡Å¦4¸^3/ÌÛÔМçÉ1¦Q 4½&—Oû×æÃ Á"`•¥À†Î ¤’%K¦àS)3EFr‚»|Œ¬´º€q%sš¹(?=HÍÍmcÀ⺒+ØoÎÍüãÜLæëQéju¯ÎÕ¯;¾TžÕß4u©`KsLÎÕ$ÛSư:TV uà:Üö”\G¢»r:ÍY©ÉÓ¹TúŸ¥9à`š½.Óu”¦6êÜÐô“ý{HMž¾¾²´Œøš{ÝŸý$À+ñX?ÅêÁS¬¬e-'eàúįÓ*Õ~ÃEsl3 Äi—j3Ù] 8»kÐfükÀÙLavg÷ÞgÔ]”])IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1NamedPipeOption__inherit__graph.png000644 000765 000024 00000010277 14042362133 030657 0ustar00tangentstaff000000 000000 ‰PNG  IHDR•R]O–CsRGB®ÎéyIDATxí ”UÓÇ5IÅ”ùD-Z$7–:è1ÈåK—.• 6ÈG${ÆçÙa-Õ| O<ñDJ¨¨¨HÚµk'C‡U¢Nžrá…Êßÿ-7Ýt“HçÎå÷߬áé§ŸÖ¶ÒúL¸ýöÛåæ›o–\·Ö 4yûôé#X(Õ†U«VÉûï¿/¯½öš 2Dî¹çM‚,X9sæèRf­ƒÊòF8þøãe—]v‘/¿üR «‘e'œp‚°$BîË5lØP 9¢?ü°Ô¬YSF-«W¯–eË–Éúõë•”/¼ð‚ÐöÁƒËŸþ)Ë—/—üü|™6mšöû¹çžóV•qçK*:餓„Á騱£¬=_±b…`%~øáë‚ÀŠá+Ýyçr衇ÊóÏ?/ü±–qòÉ'Ëyç'|ð6ƒpþùçK‹-´ ÑZk¯½V „•€¬í @ÖFÉæÍ›•@YöÕÜ´i“’¨[n¹EËêÙ³§–•­7!› S§NÕ~Ò· .¸@ëyï½÷4ˉ¥êÖ­›Ð^“‰ÇŒ& ˜Ñ»ï¾{~;ï¼³.jÊ”)Jø³Ï>S«ÀòÂ@`Xúlàºè°Ûn»…£6nܨքï gôœtÐA!¼aæÌ™jÅöÝw_ö–…Eò yÏ=÷ 'mÙ²E KÄ®»îªñµjÕÒÆáLx’Ѥ*/¬ÓC=¤¾ ûÆoÈË/¿,<òˆú=X©³Î:K‰†5aÐ/^¼M±3ḟåì˜cŽÑ<Ó§O×ã[o½%Ý»w×óo¿ýV­#_ ð_ý%XŸ‰' ivr=ö˜úTYYYGY8åï¼óNÄ.kfŠ|‹;wî\9í´Ólr•9VÉ[ <7$@˜?þøC}%¾3wÝu—:Ì?Œeðè£V'§ÙÎxòÛrÀC9D}|'ÏîíÍ7ßÔA¶–Ÿ‹zXÎÎ>ûlùôÓO•pÜJ€ŒXKü&ßD€°l XZYî^zé%Ç/¤Œ‹.ºH¿³a©§Íóâ‹/–½÷Þ[Ó¼¶}Þ¸Œ:ç%½ÊÆš„̳¿¤«5wÈì¨B¿þúk¸,c BÆb„Œ“ŽãÄ ´ÆwÜq!cÂi>ø`è¾ûî g9d2ovŠ!ã‡Ìò2 ÇÇ;1»P­Û'"›Y²Bf Ko¬TD6‘¶xûdãƒͳ¿YòƒfOu¾Ü*i©˜•<”æ–Ã5×\1›ñ¿ün"z}¿Y½Ç{øE‹õ‰|£"ëÔ©ã[7Ùh—×·#ÿÈk9‰#ÄjKijæVYR±Tà íµ×^ ¡Ìíï@ÞvÛm¾×O˜0AêÕ«ç›–häÊ•+ÅúV‰^[óWYRq_*QB1@vf+q4h`³$},ÏJ&]A†P¥w†¥kN5ðÒ* î0³#«*!++ÛÜÄlbý¯ª4YŽ:ê(½“Ÿ†JËòÇsº4p¹ÂøæäL2ˆfȪU…R¿~ —³£\è–¿#=qbqÚk›—óävY©Êá@AA‘yÓ`³y½Ñ¼y0»œÜ.©ÊáÁøñùæaq飔… W˜»åʹÂ%;RÅáÀ–-!™4©Ð<³Û¢¹²²j˜Ç6Õçeº8]O*É‘*|3g.6Ï·f()ÙdÞËš³5Âù"àHå Kiä¸qsÍ[#r,[¶Æ¼í°&"Î}‰DÀ‘*ð7œó©SøÞú˜0¡ œÏl‹€#Õ¶˜hÌ´i ÌßÒw¡¼Y ÛØ±s½Qî< ´ÜüŒjCF~ÍË›£ïAÕ¯_×´/dÎyÓ ÔÁZ¹²XŠŠVK³f[ßÒÌÈN¤©QiyL“¦¾&Tíºu%æ–ê5‹­0o’ÈÀ]ô{ÆõÌßl}E9¡‚«æô<¦© ¸6hP×¼…ÙB›Z§N-õ¯ì÷ªÐþt¶ÑùTéD¿šÖíH``y'<ãß ÐÊÊâHiÞ¨¨JoUèÒvÍâHµ]áÝ1 w¤ 0înù ’'‹#•ŒX§nù‹…Œ¼#•?..6 ©’Ï]ê€#•?..6 ©’Ï]ê€#•?..6 ©€Ç-û†B€ì;|Gªà–ï«» Gª`8¹\ àH•X.k0©àäÓɓőÊF¬S÷˜&2þñŽTþ¸¸Ø$p¤ ž»¥$OG*±NÝ-…XÈøÇ;Rùãâb“@À‘*xnù ’'‹#•ŒX§nù‹…Œ¼#•?..6 "þíß%ïØ±cÅUÏKKH¶‘ù7­¾Õ³ƒIö ™\"H…\«‘÷«¯¾Ú¦»£C .ˆgâxIå–¿¸¹ÄŠ àHUÔÜ5qp¤Š K¬>UE Hõ5HØ¢“ %)D#×­['Gyd¸™è,#zJí™páe'#òŸa…%IB p¿ýöÓ\è.£Ê°ÓN;•]ü€F4b˜¨¬¢éL]A‚‘{Sýè ùƒ”é—'ã,*ï󿥿€QEÿ˜A°á©§žR…vû}{_|ñEUAEœrРAJ,ˆ† 8ª]ì–üFF7‘€0æý÷ß/]BˆÅwâã…믿^UQQó²ªõñò'›–°¥BBvÖ¬Y*Ç (]ºt1? =Iµ~û÷ï–ŒEm%Ðo¼Q†j~Òp¬Šdc!ȇ@6òg¨2{‘.ëÝ»w¸?â믿V ) 9Ú·o/„ˆ6Š Ìô:{ˆqßzë­j…ì9…µnÝZ}ôQUŠG_Ϥgüq•”Eý“º)¯oß¾*€={ölUsÇÚP—Ÿ”»ï¾[åm‘²E_‡v „ŠÚ(}ák„(· Èç¢IH@ÚöœsÎQy”ä! Ø@²/¾øBË1‚–ª1ÈíTßI»ä’KT/qpȄڻÝm¡vJ:Âã(ÙG—E› 8¡‚ÊõÆŒ1açvÙe— âäL8pðXPÚ‚bk¢!aK… +€÷éÓGŸyæ••íСƒLžf> ß! V mcײeK-ãÄOôU…¨ä§ :mgúÄhèuêÔIÉJ›¸·fý0ï9i‹²w°Ûµk§VÏHÚªÀöÚµkɪáÜsÏUcô±ÄÍš5SUQú‡•Fy¾°°P­K+þXP&ºÎ^ÝcÚ…A¼«5bÄU)µuq„Ôô§k×®Ú¬ „…$FúVÓ¨²ù-™´ÝZáè²Ð3„„ÙÙÙá* g Û¶m«Ø2vrÒ÷Æküo¿ý¾&‘“­ëAWQ) ×úõëG\‰¸#àb øcýg°™Ñ ³AjœE/ø~«WAë€e"Øx⌎rDý~_ Ò¸Ì@Ì=¥vÚÖ¹sgóû­Ô*Ùkãõ !³ëÖ­›Z*¯8%ä±x+Ðmã¢ÞþÐGê€$ÔA@ëÁì*`Ë QQQx]–Íç=R¾w£&–P·.?œ+êŽX¬4" YªòÊDz°^ãk`¥0ÿÌTLynn®Z)f Î+Á±ìDt’ñ¾ûî;¹v}ÇJpØÖæ:ÊÂ*DŸk„ùÀgX¿~½`Þ ,·Xºž={êò@& ~Óå—_®}cwG_h+K:KƒœH ?¬à©§žªþ®mÆ*cÕ™@gœq†®øµÚñÉnaÒqž ‡®ÛsM(û`#€Ïƒ3O`ö³3ÃìÅxµ6 j¼@ýX6,Ï”)S´]F-^­..D£Hgû`ñÊ>}ºn°ºl*˜Œ誫®ÒåKŠŸHY”!C†¨åÇñG8|ðàÁáâ£Ë"É&Â1è_…úd1è¿üðÃRXX({íµWÆš3a™:uªÔ¬YS<ðÀ”ëþóÏ?eÊ”)Ò¢E‹Œµ%­÷š,//Oz÷X±b…´mÛV.¿ürùöÛo0œ_{íµ¥ÖÀÈÊ•+å?þ1cÆ”Z6/ÆždsæÌ‘Ö­[Ëi§&;í´“ôìÙSÚ´i#õêÕ“¾}ûÊ믿.íÛ·O`ß¡C=z´<õÔS²çž{Ú=999výý÷ß—Ýwß]öÛo?»gÈ!‰û äÔSO•£>Z¶Ûn;¹ýöÛíe:uê$ûԯ__^{í5ËöÙg¥{÷馛äù矗'žxÂÈ5yòdéÕ«—ôïß_&Mš$O>ù¤ Ýºví*]ºt±6¡áXU_vÙeBùOªT©Œ5*жÞzëà—_~ îºë®`›m¶ fΜ(‘5«V׸qã%¯¥•Ðvç΃믿~þ´jÕ*4hP “#Ð cí»æšk%X Ú+Ø`ƒ ‚_ý5 ¯5 tËÁž©“%xá…‚ºuë‹/6 ¶Øb‹àã?t‚%úµÆC`ôÝwß…rÖy²(+|²M6ÙDtEB6ÞxcÓ˜¦Ÿ~úÉ6sñaÞ|óMÑÁ’#Ž8BtPd×]w•nݺIÇŽEEæÏŸ/sçÎ5ÍA¹“O>yù¯d”SN9ÅòO8áÓˆœ Euðí£$4iÞ¼¹}¸Ž¦CÐzh£dQ²JõêÕ-[ mZøŠ+®#<Ò´”’[6ß|sÑ ceÞzë-«û˜cޱs4ýCN:é$Á¼ÒÖn¸Áòâþ'öæÿ÷¿ÿIÕªUDª¡¤ZµjÅp=ãŒ3$77×Li 3ªD0; Ê÷ß/Ûn»­ÕÁÍ5jÔ(V'›m¶Y"oùòåFÌÒò…ÿMì²Ë.A¹UC™™&ß=#\¸àAdyï½÷ž_yåk£è4³4åX°úýè£Ì/u׳í˜æ²$PÑXˆúO¢þ–i'÷]¨úQ¦9bY4°ÊÜ"Ɖ«“†CÎVÂé§Ÿn÷P†ÆMr¾;וªðI§!“ó£ÎYX ùJ¶‚Õ®tž®/né*Ì’ŠjûD˜‰µ} ˆý¤t“Ø•GðÓ–,Y’pÌ]]EEE–dU»¶‚¯G=É —µ­·´ûÙkËÏÏ·=·Òʕ㵥Yí“9`Ò%÷¡ù‚6q+¿p~&ÈåêÛtÓM]r½:VŠÕåz5bYØÙ 5—Ùöfl•*UÕ¼î©[!Óu{beÖ w¿´X±ÿ­¤_‘Ø^na6|ÆŒ)P“ÚZ÷ÍfdE{¦ùê53Ñ›Ë4ôÑðálläȉiÜå‹z’¥È¥KWÈØ±3mwôèÏu‡>{ÌeŠ],·bžd)B›—7M·6´Òß~{FŠwúbžd)r`ذ|ÝGûËJ/^¼LFŒ˜â¾˜'Y (,,Ò/Ç¿)Vrüø¯¤¨hy±<€'Y4.Årss ìÕšpfõêUõ¯ÏÂY>]žd%Î:4_µÖ?¦Òå/Y²LrròÝ©?–‚€'Y)àpiÞ¼E2kÖ¼ÈRßÉÂ…F^ó™«ð$[Ed*?¶­*ëÔ©©¿'QSß–¨aGÒË—¯”‰çDÞç3W#P¡_+­nF¼ScÇ~i \¹r•¾Ï?X† ëbçlPEÿG²äWzâÝ«uÖºÊñFyÃÕ²e#{$ãe\w^ÞÏ­,õ{sYYF2Æýð$Kcpx§é%=<ÉÒÀ‹·V­ª°‰Óhi¼Šz’Åk<*ek<ÉÒVo.Ó+TÔ“,FYIo.ËB(úº'Y4.>7ƒx’eL_U4ždѸøÜ "àI–A0}UÑx’Eãâs3ˆ€'Y`ú-Œ4À õ$ QVÒoa”…PôuO²h\|nð$Ë ˜¾ªh<É¢q‰ÌÅ'ãã%=<ÉÒÀËý¶D·ø¢Š€'™§A¹#àI–Ä~ # °BE=ÉB`”•ô[e!}Ý“,Ÿ›A<ÉÒÓ›Ë4À õ$ QVқ˲оîI‹ÏÍ ±ù‰u~CŸhpqÌe­ZM²bC–8RQA/*ߨŒB3ýùçŸ+‡JõLÂƉdÞ\V*zų3ždñ—JÕ*O²J5œñìLl|²Tà!È–‹Iy_nñ$S¹7\†ø•………¢ñÄÃÙk•&ýÔ©S- QëR­›(½ø£7^«çÇùæ¬Òd"%ªÜĉ…A%˜)ARY™¦#yyy5{J*KÄݶmÛÊå—_.ß~û­L™2ÅÎ àZš²ZãbÊœ9sŒœ¥•ÍúkºÁ Ñή.Km RðD]‰ÝÍ‚”j”Ü K—.†Ò 4òm !­œF× TKºâ .ºè¢€¦ƒ4º®]á…M¨V  dy=U2-78öØc mù‡vXpõÕW[;5H½g}ôÑG h$`+ÃÕ’ö< \zé¥AçΣ(±ÉvëÖÍúAÝ8 p+Ò¿ÿ€ ¨õêÕ úöíky#GŽ .¼ðÂ@£û /2dˆå—öG£Ý·ª´"ëòZQVi27£‰õÝ¡Cý•ÃB¼n‚”jD\™4i’F +gŸ}¶tïÞÝŠ£Q”\ffÑ€áØã˜ß®]»šVëÕ«—h4_™9s¦<ðÀR¿~}Ñè»R·n]yì±Ç¬.%ˆþ@q‘Œ7N”ðúë×ošæjݺu±½3B®šØä=Ø´š·yóæö¬ž={Z¬Íœœ 9­¤¶pÑwÜq‡è>}úÈ=÷ÜcZ£ ˨Q£dàÀrÓM7É}÷Ýç`ÈšcVùdÕãŽ;Îh÷î»ï–O?ýTÞxã Ñ/{ï½·}úõë'¢Ÿ;w®¨ö±[U«ÈK/½dêÉ€,ij$8=BÜLÈpï½÷ÊèÑ£E5‹‘ÈEÕe3–Þyç¥U«V9 ê²eËìþð ë,Ä4GˆI®ÚÉâ’«ÚF]ìg9Áׄ„L„Xæ!"1æ•þÞpà –—M²’dh1'Ÿþ¹Íth5g.ÛŸˆ¾á$¸=¤pI ¡ú4à>ûìc©1É¥cÇŽ6¸®SÃÞ¬Òï5?—+âm.SìÖ:)æI–"ÌyyÓ,¸*Å«UÛPßú˜‘⾘'YŠ6,__½ù'ùâÅËdĈ )Þé‹y’¥ÀÂÂ"™<ù›b%ÇÿJß-[^,ÏŸD#àIK±ÜÜÜák °T¯^Uß÷ú,œåÓ% àIV0áì¡CóUkýc*]þ’%Ë$''ßúc)x’•—æÍ[$³fÍ‹,UPð,\øgä5Ÿ¹O²ÕXD¦òógÛj²NšÂ§vív$½|ùJ}©qNä}>s5±ùZiu“â—;öKkÔÊ•«¤S§Áúºu;'y‹%¿Þ¿žTH‹–÷f+¤ ñhË–¬‘Œ—sÝyü[zsq¨Ô­ð$Kcxy¿é%=<ÉÒÀ‹·ôÅÓ¸ÃO2σrGÀ“, ˆ½¹L¬PQO²e%½¹, ¡èëždѸøÜ "àI–A0}UÑx’Eãâs3ˆ€'YÁôUE#àI‹ÏÍ ždi€é·0Ò+TÔ“,FYI¿…QBÑ×=É¢qñ¹DÀ“,ƒ`úª¢ð$‹Æ%2ŸŒ—ôð$K/|2>^ÒCÀ“,=¼|éÿ€€'Y ù-Œ4À õ$ QVÒoa”…PôuO²h\|nð$KLo.Ó+TÔ“,FYIo.ËB(úº'Y4.>7“èìLˆ†ñcÈJÀ@ÍeP»vSO ø8îc4$EÅþƒ\If±†.¸à‚LòØ×µ!ðøã ö?üðD¯½¹L@áå…€'Yy!ëëM àI–€Â'Ê Ø‘Œ¥Ä÷΄hA‹ ›‰ºR­C^!šðk¯½&D^RXXh±Õ‰ËIxk¢‘¤*S¦LÑŸ‹_Ü5ÕûÒ);’ têÔ©éô¡Ä² ö€J¼žé nçÎmÀ!øý÷ß/C† ÉôcŠÕ7iÒ$ èJÔ_¢ø’K.ïY¬\øäõ×_·ÚäAJ¢—§[]¦ò B/øá‡˜Æ|òÉÖ`b{~òäÉR«V-9묳䯿þ’nݺÉC=$Çî%jåvÝuW!LQm‰~»á† èÄgŸ}&³gÏ6ð®¸â 9ôÐC @¢éê2Ùâ…ß|óÍâ…H½„x&X½K»º8~úé§Ò»wo‹9^¿~}9ðÀí2íE{B VÕǼi"Ú¬NõGîZÈ5×\cÚõá‡;“ˆÁHƒ¨Z™Ë.»Lös–ÕC`{ÂδoßÞ"ø¢Ý¸—@‚¸è·Þz«ó¥—^’—_~Ù"·mÛÖ¢§üî»ï–o¾ùFöß¹å–[L;=øàƒRPP`Ñ„ xOŒNÆ:=''GhX=õÔS¢AetŒÕ‘G)ƒ ²¾i22vôõÞ{ï kq;Á ÷È#fÓ§O·~2;]I[“i´Y!ö7q»7nl¹îºë¤yóæ(Eßzë-k‰_Ö¨¸2™kûÅ_êyúé§¥{÷îrÚi§ø€á„Aÿøãå¶Ûn³™ÊÒtÄaâ3AŒp„ðÊ.žP8mõ È"3{©Ÿ6°Ü¸:ÈÈ‘#­8Ú²Ι€õÀ ûL0z®=öØcB(é»îºË&“bß}÷‚±žqÆ–Ï–¡«ù: ÓùóÏ?Kÿþýmr€Á¢E‹äÉ'Ÿ”;ï¼Sî¸ãú¨­Hi~ !ðÁ÷6l˜MœuÈØ³gOÉÍÍ5<ðV’äƒ5ƒv²ð@³B*úж/Æ£{î¹Ç|H«Dÿœ~úé‰gb~i_”„1ˆº•Wì'ÖÕÆÚ~w ¸8Ù8® ‘˜eh6Å Î/c` N;2tèPó5ð¿(ïHغukÉËË3Ç=ln]}QGˆÅJ–€¤’ ‰J€ÆÇdPJm€3OŸœ¶¢>fü:Èåî…´3ÉÁ…•}q&Ø™J&jØ´S7 4&«Ü° ©¨ŸÊÕ ÉXI²*Å̺±à>|¿¨ÉFýøaa÷"üœ²Ò,ÈðߨAøW2ÿ똊=zØ ,Ü)™š,ÎHÎwçQ׸T F=€x¬,³¥ Ħ\iÂ@0¨ÉÂàEåSípq}¡¾ðà&Œû t”à{…ý¯púžØ\s+ñp9Ò%ÕŸ\.óŒk2f1ÉN:ÂLD[¹Yè¶3’Á@óE/•g±m†B;­k¡ô%L¢òn3YùÊãùëD“1‹Ó%M"™\ÿJ0îÇLU”$÷o]´ƒ [ÏMî[¹¬.“âÏ×sÔNÈXÿf¬뵌·^uº”‰Qò›±Å|²õ|¾ùî—K½¹,`}­!<ÉB`ødù àIV>¸úZCü'ï@f9K*·IEND®B`‚mysql++-3.3.0/doc/html/refman/functions_func_l.html000644 000765 000024 00000007113 14042362133 023020 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
MySQL++  3.3.0
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadParamCount-members.html000644 000765 000024 00000014563 14042362133 026715 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::BadParamCount Member List

This is the complete list of members for mysqlpp::BadParamCount, including all inherited members.

BadParamCount(const char *w="")mysqlpp::BadParamCountinlineexplicit
Exception(const Exception &e) MAY_THROW()mysqlpp::Exceptioninline
Exception(const char *w="")mysqlpp::Exceptioninlineprotected
Exception(const std::string &w)mysqlpp::Exceptioninlineprotected
operator=(const Exception &rhs)mysqlpp::Exceptioninline
what() constmysqlpp::Exceptioninlinevirtual
what_mysqlpp::Exceptionprotected
~BadParamCount()mysqlpp::BadParamCountinline
~Exception()mysqlpp::Exceptioninline
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1DateTime.html000644 000765 000024 00000112726 14042362133 024301 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::DateTime Class Reference
MySQL++  3.3.0

C++ form of SQL's DATETIME type. More...

#include <datetime.h>

Inheritance diagram for mysqlpp::DateTime:
Collaboration diagram for mysqlpp::DateTime:

Public Member Functions

 DateTime ()
 Default constructor.
 
 DateTime (unsigned short y, unsigned char mon, unsigned char d, unsigned char h, unsigned char min, unsigned char s)
 Initialize object from discrete y/m/d h:m:s values. More...
 
 DateTime (const DateTime &other)
 Initialize object as a copy of another Date.
 
 DateTime (const char *str)
 Initialize object from a C string containing a SQL date-and-time string. More...
 
template<class Str >
 DateTime (const Str &str)
 Initialize object from a C++ string containing a SQL date-and-time string. More...
 
 DateTime (time_t t)
 Initialize object from a time_t.
 
int compare (const DateTime &other) const
 Compare this object to another. More...
 
const char * convert (const char *)
 Parse a SQL date and time string into this object.
 
unsigned char day () const
 Get the date/time value's day part, 1-31.
 
void day (unsigned char d)
 Change the date/time value's day part, 1-31.
 
unsigned char hour () const
 Get the date/time value's hour part, 0-23.
 
void hour (unsigned char h)
 Change the date/time value's hour part, 0-23.
 
bool is_now () const
 Returns true if object will evaluate to SQL "NOW()" on conversion to string.
 
unsigned char minute () const
 Get the date/time value's minute part, 0-59.
 
void minute (unsigned char m)
 Change the date/time value's minute part, 0-59.
 
unsigned char month () const
 Get the date/time value's month part, 1-12.
 
void month (unsigned char m)
 Change the date/time value's month part, 1-12.
 
 operator std::string () const
 Convert to std::string.
 
 operator time_t () const
 Convert to time_t.
 
unsigned char second () const
 Get the date/time value's second part, 0-59.
 
void second (unsigned char s)
 Change the date/time value's second part, 0-59.
 
std::string str () const
 Return our value in std::string form.
 
unsigned short year () const
 Get the date/time value's year part. More...
 
void year (unsigned short y)
 Change the date/time value's year part. More...
 
- Public Member Functions inherited from mysqlpp::Comparable< DateTime >
bool operator== (const DateTime &other) const
 Returns true if "other" is equal to this object.
 
bool operator!= (const DateTime &other) const
 Returns true if "other" is not equal to this object.
 
bool operator< (const DateTime &other) const
 Returns true if "other" is less than this object.
 
bool operator<= (const DateTime &other) const
 Returns true if "other" is less than or equal to this object.
 
bool operator> (const DateTime &other) const
 Returns true if "other" is greater than this object.
 
bool operator>= (const DateTime &other) const
 Returns true if "other" is greater than or equal to this object.
 

Static Public Member Functions

static DateTime now ()
 Factory to create an object instance that will convert to SQL "NOW()" on insertion into a query. More...
 

Additional Inherited Members

- Protected Member Functions inherited from mysqlpp::Comparable< DateTime >
virtual ~Comparable ()
 Destroy object. More...
 

Detailed Description

C++ form of SQL's DATETIME type.

This object exists primarily for conversion purposes. You can initialize it in several different ways, and then convert the object to SQL string form, extract the individual y/m/d h:m:s values, convert it to C's time_t, etc.

Constructor & Destructor Documentation

◆ DateTime() [1/3]

mysqlpp::DateTime::DateTime ( unsigned short  y,
unsigned char  mon,
unsigned char  d,
unsigned char  h,
unsigned char  min,
unsigned char  s 
)
inline

Initialize object from discrete y/m/d h:m:s values.

Parameters
yyear, 1000-9999
monmonth, 1-12
dday of month, 1-31
hhour, 0-23
minminute, 0-59
ssecond, 0-59

◆ DateTime() [2/3]

mysqlpp::DateTime::DateTime ( const char *  str)
inlineexplicit

Initialize object from a C string containing a SQL date-and-time string.

String must be in the HH:MM:SS format. It doesn't have to be zero-padded.

◆ DateTime() [3/3]

template<class Str >
mysqlpp::DateTime::DateTime ( const Str &  str)
inlineexplicit

Initialize object from a C++ string containing a SQL date-and-time string.

This works with any stringish class that declares a c_str() member function: std::string, mysqlpp::String...

See also
DateTime(const char*)

Member Function Documentation

◆ compare()

int mysqlpp::DateTime::compare ( const DateTime other) const
virtual

Compare this object to another.

Returns < 0 if this object is before the other, 0 of they are equal, and > 0 if this object is after the other.

Implements mysqlpp::Comparable< DateTime >.

◆ now()

static DateTime mysqlpp::DateTime::now ( )
inlinestatic

Factory to create an object instance that will convert to SQL "NOW()" on insertion into a query.

This is just syntactic sugar around the default ctor

◆ year() [1/2]

unsigned short mysqlpp::DateTime::year ( ) const
inline

Get the date/time value's year part.

There's no trickery here like in some date/time implementations where you have to add 1900 or something like that. It simply returns the year in natural form, in the range 1000-9999.

◆ year() [2/2]

void mysqlpp::DateTime::year ( unsigned short  y)
inline

Change the date/time value's year part.

Pass the year value normally; we don't optimize the value by subtracting 1900 like some other date/time implementations.


The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ReadDefaultGroupOption__coll__graph.png000644 000765 000024 00000014574 14042362133 031505 0ustar00tangentstaff000000 000000 ‰PNG  IHDR–“lÌàQsRGB®Îé6IDATxí”Å×Å,K0ü ‚ A "(F$F<¨ˆ 1€€D” õ€ *xLˆ‚$‘¤€ $ ‚‘ I‰"a¾ú=©ùzz{v{pWfØzçÌNwuuuõ­[¯^U÷ÎÍ1&ÎÙŒ@Þl.ÏçP±rG¬ÕzȈ5vìXÉ“'ûä >øà!cø!#Ö—_~)Ï>û¬0wpŸìÇà£>’Ÿþ9÷ëݱ»ð‚À!óXÿÉݹ‹2±ô‡÷…óÞ·—ùÝ-X°@J”(!Çw\æCݵk—LŸ>]~øá)]º´ÔªUK¿Ãœ>oÞ<)Y²d¶Õ%Ì5s2O®öX½{÷–©S§f ¾Ë—/— /¼PžþyÙ²e‹0ë­Q£†Œ1"nùéî»ïÖãß|óüöÛoqó¦Ú¤&VÛ¶m¥yóæròÉ'K½zõ"”+WNlýúõÒ¥KmH@ß¹s§T­ZU6nÜ(<òˆ”)SF÷¿ûî;m“¾}ûê¹—^z©Ô¯__.\m«7ß|Sš5k¦ùO<ñD7nœ;çœs¤U«VêIn¸áÙ±c‡¦_qÅòË/¿è¬ëª«®Ò´:HݺueòäÉÒ­[76l˜ 2DZ´h!»wï– ²n¹åyçw¤k×®²lÙ2Ù¼y³ìÝ»WZ¶l)ÇsŒT®\Y>ÿüs-¿fÍšxW°€¼ÉlIM¬Õ«WËܹseÔ¨Q²uëV:t¨0NOOWP½zuMàO?ýTòçÏ/‹/–‰'Ê¢E‹”,ýúõÓ£±9ÿþûï—I“&EI¹ëÖ­“?þXFŽ©äíØ±#É2þ|)Z´¨@NˆL¹Ø\ Gy¤~Î;ï‘Y³fézÓM7I§N´H– 6D£ó€C2[R àš6m*ÕªU“³Ï>[7n,gœq†œþù²fÍÁs,]ºT ^¯‚w[µj•6Öi§&ýû÷×áŽF®S§Ž4lØPN9å” mrÝu×IÅŠµŒmÛ¶)ÈôÐCiœt×]wE‰IñxE¼ ö÷ß+‰tçÀ€‚𘿬… k'¤Ö /ׂp;w–%K–Èï¿ÿ® É?þ¸Ö•ìÃfÒ«B… ŠyÞ¼y¥X±bý.P €4hÐ@I5~üx% Îâ+žæ¾ûî“Ö­[k#0„Zã<¿)R$š´gÏõP$ØtÒðšñ줓N’)S¦ÄÆ»@š²eËjz˜²ðnÅ‹–a÷ï߯ûGu”~çË—O•£™’p#鉕fx©=zhDãŽ=Z $ 3ï½÷žz«+¯¼RÉF#ÑpA+ÒŸ}ö™6àìÙ³• xHlÚ´i²oß>™0a‚Æ<¤AÜíÛ· žm /óþûïË÷߯ûýõ—ôéÓGc¬´´4M * æ5¼0„k2±(UªTJÎóyo*U¶í3Fê i6mÚ¤±û—\r‰´oß^ƒhˆÔ®];aHd8­T©’Ҷ瓟²0†ÏSO=U6lØ ú¤ã)˜@ <àÀ5/û_|¡õÕWklÔ¤I]f€xMb2Hß³gO='¨,HÅPÎ$ÄZ£Fd̘1Â$‚!¡ÜoÞû÷Kš}^ô;fÖˆyVø¯/mÚˆYÿ‰˜Fˆ–ez{ÄxŽˆ œ£il˜ÆÖ4£EÌô>zìé§ŸŽ˜x&bH1ž&šn†œˆ#ÆËEÓ²Ú0³S½¶!cLÖxeQ¾¿žœÈ5½u‰),ÄŽ î#Æû…È™3YRÒcÙ^É:ÐÍ7߬kAÇ{¬Mâ1¦ê~óÆ.þcì3Å÷eyã3ÿqÿ~Á‚¯M¾ ²˜áY"× :ÿP§¥4±ÚˆX=OÄXZð‡mÚ´ <}íÚµbã£À $fgY \öeMib1O”T mggõ#Ž8ÂnÆ|gåáb2g±“eeq©¤8œò³Â¤@ÑU"#9ºe]ê‡~È¥Ì'=ýØHåS¦¾`ûÀdÝ9”#åf¤›Kñ#РA_ó|ñ7Y±â9ÿ!·€€ @ñ'mݺËj•y4“fž]®ðvû8b€âO?~žy¦—fžþm^ƒ™é?ìöpÄ ÅŸ4xðWæÍ‚Ýf¥}¿|ðÁ\³"ï¢?Fþ}G,?"¾ý?þØ*?þ¸&&õË/—Ä컌8beÄ$&e̘¹1‹¤Û·ï–áÿŽÉãv2"àˆ•“˜”Áƒ¿6o§î‰¦1‰žä¹;›#VÈöç1Ž{$$X&›#Vx¬\ÎpÄ à á³p8b…ÃI‡A÷VCH°L6G¬ðX¹œ àˆ•X.kx±Âcår&€€#V`¹¬ápÄ •Ë™ŽX!ÁrË !:Í+$^¬º»å†`™lŽXá±r9@À+°\Öð8b…ÄŠ˽Ý,“Í+$VÄXîí†`9b…ÊåL ç±Bâå–Bu ›#VH¼ÜrCH ±ÊåN ç±Bâå†Â@Èæˆ/7†Ê+1 \îÄHÚÿ„FÝ u­d±ôôæ÷BF2ee²TI%÷Î:묤©·"I;B,ôù„døìÙó‡ù©ÈIQð¸óÎ;UGÑۘɴ´ÄJ&\]GÀ+qÌÜ!pÄ ’Ë’8‡Å¯Í l‰h$Zˆz£²ÏÂD¤2H,Þ96ë̘1Cµ™‘®]»vTïÐæ‰÷fu­Zµ¢2¾ñò.éñ[ EîðöÛoWíd„º_|ñEU’'¸0`€¼òÊ+îâ×_ÕÙT†Y$ hY¿~}1:‡ªA>s½zõT$3Þ©Þ: šŠðxn±”öXFtRårQ;µR»o¾ù¦ªŸvèÐAgp'œp‚Jè"P¾páBU¶ÇkA04£Ñüꫯäúë¯W""\YÉqgöÌ3Ϩä/ê©ÖPs}饗­DôŸÑOD7º_¿~*zî­Ã‚ TxœÙn³fÍT©žYïàÁƒUõ5¨.ö:©øÒ«P¡BÒªU+¹à‚ TÂ÷ùçŸWñqë›7o®¹ì²Ë”³fÍ’îÝ»«4/ ð»wït Q¯GGšFSð…^P‰_ôçÏŸ¯ç~÷Ýwrúé§gÐf¾øâ‹UzݺuZÖÈ‘#¥wïÞÒ±cG•öÖ­h¤z‘6а2sæL•~íµ×âÖ% eëœÒÄâ&ž{î9ó ÆŸjlE#¡ÿŒ'C=B4 ùÝPÜz5{óx3¼D<å”STí²¡#}æ™gª€8yÑ–ÆÐl¦| ‚V¬XQu ÑÆóy렙̟‰' Ã(úÓݺuSRs,¨.öœTüNibýôÓOòÔSOiPlt…}‚êáÇgh ¯´¯=èUY5šÍ:tþòË/:<’ÇJùžtÒI:Œâ™¼†º+DƼâšFçYÅÆ½yÙ&öÃ[ZQLÈ!-T=¢RšXåË—¼Ô¸qã´Ñð*4ª2ô$jx£¥¨§1b^x¡òBì½÷ÞÓ8íŽ;îÐ}HƱٳg«§²ÞÑ[<çå—_-Ÿ2ªGKéà½@òÄOˆ|Ô KÎð6eʹí¶Û¤N:Ún4jVFo4¢»víª1±D5j”4nÜX=ÞïðF¼„­ZµJ‡· 6hEY<ÇóÖ|>ø Æ…Lè“'O&9ƒ…©o†“’)Á””f‚툙5…®›#& É¿}ûöˆjbÒ²Ú2dHdÙ²eZ–™ÕE:uêsŠÊ"K—.I3ž,Ò¹sçˆ!UĬ‘Å‹W3äFŒwɛȎ™©FÌ 8‘SþÓ¼)í±¼”!ÌoñDÄýù¼û}ó“ÛK±bÅä?þéÓ§{KÙ²ecö½;6&ó¦Å«qÛál‡ ±²«‘º5j¤A63Å´´´,‹fèt‹€#V,ºÇ2íÎÏ+eȘ‹RzV˜‹Ú)ånÕ½A²ÉŽ8¢²l*aÙLyFÎg›;w®Îºï6‚pÄ Æ%š:räLóÂ?žId8:Ô ‡Q€âl8bÅÆ&¿ûî·æ½^m±i³f-“?ÿÜiwÝwŽX Ø¤¹sW˜Ø*–Tc8?~¾Íæ¾pÄ Å&130Pß±c·y•y†Íæ¾pÏ @±I'.д͟ÿŸ·KIç=)Þ€X¸p•Æ[GUÀfwßÜÊ» ÿæÞ½û¢ëw¾5¯>¯3/^«ÙòçO3¯0§ûOqûp+*KñÁ J7ÿ8‘&ÿû_ÁLÎp‡,.ƲHdñÍ›ÍNº7 <‡±<`d¶iÂ*§¥“@¾cŽX>@Ünö àˆ•=8ºR|8bù‰·ëb¬xȧ;bã’!ÕÅX É4Á+SxÜÁƒEÀë`‘sçeŠ€#V¦ð¸ƒ‹€#ÖÁ"çÎËG¬LáqG¬È¹å†@Èæˆ/·Ü(G¬Ä€r¹CÀy¬x¹¡0$P²9b…ÄË …!rÄJ (—;1œÇ ‰— Cu ›#VH¼ÜP(G¬Ä€r¹CÀy¬Äðr¹C"àˆ¨¼yô CfÏõÙ±BR`ÿ~´©CfvÙÜïc9ä^¹ócùôI÷ À oÞ‚‘´´#6ØÀT<¼óŸÐ¨0 Cƒð£3‡@XEœÊk.Æò¢á¶³ G¬lƒÒäEÀË‹†ÛÎ6bb¬l+õ_d$ÛT0HI+ÑbQD]±bEô44rP ³r»Ñ n|ýõ×*޹xñb12rz6úÔ*TˆQJ *–ühL×®];èp`úÕ?þø£T­Z5ÃqÊP¨@©µR¥JZ‡ ™ABÒy¬wß}WÊ,P§å•WT±ï±cÇÊ-·Ü"h9ÿC$ëß¿¿ùÉÈñZþ| wß}·îëÁ8Z´h¡Ê¬q&#®Ù«W/=† ú?ü ÛS§NUýj¾qãFyùå—Íd°„=73cÆ UE&÷šk®‘1cÆhADÛJ×¢FJO»÷Þ{0† &œ[¸paÛF² ÕÒ#FÈñǯòm(Ò[›0a‚,X°@Ðh6b’ªLZ£F iÙ²¥ŠzñÅ*n¦¹ªáüè£ÊÃ?,eÊ”»MYèÒàÖ¨e¢ýÖ[o©ú<Ú„=ôöxzÿ€TÓÉÞ¶mÛªú<êöFœSEÍ­|/eÖ­[WêÕ«§Åã!™USO¼bŸ>}dþüùZßöíÛ 3gÎAòwôèÑ!QpEÊîÚk¯U…W®{î¹ç ž 4h å#„Ž"ë7ß|£"ë­S×Ò¥Këqê5pà@óûʼyódæÌ™F¦e©b†ç¦ ø5B:âè¨ÐRg¤ô¶lÙ¢ª²/¾øb\Œõ"!ÿ$ì±påx‚ûï¿_*W®,¯¾úªöšZµj©G`¨¡Â„ˆ77ƒ ’+®¸BÐZ¦œ·ß~[Œ‚©Þ$æUŠß´i“Ó¥Kiݺµ¼ñÆZ&¤@:—}ÀøöÛo5a `Á~Í» pÔ‡éÛ·¯[¥JùùçŸç=zè°ôä“Oª¦3Ðz©6êÂ… #dÞ½{w%L‚§Ç(®–a¢1Y0¿ 5z ³é¤ÙÞmóù¿A\„ǃ1<0$¡žJƒòa#‡ôx(êF‡ÀèÕEŠÑmHÏcqO|Ê—/¯å3ìP6çÜxãz¾ýiñÄË—/ê4¡°{Ž÷›6  DÎ1D×ñ~\Óš­3÷Šw³Fž}ûöÙ]ýö_+Œc :°sPÄ *È›™Ï‹-ªÃÊ,ñ1nŸ!’ÞCoåñ o9Ä x†!†«ûŒà<†W£,¼š[ü±CÃä‡X7Ýt“ÆH •œÏ°m„õ~ 4u¥“pM¾½g˧‘Ÿ}öYÁËÒI(Ouë­·*L¼FìÅ,U{¼å2sµ3YYãb¼…5[ XÓ‘ˆÄAøØcéi|÷ë×O(ÓnÛò¼ßôD€ÅÕ3|ÈR>Á4D î÷Üs^‡ašÉÅSO=%Ó¦M<´×»pŒu¡ñxwÏž=u–HùFéÞ[ ¼öÚkÂ,‚Ÿxâ‰z-†w‚ò‰'ª—!À,&t.†»A&^%f¢£6lØP; õ¿ôÒK£×±çÐù¸¼2Ä#V£ÓW¯^]ãO¼)"ê¶ÃÄÃ8Zpˆ˜Ÿã¦’¿þúë¿~VHïÃsž‡žHOó6  C*ft‡À2dˆöB@~K¼K.¹D ÁðäJõ¤ƒøy)ß;TF|DƒS?{Œa”k„5ââÅ‹kÐî?Lˆ)/nx,:Û ¡A†ÇµC$ÀロgÐ9¤q/\Ó¶‰ÍÇ0Hǰ–(ÆöY!Ë9Ö²ÕcQ(Ã=˜Ùˆ÷h z¥ß²#è8=1;HE]àýæMó^ŸY_¢fã´ óÀÄÞÃ! BÇ#Ç-©Ø‹°õòÞ çZó’ʦý[Œ³X'œp‚É6p´Íê›Ù˜õJäõ»ö|â€ÿ·Æ’q³+Ϫ¶:2+›!˜¥Š UðÌÎK¥cÙqxŸ×DIEÑôB/aÖíº”÷Òñz7OVÛÇ×8ŒX‹¡ˆô6mÚDƒÿ óíŠ71Š?Ð ÊŸÊiÙq¶{¬d”8øEB»îEYa§§Ò)ü+þLDìŠ7Ãü²eËô6™‰B8Èɳ?Ê ÞaI…¸õ#Ò!mn³l÷XÉà’%K„áÚK*ê̬ ­ø{W¼Y9_¹r¥Þ&³SbIfqx?–G˜áòeÖ• $ ǹÍr±˜q±æã7Ö¡lðì_ñç˜]ñ¶q‹µÌ‰YOb…›…U¬dÉ’úèŠ'ï,Pæ6ËuÄbÅÚz&ocãmìš‘wÖå]ñ÷ægIÂ;›bÚi1ï$„¸Ñ®yÏ?Ü·s±xpÎCYâ,Öt°éæ]ÿµk×êó@öã­øC2k,IJžÄ°Èš+òçœsŽ=œë¿s]ðÎÚ Á|XÇ»àQX%gQ Zñ·+ÞïCâfµþ‘GQOÅÚÄ"÷›>ýé‡ó~ެ¼§ `ˆ`Û>T§ÞñVü9æ]ñf#^#8g‘27 þ“•w.”*æ]a÷×9h-Ç{Ùü,+ðŒÎY,¹n(Œ½ýŒ{ñVü3æt)™!àˆåC'hµß—Åí†@ ×Í C`â²dfF53ív¿Mç· Ö›L0ðÿvC̬0;ˆêÊp€€ rG¬Õêˆå8#üü´Ã_¢ ²IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadOption.html000644 000765 000024 00000037312 14042362133 024461 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::BadOption Class Reference
MySQL++  3.3.0
mysqlpp::BadOption Class Reference

Exception thrown when you pass an unrecognized option to Connection::set_option(). More...

#include <exceptions.h>

Inheritance diagram for mysqlpp::BadOption:
Collaboration diagram for mysqlpp::BadOption:

Public Member Functions

 BadOption (const char *w, const std::type_info &ti)
 Create exception object, taking C string.
 
 BadOption (const std::string &w, const std::type_info &ti)
 Create exception object, taking C++ string.
 
const std::type_info & what_option () const
 Return type information about the option that failed. More...
 
- Public Member Functions inherited from mysqlpp::Exception
 Exception (const Exception &e) MAY_THROW()
 Create exception object as copy of another.
 
Exceptionoperator= (const Exception &rhs) throw ()
 Assign another exception object's contents to this one.
 
 ~Exception () throw ()
 Destroy exception object.
 
virtual const char * what () const throw ()
 Returns explanation of why exception was thrown.
 

Additional Inherited Members

- Protected Member Functions inherited from mysqlpp::Exception
 Exception (const char *w="") throw ()
 Create exception object.
 
 Exception (const std::string &w) throw ()
 Create exception object.
 
- Protected Attributes inherited from mysqlpp::Exception
std::string what_
 explanation of why exception was thrown
 

Detailed Description

Exception thrown when you pass an unrecognized option to Connection::set_option().

Member Function Documentation

◆ what_option()

const std::type_info& mysqlpp::BadOption::what_option ( ) const
inline

Return type information about the option that failed.

Because each option has its own C++ type, this lets you distinguish among BadOption exceptions programmatically.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/mystring_8h_source.html000644 000765 000024 00000311632 14042362133 023321 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mystring.h Source File
MySQL++  3.3.0
mystring.h
Go to the documentation of this file.
1 
5 /***********************************************************************
6  Copyright (c) 1998 by Kevin Atkinson, (c) 1999-2001 by MySQL AB, and
7  (c) 2004-2008 by Educational Technology Resources, Inc. Others may
8  also hold copyrights on code in this file. See the CREDITS.txt file
9  in the top directory of the distribution for details.
10 
11  This file is part of MySQL++.
12 
13  MySQL++ is free software; you can redistribute it and/or modify it
14  under the terms of the GNU Lesser General Public License as published
15  by the Free Software Foundation; either version 2.1 of the License, or
16  (at your option) any later version.
17 
18  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
21  License for more details.
22 
23  You should have received a copy of the GNU Lesser General Public
24  License along with MySQL++; if not, write to the Free Software
25  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
26  USA
27 ***********************************************************************/
28 
29 #if !defined(MYSQLPP_MYSTRING_H)
30 #define MYSQLPP_MYSTRING_H
31 
32 #include "common.h"
33 
34 #include "datetime.h"
35 #include "exceptions.h"
36 #include "null.h"
37 #include "sql_buffer.h"
38 
39 #include <string>
40 #include <sstream>
41 #include <limits>
42 
43 #include <stdlib.h>
44 #include <string.h>
45 
46 namespace mysqlpp {
47 
48 #if !defined(DOXYGEN_IGNORE)
49 // Doxygen will not generate documentation for this section.
50 
51 namespace detail
52 {
53  template<typename T, bool is_signed = std::numeric_limits<T>::is_signed>
54  struct conv_promotion;
55 
56  template<>
57  struct conv_promotion<float>
58  {
59  typedef double type;
60  };
61 
62  template<>
63  struct conv_promotion<double>
64  {
65  typedef double type;
66  };
67 
68 # if !defined(NO_LONG_LONGS)
69  template<>
70  struct conv_promotion<unsigned long long>
71  {
72  typedef unsigned long long type;
73  };
74 
75  template<>
76  struct conv_promotion<long long>
77  {
78  typedef long long type;
79  };
80 # endif
81 
82  // preserve existing behaviour, char converted as signed long
83  template<>
84  struct conv_promotion<char>
85  {
86  typedef long type;
87  };
88 
89  // all other types use signed/unsigned long
90 
91  template<typename T>
92  struct conv_promotion<T, true>
93  {
94  typedef long type;
95  };
96 
97  template<typename T>
98  struct conv_promotion<T, false>
99  {
100  typedef unsigned long type;
101  };
102 } // namespace detail
103 
104 class MYSQLPP_EXPORT SQLTypeAdapter;
105 #endif // !defined(DOXYGEN_IGNORE)
106 
138 
139 class MYSQLPP_EXPORT String
140 {
141 public:
144  typedef const char value_type;
145 
147  typedef size_t size_type;
148 
150  typedef const char* const_iterator;
151 
155 
156 #if !defined(DOXYGEN_IGNORE)
157 // Doxygen will not generate documentation for this section.
158  typedef int difference_type;
159  typedef const char* const_pointer;
160  typedef const_pointer pointer;
161 #endif // !defined(DOXYGEN_IGNORE)
162 
167  String() :
168  buffer_()
169  {
170  }
171 
179  String(const String& other) :
180  buffer_(other.buffer_)
181  {
182  }
183 
196  explicit String(const char* str, size_type len,
198  bool is_null = false) :
199  buffer_(new SQLBuffer(str, len, type, is_null))
200  {
201  }
202 
210  explicit String(const std::string& str,
212  bool is_null = false) :
213  buffer_(new SQLBuffer(str.data(), static_cast<size_type>(str.length()),
214  type, is_null))
215  {
216  }
217 
225  explicit String(const char* str,
227  bool is_null = false) :
228  buffer_(new SQLBuffer(str, static_cast<size_type>(strlen(str)),
229  type, is_null))
230  {
231  }
232 
234  ~String() { }
235 
242  void assign(const char* str, size_type len,
244  bool is_null = false)
245  {
246  buffer_ = new SQLBuffer(str, len, type, is_null);
247  }
248 
255  void assign(const std::string& str,
257  bool is_null = false)
258  {
259  buffer_ = new SQLBuffer(str.data(),
260  static_cast<size_type>(str.length()), type, is_null);
261  }
262 
269  void assign(const char* str,
271  bool is_null = false)
272  {
273  buffer_ = new SQLBuffer(str, static_cast<size_type>(strlen(str)),
274  type, is_null);
275  }
276 
281  char at(size_type pos) const;
282 
285  const_iterator begin() const { return data(); }
286 
288  const char* c_str() const { return data(); }
289 
290 #if defined(MYSQLPP_PLATFORM_VISUAL_CPP)
291 // Squish VC++ warning about "possible loss of data" for these conversions
292 # pragma warning(disable: 4244)
293 #endif
294 
297  template <class Type>
298  Type conv(Type) const
299  {
300  // Conversions are done using one of double/long/ulong/llong/ullong
301  // so we call a helper function to do the work using that type.
302  // This reduces the amount of template code instantiated.
303  typedef typename detail::conv_promotion<Type>::type conv_type;
304  return do_conv<conv_type>(typeid(Type).name());
305  }
306 
307 #if defined(MYSQLPP_PLATFORM_VISUAL_CPP)
308 # pragma warning(default: 4244)
309 #endif
310 
317  template <class T, class B>
319  {
320  if (is_null()) {
321  return Null<T, B>(null);
322  }
323  else {
324  return Null<T, B>(conv(T()));
325  }
326  }
327 
333  int compare(const String& other) const;
334 
340  int compare(const std::string& other) const;
341 
350  int compare(size_type pos, size_type num, std::string& other) const;
351 
357  int compare(const char* other) const;
358 
369  int compare(size_type pos, size_type num, const char* other) const;
370 
373  const char* data() const;
374 
376  bool empty() const { return size() == 0; }
377 
380  const_iterator end() const;
381 
384  bool escape_q() const;
385 
387  bool is_null() const;
388 
390  void it_is_null();
391 
400  size_type length() const;
401 
407  size_type max_size() const { return size(); }
408 
411  bool quote_q() const;
412 
417  size_type size() const { return length(); }
418 
421  void strip_leading_blanks(std::string& s) const
422  {
423  const char* pc = data();
424  if (pc) {
425  size_type n = length();
426  while (n && (*pc == ' ')) {
427  ++pc;
428  --n;
429  }
430 
431  s.assign(pc, n);
432  }
433  else {
434  s.clear();
435  }
436  }
437 
445  void to_string(std::string& s) const;
446 
449  {
450  return buffer_ ? buffer_->type() : mysql_type_info::string_type;
451  }
452 
454  String& operator =(const std::string& rhs)
455  {
456  buffer_ = new SQLBuffer(rhs.data(),
457  static_cast<size_type>(rhs.length()),
459 
460  return *this;
461  }
462 
467  String& operator =(const char* str)
468  {
469  buffer_ = new SQLBuffer(str,
470  static_cast<size_type>(strlen(str)),
472 
473  return *this;
474  }
475 
481  String& operator =(const String& other)
482  {
483  buffer_ = other.buffer_;
484 
485  return *this;
486  }
487 
492  template <typename T>
493  bool operator ==(const T& rhs) const
494  {
495  return compare(rhs) == 0;
496  }
497 
501  bool operator ==(const mysqlpp::null_type&) const
502  {
503  return is_null();
504  }
505 
510  template <typename T>
511  bool operator !=(const T& rhs) const
512  {
513  return compare(rhs) != 0;
514  }
515 
519  bool operator !=(const mysqlpp::null_type&) const
520  {
521  return !is_null();
522  }
523 
530  char operator [](size_type pos) const { return at(pos); }
531 
533  operator const char*() const { return data(); }
534 
536  operator signed char() const
537  { return conv(static_cast<signed char>(0)); }
538 
540  operator unsigned char() const
541  { return conv(static_cast<unsigned char>(0)); }
542 
544  operator int() const
545  { return conv(static_cast<int>(0)); }
546 
548  operator unsigned int() const
549  { return conv(static_cast<unsigned int>(0)); }
550 
552  operator short int() const
553  { return conv(static_cast<short int>(0)); }
554 
557  operator unsigned short int() const
558  { return conv(static_cast<unsigned short int>(0)); }
559 
561  operator long int() const
562  { return conv(static_cast<long int>(0)); }
563 
566  operator unsigned long int() const
567  { return conv(static_cast<unsigned long int>(0)); }
568 
569 #if !defined(NO_LONG_LONGS)
572  operator longlong() const
573  { return conv(static_cast<longlong>(0)); }
574 
577  operator ulonglong() const
578  { return conv(static_cast<ulonglong>(0)); }
579 #endif
580 
582  operator float() const
583  { return conv(static_cast<float>(0)); }
584 
586  operator double() const
587  { return conv(static_cast<double>(0)); }
588 
590  operator bool() const { return buffer_ ? atoi(c_str()) : false; }
591 
593  operator Date() const { return buffer_ ? Date(*this) : Date(); }
594 
596  operator DateTime() const
597  { return buffer_ ? DateTime(*this) : DateTime(); }
598 
600  operator Time() const { return buffer_ ? Time(*this) : Time(); }
601 
605  template <class T, class B>
606  operator Null<T, B>() const { return conv(Null<T, B>()); }
607 
608 private:
610  template <class Type>
611  Type do_conv(const char* type_name) const
612  {
613  if (buffer_) {
614  std::stringstream buf;
615  buf.write(data(), static_cast<std::streamsize>(length()));
616  buf.imbue(std::locale::classic()); // "C" locale
617  Type num = Type();
618 
619  if (buf >> num) {
620  char c;
621  if (!(buf >> c)) {
622  // Nothing left in buffer, so conversion complete,
623  // and thus successful.
624  return num;
625  }
626 
627  if (c == '.' &&
628  (typeid(Type) != typeid(float)) &&
629  (typeid(Type) != typeid(double))) {
630  // Conversion stopped on a decimal point -- locale
631  // doesn't matter to MySQL -- so only way to succeed
632  // is if it's an integer and everything following
633  // the decimal is inconsequential.
634  c = '0'; // handles '.' at end of string
635  while (buf >> c && c == '0') /* spin */ ;
636  if (buf.eof() && c == '0') {
637  return num; // only zeros after decimal point
638  }
639  }
640  }
641  else if (buf.eof()) {
642  return num; // nothing to convert, return default value
643  }
644 
645  throw BadConversion(type_name, data(), 0, length());
646  }
647  else {
648  return 0;
649  }
650  }
651 
652  RefCountedBuffer buffer_;
653 
654  friend class SQLTypeAdapter;
655 };
656 
657 MYSQLPP_EXPORT std::ostream& operator <<(std::ostream& o,
658  const String& in);
659 
660 
661 #if !defined(MYSQLPP_NO_BINARY_OPERS) && !defined(DOXYGEN_IGNORE)
662 // Ignore this section is MYSQLPP_NO_BINARY_OPERS is defined, or if this
663 // section is being parsed by Doxygen. In the latter case, it's ignored
664 // because Doxygen doesn't understand it correctly, and we can't be
665 // bothered to explain it to Doxygen.
666 
667 #define oprsw(opr, other, conv) \
668  inline other operator opr (String x, other y) \
669  { return static_cast<conv>(x) opr y; } \
670  inline other operator opr (other x, String y) \
671  { return x opr static_cast<conv>(y); }
672 
673 #define operator_binary(other, conv) \
674  oprsw(+, other, conv) \
675  oprsw(-, other, conv) \
676  oprsw(*, other, conv) \
677  oprsw(/, other, conv)
678 
679 #define operator_binary_int(other, conv) \
680  operator_binary(other, conv) \
681  oprsw(%, other, conv) \
682  oprsw(&, other, conv) \
683  oprsw(^, other, conv) \
684  oprsw(|, other, conv) \
685  oprsw(<<, other, conv) \
686  oprsw(>>, other, conv)
687 
688 // Squish more complaints about possible loss of data
689 #if defined(MYSQLPP_PLATFORM_VISUAL_CPP)
690 # pragma warning(disable: 4244)
691 #endif
692 
693 operator_binary(float, double)
694 operator_binary(double, double)
695 
696 operator_binary_int(char, long int)
697 operator_binary_int(int, long int)
698 operator_binary_int(short int, long int)
699 operator_binary_int(long int, long int)
700 
701 operator_binary_int(unsigned char, unsigned long int)
702 operator_binary_int(unsigned int, unsigned long int)
703 operator_binary_int(unsigned short int, unsigned long int)
704 operator_binary_int(unsigned long int, unsigned long int)
705 
706 #if defined(MYSQLPP_PLATFORM_VISUAL_CPP)
707 # pragma warning(default: 4244)
708 #endif
709 
710 #if !defined(NO_LONG_LONGS)
711 operator_binary_int(longlong, longlong)
712 operator_binary_int(ulonglong, ulonglong)
713 #endif // !defined(NO_LONG_LONGS)
714 #endif // !defined(MYSQLPP_NO_BINARY_OPERS) && !defined(DOXYGEN_IGNORE)
715 
716 
717 #if !defined(DOXYGEN_IGNORE)
718 // Doxygen isn't smart enough to recognize these template
719 // specializations. Maybe it's the MYSQLPP_EXPORT tags?
720 
726 template <> MYSQLPP_EXPORT bool String::conv(bool) const;
727 
740 template <> MYSQLPP_EXPORT String String::conv(String) const;
741 
743 template <> MYSQLPP_EXPORT std::string String::conv(std::string) const;
744 
750 template <> MYSQLPP_EXPORT Date String::conv(Date) const;
751 
757 template <> MYSQLPP_EXPORT DateTime String::conv(DateTime) const;
758 
764 template <> MYSQLPP_EXPORT Time String::conv(Time) const;
765 
766 #endif // !defined(DOXYGEN_IGNORE)
767 
768 } // end namespace mysqlpp
769 
770 #endif // !defined(MYSQLPP_MYSTRING_H)
C++ form of SQL's DATETIME type.
Definition: datetime.h:49
C++ form of SQL's DATE type.
Definition: datetime.h:226
Class for holding data from a SQL column with the NULL attribute.
Definition: null.h:171
Holds SQL data in string form plus type information for use in converting the string to compatible C+...
Definition: sql_buffer.h:42
A std::string work-alike that can convert itself from SQL text data formats to C++ data types.
Definition: mystring.h:140
void assign(const char *str, size_type len, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)
Assign raw data to this object.
Definition: mystring.h:242
void assign(const std::string &str, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)
Assign a C++ string to this object.
Definition: mystring.h:255
void assign(const char *str, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)
Assign a C string to this object.
Definition: mystring.h:269
size_type size() const
Return number of bytes in string.
Definition: mystring.h:417
~String()
Destroy string.
Definition: mystring.h:234
size_type max_size() const
Return the maximum number of characters in the string.
Definition: mystring.h:407
String(const String &other)
Copy ctor.
Definition: mystring.h:179
bool empty() const
Returns true if size() == 0.
Definition: mystring.h:376
const char * const_iterator
Type of iterators.
Definition: mystring.h:150
const char * c_str() const
Return a const pointer to the string data.
Definition: mystring.h:288
Null< T, B > conv(Null< T, B >) const
Overload of conv() for types wrapped with Null<>
Definition: mystring.h:318
Type conv(Type) const
Template for converting the column data to most any numeric data type.
Definition: mystring.h:298
const_iterator begin() const
Return iterator pointing to the first character of the string.
Definition: mystring.h:285
const_iterator iterator
Same as const_iterator because the data cannot be changed.
Definition: mystring.h:154
void strip_leading_blanks(std::string &s) const
Returns a copy of our internal string without leading blanks.
Definition: mystring.h:421
String()
Default constructor.
Definition: mystring.h:167
mysql_type_info type() const
Get this object's current MySQL type.
Definition: mystring.h:448
const char value_type
Type of the data stored in this object, when it is not equal to SQL null.
Definition: mystring.h:144
size_t size_type
Type of "size" integers.
Definition: mystring.h:147
String(const char *str, size_type len, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)
Full constructor.
Definition: mystring.h:196
String(const std::string &str, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)
C++ string version of full ctor.
Definition: mystring.h:210
String(const char *str, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)
Null-terminated C string version of full ctor.
Definition: mystring.h:225
C++ form of SQL's TIME type.
Definition: datetime.h:348
SQL field type information.
Definition: type_info.h:159
static const enum_field_types string_type
The internal constant we use for our string type.
Definition: type_info.h:280
The type of the global mysqlpp::null object.
Definition: null.h:50
This file includes top-level definitions for use both internal to the library, and outside it....
Declares classes to add SQL-compatible date and time types to C++'s type system.
Declares the MySQL++-specific exception classes.
Declares classes that implement SQL "null" semantics within C++'s type system.
Declares the SQLBuffer class.
RefCountedPointer< SQLBuffer > RefCountedBuffer
Reference-counted version of SQLBuffer.
Definition: sql_buffer.h:136
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SetCharsetNameOption.html000644 000765 000024 00000030734 14042362133 026642 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::SetCharsetNameOption Class Reference
MySQL++  3.3.0
mysqlpp::SetCharsetNameOption Class Reference

Give name of default charset. More...

#include <options.h>

Inheritance diagram for mysqlpp::SetCharsetNameOption:
Collaboration diagram for mysqlpp::SetCharsetNameOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::DataOption< T >
typedef T ArgType
 Alias for template param.
 
- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 
- Protected Member Functions inherited from mysqlpp::DataOption< T >
 DataOption (const T &arg)
 Construct object.
 
- Protected Attributes inherited from mysqlpp::DataOption< T >
arg_
 The argument value.
 

Detailed Description

Give name of default charset.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ReportDataTruncationOption__inherit__graph.png000644 000765 000024 00000015526 14042362133 033133 0ustar00tangentstaff000000 000000 ‰PNG  IHDR¥“ïÙjsRGB®ÎéIDATxí]”ÅÓ¯;rR‘œ%)I$HP¢ä äÌ”œ£Ê{þA2b€$‰ò%#AáGÎ('’ÄþúWØëÜ0»w»7¸³w]ïínOOwuOõ¯+ôÌN I¤IKÀ98윾èžh <–€¥F‚ã$ Aé¸!ÑJêD\¸pråÊåÄ®%¨>=|ø’&uœ×#9ìe¹rå(,,,AÀI“*U*r*(µùvRt_X”Ž“€¥ã†DwÈ‘>¥†~mtt4+V̶îìÚµ‹8@ðçÊ–-gÞçΣ›7oRÑ¢Emë‹“iMéft6lØ@“&MrsÖ»lMš4¡Þ½{Óï¿ÿNû÷ïçãAƒydT¦Lzôè…‡‡3˜=N@'”¨êÕ«SãÆ)Ož<4nÜ8ªQ£eÏžBBBhíÚµÔªU+×PµiÓ†Ö¯_OsçÎ¥"EŠpyóæñù­[·R¡B…¨D‰\gÖ¬Y®z‡¦FQ­Zµ(kÖ¬4|øp>×£GêÚµ+óÖûõ×_9Ñ¢E4lØ0N:”–,YB³gÏf0îÛ·&L˜@S§N¥½{÷Òœ9sÚÓŠW¯^½åß|óMŠˆˆ hKдiÓx¹,GŽ4eÊÎ8p õíÛ—òåËG… |ãÞ·ÓH”KB»uâÄ Ü³r„tNKÍ&–/_.ræÌ)®^½*R¦L)®]»&"##…4™ââÅ‹"mÚ´âôéÓ"44T¼øâ‹ÜFÉ’%ÅäɓűcÇ„ž3gÎ;wÛ·oAAAbÅŠâøñã"S¦LâòåËBN!'ó” DÌkÛ¶mB‚Órpý.]ºˆÁƒ?q=ÕªU3f̰äuãÆ ,®\¹Âר­[7qýúu‘9sf!'—Xºt©È–-›f]´hÑBȉ!Μ9#Ú¶m+ädy¢-sdsçÎs¶Ž´O™.]:’Nrà(uêÔ¬q`*/]ºD2d Ê•+ÓºuëH.U©R…ä RÁ‚©gÏž$öìÙÃZèìٳ̈́r 4`ícü’ॆ rVýúõYãâ@‚–53´Ôo¼Áç+UªDø€:tèÀ¿Ð¼÷îÝã´ñK‚›’'OÎYf^Ђr2Púôé]U~øáæ]»vmÎ[¸p!_ m¡)›7oNÓ§OwÕ ÄDÀšo;wîÜ|G`’’%Kc š5kFkÖ¬¡Õ«WÒd˜u©¡Ø Âg;þkXüÂT#HHaÞAÐ>Š˜X3·oߦ¦M›r”ȤË QšpñâÅ$ýUÎÿàƒ4ýúõ#˜Z˜h˜zhC¸«V­RMYò*]º4Õ«W¤ÏÈå U­Z•µ+–ˆÈá:̤úmΘc'x¶æ>Ä%Ð1×qw,µ )Æót CTT”2d:êŠ+ ©M9ÀQùt6mÚ$¤ùRêl¿ryGœf’‘¾9Ëí1|_MîÈÌ þ¡U¿”ÖwÇ'Ðóƒ0Ûœvð•ú÷ïï§„àÏa=Ï‚‰xp×?óÖ­[®@Dñ‚‰ˆß\©óÞüÚÉ+®íâúäR™ë:ãZï?(w(Aú”JpÞõ Ym¥"ccþ³Ï>k<ŒWÚN^ñêˆC*'èèÛ!2ÖÝðRŽ4ßöäypp éo¾(—–ŽË垣w/Çâ?/Žå&>yîÌ3Âᇫ(Ÿ BéÙg«Ó±cç¦Ï­ÉS›oôÓ7ß씜D®5î±›f¡AO \»v‹Ž=/£ôGò‰ ½ñ䦫C”ñÄÁÊ•)I’$Ì寿þ¦Ý»ÃãÉQW× Œ'`ºïÞ}À\îÜy MøîxrÔÕ5(ã ¢äû×\pß|õêÃòiñÀ‰À]wPBƒ2ƒ±té>޶,‚ƒƒä“F'Y:í¥4(½˜±øüù»èþýÇÏ3ªü›7ïÓüùú% J¾üjPú"5Yç—_þ ¨¨ÛµýøãÏòI󟃴(¤³bCy9@®2üñ‡[¼ññr{eÞä]î+ªU«&¤6är¡¡¡Ì7}úô¢S§N¾Ïœ9StîÜ™Ï/]ºTȽ¹…ÔºbÆŒœ‡ çëÕ«'2gÎ,êÔ©#äÊ€8sæ §5jÄù=zôà²_~ù¥(Uª”/¾âc|I-,ÐÞÎ;E÷îÝE—.]Dîܹ…¢8uê”èÙ³'_x/^¼XŒ5ŠëN:UÈ­EöìÙEHHç 0@ôéÓGäÍ›W*THHÐs¾»/iM„|3œ»ÓNÊ?˜ 4¥ÒíÚµ£6mÚPåÊ•©víÚ„=¡ù°Î¹gÏ’€ .%ÁÈfvëÖ­Š ïñ-ÁÅu'L˜@C† ‘ï8ÿ…&NœHtòäIÊ–-MŸ>]¾Jú>­_¿ž7nLË–-£yóæ‘œ¬«W¯ãá_l¡\²dI^Þ:}ú4kChöJ•*q[ãÆãW ‚ÇÕ«WIN‚1bÉ C“'O¦1cưÀ^æè÷¦M›¨téÒÜ×x"A²nݺT¿~}&Lñ¡C‡èûï¿§¡C‡’Ôz<¸NDD={–¤¶á•Z‹¥ÆrÛ¶m¼Á¼Ô‚téÒ%ÞÈà;v,hRs1è°† Ê“'µoßž*T¨À¾,À?÷Þ½{Š¥ë÷òåË®õB©•Ij?êÛ·/÷3]ºt bLEð•ZL²¦M›rëÖ­ãÓ˜8ùòå£æÍ›3€U@ÿMŽhIEÒìÓòåËy°2fÌÈÙx‡$À‚€Æ8ð*_Õ¨’'ONׯ_ç¬Ö­[SñâÅé½÷Þ£íÛ·SÛ¶m ¾Ÿ¢´iÓª$ï +m!åÏŸŸ¾ýö[W>˜ 'Nœ in9_mnÿàÁ>£ð?xTÿ‘eì«j»Ñ¢Í„B JSªA‘>›HD®µjÕ¢•+Wò©%K–PÍš5©D‰ 8˜ä»wïÒš5k8_Շƽ}û6)ýû÷§Í›7€í;~üxÖ°0ž€WšvÑ¢EÌeGŽÉm—+WŽó¶lÙ¿è_Ë–-Uó„ I4$ÊÁŒc2………±¶Vçâo‚ДêO[êÏЂ0u 6dóó•—)S&•Œá—º2M hoYî+F‚¨|Ec~† Œ‡ :h@é´Q”ë á;­_N襟Fk–š¬% £oëKÕ¹"ÇkJDÂÇqgÄiÂM’$­ô/Òµkÿçq™ÈßýÆÚk ã5%@)ƒKGBBVɧ€²Ê[•¿8ºŸðWž3Že Ììo¿Ý%×;ÿ¦ vBwßG ÊxQxx„|#š5äúõGåݘGñ䨫kPÆK—îsí˘4i°¼%ùs<9êê”ñÄÀ‚aòâcíxëÖ}š?g<9êê”ñÀÀ‘#ä_b>žú+ݹó \uU Êx``Ñ¢Ý.-©Ø$Ož”Ö­söK T_ú«AéãÈ`™jÙ²ýòù̘ͭ[÷äÓçÚ„û(V®¦Aé£ôÂÂÂyȪúáÃç(2ò¶Õ) hPÆAHVENœ¸$ÿ+s_>¡ž”?I“&q¥øœ9óø¯Vuužg 8þWž»ïß³7n<r®^½I…È¿J|À ’Ÿ¥ðoç·uç¿àÊɲ}晔ܽû÷Ê{óDêØÉ}„¾iómÃ(á¯ê¯6°Kô,4(m€"qüËP“=Р´GŽš‹Р´Q˜š•=Р´AŽÚ§´Aˆ”aøšÔ>¥¯’³®§Ai-ëG hPúQøºik hPZËEçúQ”~¾nÚZ”Örѹ~”€¥ Â×KB6ÑÀBƒÒ _“zIÈWÉY×Ó ´–‹Îõ£4(m¾6ß6ÑÀBƒÒ _“Ú|û*9ëz”Örѹ~”€¥ Â׿Û!XhP„ákR›o_%g]OƒÒZ.:×Рô£ðuÓÖР´–‹W¹Ú§ôJ\±Ö ŒUD±Ð>eì2ò¦„¥7ÒÒeÿ ÈY~ú‰÷›–-ë_/d,÷NËÌ ™1öóÏ?»0(cì!AÉ{¾óÎ;ÿ͌Э$z `Llܪvö…@´ùNô°pž4(7&‰¾G”‰Î@ ŸÒ ÝÃÆíØ9ÖŽ][ÿüóO’[#».+Mš4¼£ìÓÞyëâÅ‹¼a<Æ®´ØûÛ¸û­«CqLÈ- éðáÃO”Æõ+Vì‰ü§•q÷î]:uê½òÊ+O« æë8M‰Û8`ËEïܹ“¦M›FÇŽã6€oÛ¶-ɽ·máod"÷§ &p6”Ÿ5k·‰à±ÿþôñÇó^;Æ:Æô§Ÿ~J2 5f¹ÒØ)  Äç³Ï>£+Vpmþ¤úvçÎÚ·oßSoÒkMùã?ÒŽ;XÈMÝ©Aƒ,$¹É9 :”;Ü¢E ‚0{öìI¸¨ùóçêb÷V”+X° a{áE‹±&I’$ uïÞÝuÁk×®¥#GŽûömêÛ·/½þúëÔ­[7z饗(44”Š/Nï¿ÿ>¥L™’̃Ÿ#GW̰Ïw§N\|Ñ/ðÄöz³gϦõë×ÓóÏ?Oýúõ£"EŠXò‡¶›4i’Üæn+—0`k ü.\˜~ûí7¹ÁÓü_¢IÕ®\æ víÚÉ—ªnçk°Â¸¸æK—.ÑÆ9oÆŒ,§åË—óë›4iB 6¤®]»2_hª*UªP:uøØØ‡jÕª¬ÚŠŽŽ&D¶Ÿþ9õéÓ‡û³yófÊ“'9’°×9ú>a,À'[¶lœç®o¨‡k=z”ÇõêÕ«T¹re8p Ov´K„ý4‘¾Þ’ךòæÍ› Ô»wo*Z´(}ñÅôî»ïR¥J•š®CS€ ñ0 0¡¸Ð¹sçRíÚµé»ï¾“[}ܤ¯¿þš† F7¦½{÷Ì”¢ÈÈHÚ³gýïÿ£=zÐW_}ŧ(lÒŽc~÷îÇ[ÏP'È˜Æ ¡?t yùå—Ù dcÇŽeá}øá‡ü:?+þû÷ïçe ¼zõê4sæLnçÂ… tòäIÂ&K¾|ù¨eË–|Îø…ÛèSxx8íÚµ‹à«_¿>Ë`‚ÜzõêÅÕæÌ™C}ô1‚ÛÂäwGÆ>ܸqC¾k=’‹BIÀ?žÄäÉ“ e 3ŒÍÙ³g m¡mŒIl}Ï;ÇÑo”…?†ê*³Û¬Y3ÖXuëÖe°£ ãÚª1™ aãý‘:uêÔÜ>ü<Ìxc°ÜñØ1>Ðbjð¡é iÀ0UªTO\2’%KÆí¼öÚkò¿ÏЦM›èàÁƒÅšçÑ7X’¶ð¯!WLVO~°±VcR´iÓ†²fÍJ%K–¤+W®°&«Y³&ûîíÛ·gmý /xìø€  0Ù›7oÎǰ–°\P.Y²daŃw´åm|൦DcÙ³gÇ›ØH àÀ StºtéØœÀl¤ÊÔ¡>ÅL$E˜ùHå#~Ž'ð¡aÊ )!L 6„—ƒŽà™ù£¬qÓøG¹üCeq!øƒ `s‰¾ÜºuË2`Ha0ÐwO`TíZõ–ÈHj²àša- ¸Y È>}úô±öMñÃØa,dRí ­ÚBÚò ”±5 ‡ąb¶lÛ¶}7Ìh˜$˜Ž²e˲vÁÅ@CÁ ™ &&Ú f ƒzp 0»AÐTˆÍiÎøç À„ 0q ´Ö­[Ì'L¨™?´?&ÚDßáƒZÍ~L3AËÁTcààÂM†ïر#[ä+B}€Ú>44/ürcUÖê ƒÑÏØ\Ì8Ê®\¹’³Øú¦ÚÄä‚ aÊÑ?ÈæÕW_U§ãýë“ùvתRïÌ!Ô9¨T©R4}út„¿ &סCöE P^ñÁŒ„Ó~ýúuöa‘‚?b¶2Uø>x"i+‚„`Æ ƒÿÛo¿ÍZÉŠ?|%04Ù Aƒ\¬U_á~ `†¼Õ«WóZî ‚L,ø¤ð·˜:¸pe0áàßN™2…àrtéÒ…'MÞ¼y9TVmªN¨ãÒ¥K³ÿ ³ŠþXeñâ[µjÅAÏèÑ£¹/žú†kPíC^Æn@‰~›IõÍœïé8Æ–%ÐbpÆ>™§ÊîÎaö`±,m ‚ÆCÀÍi4I‰eO@ß|óÜbîƒåh1¨Óhþ¹’_>ø+óì‰?Ì8&‚ꋹ9h:\§ñúÌepŒ Áì" :Ð>˜4àÆõ'Ê*SkÅÏœÓm4¯æóÆc(£ [ߌu1>dà«ú>ð‚+ƒ±oÔ¨‘bmÿ–%ˆ^1£(@¢5잀Yo&s¾:¶:ØH´aµ¨íŽlmÂÜÆ…jlõ‹zÊ—…¬T[àW¾ªí¸å€Äql}CE˜HXF²›â&E/ZÅ: +çÛ,<HEvæ:Ë–-cÍbηëü¡iàÛA3 b…ÀØ7OmaRb2ZùœžêésÿJÀö@>”·€Dw %`ÆÁÿÂÇLVšÓ\&>ÇXœFô»eËŽÊ` n;ÕÝø«³&ß%`»¦ô½+þ¯‰À`üøñ|¢B… ®Í›7×Iιò"j€ëspøG庛ÿ>|A«»@VwW”Ùv5˜È¶kÊ@–'œv|°Z`$˜oÜ^C€HN9nâ4¢qãݬÿ!`qwÈê-–±h!ü+,o€U}HO¹r墊+r¹òåËó­P¬}â¼±ÖP­î!ˆ2ß]afúË%­)]¢ ʘ1#ßÝ€–3ñ±® 2šZ˜hu—ÉXiOwx}½ãan+¡kPF QŒÀƒ°¶Š þ#·ÿ 9qw‘° @×»@Æ::ýXÚ|›ÿpܸq|7 Ë:Є;wf“ buÑ9üKA žžQws;<¶åî.*Sަ˜РŒ)6ψ¦¡ qW>¤q© fü“O>áå"us¿xôË|7u™ïá #Ex@Ó“Р|R&œßÑè?‹áN†ùV¢ „ŒåVwfÌùúؽ´Oé^6OœÁ}y<4¡ééJ@ƒÒ ùÂŒ»Óž^°ÑEc‘€e,Ò§ý ykÍE?éw é÷ùø> ]Ÿeg~—PŒç)ý0't“Zf ÒæÛ,}ìw hPú}tÌР4KDû]ÿ—ÌJ{]ðµºIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SQLStream.html000644 000765 000024 00000045621 14042362133 024417 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::SQLStream Class Reference
MySQL++  3.3.0
mysqlpp::SQLStream Class Reference

A class for building SQL-formatted strings. More...

#include <sqlstream.h>

Inheritance diagram for mysqlpp::SQLStream:
Collaboration diagram for mysqlpp::SQLStream:

Public Member Functions

 SQLStream (Connection *c, const char *pstr=0)
 Create a new stream object attached to a connection. More...
 
 SQLStream (const SQLStream &s)
 Create a new stream object as a copy of another. More...
 
size_t escape_string (std::string *ps, const char *original=0, size_t length=0) const
 Return a SQL-escaped version of a character buffer. More...
 
size_t escape_string (char *escaped, const char *original, size_t length) const
 Return a SQL-escaped version of the given character buffer. More...
 
SQLStreamoperator= (const SQLStream &rhs)
 Assigns contents of another SQLStream to this one.
 

Public Attributes

Connectionconn_
 Connection to send queries through.
 

Detailed Description

A class for building SQL-formatted strings.

See the user manual for more details about these options.

Constructor & Destructor Documentation

◆ SQLStream() [1/2]

mysqlpp::SQLStream::SQLStream ( Connection c,
const char *  pstr = 0 
)

Create a new stream object attached to a connection.

Parameters
cconnection used for escaping text
pstran optional initial string

◆ SQLStream() [2/2]

mysqlpp::SQLStream::SQLStream ( const SQLStream s)

Create a new stream object as a copy of another.

This is a traditional copy ctor.

Member Function Documentation

◆ escape_string() [1/2]

size_t mysqlpp::SQLStream::escape_string ( char *  escaped,
const char *  original,
size_t  length 
) const

Return a SQL-escaped version of the given character buffer.

Parameters
escapedcharacter buffer to hold escaped version; must point to at least (length * 2 + 1) bytes
originalpointer to the character buffer to escape
lengthnumber of characters to escape
Return values
numberof characters placed in escaped

DBDriver provides two versions of this method and Query::escape_string() calls the appropriate one based on whether or not a database connection is available. If the connection is available, it can call the DBDriver::escape_string() method. If there is no database connection available (normally only in testing), then DBDriver provides a static version of the function that doesn't use a database connection.

See also
comments for DBDriver::escape_string(char*, const char*, size_t), DBDriver::escape_string_no_conn(char*, const char*, size_t) for further details.

References conn_, mysqlpp::Connection::driver(), mysqlpp::DBDriver::escape_string(), and mysqlpp::DBDriver::escape_string_no_conn().

◆ escape_string() [2/2]

size_t mysqlpp::SQLStream::escape_string ( std::string *  ps,
const char *  original = 0,
size_t  length = 0 
) const

Return a SQL-escaped version of a character buffer.

Parameters
pspointer to C++ string to hold escaped version; if original is 0, also holds the original data to be escaped
originalif given, pointer to the character buffer to escape instead of contents of *ps
lengthif both this and original are given, number of characters to escape instead of ps->length()
Return values
numberof characters placed in *ps
See also
comments for escape_string(char*, const char*, size_t) and DBDriver::escape_string(std::string*, const char *, size_t) for further details.

References conn_, mysqlpp::Connection::driver(), mysqlpp::DBDriver::escape_string(), and mysqlpp::DBDriver::escape_string_no_conn().


The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/functions_q.html000644 000765 000024 00000007712 14042362133 022017 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
MySQL++  3.3.0
Here is a list of all documented class members with links to the class documentation for each member:

- q -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1CompressOption__coll__graph.png000644 000765 000024 00000007623 14042362133 030100 0ustar00tangentstaff000000 000000 ‰PNG  IHDRŽR‚ì\sRGB®ÎéMIDATxí ´USÇ¿Þ+/C†¨êQ ™²2B¦ ‘yÊÂÊ,CÅb-2×2[ɼ 2„"J¥ˆzI)CTÈ¡4nû÷½·¯ssî»÷u»ÝÛÝßZïÝsöÙgÿýßßþö¹ç½cM¼y2C ²$³ü>·G  OÏ„Z!à‰S+ØüM9#Î¥—^*uêÔñ?«ƒaÆåŒÑ9#Η_~)¯¿þº‹ûŸìc0`À=zôÚGœœõÈW”ræqrÒ_IÎðÄÉÔkWEEEœ÷Þ{O–,Y’µüùçŸåÅ_”»îºK†.ÿýwÚe9R–.]švþ|ËXTÄ9ãŒ3ä—_~ÉʼõÖ[²çž{ÊóÏ?/ .”AƒIûöí¥²²2¶üGyDî¿ÿ~½ÑþùçŸØ¼y¯ra‡z¨±»ª”U]vÙeæì³Ï6-[¶4p€±;³ÕV[™:˜ùóç›Ã;ÌØƒ–ñᇚ®]»KÓ½{w³Ùf›êøõ×_Éæ¬³Î2[l±…9çœsÌ®»îª÷PÖœ9sÌyçgÎ=÷\Ó¼ys³ûî»»ã3Ÿ}ö™9úè£ÍÁlš4ib®»îºD[»tébfΜif̘¡mX¹r¥ÙrË-Í«¯¾šÈÃÁ 7Ü`ÈUÖ´iÓ´›nº©±¤1;wÖ¶Ï;×tÐAf£6Ò4Ú÷ÕW_i_Ž9æÓ¸qcsþùç'ÕuVW^yeÔ¥Õ‘6%¯<ŽQ&Mš¤îŸYùä“ZgRekø$¯ˆ't’X!»í¶›œp ²ãŽ;ê’À@üñòÚk¯)d|ZO#Ö;é€ßyçÂCFë±äí·ß–SO=UvØa¹ä’K"!f­×Ðë<_ÂZ·n-Öëè}Gq„0xX¿~ýÄz/iÚ´©\ýõ²|ùr}^j~úé'YguôžpY´ ò­·Þz‰ùd½ŒÇáçŽ;îÐA$æ)//W/Ä2·bÅŠ¤ÙJYƒLû»«$åOubId>ÿüsc=I"[ª²,)u&n°6`×Ý`0-“ã\ïª Âã¸ÅrtÛm·©wqi|tn¿ýöÁ$=&ø °ÁL. ¦ÅÅEÁ|î˜X&ϸt>£Ê"8Ž2‚üB²‚"ËñH0p¬ l/¼#áioxy˜çvl5•YÓõl–US]kêzAgà 7¬Nn×ân¶ÛÜaâ“KœçHdJó ›e¥YeγÔ®*çèø cÈ™ÇồB±²²rû\e‘,[Võô¸ÚÍ£…\Y"÷\UVHõ”—÷–¶m›Êˆ½ ©Ù¹j«ÿó˜(¤'Mš-uë–Øï“æÚ‡‹£²}šq"(0dÈûEãrû¯Ô¾g39"‡OòÄ qÀ>C´O”'Ù'Î+íä%ö ôØP ž8!Œ33)eúôyöû«…IiþÄçxöÙñ²hѯ—–––¨ú_Æ"Oð'@€¥KWHEÅT» ÿo£¹xñ2»\ äò‡ à‰àÁÈ‘Óìnª4Ru8wîùöÛ켫ü¿Â 4Á'0pƒ³ïÜD½@nìë¬rúCÿ°š,I-[ö‘ êëk¡î¹(ïÁ°t-_¾Â¾§<À3¦ JOœfÍš/sæ,ДÇ-Íš5´oäµÕóÖ­›Øw”«^7 ÜR¬‡•9û®ªnÕª±ðƒUTTÚțؿ\hSMÏy}Œ“sÈ׎ =qbÆ‘¿²È»÷|cÚº&’=qbPçOU\€“¥¨“=qŠzøkßyOœìüRLu²'N >~©ŠÆ'50þjj¼ÇI¿ƒ€'N 0>95ž8©ññWcðĉÆ'§FÀ'¿¦:Ù'¿Æ'50þjj¼ÇI¿ƒ€'N 0|3î¿Ç&{âÄ`Ã7ãþÛñp,S%%Uÿh2&KQ'{âÄ ?ËTðób²m²'NÑýªuÜ'?ÿä8˜êdOœ|ü“ã`}úh^4ÇÁ/ˆA8²h7 ÈA¯{ùå—«Ð+ 7a\P÷CYoüøñrã7Ê7ß|£ýEì!ß¾ûî+”àìÝwß­m¶mšNß3µŒ=Οþ© ^tÑEVë ­ µ[½k•aFâ±§ƒ‰4<³gÏÖN=þøãrÈ!‡ÈK/½$”ƒ â5×\£2É DP”ì·ß~SIe«ÿ­ÿðÃkß zUœ£‡ùÑGi:Š¿N Ì“yÅ !kH»?ù䕜Dd “ǘž`0ðNò DŒÄ5òшK_ÐÙdÐ7BèÒ3‘4Útß}÷é`“'ˆ§Y}s•t ’†v¡Œ !¢péܹ³âŽw…¼ß}÷·¨6í¹ýöÛÕ{!©M[ÁÙl¶ÙôÑjµkþL~eL °vÚI;ç;¦V^F£’YË@¡šËù AƒÔ»@4HÅ ˆ•4L¨öOçðF”Á2[0d£$+`¯À“Ƴ'¶;æû&He  â]ÐÉ„ †Æ'šæ5bë®»®KÖ6s-S«qjª²Ó0x|ðŠ¿à ʎ·Am—5˜ÎàIX"ÂXÄ3fÌP—Ï2ˆAîÃkà 0ÊrA¯;Fš¹gçº)‡sÒñŒ›rhÂy,-0Å/GF< ËDؘ8(ŸvÚiÚvGQD¥±Œâ݈sè;6Ê>ÑgyD‹Ã9kÕª•Ê]Ów¼.}mß¾½»¼ÊŸÇ©jtnR°uëÖM³ >øàƒ83Pèj2{èÜ™gž©ënp¸r˜5,#è€S‘Îì  „$Ì(VŒOd¥)Ó3€ÔEûG7œåB,B"d¨qõW\q…–“ê—kšå¸}¼ñæ®qܵkW>|¸¶ý¦›nÒv…1ˆÂ/Îäâ‡rÀ…>#b ¹±(\˜T·Þz«Æfä¡=È[Ó/0g …8Êa ¶=|-î<éßÕÒXv«ú] g@Píe0fA2ˆå̤vDƒÀcÆ1ØÄ3äwÄ"­¨¨Ðx$¸Ô¹ò¢>žÀ–µÝÅ .Ë tå»ô¸Oâ”SNQâ3nyŠÊOÜD,DÀŠEa•æÊ‚ ³né$=®11‚Ëi`Hì¹ùæ›'‘›kéA47»ÅjËþ¿«e'ÃŽ„ÀÓ‘†Ê˜IlUÃŒ3Â×8ºÎ I—4”A~e™”¼Ÿ\“…ëŒÂ *Í•›ªŽ(\¤¡&Ëf¶-«KkÑ¢…>ÉTQ× ®'ÍzÊ(:thÊYuO6ÓðÊnÛŸÍrÓ-+—tïÏV¾¬‡ÝQ¦¤¡3áÙ78Q3-[`¤SN¸éÜ“Í:wX¯]5ùgíÏœõÆ'gP¯]ý JŸã(C]‚IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1InitCommandOption__inherit__graph.png000644 000765 000024 00000013624 14042362133 031216 0ustar00tangentstaff000000 000000 ‰PNG  IHDRœ‰Ù£QesRGB®ÎéNIDATxí] ”MÕÿMyDƒ0ò¯By?[z(’,¯’ˆ”°-,Q)Ñò¨X ã]ž%LÞoC¢ãÅGI„éqþû÷ÍìÓ¹×½sïÝ3ƽ×÷­5÷ì³ßç·ûÛß>çÌù²YJHDÈâ³gM;ÒŠ Š€N˜¥á²ni,(סCÊ–-›üÝD 6lØl Â8q‚6mÚDØ¿È_æcðöÛo“.(æ›t"« —Õ-íÝ:„p·ûÛ²e!\Ú°¯[·Ž®_¿ži$8wî}ñÅ4nÜ8úꫯèÊ•+~×½fÍJIIñ;(eÂ¥V§Nèüùó™2vñññT»vmZ°`]ºt‰&OžL5jÔ ÄÄD¯õO:•&MšÄé èµk×¼æ é<ÚºÕR§NKíRÓíòôìÙÓ*V¬˜Õ½{w«GVáÂ…­Î;[ÿþû¯Õ²eK»Ž-[¶X­Zµ²¬6mÚX… ²Z´ha]¸pÁRšÃêÚµ«muëÖͪZµ*·[¼xqëäÉ“\ïË/¿l•(QªY³¦uèÐ!kÏž=ÖSO=e5mÚÔ*R¤ˆ5lØ0.sðàAn'óæÍ³Ì})Z´¨µtéRΣFŒa5kÖÌc]û÷ïç>,XÐRd³5jÄ}?uê”Õ¤Ië®»îâ8ôïèÑ£|-O?ý4_?0ñ%j—j >ÜW¶¬H_2îðáÃtõêUZ¼x1ÅÅÅÑåË— Ë Î;F±±±´hÑ"žü8â|ÆŒ”/_>JJJ"E:λbÅ R¢Õ«WsÒœräÈ®oÛ¶môØcÑøñã¹­eË–Q¯^½híÚµ¬‰Îž=Kyóæ¥ZµjqqE2nóôéÓ”œœL7vVK 4 }ûöy¬ëî»ï&E~‚–U¤æ|ýõ·­N ”?~š2e /û+W®¤Ö­[óõΜ9“ÐfÈHVÐÚWþh8h³;vpUeË–µ6oÞÌah¡7Z[·nµÊ”)ÃqåÊ•³¶oßn-Y²Ä*P kž;wrZïÞ½­±cÇrXÊŒŒä°ÖpÐ(sçÎå¸ãÇ[111ÜVùòå9?]ºt±™ísg@ÝS´ÔMlÖPÎøÏ?ÿÜ*Uª”׺FŽi 2„‹àZ‰¬Ê•+[jæ8EV«bÅŠ´aÉ’%íª¡¡5.v¤[@4œát,]º4—Ìž=;)"¹Ôòðó„&‚&„æQË kÃ3gÎ"Íš5‹~þùgRäⲊl.uèh wÿ‡°3çNQK>åΛ5¨37^¡u!þÔ¥8Ã}…f†(³þþûoCkkÉ‘#ß,×çÁ~ ™%Õx4öì³ÏÒk¯½FÊnãÇd à%lÚ´i4tèP^•-gßuÿæ›o}˜¤£Fâ]+v¿žD÷ÛSZÐŹ-÷·äÔΟŽ)CßÞuêüJ ±Ýƒ¬S°Dš¶átl8µ¡°ÔÒk©%Œ£a/Ö­[×RKµõË/¿è¬>Šˆ–Òz–Ò\vÞôêRd¶Û´ ¨€ÚÈðîÚH8˜l¸°Ðp˜ÅX6ÇŒÃÚÌ9«±“¬P¡‚3ŠÃØU¦w¯KÛy΂°ù¼Ù}Î|: [Íi¯éx=ÕuÇw8³Øáûï¿ß‡z l‡åö–Ó ö58tl"œ‚§î›¸_~ù¥3›q83ë2îÄ-,6„‹ŠŠ2‚Qïuau“Uí#v‚Þ4•ÉÏ@fÖåg“A•-lv©A…ªtÆ+A¡á°ãÃ]ýP‘ÈÈÒj‡û»ºq!TºLëׯоfÃn'(z"\ÅŠ½I ÆÒìÙ¯„H¯ƒ¦›òo‚ÅæÍ‡Õ3ÔÜ´uëõD㿵Ös»æ.À‘Ÿ3g»"Z åÌ™ƒâã÷XZ² áà@JÊ?´jÕ>õ\ÓRÌ®©g³Û(-Y€.¬Y³Ÿr䈰K$$ü¨ž­^µÏ%à!œoŒìÐhÐlZråŠP¯ïÕ§rô!œ !Ë•+×iË–Ã.¹·Õ%NNÒG@—>>vꊉj£ðßrª’’’ÕkK—ô©} „óNŽ‹ÛÂZNŸëcDDvõJÒn}*GÈ_!ùÒ¥kêmÝ·(**çÆ.¯àá=4¼S—/_$}÷Ýp?jºí³Ä áüä@RÒi:s&uéœ8q-=ø`qª[·—®X1š 6{yÀÏæÃ%[|Phú£\kfš7k9nJPl¸›«Tê !œ7d$þ¦ „»)°J¥Þ«¯'Á¶S®ÈÙQn£FH¹$÷vÝ¿gÏÛ§iº=$*W™ì/5Ož<ìGþWýø[ýöÛo©^½zþd»`28pÅX+¾ôÒKL0ÜúÙ°a÷ÇS_¸@ü„ á0äY³f1úöíK­Zµbíõ …~ U¯^Ýeøà»¾fÍšìwN{Ïž=K¿þú+Ÿ7lØš5kÆù•[rž¤•kröeLXÎA|ø¬ÿúë¯oèòàF-~‚ŒÐtÐ~÷¾pd˜ü„Í’ºtéRº~ý:=÷ÜsL´Ñ£G+¯ÅèàÁƒ7 UáÂ…oˆÓž¤á@›£GÚBæ‚ r¸©òìß¿_}’5–£µ3ß””&–3¯ŸÌ7uõmhM-Xª=µ£Ó‹/®ƒöÑSrçÎÍ·TìLa;Âeæxá¾vŸJ QÉ’%ýª÷ÑpëCÄ3B8ϸر°ÓÜ~ñŽ@Øl¼_¢¤òƯÁhDF–V¯~—7~ÇNœ»Š™Úë©ÊoªÛ/±4{ö+¿Ýó‡Æ+æÁ4J›7¦¼ys«òGÔ ÛÀn&Óuܪ¾ˆ  òsælWDKQÞ¡s¨×ŒöXZ² áà@J ^;Ú§ž:Xtùò5õLu[¥%+ÂÀƒ5kö«Ç[ÿù½OHøQ=½@ ’U Ñ Ù´äÊ¡ºïÕ§rô!œ !Ë•+×iË–Ã.¹·Õ%NNÒG@—>>vꊉj£ðßrª’’’ÕËš©¯Bé89zG@ç—”¸¸-¬å\"ÕIDDvZ¼x·{´œ{A $ž4xé{–E_ºtM½ÍûEEåá6±KU¯³ñ;mø‡™|ù"é»ï†gYB¸!yÒàïà%%VÿÑ•ºtNœ¸–|°¸zÉ3õ5¨Š£Õ ›QþVu;ç‹—·EüþØØh¥å¢9÷Â…»Ô[ÅÑÔ Ay?KK6€Øp 9f B8˜å+æ ¥Â`'_17Mgš”4G@4œvø×½°û÷=LŠá PÃK˜ø !\à˜I‰ „ËxR4p„pc&%2€€.àIÑÀÂŽ™”ÈB8ðäIƒhiE„pØÉ“Єpæ IIsDÙc'% €&¶ @K+"„3ÀNm€&„3MJš# Î;¹-bZZ!œvr[Ä4!œ9hRÒÑpØÉ.Õ´´"B8ìd—jšÎ4)™ÔlµeýúõxoZþ|`cåÌYPpò¸ôÓO?ÙüRWO4ŠpÔ©S'êÚµk(,ETàg ®@áÇV‹Øp 9f B¸,YÑá4rÌ‚ŽppŠ ß¡™!ðM OÍÞŽÛ~üñGÉßÿ=»ß½{·ò:óÇ<Á©Œr:uê”ÝØL+V¬PI\ÌΊ•¡n§¥€“à½{oþ÷ŠƒŽpóæÍ# rfHbb"Mš4ÉkU§OŸf•ÈðÊ+¯0±@®aÆѧŸ~Ê›wìØA¯¾ú*)Ÿ¦^빕 ð>½aÃîœ9shàÀ<ÉΟ?Ï×зo_ö8í­~ø!)_«¤|ÂÒ®]»¼eË´ø€¿·víZõqå-Ÿíðéþä“OÒ’%KØ_û Aƒ¸ÓyóæeßóðAÁÂEÍž=›PÞöžšáêÞ“áe9""‚zôèa_ØòåË ZæÈ‘#ì¼OŸ>ôè£21à¡yÓ¦MôÀÐ[o½E‘‘‘4`Àzã7ØÏ½Û•©€rðË>é׬Yî(á6üâÅ‹ìžò£>¢C‡q]5RûŒ“@À|ùòñ9 ©X±"Ï=̉êK &À„ @£ïž;wŽºwï΃7xð`&xåÊ•u1>‚àp~åÊî3 cp±a`@ØáÇ3ñpýï½÷_;ˆæ 34M òN›6‰AG¹Í›7´Ô /¼@sçÎåþ€ Íš5c÷æÀgÂðéê$â«V­ÊDò„'&Æ«W¯^GÁXž!è ˆ ê0I0‘¼õ… ð0áP74 f%.G†íßóÉÉÉ< fýúõYë``ANh3dÄÀ¢xZöäA>ì‘u``asAÚ´iC… ¢–-[2‘‡Ù¯Áv†‘ÁóO Ú©V­šúòøÙÔõ ‡ºH¿óÎ; žžALO‚Žk¯U«÷ ýׄÇà•)S†5·rWÎ^ž+T¨`Û£éa†¶@På6,X@ÊU9ÿ!Z=66–š6mÊ}ŽHo×®úìëƒÜäƒ)€Ç]“âŽ'ÒræÌÉ×Á$††oÛ¶-a¢aÃjqï GøcD¸¢E‹r3¨t§À8–„mÛ¶ñÈ"|üñÇ< X¾ÆÇ„Äò£î.ÐdZ”ÿxç:q°=ü•´’ÃÞu òB³3ØuèVÉŒ¿V­Z1ž¨k̘1T @®Æž¸îÑ£G6 ÔÕ¥KêׯÕ=÷ÜÄ[½z5§ëä3? è,fNFŸ¥bf´oßž `= ˜u˜ÅX.°ìjٰé`üC0Sa“À^C~MÈÆ+~«xép.ɺ>Ó#&ÚÓí ,¡ µ3ñè3®G_â2C@DBÎåÛ½~h!ôÙSÔƒI¬—q”õ†'ÒP—s¹E°€æ½÷Þ{o˜œH÷Gð,v;l¿4ÉüÏæc9ÀlÁ.Ç9 ˜™111ºaûè 0;Q<¥cve&ÙÐÙXÞÚðÔ'gŸMÃÐ&Z|µáN]Gg=Îx„=Õë©.LòèèT7îudä MySQL++ Reference Manual MySQL++: Class Members
MySQL++  3.3.0
Here is a list of all documented class members with links to the class documentation for each member:

- z -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1WindowsNamedPipeConnection-members.html000644 000765 000024 00000043064 14042362133 031470 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::WindowsNamedPipeConnection Member List

This is the complete list of members for mysqlpp::WindowsNamedPipeConnection, including all inherited members.

build_error_message(const char *core)mysqlpp::Connectionprotected
client_version() constmysqlpp::Connection
connect(const char *db=0, const char *user=0, const char *password=0)mysqlpp::WindowsNamedPipeConnection
connected() constmysqlpp::Connection
Connection(bool te=true)mysqlpp::Connection
Connection(const char *db, const char *server=0, const char *user=0, const char *password=0, unsigned int port=0)mysqlpp::Connection
Connection(const Connection &other)mysqlpp::Connection
copy(const Connection &other)mysqlpp::Connectionprotected
count_rows(const std::string &table)mysqlpp::Connection
create_db(const std::string &db)mysqlpp::Connection
disable_exceptions() constmysqlpp::OptionalExceptionsinline
disconnect()mysqlpp::Connection
driver()mysqlpp::Connectioninline
drop_db(const std::string &db)mysqlpp::Connection
enable_exceptions() constmysqlpp::OptionalExceptionsinline
errnum()mysqlpp::Connection
error() constmysqlpp::Connection
error_message_mysqlpp::Connectionmutableprotected
ipc_info() constmysqlpp::Connection
is_wnp(const char *server)mysqlpp::WindowsNamedPipeConnectionstatic
kill(unsigned long tid) constmysqlpp::Connection
operator private_bool_type() constmysqlpp::Connectioninline
operator=(const Connection &rhs)mysqlpp::Connection
OptionalExceptions(bool e=true)mysqlpp::OptionalExceptionsinline
parse_ipc_method(const char *server, std::string &host, unsigned int &port, std::string &socket_name)mysqlpp::Connectionprotected
ping()mysqlpp::Connection
protocol_version() constmysqlpp::Connection
query(const char *qstr=0)mysqlpp::Connection
query(const std::string &qstr)mysqlpp::Connection
select_db(const std::string &db)mysqlpp::Connection
server_status() constmysqlpp::Connection
server_version() constmysqlpp::Connection
set_exceptions(bool e) constmysqlpp::OptionalExceptionsinlineprotected
set_option(Option *o)mysqlpp::Connection
shutdown()mysqlpp::Connection
thread_aware()mysqlpp::Connectionstatic
thread_end()mysqlpp::Connectionstatic
thread_id()mysqlpp::Connection
thread_start()mysqlpp::Connectionstatic
throw_exceptions() constmysqlpp::OptionalExceptionsinline
WindowsNamedPipeConnection()mysqlpp::WindowsNamedPipeConnectioninline
WindowsNamedPipeConnection(const char *db, const char *user=0, const char *password=0)mysqlpp::WindowsNamedPipeConnectioninline
WindowsNamedPipeConnection(const WindowsNamedPipeConnection &other)mysqlpp::WindowsNamedPipeConnectioninline
~Connection()mysqlpp::Connectionvirtual
~OptionalExceptions()mysqlpp::OptionalExceptionsinlinevirtual
~WindowsNamedPipeConnection()mysqlpp::WindowsNamedPipeConnectioninline
mysql++-3.3.0/doc/html/refman/inherit_graph_34.png000644 000765 000024 00000003501 14042362133 022430 0ustar00tangentstaff000000 000000 ‰PNG  IHDRqK`ìsRGB®ÎéûIDAThíZyH_þ4+¨ }/*³ÍVZh±ESÚ “ 2Ú‹vÊ -JÛ Z¤MÚ ?¢MZ 2[­¨´=Ú°½¨´²Å²šæ;pç7ïå¤OüÁSæÀ{sçνgΜïœïœyê¡é[J´Ο?/_¾ mÛ¶èÝ»7<<<ðöí[”5j|øða±kÙ²eâü„„q(3jÅŠb/‰EZZ<==±qãFÑaõ€%K–ˆ>fÕ… ÀŒ6l˜±eРAxúô)F-öñY:„+W®àÇ8xð Z´hfÍš!>>^ö1ˆè#oooäååº 3pÄììl9rëÖ­ŠX¸p¡‚-[¶ S§NسgÜûäÉ“ íܹsÇÇíÛ·˜ 6€z–.]*kgÍšR )OÉëׯ…÷íÛfgDD„\bFU­Z ÒõRºu놊+:Œ§NŠS§N¡qãÆ˜={¶PáÈ‘#eoË–-¨• Э[·D‡Õ7nÔŽ;0eʲ?~lla0ýøñC€nÕªb÷îÝ%p4h€3f€¼zõj„‡‡ãÞ½{òÚ@ éײe˺ 3pD*%-ùùùÁßß_8^IKÌÖ¾Ë0{˜-ÌÒçÏŸ#,, tÞ¶mÛ„2¹¯OŸ>–¨t6xøðá±ÔAšctSæÎ‹zõêaâĉˆ UGÕ¸N:bÙAÁlY¾|9~þü)uÐù~¤º‚Èì!k0hÉ2¤e+©\¹²ècgíä9kp… ÄGôÙ‰,@™3gŽCF[éuž/ˆLy é§Zµj:iì!CÀcÇŽ ˆtî¹sç$ƒfΜ)‘ÈbO*U’_ƒ`nÙÌ<ŠšçܧOŸ”Š¿Žtp¦^—&L˜€ýû÷#11›6mBÓ¦M…h…¿{÷gΜ‘ç/E¦‰víÚI9™fïAP¨ƒ=€•0‹i'K›'–ç °Úk5_¬¯lÏ)ˆÑHC)X´h‘ttu”´Ú¡CiоÿŽJ•*ÉZ~)=¤àæÍ›K–°†pžÎd@zemܹs§ìc:{ö¬€¡Æ¬] ê`Öø­[· À¨Q£Dƒ60Cø³…-Ï•°ááýÙÔ® |ö5z%ÕR?VÂl •çf-e9a='C¨ç¶Úk9oþ%U7PÓ;5Oi¬7(šþ Ú›7oŒýº5½iÐtÃ9tŠ”¹®]»j/^4®éµK‹ŒŒÔtšÓrrrŒy///M\MÏ^c® ÞDY®×éMÓ/Ñ©ç`CAz¯ó>…®}òäIa—ëô Óôà7Î9(ÖLd¤dddH͘4i’Ç“Æõ™#ÊüòmžWãêÕ««¡q¤.s=5.X XCUu^ÂnQ‰¢kuîêÑêùéù—Mù­ÿ×\±ƒÈwFÖ2Ö W„¿ª˜)uþüùùngí!•ÙòŸŠDÖW¤9ÎQÌ6þLö!DÎÒ³³³&/ŸQ/zzz:TPP*•*::z÷îÝr¹¼···¼¼üÆø¢¥¥¥~~~±±±eee_¾|ùôéScc£X,^t0‰{÷î(s€ááa„B¡€ææfü”µµõË—/gffX,Ö£GBÉÉÉû÷ïG}üøÑÆÆF(ŽéõzµZ***âr¹ÄÌ7nÌÊÊ¥R‰ÿº'''ñ³B¡pݺuFŬ¥ÓéOŸ>EÅÄÄDGG#„’’’<ˆzÿþ=à– „¶mÛVTTD¬N „víÚuàÀù¼À™œœôððHHH ”»wïr8¥R©R©T*U^^^DD>í‹/B………žžžDÿ¼¼¼°°°…/>ŸÏçóùde‰÷/xöÇ+Н¯/.Òh4NÇ`0ø|~mm-†a|øFFF6lØ@Ìù×_¬Âf³œœðc'—ËçM"‹Ÿ?Žgr£à caŒz:...ŽÃá”––‡‡‡U*U@@€¿¿¿¿¿ÿíÛ·i4~* FFF‚ƒƒ‰þžžžãããæøBf‰ñ3¨Æ8èïO1ëëë[ZZlmmÃÂÂ`||<44´³³óëׯ 55uff†ÃáLLLà ò|ÿþ/oÐÞÞŽبh—ŸŸŸžž>==+øÕ$ræÐÐÉIŒzYYYïÞ½«¯¯'߃¸¸¸8::J¥R™L&“ɺ»» 3œœœúûû‰æ›7o<<<Ìñ…ÌÿäùaÓ¦M #33sïÞ½x¤»»»cbb …³³sdd¤^¯€­[·vuuõôô@WW—Á›uÐëõ×®]€†††ˆˆˆùÄöööÊÊJ|ù˜LZZÇ«¯¯Ç›^^^t:½ººjjjd2™I¿ŒzQQQqñâÅ‚‚­V;ô72™,<<\©T–——#„¤RidddUUy¶¨¨¨¾¾¾ÆÆFP(MMMñññæ_äÿBN¦æ×?<õã¿åÁÁAü”µµ5žÙBÇ€>àM ÃBBBlll‚‚‚¼½½¯_¿Žëùùù666>>>^^^!!!õÉdîØ±ÃÃÃÃÖÖvÏž=†ñâ±jÕ*¢ÇDýÃéíí¥ÓéxýCeggÓh4''§íÛ·GDD˜¬F½ˆ‰‰™{UqÊËË™L¦»»»µµuRR’F£!O‹ …t:ÝÛÛ›Åb¥¤¤hµÚÅÖ¿EÇÏLJJJ6oÞLVôz½D"yýúµ^¯'ë …¢¿¿_§ÓíÛ·/++‹Ð[[[Ùl6BH*•*ŠÄŸajjЏ2‡ù¼˜•JõêÕ+™L6_¥RÙÙÙ)—ËÍ™mnü~ýû³©©)‰D"‰.\¸@Öi4š¿¿ÿÜþ Lèîîn¦¸xo`”ù¼˜&“´@{{ûµk×.Ê2¿>~R©4==ýðáÃ;wî\Ô@GGG¢igg7×1£âÿ34Dú~·ººZ  ê‹Þ?üÿwòÜûkŠEAÅϲ¡âgÙPñ³lŒÜâ¯$(þ@FGGy<Y1¿ù¾- øàóùä&zZ°h¨úgÙPñ³l¨øY6Tü,›ÿtžñL.Ó;IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadQuery__inherit__graph.png000644 000765 000024 00000012023 14042362133 027327 0ustar00tangentstaff000000 000000 ‰PNG  IHDRp‰ô}¼šsRGB®ÎéÍIDATxí œUsÇO*eIÉ’)¤’-[È–Èž5Ù)ŠY³ïdùØ%*dß²d+E2ÚE›ˆdo#ç{òîÜySïÍ›åÝ;÷|>oÞ]ÿ÷üÏ~ï}ó;Õœ’$U L\)ªœ'|/“@¢Àˆ[B¢Àˆ+°F®üÿöÛoRPPë0UòüwÞYj×®ÓÜËDo¼±l¾ùæ91RÕNž0a‚,Z´(g&!4â–“(0Q`Ä%qöóÎúé'3fL^‰õÏ?ÿ”÷ß?¯xòÌTšÇ/§žzªç#õ=eʹæškR땹pöÙgËØ±c…Jû7Þ¨LVJ¼v…(¯:ꨣdÝuוúÈŒä矶ñî¿ÿ~Áèn¾ùf?…òÿæav.ôõ×_;õŒå¡Ârj±Nã>þøc;väÈ‘NmË7vú0À–ÕzÝPâx»ï¾»ÓÐæT!îâ‹/v 6´cU9®nݺN=ËiÈs?üðƒ[o½õRã¨ñ¸¹sçºUVYÅÝqÇvþa‡æ:wîìԀܙgž™:V•ïæÌ™ãöÙg§Šrêµ®I“&N½½È˜ðеkWwß}÷9õ`;ÿ—_~±k¤+aASˆSÅ—°7ãÍ*Ä;vì(ƒ 2Ko×®<þøã)ËüçŸl» Û¶­±Æ©}éÔ`D§g¡”cÏ?ÿ|;¬F²ÒJ+ÉÊ+¯,,õÕWæõ~ŒzõêÉüaÞ»páB;Ÿw衇Ú!k®¹¦?T–,Y"j©u¿  k­µ–_x'CDˆkÃ_EQ…(0‰ðW—_~¹…?&H(Dèä7Â*å•WRsŸ××ýüóÏÝÒ¥Km3 ÔÈà~üñG÷ûï¿M›§àyÖ¬YEæRä¤ VÊ*æü0;Ó¸AI¥¤š5k¦VÉ<Ï”Ÿ™P­Zµ„O¸®F‚à&[&O†)˜ý>Æ#ŒçU˜óa²%ñà ¡’öçóöDªîó¢JR…FU8Qà;gä^Œ7òÜŸåM˜P(uëÖÒ§2uó5ã‡[š\©S®ƒäëù ^ Í›7ÔûµùÊb®|Å÷g…sô©L ™mÚ·úšê·|”Î<ÅRƒQÏ[’NõêÕÍ#Sb´;.Y²T_àN)òJgáÂ%ú:kLŒÔöÿTb§À#¦ê;¹êÿÏð¿¥¹s–9s~*¶=êb§ÀAƒFë{Àt· N_óqÔõUŒÿXÝÈ/\ø—þÄÿ"©S§¶T«V-FY¦2¥*9³¯RLÜe¾ab¬ˆxfÌ(Â%Ô¿ÿHýEZ=}ßÌÖ›4Y_4ÈÏÇjÆ`ö&æü,4ûk–ﯧ?µXöûšáÃ'é{¿úÒ¶mîÏË—ëÒ»XzQDóÌX+PSŸþhJÿĘb­@Þ³P¼Ä™b­À8+ÎÏ-Ö $|FãL±V á3¾¯«—™e¬gÏósKè%ÑïDUœg;Q —DD¿FTqžíX+0¹ðjŽèwrQÅU%¶cB«‚"c­@£%Ò"lÆ}lóW\aê‹/v§œrŠ¡ xþÅ_¨+`° úÂhÃP:Þš5kfh½W]u•íW‘ðà²ÈÄböƒN !C…¹t ÿîµ×^ieíÀÿþAâÛKz®h¹† Î5`æàa¿óÎ;†{Í2à­o½õ–9ç:Y¹öÚk­7PýÊŒ¨päöÛo7Œk¼°<€ÊƒD?@Æ?ýôS!õÕWÓ¶àeÒÙN§UÁV[m•ê /´ôyà£H¿¢Fd­èKq÷Ýw M>FŒ!ô‡«žïºë.ùä“O¬w½$Ôˆì¶v:Þ‚­è[A;ä@JPhh9öØcå²Ë.3¾˜?|Ðìî×^{-Åo6 ¥¡Lx‡v°\¢(j](Nx¢É¦¡Í:§=Ým·ÝfýèÙb.½èûú­=aæÙBÔ3BÚ.À®ES ÅÓÈC=Êökk9ñÄm™?ðFcÿ7†§B)²‹ ´´ ’†§yÓiþ)ÖrG‹!«â‚í–×" 8n.ËšçŠNÅL[OéxcŸgª•‚?–oæniÜ¿¢å’ªÐ2÷@ ‡â€…O|{à6ò !…ª.‘c}ž îO×" ¸?—åpNg,Ф0¥ã-ØJ!x|º9÷—z9¬ù²ð@îñ¬lË¥qTh`&î/ý=fx_E®§ã­<¯_¡Hõ–-a¹”áA¢U]˜|ÅÞ^Ñëéx«h¸^¹T¡•1‘ªzÍb9_aOˆªpjÕj¤Õâ½…(ŒêŠðM×Ó0Åì.8Á¤í@P[NÚDLaav“¶a‰Dh߃&m"¤°0«IÛ°D"¶ž´ˆ˜Â‚ì.IÚŽå¤í@ôtV„ã¤í@qDk%i;-}¥å6i;V,ÑÙ˜´ˆŽ®NU±~ÄÏs’¶¶ó¤í@„•WUXuM€~"nÆ JEÄXØuMX$ñ9&˜(0âˆ8û±öÀä6"âÖ™ÜFD\UýX‡ÐD—o#øÄ™bíIÛ8›nLækLn#"n¥ÉmDÄXØOBhĵk&!4âÖY%Øb›($b,Ú ¨âlqk;À¼¦NTYѶ`ZvîÜYN>ùä*a¼Q›¤çÊcÓ¦MS¬Ç:¦fã…DWn¢Àˆ+°RSeϼMpËhd€\!p¼=‰7SR€sÙe—]ìpâ3DE0?AlÑ¢…xÄßLÇ+ãòÎq^ Êd®¶2Äÿ¸qã \V‘ä3ÛcpZÞ­[7)`ZÆ(vÖ¬YU^fíÀ¬1È»‡rˆ!Ò‚ ˆ7‚A0q…ñ—®]»´ñOix×à†‚Þë D݉'hºÂKJ÷îÝ¥M›6&8}Aä¸wïÞ¾[¯^½Ô]p=ý2cá)]ºt±ai*"=PÏÏ>û¬!ú‚ù ªnÇŽ –”aÖºukCåÕšÝ~µ@ ŸÁ@ñ–¾ø¾á†ì@3÷ìÙÓd*?8¨ðËù ú2>ˆ¿@/k+C †dÁ<µuƒ“韬=PQgeôèÑê †5ÌëR<€æð$B¡ŒF 0ægžyFgàÀÃü2B£sš§ùóçÛA”!¿_¿~¶ |ÀÂY'¬ÑÆ™A„—õ¿þúë óù:€9ðÍ@=Sšk/ 3FŒBûOØvB-0È Ôóñ>H-[¶”Ù³gÛyóæÍKí©cÆù—¾î¹çS rªjŒ–¶à¸È.[ÊZ\Ë'Ÿ`Ý|ûe& ê;­@’GÑ ×㬣lÐåQ8ÊÅž1vÛm·´¨òÇ3ÞCþ@ÅGÚèà ƒmÜ»ú¼\­~§v²V>ÚPDlíè¤I“Ì ±|ŒaâÜgpù¶=\?HlÇ8K"¢È¿ô¼‘؃°c|$ ðmÛ¶5!×gK¥R } ÂO¸Ï –Kâ§àƒð,í½oß¾F`:ÁœªØÃòs-¬ƒüv¶‘“–Gž·k×ÎÐç1x*,,4!Òf#ò… ^ï[ ,‹b(ðF„€P­‰Èq Â/ÆÁX½yáy²Á#}±”Nvàrþ”JËÏvÁ9¤y¼0Fñ@Ž#dá}tYÁžEN ½ˆ@‡'¬†|ˆÁª9É7jÔÈNc,ï%Áe?&‚$c|ú8ÊìÉ_x¹aÃÂdl¾Ù†°i—>}+PçŒÜqÇY®#ò€¬OSßÛ#ÆóN8ᓹ7LD Yᥡ’c@)FóÐù‚‰Û V­ZɃ>hÂéÔ©“…FBI›ä,Éý8x)Thº:Û*­PMÑñM ÆôËOžåC´ S`à•ô‹ÐþI¦ <‰bмD/ 0<Å{&†G öS| pöaX¤B=ŠÂ`ù@äÚ›nºÉzFÀ¿¢íÛv?7[Ñ?(Žö?¾áˆßžéwÀW¼ƒÒ8×g¡L>Aýû÷OMO¢˜Á#½``’É¡<*H”D1Ñ“‰*—|Çñ^Á4 yýõ×…p ÁvRà‡>ŒA(†gªgˆ{G¶£ô áe„F”oT˜Dˆ}>´Ï!·†KêLCNf.Ì}E„~èuAÕüM,SdPªD]µoß>¥<¶#Œt9cEðÎéöcŹ(ÏóãÇ Œ ”ŽPWyÍ+cýöðylIDs-n»è)UZ*sÒõÆ|1)ctþò^Æ9>é‡ÏçþÍá}Q['=ày¹Ì§ÌH%•­ò|Ø‚ý=]X)é<2|LTÖÓ5É–÷¢A>Û³“ã+_ZÕ¥èݘ½‘WéÆêÌ'üF¾HZùæ”p¥&&!4K‰åÛá‰óM#Yò“(0KåÛáÿbŒt}…$aIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadInsertPolicy__inherit__graph.png000644 000765 000024 00000012676 14042362133 030664 0ustar00tangentstaff000000 000000 ‰PNG  IHDRˆ‰÷æp÷sRGB®ÎéxIDATxíÅÆ³`D0`B bNfÅ€ÙÂŒ0 RPLeÄ,eBP‚ TPA%ˆr˜AD1¡ŠJý¿çõÒ·3»ÿ½Û»Ý½Û~U{ÛÓ3ÝÓóõ×ï½™ÝÛ¯–3Á)X-E}¨( iI Oعz®!øë¯¿Ì|ëÓÖˆó5oÞÜÔ«W/§×’s‚¬X±ÂÔ­[×´hÑ"§ZÝOöÝwß™?ÿü3ç !¦º3§ŠÇRÅW÷îAªû VñøkA† VÅ0•¿ûQ£FòênÕŠ {íµ—ù÷ß#˜ŸvÚi‘º|T<ù䓿ÑGÕSCÚåË—çc•z΂%H—.]Ì[lavß}wóé§ŸšË.»ÌLš4É´iÓFWfûöíÍV[me.¸à‚ilzôè¡]wÝuæÅ_4|’pà 7è±-[¶4~ø¡ùüóϵß_~ùÅüôÓOzGÅ]Âûï¿oš6mj¶ÞzksÇwh?Ó¦M3ûï¿¿ŽåÊ+¯4ÿüó¶?ñÄÍGa4h`zöìi¦OŸnºwïnn¼ñF3|øp3yòdó÷ß›ŸþÙ~øáfƒ 60‡z¨žoÖ¬Yæè£6mÛ¶5›m¶™éرc¥Nj¥vÆg1¹´… Ú?þ8í)ÇŒcwÚi'ûÇØ{ï½×žwÞy–v«­¶š7ož4hmÖ¬™ýè£ì¥—^j×Zk-ívýúõÓrß¾}í¸qãlII‰mÒ¤‰’ÙÛo¿Ýn¾ùæV¼=ýôÓíÙgŸmÅûØË/¿\Ûì½÷ÞvÀ€öË/¿Ôãdrí±Çk{õêe'Nœh…¬öñÇ×~kÕªe‡j¿øâ »é¦›ZŽRÚN:Y¹•·õë×·sæÌ±]»vµíÚµ³3f̰'Ÿ|²½þúë­ŽÏ¿ì³Ï>«}­»îºÚ>(ß~û­§;¤Jö±Ârj™°×[o={á…ZYVb¹Ž±víÚVV¥Ößwß}Z'«1A¸ ïa;ì0ûðÃëkÍ5×´´aòä¡“/¥äûõ×_uR]döìÙvíµ×¶œ‹ö²âí9眣“ éœA`&"‰ÓjG]wÝÕN™2Eë¦NjwÞyg%ˆx)×Üî±ÇJöDEL!_)ÈÓ°aC#«ßl¸á†ZÄK”ñš2¹FV­ÖñÐMVs™ýþÆ?þh„XfÁ‚ú"¬¿þúfõÕW7â‘Ìk¬¡å~øÁ)M7Þxc³xñb Ë–-Ó¶„(B FÈpF2*s›‰w™gÃù7Ùd­[¹r¥†(6üs1Ž-D+H‚¼òÊ+FB„¹ë®»4x÷ÝwØ×:ê(CH>À»WV¼—¯ÇÊjÕx/!ÂÔ©SÇtëÖÍœqƦÿþJrœN8Á4jÔÈÜ|óÍFV±‚œƒärÏ=÷4ºŒx #Hó‹ùóçYÉÚ?ÇI¸Sâ@æSN9EëŸ3ˆKžòꫯj9ùHµ²oV¥U™„y¤l·ß~{uÇ;}ä‘GtLä­ZµÒx}ÐAYñ4N¨ÀÈWd…kù¸ã޳½{÷¶‹-²”qéÄú»ï¾Û á¬x;wî\u÷ë¬³Ž†§Ÿ~Z“ä×vîÜYû!ß¡-/ mÈmÄÃhx{ñÅë±BV+^Oâ 1cÇŽµ»ì²‹¥Orr!r꜉g*ØS9À‘H³e5;5ÿ`‘´q\&F>ñÛo¿ýßC9Ÿ„–2Ç‘‘dºsA<ÐJèQÂø/Y²ÄŠgó«´üõ×_'r©ÈÎ *ò•ƒäüúLÝ+ù¬²2‡«ýØ-«ºÌþtÜ2gb’Ä^¾¢Ä“ùUZ&ñòM¼‘¿™(‹GL”«S¡ sBpŸ}ö1¯¿þz¡³RÆRñdþ]Lº¨6MAªÍTåg µÈryjžê7ÊfÏ^(Ï3–™æÍ7Ë%$Ÿ+ß(Ë9A2F#¶k×ÇŒý¥£å›eµäßA×Ö/ñ\™m¬¤ä;³hÑrù‚QÙOl«h(ÙmÑ?I7o¡™6í¿3nÜWòõÙò5ÇÖ:Y Ö“o”5(ȉËÕ ŠÞƒÔ¯_×ðÂæÏ_dÈIZµj’+ü þ<Ñà[ðCÌ% Ú|ÉØå^uQA¼é盹3ŒÈ°Ò&nl¾Ô+8àE0´w‘|…ð"¦¨u`ˆ,ëvÛm§Ò­Ÿ|ò‰ÖWõŸœmZ.襗^2"I&?1ùœÞ#ÔóÚk¯‘@5èÔa¼³-*’*$ê“* 8dÈmóÙgŸ™wÞyGëØç“ÍJœ0a‚É2óÀ¨ç`2о|´æ°}÷Ý׈L™¾ ”³'žxB ©y¡Û{ÅW$4ô|ðApÔµÑÈC;ÎGˆB›=‘AÕ·œqc»óÎ;UXQ¤\¨a©ˆˆH3ç)W½0X½vÎÕ§O7Ü*}Ï A¸Ä]£”-Zsa„‡ñN ‡wQhbbE’Ô\uÕUºRß~ûm#´÷ÏjŠ3&Ãþ7ÞxCA- CÚ!røÖ[oi=Â&+µgÏž‰îP²BÐÙ½DÏì¶ÛnF êØ CÃóÑÞÕ>ð*xÆÌê?~¼üîY]õ„ßÿ½ö<6Ô7ùüuOg\#䯻A°8@ÏÃ~¼¼G¹°œå \†ÔØFmTæÚXÉH.ï¬f€C¡òå—_V÷«ÑŠÓ¶ÉR`®C'ôãK•º:Žñë]›äw”*Ï:ë¬äj#ºZçdÇD3ÏC`È«¢¢Í +õN†•²Gº1fœŒ*mâ¤TyF(Ë…å̃¤»ÈÀjÁã=ؾöÚkÕµ>õÔSFÔª5< ‡Š|:ÆJ‹3îh0¤HE][Ë©$L‘3B=eg"^¨ù§¼Ø&œáÍDy[ódÝ!^„ý=ö˜Ž3• +}Çz_JÏÁq„d^I`‘tÏ—å̃Ä] Dà…á6‰¹$„!—H‘IÕœd›m¶Q¯BxbRüUäúÿ»^¿®JÊrV&Œ·²Š²êƒÆ’XªD¹ßò¤hÌŠ›õ«­$l*]*a¦L=ì’ÀZqó iÒt¦eg±!w\‘ÖÉ2¬qc£‘xÕöMî W4z+j²€¬¨¢ÍíòêAã #dôx ߸ÃhÚ´©_¥e’PÔ±SÙ–[nÙ'a9¨‚É9ݤz&“<6ò _êÕ [çB°¬H—¼wË{E0@òTº>qá~B·`Áƒ«çöÙòí≠¢«Ïõ{ÜØªr îÓ\Þ³±‚ð ÜVÄ|rОÛÑdc…º»‡ä}¹ÜŽ[.Ï_ÑsÄ]LEÚU=Y{vØÁåדo”É3Œz’ß̪ —S)_Ê:©H–^DEÎf1¥˜YÔ(9¨ )Å%È¢‚Ä#PZdQãá Dp ²¨ñä 6D@²¨ ©=A55…!¢Œ\3$?¹ëTQǶmÛê1üAK„‡t’?h_ŠÕˆÇÀ\½KÐü6ÉeäXQÅÆ˜xB“Ê$A0Hêò ¼–#,ÊUÉ„>œ4*e&·^.×Â`åâQ8Ç6"Âiè ÑF ¼hgß…·Ÿ~üUÏùtL6ˆE8q†—"”%Ï…ÛŸé{¹CL&Ã|b&±U†ÛÄe’c fLèaEL™2E/Ï@N“l¨l#©…ÛÇMã21V% á=˜Œ¾œëõ˺Sþ0Q¬>ÈL*Ä!¯!â]ž1AjúæºL¬K—.eŸ¼ƒ‰Ás ¿ ä>qÉÓº¼\/ãÇ 3vÄ©“ãð@‡WdLXò\$·ûÛò ©:u+ Ñ¡sÉ„”8 ,à£gKØhܸ±9÷Üs56û+Óõ ([gÉy¨gÒW‡ (W“[`¼#«JŸ®ÌñÄo^x;ÎÙ¹sg%ú·:tÐÕÌê'D ™Šf- 6+=“[bÎÁ$´oß^û'O!42„‡ ¦ã'ô`îÚ(s !€ÐÊXx5>áv–$Ø)uû}q „ÒóJå\ñìOž‹TçIU_æg0YݳfÍ*ÏS5LWÏŠDÿ5Kw1x’UV“<“9¸$˜ªÛ$ޏ]ŽwBd˜@8ðCTºñÄíc<ˆ"Ò«˜1;»¦Rejhî2^wGâÚ‰„«&¥©žiû^S…×81f‡§«O~çî ¬\qs‘ÜÆm»Ïb¸9pV©„N¹ËèÕ«—ÆRÿb–'›_“÷±·Ÿ•‘ 9è—ñ¸>3¼œ‘d–×ükõÛ² Ò™»óJw ûâpˆkãò3ö¥š‹¸v©ê*݃àb‰ƒåUšLf¾»åM•”)X©.ºXêË;9ñ ¸Ëò’ƒ ó™Ïv21¨Ã9þÃ!“¿ ¿ï̃¬ß*”‹¹+HØ{Eþ2™õr ­¦µIþFY™¤x–E¸ÒL!&S¤Šô¸@"øL/;$S¤Šô¸ÿbÏ@s6çMIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Set-members.html000644 000765 000024 00000012355 14042362133 024765 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::Set< Container > Member List

This is the complete list of members for mysqlpp::Set< Container >, including all inherited members.

operator std::string() constmysqlpp::Set< Container >inline
Set()mysqlpp::Set< Container >inline
Set(const char *str)mysqlpp::Set< Container >inline
Set(const std::string &str)mysqlpp::Set< Container >inline
Set(const String &str)mysqlpp::Set< Container >inline
str() constmysqlpp::Set< Container >inline
mysql++-3.3.0/doc/html/refman/functions_func_g.html000644 000765 000024 00000006407 14042362133 023020 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
MySQL++  3.3.0
 

- g -

mysql++-3.3.0/doc/html/refman/qparms_8h_source.html000644 000765 000024 00000113455 14042362133 022753 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: qparms.h Source File
MySQL++  3.3.0
qparms.h
Go to the documentation of this file.
1 
8 /***********************************************************************
9  Copyright (c) 1998 by Kevin Atkinson, (c) 1999-2001 by MySQL AB, and
10  (c) 2004-2007 by Educational Technology Resources, Inc. Others may
11  also hold copyrights on code in this file. See the CREDITS.txt file
12  in the top directory of the distribution for details.
13 
14  This file is part of MySQL++.
15 
16  MySQL++ is free software; you can redistribute it and/or modify it
17  under the terms of the GNU Lesser General Public License as published
18  by the Free Software Foundation; either version 2.1 of the License, or
19  (at your option) any later version.
20 
21  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
22  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
23  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
24  License for more details.
25 
26  You should have received a copy of the GNU Lesser General Public
27  License along with MySQL++; if not, write to the Free Software
28  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
29  USA
30 ***********************************************************************/
31 
32 #ifndef MYSQLPP_QPARMS_H
33 #define MYSQLPP_QPARMS_H
34 
35 #include "stadapter.h"
36 
37 #include <vector>
38 
39 namespace mysqlpp {
40 
41 #if !defined(DOXYGEN_IGNORE)
42 // Make Doxygen ignore this
43 class MYSQLPP_EXPORT Query;
44 #endif
45 
48 class MYSQLPP_EXPORT SQLQueryParms : public std::vector<SQLTypeAdapter>
49 {
50 public:
53  typedef const SQLTypeAdapter& sta;
54 
57  parent_(0),
58  processing_(false)
59  {
60  }
61 
67  parent_(p),
68  processing_(false)
69  {
70  }
71 
75  bool bound() { return parent_ != 0; }
76 
78  void clear() { erase(begin(), end()); }
79 
88  size_t escape_string(std::string* ps, const char* original = 0,
89  size_t length = 0) const;
90 
95  size_t escape_string(char* escaped, const char* original,
96  size_t length) const;
97 
99  SQLTypeAdapter& operator [](size_type n)
100  {
101  if (n >= size()) {
102  insert(end(), (n + 1) - size(), "");
103  }
104  return std::vector<SQLTypeAdapter>::operator [](n);
105  }
106 
108  const SQLTypeAdapter& operator [](size_type n) const
109  { return std::vector<SQLTypeAdapter>::operator [](n); }
110 
112  SQLTypeAdapter& operator [](const char *str);
113 
115  const SQLTypeAdapter& operator [](const char *str) const;
116 
118  SQLQueryParms& operator <<(const SQLTypeAdapter& str)
119  {
120  push_back(str);
121  return *this;
122  }
123 
125  SQLQueryParms& operator +=(const SQLTypeAdapter& str)
126  {
127  push_back(str);
128  return *this;
129  }
130 
140  SQLQueryParms operator +(
141  const SQLQueryParms& other) const;
142 
143 #if !defined(DOXYGEN_IGNORE)
144 // Doxygen will not generate documentation for this section.
145  void set(sta a)
146  {
147  clear();
148  *this << a;
149  }
150  void set(sta a, sta b)
151  {
152  clear();
153  *this << a << b;
154  }
155  void set(sta a, sta b, sta c)
156  {
157  clear();
158  *this << a << b << c;
159  }
160  void set(sta a, sta b, sta c, sta d)
161  {
162  clear();
163  *this << a << b << c << d;
164  }
165  void set(sta a, sta b, sta c, sta d, sta e)
166  {
167  clear();
168  *this << a << b << c << d << e;
169  }
170  void set(sta a, sta b, sta c, sta d, sta e, sta f)
171  {
172  clear();
173  *this << a << b << c << d << e << f;
174  }
175  void set(sta a, sta b, sta c, sta d, sta e, sta f, sta g)
176  {
177  clear();
178  *this << a << b << c << d << e << f << g;
179  }
180  void set(sta a, sta b, sta c, sta d, sta e, sta f, sta g, sta h)
181  {
182  clear();
183  *this << a << b << c << d << e << f << g << h;
184  }
185  void set(sta a, sta b, sta c, sta d, sta e, sta f, sta g, sta h, sta i)
186  {
187  clear();
188  *this << a << b << c << d << e << f << g << h << i;
189  }
190  void set(sta a, sta b, sta c, sta d, sta e, sta f, sta g, sta h, sta i, sta j)
191  {
192  clear();
193  *this << a << b << c << d << e << f << g << h << i << j;
194  }
195  void set(sta a, sta b, sta c, sta d, sta e, sta f, sta g, sta h, sta i, sta j, sta k)
196  {
197  clear();
198  *this << a << b << c << d << e << f << g << h << i << j << k;
199  }
200 #endif // !defined(DOXYGEN_IGNORE)
201 
207  void set(sta a, sta b, sta c, sta d, sta e, sta f, sta g,
208  sta h, sta i, sta j, sta k, sta l)
209  {
210  clear();
211  *this << a << b << c << d << e << f << g << h << i << j << k << l;
212  }
213 
214 private:
215  friend class Query;
216 
217  Query* parent_;
218  bool processing_;
219 };
220 
221 
243 
245 {
251  SQLParseElement(std::string b, char o, signed char n) :
252  before(b),
253  option(o),
254  num(n)
255  {
256  }
257 
258  std::string before;
259  char option;
260  signed char num;
261 };
262 
263 } // end namespace mysqlpp
264 
265 #endif // !defined(MYSQLPP_QPARMS_H)
266 
A class for building and executing SQL queries.
Definition: query.h:124
This class holds the parameter values for filling template queries.
Definition: qparms.h:49
SQLQueryParms(Query *p)
Create object.
Definition: qparms.h:66
void clear()
Clears the list.
Definition: qparms.h:78
void set(sta a, sta b, sta c, sta d, sta e, sta f, sta g, sta h, sta i, sta j, sta k, sta l)
Set the template query parameters.
Definition: qparms.h:207
bool bound()
Returns true if we are bound to a query object.
Definition: qparms.h:75
SQLQueryParms()
Default constructor.
Definition: qparms.h:56
const SQLTypeAdapter & sta
Abbreviation so some of the declarations below don't span many lines.
Definition: qparms.h:53
Converts many different data types to strings suitable for use in SQL queries.
Definition: stadapter.h:74
Declares the SQLTypeAdapter class.
Used within Query to hold elements for parameterized queries.
Definition: qparms.h:245
SQLParseElement(std::string b, char o, signed char n)
Create object.
Definition: qparms.h:251
std::string before
string inserted before the parameter
Definition: qparms.h:258
char option
the parameter option, or blank if none
Definition: qparms.h:259
signed char num
the parameter position to use
Definition: qparms.h:260
mysql++-3.3.0/doc/html/refman/autoflag_8h.html000644 000765 000024 00000010547 14042362133 021670 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: autoflag.h File Reference
MySQL++  3.3.0
autoflag.h File Reference

Defines a template for setting a flag within a given variable scope, and resetting it when exiting that scope. More...

Go to the source code of this file.

Classes

class  mysqlpp::AutoFlag< T >
 A template for setting a flag on a variable as long as the object that set it is in scope. Flag resets when object goes out of scope. Works on anything that looks like bool. More...
 

Detailed Description

Defines a template for setting a flag within a given variable scope, and resetting it when exiting that scope.

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1NoTransaction.html000644 000765 000024 00000020025 14042362133 025355 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::NoTransaction Class Reference
MySQL++  3.3.0
mysqlpp::NoTransaction Class Reference

Compile-time substitute for Transaction, which purposely does nothing. Use it to instantiate templates that take Transaction when you don't want transactions to be used. More...

#include <transaction.h>

Public Member Functions

 NoTransaction (Connection &, bool=false)
 Constructor.
 
 ~NoTransaction ()
 Destructor.
 
void commit ()
 stub to replace Transaction::commit()
 
void rollback ()
 stub to replace Transaction::rollback()
 

Detailed Description

Compile-time substitute for Transaction, which purposely does nothing. Use it to instantiate templates that take Transaction when you don't want transactions to be used.

This was created for use with InsertPolicy, used by Query::insertfrom(). You might use it when your code already wraps a given sequence of MySQL++ calls in a transaction and does an insertfrom() as part of that. MySQL doesn't support nested transactions, so you need to suppress the one insertfrom() would normally start.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1FieldTypes.html000644 000765 000024 00000023335 14042362133 024652 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::FieldTypes Class Reference
MySQL++  3.3.0
mysqlpp::FieldTypes Class Reference

A vector of SQL field types. More...

#include <field_types.h>

Inheritance diagram for mysqlpp::FieldTypes:
Collaboration diagram for mysqlpp::FieldTypes:

Public Member Functions

 FieldTypes ()
 Default constructor.
 
 FieldTypes (const ResultBase *res)
 Create list of field types from a result set.
 
 FieldTypes (int i)
 Create fixed-size list of uninitialized field types.
 
FieldTypesoperator= (const ResultBase *res)
 Initialize field list based on a result set.
 
FieldTypesoperator= (int i)
 Insert a given number of uninitialized field type objects at the beginning of the list. More...
 

Detailed Description

A vector of SQL field types.

Member Function Documentation

◆ operator=()

FieldTypes& mysqlpp::FieldTypes::operator= ( int  i)
inline

Insert a given number of uninitialized field type objects at the beginning of the list.

Parameters
inumber of field type objects to insert

The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/menudata.js000644 000765 000024 00000012423 14042362133 020730 0ustar00tangentstaff000000 000000 /* @licstart The following is the entire license notice for the JavaScript code in this file. The MIT License (MIT) Copyright (C) 1997-2020 by Dimitri van Heesch Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @licend The above is the entire license notice for the JavaScript code in this file */ var menudata={children:[ {text:"Main Page",url:"index.html"}, {text:"Namespaces",url:"namespaces.html",children:[ {text:"Namespace List",url:"namespaces.html"}, {text:"Namespace Members",url:"namespacemembers.html",children:[ {text:"All",url:"namespacemembers.html"}, {text:"Functions",url:"namespacemembers_func.html"}, {text:"Variables",url:"namespacemembers_vars.html"}]}]}, {text:"Classes",url:"annotated.html",children:[ {text:"Class List",url:"annotated.html"}, {text:"Class Hierarchy",url:"inherits.html"}, {text:"Class Members",url:"functions.html",children:[ {text:"All",url:"functions.html",children:[ {text:"a",url:"functions.html#index_a"}, {text:"b",url:"functions_b.html#index_b"}, {text:"c",url:"functions_c.html#index_c"}, {text:"d",url:"functions_d.html#index_d"}, {text:"e",url:"functions_e.html#index_e"}, {text:"f",url:"functions_f.html#index_f"}, {text:"g",url:"functions_g.html#index_g"}, {text:"h",url:"functions_h.html#index_h"}, {text:"i",url:"functions_i.html#index_i"}, {text:"k",url:"functions_k.html#index_k"}, {text:"l",url:"functions_l.html#index_l"}, {text:"m",url:"functions_m.html#index_m"}, {text:"n",url:"functions_n.html#index_n"}, {text:"o",url:"functions_o.html#index_o"}, {text:"p",url:"functions_p.html#index_p"}, {text:"q",url:"functions_q.html#index_q"}, {text:"r",url:"functions_r.html#index_r"}, {text:"s",url:"functions_s.html#index_s"}, {text:"t",url:"functions_t.html#index_t"}, {text:"u",url:"functions_u.html#index_u"}, {text:"v",url:"functions_v.html#index_v"}, {text:"w",url:"functions_w.html#index_w"}, {text:"y",url:"functions_y.html#index_y"}, {text:"z",url:"functions_z.html#index_z"}, {text:"~",url:"functions_~.html#index__7E"}]}, {text:"Functions",url:"functions_func.html",children:[ {text:"a",url:"functions_func.html#index_a"}, {text:"b",url:"functions_func_b.html#index_b"}, {text:"c",url:"functions_func_c.html#index_c"}, {text:"d",url:"functions_func_d.html#index_d"}, {text:"e",url:"functions_func_e.html#index_e"}, {text:"f",url:"functions_func_f.html#index_f"}, {text:"g",url:"functions_func_g.html#index_g"}, {text:"h",url:"functions_func_h.html#index_h"}, {text:"i",url:"functions_func_i.html#index_i"}, {text:"k",url:"functions_func_k.html#index_k"}, {text:"l",url:"functions_func_l.html#index_l"}, {text:"m",url:"functions_func_m.html#index_m"}, {text:"n",url:"functions_func_n.html#index_n"}, {text:"o",url:"functions_func_o.html#index_o"}, {text:"p",url:"functions_func_p.html#index_p"}, {text:"q",url:"functions_func_q.html#index_q"}, {text:"r",url:"functions_func_r.html#index_r"}, {text:"s",url:"functions_func_s.html#index_s"}, {text:"t",url:"functions_func_t.html#index_t"}, {text:"u",url:"functions_func_u.html#index_u"}, {text:"v",url:"functions_func_v.html#index_v"}, {text:"w",url:"functions_func_w.html#index_w"}, {text:"y",url:"functions_func_y.html#index_y"}, {text:"z",url:"functions_func_z.html#index_z"}, {text:"~",url:"functions_func_~.html#index__7E"}]}, {text:"Variables",url:"functions_vars.html",children:[ {text:"a",url:"functions_vars.html#index_a"}, {text:"b",url:"functions_vars.html#index_b"}, {text:"c",url:"functions_vars.html#index_c"}, {text:"d",url:"functions_vars.html#index_d"}, {text:"e",url:"functions_vars.html#index_e"}, {text:"f",url:"functions_vars.html#index_f"}, {text:"i",url:"functions_vars.html#index_i"}, {text:"l",url:"functions_vars.html#index_l"}, {text:"m",url:"functions_vars.html#index_m"}, {text:"n",url:"functions_vars.html#index_n"}, {text:"o",url:"functions_vars.html#index_o"}, {text:"r",url:"functions_vars.html#index_r"}, {text:"s",url:"functions_vars.html#index_s"}, {text:"t",url:"functions_vars.html#index_t"}, {text:"w",url:"functions_vars.html#index_w"}]}, {text:"Typedefs",url:"functions_type.html"}, {text:"Enumerations",url:"functions_enum.html"}, {text:"Enumerator",url:"functions_eval.html"}, {text:"Related Functions",url:"functions_rela.html"}]}]}, {text:"Files",url:"files.html",children:[ {text:"File List",url:"files.html"}, {text:"File Members",url:"globals.html",children:[ {text:"All",url:"globals.html"}, {text:"Macros",url:"globals_defs.html"}]}]}]} mysql++-3.3.0/doc/html/refman/myset_8h.html000644 000765 000024 00000013265 14042362133 021227 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: myset.h File Reference
MySQL++  3.3.0
myset.h File Reference

Declares templates for generating custom containers used elsewhere in the library. More...

#include "common.h"
#include "mystring.h"
#include "stream2string.h"
#include <iostream>
#include <set>

Go to the source code of this file.

Classes

class  mysqlpp::Set< Container >
 A special std::set derivative for holding MySQL data sets. More...
 

Functions

template<class Container >
std::ostream & mysqlpp::operator<< (std::ostream &s, const Set< Container > &d)
 Inserts a Set object into a C++ stream.
 

Detailed Description

Declares templates for generating custom containers used elsewhere in the library.

mysql++-3.3.0/doc/html/refman/functions_func_r.html000644 000765 000024 00000012522 14042362133 023026 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
MySQL++  3.3.0
mysql++-3.3.0/doc/html/refman/stream2string_8h.html000644 000765 000024 00000011274 14042362133 022670 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: stream2string.h File Reference
MySQL++  3.3.0
stream2string.h File Reference

Declares an adapter that converts something that can be inserted into a C++ stream into a std::string type. More...

#include <sstream>
#include <string>

Go to the source code of this file.

Functions

template<class T >
std::string mysqlpp::stream2string (const T &object)
 Converts anything you can insert into a C++ stream to a std::string via std::ostringstream.
 

Detailed Description

Declares an adapter that converts something that can be inserted into a C++ stream into a std::string type.

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1null__type.html000644 000765 000024 00000007764 14042362133 024764 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::null_type Class Reference
MySQL++  3.3.0
mysqlpp::null_type Class Reference

The type of the global mysqlpp::null object. More...

#include <null.h>

Detailed Description

The type of the global mysqlpp::null object.

User code shouldn't declare variables of this type. Use the Null template instead.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1FieldNames-members.html000644 000765 000024 00000015437 14042362133 026245 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::FieldNames Member List

This is the complete list of members for mysqlpp::FieldNames, including all inherited members.

FieldNames()mysqlpp::FieldNamesinline
FieldNames(const FieldNames &other)mysqlpp::FieldNamesinline
FieldNames(const ResultBase *res)mysqlpp::FieldNamesinline
FieldNames(int i)mysqlpp::FieldNamesinline
operator=(const ResultBase *res)mysqlpp::FieldNamesinline
operator=(int i)mysqlpp::FieldNamesinline
operator[](int i)mysqlpp::FieldNamesinline
operator[](int i) constmysqlpp::FieldNamesinline
operator[](size_type i)mysqlpp::FieldNamesinline
operator[](size_type i) constmysqlpp::FieldNamesinline
operator[](const std::string &s) constmysqlpp::FieldNames
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1CommandLineBase__inherit__graph.png000644 000765 000024 00000017337 14042362133 030611 0ustar00tangentstaff000000 000000 ‰PNG  IHDRæ\z;ɨsRGB®Îé™IDATxí ¼ŒÕûÀ"…(IH¨P¶‰JÖ(R¤²E–do¡RI•Jü²“6¿lõ£´SId)„J‹Ê’({dÉüŸïñ?cîÜ™¹3÷ÎÜ;sç<ŸÏ½ï;ç=ï9ç}žó¬çyϛã â 9ãj4n0Ž1ÝDpˆC 8ÆŒC¢¸!9 äJ$üöÛoRªT©D²kc૯¾’K/½4.G˜pŒyÉ%—ÈþóŸ¸D¦Tâ``øðáÏŒéLÙÄ™Kn¤I„ǘIDl÷¨‰ƒǘ‰C+7Ò$Â@Bù˜ñ@—;vÈþýûå¼ó΋ÚpÖ¬Y#?þø£”.]ZªT©"'tRÔÚŽfCß[¾|ùdóæÍR©R¥ͯ\¹R.¾øbÉ;wŠòP?vîÜ)?üðƒ·ÊE]$ ôþNÖ§1#¤ü²eËdæÌ™Þ¸ú¿ÿþ+ƒ ’^xAöìÙ#_~ù¥ôìÙS~þùçÀ7dqé§Ÿ~* .”o¿ýVÆŒ“j4K–,‘ǧ*U°víZÌ£Ío¾ùF}ôQ9rd¨[’âZ¶Ó˜[·n•çž{NòæÍk$q³fÍIþË/¿Èm·Ý&ÅŠ“?þXhŒtã7JÇŽMýcÇŽÉòåËåŒ3ÎH‰%dþüù†áºtéb±\¹ræÞmÛ¶Éĉ½í~ÿý÷¦ÞùçŸ/³gÏ–©S§ Y“Œý¦›n’±cÇÊ„±)RDjÔ¨!³fÍ2çO>ù¤‰4.^¼Øh4˜„qÑÎÑ£G塇’Ê•+›:/¾ø¢ ý¯¸â éÛ·¯ߊ+ä§Ÿ~2¸èÔ©“4iÒÄô£äÈ‘C ( —_~¹w¬þ'à~#BFE{‚ž 6Lþøã©]»¶ôêÕË4Q´hQƒ;~,X°@Àøˆž‚“²eËJÿþýåôÓO—qãÆ™ñ¢Yy&®!0¸Ü·iÓFš6mjÚHÔÙNc9rD¾þúk©^½º!ö¤I“äÊ+¯”>}úÆ«P¡‚|þùç²wï^Ù·oŸ9‡ ˜|O=õ”™DS¦L1ôd‚5oÞ\yä3AÑj<(0×a^&ÿ®]»dË–-òûᅴɉYÓ… 6ÌÍ9L~æ™góÕß¼ð åšk®‘¿ÿþ[&Ož,<ð€Üu×]˜èóÏ?ÿ” 6Èã?n!óì³ÏJ®\¹Ìxx¦/¾øBz÷î-+V”ñãÇËý÷ß/W_}µ¼óÎ;to&6LþÒK/ f4šÊâ<µmÛÖàŠº<[£Fäž{î‘_ý•¢ °qãFÃŒ Sñ<ï¾û®¹T³fMyâ‰'L¿ï¿ÿ¾)§]„ ÖKa7Üpƒ)ýõ× }íµ× ¾h‡ñ.]ºÔE*øEpxêÞ½»t˜Ý‰ ÙŽ1!Æ©§žj$&Ì™'OAk^vÙeò×_ÿ?³³”s˜­öüóÏ —ɼ{÷nA›Áxø“W]uU*:Ÿ{î¹R«V-ã2áh¸þúë #¶hÑÂL"Ê`R&8pÝu×Í•3gN9tè)óÿ‡öâ4T:uŒ?ǘúõëK™2eŒ¦¨[·®_ùòåÍóqûÐŒ¬ùr´çýôÓ2wî\yûí· ©‹)J@ €Fþüùm“¦}˜°åôi˼}N˜d0‡/Ì™3G-Zd˜Ê7‚9‹f˜ðccRûC¨ë´Ãd¦ŒÆ,€+€õ0ïi߆O¸àßx"þФdqÑxÆJ:|OÌS´9‚ DG-óæÍ3‚÷Á±2€ VP"C¶Ô˜i-‡Fâs¤,¦!¢3‰˜øhH{©ìøLHq¢´L ˜À”0u™hþ¦À‘ßhaîg˜Êh‹ÆÍA;L6ê®_¿ÞhS1ÿК˜Žø}0&¾2ÌðÝðgñ­Æ³õ¸F³hàP€iýtüe\ L~_Ï%ðI]üônݺÉ-·ÜbžŸ>?ûì3Axa²B3´0Ú–ñažS—2Æ•È-5f0‚ L:´ ÕJHí–-[éIÅDâ7¾à;ym;ÜߣGãûÁ”ܽd‚1© DÙ2ü#ü+ü^L4&þ+žQ£F?í@@­…)zûí·›v`pÆ “W¨:˜y0d×®]Í3ÑÂÍh MÙ¡CãŸ3´•í?—±Z¸ûî»íiª£½§}ûö†™¨@@ ¿͈ЫW¯ž¹€LW¨P!|ÂìFûâN À0‘ñUª02¼à&tÔàÂ÷„XB"CpÅe>AühäÊöë×ÏD,јðQN;í´æ!&À´iÓŒ‰J`@C²ÌA€­f™æ¾ûî3Á$>“‹  ™éÛš€ö´(ÚȶoË3zD ÛñчPÚEƒƒPuݨ M†¦Ä„¶&r z¶ ë…8x!@…›À”EëÓ nqB \™´º?¸ãŽ;Òªš%דJcZ #‘ B }Á×ß²åþŒbË푉á;9lùYgeOÃ:¢)A4˜!P»¾ãK«ë3j'Ò2|A‚fáÖ€”àÁ8£9VÛoV“’1Y»ô˜á 3ÌWÂc* :4Õ­ø=0½‡Œ` )3R¦Áþš5tT–¹{“I•MNR»§N$ $Tð'Ùw0È»ˆ`È‘#èÒÊütϳ¼yËkÊâ¥LY¤kŠ›ÒÝN¢ßÏ/J'c&úDHïø-Ú Ù:êZÞV]ŸûW&Lè k•ÓÛœæžnÓå‰g”9OÖ”·Ó¥_¿Æš­TE}èãËIénØÝ5 8ÆŒ*£ÛбcÍ1]erûö½º pø f5¥f\ß6Üyl0à36xMw«ãÇ·×%‘¼Œ9‘ mi8`À šÌ"Ï$OžÜê[æÓ—´»¸ ERcfÒƒuyôè1}Íi²¾}޾öUZ™óxt´hÑÓõMŽŠÁnËPù ­™Sµc.}G²¾US]:uzY×9ÿÉPÛîæôcÀ1fúqÕ;ùWßtxYß$ñè–õeí®ºAI³¶ˆ/K@k²lR´hA}QüyðÁ&úZZ)}-m¬¾›z –]»¶ƒ`ÀEeƒ &3‹Y9òc}!y‡îÇÓ^}¾ãò’×›¸ækÖÆb\ƒC‡ŽèëU¹S$ ú¾î°^wYè¡ïbžØ­!cpm¦Ä€cÌ”øÈô_D`Y¶(Qâ Ý*£÷EäLHGš§Œ¹L7½ê­ï9¦ÞÆ$Èm®8ƒp¦l˜‘ÛñáZ·¯ûÓœ¥³mÜ1%Ïv÷Ý×H»vWèKå#uÀã›veä™Ý½áaÀ1fxxŠz­={je¼nƒQR÷Zmõö£Ù`÷îõt •zšl0Z~ûíøN{Ñlßµ•Ž1Sã$æ%;wþm+W]UF† ¹)æýE£ƒŽkɽ÷6’-Æè¦Ð;¢Ñ¤k#N,`…¨ä.E$¤ílÞ¼ªî€žr¬èõ›–Ú¶­iÖ6[´­~gOÝ‚òøæc±é-¹[uŒ™‰ôߺu·Ü|óXã³õêU?{Ž^W-ZT3ë—iӺ鞮%¢×¸kÉ‹ǘ^TÄödóæ]Æ ìÖ­®®W^ÛÎbÜzÓ¦U s¶m;Q×[ïÔm6KƸÇäkÞ-—dÍYŸlÕj¼îQÛÐhËLè2SºX°à;ÝNtª~̧“nº|~¦ô™,8ÆŒ1¥yï±U« º±sSõ-/‹qo™ßü’%?éû›¯˜]jÕ*›ùȦ=:ÆŒ!a×­ÛªïWN0‘×fÍ.aOYÛôòå5·ö%ÝMþ6ý$Dù¬L6éÝ1fŒ¹fÍ&ý¦å ºFÙ**;Äh˜QkvõêMj¦³3}ký\Alî£6ØhÈ­cÆ€Hh˜ m@b0Ĩ7Y¥Ê¹2cFÝØë M„?þQ¥¨w’D º¨l”‰½xñæÕ­‰;è×¼’ËçªX±¸üï=MFÓáÃGåÖ[«G»ÉÓœcÌ(ÒÚF)ym+Y£”¼ß9kV/eÊqúÆÊÑl…ŽâTI³)çc¦‰¢ð*|ôÑ:¹ï¾òßÿÞ)—^êÖõ6mÚi’)ºw¯+;'öºmx3 ºµcFŸï½·Z?û¦L™ÒÕì>…&³Ed:¡9IåKÔL§¬"„cÌ b~Ö¬2xð;Æ·*WÎåŽú£sÇŽ}ª9Ç$dn°ÿ³dæoǘÀö´iKuy`®Iè¾à‚Ⱦ‡™nîVû6 ;öïß4áÆŸvË%éÄúäÉ‹Ínéo¾Ù[S†Fb¡Bù<-\ø½.!Í ]Ù]5p3a„Ou{Ç/dæÌ^ú¹ñ_S,ê;ÆŒ«Ï<óÌ™³V³§Û5.¼ùWeç¿^LܱcؙۧϿn²þv>f˜”6lŽ|òÉz£)ÝVŽa"-H5>ÁÀ¾¹˜¶ƒ¿­âußGñG•Ó˜þ ðûá‡gÊ7ßlÖ7ö»K§¨áŠÒƒvžïÞ}²Éâν»cÊxÊÈ¥9r¨ŸÙÎ|žá±Çfg¤©ìu¯J,/,X°€/˜º¿ÿÇAþüU=9räŠ[|<ýôÓ^Ú¥÷$^h® êÉŸ¿ZÜâ:Ö|ñì³Ï¦ a ©D’š¯ k­¤?îÛ·R?òs$.ñ0uêTY½zu†µÄÂ… åÑGÍògû,Üa›zŸ~ú©®ÃŠèžp*Çc6LæÏŸÎØã¶Nvx†ÌDn¼àkëÖ­ºKþ=úí·ß.þùgÐ{ªW¯®_ëŽ<³)bÆœ1c†¾!ÐVè°R¥J2fÌ©P¡‚”)SF/^,ƒ ’#F˜"ªT©"ýõ—n»qŸ¾‰qŽùýõ×ÇwQ9r¤œ{î¹rÍ5×HãÆ5»æï¾ôÒKšOÙÁÔ?ï¼óäÝwß5×.»ì2Íé®Q=[7P¾E8þ)òk¯½V~üñGSÇžïÙ³G7[n¥kdE¥iÓ¦²}ûvÝ5üEýÖã&úG›52ˆ=z´~$çBó,ãÇ7íôíÛWºtébž­~ýúºå03Þ+¯¼RvìØ¡ŸduëÖf5j”ÐÎã?nêöîÝ[æÎëe2nsæÌÑ—ß0 Ñ¿Ó&:ãŒ3ææái¨Y³¦äË—/Å9ã:räˆÑÀ\»çž{ô͆ÛdíÚµº¨=Ö‚ìÞ½Û”7ß|SÔgùçŸ ¾úê+S¶wï^3Ö?üPrçÎmplŒfúoåÊ•†Á7ß|³ùÛ¿¿~Và.#hXòxòÉ'MõâÅ‹ëëP™óòåË ¿ã‰æC† 1sìË/¿”E‹Ɇ tÃíÔeÇ×7\Jš¹±iÓ&ýîço^t#ìýiSB—~ýúéWÚúêˆWIéÒ¥½÷<÷Üs†É¿ÿþ{)V¬˜Lœ8QtYôsz…¯·r'éJN¬]»¶د¿þ*7n4çh'mÕ¾}{3©™h5´)åПÞdææán@Ù²©·z¤.ZŒ?îµÈƒÁЂ;w6ŒI0¹{Nhuü$ãôéÓ5ƒçTÔMš41š†A³}þùçÆ¿ÀßáY¬&nݺµ~4ç#!Ñp´W£F ÁìéÁÆÈXèm‰%Q @c9 µyÖž={!±lÙ23쫯¾Zø°â …æ\pÀ$ÐpöìÙÍ•}üñÇ‚Vd^`¾Z˼3GÑe„ðÌŸ?¿|ûí·)H4tèP£HødêœvÚiæµ6I¤±Æ¤ƒóÏ?ßôÃÄ,T¨PŠ>óäÉcT7LùÞ{ïÆD‚0ñ ê½G‚”bÒZà>8ýô/!>|ØhHêØrÊÐdÁ€>`:ˆcôéÓÇTñ@Þ¼yÍf¹üòËfÇ 8唉ꡞ•›íX8÷#¿éÿ¤“N2ý3’7Çû￯Ÿ¨/ãÆ3.‹ëñ¡ðO4‡Ap›H–‰07•ùÎ?ÿ¹Gš` åÊ•Ëc¬@Î}M:xð`MÄÏchê{-=çébÌ´:Bƒ ü@¤&"ÒIÓŽŒiGpçºë®3ÌzôèQ£ 19ü¬&-v:¦(v=€Ä¡y+ߎÆÿûï¿Íu{ŽÍDÄ FkñÅ&‚†ùŠvGjb.ÓÏÅ_¬Û^Œ2¦7Ú†‚‘{é³÷Á4ïk¯½¦Ù-ûŒßËäA“"°&øÃÔ0µñc â…æ 6þÞ~ûmiР±‚•1ÿ`^`Þ¼”Û` ›ð§¿›5kfL`k•™ô®Ø3ÏúH`DüR¤&"#Âͨ~ ¶&k¹råLÔ‹@å0*ÂWC¿òÊ+æ6LS| |{ÞµkW騱£¼ð ƌĴyꩧ䬳Î2,X° ÑÞ0,¦2Œ$¬\¹²ñkíxüŒ#Ô©Ïuð€‰„p"r÷ØcAA`ÿ†#(Î ˜1þ·ÞzËp†Éï`ñ/4Ç5AÈ2¿°`p5˜‹þe˜¸ÑrbÜ%€çÁ¿÷§ÑO?ýd\|H‚™óÚµkç½·Š?ÌW”Á;æ<1æ#Ê$"PÎö‚Nš[Þßé=Ñõ¨¶ôüñÇÞ&TÃyTx4¨â-ãD8¦Lý6F-½×žxâ Ï€<:¡=ªe¼åÊ8E¸GýMoYZ'?üðƒ‡1…ÆgÛ¤}5=CU7ׂÑÿF0æ9|Ë5‚ìQûEt®#O›6m"º'Pe•üºQY<Ñœy§ñãT¦J£ÚÑ£= –õù)Ôúñ¨Â0í¨0ð¨ñ¨¶L1Su¢,õèJGŠKQÕ˜H’qYNÁ¡FêXÀµf§-ãX¸paߟ©ÎÏ<óÌTe´å럦ªàW€›ø¶‰ùÉ_¸hŒ¾÷²LähÑìñFsßygq¨ ÿŸøG°—"¥–˜ðÁóµíõ´ŽQgLLSü.ßAÚA`ªAD”h,ˆ±€¯çû6Pc¯Û#YA¾÷Ùòh1WèSWµ­YòmŸe "¨ÁÆè[7ÎýiŽk‚ÏEà¥^½zÆ5„‡x 9~>æ&&-t·&­¯¥5ŸÌ„¨x¦$PCp€…s|-ÖYrðM( ºéé"bj£¦¾IKÃúÖMï9‹ý³fÍ–2î½÷ÞTÍmf3ØSÝÍ |iNàäŠ+®0ÉÄX>`©Åæ|Q4'äçŸ6ëå$Œøƒ¥µy¬G1 ˜h$kžH'¢Ydаk“eLSL>2‰€´²nÒÊF¡ ¢¿L’%JGŸ2îÃÌÆy§üå—_¦ØDèX£$H–£ÎZ'‘6ÆHv K ,>“ŒPÁ² ÏÃu^Ù|3”l¶p–‚ˆŠrNÒ 8°8#"ŽéÕdóRkÕªeÖu¡×YN#¢ßQwêx¥9Àm°Ì­@ôa=’h=ãD„;nƽ1}¹¤Ž–eÝ“„–hA¦0&æ+Õ0ðEY‡„YI•c¹‚¨)’–å‚PY7ie£ÐˆdÝäbF³ŒÂ}DgI»cb☠ä="`¬PÀrŒÉ nçy6Ñ8"qôÃä $‰CµŸ(×|3”læ´&qİ–à‰ô¸ºL¡+o "îé›D¤âÐáÈo´YZs()© 2·üéC¶u¡3ôÆ| –Ö,ç½…žô‡Õ‡ÀeÞ°bÀR Ëbß}÷]¨æÂ¾–)Œ‰¿âk‰økH\BÝ•‡|³nZ¶l™"ë†ë6¥nݺ¦ îåÜJAü–WX³Ô¨œY3ä¾n¸Á,“¡ÄB3Ë2\g‡6 ý‡ yë­·š¶ ššuWLa®±“ %Ë„W´I(Z“>É’ËQq7þ;xÀ#ù×ÖºÁoEYZ†š $¹ t¾0ÉÐÁ¶ëK|FækÌhd–ªÂ–QähF4&ó&Åa)…qb!-Y²$œæÒ¬“)ŒITÔÿ‘É“'›ÅZÒì|ýFÉš~ ”aDy¨ë˜@,,#E1“A¨d§¥RâÒ@Ð'\ðo‹ü]´)‚ˆ ‚Éܼyóp›Køzh 3"ýi ¡7Š–i]•¹åO‚‡¾1ŒÐæÄ¿†Îüaà E2…1É–yØã¦~&YýhJÌLZ4o`°¸žQ€˜¤Ó¦M3o®`bÁ„€Ä2rðy‘´HU LÍþÙ‰d¯ûY¸FÒóÆÌÃ?lž•|âì¾J6Û +ÿÒštäbÒS­ ¦ DP“Í(D’¹…5D}\èb³­ã²tæ˜ð A-i2oHjˆd c’IÁ'0#ç˜+ø¼Š…É‚iA¦> ¾Y 5'û°˜6ÛÄ–ùmöD€éxµ‹>èߨ‹¦Äï ´ä&ßÑöÁÄB*Ú?UÁÀÞC¤Ó›iƒ6C$Ø}‰ZNp‡·qèÆkwДÌ,ŽÐ™e1Ò3¡)o ! Á “šl«´Àâ4P=®ñ‡e„ ­I`–¹E]|r° ˆ{0ÛÙW–Î<ÀöË3á§2‡1‰‰2ãkGT‹x!Z™?Þœ]ã›Éc«áCvF´AÍ šL¦YúiK•¡ª~¨kdi`ÁCFQ, Þ2üŸQ- “9ü!Øð¯ÉoðL»@8™[ꦙ nÿª}Se…{/õ2%ó'-i,c'­ì™´Ú v©m!­>"ñ7l›ÁŽd‘盬€V –9ldW‘fnEĶãESòMÈS6švm9 $c&•Ý3&c&ÉÜ€“¾Nªfd°žàþÙéÛ%É>ïü¿]â>×â×=d¢aÀ™²‰F17Þ¤À€c̤ ³{ÈDÀcÌD£˜oR`àÿ¡»3C`çIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Time__inherit__graph.png000644 000765 000024 00000016026 14042362133 026520 0ustar00tangentstaff000000 000000 ‰PNG  IHDRžÝLƒÈsRGB®ÎéÐIDATxí üUÇ;¨€€hŠ$(¨aJ)¢(¢Bf*E"f™h¹’™àЦ¤n€I,¦¨$ Å¢‚ˆ€€‹ È"²ƒ2ïyÌ{ÿ7óþïÿÞ{ïžÏç½¹s·™9÷wÏ9÷ÎÜs+xJâÈq ˆ¨XÄr®˜ã€qÀÈ!#8eÄ>WX°|š2e öû9„bàÚk¯õábÇ8 ¤’‡zP¹ŸãA ¼óÎ;²råÊ8± ¸wâ8P8‚I.K8€ÂyãR ÁÊ…ÈS¢Y,X õë×—£>:+×ݽ{·L˜0AþûßÿÊ…^(§žzjVêÍV%3fÌ“O>YêÖ­«rçÎòþûïK›6mbqé>ýôSY´hQ"ǼœtÒIâ3‰(sèñÇ—ýë_™ó_üâÞ7¿ùMïÌ3Ïô–.]jåž~úiïÄO4^üéO²¸×^{ͻ馛,Ÿv /Yžï}ï{^‡ì<ÛâÅ‹½åË—{Mš4±:\žvã]×®]½½{÷Z|ð{ mÕªUÁh W©RÅSé[ ¾OŸ>m  K H¯uëÖqÙÓ–@›7omLÑÆ—sÎ9Gºuë&ƒ–Ž;ÊÀE™ ìÛo¿-U«VeŠüãÿ°ž¦ !ÊH¡žGyÄòÞqǦfp1 Ó‹Æ/£F¤Ò<`i~ø¡Ô©SGæÍ›'Ÿþ¹ÕKÂÙgŸ-‡z¨åñÃóçÏ„Åù:u2©ôÖ[o™š`êB;„ôèÑò(ò·¿ýM†n’kòäÉv¾bÅ ÑÆŽï½÷žœwÞyòÔSOÉÆI2zôhQÐX]»ví’/¾øBþò—¿˜4iܸqÒ<\”|\õ o‚tÏ=÷È¥—^*o¼ñ†I¤)¤­('N”Ë.»LÎ:ë,©X±bœ Ö‘,̵hCíœÒ»woãe²|)ã‚p*Œ¢w]rÉ%VläÈ‘=7nœ×¶m[OçÕªUË[½zµõ`®"Ù;ì°Ã¬7’ÔÓ;U¼ZYþè½3gÎŒI Ç{Ì$Ÿ)D«\¹²÷ÙgŸYôСC½Î;ûY O?ýt{LF Z“ž~ÚQGå)hMÌš5Ë¢›6mjR•¤ =ç¥çBôl†I&$Å€Lzicz *“¢?úÑ,/Ò+YêS Zµ[¬>_!]kÔ¨á=ùä“Þ³Ï>ë]~ùå&•áÚM^óæÍ½Aƒyªž­|²¿0 äçýàƒ¼.]ºxÚ)—[¶lñ“ ³"@$Æ” õÕªU‹éݱcÇ =ƒXÕ›IŽÛo¿]TE†^Æ ­þ(—H‡~x,JAë%~‘#Ž8"V䫯¾md;z>2¯\¿~½´lÙÒ$-R¹zõê±zUÕZ8*?` œ¶Z¬,u«Ê2‰¨ +j6ÈücÁð†?ýéOEA“¼±‚i¾ûÝïZ=H$¤\?“U›¶ KVIb ùýï/Ú«Em#í*-äøƒ¨ bª6І£1U'V#j—X£Î™3ǘ¤Åò î¿þúkQi&j‡Yõc?¬Óî2fÌùÏþcy´·“ˆ¿øâ‹€SFû7¾ñBü¸>DÝW]u•ݧÚz¦~PÙ¨â È˳„åa”¡U"Y˜¿ãŽ;ÎFMÄÝÿý¦*1„é¨PÂŒªÔV•š±r… HÔ/#À{ï½×êX³f¨MZ˜â±ø üä'?±8$#+‰ñüóÏKß¾}:ø°¿ C·Ýv›þ!5‹LAEW(˜?,Ìè ›B&–E{º‡ŽÇF ’Ši‹SCÐl ? ¨gÏž6‚Ûºu«m66”J­X\ªövå‰z‚õ'¦'žc³¨î© ñ´3Ä’y>ÿž¸N2["*ö~O;R¬¾`€ú–,YâQ>ŒxƨôÄrÉFs‰yÏ“Ù@Y•@ ˜‘ÏÕW_m#_ÿ½ä«Î} Ú!~\ðX¯^½à©…©+h?ÈAoF•&£tê –OõÁ{RÃUø%RTâHÌ;§®T’…gô¥V¬`DI™ ÊN-;A%¡ï™MN‡²ÕØ]wÝ•´¸ŽÀ¤R¥JIÓJ"’aú!‡R—*×È:€0"ÓœòG6>×Â)•ÄòË×±víÚÅUu¹¬·XFaå’Ơ¡¤³²LB¸ß\ÕJ¼]?‚˜Hü"±*ôò Ôø"›>¹J_±Tª‘œþ#:ƳÝëõ%ÕB‘Ê5EÖ¼–+ïã€Â °êeÍÓ1ÆW[E–=–+ïã€Â °\Aóõ¯>Ÿ.²÷‹°œyù·¯Ùºâ`J¥ª"Ÿ¾~ðÜ…bpб"X9BOc‹½ÛT dpAŸ@>'‚LJ¨úÚŒQƒzÈ®µñqîL€A°EG^»7$Æê¹¾>YõR’øüŽrJlÿÃDöíMŒU‰´Sdùà‚ñy“õwa垟ŸŽÖGÐ/+ªál„-´ÿ;'Ù¢¦íÙ(RµÞ4wp3щØ·Gç~,ûa.hÝ‘– èJúÙm%÷&>È2'‚Ü ŒäÑ/ Œ*ë*@SµÎþs÷_€Î*À’@ŸèVp, p¤@Ðq§K¼göö¯Ôĺ`€@f¸`úpŠâY5]7V3ù·ÔQÅò)ÍÂò©µ‹áY*¦æS•nŸÅÖÆñ®Y‰U¯,6H¶¬)1oy;wÊb‹±„šuq¬¨eµ)> uck¶r@,ouT°ZϺ޿@éwß}×k¤ÞD|R5+m?þøcó`¢Ì¿ú0ßHê\Á|‘?Êåýë_Û*[¿îÒ>:(JñÞ‹Ë„—G}Ԩ˕B¹Ìcm?Þ4ð€#u†%ºŒÜ&¨ûQ—9æx‚Ë„ù"5qº|Ù¼tPG¥M@Q-°fœÈ‚^–'P7Üpƒ9…À›³p³‚#‰t¨fÍš¢ÎÌ;‹'Qs Û ¯ GY³gÏ67:\Ã'õ»d@#Î$Ôë›ÙU8‰(-r*$çq‡‚g6üéàÑ Ï"E!ugØüøÒ<: ÅýB¼ Ë6x¸0@¥éÖ&ŒMN…qÆÅŠåc¡²»LŽñpŠç‡;K“@i2Ìeç€P·~žÝ(Љn]Xw,Í(ŠEn]Xw€RrÇeHÉ'¢XTˆwaQÅó!ͽ ˇV.Ægt¨™›U;åC+ã3:#só¡j |håb|F (æºwaQܱ´Œ>i-Kßæ¦|Ò"dh¨¾4ë×™¿¶°5•í"ºâ5¶•{ºwš€¸˜.­M÷š.â[НX±¢Èr*¬ 5fy¼ òØje螀ÊPc”Ç[)×Ú¹s§¼óÎ;Yå;>~,¯¼òŠlß~ÀáxV¯PôÊ6mÚ”tü‚ „íÐKƒÊ5€ðhÁ2ãlQ¿~ýäòË/·%Äÿþ÷¿ÍF²eËÙº^ºõpO,}N¤Çܼz$Æ—Äy±ë¾]»vÖ(8èÓ§`õsÌ1æ˜_;§vš¹5áaû÷ï/¿ýíoåý÷ß—óÏ?_Ž<òHùÕ¯~e|À±Á\ 7–Î;ËÍ7ßÇŸ-ZÈ-·Ü"Gu”têÔÉê|á…l-yóæÍ­^à ¤K=â eñÙ3uêT»¸Mñ]ÖMŸ>]¾ýíoKݺu妛n–4¿üòËæláÌ3Ï´4ÖÊ7kÖÌ–$³v—wêLÊÜ·àæŽ:!<˜]vÙev¯—\r‰à•jÛ¶­ù jß¾}høpöÙgoüg°ÂúLj€5lØÐ|áx¡¸©X”Ê¡ai°ï(iĈrÆg˜'œÌš5K¦M›&K—.¤®QðŸƒ|ô‰ÆªS§ŽÌ›7Ïÿ=k×®•ñãÇ‹zzé<`E0Þ- ?¼páBÊrO>QŸ_H»I“&Ù}´Í›7›Ë€Î9çH·nÝLýázeàÀ²mÛ6K¿ýöÛí¾q$E§yâ‰' ÐK–,õN&Ï?¿OVž“ÎC' ËC™®]»Z' ÏèŽ^}õUs¯wÅW¿}ûŠ×QzÆó@þ͇}‡J0Îw¨„ó¿g_yå•öÀgùòårÑE ` >yH/u‚¢!‡ Và’wÞy§ÐÓ»téb N8á“~'t’ðëÞ½»ï¼óÎ~F:aS%#$~xîºë.KFÒ=Ú¤N›6mäÜsÏ5W+8D Ì}xèÄO”:X© Õµñ°A£ãïbb ãƒ÷1äMÌÃ3ýüç?·ü^x¡Lœ8ÑÂüá¿éƒôÃÕÆí¾àYqQ±J n:Ê¡騛qãÆˆ~øÃš7SLŸ2eŠI ©s jÕªÙ1ñïð÷(õ_óÛãÇ‘@¼¯.Ëâ cÙ²e¦:ü4®‹JH#ŸèÕ¨0èøã·#^3Po‰”ìú¸±CÊ𨿠ù0,˧êÕ«ÇMäÂ#0`~=ôЋ“Š@©n¾iÓ¦R¿~}ë•H#)Äo̘1fC1Ò•€‚|•g'¿É“'›Aé{DEÕÐàsæÌ1×q§Ÿ~º_;öa$©N3­Qp¥Ò³gOóFF<  )5vìX»¿À¥Cƒ‹/6µEyì(:Ì„ ¤oß¾&ÑPÓÉfóÃò ªQ[ø]D½cSú„„óǽ÷ÞkÞˆž» ¾G8Ø _|±ñÝq±ˆªcd„/Á^½z™Ú@´ûä×HZˆk$†z3µ,5£1:ÉM8 ?ŒyñÅMä#uêÕ«'H ƒ2ÀÔÄA5à×0ŠüûÂ?tË–-ͰÆ`F£bùa”\ì¤ä—K–gݺuæTŠª¬uëÖÒ AƒX9:åIƒ¨ú0im…²ñ—‰›X½~&Åceqw‹ûÚ )³µ =í4VNçw’Ö–‡útÞ'é5‰ÔNcÏš! £dOíË@LzÁb7¢SüŽ;î0#9H¾-ŒC¿c Æ“RÄ·“‚éH“t(,?½¹()¶ ¿ ¡¶} ÚW~ǰ<ÔÅ`!Œ|©–žÍøŒ>ªG\*^3ºÄ2þÓñ¾Å(—¸AØÔ$ò@Œþ‚„­¤Ò$eaT ª2¥¡jÒi/‘¬¨åûî»/ΖJçÂ¥.h´t C1Ê'‚‡¸Dà1Áöå—_Úkær0>¡c=Ö élˆ9®² {è ÿJ}–áý§,Îû#FVþ,4î¿ÿ~õa´3ÿÄ´?&'Tªfêxýõ×ÍfÉ»³ 1wÅ<ÎÉsr@ ÍyÝÍÂì.#±TĨ ¥šaF51*|ê©§ œŒÔâûÄÈ Î5²|¼ÃÊUÊ9ñf½Î0UDã1L¦QÓ!†™÷oÌV3ÃL˜iæ¥P¼?ã£ÀøÄ,2jÑ¢Efó>ûá<×(çÄl2“‡lFÂV¼ë* EÍ03gÃüŽ?ãËÖÌ»$6÷ÀËQ w^Õä倘„¤‘>H"z?ï­üWÙh@&ùVˆ)&,ß~ûm{Mâ×͵^{í5á]’ qO¼™Ï5Ê9Ñ@Ì‘ð›;ˆ·åþóŸ³ÒvL]0GuÝu×Ù§¼ëc¤Å¬¹Oƒ ²ÏUØ’€{à^¢æmüråñXêó@%Å4¤B¶½Ê3Êb:©8®¬?›ár?”MfDÕ•mðp-$O²yžâ¸VÔ³•fZNª°Òdh¾]Û(ßZ<ËÏë”e†æ[uѹ̰êÕ›è|O5”§æòcÚ„¨?ï•îƒfô25Ó7ñéÞlIç¿ôÒþºü*ý¢ð-ý0+#V•ô­—Øõœ aõ¦MÛeñâÕúÁ{5ý„vÿç¯!Yó:Ú(¤ùß|s¾ÎUÒïyvˈßs…dÏÛh ¦6l†~´¶ÇRß{ïcRHÖ¼ŽvJÒükÖ|¡>sÖÇRªV­¤K’FË”§ $ ?zô­KA >#vî9àt±ÐÈ‘ïÉîÝ{cç-Z­Ëy¶ÅŹ ,[¶NW¯ ý3/!·;uJÀÀ¨Q³õÛ¡‚ vîÜ£ëñK`—¸Ù±Ž0|¯PÁÓu\UlÉ«–*VÜo-]ºV¿—Þ¡ëäã— %T‘W§½ÊÈENíÞý•¾ºØï¥0Íœ¹Bz÷îh ¨jÖŒ_ ˜‹]›ŠÈ–×I@ÍÏ$¢:#‹Èá’€2â€Pûœ ‹`Î$ 9Á ÔÌq9RsÀI Ô+}ûö•“O>ÙÒF%lÄË6—Ÿ}ö™L™2Åâ»ví*lj¸Ø"“í3§M›&<[‡³+÷Ùeúž{îQwzu¬lYý+óhÆ ²téRyä‘G H“&M²½ÚÙðÝwßµí&Ù†¢1Ø~r„ R£F uŠ9Lj×®mñ³fͲ]“i â>ù䓸6Y³f56€ef¶íf˜Ì5Ø,€½ñƶ§<›5k¦Þ˪Ûm¾ÃhÏž=±k­^½ZÝï–G}T&Nœhõÿñ´ûcûðqãÆÙæÀ\‹ºŸyæ™°jËL|™œjÛ¶­4iÒDš6mj{·7nÜXh´7Ú9=âxþùçÛVß„Ù/¾S§NÂ|j„ýA5j$ì윌ÈwÄGØÜÊÌ™3-KÆ mžŠrH $Ô¹sg©W¯ží ïK%KHñסC“Tõë×7‰F½\ƒg¬ØLØeì:ýÑGe“—2¯Âhï÷Š+J­ZµâšI@/‡ùôn€…j@B!™î¾ûn¹óÎ;Õ÷óç¦æ(ÌžïÉè°Ã³h6ÍeC]È#Œç¼(õ,â UvÈ!‡È•W^Y”K”h™r!¢8XÚ´i#O?ý´IÎ `êâÚk¯•¹sçJË–-Ͷ ®0£–žF¤Ķݛ7oÖÍV¶ÉÂ… íÄFÅñ#œ bVɃM× A³é²QoqÖQ.$P2~Ð\ £G–víÚÙyëÖ­¥G‚1KÃ3* Åî@õ|ýõ×–Ïÿóë™G¹¼ôÒKrÛm·ùQvdvÜqÇÅÅqBÃ`3…Æm"a3…ÙM‰y³qŽú*/Tî%’ãÀ¤C¨†ó>¡ê:c|û„ª£— i?­,ÊB+ ŽŠBAðP>HPcÉâ‹r½\-SîGa¹Ú0åå¹ÊëR¸cæp|ðÁR¸rî\²¤ û0Ž•ª vS.¾üpÀ©°òÓVeòN€Êd³”Ÿ›r*?mU&ïôÿjÚàƒ%á^IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1TypeLookupFailed.html000644 000765 000024 00000032762 14042362133 026026 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::TypeLookupFailed Class Reference
MySQL++  3.3.0
mysqlpp::TypeLookupFailed Class Reference

Thrown from the C++ to SQL data type conversion routine when it can't figure out how to map the type. More...

#include <exceptions.h>

Inheritance diagram for mysqlpp::TypeLookupFailed:
Collaboration diagram for mysqlpp::TypeLookupFailed:

Public Member Functions

 TypeLookupFailed (const std::string &w)
 Create exception object.
 
- Public Member Functions inherited from mysqlpp::Exception
 Exception (const Exception &e) MAY_THROW()
 Create exception object as copy of another.
 
Exceptionoperator= (const Exception &rhs) throw ()
 Assign another exception object's contents to this one.
 
 ~Exception () throw ()
 Destroy exception object.
 
virtual const char * what () const throw ()
 Returns explanation of why exception was thrown.
 

Additional Inherited Members

- Protected Member Functions inherited from mysqlpp::Exception
 Exception (const char *w="") throw ()
 Create exception object.
 
 Exception (const std::string &w) throw ()
 Create exception object.
 
- Protected Attributes inherited from mysqlpp::Exception
std::string what_
 explanation of why exception was thrown
 

Detailed Description

Thrown from the C++ to SQL data type conversion routine when it can't figure out how to map the type.

This exception is not optional. The only alternatives when this happens are equally drastic: basically, either iterate past the end of an array (crashing the program) or call assert() to crash the program nicely. At least this way you have some control over how your program ends. You can even ignore the error and keep on going: this typically happens when building a SQL query, so you can handle it just the same as if the subsequent query execution failed.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1NoSchemaOption.html000644 000765 000024 00000030634 14042362133 025470 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::NoSchemaOption Class Reference
MySQL++  3.3.0
mysqlpp::NoSchemaOption Class Reference

Disable db.tbl.col syntax in queries. More...

#include <options.h>

Inheritance diagram for mysqlpp::NoSchemaOption:
Collaboration diagram for mysqlpp::NoSchemaOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::DataOption< T >
typedef T ArgType
 Alias for template param.
 
- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 
- Protected Member Functions inherited from mysqlpp::DataOption< T >
 DataOption (const T &arg)
 Construct object.
 
- Protected Attributes inherited from mysqlpp::DataOption< T >
arg_
 The argument value.
 

Detailed Description

Disable db.tbl.col syntax in queries.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1IgnoreSpaceOption__coll__graph.png000644 000765 000024 00000014534 14042362133 030503 0ustar00tangentstaff000000 000000 ‰PNG  IHDR™‰?Šš!sRGB®ÎéIDATxí”EÇ %ˆ æê§ ŠŠ 0+ˆ€9cAÅ úÌß3`@ŒdE0É,ê©&=D‚ž""bFA<a¾ú•ö2·ÌÝíÊ7{t½·7====ÝÿþwUuïÜV•@E¼xÊ¥”_ݾfÀ?x’y&”;ždå±@ÕŠ„`áÂ…²å–[VdÖ‹g/Z´HêÔ©Sa}­P’ýöÛoÒ°aCùꫯ* €ÊþàwÜQ*šdÞ\Vv–Å žd1„ÊÞO²Ê>Â1è_…úd1è¿üðÃRXX({íµWÆš3a™:uªÔ¬YS<ðÀ”ëþóÏ?eÊ”)Ò¢E‹Œµ%­÷š,//Oz÷X±b…´mÛV.¿ürùöÛo0œ_{íµ¥ÖÀÈÊ•+å?þ1cÆ”Z6/ÆždsæÌ‘Ö­[Ëi§&;í´“ôìÙSÚ´i#õêÕ“¾}ûÊ믿.íÛ·O`ß¡C=z´<õÔS²çž{Ú=999výý÷ß—Ýwß]öÛo?»gÈ!‰û äÔSO•£>Z¶Ûn;¹ýöÛíe:uê$ûԯ__^{í5ËöÙg¥{÷馛äù矗'žxÂÈ5yòdéÕ«—ôïß_&Mš$O>ù¤ Ýºví*]ºt±6¡áXU_vÙeBùOªT©Œ5*жÞzëà—_~ îºë®`›m¶ fΜ(‘5«V׸qã%¯¥•Ðvç΃믿~þ´jÕ*4hP “#Ð cí»æšk%X Ú+Ø`ƒ ‚_ý5 ¯5 tËÁž©“%xá…‚ºuë‹/6 ¶Øb‹àã?t‚%úµÆC`ôÝwß…rÖy²(+|²M6ÙDtEB6ÞxcÓ˜¦Ÿ~úÉ6sñaÞ|óMÑÁ’#Ž8BtPd×]w•nݺIÇŽEEæÏŸ/sçÎ5ÍA¹“O>yù¯d”SN9ÅòO8áÓˆœ Euðí£$4iÞ¼¹}¸Ž¦CÐzh£dQ²JõêÕ-[ mZøŠ+®#<Ò´”’[6ß|sÑ ceÞzë-«û˜cޱs4ýCN:é$Á¼ÒÖn¸Áòâþ'öæÿ÷¿ÿIÕªUDª¡¤ZµjÅp=ãŒ3$77×Li 3ªD0; Ê÷ß/Ûn»­ÕÁÍ5jÔ(V'›m¶Y"oùòåFÌÒò…ÿMì²Ë.A¹UC™™&ß=#\¸àAdyï½÷ž_yåk£è4³4åX°úýè£Ì/u׳í˜æ²$PÑXˆúO¢þ–i'÷]¨úQ¦9bY4°ÊÜ"Ɖ«“†CÎVÂé§Ÿn÷P†ÆMr¾;וªðI§!“ó£ÎYX ùJ¶‚Õ®tž®/né*Ì’ŠjûD˜‰µ} ˆý¤t“Ø•GðÓ–,Y’pÌ]]EEE–dU»¶‚¯G=É —µ­·´ûÙkËÏÏ·=·Òʕ㵥Yí“9`Ò%÷¡ù‚6q+¿p~&ÈåêÛtÓM]r½:VŠÕåz5bYØÙ 5—Ùöfl•*UÕ¼î©[!Óu{beÖ w¿´X±ÿ­¤_‘Ø^na6|ÆŒ)P“ÚZ÷ÍfdE{¦ùê53Ñ›Ë4ôÑðálläȉiÜå‹z’¥È¥KWÈØ±3mwôèÏu‡>{ÌeŠ],·bžd)B›—7M·6´Òß~{FŠwúbžd)r`ذ|ÝGûËJ/^¼LFŒ˜â¾˜'Y (,,Ò/Ç¿)Vrüø¯¤¨hy±<€'Y4.Årss ìÕšpfõêUõ¯ÏÂY>]žd%Î:4_µÖ?¦Òå/Y²LrròÝ©?–‚€'Y)àpiÞ¼E2kÖ¼ÈRßÉÂ…F^ó™«ð$[Ed*?¶­*ëÔ©©¿'QSß–¨aGÒË—¯”‰çDÞç3W#P¡_+­nF¼ScÇ~i \¹r•¾Ï?X† ëbçlPEÿG²äWzâÝ«uÖºÊñFyÃÕ²e#{$ãe\w^ÞÏ­,õ{sYYF2Æýð$Kcpx§é%=<ÉÒÀ‹·V­ª°‰Óhi¼Šz’Åk<*ek<ÉÒVo.Ó+TÔ“,FYIo.ËB(úº'Y4.>7ƒx’eL_U4ždѸøÜ "àI–A0}UÑx’Eãâs3ˆ€'Y`ú-Œ4À õ$ QVÒoa”…PôuO²h\|nð$Ë ˜¾ªh<É¢q‰ÌÅ'ãã%=<ÉÒÀËý¶D·ø¢Š€'™§A¹#àI–Ä~ # °BE=ÉB`”•ô[e!}Ý“,Ÿ›A<ÉÒÓ›Ë4À õ$ QVқ˲оîI‹ÏÍ ±ù‰u~CŸhpqÌe­ZM²bC–8RQA/*ߨŒB3ýùçŸ+‡JõLÂƉdÞ\V*zų3ždñ—JÕ*O²J5œñìLl|²Tà!È–‹Iy_nñ$S¹7\†ø•………¢ñÄÃÙk•&ýÔ©S- QëR­›(½ø£7^«çÇùæ¬Òd"%ªÜĉ…A%˜)ARY™¦#yyy5{J*KÄݶmÛÊå—_.ß~û­L™2ÅÎ àZš²ZãbÊœ9sŒœ¥•ÍúkºÁ Ñή.Km RðD]‰ÝÍ‚”j”Ü K—.†Ò 4òm !­œF× TKºâ .ºè¢€¦ƒ4º®]á…M¨V  dy=U2-78öØc mù‡vXpõÕW[;5H½g}ôÑG h$`+ÃÕ’ö< \zé¥AçΣ(±ÉvëÖÍúAÝ8 p+Ò¿ÿ€ ¨õêÕ úöíky#GŽ .¼ðÂ@£û /2dˆå—öG£Ý·ª´"ëòZQVi27£‰õÝ¡Cý•ÃB¼n‚”jD\™4i’F +gŸ}¶tïÞÝŠ£Q”\ffÑ€áØã˜ß®]»šVëÕ«—h4_™9s¦<ðÀR¿~}Ñè»R·n]yì±Ç¬.%ˆþ@q‘Œ7N”ðúë×ošæjݺu±½3B®šØä=Ø´š·yóæö¬ž={Z¬Íœœ 9­¤¶pÑwÜq‡è>}úÈ=÷ÜcZ£ ˨Q£dàÀrÓM7É}÷Ýç`ÈšcVùdÕãŽ;Îh÷î»ï–O?ýTÞxã Ñ/{ï½·}úõë'¢Ÿ;w®¨ö±[U«ÈK/½dêÉ€,ij$8=BÜLÈpï½÷ÊèÑ£E5‹‘ÈEÕe3–Þyç¥U«V9 ê²eËìþð ë,Ä4GˆI®ÚÉâ’«ÚF]ìg9Áׄ„L„Xæ!"1æ•þÞpà –—M²’dh1'Ÿþ¹Íth5g.ÛŸˆ¾á$¸=¤pI ¡ú4à>ûìc©1É¥cÇŽ6¸®SÃÞ¬Òï5?—+âm.SìÖ:)æI–"ÌyyÓ,¸*Å«UÛPßú˜‘⾘'YŠ6,__½ù'ùâÅËdĈ )Þé‹y’¥ÀÂÂ"™<ù›b%ÇÿJß-[^,ÏŸD#àIK±ÜÜÜák °T¯^Uß÷ú,œåÓ% àIV0áì¡CóUkýc*]þ’%Ë$''ßúc)x’•—æÍ[$³fÍ‹,UPð,\øgä5Ÿ¹O²ÕXD¦òógÛj²NšÂ§vív$½|ùJ}©qNä}>s5±ùZiu“â—;öKkÔÊ•«¤S§Áúºu;'y‹%¿Þ¿žTH‹–÷f+¤ ñhË–¬‘Œ—sÝyü[zsq¨Ô­ð$Kcxy¿é%=<ÉÒÀ‹·ôÅÓ¸ÃO2σrGÀ“, ˆ½¹L¬PQO²e%½¹, ¡èëždѸøÜ "àI–A0}UÑx’Eãâs3ˆ€'YÁôUE#àI‹ÏÍ ždi€é·0Ò+TÔ“,FYI¿…QBÑ×=É¢qñ¹DÀ“,ƒ`úª¢ð$‹Æ%2ŸŒ—ôð$K/|2>^ÒCÀ“,=¼|éÿ€€'Y ù-Œ4À õ$ QVÒoa”…PôuO²h\|nð$KLo.Ó+TÔ“,FYIo.ËB(úº'Y4.>7“èìLˆ†ñcÈJÀ@ÍeP»vSO ø8îc4$EÅþƒ\If±†.¸à‚LòØ×µ!ðøã ö?üðD¯½¹L@áå…€'Yy!ëëM àI–€Â'Ê Ø‘Œ¥Ä÷΄hA‹ ›‰ºR­C^!šðk¯½&D^RXXh±Õ‰ËIxk¢‘¤*S¦LÑŸ‹_Ü5ÕûÒ);’ têÔ©éô¡Ä² ö€J¼žé nçÎmÀ!øý÷ß/C† ÉôcŠÕ7iÒ$ èJÔ_¢ø’K.ïY¬\øäõ×_·ÚäAJ¢—§[]¦ò B/øá‡˜Æ|òÉÖ`b{~òäÉR«V-9묳䯿þ’nݺÉC=$Çî%jåvÝuW!LQm‰~»á† èÄgŸ}&³gÏ6ð®¸â 9ôÐC @¢éê2Ùâ…ß|óÍâ…H½„x&X½K»º8~úé§Ò»wo‹9^¿~}9ðÀí2íE{B VÕǼi"Ú¬NõGîZÈ5×\cÚõá‡;“ˆÁHƒ¨Z™Ë.»Lös–ÕC`{ÂδoßÞ"ø¢Ý¸—@‚¸è·Þz«ó¥—^’—_~Ù"·mÛÖ¢§üî»ï–o¾ùFöß¹å–[L;=øàƒRPP`Ñ„ xOŒNÆ:=''GhX=õÔS¢AetŒÕ‘G)ƒ ²¾i22vôõÞ{ï kq;Á ÷È#fÓ§O·~2;]I[“i´Y!ö7q»7nl¹îºë¤yóæ(Eßzë-k‰_Ö¨¸2™kûÅ_êyúé§¥{÷îrÚi§ø€á„Aÿøãå¶Ûn³™ÊÒtÄaâ3AŒp„ðÊ.žP8mõ È"3{©Ÿ6°Ü¸:ÈÈ‘#­8Ú²Ι€õÀ ûL0z®=öØcB(é»îºË&“bß}÷‚±žqÆ–Ï–¡«ù: ÓùóÏ?Kÿþýmr€Á¢E‹äÉ'Ÿ”;ï¼Sî¸ãú¨­Hi~ !ðÁ÷6l˜MœuÈØ³gOÉÍÍ5<ðV’äƒ5ƒv²ð@³B*úж/Æ£{î¹Ç|H«Dÿœ~úé‰gb~i_”„1ˆº•Wì'ÖÕÆÚ~w ¸8Ù8® ‘˜eh6Å Î/c` N;2tèPó5ð¿(ïHغukÉËË3Ç=ln]}QGˆÅJ–€¤’ ‰J€ÆÇdPJm€3OŸœ¶¢>fü:Èåî…´3ÉÁ…•}q&Ø™J&jØ´S7 4&«Ü° ©¨ŸÊÕ ÉXI²*Å̺±à>|¿¨ÉFýøaa÷"üœ²Ò,ÈðߨAøW2ÿ똊=zØ ,Ü)™š,ÎHÎwçQ׸T F=€x¬,³¥ Ħ\iÂ@0¨ÉÂàEåSípq}¡¾ðà&Œû t”à{…ý¯púžØ\s+ñp9Ò%ÕŸ\.óŒk2f1ÉN:ÂLD[¹Yè¶3’Á@óE/•g±m†B;­k¡ô%L¢òn3YùÊãùëD“1‹Ó%M"™\ÿJ0îÇLU”$÷o]´ƒ [ÏMî[¹¬.“âÏ×sÔNÈXÿf¬뵌·^uº”‰Qò›±Å|²õ|¾ùî—K½¹,`}­!<ÉB`ødù àIV>¸úZCü'ï@f9K*·IEND®B`‚mysql++-3.3.0/doc/html/refman/open.png000644 000765 000024 00000000173 14042362133 020242 0ustar00tangentstaff000000 000000 ‰PNG  IHDR à‘BIDATxíÝÁ €0 Ð׬ՙ\Àº€39—b!©9{|ðI>$#Àß´ý8/¨ÄØzƒ/Ï>2À[ÎgiU,/¬~¼Ï\ Ä9Ù¸IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1UseRemoteConnectionOption.html000644 000765 000024 00000022354 14042362133 027723 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::UseRemoteConnectionOption Class Reference
MySQL++  3.3.0
mysqlpp::UseRemoteConnectionOption Class Reference

Connect to remote server in preference to embedded server. More...

#include <options.h>

Inheritance diagram for mysqlpp::UseRemoteConnectionOption:
Collaboration diagram for mysqlpp::UseRemoteConnectionOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 

Detailed Description

Connect to remote server in preference to embedded server.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1MultiResultsOption-members.html000644 000765 000024 00000015351 14042362133 030076 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::MultiResultsOption Member List

This is the complete list of members for mysqlpp::MultiResultsOption, including all inherited members.

arg_mysqlpp::DataOption< T >protected
ArgType typedefmysqlpp::DataOption< T >
DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
err_api_limit enum valuemysqlpp::Option
err_api_reject enum valuemysqlpp::Option
err_connected enum valuemysqlpp::Option
err_disconnected enum valuemysqlpp::Option
err_NONE enum valuemysqlpp::Option
Error enum namemysqlpp::Option
set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
~Option()mysqlpp::Optioninlinevirtual
mysql++-3.3.0/doc/html/refman/inherit_graph_21.png000644 000765 000024 00000405316 14042362133 022436 0ustar00tangentstaff000000 000000 ‰PNG  IHDR¡iq«IêbKGDÿÿÿ ½§“ IDATxœìÝy\Gûð HD áF¡`µxEEQ´R.êõZ­Z<Ïj‹U«‚ÞÖ»ŠœŠ\UÔªUZAA¬Š ‚ §ÜG!çüþØ÷—òB0ø|ÿZ&»3Ï |x2»³»$Œ1@Ÿ£ÐÛ@& Ç}äx o‚ôMJ½Ƚƒ>~ü¸·£Ÿ´¨¨¨¶…0€îzüøqJJJoG>QÅÅÅÑÑÑ"?‚y<Hȉ²éíí-ò#˜Ç}äx o‚ôM〾 ÖÜ@_P__ÿã?þòË/T*U*VWW:t(==½©©ièС7n8p Tjî‚C‡½ÿ¾U¡’’ÒæÍ›wíÚµoß>•©ººúÔ©SOŸ>­««³±±™5kÖäÉ“%9°ªªªÇb†y<ôL&3$$„ÍfK¥¶ÌÌÌ#F<|øpÖ¬Yîîî¯_¿2dÈ‹/¤R¹ä† rÿþ}„@ àóù|>ÿÁƒQQQüÿÇf³ÓÓÓAOƒÊÍ͵³³‹ˆˆpppðõõmllœ6mZ`` $‡÷dÌè wær¹MMMÄvss3“Éìð>Ÿ_VVÖªP ÔÕÕ ,..FÕÖÖ KØlv}}}«£D¶5~üøY³fñùü–%ÎÎÎ-[/((vDˆÇ㵌ALammmËú1Æ|>¿¨¨¨e‰¾¾þ­[·Z–¬]»v„ b"ïpxÛ¶Û^_ZiŒ³³sss³ðÓˆˆ„УG„%­†ºm_Ä·.rÐD"šùäxè.Ir|nn®ŠŠÊþýûutt¨Tê¦M›¶nÝJ¥RW¯^MTòŸÿü‡Ø™ËåêëëGGGcŒ  ®®nhh(L!±±±ÚÚÚ eìØ±ÞÞÞ›7oæø”” :®¨¨èííÝÔÔ$²c¼ÿþI“&u ·_½z…zöìYËø ÿýwb;!!N§ëéé)++ûùùñx¼ÜÜ\55µ£Gjjj*((8::Ö×׋,ħ§§2„J¥Òh´~øA `Œcbb´´´ú÷ïollŒ16l‰DRQQ¹pá‚0ŒV9þÝ»w £Ãám¯Ý¶}yýúµŠŠŠ0Ϙ1#$$¤e0OŸ>Eedd´úÛÛÛ/\¸PäP·<\³ä#)þO r<È„9!äëë[YYyéÒ%„››[yyùíÛ·B•••‘‘‘ZZZcœ””¤®®Îb±rss555ëêê8ÎÞ½{0Æ¥¥¥ %$$„Ãá$$$())s|rr2BhÕªUl6»¤¤ÄÌÌlçÎ" 1Æ·nÝ"jËíèèh"’¶Š‹‹©Tj||<Ƙ¨*$$„è——“É|úô©žžÞåË—E2 ƒ;v466¾ÿÞÌÌìôéÓ………T*5,,ŒƒD"åååa æñDDŽ?¼"ÛÙ—ÌÌL„0ÇO™2åàÁƒ-ƒ¹pá‚ŠŠ ñ¡%???‡ö†Zx¸0fÉGRüŸ–˜×ã çêè踹¹!„V®\©««;eÊ2™œ““ãææÆãñîÝ»‡ŠŽŽþúë¯) Ƹ±±ñÌ™3UUU7n$> §Ñh~~~d2yÆŒööömúé§Ÿ”•• W®\™Ð^¡‹‹‹¿¿?ñ©p›ÍfS(‰$² ááázzz3gÎDÎ;7&&†øhÿþýªªª¶¶¶ÙÙÙ" ccc9κuë0ÆÚÚÚsçν~ýzdd¤‰‰‰Ftt4™L–îðŠlWL_Ĩ¯¯×ÒÒj;>,Kx•]äøws$»r<ô}}}„’’BÈÒÒ’($‘H|>ŸB¡xxxDGGóx¼˜˜˜  „,,,.]ºidddccóûï¿#„ „uš››·jECCCGG‡Ø666®ªªj¯P$++«¦¦¦VoÙÉÉÉÙµkƸ  `̘1ÂrSSÓ²²2b[WW—Ø R©Gdá»wï˜Læ_|ammmmmýÛo¿‘H¤‚‚‚Áƒ ëtww711é`(E3¼íµÛ^_„¸\n«ssóòòòæææVåwîÜ4h’x¨;;’]9zŽ‚‚ˆÿºcbcÁ‚7nܸ{÷.•JurrB•••9::>yò¤¼¼ÜÛÛ{ÅŠ,K[[»¢¢BxxÛ›Ê ‹Å"¶SRRˆ/" E²¶¶VSS#¾O>|øÝ»w$IGG§åÌòùóç hÕ;aÚêêêjii¥§§Ÿ8qBGG‡8GM8~ü8qé¡³Ä o{í¶í 1AçóùDa^^^« íìì( qE@èíÛ·îîîHâ¡îìHväxøXL˜0B¡øûûÏŸ?Ÿø/Ÿžž>kÖ¬šš:îêêJœ žÊÉɉ‹‹sqqi¯0%%%,,Œ8J¸­ªªºÿþ'N\¿~Ëår8œ .œ;wníÚµ¡3f¼|ù2>>!TSS“˜˜Hœc—ÐÔ©SkkkCCC1Æ………®®®ááá³gÏÎÊÊŠEÅÄÄ8p€˜‘“É䆆†n©ØvEöÅÌÌLII)22!UTTDÔ †N§ûûû„‡‡7+fgg{zzŽ?~Μ9í uÛ¾ts$%"þJ>€I¾æŽXÉEü¯ÏÍÍ%>"“É>$¶7n܈zóæ ñ#Ç;v¬²²²­­í Aƒ~ýõW¢|÷îÝÊÊÊfffcÇŽmµæNUUuúôé  R©óæÍãñx" 1Æ[·nUPPQSsTV6¨¬¼Š 'Ÿ2¸wdëÎÌÍ›£y<þ?¸yz~,wNƒOÌã@Vª«™‘II¯¼¼Fýøãl­_oG>-ã@&RSß}÷ÝoJJ +?ëípÀ§ÖÕ€”aŒÏž}èåuâ‹/ŒoßÞ ô˜Ç€454°V®¼üèQζmnË–oõº6zäxšÒÒº ~­«kºqÃoĈ½øÔAŽéÈÎ.[°àW55J|ü##‰^ЀLÁõx‚‡ßÌž}ÄÜ\76<øX@Ž€îzøðÍ7ßœ:uhhè·êê”Þ€ÿ‚gà@·¤¥åÏ{zÚ´/BBæ)(À ;ð]÷êU‰‡Çñ±c-NŸ^¤¤gFÁÇr<tQvv™»û±/¿xþüR2^6>:ã +ªª˜3f24¤……­ PȽ"À™%è46›·dÉy‰töìbHðà£÷Ç@ç`Œ7lˆxó¦,6ÖO[»o‡@» Ç@ç:tûÆg.,µ¶6èíXr<tBbâ?$íÞýõäÉŸ÷v,t®Ç€¤^¼(òó»ºté¸E‹Æöv,t ÖÕ€DÊËë§O?dmmðÛoËàVx  Ç@ÇØlÞìÙG8^l¬Ÿš<­È¸Û¶íÚ»w7o®‡ääxèÀõëéaa©gÎ,4H··c à’ˆ“•U¹rå$WW›ÞŽ€ÎëñÐ.&“íêzNW‹ˆX ëì€Üsõ Æxݺ°úzVT”t|dd¤··w÷럨¨¨.9D;uêARÒËÈÈ•zzR¬6""Bе>ìСCݬr<ˆðäÉ»_~Iزe¦Ý éÖìåå%Ý A_Õ<./@k ¬Õ«¯8;¾b…SoÇ@×AŽ€Ö¶n½ÖÜÌݿߋD"õv,tœ«€ÿ‘˜øOL̳K—þC§«õv,t Ìãà_>ÔD.^쯕}Ìãà¿ìçJ§«ýðƒ[oÇ"+õõõ?þøã/¿üB¥R»_Û®]»ªªªZ–˜™™­Y³¦û5 ………©¨¨¸»»ïÛ·¯¬¬Œ(TRR²´´œ4i’¥¥¥Û"TWWŸ:uêéÓ§uuu666³fÍš|øÃ‡¥Û\nn®]DD„ƒƒƒ¯¯occã´iÓÅ2dÈû÷ï#„Ølvzzº@ nHÝóx@¡ìì²  ›7N>|@oÇ‚B<Ëå³m6›ÍãñTUUÅ"***ôõõ[bŒ44ڽşÃá477«««wX(’ȉ;Ƹ°°PWWW’|>ŸÁ`Ðh´–…MMMýúõkY2cÆŒM›6Ûl6ÛÊÊêÂ… ãÇïB‹„¶#æëë;pàÀÄÄDb.¾téRooogggGGGbŸVƒSSSÃápBFFF=êpDvVF`ˆËå¯ZuyĈß}7©w#ÉËË£P(AAAÚÚÚ›7oÞ¶m›¦¦¦††Æ÷ßòôô\¶l±3Ç300¸víBhçÎfffVVVFFFÉÉÉÄqqqt:]__ßÑÑÑÇÇgË–-†RSS---7lØ`ll¬¥¥åããÃb±D"„‚‚‚œ‰[n·'11QOOo̘14mÍš5|>?++‹B¡ÏÌœ9óÈ‘#yyyêêêÇŽ£ÓéÚÚÚãÆkhh@ÅÆÆÐh4{{û¢¢"‘M¨¨¨X[[ ÇÞ¶ÅiÓ¦ýøã¡¦¦&55µ­[·{š˜˜üõ×_"G,---%%%88¸åÉv///{{û³gÏŠœáÇ———Ïž=ûâÅ‹ùùù4ÉdŠŒ§½ÎÊäx@Çÿ‘Ÿ_uð ‚Bïß,Çf³_¾|™••uêÔ©}ûö½|ù²  àæÍ›ÇŽ«ªªòòòº~ý:—ËEÝ»w¯©©iÆŒyyy‡~ñâEUU•ŸŸ1Ù-++óööÞ±cGCCÖ-[®]»Æçó…­ðx¼ÜÜÜæææâââÂÂÂ'Ož‹,DÙØØ¸ºº¶ÜFݾ}{W uuu%%%žžžçÏŸÿðáC~~~||üñãÇ1Æ-/p8"ƒñèÑ£¢¢¢ÔÔÔ·o߯ÅűX¬¹sç®Y³¦²²ò»ï¾‹UVVöâÅ‹/^¤¦¦?zôháÂ…!‘-:;;§Ð?~,îÝ»‡zõê“É3fŒÈ{õꕊŠÊ°aÃZýFFõöí[‘ƒóüùs==½ØØØE‹ ‚úúúöâÙY)þÙˆ†àÓ–—Wajºáøñ?dÝñ[ñûäææ"„Þ½{‡1®©©Aݼy“øˆL&ÿõ×_,K]]ýÖ­[ãeË–-^¼cüöí[eeå   ÒÒR@ÐÜÜŒ1>xð ¾¾¾°æqãÆ#„jkk‰™kee%ñiPPÐèÑ£EЉvРA#GŽœÛBEEEpp°©©©pŸ­[·:99eff"„ˆÀ0ÆS¦L9xð ÑÙ‚‚¢pΜ9Û¶mKHH000ncc€1:t¨ššš¡¡¡¡¡¡¶¶6Bhâĉ c,²E"a³X¬íÛ·ûûû«¨¨444>|ØËË«½;|øp˦…–-[fgg×Þàèëë¿¢; Cd<";+fl1Æâ÷æñ€OÆxóæ(ssÝeË&ôv,ÿ"®+))!„„KÇI$ŸÏ§P(ÑÑÑ</&&fÁ‚! ‹K—.EFFÙØØüþûï¡‚‚aæææ­ZÑÐÐÐÑÑ!¶‰ò" Åøæ›o®¶@§Ó ÆŒ#ÜÁÔÔT¸^ˆ8AÐÕÕ%6¨T*‡Ã¹sçÎØ±c…Ÿ¶¬jÛ¶m%%%%%%UUUOŸ>ýóÏ?CCC‰ž¶mqÈ!zzz©©©<øê«¯†žœœüÇ'!DŽ˜¹¹yyyysss«hïܹ3hÐ ÉGÌ´êl;ƒ*5㟴°°ÔÇóò!“{;–)(ˆøçŒÿÿÚó‚ nܸq÷î]*•êää„*++stt|òäIyy¹··÷Š+X,–¶¶vEE…ðð÷ïß·ªÁ`—Á§¤¤_DvŠŽŽNvv¶ðÇçÏŸ0€xb ðbA^^^ÛÎTSSËÊÊ~š‘‘!²[[[áé‘-"„\]]“’’^½z5zôèÉ“'ÿñÇ=š>}:jgÄììì(Ê¥K—Z6ôöíÛ‚‚wwwɧ½xÚvVÖ Ç>]ŒŸŽ_¶l¼IoÇÒ &L P(þþþóçÏ'rFzzú¬Y³jjjètº««+qûÖäÉ“ÓÒÒž={†JKK{üøq«zÁéÓ§B999qqq...í¦¤¤„……GµÜiÆŒ/_¾$®£×ÔÔ$&&úøø˜™™)))EFF"„¢¢¢Ú[I‡rss{ýúutt4ÆøÁƒDü"éèè0ŒöZD¹ººž:uÊÖÖVYYÙÙÙùìÙ³–––ÄLZäˆÑétÿ€€€ððpbõ@vv¶§§çøñãçÌ™ÓÞàÉäV«çÚ‹§çAŽ|º¶o¿®¦¦âï?­·é…yóæ½~ýzñâÅDÉôéÓûõëg``0jÔ(//¯={öP©T‡íÛ·ÛÛÛ[ZZzyyÙÚÚ¶ªGUUõöíÛ>|¸½½ýºuëÚ+Œÿù矉£Zn‹dkk»oß>www 33³iÓ¦}óÍ7Ä—’%K–ÐéôóçÏÙQ¤Ñ£GïÙ³ÇÛÛÛÈÈhéÒ¥sçÎmoO:þàÁƒææf‘-"„&MšÔÔÔ4qâD„ƒƒ‡Ã®9b¡ÀÀÀÀÀÀ¥K—ªªªÒh4›/¿ü2))‰8!rp<<<.\H\53bFL†ºs1ä×íÛ¯ ÖÞ¿ŸÕc-J²æNBG8qbË@•••‘‘!Z–×ÔÔdggóù|___bñ!99YCCc\XXXSS#¦°kjkkŸ•• GÇ=+VL\·njO¶éíí ÿu„<==BQQQ]®ÖÜ>9{ö$ôïOY±Â©·@¶à\=àÓòêUITÔÓ'|©TåÞŽÙ‚y<àÓ²cG̈Ý܆÷v ÈÌ㟸¸Œ'OÞ%$¬%nw oƒøTp¹üÝ»<=GõÊây¡¡) 7Nïù¦32 "Š‹«ÝÝ=‚uõ@"vvvöööÝ©r<à“Àfó޽ëëë`` âq%²Ãbq¼}êÔýQ£ÌÖ[Xèödëà9ðIøí·¿jj˜+WNêÉFŸžž¶°ô0Èñ€¾¯¹™{âÄý%KÆéëKú,Õnð±cßtvþ<8Ø[[»Ï´ @Kã}ßùó ÖwßõÐ$¾ºš¹fÍÕ‡ßlÚäºrå$˜¾ƒÞ9ÐÇ56²Oº¿téxž˜LÿóOÑ¢Eg)r|üÚaÃäéµô ïgàú¸³g²XÜo¿Ðmݹ“ùõ×Ç>ÿÜ0)i$xÐë Çú2‹sæÌŸË–Mè+â¡¡—.=?kÖˆ‹ÿ£®N‘ustÎÕú²ˆˆ§L&{Ñ"GY7´kWüÉ“÷7ovýþûɲn AŽôY>sæOoïѺºj2mh÷î„_}pôè|w÷/eÚçê}VRÒ«‚‚ªÿüg¼L[9pàÖÉ“÷š |l`è³Nº?eÊKK=Ù5ñë¯wn‰²2,[5øô5÷î½./oðö-õš1Æþþá99ââÖôÌÓïèÈñ€¾&44ÅÑÑÒÔTGê5ÝŠú­••¾Ô+@êà\= Oùð¡þÞ½¬ùóí¥^s|üó;ûöy::~&õÊÈñ€>%,,U]:mÚPéV›—W±aCÄâÅŽ>>c¤[3²9Ðw`Œ£¢žz{’îj¸ÆFöÒ¥>ûLïÇgK±Zd ®ÇúŽ¿ÿÎ+(¨š;×NŠubŒ×¯¯­m _A&+J±fd r< ïˆ‹Ë2ÄHº¨?yòþÍ›/""VêëkH±Zzäx@Áã nÞ|ñí·NR¬ó¯¿r÷îMܺÕÍÞ¾[ÏÄ-..þûï¿¥øÔ˜˜˜ØÛwe)äx@‘œœSUÅœ9Sj϶ûð¡þ»ï.M›öÅòåºYÕßÿííí-•¨À'ÈÃÃ#**ª BŽô±±#F Ömñöó ÕÐèwðà\i=°c,•zÀ'ÅÓÓ³ËǺz@_Àåò“’^Íš5BZžŸ_ZZJ¡P.\¸`ddôàÁƒgÏž :ÔÐÐP[[{ûöícŒqssóÛ·o…Íùùù;w®½Ž „’’’¬­­­¬¬ôôôÖ¯_OuãÆ :>xð`“…m›KKKKII &<ÁËËËÞÞþìÙ³"[>|xyyùìÙ³/^¼˜ŸŸO£Ñ˜L¦Èζ7,2„@žED<8p“ÙÜJêëY#Fü¸víUiEÕJDDD‡ÿosssB¾¾¾•••—.]B¹¹¹•——ß¾}!TYY©¥¥Åáp0ÆIIIêêê,+77WSS³®®ŽÃáìÝ»×ÁÁcL$·“ ¤¤P\\Œª­­%¾¬ZµŠÍf—””˜™™íܹSd!ÆøÖ­[ÁÁÁD„-·gÏž½dÉŒqaa!•J½råJccãéÓ§BÛ·o'úâååÅd2Ÿ>}ª§§wùòåââb*•1&š !¢;vì­[·*++ vìØÑØØøþý{33³Ó§OcŒüñG„Ј#bcc›ššˆÚ‹yäÈ‘ááá ¤¤DMM-==2,,Œè‰DÊËËc0m›»pá‚ŠŠŠ@ hõÛñóóspph¯E}}ý[·n ‰ CdgEK‡<ü•‰9 ß–/¿äí}²›•¬_>lØöÚÚF©„Ô–ä9þÝ»wãšš„ÐÍ›7‰Èdò_ýÅb±ÔÕÕ‰\²lٲŋcŒß¾}«¬¬TZZ*š››1ÆÔ××ÖŸB¡xxxDGGóx¼˜˜˜  „,,,.]ºidddccóûï¿#„ „uš››·jECCCGç¿ý566®ªªj¯°Cïß¿4èßöØÙýûb_]]]bƒJ¥r8œ‚‚‚1cÆ?555-++#¶¿øâ „лwï˜Læ_|ammmmmýÛo¿‘H$6›]]]ýÙgŸíرãþýûeeeóçÏ_µjqlÛ˜bccMMMÇŒsøðaEEEb@þ÷jŽ»»»‰‰‰ÈæÌÍÍËËˉÅ-ݹs‡è¦„£$¦³­†E‚1î:Èñ9öömyMMcw^ ×ÜÌݰ!bòäÏ¥õŒ¼n®üj ÿÿƒî,XpãÆ»wïR©T'''„PYY™££ã“'OÊË˽½½W¬XÁb±´µµ+**„‡¿ÿ¾U… Cx]JJ ñ%@da‡ètzVV–ðǼ¼¼¶}!â×ÑÑÉÎÎ~úüùóþç1‚ºººZZZ………EEEEEEééé'Nœøûï¿  ±––Ö?ü ˆmc~öìÙöíÛãããóóóoܸA,WÔÑÑ!æÐ„ãÇ‹lÎÎÎŽB¡×J„Þ¾}[PPàîî.ù(‰él«a‘)Èñ9–šúNUUåóϺ\áC·kj÷ïïúk?zÒ„ (Š¿¿ÿüùó‰T‘žž>kÖ¬šš:îêêJܵ5yòä´´´gÏž!„ÒÒÒ?~ܪ@@\;ÏÉɉ‹‹sqqi¯0%%Ex|Ëm¡©S§¾xñ"!!c|ýúu1¯Ð1cÆË—/ãããB555‰‰‰>>>­ªª­­ źºº†‡‡ÛÚÚêèèlÚ´‰Ëå"„ø|þñãÇÕÔÔ†*2æ÷ïßkjjZYY!„bbbˆk³gÏÎÊÊŠ% 8 ¯¯/²9:îïïNÜg˜íéé9~üø9sæ´7Jd2¹Õê¹;ÛCºvŠ>«W_éÎÅøüüÊ7œ?ÿPŠ!‰$ùõxâ‚:‘0rss‰Èd2qÅc¼qãF„Л7oˆy<ÞØ±c•••mmm ô믿å»wïVVV¶°°033;vl«ëñªªªÓ§O0`•J7oÇYˆ1ÞºuëàÁƒ‰:[n ¯ÇcŒ;F£Ñ444&L˜0mÚ´Ý»w·ì Æxîܹã   %%¥Aƒ©««/_¾œËå £"ö UUU511!“É‹-b³ÙãÇ[[[«¨¨XZZjjjN˜0áÑ£Gc‘1s¹Ü &ÐétSSÓ¹sç~ûí·ÅÅÅGŽ!“ÉzzzÖÖÖ7nÜÓœ@ 8xð`¿~ý544Èdò’%KX,V{-bŒ×­[G,<^ÙÙö†EŸïëëÛ2—$''khh`Œ kjjÄJ‚Á` " N™2E˜AEª­­}òäIUUU{;kÎ‹ŠŠZòx¼œœœ¿ÿþ[¸¨^|ÌùùùÂï %%%ÄÈ455åççKÒÑbfffZZš0%‹o±¶¶–Ëåv¶³’èNއgàäUYY]qqíèÑ]6nëáÃ7wîd†…­ “¥˜ŒÔÕÕeee9rDx{7D"Y[‹Xu¨©©©©)&&&ŠÑØØhccsîÜ9GGǨ¨¨ŒŒŒ–kÍÚ¢Ñh£F³ƒªªª­­m«BEEEKKKá"Äc655nT*µe¹˜æˆ?ÿüóö‚lÛ¢ÈÚtØYYƒëñy•’òŽLV9²+¯årùÛ¶]Ÿ9sØ„ VRLF ýüüV¯^íææÖ©-,,Z®nSSSk›xDJBOOïÌ™3¿þúëÈ‘#ÃÂÂZ=nOvº³µØM$,ûu} [·F¿|Y¿¶ Çž_ýaÈ®Ü5wèP’ª*eåÊIR € äx€\ÊÍ­`±8C‡v:Ç׆†¦øû»P©½óîz äx€\ÊÌ,!“»ðÎøàà›FFšžžò´r €®K¯_—~ö™~go{{÷®òúõô€€éòr¿Ý÷ÇäÒ«W%]8Q¿wo¢……ÞìÙ#d’xŠŠýÕÔÆ0™Oz¾i ï<<<ºv äx€\zýºÄÙypÇûµ•Uúûï/Î[¢ @’QT" ¸¤„:`ÀòþýÉk×úõïOîÉÖAÐÙ AŽÈŸÊJFUsð`ÃNµgO°a&S§‘QT"½~]ºqcäË—Å+VL\·n*… ôÈñù“Ÿ_‰²°Ð•üÌÌ’{÷²¯\ù–Dê¡I<ÆøÜ¹G?ÿ7lØ€¤$kkƒži!Èñù“Ÿ_E¥*ëé©K~Èñã÷¬­ œœzèɵÕÕÌ5k®>z”³i“ëŠ{øêÈñùóî]¥©©Žä3òÂÂê„„ç!!ó{fŸœüöûï¯(++]¿þý—_våI|HÜ;?UæætÉ÷?}úO]]õ™3‡É.$¡ÐÐÇóæ9ràíÛþàAï‚?Ä<^Âkk#"R¿ûn¢¬ï‰Ç8pkãÆ¨5k¦œ;·DC£ŸL› Cp® Þ¿¯27—4ÇŸ?ÿHYYÉÇGÜKÍ»¯©‰³jÕåû÷³ïîþ¥LÛ@Bãr¦¼¼Éd›šJt®¾¹™{áBòâÅŽªª*² ‰Áhž7ïT~~UTÔÊQ£Ìd×9 gJJjB¾6>þyCë›od“Éž?ÿ×â⺸¸5Z%€¬AŽÈ™ŠŠ‰D§«I²óå˧O·ÑÓÓQ0,gÑ¢³•ÑÑ« Áƒ ¬¹È™òò­ŸŠJÇS”¬¬²´´|__{EÂbq¾ùæLN·èèU]x²óx€œ©¨hðé7W®ümjªãà`)‹0¼jÕ•×¯Ë ÁƒÌãræÃ‡]ÝŽs<‹Å¹v-Ý××AFϘ Œ½?ëâÅ¥ƒÃCjÁG æñ9SQQ¯¯ßqމyÆbq¼¼FÉ"†Ë—ÿ>{öáÑ£óa=ø˜Á< gÊË%šÇ‡…¥Ìœ9L[»¿Ô¸{÷õÖ­×¶n÷Áƒäx€œ©ªbêèt°¨¾  êÙ³BéOâ_¾,^±â’—×èU«œ¥^9Ò9 gêëYTñûÄÄ<ÓÒR7î3é6]\\ëëûë˜1æûöyJ·fdr<@žðx‹£®ÞAŽ‹Ë˜5k„’’4ÿÅ57s—,9§­­vúô"éÖ €ŒÀŸ)@ž0,„šEÌ>™™%oÞ|˜3g„t›Þ²%º¨¨öܹÅýûËð±¸H¬«È“††f„ºº¸óÌØXóË/M¥ØîÙ³£¢žþöÛ2Éßw@¯ƒy<@ž0ÍHì<cÿÜÝýKIj·Å§¥åÿüsÜæÍ3&M,­:èãò¤¡8WßîõøçÏ‹ŠŠjfÏ–Ú‰úòò†eË.Nš4xÕªIÒª€ž9 O:œÇß¹“id¤9x°¡TšãpxK—žWW§=º@Š'èp= O𛹠$1/¤¹s'sêÔ¡ÒjnÏž„œœ7o®ïò:»Çežž]yìÌãò„Ëå+)µ›ãïÞÍ?ÞJ’WË‹'àÕ«¯ôë§äÝͪèEãò„Ëå·÷Œ¹æfnrò[©œ¨?yòÞãǹǎ-ÿ°>rãòD̹ú´´‚æf®““u7›xþ¼pÿþ››7Ï9r`7« wAŽÈ1çê?Î55Õ14¤u§~‡·n]˜Ý å˺SÈñy‚1no]ýãÇyvvƒºYÿÁƒIEE5û÷{)(ô»áëëë×®]Ëb±¤RÛ¹sçÂÂÂÚû´ªªjíÚµl6»íGÕÕÕ?üðÃôéÓ'L˜°jÕª÷ïßK%© »~ý:±]]]½{÷úÊÉÉÉÏÏïîÝ»V"fzäx€ÜÖÖtáB‡nØ-<ËåR©T„›Íæñxªªªâúúú- 1Æ íÅápš››ÕÕÕ;,”ŸÏg04 !dddôèÑ#¢¼¦¦†ÃáÛ+W®1bDLLŒ‚‚BhÍš5&LX¿~½ðëƸ°°PWW—è¾P‡cÒáÕÕÕZZZ­SØ2f¡¦¦¦~ýú ôõõ8p`bb¢ŠŠ BhéÒ¥...ÞÞÞÎÎÎŽŽŽ"MØå–ã ¦w"Ã"˜Ç䉢¢'bn”’’;`€¶±±f—k ¹›[qà€OÏ?³6//B¡hkkoÞ¼yÛ¶mšššßÿ=BÈÓÓsÙ²eÄÎ<ÏÀÀàÚµk¡;wš™™YYY%'';ÄÅÅÑét}}}GGGŸ-[¶JMMµ´´Ü°aƒ±±±–––‹ÅYˆ rvv&l¹Ý2luuõcÇŽÑétmmíqãÆ544äççÓh4&“9|øðòòòÙ³g_¼x133óáÇ?ýô‘à W®\ñ÷÷'¶õôôÆŒC£ÑÖ¬YÃçó;“w@%%%Y[[[YYéééOˆ3B(66ÖÀÀ€F£ÙÛÛ!„ÒÒÒRRR‚ƒƒ‰Oðòò²··?{ö¬ÈAkÙeá8´×;‘aHùñÛoYYmi[îéy|íÚ«]®öõëÒüOŸ~ÐÐD‹ˆˆèð?mnn.BÈ××·²²òÒ¥K!77·òòòÛ·o#„*++###µ´´8Æ8))I]]ÅbåææjjjÖÕÕq8œ½{÷:88`ŒKKK)JHH‡ÃIHHPRR (..FÕÖÖßV­ZÅf³KJJÌÌÌvîÜ)²c|ëÖ­àà`"–۳gÏ^²d‰0l///&“ùôéS==½Ë—/… c¬¯¯ëÖ-Œqtt´‚‚[ÅÅÅT*5>>cLÒá˜t¸ÆxäÈ‘ááá ¤¤DMM-==]dÌMMMT*õ—_~©««#ª ¸pá‚ŠŠŠ@ h­ŸŸŸƒƒC{ƒ&ì²pÄô®UâÿH<<<<<<ÄïÓÌãò„LVl{=cüâEQ—ouÃoÝ=t¨Ñþ3¾Ûv]`` ŽŽŽ››BhåÊ•ºººS¦L!“É999nnn<ïÞ½{¡èè诿þšB¡`ŒÏœ9SUUµqãFâÓððpæççG&“g̘aooß¶¡Ÿ~úIYYÙÐÐpåÊ• íº¸¸çÙ-·[Ù¿¿ªªª­­­ƒƒCvv¶È}Øl6…BiïIxx¸žžÞÌ™3B†††sçΉ‰épL:ÜA \½zÕËË«²²2''GEEE^«˜ïÝ»G£Ñ6oÞ¬¡¡ñÍ7ßØØØ „êëëÛžáG±X,áUv‘#)yï$ºn‚'ŠŠ m¯ÇççW544ÛØ˜t­Îë×ÓŸ>Íÿùg÷Þ]KO\SWRRBYZZ…$‰ÏçS(èèh³`Á„……Å¥K—"##ŒŒlll~ÿýw„PAAƒÃ¿ë ÌÍÍ[µ¢¡¡¡££ClWUUµW(!]Ýÿ>ÌŸJ¥ ¯¾·beeÕÔÔÔêqë999»víÂŒ3FXnjjZVVÖá˜t¸ƒ‚‚Bll¬©©é˜1c>¬¨øï-—­b¾sçÎØ±c…ŸÁ˜››———777·êË;w „$41½“dèº r<@žÉŠm¯Ç¿xQD&+Z[t¡B&“½kW¼yv½þÄ›–ת…0ÆÄÆ‚ nܸq÷î]*•êää„*++stt|òäIyy¹··÷Š+X,–¶¶vEE…ðð¶÷§1 áMt)))Ä—‘… [j[ÖÖÖjjjÄ·¡Ã‡¿{÷ŽD"éèè´œÅ>þ|À€­*o©eCbvxöìÙöíÛãããóóóoܸÑr!^«˜ÕÔÔ²²²„Ÿfdd „ììì( qê^èíÛ·îîîHâA“¤wb†®› Çä …Bæó\îÿLå_¼(²²ÒïÚcê¸Åfs7ož!¥ee„  ÅßßþüùDnHOOŸ5kVMM Nwuu%N Ož<9--íÙ³g¡´´´¶o*§OŸFåääÄÅŹ¸¸´W˜’’"¼¾å¶äÈd2±”LUUuÿþý'Nœ¸~ý:—Ëåp8.\8wîÜÚµkB3fÌxùòe||ß××7 @Xžœœ¬¡¡1.,,¬©©S(-µµµ\.Wø#‹ÅúçŸòòòÚ®W¯­­}òäIUU–ªüüüÚÚZb»¤¤¤m»B/^¼àñx­Êy<^fffZZZss³°PÌ µê²°°›½ëÚºzx@ž/‚klü÷‘mEE5 ¬¡C:[ÕýûÙÉÉoccý>þÇÖÖÕÕeee9räÀ-ËI$’µµˆwðhjjjjŠ{T€‰‰ˆÓ" »©ÕÓ]( 1w¹ç¨Q£¤€©©©pÛÐÐPÌžt:N§·-WTTüüóv_fØvÐD>ÐFF½ëäx€<ùÿsõÿæø·oËB––zªcüË/ S§5ÊLºÊBaa¡ŸŸßêÕ«‰›Ä$gaa¡¥¥%üQMM­m¦YÄ“—Aƒ'ýûSB Æ¿×ãóò*uuÕÔÕ©í$ÂYYeG.r|²accóôéÓ.¸cÇŽVõܹs§måm xò2h°æ OúõSVTTh9ÏË«°°èÜ$žËåÝôð°µ²Òïxoääx€õYÚ‚3::jÕÕLb»¡UQÁèTŽ Ke0Ø«WO–Mt|D`Í@Îhk«VU1ˆí„©©Ž„Çr¹üS§îÏ›g§£Ó_Vñ‰ٓ;§¸¸ØØØ¸³GAŽÈµÂÂjb»¤¤!dh(âŽd‘®]K+/oX¾ÜIF±µÇÛÛ[YÙPM;¦&cvÇІ‡‡Gg3ÚÚªÿ}ÕJii––*…B–ä@Ÿ:õàë¯mÅ=Fº¼¼¼¦N¹kW|XXê„ V‡×ÓSï±ÖÁ'r<@Îhk÷^/+«30tŸðOnnù¯¿.”Yh"\»–öÓO±JJ 'OúΚ5¢'›r<@Îhk÷¯©iÄ“H¤²²zÉOÔŸ8qÏÕÕæ³Ïzèžø††æM›"ãâž/Z4vÓ¦êꔞi!Èñ9£§§Áåò««utú—–ÖJ˜³ÓÒò_¼(Ú½ûkY‡Gxþ¼påÊËLfóåËË&MÜ3Ð Ü;3FF4„Pii-B¨¬¬^__C’£.\H2ÄèË/Ê68„0ÆÇÿ1{össú½{› Áƒ^9 g i$©´´!T]ͤÓÕ:<¤ºš™˜øbéÒq²ŽÍæ­^}eÿþ›Û¶¹]¾¼¬‡ïР8W3ÊÊJÚÚª%%µ<ž€ÉdÓhý:<$44…B!Ïž-Û%oµµK—^xõªøüù%ÎÎí¾€9 ŒŒ4KKëêêš0Ææx>_úxÞ¼1Tª²ìBzóæÃÂ…gH‰‰ë:û¢[dÎÕä¡!­¤¤®¾¾ !¤©ÙAŽ¿w/«¤¤ö›oÆÊ.žW¯JæÌ9ª¯¯‘°<øx@ŽÈá<!Ôá<>*ê©Ý ÉŸwÛY¯_—z{Ÿ´¶6¸zu¹––ªŒZ  Çä¡¡fqqMmmÇ9¾¡¡ùîÝ×¶2ŠäõëR/¯VVúW®|Û¯Ÿ ¯ÐãòÇÔT»¼¼¡ªŠA&+Š¿Êû cìê:Ladg—yzžøüs£«W—C‚!Èñùcjªƒ1.-­ëp]ttÚôé¥F] IDAT6²xÆ\YYÝüù¿Z[ëÿöÛ$|`>= r<@þ˜šê((ÊÊêTTÄÝTTT“–V ‹õ F³¯ï55ÊùóK ÁƒÜ;? YOOãÇñ9þÚµ4þãÇ[I·u.—¿lÙÅêêÆøø5ß@oKææ:UU eeqÿÄnÞ|9}úJJÒ|€º:U*mmÙ™Y¿FSGä |!È+--U‹#ò£¿þz;nœt–ÅEE= K=rdþgŸéK¥Bz äx€¼ÒÔTmnæµ-ÿ¾º°°ÚÑѲûMäçWnÛvmùò ..R»´@WÚÚý9>“Ùú’|rr•ª‰¿c@Ÿ¤©Ù!dnNÿçŸ"¢$;»LIIaÐ Ý.ÔV[Û¸gOÂ’%ã†ïâiÙáñx\.—J¥"„Øl6ÇSUíàÉù ¢¢B_ÿž¿‹1nhhÐÐÐhï(‡ÓÜܬ®®Þa¡$ø|>ƒÁ ÑhÄ555Îÿ<{¸®®N]]]Aáf›ÍÍÍ! …‚ª®®ÖÒÒ"‘þ}ƒ°@ (--56þwM¥°Z##£GuU«F}}}˜˜˜¨¢¢‚Zºt©‹‹‹···³³³£££Èh¯EŒqaa¡®®.ñ›jozÌãòŠÈñhýóO'@½ySfn®Ûµ§ßìÜG&+®_?MÊQvC^^…B 200ÐÖÖÞ¼yó¶mÛ455544¾ÿþ{„§§ç²eˈy<žÁµk×B;wî433³²²222JNN&vˆ‹‹£ÓéúúúŽŽŽ>>>[¶l6”ššjii¹aÃccc---‹%²!äììLØr»eØêêêÇŽ£ÓéÚÚÚãÆkhh>|xyyùìÙ³/^¼ˆzöìÙСC µµµ·oߎ1.--¥P(.\022zðàARR’µµµ•••žžÞúõ뉚oܸA§ÓlbbràÀ„PËjóóói4“Éœ:u*1>!>Ÿobb-²Ñ´´´”””àà`"Á¼¼¼ìííÏž=+rD¶ˆJLLÔÓÓ3f F[³f ŸÏ9RüóùÄç Œ×;ö‡ÁÚׯK1Æ‹]¾übªJMÍ34\ÿ\Ú1¶‹xÂø}rssB¾¾¾•••—.]B¹¹¹•——ß¾}!TYY©¥¥Åáp0ÆIIIêêê,+77WSS³®®ŽÃáìÝ»×ÁÁÿ áp8 JJJÅÅÅ¡ÚÚZâ{ÀªU«ØlvII‰™™ÙÎ;EbŒoݺLDØr{öìÙK–,†íååÅd2Ÿ>}ª§§wùòeŒ±¾¾þ­[·0Æ ÃÀÀ`ÇŽïß¿733;}ú4ÌØ±coݺÅb±FŽ.JJJÔÔÔÒÓÓ ©TjXXÑ.‰DÊËËkY-Ñ.ƒÁ8w¾>ŸÏÇß½{—F£±X,‘^¸pAEEE ´y???‡öF m‹ÅÅÅT*5>>cLìÒÞ8ˆçááááá!Ñß`W $uuj¿~Êýú)?þ!ôæÍ‡.¼ŽÇlÝzm«™3‡É Ìî ÔÑÑqssC­\¹RWWwÊ”)d29''ÇÍÍÇãÝ»w!ýõ×_S(Œqccã™3gªªª6nÜH|N£ÑüüüÈdòŒ3ìííÛ6ôÓO?)++®\¹2!!¡½BâÓ–Û­ìß¿_UUÕÖÖÖÁÁ!;;»åG±±±gݺucmmí¹sç^¿~øè—_~qqqQVV¾zõª——WeeeNNŽŠŠJvvvdd¤‰‰‰Ñntt4™LÙ´‡‡G}}=‘¡ÃÃÃ}||(ŠÈFëëë[] °X,áUv‘ÃÒJxx¸žžÞÌ™3B†††sçΉ‰épzäx€£Ñú54°†5ÎÈ(d±8……ÕÖÖ­äÂ…GïÞUþò‹‡,"ì>⚺’’BÈÒò¿/Ó#‘H|>ŸB¡xxxDGGóx¼˜˜˜  „,,,.]ºidddccóûï¿#„ „uš›·¾3PCCCGG‡Ø666®ªªj¯PBººÿ]A¥R[]†÷î“Éüâ‹/¬­­­­­ûí7a–ýâ‹/B ±±±¦¦¦cÆŒ9|ø°¢¢"Ñ…Áƒ +qww71½¸R]]}Μ9ÑÑÑ\.÷úõë‹/n¯Qssóòòrb@KwîÜ4hä#PPP0fÌᦦ¦eeeŽC€cZZýjkGŒ‘Q˜Ÿ_%` ‹Î-¸kh`>|çÛo' (ÃçÒwG«%iŒ1±±`Á‚7nܽ{—J¥:99!„ÊÊþ½ûŽkêj~²HB BHTÀ"CÁQqÖª,[Q[;¬oKUªmõÕ·t½o«¾uÔ¶¾j[ÛÚâëªÖ,QDö BXadÞß×_Œ! * „çûWxrî¹ç\øøxï9÷œÚ´´´úúúèèèåË—wuu±Ù솆«TTTèTØÞÞ®y‰.55ÿO€Þàã6[ÓT +++ ‘HTYYYYY™™™ùÝwßiÈÊÊÚ°aCrrrYYÙñãÇñ †–––øÓoÜÎ;ñÇûz-^¼øèÑ£gΜáñxãÆëí¤ãǧÑhø8ˆFQQQyyùüùóû,--µïѳ³³íììy†äxÀ0feŬ«k;Ö.?¿¶¨¨ž@ UömçˆDŠºdž‹ÐÐPÿꫯâé$33ó¥—^’H$gæÌ™ø3ç©S§fdddee!„222nܸ¡SZ­ÞµkB¨°°ðĉááá½SSS5ïÁk~$ …‚O:›6mZssóþýû1 ‰D3gÎLLLÔ.YQQannîææ†:vìXii)†asçÎÍËËKJJƒ[¶lÁŸphªÕ6uêTµZýá‡.]ºè=)‡Ã‰_³fMbb"þa~~~ddäĉçÍ›×ÛèyÆY³fåää$''#„$IJJ >¦ðÌAŽ c<žY}}«J¥NO/µ´4¡ÓcÚÊJÉÞ½WV¯g2iƒ×ÈAE$_yå•{÷îáO¤B3fÌ066æóùþþþQQQ_~ù%N Ú°aC`` ‹‹KTT”ŸŸŸN= ãìÙ³ööö>>>«V­ê-˜œœüÙgŸáGi~¤ˆˆˆ%K–ìß¿_(îÝ»wùòåöööÎÎÎcÆŒÑÔŸ3gŽ»»»@  …‡zë­·Ö¬YÃáp¶nÝÉãñÖ­[÷Í7ßàãšjµk ‘H‹-*((ˆÅ#½4!!!!!aÙ²e ƒÅbyyyùúúž9s>Ð{zžÑÏÏ﫯¾š?¾³³³P(œ>}úâÅ‹ûyY×@MÞ€¡·uëÙÀÀÏ1 {á…O^ziÛ¬Yß<Öáï¼óK`àçr¹rpZ×—þÌ«ï§;vLš4I;¢V«óòònݺ¥3c\"‘äçç«TªØØØ5kÖhâW¯^533Ã0L$I$’>‚O©¹¹Y¡PàŸñÙæ•••½.++knnÆ?WWWã}éìì,++ë£Ú¾õvR¥R™›››‘‘ÑÝÝ­ öqôž±¹¹9--M,÷§%½Øyõ°`ãñÌêêZBþþÂ7ŠûlnnuRÒ­Ý»—R(¤AkààjiiÉËËÛ¾};þ²¸@pwwïYÞÜÜÜÜܼ õÎbëmjÛÐ^ŸmÞGaÍgkkküN׎÷¬¶o½”D"yzzövTÏ+ ÷Œ,Ëßß¿Ÿ-ð¬0Œq¹ÌînEkkg@€cSS‡­m_ LÇ7ßœ5ÊzÆŒ1ƒ×¼Á&‰âââÞ}÷]üͺþsvvÖL C™ššöLNzƒ#Š\¸ c\®B¨¾¾- ÀQ­Vë›®_AAÝéÓ9{ö¼ÖóÝèaÄËË+==ý ܸq£N=çÎëYyÏàˆbWîãصµB¨¦¦ÅÅ…‹‹¥ýÊÿôÓU33úœ9>CÖB®.ù?^Ù±ã/2™8s¦`÷îâÈÈÈ¡oxž¥¦¦Ž?~ jƒÞììØGŽd¶¶v1™tîÍ›¥QQ½¾ï$—+ÿ=uÉ’*uHÿõÃ0ìÀ´¯¾ú³££{ùòIo¿vçN–D2o(Û†…ñãÇëÝðÉ@Ž oES“´¹¹ƒÁ 8¦¤Üé£ðáÃmmݱ±A}”pMkÖHM-‰ Zµ*ÜÒÒ!xèС¡l`<0¼9:rB55­ 5 À©´´±7èöî½2wîX++Ó¡i†a¿ývcêÔMb±4)éý/¾X€'x†äxÀðfgǦPHuuÍÆÆF~~D"!-­ToÉìlQ^^Í’%ÁCÓ°òrqDÄÎõë,]rúôê±cí}  r<`x£PHvvìÆF©±1ÕÔ”æáÁ¿ySŽOL¼éæÆ{áû!hÕ‘#S¦ljkë>yråúõ³Œ``<ãÞ““US“”Á0BïtãFqÏ2ÝÝŠãÇoEG vc ÕGŠ‹û}Ù² §O¯3Æv°Ï@o dž=gg«¶¶n|ª|p°Ë½{5ø’8ÚNž¼ÝÙ)›?ßwP[RW×:þ·GfîÚµdݺÙ$ü ž%øû {ÎÎV2"‘ˆ v!‘ˆ×®éÞÊ<˜6uê¨AmwãFIxø–¶¶®S§VÏží=x' Ÿ dž=gg+•J-“)B&&T//ÁÕ«…ÚÚoÜ(‰ˆèk·ò§””t+&æûqãSRV9;[ Þ‰è?Èñ€aÏÝÝš@@Riþãĉ®W¯iHI¹M£Q&Oö¤üôÓÕüã×Å‹ƒwíZbbB¤³ð¸ dž=*Fii¹ŸãCB\ËËÅ"Q“¦À©S·§Nõ¤Ñ(ƒqöï¾»ðÏ]·nögŸÍƒìÀsr<À0TMŽ÷ós066ºråþãú¦&éÍ›¥³f ÊùîÝ—¾øâägŸÍ[±bò`ÔÀÓ€0&&´ææûsé)R@€ã•+÷×ÿùg…BŒõ?ÿ|í“O’^~ýõ ^9Or<À°XÆò¶¶ë¯\)T«1„йs¹¡¡nÆÆF{ÆääìþóÈGÍ|ã‰[3r<ÀXX00 »w¯ÿqâD׿æŽ{÷j ÕõëÅ~íZñ{ïí_¼8è½÷¦lÍ ÈñC`jJ32"çæVã?zzZ³Ù&—/¤¦–ttÈÂÂÜð\yy5Ë–ý8cƘÏ?_0€Õ0à` e€!02"›˜ÐrsïßÇ„à`—«W‹šš¤®®<[[ó:‘HÔóƒÝöí¯Â,zðœƒûx€! PHÆÆFšûx„Є .7o–^¸7iÒ€ÝÄ··w/Y²‡ËeîÙó…B¨j$ã†ÀØØÈȈTPP§P¨ðHh¨{W—¼°°~Â×9…Z½ûîoÍÍ?ÿü,t†ÈñC`jJCÉåÊââgváÂc?®ïè­\ùÇ„ ®Ë– îžrÀÀ0 Ãü¯ r<À0T:ÝH,–úú:df–+•ê‚‚ÚQ£lBX˜ûÅ‹ù[áúõGÚÛ»·n}…@€kÁp9` ØlFS“ÔÏÏ¡ªª9-­D&SzzZ#„&Mr¿u«¢¥¥³ÿU>sð`úþaee:hí`ÐAŽKKS±¸ÝÇÇžD"^¼˜O „BK„Ph¨;‘H¸|¹¿oÐ56¶ðÁW^?k–÷`¶€A9` ¸\f]]›‰ ÕÕ•—™YÎç›ÑéF!&“6v¬}ÿß Û¸ñn”ðò`6€¡9` ¬­Íkk[B~~ÅÅŽŽÍW“&¹_¼˜×Ÿ9M.ä%%ÝúòË ƈØu¦µµuåÊ•]]]R[||üÝ»w¤*œvó>ÿüó•Û¶m›X,^¹r¥L&{âŽ455}ñÅ/¿ürXXX\\Üùóçûy æÔ{Æ¡9` ø|³šš„¯¯ƒD"µ·gk¾š<Ù£¡¡ýÞ½š¾kè씯[wdÞ¼^|qÔà¶õ¹!•J·mÛ6P‰jûöí%%%RN»y?ÿüóÍ›7;´tuuÉd²ÌÌLµZýd)..?~ü‚‚‚bcc;::¦OŸžÐÇ!£Fºxñ"BHsê§éà`ƒ÷ãÂÚšUWתVc~~j5F¥R4_mÃå2/^Ì5ʦ¾üòd{{wB¼ÁoìcS*• …‚N§#„d2™R©d0}¢V«x<žvð¶¶633³ÞŽ’ËåÝÝÝL&ó‘ÁþÃ0L$YYYáí×4¯¦¦¦çz/MMMz_gˆ‰‰yÿý÷u‚W®\Ñ{Ò––&“I$>¸•íyAbccíííSRR¨T*BhÙ²eáááÑÑÑS¦L ÁËèô]"‘Èår„ö©õö!¤R©ÚÛÛY¬g³W!ÜÇ ŸÏR(Tb±ÔÎ΂@@ííÝš¯Âĉn}ÉçåÕîÛwmÆ9ør:ω’’¶iÓ&>ŸÏf³?úè£õë×››››™™½÷Þ{¡ÈÈÈ7ß|/¬T*ù|þ‘#GBŸ~ú©P(tss³±±¹zõ*^àĉ‡Çã…„„ÄÄÄ|üñÇšݼyÓÅÅåƒ>°µµµ°°ˆ‰‰éêêÒDmÚ´iÊ”)øÚŸõJIIár¹,ëý÷ßW©T¡ãÇs8@°e˼ä™3gÜÝÝÝÜܸ\îêÕ«ûs}ÊÊÊX,–TúжCYYY£G¶¶¶f³Ù6lÀÇhz^ŒŒŒÔÔÔÍ›7ã ¸gϽ}÷ññ©¯¯Ÿ;wîÏ?ÿ¬}êž},))a2™ß~û-‡Ãa³Ù&LhkkëOØ3}ÝLy¹˜Ï_yëVEmm Ÿ¿2"â[íoϲ³‹omíìíð˜˜ï§MÛ¬R©¿¥ G­S\\ŒŠmllÜ·oBhΜ9õõõgÏžE566½yóf¼…ÚŸÉdòñãǵÛ_UUE§Ó“““1 Ãkضm›H$¢Óéüñ~8@())Á0ì…^HLLT«ÕÕÕÕ¦¦¦™™™šæaæää4sæÌÏ´477ã×§½½]S²½½Ïçoܸ±£££¢¢B(îÚµKïùé§Ÿ¨TªZ­û‹‹ ê­ï<ïôéÓš_ ~êž}Ä¿ŠŠ’J¥ééé\.÷×_}ú¿‡Ç÷ñamÍ"“‰"‘¤¶¶!”›[ƒiM² sÃ0ìÒ¥½ÇþùgÎåË…Ÿ~:ïÉ–µl –––sæÌA­X±ÂÊÊêÅ_¤P(………sæÌQ*•.\@>|xÁ‚4 Ã°ŽŽŽÝ»w‹Åâµk×âß&&&²X¬¸¸8 …2kÖ¬ÀÀÀž'úä“OŒŒŒ¬­­W¬XqòäÉÞ‚áááñññø·ÚŸ{JLLär¹³gÏFY[[/\¸ðرc111øá‡¦P(jµú÷ߊŠjll,,,¤R©ùùº+ÕÕÕÝÓ¢P(zž1))I.—¯Zµ Ã06›½pá£Gê½ ­­­zººº4£ìz/Húˆõõ×_3 ??¿   žÝã‚B!Y[›WTˆëêZ BKKgAAæ[33ã^pøë¯{=T(TŸžüòËc‡°½B&“É!Y^œ6mZssóþýû1 ‰D3gÎLLLÔ{A8N||üš5kñ—îòóó###'Nœ8oÞ¼ÞúN¡PtfÏÍš5«gŸ åƒbÇöàÙÚ¹ó/_ßO6n<6{öÖï¿¿èé¹^g¿¦MjG¶o?çìüaccûжô>Ô¿9wÝÝ݆ᩥ¸¸ÿŠB¡\¾|ÿ¼víZ„PAAþ£R© 622òóósrrúßÿþ‡Ç¿øâ ###ggg¡P¬3çŽÁ`̘1ÃÎÎŽN§¿òÊ+J¥RoðuëÖyxxàujÆG´åççoÚ´‰L&;991™Ì·ß~[¡P`¶}ûv …ÂårÝÝÝñiz …"44”Ãá888,\¸ð­·ÞâóùHkÎÝÖ­[õ^í9w†íß¿ŸÁ` …²téRüUC½D­Vÿ÷¿ÿ566&‘Hfff åõ×_ïêêÂ0¬·¾¯ZµŠN§ÿöÛošScÖ³Ú¿8 Ã.\¸fÍš§ÿ{x\ã†#%å¶Íª÷ÞûmÑ¢]·o‹øü•yy5Ú>üð`xøÍ­­]ë¾þúÔ·ô¾ú7}ÇŽ“&MÒŽ¨Õê¼¼¼[·néÌ—H$ùùù*•*66V;ë\½zÕÌÌ Ã0‘H$‘Hú>æææ´´4±X¬ììì,++Ó)YVV†çi ê««{Nzï'|6{ee¥&ÒÛÁ0L©TæææfddhR2Ögß›››ñÿ©è{öñq xއ5p†ÃÅ…«VcÕÕ-|¾Ù¨Q6L&ýúõbww¾¦À”)ž¿þz£¾¾•Ë5CíÙs ÃÐÛo‡=³?µ–––¼¼¼íÛ·kÞ2Çww÷žåÍÍÍÍÍÍû¨P ô3Ø,Ëßß_'H§Ót‚Úkkë'>#>›];ÒÛA‘H$OOÏÞªêÙw½ Úèíã3ãñÃ!rŒŒÈmfft‰ØsH~ÂW‚o'ßÕ%ÿñÇ+o¼1ɤ÷Rß0 ‰âââÞ}÷]üͺþsvvÖL C™ššöLQzƒ#„aôîㆃL&:9qšš¤ÆÆT„P` óŽçÕjLóÖ;F t:þ^LL@bâÍŽÙâÅÁÏ´ÉOËËË+==ý ܸq£N=çÎëYyÏàa}‡ûx€AquåuvÊi42B((È©¹¹Cû-y„Д)ž—.tuÉwï¾¼pa‡cúŒZ À ƒ0(nn<™L‰oH3j”™™±Î[òÓ¦êèíØñWe¥ä­·ÂžM+ãÅݯP¨ðÏz‡ämlÌ]]y¤½øâ(ËgÑF†äx€Aqsã!„ÚÚî/Oä|ýz±ÎÚv¾¾öµµ­‹é9~¨Ô×·®[w˜Áû Û äx€A±³c¨¡áþJd!!.ÍÍ÷îÕh—iiéB³³c?‹¢¦&iBBR`àgÏæªÕϤ `„€yõƒB"‰DB}}+þ£‡ßÊÊôòå‚Ñ£mðHW—üúõbráBž££žMMT*Û·ïêöíçŒÈññáo¼J£}=”Í#äx€¡!‰uu÷ïã Bp°Ë¥K+VLÆ#))w:;e“'{üõ×½7Þ˜84MÂ0,1ñægŸ%„÷ßqéÒcc#„І¦`¸ÐÞðéAŽ"‘X_ÿ`׉Ý>úèPw·‚F£ „ŽÍ sŸ1ÃkíÚƒR©ÌÄ„:Øí),¬ûðÃC寿>ღ›šÒ4_EEE öÙÁHãñCC"[Z:[[ïu‡†ºÉdÊôô2„X,½zµpÁß)S<”JÕµkEƒÚ’înÅ–-§§MÛ"•ÊNœx?!áeíÀ`ƒ04T*!tçNþ#gæìluéRB())‹F£¼øâ(6ÛÄÛ[pþü½ÁkÆ%“'ý¿ÿ]Ú°aÎéÓ«ÇŽµ{ô1 (ÈñCC§SLMéÙÙ"Md·˗ BÇßš1ËN7BMžìyþ|.öD›”÷M©TõÕ©¨¨ï\]y—.}´lÙD þ±ÏüÙ Fáñ˜·oWj"¡¡®¹¹5u·nUÌží§Nõ¬¯oËË«س×Ö¶Ì›·}×®¿¿øbÁÏ?/ãñ̶~úr<ÀÐP©ÇT;ǹÉÄ={.‘CB\ð ——-—k6°ëoÜ( ßÒÞ.;}zõ³]c9`xètŠ……quusCC;11¡úøØýýw^h¨þ !D ÂÂÜ0ÇÿôÓÕèèïœRRVººòªZžäx€¡166b0háηòN55­áᣵKNêyëV…DÒñ”gT«±„„¤þóèÌøßÿ–0ƒþ>ý9`h˜Lzw·ÂÎÎBûq½…Ã0GG+í’'º‰„¿ÿΚÓ)ªwÞùå§Ÿ®îܹ(.n*@xšÚ@ㆆɤ·µuy{ ´ïãëêÚˆDbnnµvISSZ@€ã_=ùãz™Lùúë{/]Êÿãå/¿ü“7€A9`hÌÌèmm]^^í×çnÜ(¶±1Çß’×6y²çÅ‹ùJ¥ú NÔÕ%_²dOFFEbâ;NOÕhäx€¡a2é­­]>>víµµ-¡¶¶®»w«'Nt½~½H³»œþã¯cðà¹9`h¸\3„P]]«¿¿0;[ÔÝ­¸}»rìX<ǻ߽[-KµË»P©ä¿ÿÖŽ§×ž=—üñÊŽ‹ÂÂÜ£ñ ÈñCÃå2 B}}[@€£\®P[À‚0@<žY]]+BÈß_XY)Áoâqaaîí¹¹5Úå­ìíÙ/ê_ÔV¡P-_þ ƒa´sçbØ  #ðÇ 0@\®Y}}BhÜ8G¹\Éá˜j¾5ÊšËeö|\êvá‚þ!ùuëŽäæVïÝû:“I¼60à Ç ÇÄß…óðàH{ @ L˜àªwH>'§JgÊ=Bhÿþü‘ºsg¬›l †ÈñdeŬ­mE54´aª«kÓþ6,Ì==½L*•i'Lp%“I—.=”û ê6n<þÞ{S_|qÔ4€E~Ö €goÏniélmí‰$¡¢¢zíoCCÝT*õõëEÓ¦=ØNÞØØÈßßáâÅü üðˆL¦üÇ?~uwç­^>H파Œ¤šÁ0µzõêÀÀÀª îãH(ä „JKÅ"Q•J‰Ä íšoÙl“Q£lzîA7i’Çßç«Õ÷§ÜoØp´ººe×®¥ iÚyøð᪪ªAª ;‡®¬¬|t¹~ƒûx€,ŒŒÈeeÕÕÍvvìÒÒÆ´´ÒÙ³½5ÂÂÜ““³uŽš4ÉãóÏ“ïÜ©ôñ±;þÞo¿Ýؽ{©­­ù 6uÕªUQQQƒz 0\„­îãˆH$ØÛ³ËÊëëÛø|Ö˜1¶×¯i s//——‹µƒ|kkÖ… ymm]~xhÁ¿Y³¼ÃÜÇ “PÈ))iìèYY™Žmsî\®ö·~~¦¦´K— ,µã¡¡î/æ—•‰ÕjõgŸÍÚ&0Àà>`˜œœ8¥¥ mVVÌà`—¢¢zíå(R` ³Þ=ènݪ8r$cÓ¦hËxh› Àƒ0LB!§´´¡©IÊf›Œ'¤PH©©¥ÚÂÂܯ]+R(TÚA__;µï8uªçж€9`˜9R©¬µµ‹É¤1T//Áµk ÉOžì.•Ê23˵ƒûö]'‘:ð XkkëÊ•+»ºº¤¶øøø»wïHU8íæíÝ»÷?þè£pyyù† :”ššºuëVÔ¿Þ555}ñÅ/¿ürXXX\\ÜùóçûÙ6±X¼råJ™Löè¢Ïäx€artä „ººäÆÆT„PHˆËÕ«åx;;¶ƒƒ¥öãúââ†ï¿¿䜑Q>´}f¤Ré¶mÛ*Qmß¾½¤¤d@ªÂi7/99¹ïüÆo¤§§»ººŠÅâüü|ÔÞ?þÀAAA±±±Ó§OOHHèã,£Fºxñ"BH&“effªÕ}íUøÌAŽ&.—ilLU*ÕÆÆF¡à`çòrquu³v™°07í}h>ý4ÉÕ•·|yXqqCmmËP·¸OJ¥Rs?*“É:::yˆZ­®««Ó bÖÚÚª·úس‘C r<À0GGK„NAùû;R©ä7ºË s¿{·_£þúõâóçïmØ0'(È…J%_¹R¤·Ú!VRRB£Ñ6mÚÄçóÙlöG}´~ýzsss33³÷Þ{!ùæ›oâ…•J%ŸÏ?räBèÓO? …nnn666šŒuâÄ ‡ÃãñBBBbbb>þøc͉nÞ¼éââòÁØÚÚZXXÄÄÄtuué "„6mÚ4eÊü@íÏz¥¤¤p¹Ü€€‹õþûï«T*„ÐñãÇ9އ‡‡@ زe ^òÌ™3îîînnn\.wõêÕ}\&“ùí·ßr86›=a„¶¶¶ÐÐÐâââ7ß|ó¿ÿýﯿþúâ‹/ê•••5zôhkkk6›½aà Ã222RSS7oÞL¥R5Å¢¢¢÷ìÙ£·ï>>>õõõsçÎýùçŸËÊÊX,–T*ÕÛG½ìÇ/|€AŽ,''+„~O¥’ÇŽµ×’ q¥PH—/¨ÕاŸž˜:ÕsâD7*•ìççpõjá³it2™,'''//ï‡~øê«¯rrrÊËËÿüóÏo¿ýV,GEE=zT¡P „.\¸ÐÙÙ9kÖ¬’’’­[·Þ¹sG,ÇÅÅ}øá‡¡ÚÚÚèèè7¶µµ}üñÇGŽÁÓ-N©TwwwWUU‰D¢´´´Í›7ë "„¼¼¼fΜ‰¨ý¹§êêêÈÈÈü±®®®¬¬,99yçΕ••¯¼òÊÎ;ÛÛÛ÷ìÙ³fÍšÒÒR„кuë³³³÷ìÙ“••Õ[µíííW®\©¬¬¼yófQQщ'.]ºäììü믿®^½Z.—ã©WC*•Ξ={Á‚b±øöíÛû÷ïß½{÷Ý»w©Tª··îþþþEEEzûžÍår“’’–.]ªV«ñ'"zû¨·‘÷‹ã Ÿ:‡Ç#„‚ƒu†ä|}íÿþ;?)éVnnõúõsðxHˆë•+Eý|b<,--çÌ™ƒZ±b…••Õ‹/¾H¡P çÌ™£T*/\¸€:|øð‚ h4†a»wï‹Åk׮ſMLLd±Xqqq eÖ¬YzEÿä“OŒŒŒ¬­­W¬XqòäÉÞ‚áááñññø·ÚŸ{JLLär¹³gÏFY[[/\¸ðرc111øá‡¦P(jµú÷ߊŠjll,,,¤R©ø˜zo¾þúkƒáççÔwI„PRR’\._µj†al6{áÂ…Gmmmµ°°è¹´\WW—æy¾Þ ÒŸ>>A#äx€Á²±±@uvÊñƒ‚\ª«›E¢&í2aaîÿ]ðÍ7gæÏ÷Õì;a‚k}}«ÎN6ÏÇC‘Éd„‹‹ $*•ŠF£EDD>|X©T;vlÑ¢E!ggç}ûö@Þ‡ÒÒR©T:fÌwwwww÷_~ù…@ 8::Ö××wwwë>w“êwßõöñ 9 Ç ŸÏDUVJðýüèt£ë׋µË„†º‰Åíee⸸©š ··ÀÌÌXç¦ÿ"õü[­y̰hÑ¢ãÇŸ?žN§‡……!„jkkCBBÒÒÒêë룣£—/_ÞÕÕÅf³4‡WTTèTØÞÞ®™2–ššŠÿ'@o°ÿ,--µï_³³³íìì,--‹‹üvîÜYUU•••µaÆäää²²²ãÇ3Œ¾kÖ\“þÃÒþŒzçwœµ˜››õÕWóçÏwvv …Ó§O_¼x±ÏÖ­[###y<Þºuë¾ùæ2™yòöÒ¥!¡ÐP·Ë—ugØ»dd”ËåÊ¡lóãòòòJOO‹‹{Ü7nÜøî»ïj×sîܹž•÷ ކÑwÈñƒ…ßÇ;;soßi‚AAÎb±´¨¨þÈ‘tÍ;!4a‚kNNUKK§öáãÆ9ÊåÊìl`x‚0Xd2!äêÊ»uëAž3Ɩɤ_»VüÇ7_zi¬©) !â‚Òy2ooÏæóY7o–"†'Èñƒ…ßÇ;9YÝ»W£yäN"OŸ¾{÷nuLÌ8<ÈdÒ½½=_ˆ÷÷¦¥AŽÃäx€Á¢ÓBvv …*7·FvIK+µ±1÷÷j‚'ºiï% ¦§—©Tÿ–¼B¡úå—ëd²Å€× €¼;0Xfft"‘@£‘Y,ãì슱cïO#v–É!!.Úû‘L˜àºuëÙŠŠ&{{¶&8nœc[[waa‡Ç€½Ç¥P¨JߺõlCC;…Âí¹Þr<À`‘HDZKK——— ;»R—É”!ËX»°ŸŸƒA½r¥ÐÞþÁ†lÖL&=5µt@r¼Z¥¤ÜþÏNUUIæÎ?ÝÁaóÖ­y[·n}úÊè r<ÀYX0ZZ:}|§NÝÑÿúëN)+{h1 …4~¼ã•+…‹=ÈñD"ÁÏÏ!-­ôµ×Bž²%ÿ¿aÃ1‘¨)"ÂåÊåzv[•€Æã†ŒÅ2niéôñ±+)ilk»¿‡Ø¹s¹ÞÞ‚ÔÔböÀ@ç7Šuòî¸qŽO9µ¾¶¶å­·~~å•]îîüË—?Þ²%Oð 6ÈñCÆb77wŽkaØ;U¡úúÖÜÜš¹s_hkëÎÍ­Ö.¬yu^;8nœ°®®Ug×ù~R*Õ{ö\ ýÏݻտþúæîÝKµûlㆌÅ2nnîàr™<ž¾šÍ¥K… )*ÊŸÃ1ÕÙgvÌ[&“výz‰vð…ì©TrZZÙãž:+«bÚ´Í_~yrùòI/~8eJ¯+¢0H Ç ™¹9_½ÎÏÏ!=½ !”–VêãcG§ïtýúC‹ÞHDajêC‰ßȈìå%x¬·äÕjìÛoÿš7o—˼xñÃիéT˜üžÈñCfnnÜÜÜî¯fS¦VcééeãÆ BAAÎ7o–**íòÎׯ?Õ¼X,ýߦMÆÅMÝ¿ÿmx8ž!ÈñCfeŬ«kCùû [[;oݪ(.nÀ—¾ v‘Jeø ½F` ³X,ÕìS‡7NX\Ü KyºË— ¦Nýº¤¤ñèÑ÷â㧉„GÀà0dÖÖ¬ÖÖÎööîÑ£m ê±cY!??„³³g¦ó¸~Ì[SSÚõë=®7NH  ŒŒ¾†äU*õçŸ'/\¸kÒ$¿þZóœï:FÈñCfccŽª­m!“‰ÞÞ‚ë׋]\¸ææ üÛÀ@'iwøó7n<4íÎÌÌØÕ•—‘QÞÛYÚÛ»_ýǽ{/oÛöÊ7ß,d0¨ßäx€!Ãs|uu BÈß_XV&Ö^£>8Ø%=½Lg‡øÀ@'|ƒyí öµÚjk[æÎÝ~û¶èðáw#"ü¾<)ÈñCÆdÒLMiÕÕÍ!??™LáâÂÕ|äÜÕ%×Ù!^ï¼ÝíÛ•jµî²t¥¥sçnW«±S§VÃóyð¼0p66æ55-!kkBH{"½ƒƒ¥­­¹Îãz//©)Mçq½@*•?´}Œ¦Ì¸q¤¤[ … ¿eoj’~üñ6›¡3ÁÎÍwölî“5ãÀOØ0‚}óÍ7O|,äxÀˆ`bB“JL©Ãß’×.àïïØÝ­¸{·zìX;„ÐêÕ‰tºÑ¤Iî:ƒô..Üï¿¿¨ù¯Àc‰ŠŠzÂÖƒìСCO|,<«ŒÆÆFÚÓæýý…99U2™Rqrâ°Ù&øãúßO½p!oÛ¶WÆwÊϯ•Ëssã+*üM<žsã#F‘Ë•uu­øþþB¹\©Ù+!D |}ÒÓËZZ:¿øâäoL pÄ÷°)(x0ïâÂ%‘ˆ……=$ÀЃ¨TBèÞ½üG;;vÏÍiƦ¥•nÚô'‰DXµ*!$ZÒéFš£BT*Y °(,¬¶ð„ ÇFµåç?xíÍ×סǼ°±±ý—_®¯_?‡É¤!„H$¢»;Oç…x.Üǃar<`DP*U––¦Ú¯¶ûû 32ʵ¦õö‰>Ÿé¯ zzÚhßÇ#„œœ8Ãq<¾µµuåÊ•]]]O_•Z­^¹råºuëtâ[·n]¹recccÿ ‹W®\)“ÉB_}õÕÊÿ÷ÁìÚµ«¨¨HoUëqûÞÔÔôÅ_¼üòËaaaqqqçÏŸïçÚÝy@ŽŒD"ÑÜÜXûŽÜß_ØÜÜQZú !ýõWžZ<=­5oÒ#„<=­ïÞ}hz{{˲²á—ã¥Ré¶mÛ$ý¨ÕêmÛ¶ýûßÿÎÌÌÔ›››×®]»mÛ¶æææG6`Ô¨Q/^DÉd²ÌÌLµZúí·ß²²²Èd2™LV©T¿ýö›ÏåË—Ÿ¾ÁzOÝ›âââñãÇ8p (((66¶££cúôé }¢·;Ïxw0"P©dSSê•+Ercc#„ÐèÑ6tºQzz™““BH­Æþýï“..V:÷è£GÛ´µuÕÔ´ØØ˜ã¡Ð²­­«¹¹ÃÜœ1MU*• …‚N§#„d2™R©d0q"µZÝÐÐÀãñ´ƒ†µµµ™™™õv”\.ïîîf2™ êåããsàÀ___üÇcÇŽyzzÞ¾}û‘"„$‰\.GÙØØ\¹rEŸ5kÖ‡~ˆ–Édnnn?ýôÓĉ5ZZZ˜L&‘øàUoßûsêÞµ··OII¡R©¡eË–…‡‡GGGO™2%$$/£s•zë†a"‘ÈÊÊ ÿmj¨Tªööv‹ÕÏ6?1¸ŒFFdSSc•J—wÿÁ;…Bòñh†äSRn—–6.]\TTßÖöà¡®‡‡5ðÐõ–¡¿•/))¡Ñh›6mâóùl6û£>Z¿~½¹¹¹™™Ù{gŠŒŒ|óÍ7ñÂJ¥’Ïç9r!ôé§Ÿ …B777›«W¯âNœ8Áápx<^HHHLLÌǬ9ÑÍ›7]\\>øà[[[ ‹˜˜˜®®.½A„ЦM›¦L™‚¨ý!´`ÁíW·<ÎËË£Ñhšg³gÏÞ¾}»¦¤O}}ýܹsþùç²²2‹%•J{^*•êîî®y‚’••5zôhkkk6›½aÃ<Þ³ïý?µÞÃ322RSS7oÞŒ'x\TTT``àž={ô^¥Þº“’’ÂårX,Öû￯R©JJJ˜Læ·ß~ËápØlö„ ÚÚÚúñ§ñä ÇF*•L¡Y,ã;w*5Aíõkwî¼0{¶÷¬Y>†Ý¾ý Œ‰ ÕÞž›û`HÞÆÆœB! ƼL&ËÉÉÉËËûᇾúꫜœœòòò?ÿüóÛo¿‹ÅQQQGU(¡ .tvvΚ5«¤¤dëÖ­wîÜ‹ÅqqqøMpmmmttôÆÛÚÚ>þøã#GލT*ÍY”JeqqqwwwUU•H$JKKÛ¼y³Þ BÈËËkæÌ™øÚŸBaaaR©ôæÍ›¡¦¦¦¿ÿþ{Þ¼yøW†i Èårídggs¹Ü¤¤¤¥K—ªÕêÖÖVÍWµµµwîܹsçÎÍ›77oÞ|åÊ•%K– „¤RéìÙ³,X ‹oß¾½ÿþÝ»wëí{ÿO­÷ð»wïR©Tooo_¿¿QQ‘Þ«¤·;ÕÕÕ‘‘‘?þøc]]]YYYrròÎ;BíííW®\©¬¬¼yófQQщ'žàï¤ÿ ÇF*•,—+G¶½s§Jô÷––665I/\È»s§rÅŠÉVV¦<ž™vŽGyzZkO»#‘ˆvvìA’OHH°´´œ3gBhÅŠVVV/¾ø"…B),,œ3gŽR©¼páBèðáà , Ñh†uttìÞ½[,¯]»ÿ611‘ÅbÅÅÅQ(”Y³fö<Ñ'Ÿ|bdddmm½bÅŠ“'Oö Ç¿ÕþŒ"“ÉóçÏÇè=zôhpp0—Ë}Êîÿøã3f̘1cƬY³Ö¬YàïïJJJ’Ëå«V­Â0ŒÍf/\¸ðèÑ£zûÞzommµ°° :…»ºº4£ìz/ŽÄÄD.—;{öl„µµõÂ… ;†õõ×_3 ??¿   üüüÇjóれŒÈ2™ÒËËVç>ž@@™™åÛ·ŸŸ2ÅÃËK€òöh—AyzZë¼>'ZVT JŽÇ†Éd2BÈÅÅ•JE£Ñ""">¬T*;¶hÑ"„³³ó¾}ûvÔ(›ŠŠ&í¥p¶H$ŒvjÏ&ÓÐŒI/Z´èøñãçÏŸ§Óéaaa¡ÚÚÚ´´´úúúèèèåË—wuu±Ù솆Íá:¶··k^$KMMÅÿ 7Ø·ÐÐP•JuìØ±«W¯ÎŸ?_Çïƒ5ÉKJJúÓw~~~aaa¹¹¹!+++ ‘HTYYYYY™™™ùÝwßéí{ÿO­÷ðñãÇÓh´}ûöi—,***//Ç;ØÏ«dii©}žmgg‡ÖüŠ1ýŽäxÀˆ`jJ•J»½¼*•Zû-y??áåË^^‚qãîÿcíímWUÕ,?˜6j” †a޲±aÕÔèClP…††Òh´øøøW_}O™™™/½ô’D"áp83gÎÄŸ'O:5###++ !”‘‘qãÆ zÔjõ®]»B………'Nœï-˜ššúÇàGiƉĈˆˆ+VLœ8Qsw‹ …d2ùàÁƒ¡C‡UV>ô\!D¡Pú3ÝÌÒÒ²½½!4mÚ´æææýû÷ã3ÕgΜ™˜˜¨·ïý?µÞÃ9N||üš5kñqýüüüÈÈȉ'â³ ô^¥žÝ™5kVNNNrr2BH"‘¤¤¤ÄÄÄ<²¿r<`D`±ÍÍööl&“®=$ïåe+K#",zãí-@i?®·±a1™tíiw|>«¾¾M¥ê× ‰Dâ+¯¼rïÞ½×^{ ̘1ÃØØ˜ÏçûûûGEE}ùå—t:=((hÆ ...QQQ~~~:õ0Œ³gÏÚÛÛûøø®Zµª·`rrògŸ}†¥ýY#::¿Öâÿyýõ×9Î?þˆ'BmK–,ÁŸÃ÷Ãáüý÷ßÝÝÝB¡pï޽˗/···wvv3fL||¼Þ¾÷ÿÔzG%$$$$$,[¶ŒÁ`°X,///__ß3gÎàOô^¥žÝñóóûꫯæÏŸïìì, §OŸ¾xñâ¾;;(0öí»æá±ðˆˆoW­úCß±ã<Ÿ¿òÂ…\íÂãÆ}úßÿžÑŽÌžý͆ G5?¦¦–ðù+ëêZûyv|bÚ“·^ËŽ;&Mš¤Q«Õyyy·nÝR«ÕÚq‰D’ŸŸ¯R©bcc׬Y£‰_½zÕÌÌ Ã0‘H$‘Hú>¥–––ÆÆÆÞ¾mnnV(U¡T*MOO¯¬¬ÔDzë{?OÝÛá†)•ÊÜÜÜŒŒŒîînM°«¤·;ÍÍÍiiib±ø±º©#"""""âÉŽ…5p#‚¹¹q[[—J¥öò\ºT ‰Ÿ?F#çåÕMšä© úøØéL­wr²*)y0ÂÍç›!„jjZ¸ÜG¯3PZZZòòò¶oß¾eËí8@pwwïYÞÜÜÜÜܼ A?ƒO¦åwBO° >];Ò[ßûyêÞG‘H$OOO½_!}WIowX,þ^À³Ïê#‚¹¹±Zµµuyy ëðãËÊÓÓËFdd”köò²ÍÎ~hžš££UIɃUoù|‘Hâ!y‘H÷î»ïâoÖõŸ³³³fÂBÈÔÔ´gâÑ:†ÝU‚ûxÀˆ€¯;ÛÒÒ9fŒ­R©ÎË«ññ±KJºeee:}ú˜~xèÕjoo»††öúúV.÷þí “§ªJ"“)©T2BˆB!YZšÔÖ¶ö<ÑàñòòJOO‚7nܨSϹsçzVÞ3t »«÷ñ€Å2FI$B¡%“IçÝ?oêÔQ~~öb±T$jÒöò‰„ìì뜬Ôj¬¬ì¡[ùÚÚ–!ì r<`D`³MBMMíaÔ(›;w*›š¤ÙÙ¢©S=ÇŒ±%“‰ÚɤÙÛ[Þ½û`ú½£#‡D"jÉ[Zšh¿_Àsr<`D Ñ(,–1þtÝËKpçNå… yd2)8Ø…N7rqáݾýк7®®ÜÂÂzÍFFdsíhÙl“¦&Èñà¹90Rðùfuu÷s|AAݹs¹N&&T„ÐØ±v:kÛ¹¹ñ ê´#ye僵í,-M!ǃç̹Œ<Þý?fŒ­B¡ºx1ÿÃïϿS©Ô$Òý;77þ÷ß_T(T líoaÁx܉À0Bg'…ÁܵÊaHMM?~ü“ ÷ñ€‘‚Çcá9ÞÑ‘cllÔÑ! ¾¿é‹]G‡¬¸øÁp»›O¡Pi?œ,´×¨g³Mšš:úyj@€ï­®V£úzFf&÷Þ=öà¯V ÁøñãõîØp)ø|³¬¬r„‘Hàr™••—û{¡º¹ñh4Jv¶È͇Gœ­ÈdbAA&"XTUIÔjŒH$ „Øl“®.yW—œN7zä©8˜’rûßÿN©®nž;wl|üt{{ö`t ¸Œ<ž™æv## F!“ïÿH¡F²ÑžvgdD¶³c>’, U}ýýþ¢~¿nåÏž½òå»ïþä|íÚúíÛ_…†ÜÇF >߬­­K*•™˜PÛÛ»:;åÚÃí>>v™™åÚåu¦ÝÙÙY „D" ŸÏB±Xt„Pkk§­m_ëÅ––6nØpôï¿ ^zÉ'1q¹¤v0tà>0Ràùµ²²©³S^_ߦVcÚ)ÜÇG›[-—+577¾ö}<—kF&5ëÞ04„PG‡¬·ÓuuÉ·l9=yòו•’ßûûïC‚C r<`¤°³c‘Hrï^µJ¥¦Ó´7õò(*íwâÝÜxeeš¬O$,-MëëïoÎ`!„¤Rý9þÂ…¼àà/÷î½ò¯ͽxñÃÐP·Á꽃)¨T²••iEESII#F5Ê&'ç¡•ìèt£ÜÜjMÄÕ•§Tªµ§Ös¹Ì††û9ÞØØˆH$ôÌñ²µkÆÆî r¾zuÝk¯…hÞÇ`ˆÁx<`±³c‹DM ÕÑ‘ãåe{ëÖƒÍåH$¢«+7?¿VÁ§ÖÖ¹»óñ÷ÿػﰦ®þà'‹$@ ÁÞ  ˆVAŽÖX« ­Zí²V-EQ\ÕJ«¾®ºZ}µŽÖþŠ"¢(ÖQë«­ZETT@öÞ$!²ïýýqmL!  šïçéÓ'99÷Üs/È7çÜ3¬žÌ°G‘H$cc£æf™vùééÅQQG$ß?cÊ”/ÿ‚è|»''NiiCaa›ß××!+«R©Tk>õö¶}ô¨Ró–F£8:ròòžNš×nÇ#„LLèšv¼J…­_ÿÛ»ïîrwç_½º<è Æ ˆ£#§¤¤¡°°ÖÕ•×·¯½\®ÊÏú¾woÛ¬¬ íüNNœ²²§ûÑñùfšçñ!:1æN(lž1cßÁƒW·l‰8|ø>Ÿõò/€ÎA_=À€íx‰äâÂëÕËŠÉ4ÊÌ,÷ö¶%>õö¶škjÄVVfDг37+ëiËÞÊʬ¶¶IóÖÄ„ÞܬÈήú裃 …úäÉ…ýû;¾ÊË cÐŽWWž\®’É”öö ¹woí¡õ}úØ"„²³Ÿu¢Ý¯ykii"K5Ýû4¥°°vòä]VVæ.,†zˆñâîÎ'^p¹¦èÉ&³O‡Ö³ÙÆ66l톻“§¦F,•*4Bb±”x[W'>þáÔ©ŸÏãAÿ<èq Æ ˆ¹¹±™!Äå²B}ûÚgeUªT˜&CïÞ6ÙÙO‡Ö;9qp×l7gaaŒ‰Zp_·îLy¹0 ÀeÆ0Íbyô(ㆅÏ7#“ID‹Ü××A*Uh»óöþ×°;B¨¼\H¼577F ’ØØãûöýéáaíáaýJkÀ³€0,ffL*•Bì׫—5NÕî®÷ö¶ÍϯմìMMéff ÍúµÄ7ƒ Î&%¥:ô‘­-[»€žb<À°˜˜áø“ÀL¥’½½m[­v§TªËËŸîocÃÖìVG§SÉdòýû¥ññŸ½ýv*•¬V«=Äx€a111R*1ÍÚ5>>vÚó..<„PQQ½&ÅÆ†]Y)Bá8¾bE†a3f¹#„(2´ãAO1`X B¨¨èÉ*ôÞÞÿdgfÆàpL5Ÿ"­¿~ýoGÞârM‰½eèù Æ …B!“IùùOV¨õò²‰Zjj5\\xÚûÐØÚšWU‰öì¹¼wï•íÛ§[ZšJ¥Jâ#ííçè Æ ‹B¡26¦<‰ñÞÞ6!í¦¼«+W»Ïç›UTˆ6løíë¯ß óc0h2™òŸ¢ÔFF°Z(è¹ Æ ‹Tª03chÚñl¶±••¹vŒwqái?W©°–ù{ï üôÓ!&“¦YG©TQ©ÐŽ=Äx€aQ*ÕææÆšvíסàà`‰DrëÖ-„PCCßþùÞ{ïá8®ýP@¡PhWàÞ½{VVV§OŸž3g†aDg‰DZ¼xñÆ ›’’B§Ó‡ Ò*?BhåÊ•qqquuu÷îÝ;pà@FF†v‰D2qâÄ©S§Ö××ß¿?>>~ÿþýÞÛöŽjjjºvíZYYÙ­[·òòòRRR´Ï¥óæëÄx€a!VŸ‹¥nn|±XV_/A%$Ü¢Ñ(ÚñÆÜœIté#„h4ŠBñtÌ“i„ª©i´¶6{eÕŽ‹‹ãr¹¡¡¡¡ùóçóùü·ß~›F£åææ†††ªTªË—/#„’’’¦NÊ`0ponnÞ¿}}}ll,ñiBB›ÍŽŠŠ¢Ñh!!!mO´víZ###[[ÛùóçÿöÛoí%Ž;6&&†øTû5BˆJ¥N™2…è®?yòä!C¬¬¬^äÚ×®]ûøñãÉ“'§¥¥…‡‡Û —´F IDATÙÙíÝ»·U ÃŽ9QWW—››K§Ósrr´3œ>}Z¡P,Z´Çq‡3}úô“'Ovzo;8jóæÍ&&&~~~AAA­Î¥óæëÄx€a!f´76J‰h jqO4È¥²òéSj‹¡ÙOÇ™ü䯥PØlaaŒª®¿š¾z‚µµ5BˆJ¥"„<<<ˆD‰¤V« FXXXRR’J¥JNNž9s&BÈÝÝýðáɉ‰vvv¾¾¾çÎCiÊtuumusss.—K¼¶··¯¯¯o/±cÓ¦MKLLÄq<11122²½lDßCÇäryCCC¯^½Ö¬YsåÊ•ªªª3f,X° ªªJ;™L>}ú´³³óàÁƒwìØA¡´Þ+¨°°P"‘ôíÛ×ËËËËËë—_~ÑŒ¥èàÞvpŸÏ'^0™ÌVüuÞ|½€0,&!¡°ÅÊÊÌØØ¨¨¨.-­¨¨¨îÝwß’J"Q ‘M»¯V«)BH©T77+,,L0 ¯­¿²¾z„ž~ÉЦ\6sæÌS§N]ºt‰Éd#„ªªª†zûöíšššÈÈÈyóæI¥R‡S[ûtBIII«›šš4CÏRSS‰/:;6bĵZœœ|ýúõ)S¦hÒ‰©é/)((è´¨7nØØØ455o---¿úê+ ÃÊË˵³edd¬^½úÌ™3EEE§N211iUŸÏ·´´,---+++++KOO× ÎïàÞvå(í!~7¿Ó+} Æ ‡cJ"‘$$ÉÁÁ²´TpæÌ}OOëÁƒ]B••O†I³XLM;^­Æ‰?èBa Žãl¶q}½D©T¿Êß±#F0Œ˜˜˜3fUMOOŸ4i’@ àñx&L Æ„3æÎ;¡;wî´Ýå ð}ûö!„rssSRRÆŽÛ^bjjêÑ£G‰£´_ÈdrXXØüùó‡®é@¹¸¸P©ÔÄÄD„ÐñãÇËÊÊZU€F£µ½ïççÇår—-[F4úÕjõîÝ»Y,–vþ’’ OOO„Prrraa!z5Þyç¡Pãxiié„ :½±Ït”æ\:o¾^@Œ*•lfÆlh „9¥¥õ.< égkËFUT<™ÃmjJ׬s§Vc ã›BÆEEu!®ÎS¼zd2ùý÷ßÏÊÊúðÉ”ñãÇÛØØøûûGDDlذÉd­^½:00ÐÃÃ#""ÂÏϯU9&&&/^trrêß¿``à¢E‹ÚKúè#wèÐ!âë‚¶°°°Ù³gÇÇÇkRX,ÖÉ“'¯\¹Âb±zõêÅãñ®^½zîÜ9bZ&hh¨———ƒƒƒ‹‹ËñãÇçλtéÒŠŠ M—ƒΛ7ÏÉÉÉÝݽoß¾ÚcÚóLGiÎ¥óæwz®—3dÈúmÛ~Çqü«¯N޹ɯ&úÑ£ ǽ½WþôÓu"϶m¿¶x½bÅñ)S¾ÇqüæÍ|›èÚZñ‘#7ÝÜb1 {ÁšÓ^°Â÷ß?räHí ò³³ïÞ½Ûªž ''G­VÏš5kéÒ¥šôëׯ›››ã8^ZZ*:H|A"‘¨®®®½O…B¡R©l•¨R©rssoܸÑÒÒÒAþ¢¢"¡PH¼®¨¨ .\;ƒD"IKK+++{¦ wý(͹ڻù {¦Šu ö.—õO;Þ2!AàèÈéÝÛ!dmm®ÙŠF{ýZ• #Æp …-!6Û¸°°ÞÅ…÷*Àé€H$ÊÎÎÞµk×wß}§N"‘¼¼¼Úæ·°°°°°è @‡.&>sóŽžq°Ù춉 ÅÃÃC3 ®½üÎÎΚ׶¶¶m3#៱¾Ïp”æ\íÝüW úê‡Ã1!b¼“§¥EäN¤[XkÆÜ14¹üɨï–…±±B¨¾¾ÉÌŒA£QŠŠê\]yú¨»¥¥¥QQQ .$fu»»»£££æ-‹Åò÷÷o•Gg"x]@;`p8ÓâℇÃÂqäéiM¤³ÙÆDK!D§S5;ÏJ$rb]úÊJ‘B¨°°nìX=T]__ß´´´ç8pÍš5­Êùã?ÚÞ6¼. 08Ž)ÑŽ¯¬"„øü'ËÛ±Ù&Ob>ãuxøð!Nïׯ_«tÿ¼¼<ÛÔêÜO¶¢¢"<<üСCÕÕÕEEEgΜٽ{7Òµ£«.òµ1`p,-MI$R^^µƒÇÖÖBÓŽ'6†'¦ÌI¥J:Šª«kBq8¬¼¼º±1­¢Bäãc§¿ê÷\–––m—’J¥š§ì:÷®m%!!ÁÊÊjâĉ![[ÛéÓ§'''u°£+h b<ÀàÐh‹^RÒàîη¶6‰Zˆíá‰ÅìT* !$—+‰Ol0Ïã±òókÝÝùTà8íx\]]kjjd2Y«ô?þøÃÍÍ uy›ÚâââÁƒkÞ:;;kv’í`GWÐÄx€!²´4­¬lôð°²°0ÁqœNO¥’BJ¥!$—«èt"Æ7Q(d ãüüww«Ê­¬Ì5Sê¶€€ƒqøðaíļ¼¼ââbb‡Ù.nSËårµÛè÷îÝÓ¬Ç×ÁŽ® -ˆñCÄᘅÍÎÎ\6Û!D §'b¼Zý¯v|mm“¥¥ …BÎË«uwçgf–õí õºñx¼˜˜˜¥K—&$$ÓÜsrrÂÃÇþÞ{ï¡v¶©m»ŸlHHȃΜ9ƒgÏž6mš®çõ1`ˆX,c…BeooñïOAÿ´ã¥R“IC•• ,årUE…ÐÃÃêÖ­¢Aƒt·>B(.....îã?611a³Ù¾¾¾üý÷߉‡ô:·©m»Ÿ¬ŸŸß¦M›¦L™âîîîââ2nܸ>ø@o—ô:ƒùñCÄ`PB¶¶l c„±„­v;^(l!Âiiƒƒƒe~~Z1ÔššÆ€ˆñí"‘H‹-ŠŠŠzüø±T*õññÑžGG¥RÏ;WVVfjjªÙûnÛ¶mkÖ¬155¥R©šø%K–|òÉ'yyy®®®!äææ¦Ý?äÈ‘WxY¯+ˆñCD„s¶‘ÕØØˆxO¡Ñ?cîD¢§1~̘>÷ï—1™FUUbƒæëÛm»¬¾©(JïÞ½Ûû´í6µ:´a³Ù°åÝ ‚¾z€!"“É$‰Åb ­å툾z•J [,,LBeeGGËû÷Ëúöµ¿s§hà@'##h=ئöÕƒ0tÄòvèŸv<ÑW/µ°ÙL Y"‘;:rîÝ+íßß!5µ ÀMÏÕ}mÁ6µ¯Äx€!Â0 Çñ–BˆÉ¤ëÞ£íh4*BH(lf³‹ŠêB66윜*''nIIÃàÁð0¼6 Æ Ήæ;F‘ËU!b%:ªTª$ÖÖæW56J•JµJ¥¢Ñ(8ëµâ<ˆñCD4܉odD%¢;éétjMÃpkkvNN•§§uff™™#+«rÀ'cc#ýÖ€®ƒ0DR©ýãéô'1žø¿‘µªJ„²µ5ÏÉ©öô´¹{·Ä××ñòåœÑ£Û+@£C†¨©IŽjl|ÒŽ'Zð‰!djJ¯ªQ(dÏìñãªÑ£½¸:j”÷õë¹/)Ƈ…… L ™ ë³®ÔÔÔ€€€î-ÚñC$KÉdrS“ iÅx¢YojʨªjäñXb±´®®É¸¢B¨TªmmÙ^^ÖÝ[ ÏfÈ9ÖséÞ\Ý[&´ã†H,–Ò锿f9BˆN§Ñ],–Ñh”ââzbŸx„@ÐÂd=zT9fLï¶»¦>·ÚÚ¦ÿû¿¿¼&•rCCûñÅ«î*Äx€!’J&& bä†áÄÌøÆF©™!TPPëæÆ¿s§ØÁÁòáÃò~ýnÝ*\²dl·œ:?¿vçÎ?RRîZZš~þùÈY³‚ˆõèvãG©T«TN‘J•!…BE£QBOÖ¯-(¨ öºy3À§7ò p¢Ñ(AAî/xÞüüÚíÛOI¹çæÆßº5ròäÄyxIày<Ààƒêét*ÑŽW(TÄò´ÕÕb++³–Euu£›ïîÝR''NuucCƒdèP“ç^^RÒ›8jÔ¦G*·m›ö¿ÿ- ÷‡^6hÇ Î?1þéòvÄÂõµµVVfEEu8ŽÓhT Y*U±XŒ»wK7m ¾s×oÙržh»ÿýÌÐÐþdr·=Ô cã‡è¢g2þé«WíøšqïÞvUÒéÔÚZ±‘5+«ÜÝÿèQåøñ}Ÿõ,-;vüqèÐ5''Î?@tz1`pˆv<…BFGZ}õ55b>Ÿõða¹··mzzIŸ>v·o¹»[åMŒÅë"¥R}ìØí͛ϩÕxlìø¹sƒ¡[è<œ–%BˆL&á8ŽR*U4E*UÔ×K9VøøØ]»–kkËÆqîC£Ra?þøçwßýîäÄ9uê ——tb<ÀàH¥ ‰D¡ „J…56J¹\Ó’’>ŸõèQ…‘µ°°ÖÛÛ&=½¤±±eíÚw;.íÑ£Š%KŽeeUμté8âÑ>=ü. ŽTªd2ij5"“I M8Žs¹¦—/g»»óSS }}RS \]ù|¾™ZéÕ^9--ŠÏþôÓõ€×+W–¹ºò^åUÐ)ˆñƒÓÒ¢`2¤R“iT_/Aq¹¬¬¬J??ç?ÿÌé×Ïá΢¼¼j2™ý_£íÎËœ1cßСññŸq8¦z¬<]1`pD¢&Ó!Äã± j]\¸”#D25e””4ÔÔˆår•vGýWçÎýyæÌ œÃ`ÐôWqž <¡°YÓoj’‘Éd™LYQ!´¶fUWãJ¥:8ØÛÙ™KdøþûK7ž[½zÒ¼yÁz«1Ïb<ÀàˆD-Ä6¯A3B¨¢BÈåšÞ¿_Æ`Pår•R©^°`$‘óðá¿ÿóŸ³k×Nž;w„>k Às¾z€Á [0 73c””Ô[X˜¤§—89q1 ‹ej5îëkïçç‚JNÎXµêIJe Àƒ×Äx€aQ©°¦&™B¡´²2ð ÂÓÓúÎ"©TÁåš2™F†EG¿ƒºt)+:úÈܹ#¾üòm}W€ç1`X¤..¼[· íìØ2™2/¯¦¾¾I*UØÙY¼óŽOAAí‚ÿ7eÊÀÕ«'黾ÜSßÕ @;`XÊË…FF4Ç$7·šÏ7ÃqL©T#„/ûõ×§œœ¸Ä¸zÞÐŽ–üüZ Üœx†WVŠZZ$27g’Éä›7ó·m›ÛÅ‚7Äx€a)(¨šqãñXL¦‰DÂqÒ¼y#7m:7þ¨~ýô]Aº Äx€©«k‰ZÄbiI‰@"‘Ëd „p6›™—WÃá˜.Z4Vß|E£££¥Ri·”³wï^픣G;v¬ã£Ž=:uêÔÑ£G¯[·.==½ƒœuuuóæÍS©TÝP×ö544¬_¿~òäÉÁÁÁQQQ—.]êâõõõÑÑÑr¹ü¥VïùÀóxÐm`Ö/ÐiñâÅç{%òòjBd2I D"‘H8ŽÏ™3t×®?öí›M§ÊŸD‰D²sçεk×2™Ì/m×®]†½õÖ[ƒ&R.^¼H¥R###Û;dýúõ;wîœ1cÆäÉ“ïß¿´}ûöùóçëÌ,‹÷íÛ·sçN*õeý€òóóÇÏd2gΜÉápnܸ1nܸիWýõ×íÒ§OŸ~øaäÈ‘r¹<==ð—T·íxÐm`Ö/h+))©¬¬LßµxêÞ½R&“fiiÊdÒÈd„ã8ŸovãFþÀÎ&øê»v:¨T*Mk[.—777wz†aÕÕÕ­qollìà(…B!‹»’¨SïÞ½?ûì³öšÚ8Ž—””hwìܹsãÆÛ·oŸ5kÖÖ­[W­Zµk×.íK(//o[ŽJ¥­E"QÛøÚé}khhÀq\óvÖ¬YNNNiii±±±üñÁƒ9²víÚëׯkò´º@¡P „ììì®]»¦ù¶Ôöb jµZ$µ½¨—  ›]sú®èYBÇŽÓw-žú쳟]\–º»ÇÚÚFÛØDÛØD¯_ÆÎnQffÙ+«CWþ¥äççÓéôÍ›7s¹\&“¹lÙ²•+W2™L …²páBÇÃÂÂ>ùä"³R©´¶¶NJJÂq<..ÎÑÑÑÌÌÌÖÖöÚµkD†Ó§Os8ƒ1dÈÈÈÈåË—T(¦¦¦º»»ÇÄÄðx< …ÙÒÒ¢3ÇñÍ›75Š(Sû5•JMNN¶±±Ù²e ‘2gÎMõ~ûí7geeedd¥R©0 c±XË—/×\¯P(¼~ý:ñ:99ÙÒÒÒÔÔÔÞÞ~ëÖ­ÄÝ@­Y³ÆÒÒ’D" >\,ã8žžžÞ§O&“Éf³¿úê+ Ã:½o8Ž_¸pÁÓÓ“Ãáðx¼E‹á8ž––†º{÷n«ŸB``àìÙ³uÞ~ýú‘H$:þÓO?š››755鼨üü|‹õý÷ß[XXÉä¡C‡666vúKÖi¶NA;`@ÒÒŠe2es³‚xëím}ùröĉýûöµ×oÅÚ’Ëå<ÈÎÎÞ»wï¦M›""âäÉ“J¥!tùòå–––‚‚‚;vdffÖ××GEE-[¶ !TUU¹fͱX¼bÅŠ'N¨ÕjÍYˆ $“ÉÊËËKKKoß¾½uëV‰!__ß &j¿F±Ùì]»v­]»¶¤¤Dû****ÂÃÃ:T]]]TTtæÌ™Ý»w“H¤Å‹oܸqÀ€±±±)))t:}È!¡²²²÷ß÷îÝMMMXºtiaa!QTAAAVVÖýû÷óóóÏœ9#‘H&Nœ8uêÔúúúû÷ïÇÇÇïß¿¿Óû†Z¹re\\\]]ݽ{÷8‘‘ñðáC:Þ¯_¿V?ÿ¼¼ŸÿöÛoÓh´ÜÜÜÐÐP•Juùòe„PRRÒÔ©S ŽãÍÍÍû÷ﯯ¯%>MHH`³ÙQQQ4-$$DçØˆµk×ÙÚÚΟ?ÿ·ß~k/qìØ±111ħگ aaa£G^¸p¡vbBB‚••ÕĉB¶¶¶Ó§OONN& üøñäÉ“ÓÒÒÂÃÃíììˆQ{‰‰‰Ó¦M#N‘””D£Ñˆ¢¾ùæ++«¾}ûúùùeee>}Z¡P q‡3}úô“'Ovzß0 ;räHDDD]]]nn.NÏÉÉill$zZÝ©Tªy  óµÒÞÅ"„6oÞlbbâç甓“ÓÑO½[AŒŠ¿ÿÎCW«1 ÃBo¿ÝçØ±Û¡¡ý½½mô]5ݬ­­BÄ@3"‘D"©Õjƒ–””¤R©’““gΜ‰rww?|øpbb¢¯¯ï¹sçBÅÅÅAAAš2]]][ÅÜÜœËå¯ííí‰Æ®ÎÄNíÞ½û¯¿þ:qâ„&¥¸¸X3!äìì\UU%—ËzõêµfÍš+W®TUU͘1cÁ‚UUUÅÅÅÞÞÞšüS¦Lqpx2›ÑÆæÉ‰Á`(ŠÂÂB‰DÒ·o_/////¯_~ùE¤;¸od2ùôéÓÎÎ΃Þ±c…B!îIMML&ku9üñ‡››[×ï†Î‹%^óù|â“É$žâ¿ã†âÒ¥G8N"<…B?¾ßãÇUQQ=´"“uü‰Æÿ)6sæÌS§N]ºt‰Éd#„ªªª†zûöíšššÈÈÈyóæI¥R‡S[[«9¼U_:B¨©©I3@,55•ø 3±Söööë×¯ŠŠÒŒMãr¹ÚÍÖ{÷î9::Þ¸qÃÆÆ¦©©‰H´´´$ž¦———s¹\âé;a÷îÝšÁw­îŸÏ·´´,---+++++KOOß³gO§÷-##cõêÕgΜ)**:uꔉ‰ B( €Á`>|X;^^^qqñ”)Sº~7t^l«*áZý^ˆñàÒ½³~B _}õÕøñãGŒ±`Á‚¶{ 7ršo·¸|9‡DzòöË/ÇýøãŸ“&½Õcñ1bƒÁˆ‰‰™1cBÒÓÓ'Mš$x<Þ„ ˆ~æ1cÆÜ¹s'##!tçζ»™a¶oß>„PnnnJJÊØ±cÛKLMM=zô(q”ökm ,°··?uêñ6$$äÁƒgΜA ‚³gÏN›6ÍÏÏËå.[¶ŒO V«wïÞÍb±|||Þ}÷ÝìììÓ§O#„’““¿ûî;¢QÞÖ;ï¼# ãããq/--0aBBBB§7­¤¤ÄÂÂÂÓÓ“(¿°°Çq³téÒ„„â÷?'''<<|øðáï½÷^{wƒF£µšt ób;­ÒK1¼QˆY¿Ý¥=zôÖ[o]½zuÒ¤IS¦LÉÊÊêÓ§Offf·þ’äçç;v,((hÖ¬YÍÍÍãÆ‹‹‹ëà>}ú\¹r!Ô“§ù¾¸ÂÂ:¡°™hD™˜Ð=<¸WEEÑw½ž™L~ÿý÷³²²>üðC"eüøñÄI IDATÆÆÆ666þþþ6l`2™AAA«W¯ ôððˆˆˆðóókUމ‰ÉÅ‹œœú÷ï¸hÑ¢öÏœ9óí·ßGi¿nU«ýû÷kš­~~~›6mš2eŠ»»»‹‹Ë¸qã>øà‹uòäÉ+W®°X¬^½zñx¼«W¯ž;wŽÉdöïßÇŽáááÖÖÖ+W®Ü¾}{{sâ]\\<8oÞ<'''ww÷¾}û¶ Shh¨———ƒƒƒ‹‹ËñãÇçλtéÒŠŠŠ¸¸¸¸¸¸?þØÄÄ„Ífûúú8ð÷ß'úÿuÞ°°°Ù³gÇÇÇk ×y±Véåzñ¡ùžiîœR©$fãà8.“É$I§‡¨ÕꪪªV‰†‰D"Í[ÍŒ MŠ\.o;SEgb[ÇŸ4i’Z­ÖN=z´öÙ‹‹‹5¢ÑéÕ鬀T*•J¥Äk¡P¨}^¼Ëo›0zôh™L¦I!~.šiTmÏnmm}á¼ö®N¥RißᎡ3wnùòãÄd9›è+W²ƒƒ7Οÿ‹^jÒ³L¿ÿþû‘#Gj§`–}÷î] ôÓANNŽZ­ž5kÖÒ¥K5éׯ_777Çq¼´´T tø"„BáíÛ·ëëëµU*Unnî7Úþ޵´´u¥d‰D’––VVölS‹ŠŠ4¿Ãš{¥R©=ztçÎíAÜ ¡P¨T*[®óbŸUw̓ºÍ6ë÷áÇ¡ŒŒ íú—––ž;wŽx­s"lÇW§³t:ýСC–––çÏŸo;å·½Ëo›Ø§ùöœï嵂ðcÇnMNN··_œ—W£—štKŒ …7nÜðððHIIy¦Û‹ñÚt&,½Ü ˜^W¯Ë¬ßœœ2™ìãã£]y‡ñãÇ£ö'Âv|u:+€ã¸\.'ÖÕòóók;åWçåëL|ƒ§ù¾ ÜÜšÆF)BˆDB ŸoÛöû”)ÝÝùú®×ó+--ŠŠZ¸p!1C¬ëÜÝÝ5ÁB,Ëßß¿U‰ëõ¾/þ5BÛñ!bœ ±&åùóç‰h4Úßÿ-•JÍÌ̈®ãO?ýôÃ?Äq¶¶ìï¿¿4cF€£#Gßõà•xñî~]O<<&âJ~~>ñF#žIã8‹züø1ñV¥R 2ÄÈÈÈÏÏÏÍÍíÇ$Òׯ_oddDLE2dH«çñ&&&ãÇwttd2™ï¿ÿ¾J¥Ò™ˆãøÊ•+½½½‰2µ_cöÍ7ß0™L###:Îçó‰Aþ„-[¶P©T77733³Ï>ûL©Tvzu:+Ðj¾_||¼‰‰‰ƒƒF›3gŽ\.×yùíÝ ömÛfllL¡PÌÍÍi4ÚG}DLÉkïò-ZÄd2ýõWÍóøN¯ÇñéÓ§kÏnÒ÷óøÐÐ66Ñvv‹p?t誳ó’ÊÊ®Nü{Iày<èTw='á¯O‡èá###»å7ê‡~8yò$±£ÇñÇËd2b®—&](ÖÖÖzxxÌ™3ÇÚÚzóæÍDúßÿ"‰ÊÊÊLMM-,,ÚKì”L&ËÍÍ555uqqiµk…H$ÊËËsuuåpºÔ.ìbš››³³³­­­ííí;¸üöî BH­V?~üX*•úøøÐéôNÏ.‰LMM[-6ò¬W§‰D:vìXDDÄs—ð"d2¥«k,BèìÙEVÆm íÿÍ7ïé¥2Ä¿"Òw;¥ å|>óe^™íÛ·ÛÛÛ?~üËѽ~ú"‰²³³wíÚõÝwßi§“H$//¯¶ù-,,:Õš -:MlƒÁðõõÕù›Í~¾I5W€ØŸJ;Eçå·wOB ¥wïÞ]?;›Ín›í¹¯®çðòZ…²³c¿õ–ã·ß¦Èdªèèwô]©'"##»«( Å„F³52²£Ñø4š†Éjk÷wWá@_ÂÂÂ^¼ˆñ gy‘Y¿–––š·=sÖ¯~+ ÷ËÅ6m:«P(B·n­)*ª;xðZ\ÜdKK}× EDD¼`džD"ÏʪHK+º}»(#£¤¡AB¥’]]ùƒ¹øû»øú:ô굯íN©ÀA_=è6ÝØWÞúê«W(TÎÎKBÑÑïÄÆŽŸ1c_]]Óùó‹)”×r ±Zåç×ff–q=?¿Ãp++3__M\g0hú®&èq xyy­DÑé´¥KÇ;vû¯¿Ÿ:õÅëàkjÄ™™e™™e™™å·nŠÅRzï޶ÆõЉàÆã±ô]GÐÓAŒ¼i¢¢ŽÈdJ„ÐÉ“ ª«¿þúÔܹ#üü\ô]¯N(•êììÊÛ·‹ˆ¸ž›[rrâøû»,Y2nÐ —>}ì^¯¯)@ï ÆÞ(yy5IIi¡à`Ï~ý#"öX[›ÇÆNÐw½t«©i¼}»ˆˆë÷ï—)*33F¿~Ž¡¡ý|}'úû»°ÙÆú®#xAŒ¼9pÞŒ¢RÉ?ü0kïÞ+iiEgÏ.ê9Ϫ;.7sf ¯¯C¯^V0\tˆñ {à8ÞØ¨@%&&ê».ÀpùûÇá8†Ú½{Öƒå7ž]¾<ÄÇÇNUê`¸Ü¼yÁþþ.ýú9Òéð§¼ð‹^TMMcRÒøøTµZ†ºuÖ/Ï䫯NTV6"„BBúõîm;qâÎñã}?ÿ|䫯‰f¸ÜíÛEwîK¥ .ôæÎç¤Tªÿü3')éÎù󙯯ôI“úðÁý6˜€!ËÈ(™8qBÈÌŒù×_Ë"#÷2´ää…L¦Ñ+8{Ûár ÙÍïëkOLoóñ±'“¡¼jãÁ3«¨:tíØ±ÛÒ#<§M}ìfÏ@1nܶÌÌ2„PXØÀêjqvvUbâ|oo›/¹ÓÕå`¸èá ÆƒŽ(•êÄÄÛ»w_.-m3¦Ïܹ#‚‚Üõ])žZ·îÌž=—B½zÙp8ƹ¹5ÇÏ÷òzþ_SÓ˜™YÞv¸×ݹ\Óî«>/Äx †áÉÉéß}÷{E…02rмy#]]yú®ÿríZndäBffL>Ÿ%KýüY[ðÚÃåÒÒŠJJ`¸xc@Œ­á8~éRÖ¦MçrrªBBú­XâìÌÕw¥h­¢BäRÉffLkkóŸþÄÞ¾£†5Ú—ãóYýú9j⺹9 —oˆñà_._ÎÞ¸ñlVVehhÿ%Kƹ¹ñõ]#tP©ÔNNKq'‘H yÜ8Ÿ;ßï`š\Ûár4ÅÅ…ÃåÀ› bª.'—«ný÷¿W*+…¶¶Ä;„HüÓ§]7^KÏqóæÍ²²2}×ôÝ[ Äø7ß±c·W¬HêÓÇnÏžY–ú®x-UU‰¾ú*ùüùÌQ£¼ýunjj’Ý»WJÄõ;wŠ…ÂfÒ«—u}½¤®NŒaOþødd¬µ¶6on–=zkÏžË ’À@·{÷ÊÄb)BˆD"ee­77g¾¬kÓ·ððð¤¤$}×ôÝ‘!ƿɔJõš5É¿ürcÁ‚Q±±¨T²¾k^?*vðàÕ͛ϩT˜R©63cfg¯ooÙWÃ嬬Ì rõ÷wñõµg³M>ø`e¥H¥RkŽ?¾ï€N»w_V*ÕS¦øI$Òää â#ccúãÇ(”7ùW7<<!tüøq}WèSbbbddd·Gds÷ƪ©iüôÓÃÙÙ•ûöÍž8±Ÿ¾«^K™™e‹'ääTiÚÜb±´¤¤A{›"íáriiE2™’X]nذ^11cƒ‚Ü9œ'«Ë¥¥Mš´C*Ujx„Ð… SS ?úhÇÚ°á7b ;„ýÅ‹1¯äBx3AŒ3¥¥Íû³±1ýÌ™/_d/m`°ÄbéæÍ~úé…BÒx„‰DJM-¨­qý֭²2f¸ÜÊ•Û[]îØ±ÛK–Csܵá8>nœÏùó™99UšfL\Ü{Ÿ~:ü%^!büè×_o®ZubÄÏ~˜iföÆ>Å/ ŽãIIw¾þúTs³ Çq•ê_‡T*yÙ²ãJ¥ÚÊÊ|ÀÇÙ³‡¼õ–S¿~ÆÆíîù†ãøwß]ضí"B$b„|[ ·5Ï"i4ʵk+9ÝzY"ˆño…Bµbʼn„„[óçZ±"VêϪ°°néÒÄÔÔüöë(•jggnRÒ‚..~¬P¨¾üòÈ™3÷Bíx¤5Ôhà@§Ó§¿„_]ºÄø7GU•èÃ×>üɘ1½õ]ðš‘JÛ¶]Ü»÷ ‰DÂqÔA<.+h±w¬¶¶iÖ¬³²*µ{ûÛC"¡S§¾ð÷wízAwillüúë¯ÿóŸÿ0™ÝÐó·iÓ¦ªª*â5•Jõðð5j”‡‡Ç‹”yôèQ:>eÊ”U«V577‰öööAAAAAA[\\|ðàA___bxcW´wCÖ­[W__¯âââ2cÆŒuëÖmÚ´I&“uãmìoòhUƒ’]5qâN™Lyþü"}øÄÄDx=1™nÎΟïÞý?µS©”ÿ ÕjÌÌ̱Ó2i4n߾є·}¯Ž###Zwü&‚g&‘HvîÜ)—Ë»¥´_ý5##ƒJ¥R©TµZý믿öïßÿêÕ«/Ræõë×SSSBûöíËÉÉ¡R©$éêÕ«£GŽŠŠÂ°Ž~Ç>ùä“´´´^½žaeOíÒ§OŸ+W®é?ÿüó­[·šµH¥R¹\žžžŽaX÷ÞÆníø7ÁßçüñÁ^½lþØÂÂD¿•9vì˜~+žŽãMMJ@Nü'Êdõõr‘HN<Œ'‘H "‘HJ%†"‘ÐÇ/ îh,'ŽãÙÙ"…Û¶móâűçÎU×ÖŠ;­ÉªU'~û-º»®ë¤R©”J%ÑL”Ëå*•ÊĤ“ò†ÕÖÖZ[ÿkçÇÅb±¹¹y{G) ™LfffÖi¢N!!!Ë–-#^ËårOOÏŸ~úiøð§ƒ(E"‘™™™ü¯vfCCƒ¥¥%éß33[ZZŒÿµ—à´iÓæÌ™C¼NKK 2dHddd{…———ÇÅÅõë÷tz‘εG ( í³ùå—­ò\»vMç±:/ó•ÂÁkîÌ™{ÎÎK>ùä'™L©ßšÑ]¿uÝ«®®éîÝ’””»{ö\^¹òÄÌ™?²ÞÕuégŸýÜÅ(–·÷2›è®üçì¼Dï¿Æ¯^XXXXXXÇyòóóétúæÍ›¹\.“É\¶lÙÊ•+™L&…BY¸p!QÈ'Ÿ|BdV*•ÖÖÖIII8ŽÇÅÅ9::š™™ÙÚÚ^»vÈpúôi‡Ã`0ˆÐ¸|ùòòòr„P(LMMuww‰‰áñx %22²¥¥Eg"Žã›7o5jQ¦ökŸ7j×ìØ±³gÏ&^§§§÷éÓ‡Éd²Ù쯾ú Ã0Ç/\¸àééÉápx<Þ¢E‹ˆœ§N²¶¶¦Ñh¡¡¡K—.ÅqœÃáüôÓOÚ…0`Ĉí>|øp …Âb±¾ûî;'ÊÊÊ¢Óé2™Œ(!$$dçΚÒ¯_?‰D§Ó‰“º¹¹íر£ÕO§°°ÐÜܼ©©IsT{—Ù—ô÷Úñ¯·®®]{êÇÅÅM†aJ Ûq¹¦\®iÿþ­·‘J:ó·RV&àp"D"M×%ŽPG¿¥J¥ªãNWC&—Ëÿüó‹/NžßþEÀóø×•Z­Zuâë¯O­\9ñÛo߃^%&³Ý™rÚ„ÂI{óâN~Ka«¤ŽÄÅÅq¹ÜÐÐP„Ðüùóù|þÛo¿M£ÑrssCCCU*ÕåË—BIIIS§Ne08Ž777ïß¿¿¾¾>66–ø4!!ÍfGEEÑh´ÀÀÀ¶'Z»v­‘‘‘­­íüù󉨬3qìØ±11O)Ò~:tèÐøñãDztéÒÁƒûûû#„NŸ>­P(ˆ4‡Ã™>}úÉ“'1 ;räHDDD]]]nn.NÏÉɹ|ù2›Í^¾|¹¹¹ù|àëëÛÞméÓ§…Bi¯píœ:Oô¬?…êêê,-J¥Žñ+Öä•vükI¡PEEÅ_¸ðð¿ÿ5iÒ[ú®º%&Þ&“u Ñ(,ÓÍçççìïïâêÊsrâ®ð#ž©S©T„f˜:‰DR«Õ #,,,))iôèÑÉÉÉDǯ»»ûáÇ·mÛÛ§OŸo¾ùæ½÷Þ+..ÖˆîêÚz"ƒ¹¹9—ûdC{{{b¹ÎĬZµJó<þÎ;ƒŽÿì³Ï %Iß¾}59}||ÈdòéÓ§wïÞM&“ûõëGì?þøcÈ!šlƒnï\¹¹¹Ä…kçÔy¢VtÆlm|ðA«çñbqë±&Öä•Q¯±X:sæþüüšÄÄÏ ‚‰F ‡ÂqüÏ?sÂŒ¨öö–ÞÞ6ƒ»õïïàèÈåóYú®ÝkIçÐ-üŸ¥fΜ1uêT&“Œªªª:tè´iÓêêêöíÛ7oÞ¼qãÆq8œŒŒ Íá%%%|>_»À¦¦&©TJ ëKMM%¾èLì"??¿àààG!„ø|¾¥¥eii)1Þ­¶¶¶¹¹9##cõêÕiiiDcÝÍÍ !Äb±²³³5…ܽ{wäÈ‘m —ËåGŽY°`A{…kgÖy""³¦¾   ë—ÖžNkòÊ@_ýkF$j‰ˆøoE…0%åKðm566FGGK¥Òn)mÕªUÑÿغuë7º¥Ø†††õë×Ož<9888**êÒ¥K]<°¾¾>::ºÛgælß¾=º%K–¼`±8Žþ÷¿Øªª›7º~}åþý~òÉp??—ö|MM£ÎtÐE#FŒ`01113fÌ ¾ ¤§§Oš4I ðx¼ &cÆŒsçÎ"Ìß¹sçæÍ›­ÊÁ0lß¾}¡ÜÜÜ””â9´ÎÄÔÔÔ£GGi¿n‹Ëåϰßyç¡Pãxiié„ JJJ,,,<==BÉÉÉ………8އ††fee#ÿüóOíï%B¡°¢¢¢¼¼üÆÆ ãñx .l¯píjè<‘‹‹ •JMLLD?~¼í>¿4­mK½cÖä•ÿ:ill™>}oCƒäĉîîüÎ0<Ý;?õ9fâjO¥Õ)??? àØ±cAAA³fÍjnn7n\\\\WÊÔLÃ}¾Ëi†ajµZ­VÿùçŸÇWÿã‹%“I]é{‰ZâãoNž¼ËÏï›<£#“Éï¿ÿ~VVÖ‡~H¤Œ?ÞØØØÆÆÆßß?""bÆ L&3((hõêÕ~~~­Ê111¹xñ¢““Sÿþý‰y:Ïœ9óí·ßGi¿n‹ÇãýùçŸ2™ÌÅÅåàÁƒóæÍsrrrwwïÛ·oLLLhh¨———ƒƒƒ‹‹ËñãÇçλtéR;;» 6DFFÚÙÙ}üñÇÓ§O×”¶xñb{{{‡9sæ 0 %%…˜\§³píjè|xöìÙÊÊJ//¯ˆˆ4´µ‰Ì÷ãÇ•••¾¾¾h¼.*óݽ{wmmí¶mÛÂÃÃE§—Ee¾‰‰‰b VVVS§NE}ÝœñãÇgdd ¯Q¡mEEEjjê•+­~©) IDATWÞ½{—ššªªª…&áj^áóçÏ$I4ßеµuff¦XóDÛÊp‹‹‹===¯]»VVV–››sîÜ9@]]]|||aaáÛ·o333£££…]ÄÅÅ-Z´HKKëîÝ»îîîýÔ¦M›vçÎMMÍ¥K— Ÿ±Ú@€$&æìÜ9dÈNoï QQ©L&Av¦¹…´IAA¯¯ïš5kPe]û122ÒÑù/ÿ¬¬,£.ŠØBH¿ÆÕ÷uŠ‹éžžç \hè*UÕ¶SHö Z—ùúøøÄÆÆººº6—ù.X°Àßßýúõ@Dæ hÌ÷Î;&Lh^¸k×.WWWá"œèëæ•¸¨ÐÖÄÄDTh;räHaM±jjjÄfÐd2™ÂUöææ57#88XUUuÕóæÍ‹ŒŒtss=z=ØÛÛ§¥¥•——^½z•Ïç/Y²äëׯ¢?èígΜ9sæÌÉËË \´h™LöññY¼x1Fký@A%**ïàÁ=uD"žÃáx<ñ‹ýÿnO7¸¨ª’RRêj”¨••URRR'ܽ{w“vž>}Ú¼ñæ…~ôñ}šüü*OÏsòòÒ!!¿(*J8}7Òd¾M*qÛÚŠ­```P^^Îb±ÈäÿIö"”·Ó¼¼¼}âĉí9°²²ݤU4`Òàz|¥ººaîÜ‹x<6(è§æàÛ¤OÉ|[RâŠÚ)­Ø 4ÍÏÏoóæÍÁÁÁ¨À/--ÍÓÓÓÙÙyÖ¬Y-™×\žëææöéÓ§˜˜@uuõýû÷çÎ+öb:99ݾ};77×ÑÑqË–-ÚÚÚ[¶léDþί_¿¢Á€;vì7n\~~þíÛ·œœÚs¬ººôŽî>ì¿{wíâÅrrd àñÔ€ôeú :tPÓí‘ú®S[Ëœ<ùøèÑûŠŠºA¦Òk´Gû‘••@•c¨ßÊÊÊBß"qqqèk@zz:ú/Çspp ‰£G644üý÷ßÑòƒ‰D###}}}‡Í›7 µs/_¾¤P(S¦LÑÑÑ‘’’š?>Ç[ˆ ÈöíÛÍÍÍÑ6E_+)ý'a066^¹reqq1ú—Ë;v,FÓÓÓ›7oÞO?ý¤®®^TT´aÃ))©   –*‚'NHKKãp8yyy°lÙ2&“‰ HKæ ÛD¯^]]‚ ÇŽÃãñ†††rrr+W®är¹¢×Ayóæ‰j¢P^¿~½lÙ²qãÆ‰ýtZÑÎ988øøø$$$´þù64ÓαÙÜ'O>¯^ý§¾þf ZZÑMç vn`Зա}™ÒÎAßç`29³gŸ:tgVV¹¤méÝxö™¯X¡­¨”VlAx<Þ—/_’““E [1O¬<—N§'&&VVv8_B'”¾8¥¹RWǺs'iîÜ ZZÔÕ7@?@ãþÞ¿ߤÜÎÎnÉ’%b÷¨ݼU¸I+‚ ÷îÝ£ÑhªªªD"Ñ××UÈÊÊž9sFAA‹Å:::¶'ËEî-;(àrù?ýtãË—’ððÕ††ƒ1“ƒÁøöíÛéÓ§Ñõi!¨Ì·y}…Ö»ÚÚÚí,ìzzzÂ×è ¡ô¶¥ gaaÑR³ÍÍmS´°sЦN(};qH›ÈÈ<?==Éd2D˜´îÕ«Wnnn £°°PFFFTÃ`0dddšÈ7 Fff¦h¦ŠJý~ÂõxIR^^³`Á% Í“'çõw/D˜˜S À0$.«ªÚ(Y“ mÂçc¿—f³ql6ŽÍƳX8'üµÁ` ÿs‹ž=»ïâÅ6ò‘±Xx*Õ¥`kk8Øü@E²êPˆèã%FC{áÂË éúõeDâ@ø ´µµ=<åëãã |ÿ‚@Àùø8¿x±ÅÁÁƒÁ`±â×44°’’rÙì6öŠE¡PHAA?¹¹ ksA*3³\WwÓóç0± Ò=Àq¼¸r%.0ðÕ•+?Ž¥+i[: ƒÑxÿþ‡ˆˆ”·osde¥Ü݇mÞ<.¦ tt”nßþùéÓ/›6…TW74|óù‚ׯ³îßÿH ବ´­­õ¬­ FÒSQ‘m©MwáÂ"--… ž·~ÀbqgÎ<ÃåòcbÖIK%mN»àpx÷î}øã׉‰9úú´ l==­i´§d!OpõjÜ‘#ø|‚ ¾¾“6mšÜRe>_•õýãÇBÔågf–c±CC++-t”ob¢úòeæÒ¥WØlúÜæåËm**r/OŸ~àpl6€Á€ –LŸ>¼—NUxzz¡Ù` ƒ–7oÞœ¾¿röì_GŽ<øããNjٽOñâEÚ… Ï_¾ÌÔÔ¤.X`7w®ªªœ¤‚ô?þlkkÐ9Á'›ÍŽï“’réô ƒ ȬY£æÎ3r¤.…òOB´’ÆÉ“Onß~+П¨qãÌnÝZÙZë¤ÐÇ÷qqé ü¾{÷ô+ÆJÚ–áó÷ï<{öÙçÏÅãÆ™-[æ4a‚yKê)¤ëäçW=}úåòå¿¥¤ˆe8ÖÐP]¿··7ÒÔTøö­ÄßÿNJJZßÞÞ0,lDM†@úÐÇ÷8US¦ü6a‚ù™3 $m‹x¸\þÝ»ïΜy–“Sáâb±~ý#FèHÚ(Èàâû÷º ssRS ¸\¾0J_ 9òˆÉdFÒ‹‰Y'ic!~ôñ= “Éqs;I$âïÞ]K&‹É*YØ·o¿½páyeeÝŒ#|}'©HÚ(È`G4JÿíÛìÚZ–¢¢ '¨­m˜™©ÇÆúKÚF¤}|ϲqcðÇŸ?Þ¨£Ó·öMb29׮ş;Ëãñ/vX±b,\t‡ôA¸\þÇEII¹oßfÇÅe1™,€´4qõj{{£#tÆ^H}|r÷î»Õ«ƒ®^ýqòä¡’¶å?¸\~pðÛ'žÔ׳~úiìÊ•ãää¤$mÒ.nÜø{ûö»Ëå H$üÈ‘ºvvF¶¶†£FéJIõI*Òk@ßSääTLž||áB»Ý»gHÚ–@äÞ½ÿ÷ŠŠª½½ÇøùM†cwH¿ãÚµ—;w†¨TÒ¦Mnii¥‰‰¹ex<ÖÂBÓÚZÌý±cMá“+ ï!Ølž›Ûo$þî]ß>’çõåËÌýû£¾~-™={ÔæÍS´µ%mÒI6l¸’ “‰ü±ÜÑѤ¼¼611•ä}úT„fÝ3FßÉÉÄÉÉD4Ë2¨€>¾Gذáö£GŸŸ<ñë ®´°°zÿþèû÷?Lœh±}»»™™º¤-‚@ºÊ?|þ\ ‚ÅbòX¼Ø^øVEE]jjAbbn||ÆçÏE##UÔß;8+*R$g5ÒÛ@ßý Ëð×®-su"YK˜LÎùó±çÎŪ«S÷î1i’¥dí@ºsóí55L??W??׿uêêX©©qq¨¿]]%''¡¿—m†@zèã»t~ñb‡;§IÖ’§O¿ìÜQUUÿË/ã×®Ã!Œº:–¹ùvÁáp‹;80«•tË ìwïòãâ2„|]]%kký1c ÆŽ5í SnH·}|wÂbq§L9!++¾Z‚ËðÙÙß·l¹“íå5fÛ67¸… d ’={öYp8ÜâÅö¿þÚš›ÒØÈA³è'&æ¾}›ÃáðД;èßÔT­çm‡@zè㻓;"ÂÓÿúk³¤æ9Þ™39óÌÄDõèQ¯áÃaº:ÈgÛ¶°ÀÀW,‹Á >>c÷ì阒…Éä|úT”””‹ñÙlž0ÅÞ˜1úC‡jÁ­˜ ýèã»/Ò,øýܹ…3gŽ”ˆ‰‰9þþw «W­ïë;©ÄóC = ›Ísr:TTDÈÊ’Ø;wNÿùçqníýûüׯ³rRRò˜LŽªªœ­­!úgb¢ ý=¤}|÷PUUïârÔÉÉT"Iékk™ÇŽ=º~=~üx³C‡<àÊ"dP‘””;cÆ€ŽŽbQýâÅ%îîúØ,'øúµÕãÅÅeÔÔ4*)ÉŒ©‹†èÃñ=¤_}|7€ ÈÒ¥W¿|)þë¯ÍÛs³+ÄÆ~Û´)D ìØ1ÍÓÓº—{‡@úkÖEE½çó€#tÓÒJïÝ[gn®Ñ]íóx‚OŸŠÞ¼Ézõ*311·¡­ª*ïèhloohoo¬«Û·2UC B ïnÜxµsgø;«íì {³ßÚZæîÝ‘¡¡I^^Öû÷Ï‚‰½ ƒ–ïßëœÕ׳ƒC‡jÑémTPè~5<Ÿ/øò¥8>>#117!!»®Ž%Œ×sv6ék;S@9ÐÇw•ÌÌòÉ“Oüüó¸Í›§ôf¿ÿîçÌåòñ”x>|OOOÉéܹs§ç?>öر‡l6 //M"ìí ÏŸ_Ôs=‚çóãã3šÄë99™Œoõ÷‰}|—àrù3fœ˜˜u½ãÆdrºíZ¼»û°Ã‡=úBÞ. ckk«¥¥%iC }”¢¢¢„„„ýµárù&••%§¦Œ^½ÊºzuÙ”)½ôÌbq?~,DïQ=ž0ߎ££±º:µwÌ€@D>¾K8øêéÓMzzʽÓcRRîš5AœC‡æL›6¼w:m âåå%iC }”ÐÐPooïžþµ‰Ž~¿zu®®rNÎwÀøñf_¿–¼x±¥÷£d˜LNrò?úû„„l4ßš<ßÑѸ'V ±ÀÜg'%%ÿÒ¥‡{ôŽƒçñ§N=9uêé¸qfÇÏ…™m &L›6üôégFF*ùù•|¾ !![NNzß¾è'æö²%RRDÔ£ƒóí “ù!!‰¢þÞÙÙ¤÷Ÿ? ƒ èã; ‡Ãóó ¶³3Z°À¶º+.¦¯Y”šZ°{÷ŒåË hiƒñó›ìãsýÆeK–\e2¹&臄$Κ5u·AZú?/̧ŸqëVƒ±´„ûáBz8WßIöïºy3!6Ö¿ÂjbbRýý飯Ê?¿È¢Ûä@Ýœ«‡´NïÌÕqs;©¦&O¡ÂÓ&˜}ÿ^÷ø±__{2®®nHIÉC÷ÇC÷õ´Ôtr23FßÖÖPV–,i!8Žï ))ù—/Ç=êÙÓ¾¡½m[XxxʲeN;wN#‘àç´ƒÙ¸ÑuÉ’+OŸnºw/•Íæ}ûVZ^^óaúô¾¿‚¢¨H™4ÉÝ ²²²þÍ›,Ôߟ?‹Ãa,,4ÑÉü1c àÒià­ÓaÐYz{{£¹smz´£ôô²Ÿ~ºQ]ÝðçŸ+&L0ïѾú;555{öì9|ø°”T÷Ìv²ÙìS§N½y󦡡ÁÖÖÖÝÝ}̘1ÝÒrKTUUýöÛo)))C† ñ÷÷×ÕÕíÑ[¡²²òÀGŽ!‘H’²¡ÓLœhaf¦~ùòß©©¿š›o+-­™8ÑüèÑS§ZáñXÉÚ†Îg´^‹¥‰ :ïß>wNžN¿ÇbeõŽy>ˆ‡‡GWD§ÐÇw˜Ã‡ï—–2nÞü©G§þÂÂ’·n½cb¢ôÌMÛ&õõõ§NÚ»wo·øøïß¿Oœ8‘ÏçÿøãD"ñùóçG޹~ýúüùó»Þ¸X¾|ù2eÊ==½yóæq8œ»wïZZZ¾~ýÚÊʪ‡z‹¥¥åÙ³gÇÏf³SRRAoöÞ,_î´}{ø¶mîÓ¦ ‰I}þ< ‹Å†…%õôsy; igͪ*–¬¬ ‘(áGˆ¤øí·ßºÚéÉɹZZoßNè¹.X,îÎvîŒàpx=×Q7 iOM.—ÛØØˆ¾f±XõõõmÂçóKKK› ƒ!ü·¨¨@§Ó…%l6»¦¦¦ÉQb ›³lÙ²1cÆíDä—_~QWWçñÚø8èt:ŸÏoÓøæ…ÎÎÎÓ§O=ÖÙÙÙÅÅEø¯@ ÈËË5 …Ç㉞u+…bm+,,-QSS{ôèQóóêPïbA½Z{jv l6×ÊjW@ÀCA457¨«¯wv>lcó+ÇoóØ¥—¯¤¿ãáááááÑ•àÝÖX,®£ã¡ùó/ ‚ê";ûû„ GÍ̶?~ü©‡ºè ÚôñYYY$éèÑ£ÊÊÊRRR[¶lÙ¾}»””‡[³f ‚ >>>he.—«¦¦† Ⱦ}ûtttäää444âããÑ QQQJJJd2ÙÁÁÁÛÛ{ëÖ­BŸ`ddäççG£Ñp8œ··wcc£ØBAŽ=:a´Má몪* óøñcQûkkkCCCkkk¿~ýJ"‘X,ZîæævêÔ)ARRR,--¥¤¤¨TêÎ;Ñ;D¬ñÍ ?þ x÷îh<@_ß»wF£©ªª‰D___—••%++{æÌ,ëèèXSS#¶°%Û"##edd´´´6lƒ!‘Hׯ_ÏÉÉ‘——¯««kï­ß!½ïÛŽy0tèN‹›­®¾^]}½¦æ†‡?ö¦ Í>Ò! ïU¾gb²µ¸¸]—NðôéSÓm?ü—WÙC]ôíññ€E‹UTT¦M›V^^þäÉ@EEEhh¨¢¢"‡ÃAäñãÇrrrL&3++KAAÁ`p8œÿû¿ÿ³··G¤¤¤„L&Ÿ:uŠÃáÜ»wÇoÞ¼Yèã_¾| X½z5›Í...Ö××ß¿¿ØBA=z„º7Ñׯ_¿TVþó”––üK}}ý—/_B?iÒ¤'NÔÕÕ©««ïÞ½»¡¡!??___ÿÒ¥Kb[†ÅbÑsoNQQ‘””TLL ‚ ¨ñ§NB¯§——W}}}RR’ªªêŸþ)¶P¬mRRR·oßFOƒÁdgg#"ãx´©ºººö÷ÞúÒû¾­¬¬FGÇ/8ø-‚ ›ÕÕ×ëémöô<×›64úxH‡€>¾÷øö­DGÇïÚµ¸žh\ œ=ûLSsÃÚµAL¦øßú¾L;}|NN‚ ÕÕÕ€‡¢o„W¯^1™L999ÔÁ¬X±âÇD$33“H$;v¬¤¤D  žõĉjjj–œœšûøŠŠ ôÝcÇŽ3FlaK¦FFFb0t‹ ˆ …B¡P( æÚµkb}|PP’’N¯¯¯¯¯¯ß¾}»«««XãÅÞ¼ySZZšË劵' @OOOøïöíÛLJ^ϼ¼<´pÖ¬Y;vì[(Ö¶€€a›áááˆ8ßþÞ[ºž(ñm«Výáî~A„„t(¯®¾þë×â^6Cèã!¢ë>†r´ ñ÷¿3dˆæâÅÝÞx]kùòëÇŽ=Ú»wæéÓ ÈdB·wÑGPSSàñx€±±1ZˆÁ`ø|>™Löðð ãñx‘‘‘ .†††jjjZYY=xð——goo/lÓÀÀ I/òòòÊÊÿdÔÒÒª¬¬l©P,†††‚¼xñý7!!õŽ***Í+s¹\@NNN}}ýСCÍÌÌÌÌÌþøã #Öx±…¦¦¦oÞ¼m9##ãÀ‚äååÙØü)¦§§WZZоš$%%ÅápÄе-//ÏÜü?¥ÆìÙ³µµµÅ^ŽöÞ§˜;×&%%/3³ÜÆF_VöŸ`Ì«Wã%kÒ›@ß._¦¦æ=ê…ÃuóËÎþîî~òýû‚ððÕ>>ÎÝÛx_‹sõó¢,\¸ðîݻϞ=“’’7n ´´ÔÑÑ111±¼¼ÜÛÛûçŸf2™JJJß¿žŸŸß¤Áºº:&“‰¾NHH@ÄŠÅØØX^^þéÓ§¢…éééåååTLÁçóÑòììl€ŠŠŠ¢¢bAAAaaaaaaJJÊùóçÅ/¶ÐÌÌLVVõ÷BNž<™““ƒÁ`”••ÓÒÒ„å©©©:::M®'"’[¦I¡XÛ”••ѱ8ʹsçЉæt´÷>…ƒƒ±––BhhÀßÿŸm!CB’˜Ì¾øDÒkÔÔÔ¬_¿^øuè"GŽYÿ/›6mºtéRfffÛ¼}ûvDD`ÇŽÂÆÐu´ÖÉËËÛµkW‡Äf­\6›}ôèÑY³fýðûwïNLLl³}èãÛ¦¼¼öÈ‘‡«VM°´ÔìÞ–ïßÿ0yò ÊãÇ~£FéuoãýޱcÇ’Éd??¿  þ#%%eúôéÕÕÕ4mêÔ©¨”kâĉÉÉÉïÞ½$''7þÁ¥K—ÑÑÑ®®®-&$$ܾ}=JøšL&ŸÅb…‡‡{{{£ª<}}}< ¸sçNaa!à‡~ Óé7oÞD¤  `g°Cã IDATêÔ©ÁÁÁb[H¡PŽ=zþüùˆˆ.—Ëáp®_¿~õêÕõë×ÜÜÜ>}ú¨®®¾ÿþܹȾ.Ö¶3f|ûö-** yüøqtŠ…@ ÔÖÖŠÞÅÞ% ‹ñô´ MäñÞÞcÐg>Ÿùòß’6M’ BS6›Ý-­½{÷Çãñx>Ÿ4|øð¸¸¸®´ùòåË„„À¥K—ÒÒÒðx<ƒ‰‹‹sqqñõõm]Òéãã“””dbÒÔÅ¢ÄÒÒòùóçhù÷ïß­­­ÜÝÝ?}úääätëÖ­.œ™$èêrÁ àǯÚÛìÞer@ðÛo546lÛv§¿äZ´o=]~F½HVVú@ˆ‹û'ÊÁßßžžŽþËãñˆDâèÑ£ ÿýw´üàÁƒD"ÑÈÈH__ßÁÁ¡Éz<…B™2eŠŽŽŽ””Ôüùóy<žØBA¶oßnnn޶)úšÏç:tHZZšL&ËÈȨ««_ºtiõêÕ×®]CdË–-èðzòäÉ®®®'Nœ@äæÍ› E[[›@ ,]º”Íf‹5¾¥3û÷ï—’’"‰$IEE• ;v ÇÊÉÉ­\¹’ËåŠ^OAæÍ›·yóf±…bmCäôéÓAUUÕÌÌìîÝ»è!6l’’ ®Ç·¿÷ÖïI­CççWjhlxúô ‚ îî¿¡Kòºº›zNÓ:ºýBh:dÈÿû¿ÿþËb±tuu—.]*Z§¹nAÊÊÊæŸBCC‚ «V­Bï(%%¥ëׯ ßMLLÄb±ÁÁÁ­4njjÚ¤‚ØŽD½ ¢òÑöhh™L&“ÉDZÖ—Š¥×1w½À½{©ââÒ»±M6›»vm–ÖÆ+WþîÆf%H›>¾œ9sfüøñ¢%àÛ·oïß¿oò-­®®NKKãóù‹-u0/_¾”——G¤   ººº•Â6a³Ù>|ÈÏÏoþƒÁFð AƒÌEçboéŒa2™>|ÈÎÎnþNOLLFûw”æ¶!ÒØØ˜››Û¼£æÑ]ì‘h¬ÙìÙg||®#ž¬¡±uógÎ<“ˆ1í¹ýHhŠ4óñ‚¸ºº.Y²}-V·ùèÑ#SSS%%%¶aôæÝ»wÕÔÔ‚­­í´iÓÄúxAFŽ9vìØ–wvvÆáp²²²ÇÛ‘Xí«ð‚ˆÊG[×ГH¤k×®)**>|ø°¹¾TlG-]ÛV€>¾g©­e¾gýú[ÝØfYYÍÔ©'Ì̶wïsƒd麧Óé¯_¿666ŽŽŽîÐ-ùxQÄBz úø[·Þèëo®¯gÕÔ4 }¼–Ö†ÚZfïÓNú‰ÐA!C†¬[·îÇ>|HHH8v옴´tll,‚ bu›‚Œ9288X ËÊÊ¢ù›¥¤¤>Ì`0ÐSnÉÇûùù©««·Ò¸©©©p^ªyGbu1bÇñ­khÑC=z”Ý\_*¶£–®m+À¸úžåøñG\.o÷îéÝÕàׯ%îî'éôÆèh_ nvÙ)((ðõõ]³fÍ´iÓ:t ‘‘‘0 ++kmmÝ¤ŽØBÈ aòä¡<ÿ¯¿¾ÊÉI ¢f æó‘Ý»#$mZkìÛ·OYYý:¬ZµJEEeÒ¤I!##cÚ´i</666gÎ2™Œ HCCÃåË—+++ýýýÑwƒƒƒ©Tª¯¯/@pss³³³kÞÑÞ½{‰D¢††ÆªU«îÝ»×R¡«««ŸŸú®èkÀµkצL™2eÊ77·Í›7ÛØØ _·¨¨(‡ƒ •””æÍ›!nݺåååUQQ‘‘‘A"‘ÒÒÒbcc©TêÖ­[ååå/^ÜJ gKKK×Rã¢5ÅvÔþë_^^ŽŽéÑgΜinnnnn®««‹†ã>ìêꩪªêîîÐÐИ7o^ddd+-‹½à=ôñ-’ž^výúËmÛÜ(ÝÒà“'Ÿ§M;e`@{øpƒ±±j·´9`°²²JJJòõõíè»wï^³fh;MBâ[*„ (vvF÷︸XÿhSCB’²²¾·z¨$éBS”;vWVV&%%ýý÷ß7oÞ-hJ±XlTT”žžžÍÉ“'Q‡ýôéS‡ÿdÉ¢rÍ&ddd b­)¶£& ÚW±´GC;tèPЪ¾´yG½¶]úxñ ²cG¸……Ƽy¶ÝÒ``à«å˯Ϛ5òæÍ•òòÒÝÒ&innÞ=ûÚØÈqr2áp¸ÂÝçÖ®½)YÃZ¡_M›3zôèqãÆ¡3Õbu›ïÞ½ÛµkWLLLnnîÝ»w) @VVöÛ·oÂFÞ¿/¶q6›}ëÖ-[[Û–­,¶#±ÚW±´®¡E¬¾´¥Žºrm;ôñâ KNHÈ>tÈ‹íêær‚?þhûöðõë'xK|wKH'¨ªª:xðàÌ™3ÇçëëûìÙ³vXYY¹~ýúîÒ)A:Ç”)C9Þß§©‹Çãx¼ÄW>ÄÆ~kýؾIšŠEYY¹®®´ ÛÌÏÏWPP055DFF¢¹/§M›öõëW4rðÅ‹¨Á(t:½¸¸¸¨¨èõë×NNN4 ·Û¸¨b;«}E(m]C+ŠX}iK‰½¶=KWó*µµÌáÃwoÛv§ëMq8¼5k‚´µ7½îzk}ÐMqõ}“ÌÌL##£¡C‡9räÊ•+Ë–-Ãáp{÷îmå 4쨨¨ÈÑÑ±ŠšŒÄs¸Îšufõê?ùá‡KËúú›Ñà;këý|~ïéèÚs×_„¦ÍãêW¯^­§§‡*Êšë6¹\îØ±ci4º“òO?ý¤®®^TTtøða,«®®n``°`ÁaÌÐU¯\¹²¸ø¿TÄbE¡Â˜»–:j®}¹ÊG‘V5´Mô‡Íõ¥ˆ8‘mK×¶`\}°sg„…ÅŽêê¶Õ¨­SWÇš7і¿þúÚ-†õY¶·µµuqq†È"ÿþR åIH3ÁkÏmÒÚO‘¸ÿý÷ffÛy<þ–-¡£Fí31Ùª¡±^]}½†Æ†ÈÈ”^3£¯CŸš¶‚XÝfnn®ð†/..F þþýûÇÛt{m6ÞfGbµ¯BšÈG[ÑÐ69ª¹¾´IG¸¶0®¾ûIK+ |¹k×´.†Ú•—×ÌšuæÛ·’Èȵ&˜·}¤O’œœœ Œ°xyyÙÙÙ]¹råíÛ·ÆÆÆ›6mÒÒÒRTTœ;w.“É>|xyyùŒ3nܸ‘››K¥Rëëë÷ïßWUUµ±±¡R©ëÖ­ãóùÙÙÙrrrgÏž¥ÑhJJJNNNMÒÌAº‹ñãÍkjSS †שªª¯«c!º ‡ìÙs—ËåKؾŽÀ`0Þ¼ysúôé 6ˆ–c033³áÇ7‰>C§¬Å.ð£hkk+((´§°P(”Ñ£Gkii‰êééQ©Tôµ††j0F:t¨Øà¸5ÞfG¢oÍ¡R©h¨# ‘H´²²ï´t”µµµèÄC+u×µmÐÇÿ‚lÝ6l˜Ž·÷˜®´“–Vêæv’Ëåß»·~Èn΀ éM>þL"‘† Ö¤ÜÚÚ:33ÝLÅb$&&¤¦¦ªªªFEE-]ºT ÔÔÔŠ‹‹===¯]»VVV–››sîÜ9@]]]|||aaáÛ·o333£££%p’ƒ##¥/ÒÌÌÔÙl.‘ˆ£Ñd*+ëoÝJ´ Mû)¹¶ÐÇÿÑÑ©ÉɹÎnò Ü!^¾Ìœ9ó´žžrt´¯¦f/=¬AzˆššEEÅæ÷“ÉæÍnà588¸%íÑ£GÑሽ½}‡$¼1v¬éóçiÆÆª FWWYKK€Åb9zôAcc¿Ù¨ Mû)¹¶ÐÇÿ‹Å=x0ÆÛÛÆÊJü>›í!&&uÑ¢ßMoÞ\)'×4Òï000(//g±XMÊŸ>}jhhÚ-xí×›´ Æ3KM-`±¸jjò4š,ƒÑ ÔÖ2¯^íÒ6*Q ¥ï}üœ;÷ƒÑ(܃²s-üüóË—;_º´„D·}¤ÏckkK&“ÑüšB233óòòfÏž Ú-xí×›´ q8ìË—™ÆÆª86/¯R] B àø|äìÙØ†èZº¬¬,[[Û{{ûE‹544LžžÍæ9ò`î\ssõØÐÀ^²äJjjÁ­[?Óã{Aú&PLÜï°±1øü¹ ¨(C§7XXhÖÖ2ñx,…B¢PÈòòÒgÎü%iû1P‡Ò×ì>þÊ•¿«ªê7nü¡CGÕÔ4z{_ÈÈ( _3r¤nÙ@ºì¬rK àŠŠ§¯O«®n¨«cÒé _¾¿yÓâ–£Ö:”¾Æ öñ55çÎÅ®Z5A]Úþ£¾¯›=ûlEEÝÝ»¾ýC É2fŒ¾@€HK`0˜êêzccUSS5AddHŠŠUUÙ7^¶Ý¤ ¥O1¨ãêŒÇcW®×þC ª¼½/‰ø¨(_55ù3 ôJJ2::Juu¬º:¦¼¼TiiÍðá:¹¹ßI$<—Ë'“ œ‡?–•ÕÀ/xç€:”>ÅàÇTýñÇëM›¦ÈÊ’ÛyH~~Õœ9çää¤""ÖÀï?ÒO6LA:½A]]¾¼¼ÖÊJûË—cGPYY__Ï¡PH7o¾‘´™ý¨Cé# Þqü¡C÷´µçͳi»*€¢"º·÷*U:8øç.n;; ùí·ßîܹÓz>Ë`œL:¸(**’´ ÿae¥õäÉg:½QMM¾´”aooT[˲±1ˆÏàó1êêTiibPÐ_ßIBö9…´ Ô¡ô>ƒÔÇøPóáÚµeíüÓ=<ÎÉÊ’CC¾9-½… ˜ÚZbM ™Á ÕךšõÐÇ6´´´Z¹Iz™aôÙl^y9C]]¡ººÁÐÐРr¹|,Ãbq+*jù|äáÃOÓ§—´± ¨Cé}©?zôÁ°aÚ?ü`ÙžÊÅÅô9s ƒoæ#øüüªøøŒøøŒ/ÒêêXººJ3f˜89™8:Ãk‘,VV: ¨¨¨36V+*ªVS“—–&²Ù\Ššš\ZZ)€37W | }<¤¿3}|RRîóçi¡¡¿´gçèàÛOEE]BBv||Æ_}+-e((Pwíšîäd¢« WÔ }99²¼¼4ÞH¡êêX FOO97·jøpm))BZZ™LÄãq 9U::ðÖ…ôc£?r䣣I›5¡ƒo“ÆFNJJ^\\F||ƧOE8ÆÂBsöìQÎÎ&vvFxüà ê„ôeÔÕ©ùù•22äúz6ÀÀ€–›[1|¸ÎÝ»ïŒT23¿þ\¬¤D‰ˆHY¿¾cÉ3 >Å óñqqé¯_gED¬i³&tð-Áç ¾|)ŽÏˆ‹ËHHÈærùººJNN&«WO?Þ\FFL-Ò§ÐРfd”ÉÊ’êëYÚ“'_¼½Çœ<ùô—_ÆÓ™L޹¹Æ;ÉÐÇCú5ƒÎÇ;öÐÅÅÜÖÖ°õj0È®9Â%ö¿ÿN¯­eªªÊcpðàœI“,TU¡’ÒŸÐÕUäó8îßq¼Jnî‹!C´QS“kläØÌÌò²²šÔÔ‚áÃu$m/ÒI—òäó»w÷î­o½ZQ}Μ³rrRÐÁWVÖ¿y“ŸñüyZq1B!©»v­‹““‰••¶¤­ƒ@:‰ž PYYÏãñòl6LÆ+*R„D­ÿúu&&–Üí>¾=‘@J)ƒÈÇ#rìØ£)S†ŽÑÚ7¶¼¼ÖËëü`Á3™œää¦Kì3gŽtv6±µ5„ŠaÈ@[[PRRÍç#ô›N§7š˜¨egWXYi«¨È!¨ªªOÙ³gFwÝöööö!!!ÝÒd ­Ý¥ÑÔ òñ11©ß¾•œ>=¿•:ÕÕ sç^À`0·n ®D7¢Kìoßæp8<áû¸qfíOô (2 ¨ˆŽ ‚ ÿúøSSµoßJ­­õÿú뫉‰Z}=»¤„ž2wî˜néWKKËËË«[š‚@ÚÃ`ññ|¾àøñÇ3gŽ47×h©N]kÁ‚KõõìÈȵ**²½iž¤.±ÇÅeÔÔ4Òh²¶¶†Ìvq1ïÐ>=HÿBZš()©ðùˆ¢"P]Ý`b¢v÷îûU«Æ_¸ð|þ|ÛÔÔ:½aß¾¨©S‡ÊÉIIØh¤ã L H“¯°°äœœŠk×–µt‹Å]ºôJI #"b––BKÕUUõ¯_g¡ÙiŠŠèÒÒÄQ£ôÖ¬™àäd2t¨\)„ P_VÆ2™@&ª«ŒŒTjjŒT**rß¾•üø£ãõë/çÏ¿ò …5#~ÆÀôñII¹'N<ñõhooàrù'O>ñöch¨ÈÉ©00 ‰Öçrù+V\OO/ _ƒÖ`°Xܤ¤\t‰ýóç" ci©9c\b‡ RPoÕ£((PèôÆ1côõõ,MM*ºù¬ŽŽ’@€ääT,YråÏ?WHI%f4Òq¦/-­‰‹K‹K6LgãÆŠ‹é%% _߉€ÚZ–«k€¿ÿÔ+Æ¢•ù|ÁÚµA‰‰¹¡¡«LMÕ$jxw"ºÄž˜˜Ãfÿ·Ä>v¬™œ\b‡ ^Ðq< úŒ«¨H¡Ó´´±XLAAµ……fNN¹••VvöwÚèÑúÏž}™7ïÒøÀI{H?b`úøâb:€ãrù_¾-YrUIIÚÙÙDCCpçNbc#wÏž¨²²Ú;Ýþþwž>ýzóæOÆ 1˜p‰=>>ƒÁhTV–±³3úõ×Ù&˜khÀ%v€}<‹Áb1èú”¼¼TMM#€SU•/,¬2D3*ê½››UttêÔ©V|ŒŒ\;wîÅÙ³ÏÞ¾ý36(âu €éãKKkÀx<€No|þ<ÍÖöו+Ç]¹¹téyYYŒ ),,éúõåmfÅéËTW7¼z•‰Ù ª¤¤ˆ£Gë­^ —Ø!ñÉ,C¡X,.Z‚ÇãП mmÅ¢¢jã“'ŸŒ¡{úô3ƒóçc‰Šòõö¾àî~òÆ ssu‰žÒ.¦/)¡£©-PPRÂØ·ï®@ð_atô{))â©Só'L0—ˆ]Aìû´iÃMll ˆÄùÉB ݃‘’"JK“Øl¡Çòù€ªª\EE……†@€HK±X ‚ 4šì“'_Ö¬q¹ýO?ݘ>ýÔ™3 &O*Ñ“€@Úf`z‚‚‚*Aš— < Ÿ/`±8çÎÅ::š(+Ëô’qâÂþÛOzzÙ³g_š/±;;›ÈËKw¯ÈFF†D&„¿8Ü?>^YYöë×b%2™PVV£¯O{ÿ¾ÀÉÉ$>>cÍ*UúæÍ•;v„ûø\_»v¢Ÿßd¸ñ¤/30}|iiMóB,ƒèEáñééeS¦ ]¥¯Ok~T·STD߸ñöÁƒsŒUÛyHyymbbN||ÆÓ§_ÊËk•”dìí~ýuö¸qf[æôòòÒ<_ø› ôñ4šLEE‹ÑÕUÊÍ­9R÷Ý»üY³FnÛÆfóH$<€;zÔkØ0í]»"ß¼É>~ŒtôY çrù Fc“B,Àã±è’›(<¿¬¬vÚ´S!!¿XZjö¨m·o'ìÚÙØÈ‰‹KoÝÇ74°ß½ËG§â?~,D—Ø}|œá;Ò-((H——×òù‚úz¶Œ I8WO£ÉVVÖôõi¹¹66†‡ß ðf³y))y¨°`ݨQz+WNœxlïÞ™^^Ö’<¤ //¯m2^Ç`‹%‘p œæõÑçwss ô9 ç¬òó ~ñ" A‹yñ"mùrç&ux<ÁׯÿíÙ* ––šNN&;v¸Ã%v¤{QP 3%%t5,‹ñ((PjkY<ž@__ùÕ«¬_~_WÇb±¸zzʯ^e }<ÀÌLýáÇß߸ñvddÊÑ£^ÚÚŠ;DÐm”–2DÿÅ`0X,fùr§Ë—ÿnRƒÁ`0@GGiïÞ“&YöœI11©›6…²XôáAÀë×Y\.æ Õn/^¤ÕÕ±Ð%ö… 휜L¨T¸ÄôŠŠ4நˆnb¢†ÇcÑ{ ±‘­§§ôÆÜ\ƒ@À}úTäà`Ÿ¹yóÑF¤¥‰¿þ:kæÌ›6…ŒwdãÆ~þy<Wè!}…éã1 s‡:øk×–8ñ¸Éô6‡UP øûO™7Ϧ羓µµÌ­[ã¢ÞDÙLn@À£ÂÂê—/3*+ë•”dŒ÷ì™áäd‡H/  @ápø¶¸˜àñè37º]M]KOO¹®ŽÕÐÀ60 ed”9:‡„¼­«c5ߢiÔ(½'O6ýþû‹cÇEE½?~|îСZ½FHs /)©Áã±\.ƒ¨ƒ×Р~øP(¬@ `q8ÜêÕV¯v!“ =gIlì·uënÕÖ2›ù‰¸Ë—ÿ¶¶Ö_¹rœ““É!Z=ºR@š   Ífs(2êã™L޼¼øw__ÏVU•”•Õ˜šª¥§—ùøŒå󑤤\±R[·zµ‹‹‹Å¦M!îî'—/wòõçá gÎ)¡ãxt þÚµe“&Y^¹‡>¡8ëåe“˜¸ÛÏorÏ9øº:Ö¦M! þN§7p¹üæ8¾¹¹FHÈ/«W»XYiCô2ŠŠG@¥J£«òL&ÍEÿ¯g©©ÉÊÊjLLÔÒÓË”•etu•Þ¿Ïo¥M33õ¨(ß}ûfݹ“lgwðüùX6›×+gˆgŽãKKÇ]»¶lâD‹ššÆÈÈw\.ƒÁ¸ºݱÃ]WW©G ˆÏðõ½YUUþM¿#– ÄÎûA ^@Q‘"¥Ñq<‹Å•’"ÐàV.—/''%-M,/¯55U+(¨b29#Fè¼_Ðz³8véR//ëë×ãOž|rõjü† ?ôè‚ Ò ÿããß¼ysâÄ I™Ò]¤¦ª`0DcãòK—ö\ºŠ‹e8ªœ[O¯†N¿·iÓ½žëšÏÇäçË—–¶+Ÿ²{4Ö¯÷ ¤×ظq£¤­uu*@NN*+ë;€Éä ãxtαWQ‘++«qs& ÙÙ#Fèž8ñ¸=9¬¤¥‰«W»xxŒx¼}{X`à«;ÜÇ3ëñ³‚@þ—ÿy´,,, “”)Ý…@€33«TTd¡ÿÖÔLM«†­•#œë^ª«¥4Z£¼<[ZšAåÇŽ IDATK$ò±Ø¦ãx,C$â‰DH\\FO›ÔÓ Œ{Ò;„……¶]¯WPU•HIËËka29èâp¹€ššü÷ïµzzÊ.+«|Ä£1?¿ªý];æõüùÚüù—&M ¸s'©yФç3WçÎÞ·£»@$6ö›‹‹ú/:E/Ùd“No¨®n¤Ó\\¦¬\髯oF§7Ðé8ÜY†ï×÷ ¤×èS¹›Ðo‘ˆC³f ×ãEÇñTª4ƒÑˆÇcÕÕ©ÕS¦X¸÷ï ôô”Ûß‘¡¡Ê¥KK|}'^ºôbãÆà'/_î¼p¡]üB (m=ƒÁ<ø÷ë*YˆD¼ªª<:h`±²ìíU½¼&IÚ(d°ƒfÃD#fÊËk™LŽpÃYa¹¼¼TEE@[[¡¨¨šD››k¼Ÿ?kÖÈŽvgi©yúô?¿ÉW®Ä:tïôé§K–8,_î cï!= @ ƒ:½P_Ï”•ÕÖÔ0)4¼C7•hi)V†×þø±¨Óêê*ýú묄„]sçÚ\¾ü·µõþÍ›CSSÛˆãƒ@: ôñd0B§7JJjˆD|NN‚ JJ2.—þ”““b0˜mí|¼©©zzzY»VQ‘ݾÝ=)iÏÖ­S““s§Nýí‡_ÕÕ±ºØ2Òèã!È`]hÏË«¤Ñd *è8žÃáH¤Æñµµÿøø¢"º@€˜˜¨ÕÔ4–—×vÝYYòòåÎÏŸo‰Žöµ°ÐØ¿?zĈ=7üØWÂ!€>çãkjjÖ¯_Ïd2»«ÁªªªƒΜ9sܸq¾¾¾Ïž=kç•••ëׯg³ÙÝe ¤‡èÞ{ÆÏÏïâÅ‹¢%·oß é–Æ[âöíÛ€¬ÿ—Ý»w¿ÿ­Ðé»Þÿ-Á`4ÊÉI³Ù<*U ÝÇs8|ðï\½´4‘Éä´´9^ee½‰‰* 3³CùÐÐPL«X[œ:µ 7÷diéÃ?ÿ¼çä´°õúA‹§§gGïó>sW__êÔ©½{÷JIIu½µ¬¬¬)S¦HII-\¸PIIéõëד'OÞµkמ={Z:ÄÒÒòìÙ³ãÇg³Ù)))Ao ]**êbbR=úúK/wÝOéÞ{æôéÓ`Ĉ666hÉ“'Oðx¼··w×o‰—/_R(”Ù³g߸qCGGgäÈ‘€¼¼<ßÿ½swc¼ÿ{š&&S_ÏÂápee58Íe‹ŽãQO$âÑåyMPUUgn®¡¨HIO/st4éPwíLäñ<~u‡‡ ~ûí·NÕyÏãñ¸\.ú«Êf³y<…Biý@ðýûw555ÑBAjkkååå[:ŠÃá°X,99¹6 ›³hÑ"]]Ýû÷ï“H$ÀòåË]]]½½½]\\Å6U]]Íápšššñññ¢v¨¨¨4q$|>¿®®ŽJ¥¶nI›ÔÖ²>ü‘üêU–@H$É+º~qÏ,,,V®\™œœŒÇ‹ÿ‚TUU)**bþW ÖæÙ1 999,ö&Ï¥¥ÿ'²zÆŒëÖ­C_ÿþûï6lhr7¶t:MºèG÷ïS]]¯¨H!‘¯±‘C¥J£©èþõñhök<'@DI‰@“Wš˜¨ef–w´;//¯n>È £såÏÕggg“ÉäcÇŽ©««+))mݺuÇŽ òòòk×®xzz®X±­ÌãñÔÕÕÃÃÃû÷ï×××755ÕÔÔ|ùò%Z!::šF£©©©9::Î;wÛ¶mÂŽÞ¾}kll¼iÓ&---EEŹsç2™L±…€cÇŽ¹¸¸  _''''$$ ?p(^^^vvvW®\ÛÔðáÃËËËg̘qãÆÜÜ\*•Z__¸ÿ¾ªªª •J]·nŸÏÏÎΖ““;{ö,FSRRrrrª­í̇Ã{úôËš5AÆíòó ~ý:[ @þwº~O?ºgP~ýõ×ïß¿ŸeeåiÓ¦V­Z¥¢¢2iÒ$‘‘1mÚ4  ›3g™LF¤¡¡áòåË•••þþþè»ÁÁÁT*Õ××—@ ¸¹¹‰Íb½wï^"‘¨¡¡±jÕª{÷îµTèêêêç燾+|]SSÓ|BÀd2…«ŒbÛoBpp°ªªª»»;@CCcÞ¼y‘‘‘è[G¥P(£G¶··OKKkÏ¥+,¬ßµ+ÒÊj×Ì™gBB9CzË~qÏñððpqqY³fh¡@ ¸uë–——WEEEFF‰D~è­œ]TT‡ÃÙ°a‚ JJJóæÍ‹ˆˆˆ¥R©[·n•——_¼x±•••°—£GZYYYYYyzzÖ××_¹r¥ÍsÛEß¼ÿûtzƒ‚‚´ƒƒ1—Ëg29ZZŠh9‹ÅÉx€ÿæ¼SR’AÇñZZŠUU h,ÒÇéäz<º>Š®V£… †Ïç“Éd°°0—ÈÈH4ÒÄÈÈ(00ðĉþþþ–––û÷ïŸ5kV^^ž½½½°Mƒ&½ÈËË++ÿ“3RKK«²²²¥B±”——³X,2ùöv{úô©ƒƒCû›Êˈ_ôôþŸ½óŽ‹âøø\¿£ÃqÀÑ‘®ˆŠT[,XЈ5*vEDDEcQc$–h$ŠbAl‰Fý‰…"M¥Hïõè帺¿?–œçqà'Íù~øcïíÎÌÛ¹åÞÎÌ{oôÑ™d€ššz@¡PÐUÌ.¸r%NMmÉ¡Coô·C,<_SÓ¯ë û X,éÓ gF˜“'O:Tð]°XlTTÔÉ“'±Xìˆ#p¸>]Ü]^^^ssóðáÃ[XXBá,$$D°/–Ž·#¶‰þöü÷7êêZ••eµµ•ÕÕ*+Ñd55ÍxÿýÔ—^YY`m­|“µµ-**íÛC£Bt/#Clia( ä’’º>л§ ñ¥ÒÊvpéÒ¥¤¤$<Çãy<Þ¥K—¬¬¬ž={ö9u>þ<66–Ïçóx<÷ôéÓk×®ñþ£7#9‡ öäÉô8''ÇÞÞ>""ÂÑÑqÁ‚---®®®»ví’¤x‰>E„@çH‘.ÉÉÉ´µµ¡ñK€œœô@xöìz¼yófÀû÷ïÑ\.×ÉɉH$ÚØØþöÛo¨|ïÞ½D"ÑÈÈÈÀÀÀÉÉ)  ¤¤PWW‡F O™2EWW—B¡Ì›7ËåŠ"²mÛ6sss´Nác>Ÿøða§¨¨H –,YÂd2é¬*??? …réÒ%ôN›šš9xð 744TPPX¹r%‡ÃîAæÎÐuסö ""Bð‘ÅâüóÏ»µkÿ40ÐÔôÓÖÞH§o@ÿôô6}²¶þÀà{fðxü“'Oʧ¦¦âñøeË–!ÂápÆŒC£ÑôõõçλbÅ :þâÅ‹OÞ]xx¸¬¬¬ŽŽ@X´h‹ÅBdÿþýX,–N§2äûï¿GŸCCÃ_~ù¥³>ljjêìvÄ6ÑÏŸÿ>¤¢¢žNߟ‡ È“'tú†õëÿBOmÝzÍÃãzüèQ¾¡¹¹ A€€/¯S¨|üøýûïHØ–$ÿ#8Nkk+zÜÖÖÖÜÜüÉ"<¯¼¼\DÈçóëëëÿ# ‹Åjhh)%VØ ‹>¶µµééé-Z´Høšºº:'RÁ`ðù|aKK ‚ «W¯~„6lØ0f̘.tødGuT€ÏçJu†††ÆƒÐc{{ûo¿ýVðœ#ÿ}›111‰H§ —¤u.—+ü½t‡‡‡‡‡‡$W Óm/!Ç7nœ°„Ïçgdd$''‹|ǵµµ™™™<oÁ‚ÂßñóçÏ)**ª­­íBøI¸\nZZÚëׯ…¿ª.ªª««ãp8"•ÔÕÕÅÇÇ3 Kg¿qÍÍm‘‘ óæÖÑÙ¨­½QSsPÙx éWÏLäçç þ'KKK;þf‰¥¹¹9!!¡¸¸XXXUUõæÍÔ¸JH·#¶ d <ÿ½Ozz¾!;»A{÷ÞÐéÆ FO-_~~ÅŠ?Ðã‡Óèô ­­,Avî¼9}úT¾páï«W_”°- ߃I$RHHˆªª*…BÙ²e˶mÛ( ‡[»v-‚ è‹&‚ GCCÚµk—®®®‚‚‚¦¦¦ÀðDEEQ©T2™ìäääíí½uëV522ò÷÷§Ñh8ÎÛÛ»µµU¬AñãÇ£u ‹ØxA&Ožìããƒ'&&6ŒB¡())ýôÓOè?ȃLMM©T*FCC¹uë–††@°··wssëÂÆçåå)**655}²£:SàÎ;4M]]H$úúúr¹Üôôt‰$ø§˜6mÚÑ£GGŒÁ`H$ÒùóçÉÉÉ"_–ƒƒƒØN..ÐYlë999òòòÇWVVÆb±ÎÎΟ|»ê™—þ\}}}ý«W¯Ž;æç÷‘˃133³²²qôE'?Å.g¢èèè(++K"ì 7tèPkkk±ë"«RRRê˜üDIIÉÖÖ–J¥JØh·•%Ížm¾2%e÷ž=îß|£×·{Þ÷2ýð™é}}}AÊMMÍŽŽëbAýϵµµ……4møðá¾{’ÓñvÄ6Âóßû ›Î¡sõ  Èʪ@SÜ ëñèe¨=A'+Kjmm÷+ÔÒRª¨h®J+¾´¼¼üÍ›7oÞ¼‰‹‹ ‰‰ñññˆ ãâ‚N»íˆ ’ó“%V±ñŸ‚/^°Ùl'>:8¢O¥oHŠŠŠ|}}×®]‹ÆIŽ‘‘‘À— //okk+rXaÏbURDEEÖÇÇ):zËÛúZ—Þc <3ýiÝÎ ë–î‚îð†:Ï0ðx‹ŠJÔÔ4£‰ëL&›D£ùïddˆ¨ÏŠ£“.(¾ôܹsS¦L™2eÊ´iÓF…>NbÃ8Åv>ú9%V.â?»`pDŸJ?_½¥¥%:ÅÑ]vìØ!RÏÇ;VÞQØ3¤XÕ—@]½ÓD­ƒòÌô¤u;ƒ¬[ºKK ‹@À¡ÈæçW“ÉÚ… //vÇ3™ …ˆãp8A°«ŠŠ,:è—.(¾4006¼~ýzÔ¨Qááá+W®Æ)6è´‹ðÑÏé(± tÿ)#fpDŸ~E‚ÒÚÊ–‘i_¹ÈÏgÈÉ‘LMÕ³³+ccs1u&“-°ñX,æ¿P:@¥ÊÕ×· >J‹OÆ—ÞºuëÑ£G"ñ¥ñññ•••ÞÞÞ«V­b2™T*µªêC¾Ž¡hhÌ$z,_*"”›±cǦ¥¥¡HÑââââââÄÄÄS§N¡A§ÑÑÑùùù·nÝB÷q—— •¼EIBU…PUU%£ñŸè]°‘››+R¡ úZXˆFŸº»»‰;Mlë"7‚|±èShã!ÈWGk+[F†àñøEE5ŠŠ2D"aÄ߯åòµ´ÚX,.…B@±XŒà‡XEEŽÇã74´ö¦Îý3¾EUUµ©© t)*6èôsÂG»@¬bã? ðxüÕ«W×®]ì!Ñ§ÐÆC ¯ŽÖVjãKJê8žªª\Ssñb—GÒ::íym™òòíó´"ãxÀ—X’ï,;oÞ¼ôôôÅ‹£’)S¦ÈÈÈÐét[[[//¯}ûöQ(GGÇíÛ·;88{yyÙØØˆÔ#++ûÏ?ÿèééYYY988 Ž®b…ÑÑÑ?ÿü3ZJø¸#4íéÓ§mmmgÏž]µj•žžž‘‘ÑðáÃýýýÝÜÜÌÌÌttt ®]»¶bÅŠ€€--­}ûöy{{kii-]ºtîܹRé%± ØØØ»»»£1·®®® .D_˜–,YB£ÑÎ;‡Zh€‡‡‡Oxx8`×®]»víZºt©¬¬¬’’’¥¥¥µµõßÿΈí4áâ(b[—ÊÍJ„°“½ã úºº–¾V¡S̬¬Š˜˜¬k×NžüwûöË—ÿ1cÆÑúúþ«yg ŽgÒ;€~;·woô¤I¡‚<}šI§oX³æÒܹ§Ùl®…ÅOZZ~<^{<¤¿ÿoï_Ñãsçb,,~B+*èô qq¹’´õÆ—Š ãtÚƒðÑ+ 6þ³¾¾¾ººZ¤¸Høh?‰>íY윟;tîbàrçN‘žžÜðá*"ò¸¸*99‚¹¹šµêKÓØÈ®®n«¯g76²ØœÚÚ65µ¥›6ÅmØÐ>{†Á`ƒa³9tº²¢¢L×uö[ú3ùÚhmm_hÏË«VT”QU•-,d8ý¿ÿ~WVV&¬mh`*)µ'Åá°‚q¼’’ z¶×®¯¯ÏÈÈ8v욇X_Úñzeeå®#Eutt$öÔW\D¨¯¯/8ÖÔÔDh4F“J£ŸTÿ**ŠñnÇ¢ Ñ§µÕ±ÓDŠwÑz/ ÆÆ{{{÷¾RDFf„‚Âèúúûmm9Âr<^IUu‚°[[Ó˜Ì4.÷˦¢Äb) c(3‚ðÀ`0N^x‹9AДõx<ÎÙù³²=÷-ý™|mÖãóòª id2Å┕eI$©SÿîÛçhhh50h·@\.‡k‰8Û›[Ï}N|)ºÛÊ×_Ú; ”NûÈÆ{yyyyyõ•*ÒâßÓ,øJu;|x®—×GßÁw{¤ `+'gce¥»p¡ãôéVrr_pÀÇ36mºR]Ý"œ†¢#‚88vqA¿ep<3¯ Ïʪ06V'ñ,PVV?b„Nxx¬³©©F}}+:d°Ù<4ƒÁÉAJœ^Æ—ö7J§ BŸ;==U‚ ~~—ÿú+VøÔúõÕÕÐã7oŠ®¶mùò?bb²/º0~¼ù‹«VÅb1h& ±ðx|;;ƒ/¡é“)°ñ•&&d2MiW\\;z´‰……Ööí7uuÂ6ž+°ñboÚx¤g B¯££‚Á`ÐTüWÿý‚S 1(è;ÔœóùÇçpøÿüóÎÛûב#ƒöî½S\\+u}(b`àô[·Öéé©vfæ‰D¼«ëaoï_z“ÕÅž³äóAýꙕ• &&êè\=‚ eeuººÔÝ»g½x‘s÷njUU#Þ¾^Ëá@x BO"á), Š:räÁÙ™3GÚÙ ÞΕÃáªªÞØÛïñð8yíZúR/Ell ž<Ù¼uëT4k¦ð)kooèïï*'Gºpá…·÷¯ææ'¼ÿ¿ÿ½on–ÎvD@[—D"deULL4H$|[·ªª‘Åâjk+[[ëÏžm½cÇM‡G§·ûO±X\"ñÃ.´ñôsÙöôô¨‚L“‚„†ÞomeNG%ûöyLšt°c)Ô.66ïåËœgϲŽÿ^ºZ¸5k¾ýöÛ¡~~—ß¾-øèb0`òd‹Å‹W¬(,¬‰ÏKHÈ¿{÷Í/¿<Äb1††jvv¶¶ŽŽF‚ìä3@°XLVV%…BÔÒRFçêsrª††j€íÛgŒ} ¡!Çó:Œãáû7¤¿38m¼‘‘Zjj1×îÁŽ à×_óxüíÛÝ0Œ¹9}áBç?ÿ|!ìâ.‹C†¨íÛ7û éffF¿sgÃÙ³1û÷ßáó‡Çåòíí?$AÔÓ£êéQ==mÕÕM))EññùññyñO]]ÁÎnˆ­­ÁðáÚnz@:’]ib¢ŽÅbH$›ÍÍʪPP ÐhòM~áBÇãÇ%'êéQ--íisPðx‡#æ¤3<==¥®?ä«"66ÖÞÞ¾»¥§×Ñ¡âpXðùÈo¿=mnn;pÀ‹ÅlÞìzãFbcc«ˆ§‹‘‘!]¼¸\ÜêK€ÃaW¬ãêj±qcÄË—ÙrrdSSºØ+i4ù‰‡Mœ8 ÐÚÊ~÷®$!!?>>?4ô~cc›ªªÜÈ‘zèäH=tƒ "!YY&& xÿ¾ý#І†"‰„ß¾ý¦““1&ߨØ&ü³€Á`ÈQWGGÇÃÃCÚºC¾:ìííÅî"Ø5ƒÓÆëéQ;D àó‘¿þŠmia=:OQQæ§Ÿ¦oÙrM؃X,&<|…¾¾j/(©«KŒ\òøq†$iyddˆvvCì솬Y¸\~zzi||~BBþéÓO÷î½##C6LËÎnˆÁ¨QCÐM3!HdeU:8Èdø/ŽNp¶¢¢ÁÀ€ÖÜÜæçwùâÅåÍÍm胑t‡k×®I[wD"§××§ŠÝŠÏçGE%ñùüãÇçÏkñâ‹ôôr¡)} ‚ ©©ÅÖÖú½¦ª››Õôé#º[ ÇZZêXZê,[6-á?|˜vòä¿8V°„ïäd¬©)&éò•ÃfsËÊêMLÔÁ6>7·jÒ$ Á ÚÚÊSfÎddCƒw ~Îà´ñ::T±r ‹ !!ÿíÛ’‘#uCB¼§N=‚žÂb16L¤Pˆ;vÜLJ* õFÿí{Ï_S^¯ªjJMýh _Ojkk€®â›˜¨Ã%|„@ÀWW7#"dpÚx55y"ÿqgÅäR IDAT”9‹TªÜºu.tDýcGŒÐñð°¹y3 AÀÔ©Ãýý]1Œ¹¹æêÕzzž:sf± aÎBMíÃ~K +)©0>>/>>ÇŽ›mmMÞÊJ.áC¾rddˆUU$ÝbŽD"ž«//o@gò=®¯o•“#ÙØØØè£öþ‹æô…@ú ±¨¨ÆÈHMK…NÚ‰8áØÔÊÊ ö·ü;gþñÇó+Wâ-rFÝìÀÀq<¤ÿ38m<ÀÐP­ €Åb•”düü&^¼ø2/¯ZÄÀh4ùà`/á™ù!ChwîlX»ö’»û‰à`Ooo»ÞÕý‹@ àlm lm V¯Ïç#YYè|þÕ« ¡¡p8¬‰‰†µµ¾~ïxB }…Bhh`º¸´ïF&㚚ʂL”55ÍÍÍ,ÁFò,‡Ç㫨ÈÌ™óë­[ëÔÕ¹\0h?!ƒ†AûŒê뫪¨ÈnØ0iÁG ¯¥¥¼téùåËÇX[‹ŽËÝÝ­;——'Ÿ;·äÀ{~~— öíóÀãON@,cfF73£/\èþ[Âó¦8>>ÿÊ•8‹« @1B×ή}¿×\ ÞAF†ØÔÔ&˜™Gçêuu?ìÏ–›[þˇ`0šxnß~sΜÓ7n¬e±8è›ÒŸ´ÏèâÅÎÛ¶MC·ˆ¸º·±Ñß·/úúõµÖ€Ãa§››Ó7mŠ(*ªýõ×Êʲ_Lß¾Dx _•÷æMqDDü¡CãñØ!CÚ½ôG¢«+ÞŸ@Hx‹#ˆ†Ggø45?LÔçæVÉÈIîP?díòå•3g›?ÿ·–6úfôg­ŽrAÙ¹s¦›ÛÑÇ3Æ7—¼wwk##µeËÎOž|è̙Ŗ–:RU³ß!ˆÊC?VV6ÄÇç L>šhÏÒR5ùVVºÂÙ=!Ÿ @çMM, ”¶›[=dM„Â`4¨T92™ñƒ‡Ç©ššfîéï žùçOòÍ7z“'[ìÝ-œÿN,-uþþÛßÈH}ÆŒcá᯾zýuuE77«Ÿž囑±ïÖ­ukÖ|K&~ýõÉwß77œ9óØöí7££S@ ýŸ¶6.øoj@FF@Øá.'§J0Q`0šäåÉ袕-*Ê—Ï燇ÇþçØ ôS¾®AX`àôqã‚##_w×NYY6<|Å©S·l¹—âõ.Q í 'Þyó¦$!!ÿüù>Î¥oa¡-Iò>¤OhldÚÚ8h8IZZ)ƒ‘•ýŽ>7·ê»ïF >VU5©ª~Hr§­­¬¤$C àfÍ:þ×_«ÌÍÅ碆@úœ¯Ëƪ͙3*8øÞŒV‚¥z Á`0kÖ|kb¢±n]øû÷ÇΜY,ð¹ý:N¼ÓÜÌJN.DM~hèƒÆF¦œÉÜ\Í­kgg ¨(Ó×úB ¨®n0MB6’cr¹ü¢¢áq|iiÈ–l6oýúIÑÑ)'ÃÂ:;›¤ÿñÍÕ£øû»662ÏŸÞ³â'»ßË幺~öì½tu¸ÈÉ‘\\Lüý]/\X––¶çÉ“-;vÌÔÓ£>|˜æãsÆÂbûرÁ¾¾á—.½zÿ¾FCúœ’’:ðß*; -­ €y늊j8ž°/+«×ÒúšÏGš›ÛÔÔä/_^9z´É¼ya§O?í5å!ÉùºÆñuu…+Æ;öhîÜQ=ó“70 Ý¾½Þß?âûïÛ°a¢Ÿßd8)- ‡55Õ05Õ˜?ß|˜·}û ˜ésX,nyy=‡-)©³±1`±¸yyU8F0ŽÏÍ­Â`0üvKKë„Ãn››Ûø|DQ‘B¡ýuá¥K¯¶m‹LM-:|xNw'!/ÊWgãkÖŒuüø£;fö¬YYÒéÓ ûí{öÜNO/;rd.Üç­3``¤¿‘]ÉãñµµUòòª™™å\.ŸL&ÙøjuuáÌååõÂ{;540‚ÿúùótuUV­º8sæ±3gÃÇÒøm¼¬,iýú‰»vEùøÒRö„+ÆXZj¯^ýç¤I‡ÂÂ|FŒäauŸ ̃ôÞ¿/'pÆÆjùù ÀÛ·%rr$á*ss« ? âZ››YÂëñ¨Ëž¢â‡7ûÑ£Mïß߸té¹ }7ož}oÜ ò)¾ºõx” µ´”zð™õØÛ>z`d¤ææöËÉ“ÿ•ænÑ10õØ?u æA¾ ÙÙ•††j††jÕ€ää¢#t°X ŸßU›ž^jn®)¸¾´´|œ!Gd¢§G½ãÊ•c·l¹6o^XEEC/Ü Ò5_©'p[·N½q#ñÍ›âϬJEEöÏ?—ïØ13$äþ’%çZ¥¢á׆Œ ñàÁ-k×N¸xqyzúÞªªóååÑOŸÞ<}:råÊ?ŒŒ¼0¾ÃÓÓ³¯iòþ}…‰‰º-/HI)1Bóß>r<?3³bØ0-ÁõyyÕX,F8ŽÇw\¡#pþþ®·n­+,¬;6øúõ×½p;H|½s¡nnVçÏ?ÿé§›QQë0Ÿ·¥:ƒY¶l´……Ö?ü9qb诿útÌŠ‘{{{???aK ‡Å²VQYÔAÀ‘#GúZ)“•UéînmhH««k)-­Íήôó›|éÒ+tº>'§ŠÉd[X|°ñ…… MM%á­˜ ±³­™­­õÿý7`ïÞ;¾¾]½š°g»ð–µHoòõÚx ³{÷¬)SGG§Î˜aõùÚÛ>z´É×7|öì?ýä†N;Cº…¶¶¶——W_kùˆk×®õµ Ò„ÅâÕ˜˜¨[Zê`0˜Û·S¹\¾••.ÛîWŸ–VJ à©ì5";1VW7Ñhò¢U A&~þy–«ëðíÛoLœºråX_ß ²²pûfHoó•ÎÕ£ ®íáa³{w“É–J…TªÜ¥K+\wíŠZ²ä:¡@ú99•<ßÔTCIIFWW%&&‹J•ÓÖVÆ`Ú÷ƒOK+51Ñ£Twׯ£89ýóϦíÛÝ.\xáâ²ÿæÍ$è²ée¾j tkjj {*­ 1Ìš5ß^¹òCRR«ëáÔÔÏ]ï‡@ R$+«’@À¡±ï#Fèfd”© Œãß½+ž¨äç3Dl|UU£$6€Çc—.ûÓ´i#|}Ã'L8-=¤×øÚm<&¿fÍ·Çÿ[VV/ÅjœŒ> ÐեΘqôäÉ…Ãr H’]©¯¯ŠÓ­¬tŒæ#Úm¼`/ìp×ÖÆ©¨h±ñ F“ššD6EIIæçŸgýý·¿žžêªU§N=òèQºtîé’¯w=^ÀªUc¯\‰ ¾wôè<)VK£É_¾¼òìÙ˜={¢Ÿ>Í+«‚ÏGLM5„+©ªj²·7ìnÓC‡jž;·äݻ҃ïûøœÑÓ“[·n³dBÄàè設­ýùõ@ˆDü¶mÓW®¼°p¡“týáQ{ggã5kþ7.88ØkæÌ‘Ÿ.é;vîܹÿ~ E:‰ /_¾Y__?nܸ)S¦X[[KØtMMÍéÓ§êëë---g̘1aÂIZd0{öì &‘ ‡—òóÎÎÆè1:ÁÖÔÄ`0X>y÷®ƒÁ ú!8>#£œHÄ v¡E©®þhºnaa¡uá²ÔÔb'§YóæýÜÃÛ€ v"""¤â€üµÏÕ£LŸ>bÌÓmÛ"»»µ¼$˜™ÑïÞõóô´ûᇋ¾¾á--,©7‘ÍÍÍGe±¤óíÝ»wýúõººº‹-ª¯¯wttG#tZZ#""¤Ÿóh‰m|;»v}—™Yû%*GiΞ]òï¿®®‡ß¾-ù­|Up¹\&³=lÅbµ´´|²ŸÏ¯¨¨"ÒÐÐU>26›ÝØØ(‰°#G=pàÀ‘#G,XxìØ±®õAY°`žž^BBÂæÍ›—.]zöìÙ¿þú+((èùóû%ŠèP[[Ëf³ZZZ111‚yA }%€ÇãÕ×KÓe@P]ÝÔØØ&°ñ))ÅC†¨=}šÉãñQŸ;‘Åx@ff¹™ÙGÛוÕ!¢­ýÑV³HÿÚøvŒÕ—.u9pànmí§­EϘ2eøÓ§[tuU¦M;rèÐèˆ×rssÉdòÁƒét:•Jݺuk`` ²²²¢¢âºuëžžžË—/G/ær¹t:ýúõë€Ý»w˜ššjii ,åíÛ·i4š†††³³óœ9s~üñGACqqqÆÆÆ›6mÒÖÖVQQ™3g“É+(¯_¿Ž žl÷òòrpp8sæŒX¬¬¬*++gΜùÇäçç+))577îÞ½«®®>jÔ(%%¥õë×óx¼ÜÜ\…'NÐh4*•êââ"ÉËÊ !?¿0dHûÄ{jj‘‹‹q}}kjj1‡àp˜¤¤BÔÍ^@F†¨G÷¥…62 €6þ7º’H„î~¹&h4ù?ÿ\±yóÔcÇÍ›VY 3Zw‹õöíÛŒŒŒÓ§O¿}û¶  àþýû'Nœ`0^^^7nÜàp8€Ç·¶¶N›6-77÷—_~yóæ ƒÁðõõݲe  ¼¼ÜÛÛ{ÇŽ?þøãõë×y<ž .—›““ÓÖÖVRRRTT*V°´´œ:u*ZPpŒÁ`6nÜxàÀo¾ùfóæÍ·oß&‘HNNN±úx÷î‰D1b„ÈÛÚÚfgg‹Õ!%%E]]=**jÑ¢E|>™(--õôô} V ***ó+3™LÁ*»XÅD¸r劺ºúôéÓšššsçνyó&z*$$DVVÖÆÆÆÑÑ133³{½?ÉË«60PÅb1€ää",3|¸ö¸qf¦q¹üÒÒzT"¸>#£Ðq¯­­ ´ñáînmoo¸mÛõ/=‘ne¥ûï¿óç;¬_ÿׂ¿Á}·ÐÐÐàñx€±q»4ƒáñxd2ÙÃÃ#22’ËåÞ¼ysþüù##£ .\½zUKKËÒÒòÞ½{€‚‚GGGAC† iEQQQUµ}RW[[›Á`t& ‹Åª©©111Ù±cÇ“'OÊËË¿ÿþû5kÖ”——‹ÕGX“ÊÊʶ¶6‘ >|hhh(¹£F|Ô××///GÕÔÔÐ …‚®â%× <äSRŠŒŒÔååÉ3fŒLM-æry%%µ¦¦òòdÁõ™™åòòdá㥥uƒc¢¾¡¡aÆ }5zFppð†ÿØ´iSXX˜ðBUÿ§¦¦fïÞ½ß}÷ÝØ±c}}}=z$aAƒ±aÃi9êJhãEùùçYé饗/ç;aÈdB`àô›7×åæVÃ}·ÀbÅ<·gÔùóçߺuëÑ£G eìØ±€òòrggçøøøÊÊJooïU«V1™L*•ZUU%(^X(:yÓÔÔ$øù‹E_Ä ÅòòåK:ÞÔÔ„~TQQùé§Ÿø|~II‰X}íííÉdò… „kËÎÎ.((pww—\UUUá1zJJŠ®nûJ³ ¥ëÁÛÿ))ù`žSRŠÑ¥wGG#MM%‹[\\'ŸÈÊʺ}ûöäÉ“;ÆÆÆ^¾|-%8¶±±QUUݲe êÀãñNž<)//oaa!V4Íßß? àÊ•+èïoff¦§§çèÑ£gÍšÕ™AÄ{nÚ´ioß¾ŽŽÔÖÖÞ½{wΜ9RîëFII-º <‚ oÞ 2ÜÍšeÍáðKJê¾ùæ#Ÿ™Yaf¦!RIQQð>³½À€ˆ"L›6-44444ôÈ‘#=¢ÑhçÏŸ¾ ¾¾^äiGßz;ê)y0ˆX¡$ BQÀàŽdé›è¿þMK ËÎn÷ºu—z³Ñ§O3­­ƒ,-·ß¿ÿ¦7Ûí?xxxxxxt}MNN ­­ Aôÿ-''=E ž={†oÞ¼ðþý{ô#—Ëurr"‰666†††¿ýö*ß»w/‘H422200prr @êêêž?.++;eÊ]]] …2oÞ<.—+Vˆ ȶmÛÌÍÍÑ:…_½zeffF"‘Œ•••njә>‚¦áóù‡–‘‘ÁápŠŠŠaÉ’%L&AÎtðóó£P(—.]B»¨©© AƒâñxCCC…•+Wr8áDdîܹŸÿ½ Øl®¶öÆÛ·“ÉÍ­¢Ó7$%¢§Þ¿/§Ó7ÐéÒÓË„‹ xöì3a “ÉÖÒò»{7õóõtŸ““C"‘BBBTUU)Ê–-[¶mÛF¡Pp8ÜÚµkñððX¶lz1‡ÃÑÐЈŒŒDd×®]ººº šššè#‡ HTT•J%“ÉNNNÞÞÞ[·n>žÁ`H¢­X/,dìúµk ººþ,V{wñù|:}ƒ–ÖF.—'¸¾¢¢žNßðüy¶p%etú†ŒŒ^z†$6°`Á‚êêjtíÆÍÍ­²²òŸþTWW_½zUEE…Íf#ò÷ß+((0™Ìœœeeåúúz6›}àÀGGGAÊÊÊÈdòÑ£GÙlö;wðx¼È-`Íš5,«´´ÔÀÀ`÷îÝb…‚¬¡¡!¨ÙÅÅ¥£¯®®FÏ;»ÒØX½µþX,vÞ¼yééé‹/F%S¦L‘‘‘¡Óé¶¶¶^^^ûöí£P(ŽŽŽÛ·owpp066öòò²±±©GVVöŸþÑÓÓ³²²rppðóóëLýóÏí[â w„F£=}ú´­­ÍÀÀàìÙ³«V­ÒÓÓ322>|¸¿¿¿••Õ/¿üâéé©¡¡±mÛ¶#GŽàñx›àà`www4ÚÅÕÕuáÂ…’÷†ä <<<|||ÐÕ„]»víÚµkéÒ¥²²²JJJ–––ÖÖÖÿý7šAl?GùLå¿RYÕÜìÜyÓÔtkyy}êÀáð~ÿý††›Ç~ý:¿5ùr ß®AÆ ù^<~¼¹H eŠ**ýeǹω"QQùª¯ßF‘ôz?@/ŽŽFóæÙoÛéäd„.éõ ÆÓÓöÛo‡ÝZ¶ì¼‹‹ÉîÝß™˜ˆ¦ÛˆˆÝù ÒçØÛÛÞìcá IDAT‚¯†Çã××·R©òoÞs¹|+«wqqy4š|uuÐéJ :……=éøo•‘Q>t¨f¯êÝ%hI îØ±C¤žþEÒèým¼¤ìØ1ãñ㌠ ¨ãÇ¿ïk]€ŠŠì±cß/^ì²cÇ Ι3jëÖiýgxÑ36nÜØ×*@-uu­<_UU.9¹HMM^Këäk\\®¥¥Î¿ÿ¦£60yò°°°'ïÞ•ŠT’ž^Öqpôgàz¼¤ÈË“ƒƒ=¯_ýÏ?ïúZ—vFŽÔŠZèМ¿ÿ~çì¼ïÌ™gh*"BCC+@YY&5µH82žÏG † Óàñ8T˜•UI$âoÜx]\\+¸’ÃáåäTöŸÅxD ï& ýî»o¶m»ÞüݰXŒ§§íË—K—ºìÙ=~|ÈÓ§™Ÿ.|e´¶²22¤””bá‰úŒŒ²ÆÆ6ts9©}^3%¥ÈÚZOOOuóæ«È¹1rrª8ž¹y?š«‡@> ´ñÝãçŸg±XÜ  ¨¾Vä#deIþþ®OžlÖ×W7/ÌÇçLQQM_+ô#PßÖÆ)*ªÎ~—§¨(£®® ‘ڽ蓒 GŽÔ;|xÎóçÙW®Ä¡ÂŒŒ2gdÔ«Iî ÏÚøîA¥Ê…†z_¾{ÿþÛ¾ÖEÚ… Ë""~(*ª;6xïÞ;--¬¾V é 6>;»ƒÁŒñ!{]\\ž›ÍÉx@mmKvvå¨QC¾ùFoÅŠ1AAQeeõ€ŒŒrccu×Gwôhã»ÍäɳgÛlÙr•Áè»Å¸¸˜üóϦM›\/^|1f̈ˆx>溇|í0™l@ff™žUYùƒwj||¾‹ÅÉD@BB>ÀÖÖ°eËT Å-[®22ʤîTïíí@: Åg úÕ÷„½{g¼eËÕ³g—ôµ.b p«W÷ô´=xð~@@DXØÓœ6qâ°¾Ö é3Z[Ù$>5õ£Åø‚FeeèQCÊÊ0 ‘ˆÄÅåš™i()ɈDüáÃs¾ûîøµk ééeË––¢JR¬ 2ÈÞ'ðs€6¾'((™;gÎéÛ·“gÌÙ×ꈇF“ ñZ¹rlHÈýE‹Î~ón` ›½½a_ëô­­l …˜šZ¼fÍ·a\\™L°´ÔÉÏg‰8tü—gg÷ac1kkýE‹œúéFSS›tÇñ^^^R¬  œ«ï!..& 8lÞ|­¼¼¾¯ué CCµ°0Ÿèèõ$ÁÝýÄ¢EgÓÒD£~!A“É&‘ð F³ðb|llîÈ‘ºD"žÅâ¢wL&ûÝ»ÒQ£>Ú#£¬¯•‚@zÏåò1ŒðX<..oÔ(C‹ÅAî 9žð8@$â§NŽÅbBBî÷²ÚÈgm|Ï‘‘!92'&&K]ÓÏ?ÞüÁƒW®¬*-­›0!ÔÇçLÇL^È ‡Ã²Ù\ *©®n*(` CvÁ8>..O[[YSSI¤xNN•ÁíÛ)/¾ìeÍ!ÏÚøÏÂÎnȪUãv츕Ÿ_Ý׺HŠ‹‹É½{~gÎ,.)©su=´lÙù¤¤Â¾V ù²`±‡7lØGƒx;r¤ ­ƒ&À‰oÙ‹œ\4iÒ° &nß~u¼‡@ÐÆ.[¶L51Qÿá‡?9^_ë") fÊ”ámúí·EååõÓ§ÿ2{ö‰Ç3úÿ¢Ò3p8,›Í:TK ‰‹Ë:TSA þÇs¹üääB‘Åx@ii]EEÃÈ‘z~~“œŒW¯þ³²²±Wµ‡@z ´ñŸ €;yrA^^ÕÁƒl­ƒÁLjy÷®ß­[ëääÈ ü>aÂÁk×ÐË "!Ïç[XÛø\9G×ãß½+infÙÙˆ”MJ*Äá°––ÚX,æäÉù$~þüßúOBk¤  —úúªAAß:õøùó¬¾Ö¥'ØÙ ¹paÙÇ›ÌÌèþþWœœöž=û¬¹æÈƒ ªªèÞ3€¦¦¶ŒŒro:Ž‹ËSR’12R)›œ\hfF—•%”•e¯^]]WײxñY‹Û‹wôhã¥Ã¼yönnV¾¾ÕÖ¶ôµ.=dèPÍ“'¼x8q¢Å¾}w­­ƒoäæVõµ^ˆ(/o£¥ÕîL÷úuÇG“ÙÚÚ8d2!..oÔ¨!X¬h–±ÄÄBkk=ÁGMM¥K—V¤¥•­Zuîôéç@/5‚ƒ=ñxìúõázU[GGeï^÷””]Û·Ïxþ<ËÅeÿ̙Ǣ£S¸\ø[ÀTV6b±@%4..wÈšººú‘Å≸W¯rE r8¼wïJQ×<ffôsç–<}šx½”‡@z ´ñRCArüøü§Oßÿù竾Öås‘—'ÏŸïðäÉ–ˆˆ44W¯þÓÖv÷¡Cî,ä+§ºº‰ÏG³ë‚Èx‹ÃdrZœDm|zz“Éþæ=¹ƒƒáñãó/]zuôèÃ/ª9ò9@/MFâë;!(èVVVE_ë"°XŒ‹‹IX˜Ï³g[ÝÜFüþûÿ¬­ƒÖ­ ñ"g@ÏU@¾BÊËõõ-6››’R$ì?ÏbqëêZTUåLM5D &%*(P Ål);}úˆ={f‡„Ü?~üÑ—Ôé9ÐÆK?¿ÉÚ+W^@÷²Ðvïž•˜ôóÏîyyUžž'œö=ú°¢¢¡¯Uƒ@>MUUSKK ®®’RÄbq…m|[‡Áhrv6é¸åWrráÈ‘ºéQ-rÚ¿ß#8øÞÞ½w¾˜úHÏ6^Êàñذ°…ÕÕM›6 ¶M¥deIóç;ܽë÷¿ÿm6mÄ™3Ïllvy{ÿÃí ý™ììJô ¾¾—§¡¡¨§G\Àd²««;.ƃv‡;ý.*_¸ÐñرïÞlÛ ç· ý h㥮túôÂèè”ðð¿0/ccõÀÀ鉉;OZˆÅb~øá¢µuÐηRS‹ûZ5D ÙÙ•h [ItÃ`4s8üŽ‹ñõõ­Œ‘#uA—¸»[?>?<eÊa—ýGŽüSXXÓ×ÚA Èή41Ñ‘!640ù|äõë‘„µ LEEŠðÈ%1± âT/–™3Gž9³øæÍÄyóÂÐ7 ¤?mü—bÓ&×Q£ W®¼ÐØ8Èóaii)oÜ8ùùómOžlqu~áÂs‡=®®‡ÏœyV]ÝÔ×ÚA ;»ÒØX]II¦®®5#£¬±‘)2Žome‰zÛ^½Ê56VWQ‘•¤•‰‡EG¯/(¨ž:õˆ`ué[ð}­À ‹Åœ81âÄP_ßðóç—tôåéxzzJ½N## ªJ®¨hݵ«((覵u‘g/!ÒäÚµkݺ>;»rüxó÷ïËËËëãâòe„ýç[[Ù\._xÏY±±¹b¶¨é ssÍ;wü–.=çævôôé…cÇšuKODêÀqüDUUîÔ©§Ÿ=Ó׺ˆ'22²¤DÊ«  PVn36®µ³+35e@‘"%%%‘‘‘Ý*ÒÔÔVYÙ`l¬¦¯¯ZPÀˆ‹Ë³³3ö“õ*`i©-R°¥…õömI·l<@MM>2rͤIÃæÏÿíÀ»pyÒ·Àqü—ÅÁÁ0 `ÊÏ?ß9RO8fÿÁÏÏÏËË«¯µ€@$âêÕ«ÞÞÞÝ*’—W 04TÓ×WŽNild._>Fø‚§Oß:îÿúu‡Ãë¸ Ý'!‘ðÇŽ}ïâbòã‘Ïže:µ@__µ»•@ RŽã¿8k×~;v¬Ùòåçá~”HïSTTƒÅb´´”õô¨ŒÊÊF³n%%+K)‹æ»UìY»žž¶÷ïod³¹®®‡nÝJêY%ÈgmüƒÁœ<¹@A²lÙy6nTô*ÅŵŠÎÀ@•Ãá‘HxKKÁÙúúVÔ?NF†$RðÕ«\£ÏiÚØXýÞ=¿ œÖ®½äãs¦¬¬þsjƒ@z´ñ½œéìÙÅÙÙ›7_ík] ¯‹’’Z€¾> `d¤N àg_¼ÈFýaEÆñmmœ””"{ûnOÔ‹@$â§_¾¼*+«büøà?ÿ| óä@zhã{ CCµÓ§}®_Oüã}­ òQ\ÜnãUUå°X þÑÜû‹ÙC†Ð22ÙøÄÄB6›koß=‡»Îpq1yüxóüùŽ×ÝÝO”—Ã=¤—€>w½Çرfþþ“wî¼ib¢îèøYs€ƒ††††;wîß¿ŸB¡|~mAAA&LpvvHΟ?O æÏŸß­zöìÙÃ`0:V®¤$ê–%BnnnXXXHHH·š\¾|™D"¹»»RøÉâ555GŽILLlmmµ°°Ø¼y³ž^Ÿ9{2Œ={ö“H¢3á½Fqq݈º€ªª&>!“?úÑ‹‰É:T3;»Rd®>66GW—ª¥¥ÜÝæºö $Ôž=sÐÒÚ„ ƒg? HâááÑu()´ñ½Êúõ33Ë—/ÿãþ}?]]ѤZ_!ÍÍÍG ’Š?sæ F¶ñwîÜ‘‘‘é®ÿã?444ÌÍÍ……’L±VTT\¼x±6þùóç²²²"æ\¬°ëâiiiS¦LÑ×ן;w.›Í¾uëÖ°aÃ^¾|iiiÙ]•>‡aÆ8qbܸq,+11‘ÏïËø±’’Zmme@ll.‹©©ù°?reeCnnÕŒ#ÊGãøW¯º/BDD×ÛUÌëq͈€#GŽ|òhã{ sèМ3Ž.]zþöm_‘Ÿ•þ —Ëåp8¨%f±X\.WVöÉ¿ø|~UU•†ÆGéÃillTTìÔW™Íf·µµ)((|RØĪ¨¯¯WPPÀb?,]-\¸pÅŠÕóÉÞhllDDä6;¶hmm•‘‘©_¬P’â«W¯9räÍ›7ÑËÖ¯_?f̘7>zÔ¾ù)‚ EEEjjj"/U<¯©©Id¢B¬°£|>¿¬¬L[ûC|ymm-›ÍhiiÅÄ|HÑ­Ö¥BuuSk+[[[—§©©œ–VŠ º“M à45ÉdÿáŽ8^rr‘§§mÛ…ñ¨^@’dPp=¾·‘•%=»¤´´nÓ¦ˆþï}“››K&“¿¡¡¡»­K‘²²z,C§+56¶½_áêjA à’“‹Ð³/_æ89·´°deEãsét%¸š@ß7Œmìyøðß×®%ôµ.Ÿf×®]ªªªnnn€Õ«W«©©Mœ8‘@ dee¹¹¹q¹ÜÇ"##gÏžM&“iiiùý÷ß ÆæÍ›Ñ³W®\QRRòõõ%Ó¦MsppèØPPP‘HÔÔÔ\½zõ;w:Nžî±*EEE±Ùl???A¨Têܹsoܸ^Ï`0ò„¨ªª’¤7Ð ¶mÛF¥Rœœ¼½½ ©©9wîÜ›7o¢§BBBdeemll333ŠŪqõêU9sæ _Ddd$@JëÒ‚ÁhVR’!pII<ßÑÑxøpíøø<@~~uII‹‹ “ÉÇ¿x‘½b!ƒhãûŒ¹síøaܦMhš­þ º€ÇãÆÆí{lc0G&“=<<"##¹\îÍ›7Qï6##£ .\½zUKKËÒÒòÞ½{€‚‚GGGAC†ˆF+**ªª¶§üÔÖÖF‡Åb…!//ßÔôÑNw­­­òòò©”——×ÜÜ<|øp33333³‹/ ¤Ï9!Ö¬Y#Io455 P¡¥¥euuµØV>|èää$¨sÔ¨Q±BÉ‹›šš¶¶¶¾zõJ¸²²²öìÙƒ HAAzо¾~yy9z¬¦¦†P(t½£P¬ž‰îîî::ÒËÓÝÖ¥EMM3ºk\bb¾¾ªªªœ½½a\\ &&[F†he¥ÛÚÊdzXÜׯó]\L¤« Ò'@Ÿ»¾$0pzyyýŠ¢£×ªõµ:"âç…"Xºž?¾——×ìÙ³)ÊØ±cåååèŠ{uuuXXتU«\]]©TjRÒ‡Œž………‚w”¦¦&&“‰zcÅÆÆ¢/b…¡¯¯/,IMM7n\g*©©©©¨¨¡¦½ªªª¥¥E|Õ÷FUU‡ÃA‡³)))ºººb[9wî\FF† xrrò¸qãäåå; %/nff&//ïÞ=Á©ÿ³wßM\À_vÂ^Â’)(ˆ¨XQlբ⨊¸GÕV¢ˆ"Újµbk«¸°V­WQµîÝŸ‘¥¸@†² + dç~œ½æ—!`Á÷ùëxy÷î›òÍݽ#‚™™™|÷746…w$ßA¡7Œ'Nܽ{ÛeïÞ½&Lï|‡iíÑ5¥¶–gjªÈÊ*îß¿`Ð ÇýûïÖÕ5>|˜ïããD¡…ò×ñ bÓa4;$uëÖ­Ø22™ìââòÅ_`ßnÛɺuë°F???ù+„6صkWqq±B!™LFÿuŒNJ ¯ã;@عsº³³ÅÌ™Ùl^g‡ÓFt:=""bæÌ™èçuffæøñãkkk™Læ˜1cСS#FŒÈÈÈ@Ó|FF†Âå&@&“8p——wéÒ¥ÀÀÀæ SSSOŸ>î%¿=gΜëׯ_½zA¦¦¦õë×s8tìnH_~ùe]]ÝÉ“'ÑþÞcÆŒ‰G›zÿþ}áÿ …êœ ‰DÈÎÎþ믿¦M›†{”qãÆ½zõêìÙ³‚Ü»w=-¸…êﮫ«½oß>´‡„H$:zôhlllxx8 ((èùóçè“ûÚÚÚ«W¯¢÷ØÕ„Æ„ rrr.^¼8þüŽ;Л E¡÷ÜG½ÍjjMMõyú´Ëñ$!))}hjÉŽONÎwv6W^¢F‹ CRÕü‹mQ\\\VV™L&“ÉR©4..ÎËË+))I#ËswwǾ28p 77—L&„¤¤¤áLJ……©„)¿»2™L&•J¥Ré½{÷Μ9#ý‡†ßƒÊÀ:g()u¶šž¯ïÏ£Gïljvð¡ **‚ è§vAAú…BIJJB·W¯^ xýú5ú£D"uê>ôÇÀÀ›7_F·/_~jc³²¾¾±]#Do`Ìž=»ººúøñã€qãÆUUUݺu P]]˜˜hbb‚Þºyó¦ŸÏ/((066®¯¯‰D[¶lñóóC¤¢¢‚N§ïÞ½[$]¹r…L&+Ü„†† …Âòòr‡M›6á"rãÆ ù\…m{xx,_¾<;;;;;;55uÛ¶m:::wîÜA„Ëå²X¬ 6466;888p·ý²²2ƒqùòeAÐÂÝ»w£q<øÆª¯ã‰ˆˆ`±Xèvÿþýãããe2Yyy¹¾¾~ff&òÿ—˸P 9^>†ÌÌLùK#GŽÜ¹s'úË A¿àZXXüùçŸ%%% ãôéÓè¹"………-†ÝÖÂ=¸Rý‡¤NއÏã» ??ç]»¦8poß¾;K+”””„……-]ºK¦>ggg¬×@__à@ÅiÅp !HM‚ÔÕ5™šêee• ãQ½zY‰D åCc.W §GG·<ÈëÛ×ÖÐPq’Áö ECR92zôèÑ£GEFF4ýÇT1úT¡}ƒ'ýõ×ÀÀ@:®út¹»»“H$€L&;uêTHHHuuu^^FSrÙbe-Æ 0ÂwÔ¨úÇíÈ¡¤0Çw!“& øùçÉ›7_9yR±?Z—åé陞žÖÚ7lذtéRùvnß¾­Ü¸r!©‰ÇŠÅRjNN…|ŽÏÎ.‘ÉtÙx'Ð×ÿÐç.))¯ÃFÍiËTÀºu^¸H IDATëÊËËËËËÙlvzzúýû÷Ož< š}ªÜ¾ŠÁ“}úôQçtååå¡_,ˆDâÅ‹ííí ƒ&~y-VP†:µJa„'î¨QõÛ‘CIáØ¹®eÞ¼Á55Üï¾;«¯Ï?Þ«³Ã -Æç‹••õb±T>Ç''盘薔Ôäå½ëÙÓ’ÇêêÒeeuEElÿÊñÚ2$U··÷°aÃ^¾| šQYQQ¡Ü¾ŠÁ“ê …§NB§©ÈÊÊZ¿~}zz::õ“rÙ+4}XgûÂÂBì%…žfffÊ£Fß¿¯æq;r()¼Žïr""F-X0dÙ²¸»w5<çÔf555›7oþꫯ† †-ñÒ"6›®©QLP«ˆD@aaµ™™º„<êÁƒ¼áÃ{[X^ºôT"‘ñù"}}: )é5Föö¶ï¬€åu!©ÊÌÌÌÐɦš}ªÜ¾:ƒ'†\ÖÕÕ•———••¥¤¤ 2„Éd¢wþŠ‹‹]]]çÏŸóæ š±Ý›«Ð"2™œ˜˜8sæ ¶`„2ÜQ£-†éÈ¡¤0ÇwE?þ8aÒ¤ MOÛÙ±@   ÀÇÇ'!!ÁÏÏoöìÙ£FŠŠŠR±K'ˆ……bÀÛ·Õ}ûþ;ûŸ/ÊÌ,ö÷w™4©bb‡Ã ÷ê““ó||œh´.qw“H$Θ1ãÕ«W_ý5Z2zôh‹5pàÀ_~ù…Á`øùù­_¿Þ×××ÅÅ%$$ÄÛÛ[¡]]Ý[·nõèÑÃËËË××wÅŠÍ^¾|ù§Ÿ~B÷’ßVÆd2ïÝ»'bcc/^Ü£Gggç>}ú Oñ•Û÷ööÞºuë¤I“С³£Fš3gŽB³ÁÁÁsçÎEŸV®\iccckk;oÞ¼þýû_ºt ]bqܸqnnn¶¶¶gΜùöÛo###ËË˱ݛ«Ðâ9G¿TÍŸ?ŸÉd9rýêƒËËË+&&fÊ”)–––k׮ݵk™Ln10lwuΆƨî’u‰Dº`ÁW×ïÑ¥0Û ÐÐØ¹îÍÇÇgøðáXo[äŸ¾ÓØà%Di(pûˆýĵª_ý«Wå,V¸¯ïÏ[·^à ïßÏe±Â+*ê^¿®d±Âÿú+‹Å ò¤X&“yz®ß»÷¿¡j]jHª #*U´ßâàIÜ!—¸Þ¾}‹ýË”——£'D~wÜ ê¨¯¯¯®®V§&î¨ÑÃ|üPRد^‹‘HÄߟիkÖ¬ƒèú˜P§ÈÈÈHMMݾ}»üô“!!!¾¾¾‡Æ]ý¶K-®ú)$€ÒÒZww+¬099ßÉÉœÅ2êÙÓÒËËîâÅL€¾>='§²ºšÛE¦°­¯¯ôèÑo¿ý†^ac‚›››———ÂÊCè-bÜü([[[cccu Ûí®<‡±rûFFF45mvA?###´b‹ìííŒ>ÌEhee…žùÝq+¨C¾Ã j ÃÞÞ¾µaZ<s|×E§SŽÿÆÔT/$d_yy]g‡ó‰zñâFëÛ·¯BùÀóóóqW¿íR‹«~ÊÐçñR©ÌÝÝ+|ð oȉ|úôA÷îåôôè÷ï¿61ÑõðÀ™l¿ãiõT8äµK9¾K30 Ÿ=»ÄÐP端ö””Ôtv8Ÿ¢††å‹>Ÿ=eǬ ³Wý”¡9^O֣LJK%‡ÿâE9:M= 8Ø%¯¯O¿w/wèPW"QÝ«½v¥ÕCRá×.æø®ÎÐP'!a±©©ÞäÉ{ašïxŽŽŽUUU@¡üöíÛèØ5‡wÖ⪟2@ èÕëßû´))‚øú~XžÁ úù9©T–žþ6 ÀµÓbí^à8”®æx-€¦y33½É“÷Ã4ß¡|||èt::á(&??¿¨¨]Ñ Œ–«jlff&Þa‹«~ÊÄb) OŸo¿''ç»»[£+Ê£ p@dß¾;xèP¸f¼Àq(] ÌñÚÁÐP'>~±™™^p0LóŠÉdFDDDFFÆÇÇ£—¹¹¹S¦L:tèĉA3C»Î⪟2™ ôîýo‡»§±£RÉ õôéT77‹¥ÅëÉv³gÏîÑ£GzzúêÕ«,X{êÔ©7¢óØ£D"‘ü?Hmm-zËÚÚ:99[öAââbì;4F*•Ö××·ÿ[é`Ž×††: ÿi¾ãEEEEEE-X°@WW×ÈÈÈÓÓsÀ€7oÞDïã5îä±6› psûã««¹ﱇñ¨ÆF……Áû÷\''sœ& V‚ãPºš.1Û¤&FB¦Nݼ÷ìÙP¬'Ô®Š+ÂÂÂ^¿~Íçó=<<ä?¿Èdòµk×JKKõôô°‘B;wîܰaƒžž™LÆîÀ¯ZµjáÂ…ùùùŽŽŽè€'''ùûó§NêÀ·Õý••Õ>ü›$'ç‘ÉÄÏ>s¯Ãå u ¼yó¾BìvTŒCÉÈȇÂf³ýýýÑq(,ëØ±c………òãPÇŽ[QQáïïïää„CÉÉÉ;vì¥K—ÐÉü¡æÀëx-c`À8uj‘±±NpðÞÂBø©ÔqH$RïÞ½  Ÿà1¸C;kD,„Bs<ÖU>99¯ÿººÿ÷ëãr…B¡˜B!æäT¦¦â´µ‡ÒÕÀ¯}Œu—XZN˜ðÛÓ§%Î' îÊ**êBá‡%FRR ”§¸áñ\®À××yÈž?ýt v{üHpJWs¼V22ÒILüO¿~vÁÁ{áÒ5îÊ*+MMB@Q»´´VyM9GÀfó\üqBvvé/:!ÐnŽCéj`Ž×V õèÑ…ãÇ÷›7ïðÅ‹O:;êZÄbiUÐØ(=ΜYòôiÉøñ»Õ\½&88XyÕgê²lll‚ƒƒÕ©YPðÞÙÙÂÌL¯¦†—šZ8h£òšrÿýï+€Íÿ]PNœØÐ ÇU«Ðéî! ‚ãP:¼ŽïV¼½nÞŒøúëØÑ£w<8oð`gÕõá<Ô]½yS=y²÷›7ïÙlNzúÛ%K†+×INÎ0ä ®]Ó¿ø"zß¾;Ë—ì p!¨}ÀëøîÆÒÒðÂ…°aÃ\§Oßôhrg‡A ¦†WW×èìÌ43Ó/)©e³yƒ)ŽÃ.-­-/¯2^²³3ˆµk׭ׯßuPÄÔ>`Žï†h4òï¿ÏZ³fÌúõçW¯N„·¡OÍÛ·ÕGGs++£·oÙ ÕÃCñaüÝ»¹4(]Ç£¾ý6ÀÝÝ*""vb…´ÌñÝ@ ¾ÿœsç2gÏ>ÔÐÐÔÙAPÇ)/¯'“‰66Æl6wÀ{ …¤PçÞ½\WW ‰¨«KUnD"îÚ5ýÕ«Š˜˜[2µ ˜ã»³qã¼ÎŸ_šŸ_5vìî¼{V:l˜[C_{ZÞÞß?ö×_¯Þ¿ÿº½"† ösü§ÅÌL/.îÛõëÇGG_ÿúë#­}ÊA]ŸT*«®æXY644½~ýÎÃÃ:?ÿÿr|RR‘HðósárÕÊñ€E‹‚‚<—-‹«¨¨oŸ¨!¨]ÀÿÉ! ML\òüyÙÈ‘Û>„}†¡n¥ºš+‘È,- ÓÒÞ"ð÷ïYXø^~–ˆ{÷rû÷·70 74T÷¹Ã„;¦™šêÍ›w]‚´ÌñŸ¨Aƒÿþ{•§§MHȾի9AgGAš^j³XFYYÅNNL'±Xš“SU¸ÿu@€+€Ãáëë«ÛÿTW—vâÄ7UUœÅ‹K¥pbH;Àÿé26ÖìØ‚Û·_üzýúóÎŽ‚4 ²²žH$XZ>yRÒ¿''s}}úÓ§¥è«yyïÞ½k@s|CCË}îäÙÚš?¾0%¥ðçŸ/·Kè¤i0ÇêFŽt¿woõÈ‘î Y´èxM ¯³#‚ R]Í36Ö%“‰ÙÙ¥}ûÚ‰„>}l²³?äø¤¤<:+‡£îóxŒ——ÝŽS¼ìØC͇Ašs< u¢£CŽ_˜‘Q4lØÖ“'Á[‘öª­åë¼ySÝÐÐÔ¯ŸÀËËîéÓôÕää¼ÁƒI$¢X,åóEj>—÷ÕWýW¯½~ý_—/?Õpè¤i0ÇCŒé~÷¾ê¿ví¹Q£v>zTØÙAP[44ðŒtŸ<)¡Rɽ{[úõ³ËË{Çá$YjjáСƃf¤iÑòå#.ºtiÜÝ»¹š ‚4 æxè_ôŸ~šx÷î++£É“Ÿ;÷pqqMgA­S_ßdl¬óôi‰»»•Jøø8ÉdHZÚ›¬¬".W0thOðOŽoÃu_$IúõûwQ__ç/ʳ³KÐõ€†>@ÐÓkãu<ŠÁ ;¶pèP×iÓþ€3ÝB]ÌñP tui¡¡Ã=Z7s¦Ïþýwýý7ÇÆ& âÎŽ ‚ðñùb6»ÑÀ€îèÈÄ ‡ q‘Hdƒ» %__ŸF"}ìg …BÚ¿Îøñ^sæºvíÙG¶Ašs<¤ccݵkǦ¦®ÿê«þ›7_8pÓŽ7kk;;.RÔÔ$ª®æ #ã±BCC&ÓÀÐajª‡–44´b’;ÕH$âŽÓ¦MôŸÿœ8q"E#mBFÀµ‚™™ÞÆ_¥§o˜7oð‘#Éýûo ;YXø¾³ã‚ ñù¢ŠŠz//;…r‰DÊç‹°¹¸\AÛÎá" [¶‡…\»öìÊ•ñB¡DS-CÐÇ€ëÇC8UW°µßïñøñû»w_üõW¦§§É´iNt:©cƒ>m[ˆÏq¹OOùÂwïØl +«xà@‡Ãÿ˜wÊBDD ——íÒ¥'_¼(‹okk¢Áö!¨ `އpL:UíºDÃåÑ#§ë××·c@Ð'© 9At‰9töÌýû¯i4²••Ñõëϰ¯ÁëxÌðὯ] Ÿ?ÿHPЮ?þ˜ëçç¬ñC@úà½z_BB¢iSSn]ÝUõ*CZÚöw+“! …dgg*_þðaþÀŽ&ô?þ Z§µ Ò¨ÏÁyåJ¸¯¯óÔ©û7mº;¨Bæx‚º4[[+t˜ô¨ÐÏÏiÒ¤UU iio@»]Ç£tuiÌÝ·ov||ÚçŸo…3CCæx‚ºA66Æò…EEìòò:??gggó^½¬.\Èíð<^Ù¸q^wï®queï]½:±©IÔ®‡ƒ e0ÇCÔ} ×ñ 7êSR  *ÚÓ~âÄþW®d‹ÅRG ©±s*XX;¶`ûöK—žŒ±íúõçí}D’s<AÝGM (]ǧ¤ 耮O3qbÿ†þÍ›/8¾¡a»_#­mܸñÁƒò%G‹‹km;[·n ÿǪU«8ŸŸ¯‘Û ¦¦æ‡~=zt@@@hhhqqqgE`³ÙáááBaçÏs\PP °°0”/LI)ðõuB·­­‡ s‹Káñ„í÷<^‹e´oßì«WÃe2dôè]‹/+«ë°£CŸ,˜ã¡®ˆÇãíÞ½[S9ãðáÃÙÙÙò%W®\¹yófkÛ‰‹‹ËÊÊ"“Éd2Y*•ÆÅÅyyy%%%i$HyîîîwïÞUQáåË—ýúõKJJ?~ü¤I“^½zåîîþìYGO¤ŠÅ) 333e2Y ,/ï@G‡Š•¼}[ýî]ƒü¶Y³ü’“óéÈòò²#““jk/^¸pßÕu(‚Zò‘rp|<ôQ$‰X,f0¡P(‘HtuuUï"“ÉÞ¿oii)_ˆ ‡Ã144ln/‘H$ Z,lÜõõõDâ¿_…ƒ‚‚Ö¬Yƒn …BWW×£G:TÅ. ¥³„ HII‰¹¹9ZP[[+ý_ÿ,…f—,YÒ¯_¿óçÏ£%Ë—/X¹råßÿÝ\›(©TÊårŒŒZ,T~#2™¬¢¢ÂÆæß¹e°8­­­“““U¼#Ò¬ÜÜwD"A~š9ù‡ñ¨áÃ{›™éUWsÛ¼°ìGòò2_¶,@$‘>öêÆ=zó±­tæX¨«-/(( ÑhÑÑÑfff cÍš5k×®e0$iéÒ¥‚/\¸­,‹---Ïž=‹ HTT”••Urr2ZáâÅ‹¦¦¦t:}ðàÁS§Nýî»ïÊÊÊuuu©©©ÎÎÎL&“D"M:µ©© ·Aèèè/¾ømS~ÛÚÚú÷ß—Ò¤I³fÍB·qCÊÌÌtwwg0FFF?üðƒL&CÄÃÃcË–-òíÎ;·¹]ZßÀÀMß|óÍ×_ H~~>•Jݶm[EE…L&‚ìܹÓÒÒkyÈ!Ê9¾ºº}uÛ¶mŸ}ön¡ŠhUäxÜâââLMMëêêx<Ç[»vm`` ‚ úúúVVVVVV¦¦¦€Ï?ÿ½xÅݥų´}ûv{{{,ªµk×6 ‘˸͞pàÀâÅ‹Gejjš••…í^\\Œ%—Ëåóùhï­ÔÔTôKnasìííÓÒÒäK²³³?ÿüóæB277711)))Aóôû÷ï•›õöö6lØË—/¸» ýÌUœ%333ù®jOŸ>µ³û¿l„Û¬¹¹¹¾¾þµk׆ ‚ÕŒ‰‰AE›X$ØïH¹÷ˆ'Nœïç¿wïÞ &Èw¾Ã´öèšõömµ¡¡Ž‰‰.‡óaÔeJJÁgŸ9P(Š+"64ðŒtz÷fíßwäH÷vŠ‚:¼Ž‡ÚK@@Nˆˆ˜9s&úùž™™9~üøÚÚZ&“9fÌ4Ž1"##Mó —§™LvàÀ@^^Þ¥K—›+LMM=}ú4º—üöœ9s®_¿~õêUAšššÖ¯_Ïáp&MšÔ\H_~ùe]]ÝÉ“')))3fL||<î{433C憎‹¼   çÏŸ_¾|P[[{õêÕiÓ¦( ‡Ãi®Y]]Ýèèè}ûöýõ×_b±X$=z4666<<\E›jÂ=â„ rrr.^¼8þüŽ;ЛXœ-¾£ŽQTTãäÄÔ×§c9þÑ£Bܕ߸\¾=4txjjaJJA‡EØEhvþ ÀéÓ§'Ož<|øðŸþ933SSͪéÅ‹áááêïR]]½xñb‰D¢üRMMÍæÍ›¿úê«aÆ………acUZÔuf‰ø?y¯ê–€zÏãѧ×è§|AAú…BIJúÐãiõêՀׯ_£?J$’ÁƒS©Tooo''§ƒ¢å›7o¦R©ÎÎ΃Vx¯««;zôh;;;ƒ1cÆ ‰D‚[ˆ ÈÚµk{õê…¶)¿ ÈÖ­[õôô H$’¥¥åÝ»wU‡tòäI]]][[[ …2oÞ<¡Pˆàõ« µ··çóù¸»¨s–¶mÛF&“œœ -Z„>e_±bƒÁˆ‹‹k.™L¶iÓ&ƒA¥Ri4š¹¹9:l¥Ü¦|$‚LŸ>=22·°¹#þöÛo ÅÂÂÂÍÍíÂ… è.XœØóxõ®â¯ ië“È9s…†þ~jæÌ‚±Y¬ð´4Ňñ‚¬_ÿ×øñ»™2eºÑaºÂóxìÿK#­ýüóÏL&3<<üĉT*uïÞ½iYM .$3fÌh±fïÞ½ÑN² “˜üü|ggç>}úlݺõðáÃóçÏ'‘H7nT§Í²²2tŒFÀ>wP{i1Ç«iÏž=Ÿþ¹|‰L&ËÉÉyòä :" S[[›››+•JgÏž-Ÿ?;;»°°P!òæÚTšÞ¾}«| åÞyt¤­Ÿnþþ¿lß~=*ê˜1;9s&½GUNçÄåËOΞ}Aôô7,VxRÒë6‡ÚZ­Êñb±Ë€Ç㵸‹T*­¬¬T(”ÉdõõõØÊ9^(*hÄ-TÆd2ccc±£¢¢\]]å+ÔÕÕI¥R… Õÿ7áóùè×hÜ¦ššš "##uttÐo™*(ôb±¸¦¦«àãã3|øpùÜþ)b£j¥Ó‚µ©@&“)§|‰D¢æ·+˜ã¡öòñ9¾®®.%%ÅÅÅåÒ¥K­Ú±¹/·êNÚðé&‘Híì"ΞMß¿ÿnÿþùî»3cÇî­}úÔÂÂââÅ‹óæÍCË _½z•]PPpùòå/^Ðh´¾}û*ü.˜ŸŸ{ZäÛ”Éd €òòò)S¦9räÝ»woß¾½|ùòÞ½{\.799¹´´ôñãÇùùù—.]ÒÔ_‹*ùê–€†îÕCPÛ´á ½ë^^^÷àA>‹^ZZkk»òò姸•GŒØ¶eËUìÇE‹Žûúþ,âO9 Yj^Çí™Aׯ_GEE 6ŒJ¥ïß¿ifvܹÐÁ)Øe÷È‘#wî܉‰v[inÊŠââb"‘˜ŸŸ ÈÍ›7‰DbYY‚ ¸ "J÷êÑ©œ?~üºuëbbbX,–ò»ûæ›o|||š;-]m–ð:‚ î ¼¼žD"š›XZ’’r%Ù€=p+s8|ùÉê7l_UÅ9~üaŪ­˜B(ÖÔÔôìÙsÆ wïÞ­¬¬œ9sfhhheee›çZ@ïO úô隟âĉ‚øúú2™ÌéÓ§Ëd²S§N))ß <‹…nÐét‘HäèèXUU%ªÝ¾}ÛÉÉIýÓÒ¹³D(€9‚ZÖ݆ÓtGååu––†d2ÑÜÜšúÆÚÚ˜ÅÂ_ÿ¦¡áß{õ++£… ‡îÜy«¶g"„ÎÒâü.\øûï¿æŸHKK«ªªš:uêâÅ‹ù|¾©©éû÷ï±Ý•× F§š@·æŸP(Ä•’’Âb±°9¦LLLЇåeeeØ\ ¥¥¥¥¥¥™™™ûöí333C¯hQ{÷î-++C6ö¡°°Pá(¸MŽ;öÓO?=~üøñãÇééé¡¡¡èíúÄ=Ã>>>t:v“ŸŸ_TT„µU󴘙™åææb?vð, `އ øøø$$$øùùÍž=»±±qÔ¨QQQQ*vé‚‹®v{ååõVVF}}º‰‰îóçeÞÞö¸5e2„Ç(,,»lÙ´cG«Wî,]dþ ooo33³5kÖ ×ÊR©tïÞ½úúúêϵààà@&“gΜ)--U·©äääâââo¿ýÖñóçÏþüyvvvs *Ïè ÉdFDDDFFÆÇÇ£ßËsss§L™2tèЉ'6wZºÚ,Š>ò^?Ô-ø<^N—Nó‰hÓȯ¿Ž]¼ø8º=vìN{ûU‡ßÇ­ÙÐÐÄb…ß¿Ÿ«PÿØÆfåÓ§%mX}ê?×–ù'=zäææF£Ñ\\\Œ° õçZX³f :Kã¨Q£±çñØÿ…rSóçÏ R8uh×wÜ¥°êt8L&Û¹s§ŽŽ‰D244¤P(óçÏGGî5wZºÚ, `އpÀéjÃi>møt=zgTÔ‡„1gÎ!+üÉŹP%%5¸¯Êd²)Sö~ñE´H$iCÌjÒà8]gþ ‰D’———’’¢üýUý¹êëë±m¸Z;ÿnƒ¸3:(H$/_¾ÌÈÈÿf¯â´t©Y"Àùê!HÃi222ä‡Ó°Ùlt8 ‹Å:vìX```aa¡üpšÄÄıcÇVTTøûû;99aÃirrrÆŽ{éÒ%´ÿÔZÕÕ\33}t›H$wwkÜšèL·òÏãQaË–)ÇG9’¼hѰö öcÕ××çääüöÛo;vì/'nnnÊõU4ˆ»ÈPs+)#‘H...XÇ@yºººÞÞÞ … ÃÞÞ^¡ÐÐÐPõQp›R·A##ü.òH$RïÞ½›{Uù´à¶iddÔ†øÂçñ¤JCC:K†B9ŸÏÇž²oܸ‘J¥ZYY-Y²äÊ•+¸íÄÇÇ[XXŒ;`ee5}úôóçÏ£/EGG£^~~~ò]u Va³¹ho;‡# ‘¨ø[C54ð ÏãQŽŽÌeËFDG_/)©i¿P?œ¢ãiéi9‚Té–Ãiº‡/J˜Ì×ñååu2RT„ÿ»@¯ãåÇÎÉ[¶l„ñš5gŽêùÜžžžéééaaa­ÝqÆ K—.•oçöíÛÊ+BZzZ`އ Uºåpšî§ºš @s<‡#(+«%‘¯^UàVnhà3T*ÿI%…BÚ³gfJJÁñã)í0u ˜ã!H•î9œ¦Û‘ÏñÏŸ—ÉdHÌær<‡ÃǽQñô´]ºtøO?]*,|¯¢u}0ÇCP ¢¢¢¢¢¢,X ««kddäéé9`À€›7o¢éuuuoݺգG///__ß+V‚ƒƒçÎ{òäI¬ooï­[·Nš4 Â4jÔ¨9sætÚ[êvêêšFF:€/ÊÌÌô<=mšÏñåw V¬ts³ ‹¥ªkBPWûÕCP Š+ÂÂÂ^¿~Íçó=< •9¾……š-ïÜ9}ôè¡¡q ÿ!‘4pQ´råÊo‚Ô¯ã!ÒzØ:r/^”éèPííÍÞÞöéé8×ñ ê^ÇôôhÎÍÊ*Ö¢åj s<AZÏéêÒ/_–÷îmÎp7`€}vv©H$Q¨ŒÝØWS¯^V›6Müí·Û·o¿Ô`ÌÔ`އ Hë  xñ¢¢OŸÓÔö™ƒH$ÉÎV\¨´U×ñ¨Y³|§Núgnn¥F† Žs<AZO(S©d™ ÉÉ©À–¢qp`Z['%½–¯‰ 8‹Ç«cË–`OOÛ¹s×Ôð44µ?ØçÂ÷èÑ£ÎútµöÏO$’Ðhä·o«…ÿ.7àzÿ~^DÄ(¬„ËJ¥2ƒ–ÇÎ) PH‡Í ŠY°àè™3KбøÔÅÁዉ‰‰‰‰éì( H-B¡„J%¿xQN&]]YXy@€kBBZCC“¡¡Z‚.HÓ†ëx€±±nlìü v¯[w.::D#‘CP»‚9ÂG´‹P(¡ÑÈ/^”»¸X æQC‡ö<|X0fŒ'ZÂåâ/¯¦^½X¿ÿ>kÁ‚£ÖÖÆË—üèÀ!¨}Áçñi=‰DJ¡^½*ÇÆ£ u¼¼lïÝûwÅ?‹Ç«éË/=~ý58:úúéÓ©mn‚:ÌñuyyU®®– …Ç÷¾}û¥LöáÖz¯¾Í×ñ¨Y³|ÃÃG®^}æúõçÓµ7˜ã!ÒzD"A(”TTÔ»¸X(¼4nœWU›Ô¶¡O§Sš[<^}«V ù,4ôOÜiv ¨‹€9‚ n€PSÃCÄÙY1Ç;9™»¸X\½ú ý‘ÃáäEü‡ã[·N2¤ç¼y±/^”|ƒÔ`އ H뉄ÚÚF …dggªüjPPß+W²Ñž¤m˜§9d2ñ?æxxX‡„ì{öLq¦ê `އ H뉄šž£#“LÆùL ò¬¬¬ú´Àå¶eœæ0Ô?ÿüfà@‡}™™Åšj‚4æx‚´‘H¨«kR¾Qrw·vp`^¸àpØJóA¥’š÷ÙgŽ3gþ»”-u"˜ã!Òzt:¥¶–çìlÞ\…à`ïóç3Åb)'hÃ$wªQ©äØØù~~.S¦ìC¿I@Ps<AZÁ p8BtIY\Ó¦}VW×tçN—+ÐÓÓpŽÿÌt»paÀ’%®_ªA ÎsAÖ#‘ˆR©´Gœw(ËÈ××9!!ËÕð½zùÖ­ëäÄ\³æLQQõ¾}sÚé@¤>xAÖ“Je90uêÀ¿ÿ~Y_ߤ§Gk¿H¦M”˜¸äéÓÒqãv¿| ÇÔA æx‚´žH$%†*êŒã©£C­®æ¶Ç½zyƒ9Þ¸±ÒÄDw̘]ûöÝ÷í¡Ns<AZO(”Ðh$"‘ ¢ƒA2å3O «ÛŽ×ñ(kkãsçBׯ¿u뵩S÷UVÖ·÷!Ìñi=‘HL$¶üi6¾¿L†¼}Ëî€ÂÂ…C/]ZþîçóÏ·>œ„>P€ Žs<AZÇ©“A™L@RÒëö胾}moÝŠ˜;×ÿ§Ÿ.½Γu0د‚ ­ÇåòE"‰X,¥PH*ªñxÀË—å99½zYµwT‰‰‰è†“XµªÏÙ³oÇ:”5q¢}{êÞüüülllÔ©I@çp† ÒR‚ôè)‘HŸ>Ýdn®¯¢f~~U@À[[“¡C]·m iïÀÅþ †+@ojÊnïCCÝ[BBBHˆZÀð:‚ íVSÓ(‘H55<Õ9žËfÏöÛ¾ýFDD ¥¥ª~ø¡þg1©Iù»£ ðy<AÚ ëµ^SÃS]½W?}ú &Sß¾;íu6˜ã!ÒnhާÑHïÞ5¨®Éå ‚‘‘ÎâÅÃþü3¥ªŠÓ!BP§9‚ íVYÙ`d¤Ãb—•Õª®Éã ut¨$qÖ,?##C‡îwL„ÔY`އ H»½ϱ´4´±1)+«S][†F#óMÀ±cZ¼½AZ æx‚´›Í33Ó³±1V'Çëë˜änîÜÁ µ{?•ohhçóùšjðôéÓ“'O>|øÏ?ÿœ™™Ùª}kjj~øá‡Ñ£G„††˜* ººzñâʼnDSAª¶nݺðlß¾=%%{‰Íf‡‡‡ …BÜà7oÞüÕW_ 6,,,ìï¿ÿVóp*Úì0ÇC¤ÝjkMLÐß½úÆF!¶œ®.-<|äáÃIÅÅ5ícçàñx»wïÖT‚Ù¼yóòåËíììæÍ›W__ïçç·oß>õÝÝÝïÞ½‹n¿|ù²_¿~IIIãÇŸ4iÒ«W¯ÜÝÝŸ={àp8J¥ ²ÅH8››K&“ BRRÒðáÃÃÂÂd2@(fff¢Ûò |||üüüfÏžÝØØ8jÔ¨¨¨(uŽØ\› Òf“&íY»ölBBš½ý*™L¦¢æêÕ‰!!û°E"‰ŸßæeËâÚ)0@BB‚:5ÅbqSSº-x<^‹»H¥ÒÊÊJ…B™LV__ýXVV¨««ÃJ„BaCCƒÂ^¸…ʘLfll,öcTT”«««|…ºº:©TŠýhiiyãÆ t{èСãÇ—uèСÇG¤   ÄbqMMÂAÙl¶òï”Ïçóù|¤™“ :SSÓ£Gb/¥¥¥‰ÄøøxÜ·ŒÈÇÇgøðá+OHH$''c% çPþˆòd2YQQö»ÆH$ù_“jêÿ]!¯ã!Ònµµ&&ºfB¡¤¢BÕê/ ‹ÇS(¤5kÆüõWæ³g¥í&ŽÂÂB:¾mÛ6‹ejjúÝwß­[·ÎØØØÐÐpÙ²e€)S¦|óÍ7he‰DÂb±Î;Ø´i“ƒƒƒ«««µµõƒÐ —.]b2™–––þþþÓ¦Mûþûï±=~üØÅÅeÕªU666&&&Ó¦Mãóù¸…€mÛ¶ >ÝÛFD äççcm†……ÅÆÆ¢ÛYYYVVV¦¦¦ëׯGÄËË«ªªj„ ÇŽ{ùòeRRÒÆå׈‹‹‹ˆˆÀ~üå—_,,,ÌÌ̸\.àæÍ›nnn®®®+W®TTTÐéô£GZ[[ß»w÷$¨ŽDùW0pà@//¯ýû÷Þ¾}kddÄãñätèСÔÔÔíÛ·Óhÿ.eâëë{øðaÜs(D¬MÀÕ«W-,, ddd´|ùr©TZXXh``ðûï¿3™LSSÓ!C†p8šë¡æw‚ ®ÉÓs}llR}}#‹~çNŽŠšsæ ;)_"“ÉÆÛü{{ZºÞB/agÏž]]]}üøqÀ¸q㪪ªnݺ¨®®NLL411‰D‚ܼyÓÀÀ€Ïç××׋D¢-[¶øùù!‚¦¥Ý»w‹D¢+W®ÉäÈÈHì:M¡¡¡B¡°¼¼ÜÁÁaÓ¦M¸…‚ܸqcûöíh„òÛ?þø# _¿~‘‘‘/^Ä.F¹\.‹ÅÚ°aCcccqq±ƒƒÃ¹kÙ³gωDô]4wfΜùîÝ»gÏžYYY -F‚(]Ç#Áb±°H¸\®ü~üxbb¢µµµ§§çµk×EEE~~~X›ŽŽŽ G144433C·mllØlvs…¸„BaMMMÏž=7lØp÷îÝÊÊÊ™3g†††VVV¾yó†ÇãõéÓÇÍÍÍÍÍíĉ ÑÕÕµ©©éÑ£Gò…yyy?ÿü3òÏ‚), Ý Óé"‘ˆH$^¼xÑÞÞ~РA111ò9¸OŸ>Í„#Á•——7pà@årô@ŽŽŽUUU@áÕÛ·o;99©‹ŠŠ „ýhoo_YY‰n›››£ C$µp«ÀAC§§EG½»¸X¶x¯£CU.ß´ibM ï÷ßÕ¥YòO©1Xò›5kÖ… þþûoƒ1lØ0@ee¥¿¿ZZZUUÕÔ©S/^ÌçóMMMß¿íŽLÃp¹\l]jj*ú%·WJJ ‹ÅBŸ”LLL~øá™LVVVfnnnbbRRRRZZZZZš™™©ÐßÞÍÍM__Mؘ˜˜7oÞ`9Xá$dee­_¿þòåËoß¾½pá‚®®®B<¸'¡ÅH” …ÂS§Nùøø4WÁÇLJN§£OR0ùùùEEE“&MjŸC333ùkô§OŸÚÙÙ)¼w¤–ˆƒ9‚ -ÖØ( wà{ö´ÈË{§âƒ÷:`aaþåž=ÿ}ó¦ºýBm›€€:1sæL4dffŽ?¾¶¶–ÉdŽ3½cî…m{{{›™™­Y³F,¤RéÞ½{õõõ=<<¾üò˺º:ô!zIIɘ1câãã íA¦««½oß¾¿þúK,‹D¢£GÆÆÆ†‡‡7÷®‹‹‹]]]çÏŸóæÂ¯÷$´ ª®®®¼¼¼¬¬,%%eÈ!L&séÒ¥ÍEÂd2#"""##ãããÑQˆ¹¹¹S¦L:tèĉ›;‡ G=þüòåË€ÚÚÚ«W¯N›6­¹ƒj’šÏí!‚º ¬¬b+¼¤¤AÇ Y¬ðâbvs•{õZ{âÄCÜ—ÄbéðáÑÓ¦í×`l@½>wè ,4% /Q(”¤¤$t{õêՀׯ_£?J$’ÁƒS©Tooo''§ƒ¢å›7o¦R©ÎÎ΃Vès§««;zôh;;;ƒ1cÆ ‰D‚[ˆ ÈÚµk{õê…¶)¿ýèÑ#777æââbll€ ;yò¤®®®­­-…B™7ožP(DdÅŠ #..A™L¶iÓ&ƒA¥Ri4š¹¹ùÙ³g•O‚ !!!‘‘‘b±8 €ÉdÚÛÛOŸ>ýÛo¿e±XàŸ¡€Í„#155ÅÒŸ‹‹Ë¢E‹ÊËËå#ÁúÜaƒÙd2ÙÎ;uttH$’¡¡!…B™?>:x¯¹sˆkAmÛ¶‘Éd'''ƒE‹‰Åb…÷>}úôÈÈÈÿ»ú¿ÊjÖƒ ê‚’“óX¬ðÚZ‚ MMB[Û•/>i®²]ÄÙ³éͽššZheµâòå§šŠ­UŸÅ*ìÙ³çóÏ?—/‘Éd999Ož‡¸G422Âíß×~àóx‚´Xc£B!Q©.WúõëñäI nM>_Àís‡Ù¸ñ+*•¼ví9ÇÙ6%%%aaaK—.EGÖ©ÏÙÙëÒÐ××WN-¸…P«týs¯ã!ÒbMM"ãß´íåe{þ|¦D"#“/`䝸›c`@ß¹sÚ´iyއs3 ƒyzz¦§§·aÇ 6(´sûöm寕 ¡Véúç^ÇC¤ÅÄb)…òïài//»¦&QAÎ(ùÆÆ–¯ãC†ôœ>}Ð÷ߟ­®æj6Têx0ÇC¤Åd2‰ôï<'®®,jFF‘rͦ&!w윂œÀ`P×­ë*wì!¨Í`އ H‹I$2ùIÐÈdâ AŽæ+×Tó: ¯Oß¹sÚÕ«ÏÒ4*u<˜ã!ÒbRW^* IDAT©â£÷Áƒ]>ÌG”fÂQçyÂã Û(u˜ã!Òbd2I,VÌñ¶¶&½z±nÞ|)_؆{õ(|ô肆þ²eq2™æWø† ös<AZŒL&*_Çûܼù\~@ f0ÔíT¯ÀÂÂàС¹wîäìÚu«BPg€9‚ -F&“”ŸÇ¾üÒ½¬¬.'§+ ÅêœSæíí°iÓÄ;o^¹’ÝæF ¨ƒÁA£Pð¯ãûöµe±ŒnÜxŽ•b­í90wîà3|V®<ýúõ»i‚: Ìñi1*•,J”Ë ˆ½ÿ?ÇKh´IôË/“ÝÝ­gÍ:XUÕð‘MAP€9‚ -¦§G‹¥"Nš?¾ß‹å¹¹n× u¯E¡Ž]À`PfÌ8Àá>²5jo0ÇC¤Åôõé.'Ýúú:YY]¸…þ(~ì½z”‘‘N\Ü·55¼ÿüç8nWê:`އ H‹©ÈñD"aâÄçÎe¢Þ„BI›ûÕ+°³3=qâ›´´·kÖœÑHƒÔN`އ H‹¡9žÃáã¾:eŠwyy]ZÚð¡ÏÆföôô´Ý·ovbbMue0ÇC¤Å .ºž=-{÷¶úë¯L ‰~õ FŽtÿå—ÉÛ·ß8tè¾›… ‚9‚ -öϽzüëx@pðÀK—ž b¡Pýêü¯½;kâZ~BID–²ÜP+V,* î²)ÒR­Ú+Šû†Wê‚*V­Öb¥" (¸V+½Š‚ ¨¨e—]dkHH2ï‡éÍÍBˆ˜€’çÿirfæœgNøñdfÎÌ pܱcööíWŽ¿'Ûš ˜“ð #‘ˆƒ©45u›ãçÏ»{÷µ«WŸÉü<·t© †¡°°«d²ò’%Î2¯€9ðic0Ôjk[$¬õôuîÜC6»÷ﲕlÙ2.—·mÛ‡÷¯M’GôäxÀ§ÁP¯®n–°Á×_;Í{TIIIæ×êV¬øREEyÇŽ+¥¥u»vÍWV†Û à£ˆ€O›®®zM¤?~¼¹ŸÏÿðwàHðí·ÎçÎ-½|9ÓßÿdwãüècãŸ6ÎãB¾¾ãBò~eÍ—_½tie~~õœ9GKJêäÚÒ€ø´éè¨I>GM›f‹JM-w0#Gݸ±ZEEÙÝýþÌýr<àÓ¦££Öãy<‘H@ݸñ¢³SÌ$u²¥¯¯™œ¼jÙ2—àà˜åË£áº=èGãŸ6]] ‹#y†6»!Äd²úæÜšD"†„Lûõ×o=*œ>ýPffI4 @WãŸ6:B¨¬¬^Â6øÄtS¦ ?vìOüõõ}`òäawï†BŸ=ûȆ ñpBúäxÀ§ÍÄD‹HT’<ÆÃá!„¾úʱ¸¸VxRyyÓÕUÿý÷å?ýôÕÍ›/wÇÇ?í³¦@ð|<àS§¢¢¬§§!9Çã#ê--uÜÝG;ö§‡‡­LšNKK;xð 4[š›JJ4W¯Ž9wî…"÷1@a988¬]»VðÎãŸ<33mÉ9žÇã!„”••V®œüüyÙƒù2i·¼¼yffŒª*&‹ÅénƒÿžÇ+!„F2öð°Ý³çžøÀ Ç>y66ú|>–—÷®» ¸ÜîÇã7nô,,¬NLÌê£øè'ãŸyJJkk½¿ÿ®ênákõ¸÷ššæóçÓºÛåSÑÔÔ´zõjKf/عpáÂüùóÝÜÜvíÚ•™ù~¯¬¯¯ß²eËôéÓ]\\‚‚‚JKKñòÚÚÚï¾ûŽËí£_T!!!'Nœ.¹páÂÅ‹åÑV}}}xxøœ9s\]]ƒƒƒïÞ½+åŽuuu«W¯f³ÙòˆJr<` 6ÌPòy¼’AI‰ (14¤N8xð6“ÙÞ'ÊKkkkdd¤¬RExxøªU«LLL™L¦££ãñãÇ%l?|øð””|ùõë×cÆŒ¹ÿþ¬Y³æÍ›÷÷ß><;;!ÔÜÜ|òäIü F9ŽäÈ‘#AAA?¬ýã?¤Ï¾Ò+,,´··¿xñ¢££c@@@[[Û´iÓ¤‰“Ífgffòùò90 ªÿ÷ßÝæx.—'|[»ÖD"FDÜ”sh‚¸‚³m6›ÝÖÖÖã.|>ÿÝ;ÑA†555IØ‹Ãá47‹NÒ#¶°«ÈÈÈ={ö:t( `ÿþý›7o>räˆðL&S8-544p8ÿ u\±bŘ1cþúë¯ýë_«V­JII;v¬ðûXB\.·¡¡A¤Ñúúz }ÁpGGGGGê¦$G‚6lØòåË%\9Ûhß‘H£C† yúôéºuë–,YræÌ™ßÿ}ÇŽ©©©‚mDz^§¡¡áƒ¨T*^ŽaXiii×ë1<Édvw=ÃàÓ—–V¨¯¿úíÛF±kcc››¯[nd´öÕ«ŠÞ5Š_þ•¼Maa!™LÞ·oŸ¶¶6•J]¿~ý¦M›¨T*‘H\¹r%†a^^^ß~û-¾qgg§žž^BB†aaaa&&&êêê<À7¸zõ*N§P(NNN¾¾¾6l¨¨¨@566¦§§[ZZ†„„0 "‘èëëÛÞÞ.¶ð}ûö}ùå—x‚e>Ÿ¯¦¦¶aÃAð©©©ørffæðáéTª¦¦æ–-[ø|þ¨Q£™L>{öì«W¯BYYYÂÇ^VVvãÆ ¼BÛ¶mÓÒÒ"ÎÎÎÍÍ͆ݺuËÚÚšN§3Œ5kÖ`VYYI&“ùå--­›7oŠíÉ‘`¦¬¬œ˜˜¨¯¯ï(èä®öø‰môéÓ§¡gÏž‰|ã_ýµØžŽóÍ›7---†]»vÁ`èêꪨ¨s¹ÜÂÂB55µ£GÒh4%%¥ &455IþKÃÿ–¼¼¼„K Ç&³ÍÀ`ͼ»6&&í³Ï6t-çóùsæ™93’Ïç÷¢Q)s<~ÂW[[š9sfuuõüª­­‹‹ÓÒÒâp8†Ý¾}[]]ÅbÒh4&“ÉápöìÙãèèˆaØÛ·o)Jdd$‡Ã¹víš²²rhh¨ ÇãçŽAAAl6»²²ÒÌÌlçÎb 1 »uëÖþýûñ…—·oߎ3fLhhèÕ«Wñ†µ´´èëëoÛ¶­­­­´´ÔÌÌìäÉ“†éééݺu ð„„%%%ü(ºëÿwïÞeggÄÄÄ`öùçŸÇÆÆòùüÊÊJ55µÌÌLüpœœœnݺõúõë®Ðc$†)++§¤¤ÄÇÇ«ªª–””`ÿ?Çwm´ÇïHl£gÏž%“É]ÿr‚ƒƒ»ëyAœx£---T*599Ã0|ËÈÈH|­OkkëÓ§Ouuuûí·ÿ !Ǭ‰Ü³çºØUÑчÝ$vUvv¹‘ÑÚ„„§½hQúÿæÍ ÃðËÔ7oÞÄW‘H¤‡²X,uuuüÿþÒ¥K¿ùæ à TTT"""Þ¾}Ëçó;::0 ;xð žžž æ‰'vÍñµµµøÚˆˆˆ/¾øBl¡ä€óòòÂÂÂ\]]UTTh4ÚO?ý„aØùóçétzccckkkkkë¦M›ÜÝÝ1¡Œ3hРÎÎN PTT„œ5kÖæÍ›y<^nn.ŸÏ¯®®NIIÑÖÖŽ‰‰ÁçþýûÝuB‘`ÿÍñxC3fÌÀ„r¼ØF{üŽÄ6zøða}}ý®»téR{{ûîz¾kŽß¿¿©©©`÷M›6¹ººâkñ(†Í;wóæÍ’¿8L\އûñ€ÂÎÎ,#£Xì*'x8^ÄÈ‘F ÚïÜ™$yú¤§§‡RVVFYYYá…ÇãQ(//¯„„.—›˜˜¸hÑ"„¥¥ettt\\œ¡¡¡­­í7B%%%ŽŽŽ‚:ÍÍÍEZÑÐÐÐÖÖÆ—ŒŒêêêº+‹Íf×××öÙgÛ¶mKII©ªªò÷÷ ªªªzóæMkkëÈ‘#mlllllÎ;G „÷µ¶¶nooyYz~~þ®]»°ÿÞöÖ××Ç( ‡ÃQRRºzõª©©éøñã>L$;Ž9²»Nè1aQQQÿùÏ.]º$(‘Ш„ïHl£æææÕÕÕø awîܱ°°¾çKJJÆ/øhjjZUõÏ":::ø•Jm =Èñ€ÂÎÎôÙ³²ÎN1ƒ·¹\¾ðs6xp¹ü½{oÈ/6%%1ÿlÉoÑ¢EW®\¹{÷.•JuuuEUUUM˜0áÉ“'ÕÕÕ¾¾¾ß}÷‹Å¢Óé555‚ÝO¦ ´´´m¥§§ã?ÄŠõèÑ#}}ý––ü£––~ã¹¢¢BGGGKK«¬¬¬¼¼¼¼¼<33Sd¼½ššž†>üæÍA鄬¬¬­[·&''_¹rEUUU$±Ðc$ÂŒŒŒÂÃãÞ$4*á;Û¨½½=…BÁ¯í ”””Ì›7IÝóÚÚÚ¹¹¹‚ÏŸ?711 ë2ÿäÉ“¡üüü¤¤$ww÷î ÓÓÓ/\¸€ï%X¶³³ÓÖÖ^¿~}gg'BˆÇãEEE©©©1bêÔ©øMô²²2ØØX„‰DÂÓ§ªªê¾}ûŽ?~ùòåÎÎN‡söìÙ3gά^½º»£.--¥ÑhÖÖÖ¡ÄÄDüR¹ðb;¡ÇHD]¹rEÊFÅÛ(ƒÁ ÅŸ]ÌÍÍõöövvvž;wnw=ß5NOOÏ—/_&''#„®_¿îçç×cHÒêñú>|ø|þС›NŸþO×UGÞµ·ÿ·äÝO;9…³XâG‰%ýýxü^2þϽ°°_E"‘ðφ­[·!”——‡är¹NNN***vvv§NÂËÃÃÃUTT,--ÍÌÌœœœDîÇ«ªªNŸ>ÝÄÄ„J¥.\¸ËåŠ-Ä0lÓ¦MC‡Åë^NKK³±±!“ÉVVV4ÍÅÅE0š=&&FUUÕØØ˜D"²Ùl ÃÖ¬YC¥RÏŸ?aŸÏß¹s'•JUQQ!“É:::ø"€a˜Ohhhgg§‹‹ ƒÁ055]°`Á²eËôõõ322ðÑР=F"¸{ñâ…²²2~?^l£>ìñ;Û(ŸÏ?xðà AƒˆD¢††‰DZ¼x1‹ÅÂ0¬»žÄ)¸aXDD„²²²………ººúòåË;;;EzlÁ‚¡¡¡=ý=˜;À€æïò»ï¢»–GFÞqpØ%yßwï˜ÖÖÿýï$雓&ÇKéèÑ£“&M.áóù999Ïž=¹ÝÐЛ›Ëãñ„ÿ罹¦jhh`VVVÖÐÐ ¡P2.—›ŸŸÿèÑ#Á z|Œwyy¹pacc£ðP;‹õâÅ‹¢¢")U(..Æ3:†a•••"{u× ÒDÒëF»#¶Q ø\îëׯ322)“Øóbãlll|òäI]]4‘t§kއùã‡éo¿‰y=­’ëé’¬®®Æ–-37lˆŸ6m„™|ƒÉdæää9räÀÂåÁÆÆ¦ëö4F£I¨ÐØØXÊB±ˆD¢•••`Й0UUU;;;‘BMMMá ÅÖÖVʶB¦¦¦‚e‘µÝu‚4‘ôºÑîˆm!D$‡ ÖÝ^]{^lœšššãÆ“2éÁýxÀÀ1a‚UU³°°F¤œ@@Ò Zò÷·Ÿ8ñ³µkcÙì¾›«¦¬¬,88xåÊ•3gÎ|¯---ƒ³Bjjj]“„ØBÐ>’ž‡óxÀÀ1fÌ Aý•ki©#\N ô|o¶w¯÷—_îÛ¿ÿÖæÍ3äæÿckk‹¿1í}mÛ¶M¤ž;wît­¼k!èIÏÃy<`à •œœ,ïßÏ)'|¾TO™˜ÐÃÂæüôÓ½òå } r<`@qq±~ô¨Pdbx)Ïãqþþ3gŽþ½¡¡çicø˜AŽ (®®6í휧OK„ ¥¼/°w¯7‰¤#ý/>Bãб±–™ã?ÿÉ.|¯óx„º:õرEÿùO^tô#Y@ß1w€ÆÕÕúÞ½œM›þ7hNšgçD|ñ…ùªUS®|ñ…Ù°a’¯Š‹‹ëe ÈTEE…‘‘‘p äxÀ@ãî>âìÙÔ’’:SÓf!zóÆïÕ«§>xôÛµk«UUÉÝmæëëÛûX)///áp­0Ð8:Zii©Þ¸‘-(!½¸±®¬¬ôÓO_ÕÕµ†„ÄŠý‰àããó!o%@æâãã…ÿD!Çee¥)S†‹äx)Ÿa` yâÄ×7ndÿôSŠì @Ž @žž£ž=+«¬lÄ?¾ï˜;aNN–7ÎØ½ûú_åö¼5Èñ€ÈÙù355ò­[/ñïû윈ýk’§ç¨+~++«—M|ô Èñ€HEEÙÍm˜àrý‡œÇãôÓÓÓX²älGG§, /@Ž Lžž£ž<)®©iA))õò~¼À A*§OS^^¿aC|Ï[ðq€˜Ü܆ L¹t)!D „>ôuææŒ¨¨€K—2##û®¤900‘ÉʳgŽ‹{‚zûì\WnnÃöìñÚ·ï&þÓ€äxÀ€åíýE^Þ»/Ê••‰<™Ôéïïðí·Îkׯ>zT(“ Èñ€kìØ!VVºqqO)e6›ûÃî¶oŸ=yò°¥K-.®•I…È äxÀ@æí=.11“HTÂ0LV§òJJ„¨¨33mÿSõõ­2©y€ȼ½íZZ:^½ªDutp{Ü^J é̙ż¥K…§éÀG r<` ÓÕÕpvþìÁƒ|„›-Ëd¬««þÛoKóòÞža³eöë‚à³²ÊB2ÏÄ66úqqÿzù²"0ð4¤yð‚à¦L®¯¯Žd}>Ü0.î_/^”ó œÍƒäxÀG$*Í;!ÔÐÐ&ú‡7Œ‰Yž•U²téÙövŽ<š w Ç>oo;„ÐÍ›Ù=nÙ;cƘÄÄ|—•U:wîÑwïšäÔ ï r<`à£ÓÕBW®<ÿÀ·ÖK0vìë××°ÙÜéÓ>^&§Vx/ã…BBUW7Ý¿Ÿ'¿V† ¡_»¶ÚÖÖxîÜ£‰‰Yòk)AŽ |d²2BÈÆFïôéûrmhð`ò™3‹.tX¹òüŽW`è_ã‰D$•¾ürhJJ.þ>ùQVV Ÿ¹ðÂ…ÇsrªäÚ@Ž(2YÙÒR×ÖÖèÈ‘¾˜ÖËËîÏ?×ih š>ý`TÔŸò€ã L&±ÙÜ•+Ý®_ÏÎÍí‹sk##Z|üеkÝ÷í»éí•—÷®@äx€B “•ÙìN[kk½¨¨{}Ó(‘¨<99yU{;gÊ”ˆíÛ¯47wôMÓ ÈñA¡Øl.@X¹ÒíÊ•¬¾œÖÖÖøÆ5ø%&f:8ì Š$”Häííýá{Ê^|ü¨T‹ÅAÍž=æàÁÛQQ÷öï÷í³Ö ‚·÷¸)S†ïÛwãòå')6ö·>k|r:$“z ÇÂàÁ”ÖV6BˆHT úrƄի§Ñú2MÍA?þèecÓùõן¾l|ZâããeR\«(55JKË?÷½¼ÆÒ""nöK$ ±_Ú r<@! Limý'Ç“HÄõë=.]Ê÷³òô/Èñ…0x0Ypš5kô˜1&{ö\ïÇ7Èñ… ¦ö¿óx„@Ø´iæ½{9©©ùýr9 &·´°…K,&M² KRÀ—Ð555­^½šÅbɪ .ÌŸ?ßÍÍm×®]™™™ïµo}}ý–-[¦OŸîââTZZ*d]]ÝêÕ«Ùl¶äz$8sæÌ… z #<<|Μ9®®®ÁÁÁwïÞ•²òO~ ÇÂàÁákõ¸-[fåä¼½víy¿„ÔZ[[###e•–ÂÃÃW­ZebbÈd2?.aûáǧ¤¤à˯_¿3fÌýû÷gÍš5oÞ¼¿ÿþ{øðáÙÙÙÂA²ÙìÌÌL>Ÿÿ^Q ·’œœ,9gÚÛÛ_¼xÑÑÑ1  ­­mÚ´iaaaÒÔß»ðú<;PêêÿïZ=nèPýùóíöì¹1}º-‰ô1wçr¹T*!Äf³¹\®ªªªä]ø|~MMžžžp!†aÍÍÍÝíÅáp:::ÔÕÕ{,ì*22rÏž=‹/F¨««9rdÅŠ‚ ˜L¦ººº’Ò?g• _^±bŘ1cñµ«V­rqqY»v­pJ644|ðàp‹"âx<^KK‹¦¦f×Vz<Þ€€€!C†\¿~L&#„–,Yâîîîëëëææ6a±»ê ð²²2ü[ë.¼¾çñ… ©©ÚÒÒÑÙÉ)_·nzuuóÉ“õGPÝ***¢P(úúút:}Æ ›7o¦Ñhßÿ=BÈÛÛ{éÒ¥øÆ\.W__ÿÒ¥K¡;wš™™Y[[¦¦¦â$%%1 ==½ &øùùmܸQÐÐãÇ­¬¬~øá###---???‹%¶!áææ†ï(XÆ0¬£££  @Pgppð™3gð嬬¬#FÐéô­[·b6zôèêêêÙ³gÿú믯_¿¾ÿþŽ;„³õùóçCBB„{£¸¸XSS³µµUl…EEEêêêÇŽc0t:}âĉÍÍÍ­W%öÐ222ÒÓÓ÷ïß'xœƒƒÃéÓ§Åî"\¿pxׯ_×ÕÕ?~¼¦¦æªU«x<žØð>àOãý@Ž(mBˆÉl)74¤}ÿ½Û¡C”—7ôG\Ýb³Ù/_¾ÌÉÉ9qâÄÞ½{_¾|YRRróæÍcÇŽÕÕÕùøø\¾|¹³³!tïÞ½öövOOÏ¢¢¢Ã‡ggg×ÕÕ¯_¿!TUUåëë»mÛ¶æææ7^ºt‰Çûß.—[XXØÑÑQQQQVVöäÉ“ýû÷‹-DÙÚÚzxxà; – ÂÚµk÷ìÙóù矯[·.))‰L&;99!„Z[[g̘1þüººº/^ÄÄÄüüóÏÏŸ?×ÕÕ½zõj```nn®’’Òˆ#„ÜØØxúôéÂ%|>¿©©©» B---<(//üøqAAARR’p+ÂU‰=´W¯^‘ÉäQ£F‰|ãÆ+((»‹pý‚ð*++½½½ùå—wïÞ'''GEE‰ ïÃÿ<¤9 45Åçx„PP›æ¿ÿÝwÿy¥¦­­=sæL„Њ+ttt¦L™B"‘òóógΜÉårïÝ»‡JHH˜?>…BÁ0¬­­í矮««[·n¾666VSS388˜D"yzz:88tmhÇŽ***+V¬¸víZw…îîî‚3láå;väååÍ™3çéÓ§ÞÞÞ†††'Nœ@]½z•Ãá¬Y³Ã0:¾`Á‚Ë—/ ·Ëf³) @²C$T¸oß>UUU;;;GGÇÜÜ\ÉõˆZSS“––V×0X,–à.»Ø.«««;cÆ „Á‚ {ž AŽ(M!ÔØØÖu‰D ŸwíÚ‹{攬¬ IDAT÷rú<.Ið{êÊÊÊ!+++¼@ ðx< …âåå•Àår-Z„²´´ŒŽŽŽ‹‹344´µµ½qãB¨¤¤ÄÑÑQP§¹¹¹H+ÚÚÚø²‘‘Q]]]w…b±ÙìúúúÏ>ûlÛ¶m)))UUUþþþAAAUUUoÞ¼imm9r¤Í¹sçDò¨µµu{{{ZZšpa~~þ®]»0LÌÃ*ÔÑÑÁ¨Tª„ÛðbÍÜܼººº£Ct¸Æ;w,,,¤ï’’’ñãÇ >šššVUU½ox²9 ´´ð/æ<!äìlíáa»uk"‡ÃíÛ¸$S†$¿E‹]¹råîÝ»T*ÕÕÕ!TUU5a„'OžTWWûúú~÷Ýw,‹N§×ÔÔv<™&ÐÒÒ"xˆ.==ÿ ¶P¬Géëë·´´àµ´´¶lÙÂçó+**ttt´´´ÊÊÊÊËËËËË333EÆÛ󯯬©©á¿E>üæÍ±'÷*ô•Ø’×ÞÞžB¡DGG oVPPPRR2oÞ<é{C[[[øýùóç&&&ïžlAŽ(‰¨ªJ{Û¹snuuÓÇ6øN …âïï§ÌÌÌY³f5440 ü:óäÉ“322²²²B"'Í!>ŸòäI„P~~~RR’»»{w…ééé‚§ÌËvvvÚÚÚëׯÇðx¼¨¨(55µ#FL:µ±±1&&jîáá‹"‘Hø¸3UUÕ}ûö?~[ÀápΞ={æÌ™Õ«W‹=äî*KÐJÇË`0BBBBCCcccñç sss½½½çÎÛ]ot­ßÓÓóåË—ÉÉÉ¡†††ëׯûùùIüåÅ0n\XTÔŸ6ˆŒ¼ca±®¢¢A®a\¼x±Çÿ½………¡ŽŽ ÃðDRXXˆ¯"‘H÷ïßÇ—×­[‡ÊËËÃ?r¹\''';;; ‹S§Náåááá***–––fffNNN¡¡¡¡ÆÆÆÔÔTUUÕéÓ§›˜˜P©Ô… r¹\±…†mÚ´ièСxÂËiii666d2ÙÊÊŠF£¹¸¸tháœ9G.^|âëûEŸÖ L&3''çÈ‘#.'666]·§Ñh4MB…ÆÆÆRŠE$­¬¬…áãÉE E^C¡Plmm¥lKl…bIxáŒØC#‰Ã† “~±õkjjŽ7NšðúÜ( µÚÚ^?2vìo¿uÞ¾=ñí[fßDÕ;eeeÁÁÁ+W®ÄŸ¬“ž¥¥¥` BHMM­kB[80ôâÐ>éÞ `};ÆúKxøµû÷ónß‘¼›Í:u¿‰‰Öo¿-“Gqqq¾¾¾ð¿HàííŠÿÀzà< ( µšš–7#“•ôû민¸¸§}ò9 (ttÔêë[¤™IvìXÓÅ‹'nÛv¹ªê£¾b€d㊂ÁPçrù Ý>"/lÃ-­Á6$È;*är<@Qèè¨!„zv‡£RUôûóÏ¿cbD_À§ž( <Ç×Ô´ *Õööö+WºmÙrùóÏM‡Õ—m0ø *ÄJOO···ÿðzà< (44 ¤ò^·ØøaúÈ‘ÆAA¿uttÊ* ccc///YÕ${{{±3¾/xv @œwÏž=&$dšô»¼}Ëts‹˜?ì®]óäòçñbhH«¬|¿¡òš>gϦ޾ýJNQ 'ã ÄÐÖ‹ØÍ˜1Ê×÷‹Õ«/TV6Ê#*är<@hö.OïÚ5Áüý÷1<_æQ 'ã ÄÐVYÙØ‹qHƒ©üôÓWYY¥Þ–G`Èäx€14ÔìèèlllïžÇFDø>|çúõ2 y€P ††4„P¯o«{{[¸Ð~Íš ùùïdr9 @ŒŒ´ˆD¥’’º^×ðãó‡5X²älKK‡ @ ljD44¤÷>Ç“HÄS§[[;‚ƒcàý"à#9 XLMµ?ä<!¤««~êTà½{9QQ÷dò9 XÌÌ>4Ç#„Æ3Û¼yæž=×ïÝË‘ITÈäx€b2DûC®Õ ,[æ2kÖ˜ï¿)*ªùðÚÈñÅbf¦]SÓÜÞÎùðªð57×^¸ðduµTóÕÐÇ Ç‹©©6†a¥¥28•§RUÎ[J&+/\x¢¹™õá [ãŠÅÔT›HT*(ÍvM5&fyCCÛ·ßþÚÙÉ“IÈ äx€b!“•‡ ¡Èì%6ÆÆZçÏ/ËÎ.[¼øŒ §™àÃAŽ(ýÜ\Y¾¨nøpø¸Ïž•-\x²µ•-Úøã ÇÚZ//¯J¶uÚÚ_¾¼²¸¸ÎÇç8“Ù›÷á sã ÇÚZ¯¤¤ŽÃáʶÚÏ>Ó‹_ñî]“Ïñªª÷ž¥™ƒP8ÖÖú\.¿°Pöϵ[Zê\¹ò=‡Ãóð8”•U*óúx/ã ÇÜœA"óòä2wœ‰ ýÚµÕ£G›Ì›w,.î©<š@Jã ‡D"ZZêüý÷[9Õ?x0ùôéo¾ýÖyÍš ÿþwDEEEBBÂ{í¢,§PàcF¥ªXZêfgWÌœ9Z® ÙÛۿ׉݉‹‹óõõ}¯]à<  lm^¼ïy<ý r<@Aeœ]ÎçØ$0`AŽ(¨qãÌ››YrzÈñ5t¨¾º:åñã7ýòcî ŠHT;ÖôÉ“7Ný‹555mß¾}÷îÝT*U&^¸p!!!ÉdNš4iúôécÇŽEÕÖÖnݺõرcÊÊ2N+.\ “ÉsæÌY»ví Aƒ~üñGᵇ.))Ù¼y3ƒÁm»ðùüµk× >Òéô‰'ºººöYÒƒóx€âúâ óôô¢þŽB¾Z[[###ÙlÙ<¶¾jÕ*“ÀÀ@&“éèèxüøq„PssóÉ“'y<Ù¿µ7555==ÏçGFFîÞ½;33S°ª±±qݺu‘‘‘2oW<˜úúúÁƒS©ÔìììI“&8q¢/cäx€â?ÞüÝ»¦òò†þ!„¸\.‹Å—Ùlv[[[»ðùüwïDÇ`ÖÔÔ$a/‡ÓÜÜ,MaW‘‘‘{öì9tèP@@Àþýû7oÞ|äÈ‘£hhíÏúúú®ï[ëèèèèèÀ—™L&ŸÏÙ ½½]¤dôèÑ/^|LLL6l˜È6b«’Ü·†•–– 6aWK–,Ùµk×îÝ»ãããçÍ›÷Ë/¿¯ízÈb¿¬î–ÈñÅõùçCÈdå'Oúó–|QQ…B‰ˆˆÐ××§Óé6lؼy3FÓÐÐøþûïBÞÞÞK—.Å7ær¹úúú—.]BíܹÓÌÌÌÚÚÚÐÐ055ß ))‰Á`èééM˜0ÁÏÏoãÆ‚†?~leeõÃ?iiiùùù±X,±…¡ˆˆ777|GÁ2†a‚:ƒƒƒÏœ9#øøã?êêêjkk»¸¸´´´ „nß¾mcccmm­««‹_ß~ûö-…B9{ö¬¡¡á_ý•••5bÄ:¾uëV_•KŸãß¼yƒa~•ûæÍ›ø*‰ôðáC‹¥®®~ëÖ- Ö.]úÍ7ß`VPP ¢¢ñöí[>ŸßÑÑaØÁƒõôô5Oœ8±kޝ­­Å×FDD|ñÅb %œ——æêꪢ¢B£Ñ~úé'ÁQáÛÌš5kóæÍ</77—ÏçWWW§¤¤hkkÇÄÄàñÜ¿ðóçÏÓéôÆÆÆÖÖÖÖÖÖM›6¹»»_»vM___М­­­ ǧ¥¥-[¶lÍš5†:uêË/¿¬­­Ås¼ØªzìÛýû÷›šš ÚÚ´i“«««p„b;fáÂ…7nܰaÃW_}¥££Œa˜ØCûe‰ XrÏ÷"Çõz€Bsq±y÷®)?¿ºÃÐÓÓCáƒÒ­¬¬ðBÀãñ(Š——WBB—ËMLL\´hBÈÒÒ2:::..ÎÐÐÐÖÖöÆ¡’’GGGA‚«ÇÚÚÚø²‘‘Q]]]w…b±ÙìúúúÏ>ûlÛ¶m)))UUUþþþAAAUUUøúúúø…Báp8JJJW¯^555?~üáljD¢ ª‘#G"„Þ¼yÓÚÚ:räH›sç΄;wî89ýïI‡ñãÇ Çàçç‡a˜È‹]ÅVÕcß–””×ojj*80{òäÉYYY¡ŒŒŒ´´4‘zø|þÉ“'BùùùIIIîîîݦ§§_¸pßK°lgg§­­½~ýzüb5Ç‹ŠŠRSS1b„ذKKKi4šµµ5B(11¿f.¼ÁÔ©Sñ;÷eee±±±3gÎüûï¿0 Ãå ¤äååµbÅ gggÁå‡îªê±c===_¾|™œœŒjhh¸~ýºŸŸ_«­­­¬¬¬¬¬¼qㆷ··žžž“““ØCûeõ.à÷ö^Wö`à‰}ljú‹Å‘yÍÒßÇïÑâO¯â«H$~WðuëÖ!„òòòð\.×ÉÉIEEÅÎÎÎÂÂâÔ©Sxyxx¸ŠŠŠ¥¥¥™™™“““ÈýxUUÕéÓ§›˜˜P©Ô… r¹\±…†mÚ´ièСxÂËiii666d2ÙÊÊŠF£¹¸¸|xJJ BˆÍfgffÊoê¶OŒ«„1ÂÐÂBçÒ¥Œ1cDßt¦È† ¶|ùòŒŒ ü]°]Õ××kii‰¼‡•ËåvvvR©T„›Íær¹"/¹c2™êêê‚WÊ 2äúõëd2!´dÉwww___77· &àÛp8œŽŽuuuücCC‡ÃAâOÌã0 +++ÓÑÑÁ[àñx---šššÐŸ8€x{KLÌâp¸ýÈGäßÿþwMMÍáÇ»®ê:‰ª4s¹vP5###==}ÿþýx‚Çùøø888œ>}Zìì·£G®®®ž={ö¯¿þZ\\¬©©ÙÚÚŠÄM[TT¤®®~ìØ1ƒA§Ó'Nœˆ¿ GA@Ž€øøŒknfݽûwòÑÔÔ9,N_°`ÁåË—›ššº^íG±X,Á]ö;v¨¨¨¬X±âÚµkbãŒÕÕÕ1cBÈÀÀ`Á‚‰‰‰øª}ûöáo›qttž„fÀƒûñð?>>_¬ZSSÓ¢££Öß±|D¢¢¢† véÒ%A >‰jTT”’’Ò¨Q£„ç•0—«`BUÁÆ#FŒ077¯®®îèè P( &™•röۮŠÆç…CQ©Tü.¾‚€óxøŸéÓG¤rùrfòq122 ÜÌ–0o¬„¹\ÅN¨jooO¡P¢££…·/((())Ág•rö[ Å BR´g#!ÇÀÿP(¤ùóÇEG§~œïµíGAAAFFFW®\Á?ö8o¬Xb'Te0!!!¡¡¡±±±øcî¹¹¹ÞÞÞÎÎÎsçÎEÝÌ~K"‘DFÏI3Q¬¢ÿÏ·ßN,/o¸sçuòqQRRúùçŸ'Ä3gδ±±166633‹_¶lYhhhuuµäJÌÌÌΜ9óÝwß 2ÄÒÒräÈ‘!!!¡°°°°°°%K–¨ªªjjjÚÚÚŽ;ööíÛøMzUUÕ?þøcÈ!£GvppX³f BÈËËëë¯¿Ž‰‰Tngg·wïÞyóæáSëN›6í«¯¾’Ww|"à}õ ꫯ~noç$$}`=þ}õ%%%šššøCçoß¾Õ××ï:t®«¶¶¶œœ===###ár———Çb±FŒ!xŽîáÇžžžL&³¼¼|ðàÁÂSê1™ÌÁƒ‹<¸Ïd2 ÌÍÍétº ŽðcÒ‹÷ÕØ;õí·Î~~'^¿®>ܰ¿cù¨õ8o¬XÝM¨J$‡ ÖÝ^]g¿ûB Å* ¸V¢œ­‡Õ?}ú~`öÛ9ÄX¼xbbbVU³¿Qt¶¶¶wîÜéï(>Uã@ Ÿ/tuÕ•ýü+ôÈñ ‰D\¹Ò-&&½¼¼¡¿c — Ç€x~~ãõõ5£¢þìï@è%Èñ ‰Düþ{· —•Õ÷w,ô<ÝêìäMœ¸ÛÁÁâС½ØÝÛÛ;==ÝÞÞ^æTQQ‘žžþ^YÎã [$qÓ&ϸ¸§YY¢3«JÃÁÁ<###//¯÷ÚÎã ÞÞQ--ì7Ö()õü7>p=صkþßWÆÇüòà9z`m­àžÜÜÌêïXxã gëÖMÃ0ôã×ú;Þäx虆Ơ}û|~û-íÞ½œþŽiÁ˜;ÖŠ¿¥¥¥¤¬ÓÔÔß±Ð38iíÙãE$¶l¹Üß Èñ -uujD„obbVRÒóþŽ€žAŽ€÷0i’M` ShèÅ‚‚êþŽ€Àýxx?<_ߟª«›oÞ\£®NíïpèœÇÀû!‘ˆ'O~ÝÑѹ|y4Çïïpèäxxo †Ú©SiiE7û;º9zcìØ!{öx=ú篿>ìïXO¹¿€O•ŸßøææŽÍ›/©¨.„ùåÀGr<ôÞ²e. ­ë×ÇLž5kL‡Àÿ9>Ȇ žmmœï¿QQQž6md‡ÀÿwìØÑß1À§mÒ$›ÚÚ–]»®ÑéƒG6éïpøäxøPÁÍm˜º:uëÖD&³ÝÕÕ†@ ôwPÀµz‘o¿uÖРþðÃE&³ýÀ_ø ú¼çdéþý¼¥K53cœ8ñ•©©v‡<²äìlýçŸë”••ÜÝ$%=ëïp€Bƒóx=6›»cÇ•è臋Oܲe&…Bê"‚ò’”ô|ݺ‹tºZD„££e‡äx£êêæ-[.߸‘=þذ°94šjGäx£´´´ƒÖÕ *.ÖTVæýžª½ãàà°víÚ÷Úí9*//OHHðòòÒÔìhkSz'==½{A޹‹ïïÀ§ÍÛÛ»{Á³sÀÀ9˜ Çäx``‚1w0À555mß¾}÷îÝT*õ«úå—_¸\î²eËðþùgrròÎ;ÕÕÕBmmm›7oþæ›oF…oPWW·k×®½{÷’ÉdÉ5:t¨´´T¤PYYyÆ RÖ sõõõ'Nœxúô)“É´µµ5kÖäÉ“¥ÙQú£–78€®µµ522’ÍfxUUUU;wî|<%%¥»šù|>ÇãñxýõW||<ï¿„k7á ííí/^¼èèèÐÖô®È© ÃIDATÖ6mÚ´°°0ivï˘%ƒóxøXp¹ÜÎÎNül›Ífs¹\UÕÞ‹Ççókjjôôô„ 1 knnÖÐÐèn/‡ÓÑÑŸ|K.áææ¶eË–’’SSS.—{ïÞ=ggçÛ·oÏ™3!ôðáC ‹!C†àwttÐéôà8ŽpmL&S]]]II !‚®Y³æÙ³gGl&¨×c/ W+è²²2ÉW2„# 2dÈõë×ñsñ%K–¸»»ûúúº¹¹M˜0Al v744޹»Öy<^KK‹ðO"™ƒóxègEEE %""B__ŸN§oذaóæÍ4MCCãûï¿Gy{{/]ºߘËåêëë_ºt !´sçN333kkkCCÃÔÔT|ƒ¤¤$ƒ¡§§7aÂ??¿7 züø±••Õ?ü`dd¤¥¥åççÇb±Ä"„"""ÜÜÜðËãÆSWWøð!B(--B¡lذáöíÛøf©©©“'O~ûö-…B9{ö¬¡¡all¬¦¦fkkëèÑ£«««gÏžý믿"„²²²FŒa``@§Ó·nÝ*á«ÅÅÅx =öRwÕ^¿~]WWwüøñššš«V­âñx999 EpacÆŒGŽŽ0###==}ÿþýÂÛ}||NŸ>-¶Ç„wÄ,¶õ¢¢"uuõcÇŽ1 :>qâÄæææúêäxèl6ûåË—999'NœØ»wïË—/KJJnÞ¼yìØ±ºº:ŸË—/wvv"„îÝ»×ÞÞîééYTTtøðáìì캺ºàààõë×#„ªªª|}}·mÛÖÜܼqãÆK—.ñxK~þü¹‰‰ þ“Bp£¨¨H¤B{{{ …-\XPPPRR2oÞ<$u‰m]ä@ä:û+äxø¸¸¸P(”<=dffΚ5«¡¡Á`xxxà×'Ožœ‘‘‘••…ÊÈÈHKK©‡ÏçŸmÚ4üã°aÃh4ÚÕ«WcôÄ"‘Høà²©S§666ÆÄÄàÎ=<xð`Ö]¡œ0™ÌÁƒãwÓÛÚÚrrrôôôŒŒŒdØ„Øj™LfAA¹¹9N655uvv n«w!ÄãñòòòX,Öˆ#ã%ô˜ÈîZ_øÜ²ï;I1¼>vL&3''çÈ‘#.'666]·§Ñh’Sµ±±±”…²%ü¾|T¹Ì›[­¦¦æ¸qãD ž#Hä4D"qذaݵյÇľÐFlë}r<|ìÊÊÊ‚ƒƒW®\‰?3&=KKK---ÁG55µ®ÉFl!àê1¸Vr$Ãkõ@‘õîZ=Œ«&ÈñÀÀ9˜ ÇŒ«¹Ã_©@¯UTTôâEã@î|}}û;ðÉóòòzß]àÙ9``‚ûñÀÀ9˜ Çäx``ú?¯±©˜ñœIEND®B`‚mysql++-3.3.0/doc/html/refman/inherit_graph_35.png000644 000765 000024 00000004422 14042362133 022434 0ustar00tangentstaff000000 000000 ‰PNG  IHDR–ž/väsRGB®ÎéÌIDAThí[ˆUM>»®ÝÝ®ÝÝ݉ ŠˆŠÝµ‚…"¸ bìb#Xˆ…б¶ˆŠ‰ÝÝíüç;?s¹ï¾~ûçÀÝ7wîÌÜ™o¾9ç;6B±‘1ƒ@xˆ ïxf4ƒÀÿb&$ †XI«4ÊÁ‘#G¨Aƒö*S6„Àû÷ï)C† V[•@Ó§O'èys å@¾|ùIJ› ±ìLÙ  ±ƒžéëC,¯Ð˜‰AÀE¼'f põ½|ù2eÏžrçΖ!¿}ûF{÷î¥/_¾P³fÍ([¶lÖ¸7oÞ¤'NÐçÏŸ©\¹rT¯^=Šˆˆ —/_Ò­[·¨víÚV[îÞ½Kׯ_·êªT©B9rä°îÃUp¾ã¦J•Š6lH‡–y¥L™2\¯K’qþ:µ`Á:tèPX{éÒ%ª\¹2;wŽPqöïß/cÏ›7Ú¶mKgΜ¡'OžÐĉ©Q£FôéÓ'©9r¤Û¶nÝJãÇ2"ƒnݺ5M:Õ­]b+ðž &À¬W¯^ôêիľ" þqqq´téÒ€Úº5båoYLLŒâ¬Ðº÷Tظq£êÖ­›ªZµª*S¦ŒZ²d‰*Uª”*R¤ˆ:~ü¸ô_¸p¡te/¡Ê—/¯5zôh•'O¹?þ¼<_´h‘âŒB5nÜXµhÑB±·R=zôPëׯW¼(Å Jû‚ ª;vHöjðàÁŠ=…êÔ©“bo#õì{—òÌ™3“Gêð‡½Ú´i“ºvíšâÔX±g²ž¡ÀÄRsæÌQ»víRÕªUsy†&½êÙ³§UôèQ•)S&¹_¼x±*^¼¸`Á›!u[¶lQ ±˜1@ô+Z´¨Z±b…ôÃ{ú÷ïo½Ç^^=RïÞ½S]»vU9sæTLpõüùsuçÎYCûöíUÔܹs[öþ óƒ]½zUÕªUKöbøðáêçÏŸÒø£p2dˆ`ÄÞ]eÍšUð°ÏÁYÆœ­Y³†˜$ôãÇ7 ~ýúE¼‰KóçÏ/¥Cí±cLjIi]| ]¦Ì™âͰî#FÐ÷ïßå!ŸMš4‰Úµk'^ãÃàq[µjEÛ·o'>/ý :tè k[»v-¥OŸ^Þ ‰5k!i,„”:uê@†@ß1ØSQóæÍ‰O5=~ü˜vîÜI;w&>ħŒÆ'“Ç&ƒœèW¿~}™s±bÅܿޅ–(QB.ôåS!mb®\¹¨_¿~²YxHªÍ^Æ<Z@@€|ø`µq £p:ûöí+׼͛7‹÷|øð¡ÌÞ1**JæŠö¾ ›‚m7CT½zu!?¼”6-î=aP·n]Ù4ýq‘%±t²°Ì/«Çqþbîhƒ¾øâ=jÔ(i‚Cƒµ`oÒ¥K'Ä‚?”¿~ý*Ëb#ÏÐVús\Ó·!ý y <ÇwâøO¬½Ä½®^½ZÜ=6§†cº ážšÓ ÿüùCgÏž•Ó!Cfï²{÷nu .²;{§ Þ ÞpÖâgÏž-ãÀ›Á; ¼â´Ãð^l‚¾pïÍ0O!¡žÁ¹1“N àÍ0gH$ 8,0çû“Ý8ÀSA" "Àóø3x%D€&MšH˜DGÄñeš”¾Úxz’Çò4ê` Í›7o0Üã”#¶##@ÐeÐ8+V¤Ò¥KKŒ·Ÿ=Â' [É‚ CPÀÇŒ#Ù´ÖªU«ð ñLÐ% ¼ÊÉ 1Æ€w—/_.ä‚bñ+z ú¤àÄBÆC&‰{mœ¤XëÓuú¡ÄÇiǧ èB„½OÀ›AÃh2ÈhEëÒkÃ{R§Nm…WŒ ýاObÁ/šÉ—éy@ `Ý0|Â@8Áœ†ö•*U 1/žÜÙ'˲˜²B«±²Ad+ÈT´ñ¦*ÆŠÔUò‹Ì u5jÔP§OŸ¶žÍš5Kq*/åÇ­zÞ8ŧڙ…XÏ=8QðÚžCŠd@“Éä2Ocy«Ãútf„±8D¹5õ†æÇzÕ­} È„w0†ùݸqCa>þ Y7;ŸÍ MySQL++ Reference Manual MySQL++: Class Members
MySQL++  3.3.0
Here is a list of all documented class members with links to the class documentation for each member:

- o -

mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SslOption__coll__graph.png000644 000765 000024 00000006722 14042362133 027045 0ustar00tangentstaff000000 000000 ‰PNG  IHDRnRµãá-sRGB®Îé ŒIDATxíU†›ãˆ’ dE°DŀВ¥È&Ê2€  «„"ƒ« $”Q¤@P‘$IPTÀ#I%Gõ} o™ö¸]˜[nÇéªÛ™y3/õ߯ûM¸ÿe ‘@NI ×â Áª¸5„¸NˆqÑÈgŸ}F, þ2Q¯¾új4Pè5Q¸~øAÞ}÷]€þ2A_|ñ…üöÛoQÿ¨‹ºÄà¸h ..jö¾’8ïu—“ãR‹G•¬ZµJŠ+&W]u•'%þõ×_òí·ßÊ–-[äºë®“ÚµkËe—]UÙ+W®”+®¸Â³¶DU©ã¢„qýúõ“9sæ8šỳfÍ’»îºK>ýôSÙ¿¿ 6LªT©"«W¯N·PÀjÑ¢…ž_´h‘žîÅ™|ÂSà^yåiÙ²¥”/_^î½÷^AÑ¥J•’{î¹G°îwÞyGú÷ï¯]:räˆT®\Yþþûo1Ó`)Q¢„¯X±BÏ4HóÖ©SG4hF¡£F’gžyF¯/W®œ0#CP|›6mt$<òÈ#røðaM¯W¯ž¬_¿^Ö®]+ 6ÔYqóæÍeàÀ íúòË/¥iÓ¦Ò±cÇtËjÖ¬™|üñÇÒ¥KÙ°aƒìÙ³Gþý÷_iݺµ\~ùåR©R%ùî»ï4õêÕ}àÐÅÞ½{5Ý«OÛºu«,_¾\&Mš¤Vüá‡ÊŒ3$GŽòùçŸËí·ß.¤!ß|óäÌ™SÖ¬Y#Ó§O—_~ùEÁú¨Üxãê’P–ÿÇ3JŒÎ?ÿüS•qýõ×ËðáÃÕV«VMjÕª%=ôÆw§~øa©X±¢–qðàAÙ¼y³^òòË/ËÕW_-Ï=÷\8ŒËgT3ZNœ8!Ù²e“£G¦)vçÎjL6Ñ]VÁ‚Õqã .}ûí·eݺuB9”ÿúë¯kÛqÄQ/Åsஹæm_RR’)R$M[såÊ%7VЦM›¦JG¡óçÏבòâ‹/ÊóÏ?¯ÄÅZ!Ÿ[ *N:~ü¸Ž0l:iÄ®H€”Éhq ŒÇJ4ea0E‹µYÔ(N:¥ÇùòåÓmrr²ºçðEìx\Fmb”õêÕKãе×^+“'O–Ñ£G nhâĉ:Úêׯ¯`22P nÇ-(-]ºTÝ #™;w®œÑ©™ÌO¤²ˆiNÁ‹`„ÔÉÄéÊ+¯ŒËL3.·¸ þ@ù矄؅g:wî,ÌòŠÉV»½á†䨱cb-—ëm9¸× *ÈîݻҒ‰ë>øà²è„äûï¿WåÞÿý›úôé#Ï>ûlxJOLìÙ³§<øàƒš'RY€†«g2c¥I“&2eÊa’„‹ÄÕ»ÅÙ÷¹ >Žö©¦™!…̳Êh/O÷:°Cæþ'd:¾ÆXkÈL B&æ„ÓØ1ÊÔ43m™éwø\÷îÝC&ž„ h¡„ÓK 2£4œ–ÑŽ™†ÌÄ(d@IsizeQ¾»d¤Ng[Òʼnù¡FEqåéKâ2â¬UqÄ”›{¡âÅ‹Ûd!Z·N4;ÎØáL·ûLÁÝBYÎøè>ï>&ŽÙXæ>©,fÈ‘$–:#å5-®ÀáúˆM<ýˆE˜ú;Ýe‡"fgšOüòB¼,Ë‹ö¸Ëˆ+pÜ·Å  vˆ¼yóºû¡ÇЈ™ÒIô²¬tª¸¨ä¸Ï*/ªµA泈6&Úð9Їrå*“Poìcyž àÎÂ蟽úõû›û¿’šÚ×?rôÄ—®rÏžÃæ3€mzÏ·j•·šº»¤»¾nÚ´•’œœÝ<¹?!&,¹¤ άÊ} ÜØ± Ì“ùãæIÌ)óHm™çÏ 3 ŒXÊõpÛ·ï3ïÞv†u@_°`}øØ/;¾ŽfŸgÒ¡CÇ|é.}Üøñ Í{¶³OðO ™—˜«L¼;é—Á¦ýðpë×ï2Oè÷ÏçÎþcÓs È‚ ¾nâÄ¥:!qëùàÁ£ÂHô“øê¼t鎒;w²¾m°Ïˆw4¾PÙÃÌŽ¡½OIIQƒp·G3š\–ãÙ¦C5¼Á¬5€ËÄ `gg h}Y@!ì±Ç´è…—-[¦+T±¾Æ#GŽÔâ`D\¨ú!ü¶}°uE³8 ÅÒ¡k§3lí>¾ãŽ;”ÓŽc†‚«ç] ¨PÛS‹+”,Yòœöb \O( ÎcBnø$A€pïicí>VΨfq 5Ʊ=ZˆùÁ›8p0B6XÚ\¶lY]ÓØ8Ÿ'Ožp6ÚÆúÔSO)m?íà9*L¹ôùÖ[o½ ·zAÀÁë@CQ @pCÙLôî»ïÖ€NPGé(tÈ!’?~]]cÀ€ ¤“Þ7e®“·cËm:iv548sðÑG©õ0kôîÝ[GH¤öØüma´8…`Œ±õ³ïlÇN!ά`¸bÄ £­M³×E³½ à2*°ˆi0‘3ÚXíz^b d´±âëØÐF1Ó-( 6r&¸AÜ0‚û#Õ#”eg~vÃÂÛ±’´HíÑBÌŠ´îw‡àꙨÏgVùàåÕ¬YSoEXºW µ¾[¨ÓÖë>w¾ã4tŒfJû¬’ÀKcY¼ˆQ‡ 4,—ˆ;µ(€Æ,p˜X Ä"â ñŒë-°yÖÚ!V8]­-/Ò–‘Ku^Ÿ^{œùÉÇm1Í’tk ¼÷Þ{:Ûµý##Žrý#—‰‘Ù>‹pÊ¢¬¼eÅÓG¡Ìú˜Þ”ÂE±¨‚[œ1À}ŽãHç±P'‘ò9ÓˆIθĹôÚ“Q>{pÜÙÉ‹½Ænci«Í“ÑÖó‡Û#–¸™Ë3jÖEZ˶·vŠoó3B#iÏgöW‹tBfÖ—‡ÿ4:íV„0«˜K mÀ°Ümµm‹ç6Sf•ñìÀÿ¶.3K Ë<½7€úæí7}q¿Oãþ·Ö›€\e‚F“ààT Úìÿ!Ó±5P´ÚIEND®B`‚mysql++-3.3.0/doc/html/refman/globals_defs.html000644 000765 000024 00000006627 14042362133 022117 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: File Members
MySQL++  3.3.0
 
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1DBDriver.html000644 000765 000024 00000341240 14042362133 024241 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::DBDriver Class Reference
MySQL++  3.3.0

Provides a thin abstraction layer over the underlying database client library. More...

#include <dbdriver.h>

Public Types

enum  nr_code { nr_more_results , nr_last_result , nr_error , nr_not_supported }
 Result code returned by next_result() More...
 

Public Member Functions

 DBDriver ()
 Create object.
 
 DBDriver (const DBDriver &other)
 Duplicate an existing driver. More...
 
virtual ~DBDriver ()
 Destroy object.
 
ulonglong affected_rows ()
 Return the number of rows affected by the last query. More...
 
std::string client_version () const
 Get database client library version. More...
 
bool connect (const MYSQL &mysql)
 Establish a new connection using the same parameters as an existing connection. More...
 
virtual bool connect (const char *host, const char *socket_name, unsigned int port, const char *db, const char *user, const char *password)
 Connect to database server. More...
 
bool connected () const
 Return true if we have an active connection to the database server. More...
 
void copy (const DBDriver &other)
 Establish a new connection as a copy of an existing one. More...
 
bool create_db (const char *db) const
 Ask the database server to create a database. More...
 
void data_seek (MYSQL_RES *res, ulonglong offset) const
 Seeks to a particualr row within the result set. More...
 
void disconnect ()
 Drop the connection to the database server. More...
 
bool drop_db (const std::string &db) const
 Drop a database. More...
 
bool enable_ssl (const char *key=0, const char *cert=0, const char *ca=0, const char *capath=0, const char *cipher=0)
 Enable SSL-encrypted connection. More...
 
const char * error ()
 Return error message for last MySQL error associated with this connection. More...
 
int errnum ()
 Return last MySQL error number associated with this connection. More...
 
size_t escape_string (char *to, const char *from, size_t length)
 Return a SQL-escaped version of the given character buffer. More...
 
size_t escape_string (std::string *ps, const char *original, size_t length)
 Return a SQL-escaped version of a character buffer. More...
 
bool execute (const char *qstr, size_t length)
 Executes the given query string. More...
 
MYSQL_ROW fetch_row (MYSQL_RES *res) const
 Returns the next raw C API row structure from the given result set. More...
 
const unsigned long * fetch_lengths (MYSQL_RES *res) const
 Returns the lengths of the fields in the current row from a "use" query. More...
 
MYSQL_FIELD * fetch_field (MYSQL_RES *res, size_t i=UINT_MAX) const
 Returns information about a particular field in a result set. More...
 
void field_seek (MYSQL_RES *res, size_t field) const
 Jumps to the given field within the result set. More...
 
void free_result (MYSQL_RES *res) const
 Releases memory used by a result set. More...
 
st_mysql_options get_options () const
 Return the connection options object.
 
std::string ipc_info ()
 Get information about the IPC connection to the database server. More...
 
ulonglong insert_id ()
 Get ID generated for an AUTO_INCREMENT column in the previous INSERT query. More...
 
bool kill (unsigned long tid)
 Kill a MySQL server thread. More...
 
bool more_results ()
 Returns true if there are unconsumed results from the most recent query. More...
 
nr_code next_result ()
 Moves to the next result set from a multi-query. More...
 
int num_fields (MYSQL_RES *res) const
 Returns the number of fields in the given result set. More...
 
ulonglong num_rows (MYSQL_RES *res) const
 Returns the number of rows in the given result set. More...
 
bool ping ()
 "Pings" the MySQL database More...
 
int protocol_version ()
 Returns version number of MySQL protocol this connection is using. More...
 
std::string query_info ()
 Returns information about the last executed query. More...
 
bool refresh (unsigned options)
 Asks the database server to refresh certain internal data structures. More...
 
bool result_empty ()
 Returns true if the most recent result set was empty. More...
 
bool select_db (const char *db)
 Asks the database server to switch to a different database.
 
std::string server_version ()
 Get the database server's version number. More...
 
bool set_option (Option *o)
 Sets a connection option. More...
 
bool set_option (mysql_option moption, const void *arg=0)
 Set MySQL C API connection option.
 
bool set_option (unsigned int option, bool arg)
 Set MySQL C API connection option. More...
 
bool set_option_default (Option *o)
 Same as set_option(), except that it won't override a previously-set option.
 
bool shutdown ()
 Ask database server to shut down. More...
 
std::string server_status ()
 Returns the database server's status. More...
 
MYSQL_RES * store_result ()
 Saves the results of the query just execute()d in memory and returns a pointer to the MySQL C API data structure the results are stored in. More...
 
unsigned long thread_id ()
 Returns the MySQL server thread ID for this connection. More...
 
MYSQL_RES * use_result ()
 Returns a result set from the last-executed query which we can walk through in linear fashion, which doesn't store all result sets in memory. More...
 

Static Public Member Functions

static size_t escape_string_no_conn (char *to, const char *from, size_t length)
 SQL-escapes the given string without reference to the character set of a database server. More...
 
static size_t escape_string_no_conn (std::string *ps, const char *original=0, size_t length=0)
 SQL-escapes the given string without reference to the character set of a database server. More...
 
static bool thread_aware ()
 Returns true if MySQL++ and the underlying MySQL C API library were both compiled with thread awareness. More...
 
static void thread_end ()
 Tells the underlying MySQL C API library that this thread is done using the library. More...
 
static bool thread_start ()
 Tells the underlying C API library that the current thread will be using the library's services. More...
 

Protected Member Functions

bool connect_prepare ()
 Does things common to both connect() overloads, before each go and establish the connection in their different ways.
 
bool set_option_impl (Option *o)
 Common implementation of set_option(Option*) and the delayed option setting code in connect_prepare()
 

Detailed Description

Provides a thin abstraction layer over the underlying database client library.

This class does as little as possible to adapt between its public interface and the interface required by the underlying C API. That is, in fact, its only mission. The high-level interfaces indended for use by MySQL++ users are in Connection, Query, Result, and ResUse, all of which delegate the actual database communication to an object of this type, created by Connection. If you really need access to the low-level database driver, get it via Connection::driver(); don't create DBDriver objects directly.

Currently this is a concrete class for wrapping the MySQL C API. In the future, it may be turned into an abstract base class, with subclasses for different database server types.

Member Enumeration Documentation

◆ nr_code

Result code returned by next_result()

Enumerator
nr_more_results 

success, with more results to come

nr_last_result 

success, last result received

nr_error 

problem retrieving next result

nr_not_supported 

this C API doesn't support "next result"

Constructor & Destructor Documentation

◆ DBDriver()

mysqlpp::DBDriver::DBDriver ( const DBDriver other)

Duplicate an existing driver.

Parameters
otherexisting DBDriver object

This establishes a new database server connection with the same parameters as the other driver's.

References copy().

Member Function Documentation

◆ affected_rows()

ulonglong mysqlpp::DBDriver::affected_rows ( )
inline

Return the number of rows affected by the last query.

Wraps mysql_affected_rows() in the MySQL C API.

Referenced by mysqlpp::Query::affected_rows().

◆ client_version()

std::string mysqlpp::DBDriver::client_version ( ) const
inline

Get database client library version.

Wraps mysql_get_client_info() in the MySQL C API.

Referenced by mysqlpp::Connection::client_version(), and set_option_impl().

◆ connect() [1/2]

bool mysqlpp::DBDriver::connect ( const char *  host,
const char *  socket_name,
unsigned int  port,
const char *  db,
const char *  user,
const char *  password 
)
virtual

Connect to database server.

If you call this method on an object that is already connected to a database server, the previous connection is dropped and a new connection is established.

References connect_prepare().

◆ connect() [2/2]

bool mysqlpp::DBDriver::connect ( const MYSQL &  mysql)

Establish a new connection using the same parameters as an existing connection.

Parameters
mysqlexisting MySQL C API connection object

References connect_prepare().

Referenced by mysqlpp::Connection::connect(), and copy().

◆ connected()

bool mysqlpp::DBDriver::connected ( ) const
inline

Return true if we have an active connection to the database server.

This does not actually check whether the connection is viable, it just indicates whether there was previously a successful connect() call and no disconnect(). Call ping() to actually test the connection's viability.

Referenced by connect_prepare(), mysqlpp::Connection::connected(), copy(), set_option(), shutdown(), and ~DBDriver().

◆ copy()

void mysqlpp::DBDriver::copy ( const DBDriver other)

Establish a new connection as a copy of an existing one.

Parameters
otherthe connection to copy

References connect(), connected(), and disconnect().

Referenced by mysqlpp::Connection::copy(), and DBDriver().

◆ create_db()

bool mysqlpp::DBDriver::create_db ( const char *  db) const

Ask the database server to create a database.

Parameters
dbname of database to create
Returns
true if database was created successfully

◆ data_seek()

void mysqlpp::DBDriver::data_seek ( MYSQL_RES *  res,
ulonglong  offset 
) const
inline

Seeks to a particualr row within the result set.

Wraps mysql_data_seek() in MySQL C API.

◆ disconnect()

void mysqlpp::DBDriver::disconnect ( )

Drop the connection to the database server.

This method should only be used by MySQL++ library internals. Unless you use the default constructor, this object should always be connected.

Referenced by connect_prepare(), copy(), mysqlpp::Connection::disconnect(), and ~DBDriver().

◆ drop_db()

bool mysqlpp::DBDriver::drop_db ( const std::string &  db) const

Drop a database.

Parameters
dbname of database to destroy
Returns
true if database was created successfully

◆ enable_ssl()

bool mysqlpp::DBDriver::enable_ssl ( const char *  key = 0,
const char *  cert = 0,
const char *  ca = 0,
const char *  capath = 0,
const char *  cipher = 0 
)

Enable SSL-encrypted connection.

Parameters
keythe pathname to the key file
certthe pathname to the certificate file
cathe pathname to the certificate authority file
capathdirectory that contains trusted SSL CA certificates in pem format.
cipherlist of allowable ciphers to use
Returns
False if call fails or the C API library wasn't compiled with SSL support enabled.

Must be called before connection is established.

Wraps mysql_ssl_set() in MySQL C API.

◆ errnum()

int mysqlpp::DBDriver::errnum ( )
inline

Return last MySQL error number associated with this connection.

Wraps mysql_errno() in the MySQL C API.

Referenced by mysqlpp::Connection::errnum(), mysqlpp::UseQueryResult::fetch_row(), and mysqlpp::StoreQueryResult::StoreQueryResult().

◆ error()

const char* mysqlpp::DBDriver::error ( )
inline

Return error message for last MySQL error associated with this connection.

Can return a MySQL++ DBDriver-specific error message if there is one. If not, it simply wraps mysql_error() in the MySQL C API.

Referenced by mysqlpp::Connection::error(), mysqlpp::UseQueryResult::fetch_row(), mysqlpp::Connection::set_option(), and mysqlpp::StoreQueryResult::StoreQueryResult().

◆ escape_string() [1/2]

size_t mysqlpp::DBDriver::escape_string ( char *  to,
const char *  from,
size_t  length 
)
inline

Return a SQL-escaped version of the given character buffer.

Parameters
tocharacter buffer to hold escaped version; must point to at least (length * 2 + 1) bytes
frompointer to the character buffer to escape
lengthnumber of characters to escape
Return values
numberof characters placed in escaped

Wraps mysql_real_escape_string() in the MySQL C API.

Proper SQL escaping takes the database's current character set into account, however if a database connection isn't available DBDriver also provides a static version of this same method.

See also
escape_string_no_conn(char*, const char*, size_t)

Referenced by escape_string(), mysqlpp::Query::escape_string(), and mysqlpp::SQLStream::escape_string().

◆ escape_string() [2/2]

size_t mysqlpp::DBDriver::escape_string ( std::string *  ps,
const char *  original,
size_t  length 
)

Return a SQL-escaped version of a character buffer.

Parameters
pspointer to C++ string to hold escaped version; if original is 0, also holds the original data to be escaped
originalif given, pointer to the character buffer to escape instead of contents of *ps
lengthif both this and original are given, number of characters to escape instead of ps->length()
Return values
numberof characters placed in *ps

This method has three basic operation modes:

  • Pass just a pointer to a C++ string containing the original data to escape, plus act as receptacle for escaped version
  • Pass a pointer to a C++ string to receive escaped string plus a pointer to a C string to be escaped
  • Pass nonzero for all parameters, taking original to be a pointer to an array of char with given length; does not treat null characters as special

There's a degenerate fourth mode, where ps is zero: simply returns 0, because there is nowhere to store the result.

Note that if original is 0, we always ignore the length parameter even if it is nonzero. Length always comes from ps->length() in this case.

ps is a pointer because if it were a reference, the other overload would be impossible to call: the compiler would complain that the two overloads are ambiguous because std::string has a char* conversion ctor. A nice bonus is that pointer syntax makes it clearer that the first parameter is an "out" parameter.

See also
comments for escape_string(char*, const char*, size_t) for further details.
escape_string_no_conn(std::string*, const char*, size_t)

References escape_string().

◆ escape_string_no_conn() [1/2]

static size_t mysqlpp::DBDriver::escape_string_no_conn ( char *  to,
const char *  from,
size_t  length 
)
inlinestatic

SQL-escapes the given string without reference to the character set of a database server.

Wraps mysql_escape_string() in the MySQL C API.

See also
escape_string(char*, const char*, size_t)

Referenced by mysqlpp::Query::escape_string(), mysqlpp::SQLStream::escape_string(), and escape_string_no_conn().

◆ escape_string_no_conn() [2/2]

size_t mysqlpp::DBDriver::escape_string_no_conn ( std::string *  ps,
const char *  original = 0,
size_t  length = 0 
)
static

SQL-escapes the given string without reference to the character set of a database server.

See also
escape_string(std::string*, const char*, size_t), escape_string_no_conn(char*, const char*, size_t)

References escape_string_no_conn().

◆ execute()

bool mysqlpp::DBDriver::execute ( const char *  qstr,
size_t  length 
)
inline

Executes the given query string.

Wraps mysql_real_query() in the MySQL C API.

Referenced by mysqlpp::Query::exec(), mysqlpp::Query::execute(), shutdown(), mysqlpp::Query::store(), and mysqlpp::Query::use().

◆ fetch_field()

MYSQL_FIELD* mysqlpp::DBDriver::fetch_field ( MYSQL_RES *  res,
size_t  i = UINT_MAX 
) const
inline

Returns information about a particular field in a result set.

Parameters
resresult set to fetch field information for
ifield number to fetch information for, if given

If i parameter is given, this call is like a combination of field_seek() followed by fetch_field() without the i parameter, which otherwise just iterates through the set of fields in the given result set.

Wraps mysql_fetch_field() and mysql_fetch_field_direct() in MySQL C API. (Which one it uses depends on i parameter.)

Referenced by mysqlpp::ResultBase::ResultBase().

◆ fetch_lengths()

const unsigned long* mysqlpp::DBDriver::fetch_lengths ( MYSQL_RES *  res) const
inline

Returns the lengths of the fields in the current row from a "use" query.

Wraps mysql_fetch_lengths() in MySQL C API.

Referenced by mysqlpp::UseQueryResult::fetch_lengths(), and mysqlpp::StoreQueryResult::StoreQueryResult().

◆ fetch_row()

MYSQL_ROW mysqlpp::DBDriver::fetch_row ( MYSQL_RES *  res) const
inline

Returns the next raw C API row structure from the given result set.

This is for "use" query result sets only. "store" queries have all the rows already.

Wraps mysql_fetch_row() in MySQL C API.

Referenced by mysqlpp::UseQueryResult::fetch_raw_row(), mysqlpp::UseQueryResult::fetch_row(), and mysqlpp::StoreQueryResult::StoreQueryResult().

◆ field_seek()

void mysqlpp::DBDriver::field_seek ( MYSQL_RES *  res,
size_t  field 
) const
inline

Jumps to the given field within the result set.

Wraps mysql_field_seek() in MySQL C API.

Referenced by mysqlpp::ResultBase::ResultBase().

◆ free_result()

void mysqlpp::DBDriver::free_result ( MYSQL_RES *  res) const
inline

Releases memory used by a result set.

Wraps mysql_free_result() in MySQL C API.

Referenced by mysqlpp::StoreQueryResult::StoreQueryResult().

◆ insert_id()

ulonglong mysqlpp::DBDriver::insert_id ( )
inline

Get ID generated for an AUTO_INCREMENT column in the previous INSERT query.

Return values
0if the previous query did not generate an ID. Use the SQL function LAST_INSERT_ID() if you need the last ID generated by any query, not just the previous one. This applies to stored procedure calls because this function returns the ID generated by the last query, which was a CALL statement, and CALL doesn't generate IDs. You need to use LAST_INSERT_ID() to get the ID in this case.

Referenced by mysqlpp::Query::insert_id().

◆ ipc_info()

std::string mysqlpp::DBDriver::ipc_info ( )
inline

Get information about the IPC connection to the database server.

String contains info about type of connection (e.g. TCP/IP, named pipe, Unix socket...) and the server hostname.

Wraps mysql_get_host_info() in the MySQL C API.

Referenced by mysqlpp::Connection::ipc_info().

◆ kill()

bool mysqlpp::DBDriver::kill ( unsigned long  tid)
inline

Kill a MySQL server thread.

Parameters
tidID of thread to kill

Wraps mysql_kill() in the MySQL C API.

See also
thread_id()

Referenced by mysqlpp::Connection::kill().

◆ more_results()

bool mysqlpp::DBDriver::more_results ( )
inline

Returns true if there are unconsumed results from the most recent query.

Wraps mysql_more_results() in the MySQL C API.

Referenced by mysqlpp::Query::more_results().

◆ next_result()

nr_code mysqlpp::DBDriver::next_result ( )
inline

Moves to the next result set from a multi-query.

Returns
A code indicating whether we successfully found another result, there were no more results (but still success) or encountered an error trying to find the next result set.

Wraps mysql_next_result() in the MySQL C API, with translation of its return value from magic integers to nr_code enum values.

Referenced by mysqlpp::Query::store_next().

◆ num_fields()

int mysqlpp::DBDriver::num_fields ( MYSQL_RES *  res) const
inline

Returns the number of fields in the given result set.

Wraps mysql_num_fields() in MySQL C API.

◆ num_rows()

ulonglong mysqlpp::DBDriver::num_rows ( MYSQL_RES *  res) const
inline

Returns the number of rows in the given result set.

Wraps mysql_num_rows() in MySQL C API.

◆ ping()

bool mysqlpp::DBDriver::ping ( )
inline

"Pings" the MySQL database

This function will try to reconnect to the server if the connection has been dropped. Wraps mysql_ping() in the MySQL C API.

Return values
trueif server is responding, regardless of whether we had to reconnect or not
falseif either we already know the connection is down and cannot re-establish it, or if the server did not respond to the ping and we could not re-establish the connection.

Referenced by mysqlpp::Connection::ping().

◆ protocol_version()

int mysqlpp::DBDriver::protocol_version ( )
inline

Returns version number of MySQL protocol this connection is using.

Wraps mysql_get_proto_info() in the MySQL C API.

Referenced by mysqlpp::Connection::protocol_version().

◆ query_info()

string mysqlpp::DBDriver::query_info ( )

Returns information about the last executed query.

Wraps mysql_info() in the MySQL C API

Referenced by mysqlpp::Query::info().

◆ refresh()

bool mysqlpp::DBDriver::refresh ( unsigned  options)
inline

Asks the database server to refresh certain internal data structures.

Wraps mysql_refresh() in the MySQL C API. There is no corresponding interface for this in higher level MySQL++ classes because it was undocumented until recently, and it's a pretty low-level thing. It's designed for things like MySQL Administrator.

◆ result_empty()

bool mysqlpp::DBDriver::result_empty ( )
inline

Returns true if the most recent result set was empty.

Wraps mysql_field_count() in the MySQL C API, returning true if it returns 0.

Referenced by mysqlpp::Query::result_empty().

◆ server_status()

std::string mysqlpp::DBDriver::server_status ( )
inline

Returns the database server's status.

String is similar to that returned by the mysqladmin status command. Among other things, it contains uptime in seconds, and the number of running threads, questions and open tables.

Wraps mysql_stat() in the MySQL C API.

Referenced by mysqlpp::Connection::server_status().

◆ server_version()

std::string mysqlpp::DBDriver::server_version ( )
inline

Get the database server's version number.

Wraps mysql_get_server_info() in the MySQL C API.

Referenced by mysqlpp::Connection::server_version().

◆ set_option() [1/2]

bool mysqlpp::DBDriver::set_option ( Option o)

Sets a connection option.

This is the database-independent high-level option setting interface that Connection::set_option() calls. There are several private overloads that actually implement the option setting.

See also
Connection::set_option(Option*) for commentary

References connected(), and set_option_impl().

Referenced by mysqlpp::Connection::set_option().

◆ set_option() [2/2]

bool mysqlpp::DBDriver::set_option ( unsigned int  option,
bool  arg 
)

Set MySQL C API connection option.

Manipulates the MYSQL.client_flag bit mask. This allows these flags to be treated the same way as any other connection option, even though the C API handles them differently.

◆ shutdown()

bool mysqlpp::DBDriver::shutdown ( )

Ask database server to shut down.

User must have the "shutdown" privilege.

Wraps mysql_shutdown() in the MySQL C API.

References connected(), and execute().

Referenced by mysqlpp::Connection::shutdown().

◆ store_result()

MYSQL_RES* mysqlpp::DBDriver::store_result ( )
inline

Saves the results of the query just execute()d in memory and returns a pointer to the MySQL C API data structure the results are stored in.

See also
use_result()

Wraps mysql_store_result() in the MySQL C API.

Referenced by mysqlpp::Query::store(), and mysqlpp::Query::store_next().

◆ thread_aware()

bool mysqlpp::DBDriver::thread_aware ( )
static

Returns true if MySQL++ and the underlying MySQL C API library were both compiled with thread awareness.

This is based in part on a MySQL C API function mysql_thread_safe(). We deliberately don't call this wrapper thread_safe() because it's a misleading name: linking to thread-aware versions of the MySQL++ and C API libraries doesn't automatically make your program "thread-safe". See the chapter on threads in the user manual for more information and guidance.

Referenced by mysqlpp::Connection::thread_aware().

◆ thread_end()

static void mysqlpp::DBDriver::thread_end ( )
inlinestatic

Tells the underlying MySQL C API library that this thread is done using the library.

This exists because the MySQL C API library allocates some per-thread memory which it doesn't release until you call this.

Referenced by mysqlpp::Connection::thread_end().

◆ thread_id()

unsigned long mysqlpp::DBDriver::thread_id ( )
inline

Returns the MySQL server thread ID for this connection.

This has nothing to do with threading on the client side. It's a server-side thread ID, to be used with kill().

Referenced by mysqlpp::Connection::thread_id().

◆ thread_start()

static bool mysqlpp::DBDriver::thread_start ( )
inlinestatic

Tells the underlying C API library that the current thread will be using the library's services.

Return values
Trueif there was no problem

The MySQL++ user manual's chapter on threads details two major strategies for dealing with connections in the face of threads. If you take the simpler path, creating one DBDriver object per thread, it is never necessary to call this function; the underlying C API will call it for you when you establish the first database server connection from that thread. If you use a more complex connection management strategy where it's possible for one thread to establish a connection that another thread uses, you must call this from each thread that can use the database before it creates any MySQL++ objects. If you use a DBDriverPool object, this applies; DBDriverPool isn't smart enough to call this for you, and the MySQL C API won't do it, either.

Referenced by mysqlpp::Connection::thread_start().

◆ use_result()

MYSQL_RES* mysqlpp::DBDriver::use_result ( )
inline

Returns a result set from the last-executed query which we can walk through in linear fashion, which doesn't store all result sets in memory.

See also
store_result

Wraps mysql_use_result() in the MySQL C API.

Referenced by mysqlpp::Query::use().


The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1examples_1_1CommandLine-members.html000644 000765 000024 00000025146 14042362133 030621 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::examples::CommandLine Member List

This is the complete list of members for mysqlpp::examples::CommandLine, including all inherited members.

ArgumentList typedefmysqlpp::CommandLineBase
ArgumentListIt typedefmysqlpp::CommandLineBase
CommandLine(int argc, char *const argv[], const char *user=0, const char *pass=0, const char *usage_extra=0)mysqlpp::examples::CommandLine
CommandLineBase(int argc, char *const argv[], const char *opts)mysqlpp::CommandLineBaseinlineprotected
dtest_mode() constmysqlpp::examples::CommandLineinline
extra_args() constmysqlpp::CommandLineBaseinline
finish_parse()mysqlpp::CommandLineBaseprotected
operator void *() constmysqlpp::CommandLineBaseinline
option_argument() constmysqlpp::CommandLineBaseprotected
option_index() constmysqlpp::CommandLineBaseprotected
parse_error(const char *message=0)mysqlpp::CommandLineBaseprotected
parse_next() constmysqlpp::CommandLineBaseprotected
pass() constmysqlpp::examples::CommandLineinline
print_usage() constmysqlpp::examples::CommandLineinlinevirtual
print_usage(const char *extra) constmysqlpp::examples::CommandLine
program_name() constmysqlpp::CommandLineBaseinlineprotected
run_mode() constmysqlpp::examples::CommandLineinline
server() constmysqlpp::examples::CommandLineinline
successful() constmysqlpp::CommandLineBaseinlineprotected
user() constmysqlpp::examples::CommandLineinline
~CommandLineBase()mysqlpp::CommandLineBaseinlineprotectedvirtual
mysql++-3.3.0/doc/html/refman/functions_type.html000644 000765 000024 00000014015 14042362133 022532 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Typedefs
MySQL++  3.3.0
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Query.html000644 000765 000024 00000537113 14042362133 023713 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::Query Class Reference
MySQL++  3.3.0

A class for building and executing SQL queries. More...

#include <query.h>

Inheritance diagram for mysqlpp::Query:
Collaboration diagram for mysqlpp::Query:

Public Member Functions

 Query (Connection *c, bool te=true, const char *qstr=0)
 Create a new query object attached to a connection. More...
 
 Query (const Query &q)
 Create a new query object as a copy of another. More...
 
ulonglong affected_rows ()
 Return the number of rows affected by the last query.
 
size_t escape_string (std::string *ps, const char *original=0, size_t length=0) const
 Return a SQL-escaped version of a character buffer. More...
 
size_t escape_string (char *escaped, const char *original, size_t length) const
 Return a SQL-escaped version of the given character buffer. More...
 
int errnum () const
 Get the last error number that was set. More...
 
const char * error () const
 Get the last error message that was set. More...
 
std::string info ()
 Returns information about the most recently executed query.
 
ulonglong insert_id ()
 Get ID generated for an AUTO_INCREMENT column in the previous INSERT query. More...
 
Queryoperator= (const Query &rhs)
 Assign another query's state to this object. More...
 
 operator void * () const
 Test whether the object has experienced an error condition. More...
 
bool operator! () const
 Returns true if the query object is not in a bad state. More...
 
void parse ()
 Treat the contents of the query string as a template query. More...
 
void reset ()
 Reset the query object so that it can be reused. More...
 
bool result_empty ()
 Returns true if the most recent result set was empty. More...
 
std::string str ()
 Get built query as a C++ string.
 
std::string str (const SQLTypeAdapter &arg0)
 Get built query as a C++ string with template query parameter substitution. More...
 
std::string str (SQLQueryParms &p)
 Get built query as a null-terminated C++ string. More...
 
bool exec ()
 Execute a built-up query. More...
 
bool exec (const std::string &str)
 Execute a query. More...
 
SimpleResult execute ()
 Execute built-up query. More...
 
SimpleResult execute (SQLQueryParms &p)
 Execute template query using given parameters. More...
 
SimpleResult execute (const SQLTypeAdapter &str)
 Execute a query that returns no rows. More...
 
SimpleResult execute (const char *str, size_t len)
 Execute query in a known-length string of characters. This can include null characters. More...
 
UseQueryResult use ()
 Execute a query that can return rows, with access to the rows in sequence. More...
 
UseQueryResult use (SQLQueryParms &p)
 Execute a template query that can return rows, with access to the rows in sequence. More...
 
UseQueryResult use (const SQLTypeAdapter &str)
 Execute a query that can return rows, with access to the rows in sequence. More...
 
UseQueryResult use (const char *str, size_t len)
 Execute a query that can return rows, with access to the rows in sequence. More...
 
StoreQueryResult store ()
 Execute a query that can return a result set. More...
 
StoreQueryResult store (SQLQueryParms &p)
 Store results from a template query using given parameters. More...
 
StoreQueryResult store (const SQLTypeAdapter &str)
 Execute a query that can return rows, returning all of the rows in a random-access container. More...
 
StoreQueryResult store (const char *str, size_t len)
 Execute a query that can return rows, returning all of the rows in a random-access container. More...
 
template<typename Function >
Function for_each (const SQLTypeAdapter &query, Function fn)
 Execute a query, and call a functor for each returned row. More...
 
template<typename Function >
Function for_each (Function fn)
 Execute the query, and call a functor for each returned row. More...
 
template<class SSQLS , typename Function >
Function for_each (const SSQLS &ssqls, Function fn)
 Run a functor for every row in a table. More...
 
template<class Sequence , typename Function >
Function store_if (Sequence &con, const SQLTypeAdapter &query, Function fn)
 Execute a query, conditionally storing each row in a container. More...
 
template<class Sequence , class SSQLS , typename Function >
Function store_if (Sequence &con, const SSQLS &ssqls, Function fn)
 Pulls every row in a table, conditionally storing each one in a container. More...
 
template<class Sequence , typename Function >
Function store_if (Sequence &con, Function fn)
 Execute the query, conditionally storing each row in a container. More...
 
StoreQueryResult store_next ()
 Return next result set, when processing a multi-query. More...
 
bool more_results ()
 Return whether more results are waiting for a multi-query or stored procedure response. More...
 
template<class Sequence >
void storein_sequence (Sequence &con)
 Execute a query, storing the result set in an STL sequence container. More...
 
template<class Sequence >
void storein_sequence (Sequence &con, const SQLTypeAdapter &s)
 Executes a query, storing the result rows in an STL sequence container. More...
 
template<class Seq >
void storein_sequence (Seq &con, SQLQueryParms &p)
 Execute template query using given parameters, storing the results in a sequence type container. More...
 
template<class Set >
void storein_set (Set &con)
 Execute a query, storing the result set in an STL associative container. More...
 
template<class Set >
void storein_set (Set &con, const SQLTypeAdapter &s)
 Executes a query, storing the result rows in an STL set-associative container. More...
 
template<class Set >
void storein_set (Set &con, SQLQueryParms &p)
 Execute template query using given parameters, storing the results in a set type container. More...
 
template<class Container >
void storein (Container &con)
 Execute a query, and store the entire result set in an STL container. More...
 
template<class T >
void storein (T &con, SQLQueryParms &p)
 Store template query results into a container. More...
 
template<class T >
void storein (std::vector< T > &con, const SQLTypeAdapter &s)
 Specialization of storein_sequence() for std::vector.
 
template<class T >
void storein (std::deque< T > &con, const SQLTypeAdapter &s)
 Specialization of storein_sequence() for std::deque.
 
template<class T >
void storein (std::list< T > &con, const SQLTypeAdapter &s)
 Specialization of storein_sequence() for std::list.
 
template<class T >
void storein (std::set< T > &con, const SQLTypeAdapter &s)
 Specialization of storein_set() for std::set.
 
template<class T >
void storein (std::multiset< T > &con, const SQLTypeAdapter &s)
 Specialization of storein_set() for std::multiset.
 
template<class T >
Queryupdate (const T &o, const T &n)
 Replace an existing row's data with new data. More...
 
template<class T >
Queryinsert (const T &v)
 Insert a new row. More...
 
template<class Iter >
Queryinsert (Iter first, Iter last)
 Insert multiple new rows. More...
 
template<class Iter , class InsertPolicy >
Queryinsertfrom (Iter first, Iter last, InsertPolicy &policy)
 Insert multiple new rows using an insert policy to control how the INSERT statements are created using items from an STL container. More...
 
template<class Iter , class InsertPolicy >
Queryreplacefrom (Iter first, Iter last, InsertPolicy &policy)
 Replace multiple new rows using an insert policy to control how the REPLACE statements are created using items from an STL container. More...
 
template<class T >
Queryreplace (const T &v)
 Insert new row unless there is an existing row that matches on a unique index, in which case we replace it. More...
 
template<class Iter >
Queryreplace (Iter first, Iter last)
 Insert multiple new rows, or replace existing ones if there are existing rows that match on key fields. More...
 
- Public Member Functions inherited from mysqlpp::OptionalExceptions
 OptionalExceptions (bool e=true)
 Default constructor. More...
 
virtual ~OptionalExceptions ()
 Destroy object.
 
void enable_exceptions () const
 Enable exceptions from the object.
 
void disable_exceptions () const
 Disable exceptions from the object.
 
bool throw_exceptions () const
 Returns true if exceptions are enabled.
 

Public Attributes

SQLQueryParms template_defaults
 The default template parameters. More...
 

Friends

class SQLQueryParms
 

Additional Inherited Members

- Protected Member Functions inherited from mysqlpp::OptionalExceptions
void set_exceptions (bool e) const
 Sets the exception state to a particular value. More...
 

Detailed Description

A class for building and executing SQL queries.

One does not generally create Query objects directly. Instead, call mysqlpp::Connection::query() to get one tied to that connection.

There are several ways to build and execute SQL queries with this class.

The way most like other database libraries is to pass a SQL statement in either the form of a C or C++ string to one of the exec*(), store*(), or use() methods. The query is executed immediately, and any results returned.

For more complicated queries, it's often more convenient to build up the query string over several C++ statements using Query's stream interface. It works like any other C++ stream (std::cout, std::ostringstream, etc.) in that you can just insert things into the stream, building the query up piece by piece. When the query string is complete, you call the overloaded version of exec*(), store*(), or use() takes no parameters, which executes the built query and returns any results.

If you are using the library's Specialized SQL Structures feature, Query has several special functions for generating common SQL queries from those structures. For instance, it offers the insert() method, which builds an INSERT query to add the contents of the SSQLS to the database. As with the stream interface, these methods only build the query string; call one of the parameterless methods mentioned previously to actually execute the query.

Finally, you can build "template queries". This is something like C's printf() function, in that you insert a specially-formatted query string into the object which contains placeholders for data. You call the parse() method to tell the Query object that the query string contains placeholders. Having done that, you call one of the the many exec*(), store*(), or use() overloads that take SQLTypeAdapter objects. There are 25 of each by default, differing only in the number of STA objects they take. (See lib/querydef.pl if you need to change the limit, or examples/tquery2.cpp for a way around it that doesn't require changing the library.) Only the version taking a single STA object is documented below, as to document all of them would just be repetitive. For each Query method that takes a single STA object, there's a good chance there's a set of undocumented overloads that take more of them for the purpose of filling out a template query.

See the user manual for more details about these options.

Constructor & Destructor Documentation

◆ Query() [1/2]

mysqlpp::Query::Query ( Connection c,
bool  te = true,
const char *  qstr = 0 
)

Create a new query object attached to a connection.

This is the constructor used by mysqlpp::Connection::query().

Parameters
cconnection the finished query should be sent out on
teif true, throw exceptions on errors
qstran optional initial query string

◆ Query() [2/2]

mysqlpp::Query::Query ( const Query q)

Create a new query object as a copy of another.

This is not a traditional copy ctor! Its only purpose is to make it possible to assign the return of Connection::query() to an empty Query object. In particular, the stream buffer and template query stuff will be empty in the copy, regardless of what values they have in the original.

References operator=().

Member Function Documentation

◆ errnum()

int mysqlpp::Query::errnum ( ) const

Get the last error number that was set.

This just delegates to Connection::errnum(). Query has nothing extra to say, so use either, as makes sense in your program.

References mysqlpp::Connection::errnum().

Referenced by exec(), execute(), store(), store_next(), and use().

◆ error()

const char * mysqlpp::Query::error ( ) const

Get the last error message that was set.

This just delegates to Connection::error(). Query has nothing extra to say, so use either, as makes sense in your program.

References mysqlpp::Connection::error().

Referenced by exec(), execute(), store(), store_next(), and use().

◆ escape_string() [1/2]

size_t mysqlpp::Query::escape_string ( char *  escaped,
const char *  original,
size_t  length 
) const

Return a SQL-escaped version of the given character buffer.

Parameters
escapedcharacter buffer to hold escaped version; must point to at least (length * 2 + 1) bytes
originalpointer to the character buffer to escape
lengthnumber of characters to escape
Return values
numberof characters placed in escaped

DBDriver provides two versions of this method and Query::escape_string() calls the appropriate one based on whether or not a database connection is available. If the connection is available, it can call the DBDriver::escape_string() method. If there is no database connection available (normally only in testing), then DBDriver provides a static version of the function that doesn't use a database connection.

See also
comments for DBDriver::escape_string(char*, const char*, size_t), DBDriver::escape_string_no_conn(char*, const char*, size_t) for further details.

References mysqlpp::Connection::driver(), mysqlpp::DBDriver::escape_string(), and mysqlpp::DBDriver::escape_string_no_conn().

◆ escape_string() [2/2]

size_t mysqlpp::Query::escape_string ( std::string *  ps,
const char *  original = 0,
size_t  length = 0 
) const

Return a SQL-escaped version of a character buffer.

Parameters
pspointer to C++ string to hold escaped version; if original is 0, also holds the original data to be escaped
originalif given, pointer to the character buffer to escape instead of contents of *ps
lengthif both this and original are given, number of characters to escape instead of ps->length()
Return values
numberof characters placed in *ps
See also
comments for escape_string(char*, const char*, size_t) and DBDriver::escape_string(std::string*, const char *, size_t) for further details.

References mysqlpp::Connection::driver(), mysqlpp::DBDriver::escape_string(), and mysqlpp::DBDriver::escape_string_no_conn().

◆ exec() [1/2]

bool mysqlpp::Query::exec ( )
inline

Execute a built-up query.

Same as exec(), except that it uses the query string built up within the query object already instead of accepting a query string from the caller.

Returns
true if query was executed successfully
See also
exec(const std::string& str), execute(), store(), storein(), and use()

References exec().

Referenced by mysqlpp::Connection::create_db(), mysqlpp::Connection::drop_db(), and exec().

◆ exec() [2/2]

bool mysqlpp::Query::exec ( const std::string &  str)

Execute a query.

Same as execute(), except that it only returns a flag indicating whether the query succeeded or not. It is basically a thin wrapper around the C API function mysql_real_query().

Parameters
strthe query to execute
Returns
true if query was executed successfully
See also
execute(), store(), storein(), and use()

References mysqlpp::Connection::driver(), errnum(), error(), mysqlpp::DBDriver::execute(), reset(), str(), and mysqlpp::OptionalExceptions::throw_exceptions().

◆ execute() [1/4]

SimpleResult mysqlpp::Query::execute ( )

Execute built-up query.

Use one of the execute() overloads if you don't expect the server to return a result set. For instance, a DELETE query. The returned SimpleResult object contains status information from the server, such as whether the query succeeded, and if so how many rows were affected.

This overloaded version of execute() simply executes the query that you have built up in the object in some way. (For instance, via the insert() method, or by using the object's stream interface.)

Returns
SimpleResult status information about the query
See also
exec(), store(), storein(), and use()

References str(), and template_defaults.

Referenced by mysqlpp::Transaction::commit(), execute(), mysqlpp::Transaction::rollback(), and mysqlpp::Transaction::Transaction().

◆ execute() [2/4]

SimpleResult mysqlpp::Query::execute ( const char *  str,
size_t  len 
)

Execute query in a known-length string of characters. This can include null characters.

Executes the query immediately, and returns the results.

References affected_rows(), mysqlpp::Connection::driver(), errnum(), error(), execute(), mysqlpp::DBDriver::execute(), info(), insert_id(), reset(), str(), template_defaults, and mysqlpp::OptionalExceptions::throw_exceptions().

◆ execute() [3/4]

SimpleResult mysqlpp::Query::execute ( const SQLTypeAdapter str)

Execute a query that returns no rows.

Parameters
strif this object is set up as a template query, this is the value to substitute for the first template query parameter; else, it is the SQL query string to execute

Because SQLTypeAdapter can be initialized from either a C string or a C++ string, this overload accepts query strings in either form. Beware, SQLTypeAdapter also accepts many other data types (this is its raison d'etre), so it will let you write code that compiles but results in bogus SQL queries.

To support template queries, there many more overloads of this type (25 total, by default; see lib/querydef.pl), each taking one more SQLTypeAdapter object than the previous one. See the template query overview above for more about this topic.

References mysqlpp::SQLTypeAdapter::data(), execute(), mysqlpp::SQLTypeAdapter::length(), and template_defaults.

◆ execute() [4/4]

SimpleResult mysqlpp::Query::execute ( SQLQueryParms p)

Execute template query using given parameters.

This method should only be used by code that doesn't know, at compile time, how many parameters it will have. This is useful within the library, and also for code that builds template queries dynamically, at run time.

Parameters
pparameters to use in the template query.

References execute(), str(), and template_defaults.

◆ for_each() [1/3]

template<typename Function >
Function mysqlpp::Query::for_each ( const SQLTypeAdapter query,
Function  fn 
)
inline

Execute a query, and call a functor for each returned row.

This method wraps a use() query, calling the given functor for every returned row. It is analogous to STL's for_each() algorithm, but instead of iterating over some range within a container, it iterates over a result set produced by a query.

Parameters
querythe query string
fnthe functor called for each row
Returns
a copy of the passed functor

References mysqlpp::UseQueryResult::fetch_row().

◆ for_each() [2/3]

template<class SSQLS , typename Function >
Function mysqlpp::Query::for_each ( const SSQLS &  ssqls,
Function  fn 
)
inline

Run a functor for every row in a table.

Just like for_each(Function), except that it builds a "select * from TABLE" query using the SQL table name from the SSQLS instance you pass.

Parameters
ssqlsthe SSQLS instance to get a table name from
fnthe functor called for each row
Returns
a copy of the passed functor

References mysqlpp::UseQueryResult::fetch_row().

◆ for_each() [3/3]

template<typename Function >
Function mysqlpp::Query::for_each ( Function  fn)
inline

Execute the query, and call a functor for each returned row.

Just like for_each(const SQLTypeAdapter&, Function), but it uses the query string held by the Query object already

Parameters
fnthe functor called for each row
Returns
a copy of the passed functor

References mysqlpp::UseQueryResult::fetch_row().

◆ insert() [1/2]

template<class T >
Query& mysqlpp::Query::insert ( const T &  v)
inline

Insert a new row.

This function builds an INSERT SQL query. One uses it with MySQL++'s Specialized SQL Structures mechanism.

Parameters
vnew row
See also
replace(), update()

◆ insert() [2/2]

template<class Iter >
Query& mysqlpp::Query::insert ( Iter  first,
Iter  last 
)
inline

Insert multiple new rows.

Builds an INSERT SQL query using items from a range within an STL container. Insert the entire contents of the container by using the begin() and end() iterators of the container as parameters to this function.

Parameters
firstiterator pointing to first element in range to insert
lastiterator pointing to one past the last element to insert
See also
insertfrom(), replace(), update()

◆ insert_id()

ulonglong mysqlpp::Query::insert_id ( )

Get ID generated for an AUTO_INCREMENT column in the previous INSERT query.

Return values
0if the previous query did not generate an ID. Use the SQL function LAST_INSERT_ID() if you need the last ID generated by any query, not just the previous one. This applies to stored procedure calls because this function returns the ID generated by the last query, which was a CALL statement, and CALL doesn't generate IDs. You need to use LAST_INSERT_ID() to get the ID in this case.

References mysqlpp::Connection::driver(), and mysqlpp::DBDriver::insert_id().

Referenced by execute().

◆ insertfrom()

template<class Iter , class InsertPolicy >
Query& mysqlpp::Query::insertfrom ( Iter  first,
Iter  last,
InsertPolicy &  policy 
)
inline

Insert multiple new rows using an insert policy to control how the INSERT statements are created using items from an STL container.

Parameters
firstiterator pointing to first element in range to insert
lastiterator pointing to one past the last element to insert
policyinsert policy object, see insertpolicy.h for details
See also
insert()

◆ more_results()

bool mysqlpp::Query::more_results ( )

Return whether more results are waiting for a multi-query or stored procedure response.

If this function returns true, you must call store_next() to fetch the next result set before you can execute more queries.

Wraps mysql_more_results() in the MySQL C API. That function only exists in MySQL v4.1 and higher. Therefore, this function always returns false when built against older API libraries.

Returns
true if another result set exists

References mysqlpp::Connection::driver(), and mysqlpp::DBDriver::more_results().

◆ operator void *()

mysqlpp::Query::operator void * ( ) const

Test whether the object has experienced an error condition.

Allows for code constructs like this:

Query q = conn.query();
.... use query object
if (q) {
... no problems in using query object
}
else {
... an error has occurred
}
Query(Connection *c, bool te=true, const char *qstr=0)
Create a new query object attached to a connection.
Definition: query.cpp:41
const char * error() const
Get the last error message that was set.
Definition: query.cpp:103
UseQueryResult use()
Execute a query that can return rows, with access to the rows in sequence.
Definition: query.cpp:625

This method returns false if either the Query object or its associated Connection object has seen an error condition since the last operation.

◆ operator!()

bool mysqlpp::Query::operator! ( ) const
inline

Returns true if the query object is not in a bad state.

This just returns the opposite of operator void*(), and is required only because basic_ios defines it, so we have to override it to get Query-specific behavior in code like this:

if (!query) ...

◆ operator=()

Query & mysqlpp::Query::operator= ( const Query rhs)

Assign another query's state to this object.

The same caveats apply to this operator as apply to the copy ctor.

References mysqlpp::OptionalExceptions::set_exceptions(), template_defaults, and mysqlpp::OptionalExceptions::throw_exceptions().

Referenced by Query().

◆ parse()

void mysqlpp::Query::parse ( )

Treat the contents of the query string as a template query.

This method sets up the internal structures used by all of the other members that accept template query parameters. See the "Template Queries" chapter in the user manual for more information.

References str().

◆ replace() [1/2]

template<class T >
Query& mysqlpp::Query::replace ( const T &  v)
inline

Insert new row unless there is an existing row that matches on a unique index, in which case we replace it.

This function builds a REPLACE SQL query. One uses it with MySQL++'s Specialized SQL Structures mechanism.

Parameters
vnew row
See also
insert(), update()

◆ replace() [2/2]

template<class Iter >
Query& mysqlpp::Query::replace ( Iter  first,
Iter  last 
)
inline

Insert multiple new rows, or replace existing ones if there are existing rows that match on key fields.

Builds a REPLACE SQL query using items from a range within an STL container. Insert the entire contents of the container by using the begin() and end() iterators of the container as parameters to this function.

Parameters
firstiterator pointing to first element in range to insert/replace
lastiterator pointing to one past the last element to insert/replace
See also
insertfrom(), replace(), update()

◆ replacefrom()

template<class Iter , class InsertPolicy >
Query& mysqlpp::Query::replacefrom ( Iter  first,
Iter  last,
InsertPolicy &  policy 
)
inline

Replace multiple new rows using an insert policy to control how the REPLACE statements are created using items from an STL container.

Parameters
firstiterator pointing to first element in range to replace
lastiterator pointing to one past the last element to replace
policyinsert policy object, see insertpolicy.h for details
See also
insert()

◆ reset()

void mysqlpp::Query::reset ( )

Reset the query object so that it can be reused.

As of v3.0, Query objects auto-reset upon query execution unless you've set it up for making template queries. (It can't auto-reset in that situation, because it would forget the template info.) Therefore, the only time you must call this is if you have a Query object set up for making template queries, then want to build queries using one of the other methods. (Static strings, SSQLS, or the stream interface.)

References mysqlpp::SQLQueryParms::clear(), and template_defaults.

Referenced by exec(), execute(), store(), and use().

◆ result_empty()

bool mysqlpp::Query::result_empty ( )

Returns true if the most recent result set was empty.

Wraps DBDriver::result_empty()

References mysqlpp::Connection::driver(), and mysqlpp::DBDriver::result_empty().

◆ store() [1/4]

StoreQueryResult mysqlpp::Query::store ( )

Execute a query that can return a result set.

Use one of the store() overloads to execute a query and retrieve the entire result set into memory. This is useful if you actually need all of the records at once, but if not, consider using one of the use() methods instead, which returns the results one at a time, so they don't allocate as much memory as store().

You must use store(), storein() or use() for SELECT, SHOW, DESCRIBE and EXPLAIN queries. You can use these functions with other query types, but since they don't return a result set, exec() and execute() are more efficient.

The name of this method comes from the MySQL C API function it is implemented in terms of, mysql_store_result().

This function has the same set of overloads as execute().

Returns
StoreQueryResult object containing entire result set
See also
exec(), execute(), storein(), and use()

References str(), and template_defaults.

Referenced by mysqlpp::Connection::count_rows(), store(), and store_next().

◆ store() [2/4]

StoreQueryResult mysqlpp::Query::store ( const char *  str,
size_t  len 
)

Execute a query that can return rows, returning all of the rows in a random-access container.

This overload is for situations where you have the query in a C string and have its length already. If you want to execute a query in a null-terminated C string or have the query string in some other form, you probably want to call store(const SQLTypeAdapter&) instead. SQLTypeAdapter converts from plain C strings and other useful data types implicitly.

References mysqlpp::Connection::driver(), mysqlpp::Connection::errnum(), errnum(), error(), mysqlpp::DBDriver::execute(), reset(), store(), mysqlpp::DBDriver::store_result(), str(), template_defaults, and mysqlpp::OptionalExceptions::throw_exceptions().

◆ store() [3/4]

StoreQueryResult mysqlpp::Query::store ( const SQLTypeAdapter str)

Execute a query that can return rows, returning all of the rows in a random-access container.

Parameters
strif this object is set up as a template query, this is the value to substitute for the first template query parameter; else, it is the SQL query string to execute

Because SQLTypeAdapter can be initialized from either a C string or a C++ string, this overload accepts query strings in either form. Beware, SQLTypeAdapter also accepts many other data types (this is its raison d'etre), so it will let you write code that compiles but results in bogus SQL queries.

To support template queries, there many more overloads of this type (25 total, by default; see lib/querydef.pl), each taking one more SQLTypeAdapter object than the previous one. See the template query overview above for more about this topic.

References mysqlpp::SQLTypeAdapter::data(), mysqlpp::SQLTypeAdapter::length(), store(), and template_defaults.

◆ store() [4/4]

StoreQueryResult mysqlpp::Query::store ( SQLQueryParms p)

Store results from a template query using given parameters.

This method should only be used by code that doesn't know, at compile time, how many parameters it will have. This is useful within the library, and also for code that builds template queries dynamically, at run time.

Parameters
pparameters to use in the template query.

References store(), str(), and template_defaults.

◆ store_if() [1/3]

template<class Sequence , typename Function >
Function mysqlpp::Query::store_if ( Sequence &  con,
const SQLTypeAdapter query,
Function  fn 
)
inline

Execute a query, conditionally storing each row in a container.

This method wraps a use() query, calling the given functor for every returned row, and storing the results in the given sequence container if the functor returns true.

This is analogous to the STL copy_if() algorithm, except that the source rows come from a database query instead of another container. (copy_if() isn't a standard STL algorithm, but only due to an oversight by the standardization committee.) This fact may help you to remember the order of the parameters: the container is the destination, the query is the source, and the functor is the predicate; it's just like an STL algorithm.

Parameters
conthe destination container; needs a push_back() method
querythe query string
fnthe functor called for each row
Returns
a copy of the passed functor

References mysqlpp::UseQueryResult::fetch_row().

◆ store_if() [2/3]

template<class Sequence , class SSQLS , typename Function >
Function mysqlpp::Query::store_if ( Sequence &  con,
const SSQLS &  ssqls,
Function  fn 
)
inline

Pulls every row in a table, conditionally storing each one in a container.

Just like store_if(Sequence&, const SQLTypeAdapter&, Function), but it uses the SSQLS instance to construct a "select * from TABLE" query, using the table name field in the SSQLS.

Parameters
conthe destination container; needs a push_back() method
ssqlsthe SSQLS instance to get a table name from
fnthe functor called for each row
Returns
a copy of the passed functor

References mysqlpp::UseQueryResult::fetch_row().

◆ store_if() [3/3]

template<class Sequence , typename Function >
Function mysqlpp::Query::store_if ( Sequence &  con,
Function  fn 
)
inline

Execute the query, conditionally storing each row in a container.

Just like store_if(Sequence&, const SQLTypeAdapter&, Function), but it uses the query string held by the Query object already

Parameters
conthe destination container; needs a push_back() method
fnthe functor called for each row
Returns
a copy of the passed functor

References mysqlpp::UseQueryResult::fetch_row().

◆ store_next()

StoreQueryResult mysqlpp::Query::store_next ( )

Return next result set, when processing a multi-query.

There are two cases where you'd use this function instead of the regular store() functions.

First, when handling the result of executing multiple queries at once. (See this page in the MySQL documentation for details.)

Second, when calling a stored procedure, MySQL can return the result as a set of results.

In either case, you must consume all results before making another MySQL query, even if you don't care about the remaining results or result sets.

As the MySQL documentation points out, you must set the MYSQL_OPTION_MULTI_STATEMENTS_ON flag on the connection in order to use this feature. See Connection::set_option().

Multi-queries only exist in MySQL v4.1 and higher. Therefore, this function just wraps store() when built against older API libraries.

Returns
StoreQueryResult object containing the next result set.

References mysqlpp::Connection::driver(), mysqlpp::Connection::errnum(), errnum(), error(), mysqlpp::DBDriver::next_result(), mysqlpp::DBDriver::nr_error, mysqlpp::DBDriver::nr_more_results, store(), mysqlpp::DBDriver::store_result(), and mysqlpp::OptionalExceptions::throw_exceptions().

◆ storein() [1/2]

template<class Container >
void mysqlpp::Query::storein ( Container &  con)
inline

Execute a query, and store the entire result set in an STL container.

This is a set of specialized template functions that call either storein_sequence() or storein_set(), depending on the type of container you pass it. It understands std::vector, deque, list, slist (a common C++ library extension), set, and multiset.

Like the functions it wraps, this is actually an overloaded set of functions. See the other functions' documentation for details.

Use this function if you think you might someday switch your program from using a set-associative container to a sequence container for storing result sets, or vice versa.

See exec(), execute(), store(), and use() for alternative query execution mechanisms.

◆ storein() [2/2]

template<class T >
void mysqlpp::Query::storein ( T &  con,
SQLQueryParms p 
)
inline

Store template query results into a container.

This method is not intended to be used directly. It is part of the call chain in processing calls to one of the many storein() overloads that take a container and one or more SQLTypeAdapter parameters.

◆ storein_sequence() [1/3]

template<class Seq >
void mysqlpp::Query::storein_sequence ( Seq &  con,
SQLQueryParms p 
)
inline

Execute template query using given parameters, storing the results in a sequence type container.

This method should only be used by code that doesn't know, at compile time, how many parameters it will have. This is useful within the library, and also for code that builds template queries dynamically, at run time.

Parameters
concontainer that will receive the results
pparameters to use in the template query.

◆ storein_sequence() [2/3]

template<class Sequence >
void mysqlpp::Query::storein_sequence ( Sequence &  con)
inline

Execute a query, storing the result set in an STL sequence container.

This function works much like store() from the caller's perspective, because it returns the entire result set at once. It's actually implemented in terms of use(), however, so that memory for the result set doesn't need to be allocated twice.

There are many overloads for this function, pretty much the same as for execute(), except that there is a Container parameter at the front of the list. So, you can pass a container and a query string, or a container and template query parameters.

Parameters
conany STL sequence container, such as std::vector
See also
exec(), execute(), store(), and use()

◆ storein_sequence() [3/3]

template<class Sequence >
void mysqlpp::Query::storein_sequence ( Sequence &  con,
const SQLTypeAdapter s 
)
inline

Executes a query, storing the result rows in an STL sequence container.

Parameters
conthe container to store the results in
sif Query is set up as a template query, this is the value to substitute for the first template query parameter; else, the SQL query string

There many more overloads of this type (25 total, by default; see lib/querydef.pl), each taking one more SQLTypeAdapter object than the previous one. See the template query overview above for more about this topic.

◆ storein_set() [1/3]

template<class Set >
void mysqlpp::Query::storein_set ( Set con)
inline

Execute a query, storing the result set in an STL associative container.

The same thing as storein_sequence(), except that it's used with associative STL containers, such as std::set. Other than that detail, that method's comments apply equally well to this one.

◆ storein_set() [2/3]

template<class Set >
void mysqlpp::Query::storein_set ( Set con,
const SQLTypeAdapter s 
)
inline

Executes a query, storing the result rows in an STL set-associative container.

Parameters
conthe container to store the results in
sif Query is set up as a template query, this is the value to substitute for the first template query parameter; else, the SQL query string

There many more overloads of this type (25 total, by default; see lib/querydef.pl), each taking one more SQLTypeAdapter object than the previous one. See the template query overview above for more about this topic.

◆ storein_set() [3/3]

template<class Set >
void mysqlpp::Query::storein_set ( Set con,
SQLQueryParms p 
)
inline

Execute template query using given parameters, storing the results in a set type container.

This method should only be used by code that doesn't know, at compile time, how many parameters it will have. This is useful within the library, and also for code that builds template queries dynamically, at run time.

Parameters
concontainer that will receive the results
pparameters to use in the template query.

◆ str() [1/2]

std::string mysqlpp::Query::str ( const SQLTypeAdapter arg0)
inline

Get built query as a C++ string with template query parameter substitution.

Parameters
arg0the value to substitute for the first template query parameter; because SQLTypeAdapter implicitly converts from many different data types, this method is very flexible in what it accepts as a parameter. You shouldn't have to use the SQLTypeAdapter data type directly in your code.

There many more overloads of this type (25 total, by default; see lib/querydef.pl), each taking one more SQLTypeAdapter object than the previous one. See the template query overview above for more about this topic.

◆ str() [2/2]

std::string mysqlpp::Query::str ( SQLQueryParms p)

Get built query as a null-terminated C++ string.

Parameters
ptemplate query parameters to use, overriding the ones this object holds, if any

◆ update()

template<class T >
Query& mysqlpp::Query::update ( const T &  o,
const T &  n 
)
inline

Replace an existing row's data with new data.

This function builds an UPDATE SQL query using the new row data for the SET clause, and the old row data for the WHERE clause. One uses it with MySQL++'s Specialized SQL Structures mechanism.

Parameters
oold row
nnew row
See also
insert(), replace()

◆ use() [1/4]

UseQueryResult mysqlpp::Query::use ( )

Execute a query that can return rows, with access to the rows in sequence.

Use one of the use() overloads if memory efficiency is important. They return an object that can walk through the result records one by one, without fetching the entire result set from the server. This is superior to store() when there are a large number of results; store() would have to allocate a large block of memory to hold all those records, which could cause problems.

A potential downside of this method is that MySQL database resources are tied up until the result set is completely consumed. Do your best to walk through the result set as expeditiously as possible.

The name of this method comes from the MySQL C API function that initiates the retrieval process, mysql_use_result(). This method is implemented in terms of that function.

This function has the same set of overloads as execute().

Returns
UseQueryResult object that can walk through result set serially
See also
exec(), execute(), store() and storein()

References str(), and template_defaults.

Referenced by use().

◆ use() [2/4]

UseQueryResult mysqlpp::Query::use ( const char *  str,
size_t  len 
)

Execute a query that can return rows, with access to the rows in sequence.

This overload is for situations where you have the query in a C string and have its length already. If you want to execute a query in a null-terminated C string or have the query string in some other form, you probably want to call use(const SQLTypeAdapter&) instead. SQLTypeAdapter converts from plain C strings and other useful data types implicitly.

References mysqlpp::Connection::driver(), mysqlpp::Connection::errnum(), errnum(), error(), mysqlpp::DBDriver::execute(), reset(), str(), template_defaults, mysqlpp::OptionalExceptions::throw_exceptions(), use(), and mysqlpp::DBDriver::use_result().

◆ use() [3/4]

UseQueryResult mysqlpp::Query::use ( const SQLTypeAdapter str)

Execute a query that can return rows, with access to the rows in sequence.

Parameters
strif this object is set up as a template query, this is the value to substitute for the first template query parameter; else, it is the SQL query string to execute

Because SQLTypeAdapter can be initialized from either a C string or a C++ string, this overload accepts query strings in either form. Beware, SQLTypeAdapter also accepts many other data types (this is its raison d'etre), so it will let you write code that compiles but results in bogus SQL queries.

To support template queries, there many more overloads of this type (25 total, by default; see lib/querydef.pl), each taking one more SQLTypeAdapter object than the previous one. See the template query overview above for more about this topic.

References mysqlpp::SQLTypeAdapter::data(), mysqlpp::SQLTypeAdapter::length(), template_defaults, and use().

◆ use() [4/4]

UseQueryResult mysqlpp::Query::use ( SQLQueryParms p)

Execute a template query that can return rows, with access to the rows in sequence.

This method should only be used by code that doesn't know, at compile time, how many parameters it will have. This is useful within the library, and also for code that builds template queries dynamically, at run time.

Parameters
pparameters to use in the template query.

References str(), template_defaults, and use().

Member Data Documentation

◆ template_defaults

SQLQueryParms mysqlpp::Query::template_defaults

The default template parameters.

Used for filling in parameterized queries.

Referenced by execute(), operator=(), reset(), store(), and use().


The documentation for this class was generated from the following files:
mysql++-3.3.0/doc/html/refman/functions_v.html000644 000765 000024 00000010007 14042362133 022013 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
MySQL++  3.3.0
Here is a list of all documented class members with links to the class documentation for each member:

- v -

doc/html/refman/structmysqlpp_1_1RefCountedPointerDestroyer_3_01MYSQL__RES_01_4-members.html000644 000765 000024 00000010044 14042362133 034626 0ustar00tangentstaff000000 000000 mysql++-3.3.0 MySQL++ Reference Manual MySQL++: Member List
MySQL++  3.3.0
mysqlpp::RefCountedPointerDestroyer< MYSQL_RES > Member List

This is the complete list of members for mysqlpp::RefCountedPointerDestroyer< MYSQL_RES >, including all inherited members.

operator()(MYSQL_RES *doomed) constmysqlpp::RefCountedPointerDestroyer< MYSQL_RES >inline
mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ReportDataTruncationOption.html000644 000765 000024 00000031522 14042362133 030104 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::ReportDataTruncationOption Class Reference
MySQL++  3.3.0
mysqlpp::ReportDataTruncationOption Class Reference

Set reporting of data truncation errors. More...

#include <options.h>

Inheritance diagram for mysqlpp::ReportDataTruncationOption:
Collaboration diagram for mysqlpp::ReportDataTruncationOption:

Additional Inherited Members

- Public Types inherited from mysqlpp::DataOption< T >
typedef T ArgType
 Alias for template param.
 
- Public Types inherited from mysqlpp::Option
enum  Error {
  err_NONE , err_api_limit , err_api_reject , err_connected ,
  err_disconnected
}
 Types of option setting errors we can diagnose. More...
 
- Public Member Functions inherited from mysqlpp::Option
virtual ~Option ()
 Destroy object.
 
virtual Error set (DBDriver *dbd)=0
 Apply option.
 
- Protected Member Functions inherited from mysqlpp::DataOption< T >
 DataOption (const T &arg)
 Construct object.
 
- Protected Attributes inherited from mysqlpp::DataOption< T >
arg_
 The argument value.
 

Detailed Description

Set reporting of data truncation errors.


The documentation for this class was generated from the following file:
mysql++-3.3.0/doc/html/refman/menu.js000644 000765 000024 00000006226 14042362133 020102 0ustar00tangentstaff000000 000000 /* @licstart The following is the entire license notice for the JavaScript code in this file. The MIT License (MIT) Copyright (C) 1997-2020 by Dimitri van Heesch Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @licend The above is the entire license notice for the JavaScript code in this file */ function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { function makeTree(data,relPath) { var result=''; if ('children' in data) { result+=''; } return result; } $('#main-nav').append(makeTree(menudata,relPath)); $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); if (searchEnabled) { if (serverSide) { $('#main-menu').append('
  • '); } else { $('#main-menu').append('
  • '); } } $('#main-menu').smartmenus(); } /* @license-end */ mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Set__coll__graph.png000644 000765 000024 00000007753 14042362133 025653 0ustar00tangentstaff000000 000000 ‰PNG  IHDRŽR‚ì\sRGB®Îé¥IDATxípUÅÆ‚"6°Dłн+âX°Ž½+ŽŠ]lØÇ2Žú·÷‚а+öBT *QE1ìÿüìóæñîk¹‰ÏÉîLòîÝ»»w÷ÛoÏ9{ßM¾fN“„(²ˇâC '¡(qŠ‚-Tj‘$#GŽ”ÚÚÚ$› m%ˆÀ6Ûl#Ë-·\"-&JœÅ‹ËN;í$-Z$Úl"mêŒ7NæÍ›—q‚«jêŒ*rü8E×Ô«â4u9þ’&Î| ¿ÿþ{‘Ck¸jIöëí·ß– 4\g¨å’ Îé§Ÿ.üñ2C¼òÊ+eüøñËäšñùçŸËI'Th5I²_qm½òÊ+ò×_Ü·½_9$•Þÿ}÷÷ßgmîÑGun¸¡[k­µÜc=æèt‹èÖ\sM÷óÏ?»Ûn»ÍUTT¸ÝvÛÍuëÖÍÕÔÔ8%ëÝ»·µûä“OºË.»ÌŽÏ?ÿ|×¹sg·é¦›ºÑ£G[Þ³Ï>ëÖ_}×µkW÷àƒZÞFmäÚ´i㮺ê*;÷¿t¥»Áƒ»›nºÉÕ·_Ñ>fkë³Ï>sû;ì°ÃÜÕW_ízõêåfΜéÎ;ï}úiW^ye÷ú믻çŸÞ­¸âŠî믿¶öô†›;w®eÆŒîšk®q«¯¾ºÛ~ûíÝ /¼Pï~ù>æãĉùnÐõë×Ï}ÿý÷n•UVq?þø£;üðÃ}œ4i’;æ˜c\ß¾}ml\Wkìî¿ÿ~«nl…Vpûï¿¿6lX^óóŸ&Ž>çq›o¾¹ÛsÏ=ÍÚhübƒÞ}÷Ý €ÊÊJwÀ¤€À*aq2%H O>ùd÷ꫯ:¬‡Æ ¶:ï¾ûnÇO÷îÝÝ#<â{Çw´‰8ᄌPÔcõ“’ìW®¶°záÂ…vï(q°T¤¡C‡š…}æ™glAX¦þºú>ÿñÇî¾ûîs›l²‰Ã¢Bþl)iâ4jŒÓ¬Y3ÑI5Ïrï½÷ÊÖ[o-<4ôIWž¨Åð§Ò¡C‡ÔqúZ Q ': ræ™gZ<¢+XÊËËeöìÙösÔQG‰º±TUò_zé%Qò ×zôèa×’ìW®¶¸áJ+­$Í›7OõËèB°C * D­“´nÝÚ_–Ž;¦Ž){ðÁË‘G)ß}÷|øá‡©kqШÄQ+!Gq„\pÁÂÎDcQoãÔØHÔË{ï½'ê~äÛo¿]%vM]Œ‘„Ê“¯®H4>ODW¦¼óÎ;¢q==묳Dã‰îXh_c™>}º}ôÑֵ䮻¾ýò}Ì5FPž¿4Æ“wß}WÔºÈW_}•Ú(ðÕαÇ+êªeÊ”)¢VÙpȳÙDŠ5êwjjEM³¨ ²OuKv¼å–[Šº#_Y¬·ÞzÒ²eKÑ@QXÁ&LõçF¨§Ÿ~ZÔõi.ºè"yë­·D;\xá…ÖæñÇ/jºm§²ë®»ÊvÛm'¿üò‹hì ‹¤¶Ãb—yÕ¥‰¢õîW´ÙÆÈ.Š1åJ”9ðÀm| Ó¶m[³.ŒûŒ3Î{î¹'«UÎuz]Ïæ ½–+8öíáçýõWjŸ¹>¿üùçŸþ4ösÑ¢ENW¢Óíl2´¥+±N1Pz9_Àï“êíæjËß;Û§Z]7hÐ ‹ß~úé'שS' ð‰£ MIÇ8Íè@½˜©Ì ÞvÛmלLêsˆ{åm¬ Ï¢°27ÞxcQMò%'ñc4†,ª¡¥•ÕUÕ§£M±.îZwQ¢ÖË6Õ¥’qJe&²ôCff¹úï\jÔ]Õ¿3Äp׆@ Q‹SVV–Ú67Dg³Í3æéf¶Æló¶ z¯ŠŠŠÄÚO48N¬W%ÐP¿~CôùÐ(}žô?iÕ*ÑõU£«‚«Ê€á¢E‹åµ×Æès“V2lØ’‡Š5é¬@œ Ó?bÄ)+k¦O¡k¥²²qågèNIfâd˜–Áƒkô1ÿ’¿Ö¨©™¬ÇÿÁ÷e2Œ+ɬ@œ44kkJUîiÉsÑ–-›ë³cÒJ…Ó@œ4Ó”—ÿ ã® î* & ÄIC¤²rä2®iìØé2sæÜ´’Mû4'2ÿÄ255“"9K›7/“¡CG/“ß”3q"³Ï¼¼|Ù¬æÏ_ÜU'ÿqæišâé€ÕúF¢Hûömì <Þ`[N ÁÔy¢c1Npœ78yC Fĉ¢ŽóF NŒ“w­,ˆ®”êMšŠ\·Aš…a”vQä˦ºWÌý¦NªÿeŒ¨ ­¨¾§¨hl1Íd­£¢¢2L¦ß•µ`#^,9‹£*¿¢Š¾‰@€êÊ)§œbÊròœsΑQ£FŶMy÷òMO=õ”\qÅ&>.¹äyã7ò­ž*‡Ü¤êp¦ÎÓœDf±”RÁ Ct©8d5£rÇ Q©¸O>ùÄ”ÜTÕVjkkMcéÖ[o•i6ùCV<åPÁSå_|óШ<í´ÓRØ&+™ÉTe]›ôvØAN=õTA1•<ô6/½ôRÓ­ìß¿¿É)véÒEÿÒ’cúɹ×GzqòäÉv$ `š èsî·ß~rÝu× “„ª §úÂØØqªÌ³i`r‰Æ*í8dÈ“"OååÅ_äP¾üòKaÜÔÙe—]D¥®M6| ñ¬Y³l÷ºñÆ‹Ê\[UW]Uÿý+ëª~X0ê©è­`um¼ýöÛMwyIÚUÙiAÖQ•å‹/¾0lPÐCëJ¥¸­=”Q $¡cJßUÂÚt°,³ˆ_[ô!E÷’A«­Éª´ ¥ªæ·þûaÖ,¤^7 ÷Úk/yî¹çLgRuÇåòË/—ƒ:È,AT¸`q1È!"öþÐCY› á/Îô£>²|ä½ð©?F޽'OU¿[TeNÿQROQe=Ue˜¬<ð€`1 åºë®kº¡4Š6¨JUÛ¹ªìÚ5»™þB3©HÄd}Z~ùåM+“sÄj÷Ùg¹ù曑1„ÊÀމc²Ñ}â‰'d5Ö°ITedÙj«­¬x<üðöp "´ 2`1ÁZå¯Mv‘­2‹ rCT0@g”²huªªžõÃ÷QõÝMÂL(ÏÜ“ &7a¥«l±©èòéq+ƒB0t1YõœC2¬ ú™Jå­ t80=åiCõÉmÕQæÐC5@° €CâÙ“óǨæbÕXm’ªT¡­Lfåa— !!:ĺá†ì™+U:ô/Q«ó ¥,j¦¡!©ŠÒ›À*c!IXMDX÷Øc³ÅÒÑ„Íp•(#£= qù‰&¬‹ÌÁA\,+ce‘ ŽÌXHŒ‡EUÅCÐÒ©TµÅ’X4情PH*Š8¬4à©À|û!ߌ‰E©–& e°"1µ˜Pˆ„Kð ÐÒ÷‰Å„|>yq 7ÂB0D\!n°!.Õ=¯cM0ýLî”k™„Ƙ4ˆÇ8|â^X Ücõ õJÈHòÁ3„IWµäœI„d`Ã=Ò“¯O¾oƒñP—±¤CXsC™L 2õRoæ Â1–BRQÄÉuÈBLƒgðÕÕÕ4Ã0XV/f@YÕ^F:Ú6æÕ7~üx[‘¸A¥Ö¦¢¢Âòh «DòÇwˆ%$,yè†â™d¬ý„$>W[m5³T—ÃÓt䪩ï&ŸX wã‰{¡òáþ°J, ÜP¶Ä}é'®ƒ€|pËéäÊÔ“¥AR¼‘šŽKàF|‡¼6± B~«_H*88ÎÖ¸—EfÐsæÌ±‰¡ü[l!Ćto\+7‚?Ž®$ß«ù¸ãŽ3OLE>@2™„U}ñÅ[—ø¼óÎ;­MLÜ)” 1Íšk}4&Àßl³ÍLr‹†›ÅŒãî ùˆÄ8HDØ“ ÷!À†€L $+”™žr’é:“N‚ôv£çÄD>.Ê•Oì—2‘†²™úH>äÃ…ä“ü޲Ñ`6®íLmfЉÒËÅ!½\®óx”rÕŒ¹NÔÎÖ—§¿…$vÞªPÏxémk$5øô¶Ãyþ$NÌm¡¤¡»é!º£Ã)dFë…ãdh]U²] ­•$ºKI¥áá ÀðÆ_Ì éoÖÙU•$³C§JàªJrZJ¿S8¥?G%ÙÃ@œ’œ–ÒïÔÿ§6ÕG8ÿ¯“IEND®B`‚mysql++-3.3.0/doc/html/refman/inherit_graph_23.png000644 000765 000024 00000006550 14042362133 022435 0ustar00tangentstaff000000 000000 ‰PNG  IHDR˜%¾– ŠsRGB®Îé "IDATx휰EÇÄ@PDÓ1g1$‘BĬUJ0+(Š¢"Z*H$À„R ˜怢‚ ˜ b‚ùú×:ëܲ÷ÞÝóÞã}²]u·»3;3=3=ÝÿJNIRJW lV`Aå²é7í5]¿V °TÊtR+ÓåM;0˜§3f€ÇÒOº¥–9sæxqâ:?Cƒ©€Iß¾}ºô“®AÞ2pÜqlj X†ÚΰŒšô!]¬@*`XÄ´‹ì+ XöµIk °U ÐGA»˜={¶l¾ùæ²å–[þë~?ÿüs™7o^ÔOÍš5eï½÷–6Ú(*‹ßüþûïòÄOH³fÍdÓM7•ùóçË‹/¾(›l²‰tèÐAªW¯oR.Ï ,õÖ[OêÖ­+/¿ür4æöÛo/Mš4‰žã7?ÿü³¼õÖ[Ò¼yóxU¹[É?òÈ#rÉ%—؆°)#GŽ”FÉ_|‘µÿ3Ï(|ð¦™ÏK/½$—^z©´jÕJV¯^ØÍòåËåÉ'ŸL¬£ðwÞ‘ÓO?=ký¿®}Êþýû;õ"â5îï¹çwüñÇ»}÷Ý×í²Ë.nذan§vr 6t:ak¯cí~ùå·ûî»»¥K—º‹/¾ØÕ¯_ßžgÍšeõ7ß|³Ûzë­]ëÖ­]»víœj/wÒI'¹»ï¾ÛÝ~ûíî”SN±÷‹ŠŠœ ‹µÙgŸ}œ Ó“ìºtéâô„ZyÛ¶m݇~˜që­·ºc=ÖÊü×6Ûlã~øa§⮼òJŸ>_}õUwï½÷:ÕTn»í¶sÏ<óŒ«Q£†ûöÛo}S÷ý÷߻뮻ΞU«ÙükÕªåtƒÜüáîºë.wÍ5×XýâÅ‹]‹-ìþàƒv]t‘Ûb‹-\Ë–-Ý?üàzôèa¡æÄ Ÿ{î9c·Ýv³¾ìfΜ阃§ß~ûÍ©Fvo¿ý¶[´h‘kÓ¦SMíTèÜÂ… Ý'Ÿ|â:wîl¯'ñ±óÎ;»ªU«º~ýú¹üÑuëÖÍÕ«WÏqÄÑÜá¹wïÞVæÇMºªà»I“&…U™aŠ\¤UGÐ *rÐAIÏž=e̘1rôÑG›†ÐÍëJ7I6Ø`3S>ú¨i‚SO=Utã…~®¾új{÷ÜsÏ5³¤±ðÍ7ßÈã?.÷ß¿ Õ®¸â «{÷ÝwE7UtAeÉ’%B¿Ð™¯ðþ³Ï>³1tó…q8é‡rˆ™x@¦N**¨ö騱£xà2hÐ ã¯Aƒf’lýb\Ïš‘“ÿÔSOÉ믿.Ï?ÿ¼¨ |C*p¢o÷hæö /Èwß}'=ö˜¨°HåÊ•åÎ;ïLä>Ï>ûlÑC&ÇÏ0õôõÐC üŸsÎ9‚é׃,·Ür‹¨pÈo¼a¼¢±ýõWÓ¾0’ÄÇ!CDXzõêeûßX À\ñ¯‚- °ç|¾Je"±çzDO¨aÿÕW_Éá‡.ü±èi²ÍëÚµ«™%=M6 ðÂèÑ£m´;ôÐCEO˜ì°ÃkðyÚqÇ…>~úé§È´1qÕ†rÚi§E†°zÜÞÃÓ´iӌՆ«6Þxc;$ª ÌÔ€¯ØxÕV²á†Ú†q0V®\¹O Ø®j%á@uÖY¶á‰/ka¥J•D5€Ísöå—_ žg¸€wÜn˜-¯ÚqNbrˆäƒùÀ‚à:éE`š±4&f¡ƒjÕªÉþûïo å`.úŸ•DÅeð¨“Ðëöb%Âx?é¹ Œ‰áÞç+\´q¢=±Ð|âÄb³A`§ñïÖ Ê ‚FŒá«ì]ž.bKvÀ>ñ<„NÍÅ®ˆç!Üxv¤XxóA„øäB¸üÙ²7Z?8 ÄùzÆæžEq‘ø\xY›ïü³£k“‹bÆÆYШ¾h¶@„zÂ<‘¡wžÍð„`Ð — ˆh¼+ÞgI¹_ô^)BC€¡@CâxÂ[Ä âçK8Š%£f€o 1<Ì.±¥8ÝvÛm¦•5#`UÄúÐÌ!]ýõn!@7oá{á¾à¬P“BðdØ\¢Èx;!¡q8„"W‡óD²šÍA[á‘= ‡wF`”h?ÞÛM7Ýd‚H]RR „ ªƒâ»ÎùŠ×IV#žE M% ^žÿà•BðJ¦¨¨HÎ;ï<¡cŽ9ÆêüÍË;šºŠâƒ¾¾"]+œ€qZq÷Ál:Ifb:I¸‡샨¤”0g! 8Ð4Ó^{í%šãŒª†jq%°éB&d ˆÉùXZô²Þz(¦È–E o Ä{ì}üüˆ¤“!l€V=òÈ#3´ mÑÊhYB?êÅÚÚp˜J :Ó¶Ü)tE ¦ûÌ÷~òäÉŽP„j§Â•Ø\ãNN7È©@8BK„æP`í£e´Ñ¸›S-•©¹tšJŠž 1hnÒ5Ê!iïIêc nÕbNƒ½NÓ6Nsv¾ºØk<ÑN¨Aó{Ö ëpœ°# P;5÷Q‘lmŽQApïŠÏœâ4§ž«SÜÔ–ÿmR˜¢Âi0´í…&#HKN-žŠá$’êá„cfh— aVÐZœ~ÝóØH9ú@Ëáý‘Ò‚ÈFÒBÓ…ÐfD¾ýÇ søs>À±€Û÷ᯔ3'r©`A­o! Il£y üÐz>¥¾»¶ï39_ÛÜü=>f‚Ü øÞ7n\ÄBS€`gr0œƒ«®ºÊð øÓøf“ÈSbrùÕ<<ýôÓ– NV³aÞü'læ³ðió}ø+¿‚8ùä“-<æ$äsùå—‹jWÛéO}ì82úÓ'‹9‚-+"UB‘zÆ89¤b¸V4Bƒ…aŒBðG¸Æ‡Ävw!„`@BIñ(~Á€'9ÍN:…Eyßkßr‘Iå²X‹¼Lh@j‹âS„úÊ‚ ¦ðó(´pÑoÜ3õca’º¸çßãJž2þ3êâ~’¶-îmÇ'‰Êb-’Æ)DÙÿ€b²eчÇfeÑ÷¡Ï ‰Áþ ›Îá¯H,•„²]@¾§éS”ú?t—Ò¶ºñÿ¦Èð"ËV”ÓÞ×ÁHÿ€nÜôrrŠÁÊu¹×½ÁR[÷ö¼\gü?ÁG%Î9“ãIEND®B`‚mysql++-3.3.0/doc/html/refman/inherit_graph_37.png000644 000765 000024 00000004300 14042362133 022431 0ustar00tangentstaff000000 000000 ‰PNG  IHDRE”ÜÆsRGB®ÎézIDATh훌M†ëÐw‡à$¸»‡àî\ƒ»×4Á=Ááà,¸[pg¿yêOofçÛýŽ=ŽÿŽd*ÙÝžî™êêê·ÞªžÜ…x,W\ïcÑ‚Æ}ÂõÀÿ<à‚ÇEB¸=à‚'Ü®sj# þq?®übàæÍ›*ü†ú0>|8€r?®|0P¥J±ÀãC·>àñq/\„á}’|ùòÉË—/¥oß¾’6mZ½>{ö¬ŽÏœ9SÒ§O/•+W–êÕ«ËÅ‹½ Z²d‰´iÓFïÏ”)“lݺUÇ .,]ºt‘”)SJÆ •Q€ÌiÀ´7oÞ¬v3F&Mš$7n”7oÞÈÕ«We„ jïüùóeüøñrìØ1eÙ³g{m°7¬Ï »P¡BÚ.]º´´jÕÊ{~åüÙÈ °^Æ£‘[·nɳgϤN:²víZÓ-3fÌÖ¨8òàÁ©Y³¦®ŸÁVˆ¿9[´h!«W¯–‘#G꺛4i"©R¥’Zµjé|÷ïß×vãÆeôèѪ'˜¯ ÁCdlÙ²E­÷ë×O/^,õë×— ¨cW­Z¥6ìÝ»WbÅŠ%W®\‘;vÈåË—³fÍÒ5j”po÷îÝe÷îÝ^ ðð“'Ot#p&l4dÈÕ ƒ$NœX ŽC/R¼xq‰7®O»sçÎBºÉ˜1£ôèÑCîܹ#5ÒgsæÌé“Âx°B… réÒ%Õñ+_Ì @_½z¥ëÙ´i“ÚáÏFØoݺu 4>?þÔi–-[&-[¶”fÍš©?èdý"ÁÙºuk/ëL:U ‘Ú.\¨:üÍ9yòdMÇýû÷×=úö훲:~êÙ³§|ýúU¶oß.iÒ¤‘öíÛ«ž`¾‚Ê¡rsùòå¥L™2Þ6ÑAdI>TGÁ°Ã"Ø´E‹é"ÐQ®\9©[·®dË–í_v׫WOräÈ¡ C:¹wïžÞÃÂÍ‚ x¢©“L›(Ã6Í ²ÇŽ+ß¿×:Ç9!)(f̘Îî€×I“&U_ìܹSÎZLMâ´‘€ƒu¨]$H l|÷î]ÐòåËøÔT¡¡¡rûöm!ðð/,Ó¶m[É!ƒÚc’ÞæÎ«éÆ2âœ3a„ºÀÂüøƒ`‚͘!§M›&éÒ¥3j~ù7\àÉœ9³N@¡˜$IŸÉbÇŽ­THšÙ¶m›n<›zäÈ5´[·nÒµkW2q¦žsŠÙú‰CѦŸ¾·oß:ó^SŸÀ6íÚµÓ¨'ÊæÍ›'Y²dQÄ`½xñBë ç`„à`¬—¶§Ì=ztM¤N^ÆÆ_7Ð>|XmÌž=»²ÏãÇõà`ôdÀ€šbð¥ƒ]œsÚǘŸÔÉÜ€·wïÞ:L`Wx$\à k"œH„P—°Q6l¨…º)ˆ«U«¦€‚`NN9xð Fæ©S§42)~¢‡N àäÔdoãXˆ@€/Q¢„2Ú¸qãTìEmF*ìÔ©“ÞKJæÍǤ´}Ášá|hqÚƒÀjÛM›6••+W*xðKŸ>}ÔGø‰´Äþaý” 0)!½S¿±ù'NœP@š“~ìG˜Æ!ý“ óè`8¿"ô¨Î1aáÔÔ24KÄà`ÀBDúÊŸ?¿Û_¾|‘xñâé½|=¤:"V ¸¦ŸM¤ø&A¹K—.ÕçjÔ¨¡Ñ L›b ¢–pÔhýúõB¡ˆ@Ž ÔggΜQ}Ô(\¡6ë1}üòZ¡@ň?Ί+4˜XE, `H¥F8<v^-P“Îy–gýÔ&|`-‡`Ä·þæD?%i›ú¯­•þ(8ÀPŸ!Æ×fþ ~-*óŠµ E§Þëð6¬…{¬ ñ<}úÔ«ÂÚ8UŒz¬¼îí£a¥"í+V¬˜Ç:xÇ,‡z†ê±íy÷î·?FŒ+]y,¶òö…Õ°¢7àý{¬‚^uZ€ñ±!,½fܪó<Öf˜KÏÙh„®É{s «ŽôàO»XuŽÇ í²‚Ôc'àœøÊîsëýÕ¿ôÙuj[ïÈ<ÖIÒ>¡Ìjy·À‘•÷ )R¤ð™h7)ÆÛi5ì/íìý¦m¢Ù\ó‹.{½dóצ0õ€sÜ^(š´è¼ç¿®‹-ª)•wFv d#¯+‚s°?Û9ø›Óy eE”D8xxçC®¶/ðWŒåýˆ=u™‚Îù,”ÞÏ©+"®ywäDdØsF8x¨‚›èd†8qâøÝÛ°˜ÊïC°Ó ¦Š #cÎ?rÚúƒ{媎J°W@Ü¿$ôûtÖ~¹ý–œIx¢˜][þ¸ÿzó×lU4Ô­y¢à¦ü-&¹àù[v* ÚùÜüµ•‹©ÉIEND®B`‚mysql++-3.3.0/doc/html/refman/structmysqlpp_1_1NullIsNull.html000644 000765 000024 00000010720 14042362133 025054 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::NullIsNull Struct Reference
    MySQL++  3.3.0
    mysqlpp::NullIsNull Struct Reference

    Class for objects that define SQL null in terms of MySQL++'s null_type. More...

    #include <null.h>

    Detailed Description

    Class for objects that define SQL null in terms of MySQL++'s null_type.

    Returns a null_type instance when you ask what null is, and is "(NULL)" when you insert it into a C++ stream.

    Used for the behavior parameter for template Null


    The documentation for this struct was generated from the following file:
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1LocalFilesOption.html000644 000765 000024 00000030654 14042362133 026012 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::LocalFilesOption Class Reference
    MySQL++  3.3.0
    mysqlpp::LocalFilesOption Class Reference

    Enable LOAD DATA LOCAL statement. More...

    #include <options.h>

    Inheritance diagram for mysqlpp::LocalFilesOption:
    Collaboration diagram for mysqlpp::LocalFilesOption:

    Additional Inherited Members

    - Public Types inherited from mysqlpp::DataOption< T >
    typedef T ArgType
     Alias for template param.
     
    - Public Types inherited from mysqlpp::Option
    enum  Error {
      err_NONE , err_api_limit , err_api_reject , err_connected ,
      err_disconnected
    }
     Types of option setting errors we can diagnose. More...
     
    - Public Member Functions inherited from mysqlpp::Option
    virtual ~Option ()
     Destroy object.
     
    virtual Error set (DBDriver *dbd)=0
     Apply option.
     
    - Protected Member Functions inherited from mysqlpp::DataOption< T >
     DataOption (const T &arg)
     Construct object.
     
    - Protected Attributes inherited from mysqlpp::DataOption< T >
    arg_
     The argument value.
     

    Detailed Description

    Enable LOAD DATA LOCAL statement.


    The documentation for this class was generated from the following file:
    mysql++-3.3.0/doc/html/refman/cmdline_8h_source.html000644 000765 000024 00000136462 14042362133 023066 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: cmdline.h Source File
    MySQL++  3.3.0
    cmdline.h
    1 /***********************************************************************
    2  cmdline.h - Declares the interface to the MySQL++'s command line
    3  parsing logic, used by the examples and the utility programs.
    4  Not intended for use by third parties! If it breaks, you
    5  get to keep all the pieces.
    6 
    7  Copyright (c) 2007-2009 by Educational Technology Resources, Inc.
    8  Others may also hold copyrights on code in this file. See the
    9  CREDITS.txt file in the top directory of the distribution for details.
    10 
    11  This file is part of MySQL++.
    12 
    13  MySQL++ is free software; you can redistribute it and/or modify it
    14  under the terms of the GNU Lesser General Public License as published
    15  by the Free Software Foundation; either version 2.1 of the License, or
    16  (at your option) any later version.
    17 
    18  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
    19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    20  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
    21  License for more details.
    22 
    23  You should have received a copy of the GNU Lesser General Public
    24  License along with MySQL++; if not, write to the Free Software
    25  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
    26  USA
    27 ***********************************************************************/
    28 
    29 #if !defined(MYSQLPP_CMDLINE_H)
    30 #define MYSQLPP_CMDLINE_H
    31 
    32 #include "common.h"
    33 
    34 #include <string>
    35 #include <vector>
    36 
    37 #include <assert.h>
    38 
    39 namespace mysqlpp {
    44  class MYSQLPP_EXPORT CommandLineBase
    45  {
    46  public:
    49  typedef std::vector<std::string> ArgumentList;
    51  typedef ArgumentList::const_iterator ArgumentListIt;
    52 
    56  const ArgumentList& extra_args() const
    57  { return extra_args_; }
    58 
    61  operator void*() const
    62  {
    63  return successful_ ? const_cast<bool*>(&successful_) : 0;
    64  }
    65 
    66  protected:
    69  CommandLineBase(int argc, char* const argv[], const char* opts) :
    70  argc_(argc),
    71  argv_(argv),
    72  opts_(opts),
    73  successful_(argc > 0 && argv && opts)
    74  {
    75  assert(successful_);
    76  }
    78  virtual ~CommandLineBase() { }
    79 
    83  void finish_parse();
    84 
    86  const char* option_argument() const;
    88  int option_index() const;
    89 
    95  void parse_error(const char* message = 0);
    96 
    98  int parse_next() const;
    99 
    101  virtual void print_usage() const = 0;
    102 
    104  const char* program_name() const { return argv_[0]; }
    105 
    108  bool successful() const { return successful_; }
    109 
    110  private:
    112  int argc_;
    113  char* const* argv_;
    114  const char* opts_;
    115  bool successful_;
    116  ArgumentList extra_args_;
    117  };
    118 
    119 
    121  namespace examples {
    123  extern MYSQLPP_EXPORT const char* db_name;
    124 
    126  class MYSQLPP_EXPORT CommandLine : public CommandLineBase
    127  {
    128  public:
    131  CommandLine(int argc, char* const argv[],
    132  const char* user = 0, const char* pass = 0,
    133  const char* usage_extra = 0);
    134 
    139  void print_usage() const { print_usage(usage_extra_); }
    140 
    144  void print_usage(const char* extra) const;
    145 
    150  bool dtest_mode() const { return dtest_mode_; }
    151 
    153  const char* pass() const { return pass_; }
    154 
    160  int run_mode() const { return run_mode_; }
    161 
    163  const char* server() const { return server_; }
    164 
    166  const char* user() const { return user_; }
    167 
    168  private:
    170  // Examples-specific command line parse results
    171  bool dtest_mode_;
    172  int run_mode_;
    173  const char* server_;
    174  const char* user_;
    175  const char* pass_;
    176  const char* usage_extra_;
    177  };
    178  } // end namespace mysqlpp::examples
    179 
    180 
    182  namespace ssqlsxlat {
    184  class MYSQLPP_EXPORT CommandLine : public CommandLineBase
    185  {
    186  public:
    189  enum SourceSink {
    193  ss_table
    194  };
    195 
    198  CommandLine(int argc, char* const argv[]);
    199 
    201  void print_usage() const;
    202 
    207  const char* input() const { return input_; }
    208 
    210  SourceSink input_source() const { return input_source_; }
    211 
    213  SourceSink output_sink() const { return output_sink_; }
    214 
    216  const char* output() const { return output_; }
    217 
    219  const char* pass() const { return pass_; }
    220 
    222  const char* server() const { return server_; }
    223 
    225  const char* user() const { return user_; }
    226 
    227  private:
    229  const char* input_;
    230  const char* output_;
    231  const char* pass_;
    232  const char* server_;
    233  const char* user_;
    234  SourceSink input_source_;
    235  SourceSink output_sink_;
    236  };
    237  } // end namespace mysqlpp::ssqlsxlat
    238 } // end namespace mysqlpp
    239 
    240 #endif // !defined(MYSQLPP_CMDLINE_H)
    241 
    Parses command line arguments and holds the results.
    Definition: cmdline.h:45
    ArgumentList::const_iterator ArgumentListIt
    Iterator into ArgumentList.
    Definition: cmdline.h:51
    CommandLineBase(int argc, char *const argv[], const char *opts)
    Hidden ctor to prevent instantiation.
    Definition: cmdline.h:69
    virtual void print_usage() const =0
    Show a message explaining the program's proper usage.
    virtual ~CommandLineBase()
    Hidden dtor to prevent instantiation.
    Definition: cmdline.h:78
    const ArgumentList & extra_args() const
    Get reference to list of command line arguments past the last flag and its possible argument.
    Definition: cmdline.h:56
    bool successful() const
    Returns true if nothing has gone wrong since calling the ctor.
    Definition: cmdline.h:108
    std::vector< std::string > ArgumentList
    Type for a list of arguments.
    Definition: cmdline.h:49
    const char * program_name() const
    Get the file name of the program's executable.
    Definition: cmdline.h:104
    Command line parsing mechanism for ../examples/*.cpp.
    Definition: cmdline.h:127
    const char * server() const
    Return the DB server name (-s argument)
    Definition: cmdline.h:163
    bool dtest_mode() const
    Return true if we're in "dtest" mode This happens when an example gets the -D flag,...
    Definition: cmdline.h:150
    void print_usage() const
    Show a message explaining the program's proper usage.
    Definition: cmdline.h:139
    int run_mode() const
    Return the -m flag value.
    Definition: cmdline.h:160
    const char * pass() const
    Return the DB password (-p argument)
    Definition: cmdline.h:153
    const char * user() const
    Return the DB user name (-u argument)
    Definition: cmdline.h:166
    Command line parser for MySQL++'s ssqlsxlat tool.
    Definition: cmdline.h:185
    const char * pass() const
    DB password, when input type is is_table.
    Definition: cmdline.h:219
    SourceSink output_sink() const
    The output sink (destination) type.
    Definition: cmdline.h:213
    const char * output() const
    The base name of the output file.
    Definition: cmdline.h:216
    const char * server() const
    DB server name, when input type is is_table.
    Definition: cmdline.h:222
    const char * input() const
    Return the name of the input source.
    Definition: cmdline.h:207
    const char * user() const
    DB user name, when input type is is_table.
    Definition: cmdline.h:225
    SourceSink
    Types of inputs that ssqlsxlat will accept.
    Definition: cmdline.h:189
    @ ss_ssqls1
    a C++ file containing an SSQLS v1 declaration
    Definition: cmdline.h:191
    @ ss_unknown
    no known input type given yet
    Definition: cmdline.h:190
    @ ss_ssqls2
    an SSQLS v2 file
    Definition: cmdline.h:192
    SourceSink input_source() const
    The input source type.
    Definition: cmdline.h:210
    This file includes top-level definitions for use both internal to the library, and outside it....
    const char * db_name
    Name of examples' DB.
    Definition: cmdline.cpp:199
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ReconnectOption__inherit__graph.png000644 000765 000024 00000012625 14042362133 030734 0ustar00tangentstaff000000 000000 ‰PNG  IHDR‰ß±ësRGB®ÎéOIDATxí ´MÕÇ”©(J"4ñÏ”B™YfÍÑĪhE«HIk5+¢$J)E)2DȬ¢ ¤ˆLÝÿùüzçvÞéÞsï}®ç^ï÷[ëÝ{Î>ûì½Ïw÷oÿö9çÝo®cbfdÜY<ÏN3#á°0|vr¶hôèÑ’+W.û;‚ 2$[Y­Z¼x±<óÌ3BÜnÉÇàõ×_—•+W»ÊÖ+³Ê²lõ@ÙrEVI¶"`ÊV¸½ÊŽ?ö.)øŠˆŠ-*%J”ÎçÑ_~ùE>ýôSÙ¼y³T¨PA6l('žxb\g/_¾\Š+–´¶ÄUi’3å8ôØcÉ'Ÿ|’?üðC¹øâ‹å7Þ?þøC^x¡¬Zµ*jù¦W¯^z|áÂ…J¼¨™Óà@ÊèÎ;ï”Þ½{Kùòå¥Q£FB‡—*UJêÖ­+ŒöæÍ›Ë¼yóÚÏ>ûL®ºê*Ù¾}»´mÛV=K³fÍdÇŽràÀéÙ³§”,YR®»î:©Y³f¦îà–B·nݤzõêR¶lYy÷Ýwõ8¸ñÆÕ3´iÓFöìÙ£é—_~¹¬_¿^¾ùæm«È=zÈÈ‘#•@ƒ ’iÓ¦I§N¤_¿~²bÅ iÙ²¥4mÚTŠ/.ƒÖr:wî,&LÐý7Êo¿ý¦m½á†äÔSO•sÏ=WæÌ™£yëÕ«'à·‹;wjz*}¤¶nÝ*K—.•É“'ë¨?~¼|ðÁ’'O™:uªTªTIÞzë-ÅoöÇŽ+'t’¬]»VN;í4™2eŠžÃhŸ9s¦¦qÌk?þø£LŸ>];’0@Óñ… –eË–)aßÿ}M¯]»¶NMLOµjÕ’~øA¶mÛ&7ö+ 4Õ«WËîÝ»µ½·Ür‹z¼§Ÿ~Z~þùgyôÑG¥ZµjÒ¿Ù´i“ˆ6r‹cöìÙÒ±cG8p – Y!0„b€CªYÊ€:tè 5jÔóÏ?_Úµk'U«VÕ©‚ÃÓ¸Þ‚o¼D¹rå´³FŒ!·Ýv›N}ô‘0Ú«T©"}ûöˆ{«V­¤bÅŠZþý÷ßk>ÊÀsáÁ\=ðÀê Î8ã õÔ¢ýõW¦²úé'É›7¯¦sÎ9rÍ5×hZ´h¡„-T¨oœDÔ±î»ï>Y·nP7]ï¹ç­ð@ÄY©f)I ³Ï>[qÊ;·)R$fx‚½{÷*aøÆÐIãÆ¼J“&M¯Øgžy¦ž›?þLe¸;§œrŠ»)û÷ïWC‚›N±M$ƒHùòåSç=N@WÄÜrØö–Ï¾× .žÓ5Èù÷ßë.ž;þøãõæ«î¤ÐGJ(FeëÖ­¥OŸ>ê9Øg:Àƒ×0‚ ’¯¸â ]QÞ(’ÑÙtÔ’%KtzÂãa³fÍ’C‡iLCL‚wýùçŸZÛÇwœtíÚUž|òÉplòÕW_Éĉ5†âœ/¿üR§­ßÿ]ÏÇ[bÄg^#¾zï½÷´NÚNÌ”¬U¢·ž#±6Ëx÷ 05Jãöñ@ü >\;“˜¨L™2ꕘþ ƒ÷µ'ʶlÙ"L3¿þú«tu×]w)Qˆ…^~ùeÍKð>wî\-‹Àà÷‘G‘îÝ»‡—âùC‡Õ¶ÌŸ?_§2<$ăô¥K—– Ȇ „ Ûµk¯½VÞ~ûm 智žþy÷PøÛ{ýáÄTØp€Í6sV!çYØa×·`Á‚#e*Çñ@!gćdJw‚òÇœi,SúC=r¼UÈ!Oh×®]ácÎTr¦›3­„Óbm8d ­Y³&äx–pVÇK…œUTÈ™fC)ÂélP¾;eJc‡:½mùO† γ°3ÆÈ•ÜÃiãÜÁÆ45lØ0õ6nߥ•+Wö&é6Á°?Ðõfbéì7b/nÄkÄ:ÞxÇ{ñ—?cEÉ©3ÒùG#-íÄôÕ¾}{]¶Ç è_ÁÜqÇOgyN|s¸Æ Fwµx¸e¥òùiG ‚ f Oï*‡N8ᄈåøóEÌG"«¦h^)ŽÓÓ&KÚ­ÂÒÙœÒÐä†TÁ¥½øâ‹üHÚüåÍ["”/_©´i/ز8ÈNËEe9e°$zõê u–ëÊš5Ùûšh¢í<šùm ‹‚þ?þ.[·þæÜõ>àLš´(“÷qïÙ³ßy—ÙVc.î·ÝHt‘Èø.YòçAm>ቼ{•wqØÆ3mÞ<ÜyØjãÎ…Íä"‘ñ½yóç…¯_toêÔåÎË`ûœ×.ÖýÒ¥Ou^úú÷ÕSß©9r7ížÆé^*Uªˆó.Ð?ïa¯Y³ÕyÃq4hPñHW›¶å›/NÛ®K†ú!wn~Ë( ƒ#P ¸™hï*ä2ãcGc ` ˆé‹iÌ,:F èØèôå}&5Ç2娮OÎ…’ƒcŽ-Å”c»>9nJŽ9¶#PŽíúä\¸(G»NÆ!#PFv':#Plp,GlÌÅÆÈr ` ‡Gö4> ç(žÄÛÓø€Œ@ÁàØÑؘ ÀÈ–ñàd2`dËøpŒ@±Á±±0€‘Maàd2`dSX8F ØàXŽ8à7†9RMü~JJÿåÍ[<”7ï)ÝF0t¤¤ŽFjGm CK.§)û·oß²oß–”mØ9¿|«b1qøŠ#’å¨èˆ\ší²òc«B#б՟Ù~5)ý븡+Š!#‰-*‰rˆöfåÜHuåt©o/&)ím1uûüóωí‹.ºHÆŒãm\Û( "*— ËŠÔ7.¢»Ø± õíÅ1¥ DC6l¨"·¨Ö¯__úÆDMUdÂÑEJ2’|¶žà| =‰T’’W^y¥ÊQr ™É:uê¨Æ*’ߘ#Þ¦â½È€£½úÒK/éj¬G‚RßxÑ{ï½Wî¿ÿ~•Ðܘ!õ€ðe—]¦Š>(?£V¥ƒÔ·64ã#å ôæ›oJ—.]T«NDC–²W¯^ª‡Š‡Bÿ4š|vÆµÊ /¼ $ƒ0Ô¡ÎŒ¡ÍŽ<÷Ê•+UÖr"i‰ %^ådœ©o$Ÿ 8^Â0%S6Z«ÅŠ“E‹©Ìø³Ï>«mI©omhÆGʨB… Ò¬Y3AW´zõêªVH BG wÁ¨È-òÑä³Ý FwïCLT¶lÙ°7›1c†j¥¢¹Šf)úîÚ¨L›Áº¬H}#ø YÑ'såÀ)›¶BL4[‘§ý¿Ç˜êRßÚÐŒ”¢iãyç':uÒæ¢È”òí·ßê¨Í¸í|:ÙïK.¹ÄMÖwå³I„¨03•!\¹‡g@j¥gëš_rÛ+õÍTèZ¢RßÔI[\q;ÚHû]ó×릧âwÊ{ 4ôÛ‰KÊ•+§Zñ`íÚµª!d6$ˆ%ŸÝ¢E õ< òåË«bZBžûµ×^SO·|ùr%•[¯÷;YRßx™¦M›Ê;ï¼£ÅOš4IÛï­+]¶SÚôàÁƒÕÅÓy•*Ub7½I“&*Ãg CöìÙU>›s®¿þz•éFV{ûöíšQ^<šñx† è#–nݺeêCÎDz"õ]³fM/½ôÒp™}ûöÕ©wÈ!* ÌêÎoÔéÖë?–2ûhGÅœ 8ä< ;¬º‘Îv¦³ÿH}Ç’Ï^·n]È![¦º)%äL#š†x,KTêÛÑŽ—ï-{ýúõ*îMKdÈž={&rJRó¦´Š5ʸ1H0ì·XòÙL_~c©îZ$)p÷˜û¨Ôw4‘_¦ät¶´‰Òäœ"õíí #ÃÜÎ)Rß^˜Œ@^4l;q’Q%PXz¼‘˜²ßGóD[ s&ûNÆ!›Â¢`d²ßQ€ñ%|€¸»&ûí"ümŠ‚É~GÆ—lò®É~G%J’(0&û”(IF À˜ìwP¢$|À˜ì·»F @&ûí$Æ®ÝHôd²ß>@bì|™ì·»iý>PŒkËÒa“ýN 6‹ÃËrû0ùñîÚOÜyш¼mŠŒ‹¦ÚOÜ€“qÈ#Ë€€(þ“‡iÌ,:F èØ8ÿ'&νò‰fÑ0ECÆÒãBÀL–)F hÈXz\â‚É2ECÀ K #PLv':œŒCF ŒìNt8F ØàXŽØ˜Š‘å@À22~˜, WÎ>d èeðg#PtlìH@²e|8‡Œ@Ù2>#Plp,GlÌ`dSX8‡Œ@ÙŽ(68–#¼¿‹9{ölîzØ_é"û}6aÂ/eB™þµÙ!”pz8¢jf†€É“'«vÇSO=>d1P ÛÈ F ¬ fç„0…¡°¬ r¿Î±aâG1'Ö£`øÝwß…³!=‰Ä¤Wz2|0E7vîÜ)+V¬PN…jÔ¨! ˆ«µ_|ñ…*>æÉ“'®üYÉ”rUÂ¥K—fåZþs ÏÈm¯^½ZÿÐLíܹ³ê¢þ'sŠ$L›6M…ðhÎâŋ妛nRWGoLQ¥f¡ͼç/X°@öïß-kRÒö@(ÏŸ?_¶lÙ¢»úê«õ‚ÑüD,vÉ’%*2Û®];Ù·oŸÜ|óÍ2bÄyõÕWU^»P¡BaQY¢ú‰'ÊYg%(º’Û\@ ¢ì² à¡ðW·n]•õ®X±¢ª+£§Š¤vþüù¥ÿþrûí· ê…î6å Ç…º³k´‹2O?ýt•òž>}ºJ‡£à\¥JAò’öÒv® ­ZµJÓОÿßÿþ§*Ïè¤r­xÌ;vèʵyóæÒ§OUVüøã¥téÒòàƒ ¨äG?}ÔŽ;ªì8âÁ(nt¤ÀÑ‚¥.Ô1ÚG;ÐuõêÀ¾òÊ+ª$ ‘ÆŒ£j‡ж"‘îž"4éô í~øá‡å믿V fE‹ÚV«x¾ö@»víR­Ñ[o½Ul‘ÅîׯŸjº3™"P*Æð$H 1,\¸P/]S¤¼)gìØ±2pà@iÕª•Ž6G0Üf:IìAƒé(D²£óéöqïH~ct>Dòo3Ñ$%‘ÚvnbHµjÕym:`!ºîtîsÏ='È]:jŠ2eÊ•ÆÄ‹AŽÇ\õU!íGœFع?¢u#¦ ùF%è¼Ò¾C‡ÉO<¡Æ ¡GUQ•šÌ=z´^ 8¡ëŠ|'"ÀÈr"Åé5¦0·wï^È-[¶T¢!QÎíž!ÉGÝà]¤H%ÞÉ'Ÿ,ô©­ÞºâÙN˜@Êȧ¸¾Ým.™ìmÛ¶ £‹)P¼û oá WÕªUµŒzõê‰W1Ðmxýúõ5?e’ÜX›6mTñ9pˆ‰qïÊ›¼ÛŒ>\9mY¶l™’õ@¼(£ïÂ>íHaªòsãÆµ^<õB¶mÛ ž‘>wî\­ˆŽ+‚¿®T8§ŠëA+•tbȽuëVõ¨5¯Y³FÉEyì#\¹reoÈëj¥ú§ 4ç”ÊŒ`W¦L©]»¶óq¾7î#ÚDþîÝ»‡Û©­Zp Oa”P-–;wn•ÏÖŒÔ:uêh§ÑqŒz:–›O3gΔ‘#GªÖ;#7íš÷‚Ý4Wþš}\1sÓICh7È )ÞCé¹C‡:íбL›LX×®]uÛ 2ÝÒéŒZ×ð`ŒjÌÍK9¤»æO§.:Ý­ ‚rý ¼‰ÝrÙ‡T`)5jD’ÞAˆ¹8°íŇ}×hƒ—kÁ¼ígßßVÒ±,y Xà1ˆy .¬ÞgΜ9B¬ûæn7Þ§V­Z:ú ‰©üXL+ÌÝŒ*¦G OÂyŒ,F†'Á[ø·5!ã!ÿîÝ»•ät<ñÄÇ4H›6mÒø•g®üL9LM ¦‡D )L¦g¦j¼'×Oû)‡ò0¦Rw2Ð6wº§~Œ)nÖ¬YêÙ§x$Žsý®*4细—¡¦[Ìy\•pûݲ"}gÉE*ˆ4×íB¦ØǙ÷ :®}ûö:Š¿%Þ8pà@x$ß-‡‘Ó¥KõÄ\¤3‚ˆIèh<ÃÝwßÍ)úMÜA™¤±ÉµèÄÓ‘3fÌÐÀÏÔÝqíÒ°€¸H€—(QB9*ÓÚv¦=:oê5·Íþ4Ò!!q u0%U¯^]É L“ãÇWb³ò:t¨æ!P6l˜âˆÇ÷îÝ[§-ƒ‡b•§xñâzýîùn[Z·n®‡ú‰åüF;#]ƒ?Ÿÿˆ< c¤2² £CAÄCÞû0tn”$Á `ãÆS°éhò»®÷OÇd{§@=) ”ò]O€ ÑÝ:Ý4b<:)+@Sž‚iŒ’×l  'á­ ^ã|¸–éâL~ÿù¤aLÇÔíÆPÿ¤ÆÿéYXR=Ma•ÄÒ•U‹÷¢ˆ—˜÷ýæí8ÿ1ö#§“AÊÇ£øÍKp÷ix£Ã1¼Ÿ7nqËò’‡4<¡×¢GÚåo¯ÿ|·,o²-éˆéˆQ†®z"Æ(cÄ»#Ì]ÒûÁÀcE"U"u yñL]‘y¤®/[<®7QòpÁ~ üÄqA1òüƒÍ™‹Qv~‘UXv^€Õu”pV5a›mo$ÚÛ˜1ÞH |#ñ(sÙªOCl KÃNK¥&R©7Ò°-F 4ì´Tjòÿ*u `¾IEND®B`‚mysql++-3.3.0/doc/html/refman/transaction_8h.html000644 000765 000024 00000012425 14042362133 022410 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: transaction.h File Reference
    MySQL++  3.3.0
    transaction.h File Reference

    Declares the Transaction class. More...

    #include "common.h"

    Go to the source code of this file.

    Classes

    class  mysqlpp::Transaction
     Helper object for creating exception-safe SQL transactions. More...
     
    class  mysqlpp::NoTransaction
     Compile-time substitute for Transaction, which purposely does nothing. Use it to instantiate templates that take Transaction when you don't want transactions to be used. More...
     

    Detailed Description

    Declares the Transaction class.

    This object works with the Connection class to automate the use of MySQL transactions. It allows you to express these transactions directly in C++ code instead of sending the raw SQL commands.

    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1UseQueryError-members.html000644 000765 000024 00000014063 14042362133 027024 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
    MySQL++  3.3.0
    mysqlpp::UseQueryError Member List

    This is the complete list of members for mysqlpp::UseQueryError, including all inherited members.

    Exception(const Exception &e) MAY_THROW()mysqlpp::Exceptioninline
    Exception(const char *w="")mysqlpp::Exceptioninlineprotected
    Exception(const std::string &w)mysqlpp::Exceptioninlineprotected
    operator=(const Exception &rhs)mysqlpp::Exceptioninline
    UseQueryError(const char *w="")mysqlpp::UseQueryErrorinlineexplicit
    what() constmysqlpp::Exceptioninlinevirtual
    what_mysqlpp::Exceptionprotected
    ~Exception()mysqlpp::Exceptioninline
    mysql++-3.3.0/doc/html/refman/functions_func_k.html000644 000765 000024 00000006347 14042362133 023027 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
    MySQL++  3.3.0
    mysql++-3.3.0/doc/html/refman/cpool_8h.html000644 000765 000024 00000011042 14042362133 021171 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: cpool.h File Reference
    MySQL++  3.3.0
    cpool.h File Reference

    Declares the ConnectionPool class. More...

    #include "beemutex.h"
    #include <list>
    #include <assert.h>
    #include <time.h>

    Go to the source code of this file.

    Classes

    class  mysqlpp::ConnectionPool
     Manages a pool of connections for programs that need more than one Connection object at a time, but can't predict how many they need in advance. More...
     

    Detailed Description

    Declares the ConnectionPool class.

    mysql++-3.3.0/doc/html/refman/qparms_8h.html000644 000765 000024 00000012207 14042362133 021364 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: qparms.h File Reference
    MySQL++  3.3.0
    qparms.h File Reference

    Declares the template query parameter-related stuff. More...

    #include "stadapter.h"
    #include <vector>

    Go to the source code of this file.

    Classes

    class  mysqlpp::SQLQueryParms
     This class holds the parameter values for filling template queries.
    More...
     
    struct  mysqlpp::SQLParseElement
     Used within Query to hold elements for parameterized queries. More...
     

    Detailed Description

    Declares the template query parameter-related stuff.

    The classes defined in this file are used by class Query when it parses a template query: they hold information that it finds in the template, so it can assemble a SQL statement later on demand.

    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Option.html000644 000765 000024 00000032770 14042362133 024055 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::Option Class Reference
    MySQL++  3.3.0
    mysqlpp::Option Class Referenceabstract

    Define abstract interface for all *Option subclasses. More...

    #include <options.h>

    Inheritance diagram for mysqlpp::Option:

    Public Types

    enum  Error {
      err_NONE , err_api_limit , err_api_reject , err_connected ,
      err_disconnected
    }
     Types of option setting errors we can diagnose. More...
     

    Public Member Functions

    virtual ~Option ()
     Destroy object.
     
    virtual Error set (DBDriver *dbd)=0
     Apply option.
     

    Detailed Description

    Define abstract interface for all *Option subclasses.

    This is the base class for the mid-level interface classes that take arguments, plus the direct base for options that take no arguments.

    Member Enumeration Documentation

    ◆ Error

    Types of option setting errors we can diagnose.

    Enumerator
    err_NONE 

    option was set successfully

    err_api_limit 

    option not supported by underlying C API

    err_api_reject 

    underlying C API returned error when setting option

    err_connected 

    can't set the given option while connected

    err_disconnected 

    can only set the given option while connected


    The documentation for this class was generated from the following file:
    mysql++-3.3.0/doc/html/refman/functions_func_~.html000644 000765 000024 00000016172 14042362133 023047 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
    MySQL++  3.3.0
     

    - ~ -

    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ReadDefaultFileOption__coll__graph.png000644 000765 000024 00000014254 14042362133 031263 0ustar00tangentstaff000000 000000 ‰PNG  IHDRŠ“Q^7sRGB®ÎéfIDATxí ¼MÕÇ7ÏÐ$Ñ\”¤‘2 E)ç Ò@E%MRšû ”¤>2dè/’R’d(dŒJ©¨h…dêü×w½·¯óÎ=ï¹Çöú|î½ç¬}ÎÞû¬ýÛk¯½Ï¹çWÀ1Nœvc‚»IwÉÎj„˜,à€“™ÜAû(Ÿ}ö™)P €ûìCT®\yŸ#yŸeñâŦ}ûö†˜Ù}òß«V­2þùgòeŸ_+`¿X`Ÿ{”ýr®}n”}nâÔ( Pj\FîWñÓO?™ 6˜ *ä~`Œ©ÿþû¯™1c†ùòË/ÍqÇgj×®­¿±œþÃ?˜7šòåËÇrx“eòäÉæ¹çžË£<Ö¬YÓôíÛWÁ7aÂsÞyç™×_=×ü«W¯nvîÜi¾ûî;³hÑ¢\MÄÄ„ÊèÑ£MÛ¶m Ƥ׿ð æÌ3Ï4åÊ•3³gÏ6?ü°6 ܲe‹©X±¢Y·n¹ë®»ÌñǯûÌ®QºtisÑE™† š/¾øBõ| <Ø´k×N?餓Ì;ï¼£i·Ür‹¹ñÆ͉'žhÎ9çóÍ7ߨþ¾ûî3cÇŽÕíK.¹Ä¬\¹ÒtïÞÝ\xá…æƒ>0>ú¨5j”1b„騱£Ùºu«©V­š¹ùæ›ÍÑGm®¸â óÏ?ÿ˜N:™… š&Mš˜ßÿÝàU_|QëÊ5pÍÈwÞin¿ývS¶lYsÆg$ ¨(ëׯ7ôÌ~ýúiï¼ûî»Í AƒLóæÍÍË/¿lªV­jFŽ©†œ:uª)R¤ˆY¾|¹yï½÷̲eË´ñû÷ïoȇÆãØÎ;< eå—_~1ï¿ÿ¾3fŒéÓ§¹ÿþû5 ÐÓçÌ™£Ãˆõ>4C R£F sðÁ›O?ýTA¨Ê¬¯Zµj†#°dÉS¢D puìÝ»·)X° >|¸ùã?Ì?þhþþûo­ë+¯¼b¨{Ïž=ͦM›Ìš5k̼yó̇~¨×=`ÀQqÛN põuêÔ1ü‚ .ÐÆ²Ûk×®5ôæo¿ýVˆ §âmˆ=î¹çsúé§›šiÓ¦iuëÖ5M›65§œrJ”a›5kfN;í4̓†±½»C‡ z3‹à}¨=öX³cÇ…*³¾ðnÛ·oW£êÒ¥‹æuýõ×k^ÅŠÓGdeÊ”)z\[‹-´œI“&i2Ò²eK•='ž¿  ƒÐóJ–,™Í&E‹U· HÞ}÷]mdmÖ¬YÚ{q헞ʰc…ó‚rØa‡ETÛ¶mÓ^ÂêýºÈ¾“O>ÙÐÈ~ùøãÕÛ”*UJÕþ¼ða@8âˆHÒÿý§ DqÈ!‡¨¾P¡BºH9(Ž ”ÝÙ/Ò«W/ûi¬7ß|Ó 6Ì<õÔSGàM.½ôR½ž†øú믣²ýè£ BÌÀPR¥J=fúôéúûöÛo›Ö­[ëöÒ¥KÕ‹±(7oÞlðãÆ3¤!Ì`žyæQ222TG^®'NÌ6»ÁëXÁ“p@Â3Î;×Ô¯_ß&'ÜoÂO¹O„–ª‰=Œzï½÷jP 0ˆk‚*Uª¤0¥í™oó¡QN=õTˆE¬žYËøñãµá¬Ç †¡†’F™™3g*ˆ˜0¼q &A!A6ÃCÍСCUOœE­ZµÒ}‚u†Yê ØÚ´icŽ:ê(MóÙúùuqÙæÁ¥})C† ñä^Ï^!A©'3 ï×_ä%½Ö“žíI ѱ!§ºsÏ=דžI{â‰'¼=zxPzÒ8½Ì< =º<]DŸÛ†Ì¾´lD¶Ãd¸ðdøòÄ£eÓ‹7ÉV¦M¤.þk²úXeºîp ±¾ÇÇ%¼G¡÷pšéó 7Ü­×Ï„-\ùÇþ°Þwøá‡‡©1BÊ8 ´l£^þX ñ†ßáCrªKfjâ|'PpÓÄGydž,ÇTØß8]»v =ÿ7Þ0tPhZ^•?ÿü³±±J^ÏMäã“(¬›ä$ÝÎ>lä†âÅ‹ÛCöúwwÞl¯ ˆSI3뉓}\±Ö{ÝÄx¢¬Pò”Ò| :Ô;ðÀÓ“¦¾ØVfz1¶ÆžV€S-hܯ1>8^î }lV¬èeŠ;À™$Ënè @aüøO%°-"‹eŸRÒ{×Å×þ |/w€wÊÄmrGø_ŠÛt@ñaàÿ›'1lUͲekdõv“/5½7P²ÚçÎÿäù”Ïd >3dËÈ(hÞz+ù0ÚWpv@ɲìÌ™_ËŠjæ}%T[¶¸áÇ:”,kŒ9WnÎýë·<¶ð§~²)ÓtÇE~ëÖfêÔeQ`áà7FéÓQá€"­>eÊ2y:-únÆÖ­Û器¹éˆ‹¨k޶NÔ!©¯`*L0{è¡ÊÅzÐr83^Y»v½Y½z«Œcy‰Ÿà<$îJ5I \{íµF¸v”`’J˜Byé6-гeOicaž%¨„륗^RæQ?Ûi°,$aE ²ƒˆ2ådÏߎž?gBŒ$³ž\3ƒÔ‰c„!4rœ4Ž'Ä”žP´È»ëô„òÖëÖ­›'t°žPÕz¯½öš‘“VzÂæ ¥' [žpjÂæ á¤'¼:žÐÏzõêÕó„½ËVRO¦£‘rØxì±Ç¼ xJïòË/÷.¾øb%™¢LaKõ„QÃÞO@¢ù@Ö$l£„QÂÜ¡:a˱.Ù ìž'ìfíþߥWÆUb … ö„‹Ï?O¨iµÞ4Žp{äsõÕW{eʔц–îÝtÓMÚÒ»½W_}Õ^@Ox`Bdé ±µ¦”ÆåØ «—K*€8_¨Û¼·ÞzË“aÍjÍKø‘=áò`ÎOh켫®ºÊ[±b…',¤Ê<¨Âê’[$ P’fèyúé§åMHSu N‹OTÞ–TÜ€”HwmpÍâk†.¨i¡¸…ÍÒ'H±á6†›¿àÐ!TnªZøÅ«(oaãÆ•±KÖ‚à²%.Û.d™HX]ì9‰ü›@‘^iüqå –áD˜/V(㺠/Q¶ #pô³€YŠXØÒ¡{C c‚4Fs(p!§ö ìcñ“EåD}+BÁhIžÈ"auÑ„ÿJ  Èp¢³xiz<w⧉ÕÞdxÒˆÌpÈ Š7<ì¥6lЬ`$…ÁTâ݇Áý·ß~“þ¥·0”"þ:à•$¦1,½#cÇŽ5×èv²~%Pèå>ø ¹í¶ÛŒªÊ„.̜ڨ¸vXÖ%°Ô6ˆ…þ•cn Ç…’–¡Ìž÷ä“O*Á¥0¢Z­Z5óÀèpC /)“{Æ u(©\¹²4hP„ãŸþyC=ɦö0±å†¥%”.·@j¤ÅÌÚº4úE¼K¥­?=l[†çJ¼âIü’í°õë×kÀ ­‚ÙóÏ?߃Ê6HA+k-¡T¸+W®Ô2lyýM”`6î7óÚkð A!˜Í«à1dJl`e_°`=zt¶,ˆEüñˆ?‘ØÆÆ7VO0&äŸ ’t@É/££°zK`Ìp&k1»Íš…8â¤t”´ Mð §r¬ÂŒ)'/kÉz\R³ÉjÜTªwÜ= ³Y¢Ì:âmÜ"EŽ—Å»ªrOiB¼«)ßN³#Š8lÄ(¢2ˆÃ¥‡Ù¹óHYEýÔ¬]»A¦Îùǰ^ZòhÝÐãk«íÛwšI“>—ÕÙ _RÚo: ø 0}úWàf:9:[ŸiÜ{fýÆ5ê¹Ñ˜ù,É/¿l”ßßýÉi½íeÊ-£C]‚ûç↠f„ŽÖŒ7N]¶PÌ* [³fÍ´üì ô Ó¡€®b¥b#SG¨Ùàý›7/óŸÐ©X²%ÿ6G}00\¼í¬³Î2°²C*Ù«W/è¢kê3xð`m$ˆ±%¼>¬ȉÞí˜cŽÑaT€á$„zA×®];%·¤,8 ‡ªyÂb 8-™%$ob@bßN:i‡C`úô飸„È"¿„ÕÅŸËvžB¦ôdŒ]©R%ýµÛëÖ­3ô!®Ö  êÖ­«½œ ¨ð U¨PAóú5SªT©¨úÖ®]['¡g‹ > §DXû±qCÓ3© c6 ƒ­ ¯(¼Å °k:C.ÀŒ3FYÛ…2N=€l+õm›6m¢êéW@aóÇSQ&¼…“¬z¼G±bÅä O‡*x(¯(üÅŸ§ÝÆK‘?×`ÁŠ7Á¦|,+ª=Þþr­ÁºØ´Xó<ô±uu\4ì.—Mãð¡Ó€ô(hbûõëgªV­ª¬[~êÙ0º7?õ+½Ó2‡Z=:ÛûüuðoFz0B/¦¡ ˜îh „!ƒ€”¡†ëƒ`z[ïF§@m$Uø¾è |Ê”)£ùóKþœÓ²eKß‘¼²t½zJÀN'Ožœ-(G%ø K¶=Pûƒw{ך[]ìq¹ýî‘GÉ-CÒðÄ$Œƒ›€‹ñ•7‹7¡!èM¼JœžLÌ¡¸×ÞÛÇ}[>Az)çáM0B^xà¶*²¾ ÓÆ¨ŒÙ€ \yå•c04q>†îÑ£‡ÖaŽ¡ŠºzÊä]PhxNñ‚€žüñ$Âî®6 àõ ± ³$ØLž‰çÈ—øÎ66±L˜Xå°´0ÝîêvNP·G%˜‰Ý·= ÃâÊë‘*Uª˜h ‹±[·n­®²\¹r:nÃìçô³ùÐ;¯¹æõÄDè1&qŠ ïÖ­›–Á/ yÚmM|á˜Ö2|Ñ‹ ñ4—4,u‡arð"ÛsOŸ>]t<¨zMê°˰ŠÐÓ{÷î­³"ò‡ØÛ/ÅÐÜ2 °ðRÖx˜Ø6C bmBg!®&ñ^,Ây»«KLùˆA"݃ÞÎÔmoïõÐ;è©„6ºfܧ§àaü†Æˆ€„ `°#FŒÐÀŒåx ¤úõëk3ø‡®X.6ìÀHþ4ŠtŒé4 õ³iƔɫ¬Y³Fc¸›ƒ‚Mˆ¡È/Ýð(t&¶²Âh‡ß°ôœt¹Õ%x³94L¾z Ã]ÓÃ5j zŒK¯ Šm„ ÞÓKò$”A@¿Î_>³š¼ŠsÂÎÃ&ö:~ø 4'¾' á¼ÜêBzn’í…ÄùáQFàòÊæI/Ák`$ÄÎì”×^„¿‡[]n¿ÀÄt̬N¬wÊí<Òˆ˜á…Ú»;7ÙÓƒ%vã•cÔ¼‚„¬é%$ì HÐû{8û¹ d¬Á_^HY°Ëme”5WÖ%œ˜üzŨŒ¯ÌBºvíjjÕª©ÖðáÃu=Àâ¹+Ìô"»â Ó:zbâHf_“¬ã9™êß°F½ÊJUÉw’(†bñ3.¿0ô°Äͬ‰…¨¦M›êê)^„@²qãÆ¦AƒºTÏq–¬$ܲ`Èì†h€‚Çb:ÌŠ-ÓkÊKUIY ÐÀHpè`½Ã¥K—6¬ —‘µ˜5jhLBüÂçKX¯iÛ¶­áøö2fIÁëpK‚•iEâ T•” ËÙ4vpÑŠE<»6áŸ=0ÄØ•_c3„1]¶±û„þ ˜øÊ?ôç‘ Û) ÎÞ€dF…°ŽC`K<‚ð܆tVvYQFü+ŸLÅY›5k–¦ÍçŠÙO7É÷u”D2 +«£¬s¿ Ñ¡Cn‡Yñ a„•]žãð?$Ô¢E cFŽ©C+§abWOÃÒ’]—ïë(‰h<3b ;(ÌpxNƒ©³]A¦þÌ„‘=Ö^+›Ä%6ƱúTü ®£¤´G± H,âG¬ž_¦·|ü¶~CúÞ¬lúóOÆí”Qv×ÜSbmÄIlH[ 0¬ääeb3]z•¶@I¯f·«•¹DdêÇ#îãl ˆC6²Ízòw.‹µ€zR´aóû²PòÛ¢)šŸJŠ6l~_ÖÿJVqí'“IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadParamCount__coll__graph.png000644 000765 000024 00000017732 14042362133 027576 0ustar00tangentstaff000000 000000 ‰PNG  IHDR—”ž »×sRGB®Îé”IDATxí]xTÕB Az¯‚ Ò»€ETš (¨Ï'½#EQPyˆ¢^©Ò«‚ ЈJ†PΛð.7›ÝÍÖdwsæûvï¹§Ý9sæÌ̹e&b š> @ˆúÔ]j 4siFð4sùŒ´ºãP3 ®]»FQQQæ,v’µjÕ¢ôéÓ;YÛvµÝ»wÓ7lúIî“O>Iyòäq ›ÌuõêU*Z´¨üœj­+ öìÙC·oßö˜¹îÞ½K5jÔ ððp¿¤ìï¿ÿNׯ_wš¹´ZôËi ¤4sÇ<úå(4sùå´R>e®¿þú‹¶oßîW”Š¥M›6ùN¾Bfݺuï«î“ì×+̵wï^êÒ¥K¢‹8p€F(?%2Þ~ûmÚµk—¤«W¯N |vMclÖøñÇ)..Î:;ÙÎ]f.H£Ö­[S®\¹¨qãÆtùòejß¾=Íž=›FŽIçÏŸ§úõëS±bÅhâĉ– 4ˆæÍ›'ç5¢ãÇn}¼üòË”7o^jÖ¬ÅÄÄÐ×_MÍ›7'<•Z¶l5lØîÝ»GŸ}öåÏŸŸ*V¬(ùèhÁ‚ôÄOP‰%hêÔ©Ò÷´iÓ¨S§NT¡Bzì±Ç¤îwß}G3fÌ V­Z ~`zÀ–-[¨lÙ²”={vêÚµ+a·6gÎY(U«V¥‚ Ò7ß|#uýåoúôéTºti*R¤ˆŒÉ<6,rбM›6²¨÷íÛGwîÜ¡>}úP=dNp+»[ÀÆeüëk¯½&c÷ê8ñlÑ€S§N©“'O§6Ÿ|ò‰êܹ³úóÏ?U‡3ƒâ¢ªW¯®nÞ¼©þýï«¶mÛ*¾g£ž~úiõ¯ýKúa¢(žLI>\ñ¶V}üñÇ꥗^R<ÙŠ "ínݺ¥˜)Ô_|¡ø¶ˆš?¾b&TÌÌjÿþýjñâŪL™2Љ&y?ýô“Z¸p¡Ê–-›:tèzÿý÷UîܹÕáÇ3³bæQÿý·Šˆˆ¾p-fHÁ8úé§êÿûŸÔ[»v­šj)³•àÕ%êêu‰`˜ÀÜéܹsBT´Å¯]»vT¾|y©Ÿ5kV9â-ÉÐap‡Z°tchh¨à''~ð‡…±|ùr1;XÂÊÞf` ”ˆ±Pn=&,Jó´ó6¸Ì\¬þ¶ÍСC‰EªàÝB°§-Z$“BðÛo¿‰½ƒsH:ìÚš6m*ëÝwߥÇœ¶mÛ&wºßzë-Y}kÖ¬¡•+WŠÝÅj@ŒqØ 4{}tëÖzõêEæl ÕHÓÊ•+ ÀÑØn`JVŸÄª…`ü>÷ÜsF±_q‡6jß¾}iëÖ­"}°Hæ±9ƒ<4ìÈ‘#2 ³·Áeæ‚䂈}ꩧĈfý-ꈎ1B GÖÝb ÿúë¯5bûIð‡ÊƒA¶0 ÁX`¨wÞy‡ÆŽ+›H±qãÆÉµPŽÍÛZÂØ8àùVÇŽŸ-\¸0AZáÑ ‡Jƒd2dˆàP¥JQÍPHôƒ:PبØR †•F)ü‡ ´Æ‹ñ`ãc¤av` Îà‹:èóÄ6±˜XŒÔ^³Æê'Iƒõa¸|!ù ¬€?Æì¿Eó[¢›¿ÇÓÝÛ ß„¸wŸr–zð‰? 4à%WåÊEø¦‡ž â¸ÇN2X`M¿tÿÎ}º/ñ­†,EÂ)ÿl-$xæ‚QIe†°°t”9s8}ñE{sv@§[Î)EÅeûÊ<¼áP jfs–ߤž¹²dÉÀ®Ø túô¡Q‚ßåA-[VõB{ŠHx¶Pª;ªE )L¡C(]†S—ŽÓy« ¡øØ{”§‚ÿó¨ ߨ Ì3Þ!ª™3·Y߸ñˆzê©÷øý²;–¼`Hì™zA±íeÊÍ ñêÈ’?-çþ–H„¼-ý¡¿7ßüN$Yß¾üqÀcž%ŽPËž¤Œ¹o`<¾€: µh‹.£F½(»Å3gþ²Upy[Æž¡J]ó cÀA+¹0¸/¿\ÏŸ›EóÇ£]q°€›§WOÞ¦‚5ýsWh°A+¹0à7Þ¨K§OÿI«Výfoü‘Ÿ)oú€c,6¨™+44„>ø  ¶0ѽ°€àªG2¨™ sS«ÖãüUøcìkbM€OUà¡Ô6—111×åm‰ìÅ_úä4²õÑÇzÉúåÎý(•Ý0 d_ŒºI‡%½ÓÅWåøÛ!U0ÿúëµy®ÒŠûüqà{é­é{‚ TKzwÈž‚Ä B‚ìœÀ=|L$øÛ]]_â³cG´ª\y$ÝïËËxÜ÷ê>Ñ wãp!Åî$¯É ÷G“&MRŸþ¹¸Gb Š](þxB±.©‹2¸XBÜBá ùœ9sŠ«$¸¼J€ÃTݺEª1c–ùí˜Ooºª~xñ€ºwç«v¢Ø9žàËþ9ÄwNà÷Œ=$ s±£;ÅŽ^;pSìsC\À_òà i¸``|Š?VìÖ†Ó;v“ı”#ì*áJt*;&^±b…3¼áqTqÕ•z÷žÍ®+á9šÛ«°ùpæƒ++0#¼'Âõ'¤Üx³HF¸Rò¤jæº|9–ÕÌìf³;;²u.—·Ÿ’ýÀ!܈ZC©R¥œeÝÖÖyªf.„ß`¥%K¢Ø¥æ;¶èãó<|2ž†²—xàdØçLÆ ¤J›ËLßjrŒÃ8v¾Ûœ,iì× >AY ùg¶Ø2æ ÕT˜Ò²ä FHõÌ…IÅ· –¡>Jž]®¹÷ÛK¬ éPmÿóñü¼š¹þ¡âàÁÍØ°ßÃwÂ/xƒ®ûÀÇæÄP­Î;%vØ¡Ÿjæúgb²eËHƒ7åß_ù¾œ¯ƒóþ¤Úüqk |Åã.-RýnÑšpO×sZ·®f]¤Ï]¤€–\VƒqÿþûË8LÊÅ)´B)`O5sYM]ùò9bZy~<ô0n‘U}ê$4sÙ Ô AM9è^:pÀ?_¶²_fiæ²1-ðœ3lXs6îçÙ(u/ ¯.ÃijÍ\vf»M›jüš qxeÏÝ_M£OSè?nì\2è²5s9˜R÷ãÆ­à79ÿvPËq$ÖÞo.RíÁ)ˆÁ1¦Þ/ÕÌ倦¥KççÄ9ìòj9.Ú>þ,•ë›2Lï¸b–jæJbRlBkÖ ýûÏ%Q3qñ™Í×èòñ8*ß1õ¼Îc¦‚f.35l¤3e ã÷í›q õy–W…mTK”ñ;'ž§:ËX>¶HT)È3ôz''¸E‹IÔ¢EÂ+:œ£€f.çè$´[·žL7âO·üÔ©“cI¶jÉòu¤ÕExpp•p¿°°B*<¼hÀáí ­ûôéc5[˜k|F9Ù¾sX¾|¹W}IhƒÞ9ºëZnP@3—DÓMœ£€f.çè¤k¹A³¹ÜÀÕkMðè/¿ü"ŸÆ{£Sö6C÷î= Q‡>ñ•sÁ‚Ãõyã:Ö}°»$ùÎ0_¾|ÖE~qž*%<ñuéÒÅkТE þöq ýüóÏ–Ÿ¯¼ý¡ ÜlýìÙ³^‡×;r£é~K„ÃÆÑÑѪ~ýúêÅ_T… V|ðb ŠW¨8<»té’bÉ bcc¥Ÿ &¨Q£F©]»v)ö£råÊ¥ºwï.eçÎSuëÖUE‹U;wçiÇWìFÊ9h¹ø´Ê;·jÙ²¥ôÉN?TÇŽ;óvK—.•ºsæÌQï¾ûn¢4»&R<É’oüñgóªfÍšŠý2(–jªI“&âÈ õ8H½8bk×®âOíÕÕ«WÅÏVžùäb•þ°Êá¿Ê ¿þú+û‹ÈFQQQâCN:.^¼HáåÚ@K\?9Á/Õ¢3(Q¢±m% Õºuki¿TøÁ¸†O+¨ö*ê 5jÝÿúõëe·‡;Ô˜d¨a‚àŠª ¾®XJò{õ¤ÜœFßüCÛo¿ý–X*Š cG¹Òø±„4T8®Év–¸.‚€—ÀmÛ¶I9þláf^d¨Ó¨Q#é;V¨V¶±È/vöD¤/󙻇ZäI–:PYï¨Å´iÓJlc‰Z¨ {¨H8¦eGgŠ¥b;D±$ý±ï)‹Zdæ”6P³ðxÌÒM øË—/+¨E¾ Š/.ýA]Ø~“M†uš¥C¢çÇÜV­Z¥øÖ‡l ØÝ¤Ú¾}»ªX±¢ôÍŒq¶­_\%•àŒkØÂ Æ~Ž9ú7Ô"hÄL+c` ® |A7–¸èJ±–ìjÑñ, ZÞÿKйœ½"v‘°%Ìâ[ÛG¬&ľaƒV˜Ë\v &˜U‹%Ì5tèPñŠ|ãÆ K¾7l`'êîØ±cìÆü–%ßn(¾Æ‚²TæÆà ¾©Ææ‚¸wlÄò¢käg®‡¤5°´5Ý—-€]gØeær–æS¯¦ù¶A¢þ ǹæ[¸Á»³-°5[õ’+/EÞç‚Ë Í£1²„"vÚO`g¶ ¶æ¬:-Mà~ý˜up«’` 7_âc¼£7Àow‹I Ž·ÛIUITŽof,T°f,ä¥4S€-Ü”ÆÀ©Ë“\PÁiÓfd‡o[<¼Èãâ7Q½†~Š0—§ö–×Fï…ŽòçïÍu*qT‹Ž^è-¸ºÐjуùܽû4eÈžoÎdÉåÙÅ4ü¶©f.¦fΜühè.?¢JÃOŽxÐSp6ÕÌåæ¼BR-^¼‡Ý/гfíp³§àm¦™Ë͹ݼù¨à)ÃÍ›q¹ÝÞ‚·‰f.7ævݺƒü~TâÇNÛ·GK¨7º Ê&š¹Ü˜VH(H*kHŸ>-Ç2ÜgjÏSäÁu SvV‰ƒøÍ×Ä÷ŸaØÃIITÔ¨@¢×p×Ìå)7l8BÇ_’–p W¤H*Y2¯œ×«÷$/žË^ƒ¯‰f.ç´[·Hª_ÿIñÝåaWA×\Û\A7¥þ3 Í\ÎÞî–7<<$E¢æš¹‘ĵ ñÁô–‡k£w\[3—cúèR( ™Ëâ馎) ™Ë1}’,Õ6—}iæ²O§J´ÍeŸLš¹ìÓF—xHÍ\P7·OÍ\öi£K<¤€f. ¨›Û§€f.û´Ñ%R@3—‡Ô·"ìP3—}Ú8U¢oEØ'“f.û´Ñ%R@3—‡ÔÍíS@3—}Úè) ™ËCêæö) ™Ë>mt‰‡ÐÌå!õ­ûÔÌeŸ6N•è[öɤ™Ë>mt‰‡ÐÌå!¡áÎ[Cb hª$¦‰K9P‹Fœ—¦‚Êš¹RÁ$§Øyå¹ ¼Rźá¤Ê¼térs<¢Ä±R#=šÏ ‰½i8ÁæÜÔBD- š ¨ZG…ÓjQó†Ï( ™Ëg¤ÕkæÒ<à3 ¸esù :FõÇS… \he»*"¬""¬ °RØ(·>" 0¢§!d0ǯ¶#Z«£ÐÅ–Š^H úîÝ»%*Bû2œŸ³è¬äB¸8Dª÷pZ4hÄÄF˜á©S§RÏž=‰#¼:Õ=66[ŒÐÄ£GÛ¿?M™2EâUûú>XTTuïÞ8H;ûd½AŸ}öqy§pw¦“—0ÍÎÔ5×ñ™äâÈó4~üx /ÇP9>Î ²²N:EíÛ·§zõêQß¾}iòäÉ\|þüùìz;–8„0ÇÑùRׯ_Ÿzôè!ÁËÇŒCqž8„¯SoÛ¶­eüO^WÐÑ£G¥«‹Ùg’ „ÅŠªV­aÒ 0¹ˆ J±ÚW®\Ib“&M’gXõ"X(h‹‹ÌF¶WxBBAjãh¤AGã¹&˜Ú€y_yå¡#9¤»#€†Á€f¬l æcº >S‹@Ñ\aè‚`4.+Ä@€mƒU‘ŽH®X)PX­Dd˜L#vµ½øÎ˜$K£i#ÏȇTsaLeTüÚµk)óÜsÏQ©R¥¤RªÐ˜X0‘P™~ø¡q*GÜt†´Á¤±a0ý€FŽê ×C}3`òqMh à@_:t aÆ íŒè¸È‡Ú³HG0O'#ߣO%WR,XPóý÷ߤv$TT•*UAÏ1!°q†•Óˆ Âa¥-ZTJÐÒöFxx¸¨]0êÉ“'¥Üœ6u%9ê)RDŒdØtŒ”‰ƒí…8Ø`@Ø/{öì17O”†„ê„ ƒ±@"b¢ÍàLs}s’xÉ’%b["ê L‚ÅZb‘ ªqŽÅ€ëÁ¦„= {0)À¢u|*¹ì!1k˜jÞ¼y¢:‘iƒê 6 T¤ v?b˜L# ½Ñ& ¨$ˆo¨0zÁ<¯¾úªHØ,¨l9¨\#úl2è£N:„-=l¨+L$*v…íÚµ£N:‰ýˆŽm¿‹q”Žþùƒm¦‚T®Po°å† big¯N£FÌ]%H×.?Æ N°50'@»ÈÈHß/›¬¼yó ]!Ý`ûâg Œþa ƒF°!]·\…C`Þx¶8kÖ,ÙÕ`ò €=B˜U¤ÔZtt4aWcÞ¹4hЀV­Z%ýê8ú€ÄIŸ>½0‡Ñ¿«G\6# *ê„ÇÊ^†ÚIª_0;ŒlÐêÖV;gêØ»Æ • ºŒaÔ…M‹|˜&³é`ä[1Fôm¨LërœÏ±13àᕌœd<â~ Œuܲ0ƒ­•dH0—-1 Æ2—Ûš@s¹3iØ4˜ [g&Æh‡#ŒvìáåL£ë#¤’-0ÛyF¹³øƒöŽËèÏú˜¢’ « DòÎt?T£™0¶¤ê`kið=üNrAE¸ ëfÆB{[R@3•«”õ~ýÝ-z8ºG¢€[6—a,»+Æ%å(`Þ” ·l®”C__9( Õb ÍV€áª™+À&,ÐÕÌH³`¸þâ(-ø¥IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Date__inherit__graph.png000644 000765 000024 00000016304 14042362133 026476 0ustar00tangentstaff000000 000000 ‰PNG  IHDRžÝLƒÈsRGB®Îé~IDATxí]”E.ÒP‚É"¢’PQ² ` ¨€ˆÊO’ %IÉAAADT’PÉ Qä@ÉQ âÒ}3ÎÎîÌîÞîq{·]ïínOwuÏLõ7UÕ½ÓÕ)iÒˆ§RƳž®¦% ÐÒ@I@!‰OW&ø@­\¹þþh8bàùçŸ7à"¿ˆDï¼ó@¥?Z^øþûï)66ÖCízÈ£Dh    „¤Yœ% ä,]€RÀsSY¶mÛFÙ³g§œ9s†å¼qqq´xñb:pàU«VJ–,–vÃÕÈÚµk©hÑ¢”%K³ÉK—.Ñúõë©J•*f^0‰?þøƒ~ùå¯*  "EŠx凒qhÈ!´|ùòPîɬ{äÈ*_¾úH½ð Ÿ/_>õÕW_Ix@µiÓFÝqǪQ£FŠÁ ù?þ¸úõ×_=Ò/¾ø¢êÔ©“ä_Ÿþ¹â§^]¾|Y½òÊ+ŠŸ|U¼xqµjÕ*a©X±¢j×®Ê;·”·mÛVÎ…¶®]»¦püòË/«¼yóª|PíÝ»Wê9R.\Xd1vìXÉ›3gŽz饗„ å‹çÑGUõêÕ“sàÞvîÜ©öíÛ§ ,(m0¸?"»:¨+W®H¾õ ×€²ƒZ³%&MÅÚ×+РA } 9J HU©R%ö 5ÐÙ³g‰;“¸ó©B… Ô¹sgš4i5lØÆO,b`¿ûî;Љ‰! }óÍ7ò¤qG ’ÐNß¾}…÷µ×^3À3ާhÑ¢E4{öl‚VêÑ£‡”mݺ•n¿ývÚ¼y3þøcÑ\+V¬ãýû÷w.áwݺuT¹reúðÃéôéÓM2wî\bÐH[ÿüóýùçŸ4mÚ4Ñ&ùóç÷Ƀ“‚ç€y…l¬ÔµkWzâ‰'hÞ¼y¢E MAÜ‹´dɪS§=üðÔ2eJ3hmÃWçBòÃIýû÷Yúâó›g…S OWíÚµ¥Ú'Ÿ|¢ð¾þúkU½zuÅ‚S™2eR‡’'Hg•¬n½õVyÁÔãédõ*uñ…§÷Ç45Ð{ï½'šÆ`€Â–:ujuôèQÉž:uªjÙ²¥Áâõ[¦L…kôE ZÑžFÙwÞ©´¢ ~úé'É.T¨hU@Ûà ÄýâÉáÉf`ˆf‚¦7nœh/îLÅ -Z·n]á…öòŃö¨ÂÃ~‹´gh h×ôéÓ«áǫѣG« ˆV†ìØoR÷ÝwŸš8q¢bó,õ}}9i ƒwãÆªU«VŠJ‘å_ýeyý†E‘pÆ@¾PŸ6mZÓî.\¸ðÄÃ!fó&š£}ûöÄ&‚àèåÉ“GÚÁêÙé¶Ûn3³tæSbä#ïܹs&=ÁfÀËŸba›Xúý÷ß)[¶lf•«W¯w²»Ý¬ç‡|˜Ø' ¤ºÉÖa|Š)¤a€ãÌ™3ßÄN2Á–Ãf0ð›pá¥K—&v` Cm6q‹/£6ƒÄ¦Ø —›E>´;Æâ›Àš2eŠÔƒŸ°zõjbµ.>Ò€¿†OáC+ÀgÃßäøñãĦÀ<¿S¸®Y³f‰O„§uéÒ¥"ô.]ºÎ&V|ømlÍ{yì±ÇÈÎ…QÚD{È8×Ûo¿MMš4‘—H,xE7…‘E"^I-/‘X2ð?³º¾RÃ’«“ hY„¡“ÁK@ÈMfiyÝXFßïR»U‹¦2= ‹¦ÞN€{Õ(„MMêa|˜{+D±¨„U&Xšœ_Ä×&,Ìzä‘G$J–7!ÒŒ ^ IÆñL¸Aøs¹’ãÅù+°¾T¯ÓK«Eùƒ×û{TªZµªúì³ÏÌÚFüFDmCÔß~ûMÎafÂZP!®$¢¹1ˆäZP/1Iû@nÒ·ÈÊŠ€¢!L½ÈÁ7­ñ­Ø,IO$5ÂÇpPHˆTY…Ÿ- 0±És)²WÏŠ+)ÊeRÞ’À*k:T%úü'ÇÌ9a–ÄĤ╾_£5™¢4¡ä£ãçÎÝÀ¹)̘±?^këÄÐúOfê“OÖQ\Üó‰_~9ÄËy.xäé"  ~ýõ8¿Aè ¼·=þf·>Ô²a`öìŸyÙ²w@‚K—.óë¬ÚŒÙÄEzvÌ& ßS¤P¼Ž+,YÂ\iÊ”×ý¡½{ñ«ó:yïeB¶f¢æ0¤¿2’£”ââ®ò_×£tL?þ¸Ÿ_Œo(· PeÌè¹@09Ê ˜{ÒÈ&-üe‘={FÉÍ”)½h"ãØÆªYÚÒ0I@!‰OWÖÒI@!‰OWÖÒI@.âãè5æ [Ti¹t?&9™ ‡.ÒÒI@.âÓ&ÌE87Š4€\d¤M˜‹p4€ü Gsø—€Ö@þe¤9\$ ä&~~&g h9ËF†ðÉ|í¤ËÝV¤˜œ4—ƒ4€£³“€‹œô<‹pni¹ÈHϹGÈ¿p4‡ h ä"#mÂ\„s£HÈEFÚ„¹GÈ¿p4‡ h ä_FšÃE@.ÂÑEþ% ä_FšÃMÖ}nvš·ÛÆû¢ûI:³Š‰É±×ÙMž<ùfw›Çùui3öT¯V­½óÎ;n×e˜?>¯ÝÿQ¶w`IðlmÂ\ÄÉû@É»üî4€\ÄÉû‰êE‚h±/övÏŸ?È—søða:tè´ƒ-ŸòæÍ+ù†Üp7õè矦9sæ„¥‹–.]J<*“¿ÐÊ•+éÍ7ߤ!C†H¤3§ >œvíÚåTñù¯–/_NkÖ¬‘'›÷€§ºuëÒ¼yó8ŽáUzë­·D{ ãŒ‘¶ú®Y³&9s†fΜ); ¶jÕJò¶lÙBè°˜˜Ñ<ð€ÙAûöí£©S§ ÿþýûå<-Z´þk×®Ñúõë9´ÝíÔ«W/ºë®»hâĉT¸pazä‘G¨K—.4V´hQjݺµ´Ëã]zþù牷ݤ *Ð| £&ÞžÚ¶mKGŽ¡%K–HÚÃŽÓÜñãÇ©J•*Ô¾}{BpÏH¦ˆ×@çÏŸ§µk×o|KØQyܸqÔ¹sgª\¹²ìÎ\¼xqé sçÎxÑY  ?ü  >cÆ élã]¿~}êÙ³'o¢²…°Ã³A—.] ¢ H±Õ%ÌÒÑ£Ge ðR¥JÑ_|!U`ž²fÍ*i\CºtÞ¡ïRðßù( ×­[G±±±¼:uêдiÓ¨zõêB%sæÌ4aÂ*W®½÷Þ{´mÛ6nþµqyûñ‚äÐq%K–¤Ò¥K˯‘>}ú´þ¾û~ú‰`ŽFÇBKŒ1Bžr€O÷±cÇ@ðw*V¬èÕ)yòä¡J•*Q¾|ù¤#Ñž-[6jذ¡h äÕªUK®é–-[š`±•Ò¤I#{¯–/_žÚ´i÷,œÐ„(Ç6šqqq´iÓ&"LZΜ9‰'Z­MEd:I(W®\"¼”)SR¦L™¼YµjUy¡©Æ“?hР¾í˜lƒ¹8q℘ ´BÇÙɺ*L$@2ò­yöºNÇ[·n¥‚ húôé#& ·Î…ö¤‹/R‘"EÌv¾H;Nò'4h 6ÈéS§NQß¾}©iÓ¦4jÔ(€ @ÂîËèX;8p@ÌFeÛ·o0‚góæëÆá‹Áì€`Ž0‚&ÐJØÝ~ ü bÅŠ‰U»vm™5†ID¾ANŽ9L¿¬yóæ)öœ˜Nƒ'R#Þ‰v4 [r*TH´ | Þ&MšÈ/XtŽßxã )·v Ñ´R»ví Ðd¨Z±b­^½šwïù›†*y“&M¢2eÊPãÆ©[·n4räHÉ_°`ჶ`jáÔÃ?âýÙ©_¿~bjyzqòH8â¼O=Me7€‚yƒ锨q¢1|;v¬9‚ EX]»v•‘4Ap€3fÌèaö ) >ýôS1MÍš5vhhŒaƉ A:u"ðÀiÎ’%KH£"œ& €G#,Ïj&¡¡°¥¸anåB||Á<ÃÜẋ’´2„O94•|íëž>}z+‹WЬûÈÛË=ƹó¿¨k€iL@™O*”,3lÃ\XŸp ·aJì“âkˆnç‹Öãd `ÁƒÎ¶jÜX5ò@¾ò®—èoH YŒÂtW&¢x4’héo$r·DôÛˆ¸¾Ä~#1QGa‰øÜèS‡IÚ„…IÑÚŒP´ö|˜î[(L‚ŒÖfþÂ2ü×FB¢IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ResultBase.html000644 000765 000024 00000073446 14042362133 024663 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::ResultBase Class Reference
    MySQL++  3.3.0

    Base class for StoreQueryResult and UseQueryResult. More...

    #include <result.h>

    Inheritance diagram for mysqlpp::ResultBase:
    Collaboration diagram for mysqlpp::ResultBase:

    Public Member Functions

    virtual ~ResultBase ()
     Destroy object.
     
    const Fieldfetch_field () const
     Returns the next field in this result set.
     
    const Fieldfetch_field (Fields::size_type i) const
     Returns the given field in this result set.
     
    const Fieldfield (unsigned int i) const
     Get the underlying Field structure given its index.
     
    const Fieldsfields () const
     Get the underlying Fields structure.
     
    const std::string & field_name (int i) const
     Get the name of the field at the given index.
     
    const RefCountedPointer< FieldNames > & field_names () const
     Get the names of the fields within this result set.
     
    int field_num (const std::string &) const
     Get the index of the named field. More...
     
    const FieldTypes::value_type & field_type (int i) const
     Get the type of a particular field within this result set.
     
    const RefCountedPointer< FieldTypes > & field_types () const
     Get a list of the types of the fields within this result set.
     
    size_t num_fields () const
     Returns the number of fields in this result set.
     
    const char * table () const
     Return the name of the table the result set comes from.
     
    - Public Member Functions inherited from mysqlpp::OptionalExceptions
     OptionalExceptions (bool e=true)
     Default constructor. More...
     
    virtual ~OptionalExceptions ()
     Destroy object.
     
    void enable_exceptions () const
     Enable exceptions from the object.
     
    void disable_exceptions () const
     Disable exceptions from the object.
     
    bool throw_exceptions () const
     Returns true if exceptions are enabled.
     

    Protected Member Functions

     ResultBase ()
     Create empty object.
     
     ResultBase (MYSQL_RES *result, DBDriver *dbd, bool te=true)
     Create the object, fully initialized.
     
     ResultBase (const ResultBase &other)
     Create object as a copy of another ResultBase.
     
    ResultBasecopy (const ResultBase &other)
     Copy another ResultBase object's contents into this one.
     
    - Protected Member Functions inherited from mysqlpp::OptionalExceptions
    void set_exceptions (bool e) const
     Sets the exception state to a particular value. More...
     

    Protected Attributes

    DBDriverdriver_
     Access to DB driver; fully initted if nonzero.
     
    Fields fields_
     list of fields in result
     
    RefCountedPointer< FieldNamesnames_
     list of field names in result
     
    RefCountedPointer< FieldTypestypes_
     list of field types in result
     
    Fields::size_type current_field_
     Default field index used by fetch_field() More...
     

    Detailed Description

    Base class for StoreQueryResult and UseQueryResult.

    Not useful directly. Just contains common functionality for its subclasses.

    Member Function Documentation

    ◆ field_num()

    int mysqlpp::ResultBase::field_num ( const std::string &  i) const

    Get the index of the named field.

    This is the inverse of field_name().

    References names_, and mysqlpp::OptionalExceptions::throw_exceptions().

    Member Data Documentation

    ◆ current_field_

    Fields::size_type mysqlpp::ResultBase::current_field_
    mutableprotected

    Default field index used by fetch_field()

    It's mutable because it's just internal housekeeping: it's changed by fetch_field(void), but it doesn't change the "value" of the result. See mutability justification for UseQueryResult::result_: this field provides functionality we used to get through result_, so it's relevant here, too.

    Referenced by copy().


    The documentation for this class was generated from the following files:
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadOption-members.html000644 000765 000024 00000015323 14042362133 026107 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
    MySQL++  3.3.0
    mysqlpp::BadOption Member List

    This is the complete list of members for mysqlpp::BadOption, including all inherited members.

    BadOption(const char *w, const std::type_info &ti)mysqlpp::BadOptioninlineexplicit
    BadOption(const std::string &w, const std::type_info &ti)mysqlpp::BadOptioninlineexplicit
    Exception(const Exception &e) MAY_THROW()mysqlpp::Exceptioninline
    Exception(const char *w="")mysqlpp::Exceptioninlineprotected
    Exception(const std::string &w)mysqlpp::Exceptioninlineprotected
    operator=(const Exception &rhs)mysqlpp::Exceptioninline
    what() constmysqlpp::Exceptioninlinevirtual
    what_mysqlpp::Exceptionprotected
    what_option() constmysqlpp::BadOptioninline
    ~Exception()mysqlpp::Exceptioninline
    mysql++-3.3.0/doc/html/refman/functions_c.html000644 000765 000024 00000021261 14042362133 021774 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
    MySQL++  3.3.0
    mysql++-3.3.0/doc/html/refman/inherit_graph_36.png000644 000765 000024 00000006602 14042362133 022437 0ustar00tangentstaff000000 000000 ‰PNG  IHDRL%¦€G.bKGDÿÿÿ ½§“ 7IDATxœíœ{PSWÇ!$¹² $Ö¤<‹£­Š„P¦)Ó2R(µLµ/mu(êbÝhpqE­PZÐÖÅNËP° …­Ô:‹«¼,ít¡E„Z!ò¼gÿ¸»w¯BRÑ`æ|†?îýÝ“ßù“ß÷æœßMpá¼Ðx° ‘#N9áä ‘#Nz266Ö××ç¨PG,;:Šÿ’››ÛÜÜìè(„]»vmذ<½ç“\§Ó =ô066666æè(þOsssKK‹££@ØMyyù´júÌF!!!+Äÿ¹~ýº£C˜NhhèÙ³gÂ>\\\¦YОprÈ'‰prÈ'ç‹üÌ™3•••ÎÿððpZZš^¯p] ÅÝ»wÓÒÒ¦¦¦æËá™3g6nÜ}èÐ!…BA½¤V«³²²^zé¥ÈÈÈÔÔÔ .—vïÞÝÖÖf—·ż‰<$$¤¾¾~¦½¡¡a¾žÄXìB¯×+ ÇÿÅø¸îìÙÖM› nßut,­V›——7_w𬬬÷ß_"‘lÞ¼ytt4,,ì³Ï>#.uuu…††VUU…‡‡§¤¤LLLÄÆÆfffWóóóoÞ¼i»·…–H¡ÙŽã*•J(’–‘‘ƒÁ@m399¹hÑ"[¼A•J¥··7†avu¡Óéx<ÞåË—©F³Ù<>>îééI5NMMQÛîÀb±£££‡F»ç¶¨V«¹\î´‡&“Éh4Ýéõz“ÉäîînË<̆^oúç?oTTüûÂ…ë4›çá¦6ü!Ïœ„pllÌÃÃc¶W NÇápæ4Î$//ïèÑ£o¼ñ %%…Ãáäçç¿÷Þ{Äé²eË***èt:àÍ7ߌ‰‰IJJŠŽŽ·×Û‚K$Happ°¾¾ÎEff¦D"áp8‹/¾|ù2„pÕªU...L&³°°BXUU% ÝÜÜBCCãââÒÓÓ!„ÇŽ{öÙg ÔãÚÚZ@àããÃ`0RSSM&Óœ] 0™Ì/¿ü’ËåzxxŒwuu±ÙìãÇ{yyÑh´ððð»wïB«««…B!ƒÁˆŠŠÚ²eˇ~h—ÿsçÎ)Š Ã<==÷ïßã8„°®®.88˜Çã ‚;wB»ºº˜Læ±cÇø|>†a|ðL&Ã0ÌÕÕuÇŽsÎj[[[[[Õb6ãW®ÜÜ·¯28xïâÅibñ.‘(øS*Õs:¼O¬·™sÈ o½õÑØh4 …Âòòrhiþ!„ÕÕÕ<ÅbI¥Ò¤¤¤½{÷ö÷÷4MKKK``àîÝ»««kRRÒää¤E#œ%Ópg³Ù{÷î%ƒ×h4 ÂÖÖV@{{û´Ñmذáõ×_‡Òéôªª*ê%+ÞžH€ÒÒÒ{,Ô[DÞÕÕååå5::j0Ž=FØ…Ba]]„prrð#GŽŒŽŽ‘×ÕÕåääÉãþþ~ Ãjjj „~~~yyysvA¼÷R©´®®Žø !r@bb¢V«mmmõññ)..V*•†•””LLLär¹]þ‡††D"QFFÆÄÄDoo¯ŸŸ_AA„pÍš5ß|ó Žãl6[¡P¤¤¤ ‹‹<þ<`hhÈúÄREÞÑqçСšåË÷‹DibñnRÛ PäÖ‡\VVÆår „ð‡~àp8SSSçÿöíÛ,+//Ï`0ÔÖÖÒéôôôtRä €íÛ·ëõz"OÿôéÓDÝÝÝ‘‘À¹sçÏnnnÖ'¶­­íÿ¸œ“sníÚƒ"QšDbAÛ SäV†<55ÅápˆY}ûí··lÙgI¡ÜÜ\¡PHz~æ™gfŠœÌïìììuëÖY4Z¸³³333322’Á`xyyñÄ###ؾ}û‹/¾èïï?88¨Óéˆ=3Igg'5ylô&‰¦5~˜‰d»E~çÎðððW^yehh¨  `Û¶m±±±Ôš›Í¾qãyzíÚµ¨¨¨Ù¼ñù|jÙì矖H$sva²žAÜÒÁ¥K—È«7o޴׿··7—ËU*•DQD¥RMLL\½zU.—·¶¶®\¹@M…ij0Vˆˆ–Ë£/^¼yñbR9âææj]ä‡oäñþdÝç}ò÷¿hcKëC~íµ×7n܈aXdd$˜%…x<ÞÕ«WÉ—÷öö’÷k‚ññq²zÚÒÒBÜ,-ÒÔÔ£V«Ùl6€Ëåîß¿ÿĉýýýëׯg±XEEE[·n¨Tªüüüäääï¿ÿžú ÍFo3ENðpÉ2Ôu[–ë555«W¯V«ÕB…BÁçó‰ÝˆX,.++ƒ^¹rÅÅÅåìÙ³8Ž×××Óh4b¹ÞÜÜüõ×_NÈãÖÖVöÝwßAÕjõã?þÅ_ÌÙ¹Šƒ3–ëäÚ;999==ýÊ•+4­¦¦ÇñŠŠ &—ËíòßÝÝÍb±Š‹‹qïíí}ê©§>\YYéããCôE|  ¤¤„ñ{²®®.r•E¬Ù¬@îÉ;:îääœ[³æ¯"QšDòç…¿\·>d³Ù¼dÉ’eË–‘e*‹óߨØÈb± „°µµ•ÉdÎ\®üñÇÂÎÎN??¿ììl‹F8K¦‰D¢wß}—(˜L&¹\Îf³‰·^&“q8œââbN§V«ÃÂÂ0 {á…'t:ýäÉ“]ÔjµoŽM$pÿ{r“É$•J ÆÓO?pêÔ)¾sçN¢Ä!>Þ×ׇãøÔÔ„ð¹çž#*(öú'*ö}}}Tã­[·È÷o```fyÖ.f>B#0LçÏ·mÛVäëûçÇÛùØc»ŽÈmäøñãQQQTËló?22ÒÑÑa6›SRR¨õÚ††¡R©±b´ŽÉdúõ×_›šš¨ÅpêÕëׯ766Å¼šššŠŠŠ?æÍ‰4?"„øý÷ß½¼¼*++U*ÕW_}Åçóïܹãè ,3›ÈI&&ô••ŠM› ÄâÝŠÈ5MSSSPP±#³ÙDNÅ¢1Säðo >>>Ÿþù©S§RSSW¬XQ[[;í+V‹1âã×ÄǯÄ0†£Ã± ¥R™ššºcÇŽ¸¸8»^ÈårÉS6›½víÚim,3q”zJ¥joo'J ˆ‡ ñ­ž…óoy^~ùeúÏ0...¥¥¥‰‰‰¤ýÔprÈ'‰prÈ'ÇBu]¥R=ü8z½žÉd::Š{èïï/++stˆûÅ‚ÈÛÛÛ~€@ pt÷ÐÒÒ’””äè(÷Ë=Єóöä„“ƒDŽ@89Hä„“ƒDŽ@89ÿLõ“€¸D@IEND®B`‚mysql++-3.3.0/doc/html/refman/inherit_graph_22.png000644 000765 000024 00000145006 14042362133 022434 0ustar00tangentstaff000000 000000 ‰PNG  IHDR‡§ÅPýIbKGDÿÿÿ ½§“ IDATxœìÝ{\MéþðÏ´ÛÝKE!E„™ SΘ·AJÌ`Ì93̸c?sŒ{Lœ™1®ãZQÉÁkrO(IéB©­ëÞûûû£Ó:¶jW”]|߯—×ËZÏZÏúîµ×²¿žõ<Ï1ÆcŒ1 XGÛ0ÆcŒ±úƒ“CÆcŒ1&àä1ÆcŒ 89dŒ1Æc=mÀcŒÕ'~~~Ú±™:u*ÞÿýZ«[cŒ±ç„„„ %%EÛa0V-!!!HNN®Õ:¹å1Æ{Á”)S0tèPm‡ÁX•D"Q­×É-‡Œ1ÆcLÀÉ!cŒ1ÆprÈcŒ1Æœ2ÆcŒ1HaŒ1ƨ§OŸâ‡~À¢E‹ ‘Hêä+W®Äƒ*,ÓÓÓòeË?ÆÊ•+üü|´mÛ3fÌ@³fÍ„í.\ˆ¬¬,aY*•bðàÁèØ±£Z½Õ©«¾ÊÊÊÂÂ… ±xñbj;œ—Â-‡Œ1ÆX%—˱jÕ*ÕÙ1T*”J%”J%Nž<‰àà`aY©TbbbбcGœ:u ü1|||pëÖ-¸¹¹áúõëB]›6mÂõëס§§===$&&¢gÏž;v¬°MuëªOÜÜÜpâÄ @QQ¢££¡R©´ÕËi;Æc¬¾‰DصkW§²Q(())ZðŠŠŠ P(`ddTí:T*222`ccS®Œˆ›› a]jj*ìíí‘ ™L&¬/..Faa!¤Ri¹z4•UeÊ”)¸rå Nž<©¶¾{÷îÉd …ŽŽŽÚz}}};v вeK|ýõט4i’°Ío¿ý†)S¦ -- R©´Úu•“¤¤$XYYUØrªT*‘——§vnªS–““©Tªv| ôûyøð!ìííÕÖÛÚÚbÓ¦MèÝ»wE§í•â¬ÊË^¯sË!cŒ1ö’îÝ»±XŒ¥K—ÂÖÖæææ˜9s&fÏž SSS˜˜˜à믿Púæ•1cÆû* ØÚÚb÷îÝ€ ÀÉÉ ...°³³Cdd¤°íÞ½{aii tíÚÆ Ãwß}§Ë… àììŒo¾ùööö033ðaÃPPP ± –.]Šž={ u½¸¬ILL N:…yóæ•K¦¶nÝŠiÓ¦iÜßÓÓùùùHKK«Q]û÷µ5:wî ™L†I“&A©TâÞ½{J¥ „¥¥%ÌÍÍÑ­[7äææj,€Ë—/£mÛ¶hÒ¤ ÌÍÍ1gΔµ¡………ÁÒÒ­[·†ƒƒ–/_èСÒÓÓ1pà@lÚ´ ÷ï߇L&ƒ\.é8µ“CÆcìáÆˆÅ/¿ü‚Å‹ãÆHLLÄÁƒˆ¬¬, :{öìAII àøñãÈÏÏG¿~ýpïÞ=àúõëÈÊÊÂĉñí·ßÒÒÒàïï¹sç"77ß}÷vïÞ-<Ò-£P(ÂÂB¤¤¤ )) /^IJeË4–€»»;úöí+Ôõâ²&·oß†ŽŽÚ¶m[®ÌÁÁ}úôQ[—••…„„$$$àÏ?ÿÄŒ3бcG¸¸¸T»®ÔÔTøùùaÆ xôèîß¿ˆˆ¬Y³——‡Ó§O#99.\@\\öîÝ«±L.—£ÿþ2d²²²píÚ5lÛ¶ ëÖ­Crr2>ùä¬Y³yyyøý÷ß1}út$$$àêÕ«°¶¶Fxx8F •J…§OŸ¾rœÚÄÉ!cŒ1öŠæÏŸ 00~üxXYYÁÛÛúúú¸{÷. …BãÇ(}íÙ!C ‹ADxöìÖ­[‡¬¬,̘1CØnçÎÉd˜8q"ôõõѯ_?ïÑ7o ФIŒ?ûöí«²¬wïÞj­r/.kRTT±X\í7u,Y²îîîpww‡ŸŸär9~ÿý÷ÕµsçNX[[£ÿþ€&Mš`øðá U;Ž‘‘<<<àéé‰Û·ok, Gqq1¦L™"‚¹¹9†Ž={ö ((6l˜p~BBB ¯¯_§qj '‡Œ1ÆØ+*ë#¨§W: ˆ³³³P&‰ T*!‹áëë‹( „††bĈJûâmÞ¼AAA°³³ƒ»»;8HLL„§§§Úñš7o^a&&&°°°–ííí…ÑÁšÊ^…‹‹ òóóqîܹrewïÞÅÂ… ñüð†%K–@.—C.—ãÉ“'8uêÞyçÕ•˜˜ˆÎ;«•;::"--MX¶²²þ.‘HP\\¬±,!!r¹íÚµƒ««+\]]±eˈD"$&&¢uëÖjÇóññƒƒƒÆsóªqj '‡Œ1ÆØ+z±ÜóžOŒFŒ°°0;v ‰=zôPúè¸k×®¸xñ"ÒÓÓáïï/¾ø077GFF†Z•M-“——'ô#€óçÏ ‰¤¦²Wáêê ccc!™}^@@ªÝªXݺ,,,ʵ°]½zM›6–ŸÿN^{[Q™••ÌÌÌ””„ääd$''#::k×®………âããÕêX³f RRR4~žWS[89dŒ1Æ^“îÝ»C,cÚ´iøôÓO…Ä ::ü1ž}úà§Ÿ~‚­­-ÜÝÝ‘ÿûßH$ðôôÄœ9sðþûï£iÓ¦P*•ððð¨°~###9r+W®Dff&Œ)S¦àüùó•–@DDBCC1|øð —«2nÜ8dffbĈP*•‰D011ÁöíÛáîî^£sTº<<<°xñbøøø Y³fÈÌÌÄðáÃ1jÔ¨J[U«âää„õë×cìØ±˜5k=z„O?ýÓ¦Mƒàçç333˜ššbåÊ•B7___|öÙg(..F—.]„:ë"Î×ç9dŒ1ÆžSóÆ© Äž={„'eˆwîÜAaa!Ú·o_îQlvv6222àììŒÑ£GÃÆÆK–,ÊÏœ9ƒ~ýú!''ÉÉÉhܸ1LMM«,«M………¸{÷.7n ''§j?N~Ùºrrr‡æÍ›ÃÜÜüUB<{ö ±±±°±±)7ŸaAAÒÓÓáèèXa,7ÆºŽ³L]ÌsÈ-‡Œ1ÆØk““ƒØØX¬^½Z˜#ïy"‘®®®•îojjZí„NÓ@‰ªQ¼ ±X\ã–ÂW©K&“¡S§Nµr¼2e#‡+"‘H*L Ëb©L]ÄY—89dŒ1Æ^ƒ¤¤$Lœ8_}õ•0åÍËjÙ²%ÌÌÌÔÖWš€h*cìEüX™1Æ{N]?Vf¬6ñëócŒ1ÆXâä1ÆcŒ 89dŒ1ÆcNcŒ1Ƙ€G+3Æc/¨ì $e •‹u_S4Œ½^ø µÆ)Œ½É89dŒ1öVJMÍÆ¢Eûzï½ç„àà ðòj©í°Ó:NcŒ½Uòó‹ñŸÿÇš5ÇanÞÃáëëÁ-…Œý'‡Œ1ÆÞ *aûöóXºô Š‹•˜9³>ÿ¼+ôõy2kÆžÇÉ!cŒ±7Þýû™˜:u'._~€Ï>óÂÔ©½!“5ÒvXŒÕKœ2Æ{c•µΛ†fÍ,1 îîÚ‹±z“CÆco¤ÄÄ,LºÑщ;¶fÌèëNcŒ½Qˆ¿þú/ÞÖ­›àðáipuµÕvXŒ5œ2Æ{cdg?äIÛñ×_wðÍ7áË/?à÷3VCœ2Æ{#DG?À¸q› ‰°gÏWx÷]Gm‡ÄXƒÄÿbŒ1ÖàíÞ} ¾¾hÓ¦ Žý†CÆ^·2Æk°ˆ?ýtâË/ÿŽY³úCG‡'³fìUprÈc¬AR(Tøæ› ½Œ+†Áßÿ=m‡ÄØ“CÆc Nq±&lÅñã±Ø¸ñŸøàƒÖÚ‰±7'‡Œ1Æ”âbF^«W“ô%÷/d¬–qrÈc¬Á()QbìØÍ¸|9»vGûöü¶Æj'‡Œ1Æ"ÂäÉÛqölvìø’CÆê'‡Œ1Æ„Ÿ~:€}û®aÛ¶±x÷ÝfÚ‡±7'‡Œ1Æê½;/ 0ðO¬\9]»¶Òv8Œ½ÑxlÆcõÚõëÉøî»|ýuO ÚIÛá0öÆi;Æc¬"OŸæ£W¯åpr²Ä¶mc¡«ûòmAAAµc §§'ìíí«Ú,˜“CÆcõÖ¤IÛqêÔ]üùçt˜™½R]"¿9…½ÝvíÚ…¡C‡VµY0÷9dŒ1V/;v ÁÁQذᯜ–©æ#coœšüçˆû2Æ«wrs ñí·ÁðõõÀGµÓv8Œ½U89dŒ1VïüðC(Š‹øá‡Ú…±·?VfŒ1V¯œ;wAAQX·n4ÌÍk;ÆÞ:ÜrÈc¬^ù÷¿÷¡{wôíë®íP{+qrÈc¬ÞØ¿ÿ._~€ï¾ë§íP´êéÓ§˜}ºÚû6 £G–£¢¢Ð¥KxyyÁßß_XODHJJ‚•••pÞŸW“ïäñãÇ033¦r©,æ?¬Zµ ?ýôþñFŽ ©TŠÕ«WcüøñÕŠW¥RááÇՙ|ºœœœH¥Rèèü¯-ïÉ“'(..®q]5Á-‡Œ1Æ´N©TaÍšã6¬3-´îÝ»±XŒ¥K—ÂÖÖæææ˜9s&fÏž SSS˜˜˜à믿øùùa̘1¾ …¶¶¶Ø½{7`Á‚prr‚‹‹ ìììÔãîÝ»–––°±±A×®]1lØ0|÷Ýwj±\¸pÎÎÎøæ›o`oo333 6 Ë`éÒ¥èÙ³§P׋ËÕ=R©°´´„¹¹9ºuë†ÜÜ\Ü¿2™ r¹K—.… ÒÓÓ›6m‚=zTiÝ:uB‡ðŸÿüGX·ÿ~X[[£sçÎÉd˜4i”Je¾8|ø0\]]áââkkkL:ÔbÖôÙˆ………ˆ‹‹S‹yâĉX¿~}•ñ@XX,--Ѻuk888`ùò垇9sæÀÍÍ ©©©€Ë—/£mÛ¶hÒ¤ ÌÍÍ1gÎ:tè€ôôt 8›6mªÁ·XCÄcŒiÙשI“)—^gÇ@»víªÖ¶ñññ€FŽI™™™´yóf@  ôôt:rä ÌÌL "333*..&"¢Ã‡“T*¥‚‚Š'SSSÊÉÉ¡ââbúé§ŸÈÓÓ“ˆˆ>|Hb±˜V­ZEÅÅÅ´oß>ÒÓÓ£éÓ§SJJ  ììlŠŒŒ$4aÂ***¢ÔÔTrrr¢ h,#":tè-[¶Lø\/.ÛÙÙQ```¹ÏïããC#FŒP;C‡%¹\NQQQdmmMüñ‡P–——G …‚:wîLC† ¡ÔÔT’Éd´mÛ6¡NsssÚ¸qc¹cM›6lmm‰ˆ(%%…$ EDD ŸgÕªU5úNˆˆÞyçÚ¹s'©T*JMM%cccŠŽŽV‹YÓg#"úá‡uìØ‘¦OŸNááᔟŸ/Ä®)Þ¤¤$’H$´cÇáÜ‹D"ºwïÅÄÄP£FˆˆhæÌ™ÔªU+JII!"¢¼¼<²µµ¥¹sçÒ³gÏèÁƒäääD¿þú+ÙØØÐ¡C‡ªº„Ë©ÁõÄÉ!cŒ1­óñù™FZW§Çx™ä0!!ˆˆžÿüs""Š‹‹#Zºt)=|øT*ÑŠ+ÈÆÆFí¸Ýºu«49,Kzˆˆ–.]Jï½÷žÆ²ê¨Ir˜˜˜(”<˜fÏž­–hݹs‡5jD...äïï¯VgeÉᆠÈÞÞžˆˆ–-[FŽŽŽjå³fÍ¢=zÔè;Q*•tûömR©T”žžN'Nœ Ú¶m[…ÉaEŸ­Ì;whþüùÔ£G200 SSSúÏþSe¼Ë–-£V­Z©•íÞ½›’’’„äpúôédllL>¶Ùºu+™››Svv6Éår’Ëå4kÖ,êÝ»7½žä+3ÆÓª›7SqîÜ=Œó7m‡RNYA=½Ò.úÎÎÎB™H$‚R©„X,†¯¯/BBB P(Š#FZ¶l‰Í›7#((vvvpwwlj‰‰ðôôT;^óæÍ+ŒÃÄÄÿ{Ünoo¬¬¬*˪bllŒ¼¼¼rëóóóall¬¶ÎÊÊJø»D"©°ß[«V­0pà@ܹs§ÜãñÊܽ{:uPzN:wî¬Vîè舴´4a¹:ß‰ŽŽÂÃÃáèèˆÎ;# ººº•ÆPÑg+**ÂãÇѪU+Ì;'Nœ@ZZ>ýôSL˜0iiiãMLLDëÖ­ÕÊ|||ààà ôxð Âcååå©Mksþüy!‘ÔTVGGG\¼x±Üúk×®ÁÑÑQmÝóçâùÏþ¼sçÎ!44žžž˜:uj¥Û•)**ÂöíÛÑ¥K€……nß¾­¶ÍÕ«WÑ´iÓ ãxQÙñ._¾Œ9sæ ""÷ïßGXX˜ÆD}¶³gÏÂÖÖV-y633Ã÷ß•J…””ñZXX >>^­lÍš5HIIàôéÓX¸p!&Mš$$ôVVV033CRR’““‘œœŒèèèW!]œ2ÆÓ¹¼W1j”×km©mÝ»w‡X,Æ´iÓðé§Ÿ ÉFtt4>þøcF…iÓ¦a÷îݸzõ*V¯^­¶Mvv6RSS‘’’‚³gÏ¢[·n°´´ÄW_}èׯnܸˆˆ¥#s÷ïßaÆÕ(–ÀÔÔ...€ÐÐP$$$T™¬>ÏÃÃøöÛoQRR tDóš5k`llŒ¶mÛjŒwàÀˆExx¸ÃòåËÕZ>e2&L˜€fÍšaÒ¤I€^½z!;;Û¶mFA÷íÛ;wîèëë#77·Fç£ÆjüК1Æ«%Û·Ÿ#GÇo('çY /Ñç°¬`nn. øøxa}}}:uê”°ùäR(ˈJû¿µnÝZ8Þ‹ËDD‹/¦Æ“T*%]]]²±±¡'NTz.ˆˆ†NÓ§OWë¿7~üxrqq¶Û²e I$Š%¢Ò>‡„?ÎÎÎ4nÜ8JMMU‹géÒ¥¤§§G-Z´ ©TJãÆ£’’’}'%%%Ô½{w²´´$GGG>|8;–lmméÌ™3åúVôÙˆˆÎ;G®®®dhhHÎÎÎdjjJÝ»w§Ó§OW/ÑêÕ«I__Ÿ¬­­ÉÕՕˆˆÔ¤EEE‘®®.íß¿Ÿˆˆ¶mÛFFFFäàà@úúú4zôh***""¢)S¦D"¡­[·RMÔàúýwÆcìµ4ègØØ˜à—_FÕù±D"víÚ…¡C‡ÖIýسgŽ?®¶žˆpç΢}ûöåZH³³³‘‘‘gggŒ=666X²d‰P~æÌôë×999HNNFãÆajjZeYM¨T*ÄÆÆÂØØXí®¶äää ..Í›7‡¹¹ùKד˜˜™L&Ì]øðáCØÚÚÖ¨•Z©T"!!YYYèСC…ó.jŠ·  éééåÓWåÙ³gˆ…M¹9srrиqc¡ßeuÔàúæI°cŒiÅýû™ˆŠº­[Çj;”W’““ƒØØX¬^½ºÂyìD"\]]+ÝßÔÔ´Ú ]Ù`†š–UEGGnnn/½m“Éd •WñbBÖ¤I“ס«« gggµ//Ò¯D"©qbFFFððð¨ôxu‰“CÆcZ±{w4¬¬¤øÛßZi;”W’””„‰'⫯¾Â€^©®–-[ÂÌÌLm±±q¥‰‡¦2Æ^'‡Œ1Æ´bïÞ+8°tuöØHwwwDEEÕJ]sçέ°þ£GVzìÊÊ{Y ûŽdŒ1Ö Ý¸‘‚øø |üqGm‡Â{ÁÙr˜››‹ÂÂBm‡ñÖ211¡¡¡¶Ã`/¡lz öfpppÀû￯í0*~vv¦èØQûƒÞ&?ÆÊ•+üü|´mÛ3fÌ@³fÍ´Z•²²²°páB,^¼˜cêØ™&''#33SÛa¼µÚ´i£6ÛÅÅÅ ƒ››Ξ= wwwm‡XŽ››ñ÷¿ÿEEEˆŽŽæ‰duçLÀÒÒ²^¼z[œ­Vþ*q²ÊqŸCÆc¯Uxø4on‰¶mí´Ê[#&&§N¼yóÊ%f[·nÅ´iÓ„åýû÷ÃÚÚ;w†L&äI“ T*qïÞ=H¥RÂÒÒæææèÖ­rss5–¥¯³kÛ¶-š4isssÌ™3GøOhXX,--Ѻuk888ÓuèÐééé8p 6mÚ„û÷ïC&“A.—¿tœ¬z89dŒ1öÚ¨T„ˆˆ«4èm‡òV¹}û6tttжmÛreèÓ§ 55~~~ذa=z„û÷ï#""kÖ¬PúçÓ§O#99.\@\\öîÝ«±L.—£ÿþ2d²²²píÚ5lÛ¶ ëÖ­Crr2>ùä¬Y³yyyøý÷ß1}út$$$àêÕ«°¶¶Fxx8F •J…§OŸ¾rœ¬jœ2Æ{m¢¢îãÑ£§0 ƒ¶Cy«A,WÙÇsçΰ¶¶Fÿþý”N=|øp„†† Û,Y²D˜ ÙÓÓ·oßÖXŽââbL™2Dsss >{öìAPP„w'÷îÝ!!!Ð×ׯÓ8™fœ2Æ{mö¸Øh;”·Š‹‹ òóóqîܹrewïÞÅÂ… ADHLLDçÎÕÊ‘––&,??àP"‘}++KHH€\.G»víàêê WWWlÙ²"‘‰‰‰hݺµÚñ|||ª|ÛË«ÆÉ4ãä°ìر{öìÑvŒ½už>}ŠÉ“'£   ý·áG IDATÎõøñcüøã4hzôè‰'ªuàgU+)QbïÞ«<ø]m‡òÖquu…±±18P®, ‰D°°°(×ÂvõêUµ÷-?ßgñÅÁk•YYYÁÌÌ IIIHNNFrr2¢££±víZXXX >>^­Ž5kÖ %%EãçyÕ8™fœVƒ››Nœ8Qiydd$Ο?¯Õ²ØØ4„‡_Ñv¬’ËåXµjŠŠŠêô8ñññèÒ¥ ÂÂÂеkWŒ9Ïž=ÃG}„ùóç×é±ß$'NÄâÉ“g<˜û¾nFFFX²d Ö®]‹={ö ¤¤ÅÅÅØ¸q#Ö¯_É“'úõë‡7n ""@éháýû÷ }_F¯^½mÛ¶ £‹ûöí‹;wbàÀˆExx8 44Ë—/‡Mi˲¾¾~…Iê"Nö?oìT6/C¥R!##C¸(Ë' …%%%B>>hÖ¬2331|øpŒ5 Cqq1ºté"ÔYq²çÐèæÍ›tóæÍí3þ|jÚ´)I¥RjÒ¤ >}šˆˆÚ·oO"‘ˆ iãÆDDF666¤¯¯O]ºt¡ÐôéÓ‰ˆhÉ’%ôÁõ¾¸¼oß>²´´$kkk200 ‰'’B¡¨Q ©©©dhhH6l 333:xð EGG“››I$’Édôý÷ß“J¥""¢C‡‘‹‹ ™››“¥¥%M™2…ˆˆâããÉÐЖ,YB$‘HèÛo¿¥Y³f‘D"!]]]úꫯjtOœ8Aééé–edäÒúõ§è£VP“&S¨iÓiÔ¤Éd²µLþþkktV7víÚE5ùg¡&ׯ¯/ýë_ÿö-))! !¢Ê¯"¢ððp277'±XL^^^äïïO3gΤ””@ÙÙÙtþüyjÙ²%M›6,--IWW—üýý)??_c‘æû6**ŠÐ­[·*<ï¿ÿ>}öÙgtëÖ-244¤ÂÂB¡¬_¿~´jÕ*"¢JïÑïçÆkË€(==Ž9B(33³ÚçòÅäðéÓ ºHŸ~ú+ÙÛO%;»)dg7…lm'«ýáä°~x™ä°º×PPP™™™Qqq1>|˜¤R)h¼þ>|Hb±˜V­ZEÅÅÅ´oß>ÒÓÓ£éÓ§«%‡‘‘‘€&L˜@EEEÂýµ`ÁeDšïÛ7’X,®ôGtâĉäééI111@-9ôöö¦+VP^^^¥÷è‹÷ó–-[*=O5Qß’Ã͛ϓÓtzú´fŸ£6qrÈÞf5I¹Ï!JW={ö ëÖ­CVVf̘ãÇW¸íñãÇ!“É0sæL˜˜˜`Ô¨Qj¯êÝ»·Úd¢Ï/kz_“Ê,Z´½{÷ÆáÇ+&@¥Raûöí:t(233q÷î]ªuä?>,,,0`À¥³è[YYÁÛÛúúú¸{÷nÎgq±GÆà«¯¶¢}û9˜2eþúë”JT*‚JŃß4Õ¹† …B!\×!!!2dÄb±ÆëçÎÉd˜8q"ôõõѯ_?ï ž7o ФIŒ?ûöí«²LÓ}ûôéS˜ššV:ˆ¡¡! …Æó£i*2e÷³ŸŸ_¥ç©!Û¼9ƒ½©´aÆÞÜç@Ë–-±yóf¬X±3fÌ€››,X€Áƒ—ÛöèÑ£ðòòR[÷âpúÊT6ô~÷îÝ5Š¡L»ví@mš€çµmÛ:::Çš5k ££ƒöíÛCWWWm»²þ]e}<œ…2‘H¥RYågS(TˆŒ¼‹ÿüç2.]:€ÂBtuu P”í«9!|ø0ãÆm®ò8¬n%''C$ªù? Õ¹†Äb1|}}‚ž={"44»ví ùLLL„§§§Úñš7o^a&&&°°°–ííí‘••Ue™&Í›7Gzz: +LÐîܹƒ-ZT¸oII Í÷h™²2Mç©¡:wîbcÓ°bÅpm‡Â«n9––†®]»ââÅ‹HOO‡¿¿?¾øâ‹ §Ç066Fll¬Úº+Wª7ÒVÓÐûšÄð"MÓ\¾|sæÌADDîß¿°°°r*ê_†xø?«†ê^C#FŒ@XXŽ;‰D‚=zÐ|š››###C­ÎÊ:œçåå©Ý3çÏŸIMeštîÜb±›7ÿï?/øþûïƒ`ܸqBËâóÿ™ºwïÍ÷hE*;O Õ¦M‘x÷]G´o¯yî:ÆX=Qg·µ¨¦}#""¨cÇŽôøñc"*í8naa!tVwpp    ""ºpá‰D" &•JE'Nœ ¡Ïá¹sçhûöíBÝÏ/GEE‘ŽŽíÝ»—ˆˆ?~LÍš5£õë××(†çûY%$$X,¦?þøƒT*=xð€Þ}÷]ú÷¿ÿM{öì!kkk¡Ôž={mݺUè/VV–››K(>>^ˆ___ŸN:UísyâÄ JN~HGŽÜ¤ þ GÇoÈÎn ÙÛO-×ÏûÖ?/Ûç°º×R©${{{jÓ¦ Íœ9SØFÓõæÌ‹ÅMD¥÷‘¡¡a¥}W®\IDDwîÜ!'''Zºt©Æ2"Í÷-ѬY³H*•ÒüA………ôøñcòôô$‰DBýû÷'¢ÒNþzzzÂÀµ   @+V¬Ðx¾x?k:O5Q_ú>z”CM›N£(m‡Â}Ù[­×?H!"R(äååEäááA-Z´ ß~ûM(Ÿ2e I$Úºu+-Z´ˆtttÈÖÖ–š7oNŸ~ú©Κ5‹Z·n-ìûâòÒ¥KIOOZ´hAR©”ÆG%%%5Š¡¢“mÛ¶‘‘‘988¾¾>=šŠŠŠ¨¤¤„ºwïN–––äèèHǧ±cÇ’­­-9s¦N’CÒpÕurHD4cÆ @wîÜÖUuýÿøãd``@-[¶$'''òòòª09422¢>}úPÓ¦MI"‘Ð'Ÿ|B …BcQÕ÷­J¥¢eË– #°Ëf+ðòò":yò$}ûí·$‰È‚>úè#êÝ»7­X±‚ˆ*¿G+ºŸ+;O5Q_’ÃùóèC‡¹TTTñhÓ׉“Cö6«Ir(úïo”˜˜¥GWáÎ;(,,DûöíËu>ÏÉÉAãÆ…>U™™™xôèÚ´iS®_Urrr‡æÍ›ÃÜÜü¥cxѳgÏ ØÛÛ«•%&&B&“A&“>|[[Û*ß³YS'OžD›6mÔ^[T&33W| ׯ'CO¯´O"ð·¿µÂÎ_Öj,¬æ‚‚‚àïï_§Ý ±gÏžr®ªºþ³³³‘‘‘gggŒ=666X²d‰P~æÌôë×999HNNFãÆajjZeYM(•Jܹs999hÕª,,,°oß>ÃÇÇ@é–’’µþe4Ý£Õ=OÕåçç~©ýkCffºtYˆ™3ûb̘îZ‹£ŒH$®]»0tèPm‡ÂØkWƒë?˜¤ü—H$‚««k¥åeIUKKKXZZ¾Ô±d2:uêôÊ1¼¨ìãqttT[nÒ¤IÕÖ2KKcüãÝðt+7 vm'©¬þÉÉÉAll,V¯^åË——+¯êú755­vB§é½¬U½³U]]]´iÓFm]Ùìe4MÒ­é-SÕyjHÖ®=ccCŒQùèò×­¢w ×…'OŠ`fføZŽÅXmãäiEÓ¦æ˜8ñCLœø!bcÓp÷î#m‡ÄêXRR&Nœˆ¯¾úJ˜òæeµlÙffêoÙ066®ð?]U•Õ7µyž´)##[¶œÅ¬Yý ‘h;A@@ê f lahØbqsèé™"=ýW¨T…up,Æê'‡LëZ·¶EëÖ¶ÚƒÕ1wwwDEEÕJ]sçέ°þ£GVzìÊÊê›Ú.]ÊÄåËYÈÉ)†]#tëfƒ.]¬k9JV]xÿýºŸ€úöí4ôë€1cþ†™3ûÕùñªK¥"ܼ™òßÑÅ·pãF Äb}xx8ÂÛÛ ýû·‡Må“–3ö– ~#“CÆØëñèÑSìÛw Wu¶¶2ôíëÿ÷жmÃêsÆ^ÎÓ§ùèÓg%¬­¥ž==­ÆSPP,Ì=xôh ÒÓsaooŠ=\áíí†îÝ]``ðÆ>4c¬6ðëóc5“›[ˆÃ‡o`ß¾k8q"¢W/7|óÍGèÚÕ™˽E”JÆÿEE üöÛh­%†IIqêÔ]=ƒ¿þº…B‰¶mí1bÄûðövC»vö|]2VÜrÈ«RI‰'OÞFDÄU8p … Ý»» ÿö0 Äb}m‡È´àÛoƒ…Ý»¿BÇŽM_Ûq•JbbR…ÇÅׯ'£Q#xy9ÃÛÛ ½zµ…••ñk‹‡±7 ?VfŒUîúõd_BXØedg?ûï:bÀ€ðñyffFÚiÑŠ‡±råüúëgèÛ×½Î÷ôi>Nº‹Ó§ïâðá›ÈÌÌC³fæèÖ­¼½ÝУ‡+¿ªŽ±ÚÁ•cêââÒ±wïìÞÄÄ,´jeƒÑ£½àç× M›šk;ÿ¼æÎý¸ÜHáÌÌ<œú¨ÝóÍêVff¾új+Μ‰ƒJõ¿àKJ”HHȪt?==]Lžì=\áîîð:BÕ {{{ :TÛa0VoT¸ž“CÆ^£øø „‡_FPP’“ŸÀÝÝ3göƒÏ»033Òvx¬ùë¯;?~ òòŠÔÃR òþ……%èØ±Ù2Æ^'‡ŒÕ±ÜÜB>\úØøôé»°±1Á!>¼3š7·Ôvx¬)*R`áÂlØp"*H M‰!èêê`Ñ¢ýèÖ­UÝÉkÐ89d¬¨T„Ó§ïb×®‹8xð:tttз¯;‚‚¾ä·–°——ޱc7ãÞ½t^¶Ç¸R©ÂÕ«I8{6žž-k7HÆXƒÇÉ!cµ(55aa—ñÇç”ôîî˜={|}= “5Òvx¬ ŽÂŒAP*U2ÑD__"‘ …RhiÔÓÓAHÈ%NcåprÈØ+*,,ÁÑ£1غõ"#ã`eeŒþý;à“O:£uë&¯=ž+Vàܹs¯ý¸¬n(:ˆ‹3Å“'’jl]¾¯¡‘Q1¤Òb*ÿûGCC THNN‚ŸßîJk ~µàYµ=}ú?üð-Z‰¤:ßuÍmذ …cÇŽÖýù矈ˆˆÀ‚ •–N]ôìÙ3Ìž=Ÿþ9ììì°páB,^¼††5{OöŽ;`hhŸZý™6mœñÅ_”‹AGGþþþuCež? .DVÖÿ‹I¥R <;vdee½ôù®M:Z;2c Üõëɘ1#íÚÍÁ×_oƒX¬_~…¨¨ðÿ7X+‰!P:=ÁùóçµrlVû23A,VÂÚú,, `jZ©´) §§‚HDøßÜÔå»+— yóØÙåÁÂ"ÆÆÅ00ÐÜò˜’’Âs¾fr¹«V­BQQQ#-- ,P[ˆU«VáøñãºóçÏcÕªUÉd(**Btt4TªšµV@ddäkû·hõêÕ˜0a.\¸ ¶þÈ‘#8vìØk‰¡2ÏŸ‡M›6áúõëÐÓÓƒžžѳgO!a•ó]›¸å±xôè)vᄂ6IõäÉÞ6¬3ÌÍk;û:-Àš5Çѵ«3Žù'O~‹ z֫Ľ½$˜™¡Y3s´iÓï¾ëXãÄðmuïÞ=ˆÅb,]º¶¶¶077ÇÌ™31{öl˜ššÂÄÄ_ý5€Ò ¶ÇŒ#ì«P(`kk‹Ý»KÑ/X°NNNpqq"##…m÷îÝ KKKØØØ k×®6l¾ûî;µX.\¸ggg|óÍ7°··‡™™† †‚‚e°téRôìÙS¨ëùåN:A*•âÌ™3JŸ2ˆÅbÌœ9‡ö‰ŒŒÄ‡~¸ÿ>d2är9îÝ»©TŠÀÀ@XZZÂÜÜݺuCnn. <<¶¶¶Édxÿý÷‘œœ,Ô¹ÿ~X[[£sçÎÉd˜4i”J%>úè#üðÃJ“)cccÌš5KØÏÁÁAˆWÓy€ÿû¿ÿCFFF¥s÷ÀáÇáêê X[[cêÔ©5þþàòåËhÛ¶-š4isssÌ™3G˜LZÓy¨ˆ§§'òóó‘––¦v¾«ú®5Åðª89d¬ׯ'cΜP¼óÎ<Œÿ K°víH\»¶K– EÛ¶vÚ‘1V‹ŠŠŠpãÆ ÄÆÆâ—_~ÁâÅ‹qãÆ $&&âàÁƒ DVV†Š={ö ¤¤püøqäçç£_¿~¸wïpýúudeeaâĉøöÛo”>Öõ÷÷Çܹs‘››‹ï¾û»wï†R©T‹C¡P >>………HIIARR.^¼ˆeË–i,wwwôíÛW¨ëùe]]]tïÞ]H¶> oooôèÑiiiˆ‹‹ƒR©Äùóç…„R¥RáéÓ§B}yyy8}ú4’““qáÂÄÅÅaïÞ½(((ÀðáÃ1iÒ$dffâË/¿DDD 55~~~ذa=z„û÷ï#""kÖ¬AÏž=qâÄ ¥ÉªJ¥qß¼yr¹;wÖx^ËÈd2¬^½óæÍÃ*üŽgÍš…ùóç#33W¯^Åï¿ÿŽË—/×èû—Ëåèß¿?† ‚¬¬,\»v Û¶múuë4ž‡2YYYHHH@BBþüóO̘1;v„‹‹‹ÚùÖô]kŠ¡VcLðèÑSZ·î/úàƒ%dk;™ºwÿ‰QFF®¶C«6___òõõÕv¬Ûµk5ôŸ‡šÞñññ€ˆˆèÉ“'€<(l£¯¯OgΜ¡‚‚’J¥tèÐ!""3f }þùçDDG´téRzøð!©T**,,$"¢+VÚq»uëFÓ§O§””@ÙÙÙI(ÄÙ†g IDAT33SØnéÒ¥ôÞ{ïi,«Ž€€j×®yxxÐüADD½zõ¢Ÿþ™®\¹B"‘H¨¿ì¼äåå OLLêþøcêß¿?=šþõ¯‘R©¤Û·o“J¥¢ôôt:qâYXXжmÛjôýoݺ•ÌÍÍ);;›är9Éårš5kõîÝ[ãy "jÑ¢‘‘‘©©)uëÖ¢££ËoMßµ¦ªKÃ}Ä-‡ì­W\\úØxäÈßàá1+VF—.-pèÐTá±±¥¥±¶ÃdŒ½e}ÙÊú¬9;; e"Q黫Åb1|}}…BÐÐPŒ1вeKlÞ¼AAA°³³ƒ»»;8HLL„§§§Úñš7o^a&&&°°°–ííí…Q®šÊªÒ³gOÄÄÄ >>W®\A¯^½½{÷ÆáljöíÛ«Õÿ"+++áï‰ÅÅÅ8zô(¼¼¼Ô¶ëܹ3€ÒÏ]ö÷2ŽŽŽHKKƒ››¬­­q᜔ö»zõ*ÀÌÌ wîÜQ*»ví:uª;räHœ>}·nÝBß¾}1lØ0üþûï¸pá|||h¾®³³³Ã·ß~‹n<$P=FoÑ¢EˆŒŒDJJ >\g’ICÞ ˜˜˜ ==ÈÈÈ@\\~úé'×áI¨{¯5µ¡)°ày®””Ta×®Ë3f=†]'n 8¸?._þvîü~~½¡£Ã&ñ·¤–Háÿüó^zé%œ?£GƸqãpûöm¸¹¹áÆÍZ÷“rssãÆcµ•êdd`ýú³Ü­gÝ Aƒ  1gμõÖ[\P‡Ñ£G£  æææ9r$÷ž 6 ±±±Ü·ØØXµ9I 6mÚHLLÄÑ£GáååUoYTTöîÝËçñmxýõ×±gÏx{{sϽøâ‹066Æ‘#G”&´4”ŸŸnß¾ððpþüóOî<}}}qóæMnì]AAŽ?Ž &¨7n܈>}ú@GGC‡Å–-[àìì̯š®«*Ó§O‡>Ì=—––ccc¸¸¸"""pÿþýFOâ1b ±{÷nnöÈ‘#±oß>×áI¨{¯5µ¡)°ày.Ôä$|ù寰hÑ!XYbÿþó%.;;ãÖnb› “É”¾¥ŠÅb”——7ê …=RYFDJƒÛ5‘H$JßúZ¦Î´iÓðÒK/áÏ?ÿÄÇŒO?ýçÎÃ+¯¼ÂÍX¬Ýδ´4µw3år9ŠŠŠ]VTT¤òšB¡@fffç ‘H€KqQ;ÈÓ´³)äæ–â—_.ÀÇg ú÷ÿK—žÀÍ›uÏãYÄçóñæ›oâöíÛxçw¸ç}||СCX[[ÃÝÝøî»ï ‰àááE‹aÀ€pvvF`` úôé£òøzzzøí·ßààà€Þ½{cÀ€˜5kV½e‘‘‘øú믹ã<¾ T‡53…kóòòŸÏÇ«¯¾ÚèëÑ·o_|÷Ýw ‚­­-Þ{ï=úôéƒeË–aܸqèÚµ+œœœàííÉ“'sí©¨¨À!CTÏÞ•H$Jk4]WUø|>6oÞ¬t'ÐÏÏ®®®°··‡““8€?üsçÎEvvvƒÏÕÉÉ [·nÅÔ©Sáàà€®]»¢G˜3gŽÆëð$ԽךÚÐ$ýðÃdllL|>Ÿ<==©¸¸XcQ\\¹¹¹‘H$"###úßÿþG …‚ˆˆ"""ÈÄÄ„:vìHvvv´råJ""êÕ«ñx<ÒÕÕ¥mÛ¶Ñýû÷ÉÐÐJKKŸ¸ ¥iBJqq%……EÓ[om";»Ùdk;‹lmg‘µõL²¶žIžžß5¸žæÔ³~øá2dHç %$$ÐÕ«W¹÷¹¶‚‚ºsçÉårš4i7Y¡ÆÅ‹ÉÐЈª?Ÿ *k rrrèÆ$“Éê”Rtt4ååå=ѱ뻮 •’’B………ÜvVVÖ¯¬¬Œbbb(##£N™¦ëÐP y¯5µ¡>š&¤°ày¦H$2úí·[ôᇿ’½ýlru]@sçî§[·2[»i-æIgiNš4‰rssiûöí€üüü(;;›~ûí7nÆ\XX™˜˜D"!"¢Ó§O“UVVRRRSQQI$Zºt)yxxуH(ÒºuëH"‘бcÇH[[[í,ÍéÓ§“X,¦¬¬,rrr¢ÐÐPeDD§Nâ«Ç·ÃÃÉÏçsíV'33“D"EFFqu¬[·Ž»NÜ/dKKKÚ¹s§Æ²ÒÒR²¶¶¦/¿ü’ÊËË)--œœœhÓ¦M”žžN"‘ˆöîÝ˵™ÇãQrr2YYYq3bkÏb|Òv6Ôã4Äb)ýöÛ-š>}'9:~F¶¶³ÈÎn6Ö~<Áaaa!]ºt‰œéèÑ£Ou¬ú‚ÃÇi*cž-Íý^³ÙÊÌ3ïÞ½l|ûí1¼üòb¼óÎVUàÇ'áÆêœ„nn,'a}–,Y333øùù¨î†µ°°ÀðáÃ!˜˜???nUÇøñã! AD(//ÇæÍ›‘——‡yóæqûíÛ·FFF @ €¯¯/  ¶-‹/†ŽŽlll0mÚ4;v¬Þ2///¥.•ÚÛb±B¡°Þ™|ûö탥¥%F°±±App0"""¸}–/_===ôéÓJíU•9r‰³fÍÁÔÔÁÁÁ8tèÂÂÂ`ooϽòòòBxx8A³¶³axˆŽ¾¹sÃðâ‹ 1eÊ=zb± A.o›c[Bzz:BBB0cÆ îçåIuíÚ•›˜QC__îîî*÷×TÆ<[Zó½f#ï™v«¤¤ G^Å1ˆ‰I&L臷ßÈÆ>Ʀð:t("""°ÿ~ÿ¥šX½z5æÍ›777„††â7Þhõ...¨¨¨Àå˗댧JLLDXX.\¨6åF픪Òxh*«r¢¶îÝ»#55ݺuSz~ܸqõžÏÓ¶S™L3g²`iùÆŽý¡NY}rrJac3«Au5']]+ôé£zìëÓêÙ³'bbbšäX_~ù¥ÊãŸ9sFmÝêʘgKk¾×,8dÚ72°k×e:¹\#ºcÿþáééÜd9žžGIáˆñãÇ«Lá1aÂäææbÓ¦M˜:u*¼½½ajjZgÆ^ZZšRS£&uCÍ@sU)šRx|ùå—8{ö,—jbݺuªSx|ÿý÷ˆÇË/¿Ì¥ðPÕeR“ºaæÌ™\ê†iÓ¦Õ[…””nf`ím===,_¾óçχ»»;üüü@Dؽ{7¶nÝÊÝòõõEhh("##áççÇ¥ÜPuw§¡FŒ™3gb÷îÝxë­·‘‘qãÆaüøñ3f BCCqäÈŒ3Xµj>úè#€@ P9+»9ÚYŸÏƒXœÕ«ƒ°téxüõ×]=zÇ߀X,ŸÏSÛ­¬«« ?¿ÞMÒŽ§±cGUk7¡ÍùçŸàããGGGC"‘àðáÃpssÃ¥K—гgÏÖnbnnnذa† ÒæÓ9=KXpÈ´YR©þyáá±8yòôô„ðóë…Í›§°1„­¨&…Çòå˕Ƹùøø`éÒ¥°¶¶FÏž=QXX¨2…G§N —ËëMá±fÍäææâ7ÞÀ¬Y³¥¶ ¨NÙÁ‡oôÑGÈÍÍÅĉ!—ËÁãñ`hhˆ={öpk§Üppp@nn.‚ƒƒ1yòä'N–]“râÃ?Ä‚ ðèÑ#¼õÖ[˜3gttt°víZÀÄÄÆÆÆX³f ×µïïï·ß~‰ýû÷çŽÙíTGGGÇ»aøp7¬X!Å™3ÿ ,,þy‡»#©P4.OÓ:jÒ9EDDp_ê>ýôS 4³gÏÆÙ³g¹}éßÜy*ÓÅÈår”––ÂÈȨQeEEE000¨ÓS¡P(ðàÁƒ:wÌU¥sªíiÚÉhÐlÓ`æ %&>¢o¾‰¤îÝÿG¶¶³(0ð':zô*I$OžàyÂRxhVYYIׯ_§äädµé+ž6å†*šRNTTTPJJŠÚ¶H¥Òk'QÃÖVÎÏ/£_½H£F­%›YÔ©Óœçf¶r{ÄÒ95.Óó€¥²aÚ¼ââJڹ󽎬­gÒ+¯,¦o¾‰¤ŒŒ¶•ë=`)<˜§Õà°¶¬¬BúñÇßiðà¥4xð²flYñàPKçÔ¸tNÏMÁ!ëVfš„L¦€¶vã3#±É%íKS§ð011QzŽ¥ðhŸllŒ0mÚë˜6íudg7l¦e5E:'___ªÓ$Õ¤¦jl:§ÒÒÒ&O礩LðàyjÇŽ]Gdä5lÚôvƒög“KÚ/–ƒ©¥¥ak7Q¥sjx:'†‡ÌSZ¿þ,–-;xô¨VVªÿ0°É% Ã0­‡¥sb“¦ƒ­Â<©TŽO?݃eËN€ˆÀçó°tý=Ó+—4$ï[K*+C"a?Ö Ã(«IçôÓO?áСCJ¥H$ضm¶nÝŠ™3g¨N“tóæMDFF—&©¦Û÷IŒ1………ؽ{77»xäȑطoÆŒƒ„„9r¸tN5Iù5¥sjêv2ÿaw™F+.®À;ïlELL*÷mL&S`ÇŽKøä“a(+?ó+—”ãÇÇÍ›™ ›Ö¢uW --iiùHOÏWúzzÌÌŒð -Ú&†aÚ>–Ήi(±{­L#¤¥åãÍ77"#£2YÝ»fžž/ 66<£Fõ„ ýпçgfrIqqþïÿÎáçŸÿ‚X,ƒ¡¡·oÛ¤uH¥rde"--©©yHKËCjj>ÒÒò––ŠŠêq3::Úpp0…££:u2…££)̰n](„B98Фíbžaaa j×]qÀ~T¨ªªBbb":vì'''•¿Ÿ‹ŠŠpïÞ=tîܦ¦¦MRoyy9`eeU§Ë¸²²ÙÙÙpttTÙ–Ž;rcs·óy¡áçü»sÈ4X\\*&Mú¥¥b•«#ZHNÎFhè3æ%èë [¡•Í£¼\Œ_½ˆµkÏ@,–rkÌU ¬LŒŽ·”“D"ÃÇÅuîüݽû÷ïçpÇ74ìS88˜âõ×_äþß©“)ì쌡¥U· yÓ&9233öô'Î<—._¾ÜÚM`š‘P(¬w5##£&ÏP3sX‘H¤20¬i‹:ÍÑN†u+3 y 3fì‚BAj—Í’JåÈË+èQ½ž™À°¢B‚={¢°zõ)µAqFF>ºu³©ó|}Ý¿5ßÖj€Ã‡»ÁÁá5.tpx²oÂQQQ z¢×2 Ã0Ï72~úé|÷Ýqn»¾ýŠÃ»ï¾ªq¿¶N"‘!,,ß %%Ujb8qâbbRÿíþÍã‚Àòr1€êîßNLàà` ggËÀÿºƒuu›öÇu£1 Ã0Oƒ‡ŒZR©sæìÃÁƒq {$“)ðë¯Ûmp(•ʱ4–-;¢¢ Èå@ý¹kkkcÍš3øpp0ƒ‹‹† éÖ î_†a†i‹ê‡™™™¸téRk´…iCÊ˥زå.RRJ•žçñÇý[8ñ@T}׈””ƒU«¶ÁÞ^¯UÚþ$ärBTTNÊ@y¹  )(ü!  Ö¬ næ2 Ã0L˨^ºt‰UzÎñù"yƒÏï…¢êßÀ¯ D I( PHToW?/‘DR|þùvÈd…­}* ÂçëÂÀ`„Â.àñ::ÚHêÏa(•Ê‘žÎÒÆ0 Ã0ϵÝÊí9…Ã< ¹\ và‹/–cΜo—ŠÛ·@"‘AK‹>Ÿ§2éuJJ^+´–a†ašsÈ0ÿÒÒâÃÚº*+ðõ×o¨¾3˜˜øׯgàúõ ÄÆ¦âÞ½GÉÐÖÖ!7·R©V+ŸÃ0 Ã<=2ŒÜÜláæf‹7߬ÎÎ/‘Èpûö.`¼v-¡S'–€•aÚ’ðððg&?ô$2L#éèh£wïNèÝ»Sý;3 Ó*fϞͭ’Â0Lã°àa†yæ 0 híf0L»ÔîƒÃââb|õÕWøþûï!‰šµ®üü|lܸ111(**BÏž=1zôh 6¬ÑÇÊËËÃ7ß|ƒeË–AW·qK¯5Äã×å›o¾A^žê‰‹/Ö¸ýôSÈår$''ÃÀÀ6l€¹¹9LMMñꫯ¢¤¤púôi¸ººÂÅÅ–––˜={ö½+V¬€••²³³Tßi´µµÅ£G‡†¹¹9ºuë{{{¬ZµŠ{m||<ºwšbÑ¢E ¢V¹š>C Ã0 Ã4=fÿþý¤âiµ’’’Mš4‰rssiûöí€üüü(;;›~ûí7@¹¹¹F&&&$‘HˆˆèôéÓd``@•••”””DÆÆÆTTTD‰„–.]JDDôàÁ …´nÝ:’H$tìØ1ÒÖÖ¦¹sçRff& ÂÂBºxñ" éÓ§“X,¦¬¬,rrr¢ÐÐPeDD§N¢•+WrçU{{Û¶m¤««K …Bå5 !zë°²²¢S§N)]·ÒÒRÊÌÌ$‘HD‘‘‘DDÜëÖ­[ÇíHeeeC–––´sçN""zùå—iß¾}¤P((++‹ôõõ)..NéºuéÒ…FM_ýµÒ#,,Œˆˆd2õëׯOYYYdddD»wï&"¢ôôt‰D´wï^îÚðxðððÀ;w P(°gÏ"77‰‰‰ÐÕÕÅ;wTÖ“——‡û÷ï+=rrrZZZرcNž<‰×_^^^xóÍ7aaa°··Ç„ ¸k@€#GŽ@"‘`Ö¬Y "˜šš"88‡jñë¡é3Ä0 Ã0LÃ4YpX3¾K[»z£³³3WÆãñ —Ë! áïïððpÈd2DDD`âĉ€®]»bûöí ƒ­­-zöì‰'NRSSááá¡T_çÎU¶ÃÐÐfffܶ7KWS™&;wFvv6ªªªT–Ÿ9s]ºtyâ:RSSѯ_?¥çñðáCnÛ‚û¿H$‚D"ŸÏÇ‘#Gàèèˆ~ýúaíÚµÐÒR¿JÇÛo¿_~ùEé1}út®ü…^À˜1cp÷î]¥.ûÔÔTtëÖMéXãÆƒ½½=îß¿²²2ôèÑ®®®puuÅŽ;¸@º%¯‡¦ÏÃ0 Ã0 ÓdÁ¡ªI5¨Öl؉'âðáÃ8{ö,D" xøð!<==ììlaêÔ©¨¬¬„©©)w‡«FZZšÊºJKK¹q„Å’šÊ4éß¿?„B!¶oß^§ìÞ½{HMMŸq㞸33³:wû®]»†NþK²\ûúÖ\Ïøøx,Z´‘‘‘HIIÁáÇ5ùçq—/_FDD<<<0{öl®333$%%)íûã?"33011Azz:222‘‘¸¸8üôÓOZözhú 1 Ã0 Ó0-žÊfРA …˜3gÞzë-î|\\F‚‚˜››cäÈ‘\Wí°aËøøxÕD._¾¬òø …›6m$&&âèÑ£ðòòª·,** {÷îåŽS{ÛÜÜsæÌÁܹs±oß>.=Ì;w€×^{ o¼ñF½unâDm¾¾¾¸yó&"##TÏâ=~ü8׫NZZŒáâ∈ˆÀýû÷Õ¦¦ÉÉÉArrr‡X,FEE&OžŒ9sæààÁƒ¸víÖ¯_3f päÈ®žU«VÁÊÊ #FŒ@aa!vïÞÍÍ.9r$öíÛ×â×CÓgˆa†a˜z|â“NH©ªª""¢’’@IIIÜ>€ÎŸ?ÏmÏ›7ÐÝ»w¹çd2 8ttt¨OŸ>Ô¥Kúù矹òo¿ý–ttt¨k×®äääDT9!EOO|||¨S§N$‰èÍ7ß$™L¦±ŒˆhÁ‚Ô­[7®¾Ç· ­^½š:tè@ZZZdhhH€Þ}÷]ª¬¬$"ª·ŽY³f‘H$¢]»v)MÀ "Z±bikkS—.]ÈÀÀ€>úè#’J¥u®/Qpp0Í;—¤R) 4ˆÌÍÍÉÑÑ‘‚ƒƒéÃ?$kkkŠ­3!€ÊGtt4M›6\\\¸zvìØA"‘ˆˆˆhýúõ$ȶþ° IDATÒÒ’\]]éðáÃ\{vïÞMzzzdooO€¦L™Bb±¸Å¯G}Ÿ¡†`R†a˜ç\Hù6SXX‚‚‚š51ò† pèС:“ˆwïÞEUUzõêUgHaa!rrràììŒ)S¦ÀÊÊ Ë—/çÊÿþûoøúú¢¨¨èر#Œë-k ¹\Ž»w²Ý»wWJmÓ:ŠŠŠÐ±cGnlæãe÷îÝCçÎajjÚà6¥¦¦ÂÈȈË÷÷àÁX[[7ù‚ó•••ÈÎΆ££c²òòr$$$ÀÊʊ˃Ø×£¾ÏP}ZâóÏ0 Ã0mØ]>¯¨¨ X¿~½Rž¼<®®®j_ollÜà€ÎÞÞþ‰Ê꣥¥…_|ñ‰ë×´L‘‘ÜÝÝݦǃ5›F£!D"‘ÊÀ7sX–ºõ}††a†Ñ¬EƒÃôôt„„„`ÆŒ\Ê›'ÕµkW˜˜˜(=§¯¯¯6˜ÐTÖTZ¢Žö„]†a†iZ¥[™aÚ*öùg†ažs-Û­Ì0Ϲ\»w!66·nebùòÀÖnÃ0 Ã<2L#–#.. ññiˆŠJÆõë騬”lm?Á‰a†aÚ2Œr¹II9¸q#11)øûï$¤¦æˆ hA&S(u?ÛÛ›h8Ã0 ô,8d˜•”TâöíBèëÀøñ?âÚµ4TVJ¡¥ÅŸH¥ÿ%Ô–JåJ¯ÕÒâÃÁ¡á釆a¦­bÁ!ÃüKK‹‡+СCO\¾üßrr¹r¹†þûZ;;Ö­Ì0 ôjƒÃ¦N Ì´O|~û@[Û€ºÏ¨.!Š‹ÏA,Ni®&69O ;v\Àòå'QPP"Ô;{Y¡P`ïÞ+¸q#66F°µ5†ììŒaggKKhi5ÿj•5³­¦)øûûãÀ­Ý †aZXàÐÃÃû÷ïo¶0m”D"ÇÞ½÷qõjž†½tT>«­ÍÇæÍßBWW«y×L (¨/ŽÇ²e'ñèQ@¡P$Êd Ð|>‰‰ðçŸwðàA×ý¬­Í‡¥¥!lmagg [[c.€´·7­­1:vÔUyì'Á~†™§µfÍšÖnÃ0­¤NžC†Qg×®Ëøâ‹P(ê¿“TwµúúöÂÆ“[ uÍG*•ãðáx¬Zu àñx*ƒÄ‹ sgs¥çŠ‹+––ììdg— --ééùÿ>WŒœœRîZêêjÃÊÊ:™ÂÁÁ––°´4„ƒƒ):u2…­­1´µ5ß}dy™¦ìÎ!Ã<XžC¦á&N€.],ðî»[Q^.L¦y ž\Nð÷W¿¤^{!h! ÀãÇ÷Áñã×ñý÷Ç––>Ÿ¹¼z’ ǃMÝ¥ ; gÏj-ËðèQ1ÒÓóñèQ1rrªÈ´´|\¸¨t÷Q Ђ‰‰žRÀX@ÀÁÁŽŽæjëa†a˜†bÁ!Ó(tÁÉ“³1yòf¤¦æA&S¨ÝW__ýûwiÁÖ5/>Ÿ?¿Þðõí…ÈÈkXµê’“sð`` „P(hô1uuµáà`ªv¦³\®@nn)22 •UˆŠ•UˆÌÌBüñG²² QRRÉí¯§§  ùÇ62̳ˆµgÚ»ýû÷#0ðéc`Á!ÓhŽŽf8yr6>ýtNº©²‹U ЂžžúôYŒ‘#{aܸWàáÑ|~ûÿåËçó0fÌKðóëS§nbåÊ“ÐÖnž1•ZZ|XYÂÊÊîîN*÷)-­ÂƒEÈÈ(À©Sç°j•ú€aÍfΜ‰´v3¦Ñšr2" ™'¢§§‹Í›§à§ŸþÀwß§>=pï^v«µC__+¸¸X¡ àV«µƒaž h’;/ ÓÒXpÈ´ <Ó§…««5>úh$)×Ílii€aÃÜÀãñðþû¯!#£G^Åž=W°uëytíj1c^¸q¯ÀÉ©}•ãñxxá«ÖnF»T\\Œ¯¾ú ßÿ=D"Q³Õ³lÙ2<|øÛÖÖÖ†³³3^ýu8;;7[½šÎO¡P`öìÙJÏ™ššâÕW_ÅàÁƒ›­M Ã0õaƒ“˜§6tè‹8uj6lmM ­­mm-L˜ÐOiü޽½ ¦OŠ¿ÿ^€sçæÃË«v¿ÃàÁËðã¿#'§´Ï‚i eeeX·nÄbq³Ö³k×.ÄÇÇC[[ÚÚÚË娵kz÷îóçÏ7[½ŸŸ››Î; :8\·nòóóѱcGˆD"ܸqC† ÁÆ›­M Ã0õaw™&ѵ«NŸžƒ?ÞŽsçî`ܸWÔîëâb…… GáóÏG"..áá±X·î –.=—_v@@€;ÆŽ}¹Ióþ1õ“ÉdJ¥Ü.±X ™L==½C¡P ''VVuï¤JJJ`hhXïq$ ªªª```Ш2M|}}1þ|n[,ÃÅÅÛ¶mÃk¯½¦´oQQ Àç+Öt~ QPP‰D9aü{ï½§t§püøñøå—_0uêT¥ýòóóabbRgÒD}mRw.Í¡´´ gÎüƒtàíÝ£Ùëc¦y°;‡L“10bçαjUœ-ëÝ_K‹¾};cùò@ܼù ~ùå]XYbáƒèÑãxûí-ˆŒ¼Vgc¦é$''C(bÅŠ°¶¶†©©)>ÿüs,\¸ÆÆÆ044Ä'Ÿ| :ïÝ|À½V&“ÁÚÚ„††ÂÉÉ ...°µµÅÅ‹¹}= sssXYYÁÓÓ&LÀ_|¡Ô–+W®ÀÙÙŸ}öììì`bb‚ & ²²Rc¬X±C‡åŽõø¶*ºººpuuUÊ îÝ»ÃÆÆ¦¦¦X´hW®îü  •î~Ž5 ëׯWª¯wïÞÈÎÎÆ˜1cð믿ªm—T*EçÎÿÉ=}ú4\]]áââKKK¥®hM×\Ó¹4¥’’J8ƒ‰†›Ûÿ0cÆ.ܺ•Õäõ0 ÓrØC¦Iñù<÷oôëtuµ1|¸†wCqq~û턇ÇbêÔ00aøðàOOg–n¢‰‰Åbܼy 8qâÞ~ûmøùù!55ׯ_Lj#ðÕW_!00S§NÅO?ý@€?þøðõõErr2Ö®]‹””tèЫW¯Æüùóñ÷ßãáÇ ²eËðñÇã·ß~ÃØ±c1kÖ,¥vÈd2$%%¡ªª ™™™ÈË˃§§'V®\‰×_]mÙ¢E‹Ð³gO¥;coÀÇqãÆ @ee%.\¸€ .àØ±cª»€G…>øóçÏG^^ {{{ :TíùQnq‰Dùc r_»v ÖÖÖøõ×_áåå™Lزe Μ9¹\Ž;wî ::gΜá^·`Á,Y²xøð!\]]1qâDªm“¦sùðßòUàôé[8zô*ΟOÏçA&S@ Ъ7Y;óôZj¼îâÅ‹1lØ0xzz*=¿mÛ6Lœ8ñ©ëÈÏÏÇÆƒ¢¢"ôìÙ£GưaÞúØÑÇ&·öÌ´9††àŽýû?FLÌ—˜3Ç wï>BPÐÿÁÝ=‹E°;MlÉ’%033ƒŸŸ`Ú´i°°°ÀðáÃ!˜˜???Èd2üñÇ€ððpŒ?B¡D„òòrlÞ¼yyy˜7o·ß¾}û`dd„øúújL²xñbèèèÀÆÆÓ¦Mã‚7Me^^^˜3g·ßãÛðË/¿ÀÇÇ>>>ðõõÅܹsѯ_?¸»»Ž9‰D‚Y³fˆ`jjŠàà`:tHãù=-"ÇãÁÐÐD„-[¶¨î2Þ³g‘››‹ÄÄDèêêâÎ;Û¤é\žTQQw‡°GE˜3g.\H„\®€BAÜd4 }-—ÙµÔxÝ-[¶àúõëuž?vìNŸ>ýÔÇOJJBÿþýqøðaxzzbÒ¤I(//‡··7–,YòÔÇoŒ¶86¹µ°;‡L›fcc„÷ß ï¿ÿîÞ}„cÇ®!<<[·žÇ /XÁϯÜÑ©“ê$ÒLÃÔŒWÓÖ®þ•Pû[2ǃ\.‡P(„¿¿?ÂÃÃ1tèPDDDpk8wíÚÛ·oÇêÕ«1oÞ<¸¹¹!44o¼ñRSSááá¡T_ínÓÚ affÆmÛÙÙ!//¯Þ²†X¸p¡Ò˜ÃØØXôë×»wïÆG}„û÷¬ =z(•ëÞ½»ÆóSE*•6¸]|ðÒ˜Ã{÷î¡[·n˜7olmmqäÈüøãàóùèÕ«´´ª/MmÒt.!“ñqà@ ޹ŠóçïB¡ ?Õ êµÆ‰kãóâY¯ÛPO2þuÒ¤IxñÅqðàAî÷Ï{ï½///aèСuîZª£i|mUU@(j>^é˜iii°°°¨SWii)*++¹?²QQQ\ ©©ìIôéÓƒÆ?ÿü°°°€‰‰ ÒÓÓ¹¡ 999(//×x~5ûÖîFNNN~âvÕ\—û÷ï#;;‹-BLL zöì èÒ¥zÕ!MmÒt. ‘™Yˆ„3 qåÊ<5ŸƒúÇ-žtuu1cÆ „††"..QQQ¸}û6Ö ÄÚµk±e˘ššâ¥—^Bqq1tu«'*Ž5 #FŒ@HHˆÚã?|ø;wÆÿýßÿá³Ï>ƒD"Á„ Ô¾ª¨›¬ª>§ö:$$$¨=‡Úu×›¼qãFL™2¥QïCSaÁ!Óîðù<ôíÛ}ûvÆ¢E~øë¯»ˆŒ¼†¥Kã›o"1h Fê_ß^èÐA§þ2 6hÐ …BÌ™3o½õTÆÅÅáË/¿ÄÙ³gannŽ‘#Gbݺu€aÆáûï¿G||<^~ùeÄÆÆâòåË\wnm …›6mÂÌ™3‘˜˜ˆ£GbÚ´iõ–EEE!%%ÁÁÁ*·Õ133Ciiu ¥#F`æÌ™Ø½{7Þzë-ddd`ܸq?~€ÎŸ?ÏmÏ›7ÐÝ»w¹çd2 8ttt¨OŸ>Ô¥Kúù矹òo¿ý–ttt¨k×®äääD¤¹sçRff& ÂÂBºxñ"ééé‘uêÔ‰D"½ùæ›$“É4–-X°€ºuëÆÕ÷øv÷îÝiéÒ¥uÎúôéäèèH•••DD´{÷nÒÓÓ#{{{4eÊ‹Åõžßüùó‰Çã‘™™y{{“——­^½ZéüˆˆfÍšE"‘ˆvíÚER©”P}Ž{˜™™‘Ý»wˆˆ¤R) 4ˆÌÍÍÉÑÑ‘‚ƒƒéÃ?$kkkJKKÓØ&uçÒPþþþäïïODDYY…´aÃYêÓg Y[ϤNæµõL•{ûÙ´k×¥×ó¤ÊËÅTTTÎ=RSó¸GRR6]¿žÎ=._N¢óçïr£G¯rƒciçÎK´sç%,hÿþý ª¿ægçþýûDDTPP@èäÉ“Ü>€þþûoª¬¬$:uê}ðÁôÎ;ïѽ{÷HGG‡V¬XA< …BÁý<®^½š¬¬¬”ê}õÕWUþì ÜÜ\n¿+VPß¾}5–5„­­-mذ¡ÎóãÆ£‰'Ö{»ví"SSS*,,¤²²2*++£ ——­]»–¬­­ÕÖ=wî\êÛ·/ýóÏ?J¿§ˆˆ†N«W¯ÖxüškTóûKÓû@Tý{B__ŸlllÈÆÆ†LMM 2„JKKë=M×AÓ9<þ{ÂÊÊŠkcchðç·a,8džIe´sç%=zÙØÌ¢Þ½¿¢ÿýï]¹’L …¢µ›×l>‰~ø† Rçy…BA tõêU•׸  €îܹCr¹œ&MšDsçÎU*¿xñ"Qzz:4¨¬©•••QLL edd(=_ßù)ýV§°°¤Ri£Ú”’’Âýá "ÊÊÊ"…BQo›ÔKCÔk»~=>ûl?ué2llf‘Ýl¥àÐÎn6íÛw¥ÑõµùãZVTT‘ê/V:::\`òî»ïÒûï¿OR©”ÌÌÌè÷ßçöÛ»w/¹»»Ç£îݻӡC‡ˆˆ($$„ƧTïÛo¿­28¬ùù¨}ÌÎ;k,kWWWúþûïë<ïííMüq½çJºººdgg§ôðöö¦£GŸÏ羜=nôèѬ2°š®ƒ¦sh‹Á!ëVfžIÆÆz˜8q&NÀ-Ý·woõÒ}öö&=ú%¼ùf¿v¿t_K***BBBÖ¯_U«VÕ)çñxj»‡ÀØØÆÆÆ ªËÞÞþ‰Êš‚žžúôéSçùúί!“ÀÈȨÑmrttTÚ¶±±áþ¯©MêÎåiôìi+ì:'OÞÄÞ½WpéR´´øËå RXXX`æÌ™˜7ovíÚ±X mmmœ;wîîîðööÆ Aƒ”ÆõP׫éøy4y|l²ºú4]Mçð8Uc“[\SÜd˜öF.WЕ+É4wî~rvžOvv³iôèu´sç%*-­ªÿmTKt+3ÏuÝÊõ‰O£ääœfhQóÃt+?ëãu‰ˆ–-[F;v$ÒÒÒ"+++:wî\ƒÏAÓøW…BA+W®$‘HÄ[ ÐÀÉÊÊŠþüóO"R?®WÓñUu+«{ˆÚæØäÆhÌç·a¼È0Ï-±X†óçï"<<§NÝŸÏÃk¯¹Àß¿¼½{´«» aaa j–eÒ˜çK@@€ê;Ï ‡ýû÷#00°YŽ¿aÃ:t¨Nu"ÂÝ»wQUU…^½zÕYª°°999pvvÆ”)S`ee…åË—såÿý7|}}QTT„ŒŒ tìØ‘¡©¬1  ¯¯_ç®CΡ¼¼ °²²‚]×Ëårܽ{EEExá…`ff†cÇŽA"‘pw(‹‹‹!•J•ò6ôøµ©{C]}õ]MçP[M*œÇSühÒ„ŸßlÌ!óÜcK÷1 Óœž…ñº|>nnnjËë;‡úÆ¿jiiáÅ_TznÔ¨QJÛšÆõ6d|m}ïCc´Å±ÉM‰‡ SKÍÒ}îxø°ÇßÀ1 ú?ØØÁǧ'ÝÑ£‡æo¦ Ó^(Õë"3ͧ©Ç뚘˜(=ÇÆë6LS¾Ï:Ö­Ì0 P{é¾´´|né>w88´¥ûX·2Twmåå•!/¯ 99%ÈÍ-Enn)²³‹‘Ÿ_ެ¬Bdg£  :cË–wêƒu+3Lûº•¦…µ·¥ûjþ°3Ͼìl=””è@"Ñ‚D¢©T 2?àñ|>PIã¿;…wîœG@À‰:ÇŠŠBÿþý›·ñ ôI,• Ã4BÍÒ}_ý®][‚½{§ÂÁÁK—Ç+¯,ÁÛooÁ1¨¨hEÓíííáïïß*u3­Ã̬ZZ„¢"!**Jë†@ă\ÎCíÀ U/I׿ 0 ZÌ0L[Ǻ•¦ TUIqæLõD–sç éÀË«;üüzcÈnÏUR`¦uÄÅ¥â“Ov#=½€Ë­VŸŽ…¸sç;6æð_¬[™iÏX·2ô1B¡~~½áç×……åÜD–)S¶ÂȨ|}{Âß¿ÜÝØŒg¦Y¼òŠ#Λ ÎbíÚ3àñxÉäj÷çóyèÕË••èéé¶`K†iëØC†iF™™…8r${÷^Áýû¹ÜÒ}ÁÁýй3[ºi·o?ÀŒ»˜˜­ö.¢–úúº(-ÃÍÍîîNèÛ× ƒ¹ÀÀ@ÔÂ-nx<ú÷ï_ož<†i‹ÂÃÛìÎ! ¦…ܽûáá±8p 99¥xá+ôA@@_XXè·vó˜gŒT*ÇÏ?ÿ‰¥KO€Çd²ºAbxø4äç—#::11)¸y3|>ï¹ ÙD.¦½›={vSŒfÁ!ô4…‚›‚ððX9rååb¼òŠ#Ü1vìËèØ‘uñ1Mç· ÙÛ·@¡øï×½ªñ†yye¸|9Ic°øÚk/ÀаCkœ Ã0-ƒ‡ Óšž¥¥û˜¶K&Sàÿþï¬\y —+0|¸¶m{OãëòòÊpõj¢£SpáB" æùÀ‚C†i+JJ*qúô-„‡ÇââÅ{lé>¦ÉÝ»—=¸~=¡¡oàý÷_kÔëÕ‹]ºX o_'¼úê ,Xd˜ö‡ ÓÕ,Ý‹72`mm„‘#ÙÒ}ÌÓ“Ëزå<v…‹‹ÕS+?¿ ññšƒÅW_}FF,Xd˜v„‡ ÓÖÕ,Ýwð`RSóÚìÒ} óx°xëV&x<,2L;ÂC†iOnÜÈÀ±8r$åmré>†©Á‚E†i—XpÈ0í‘\®À¥KI8p 'OÞDU•]áïß¾¾½Ð¡ƒNk7‘aêP,@×®–\°èéé cc½Vn)Ã<×XpÈ0í]iiNž¼‰ˆˆ8\¼x:èÀǧÆŽ}¯¾ú´´ØÒ}LÛTV&ÆÕ«i8>‘‹ Óv°àaž%99¥8zô*ŽG||ÌÍõ1zôK;öe¼òŠCk7a4R,*S® š‹ ÓìXpÈ0Ϫš¥ûöïFRRlmáíÝAA}ѽ»mk7aêÕ`qà@g˜˜°`‘aš æyP3ãùÀX¤§ç³ÏL»Ä‚E†i,8d˜çIÍÒ}‘‘×qøp< ÙŒg¦ýbÁ"Ã4 2ÌóJ"‘᯿î"2òZÏ#Gö„ž[ã™i_ÊËň¯££ïãÚµtH¥r,2Lã°àa ªJŠ3gþAxx,þüó´´ø>Ü þþ}0x°+[ã™i—ê ÝÝàéé kk£Ön*ô%,8dFYQQŽ»Žb› CC† ck<3í ¦AXpÈ0ŒzYY…8yò&¢qëVllŒàãÃÖxfž ,Xd•XpÈ0LÃÔÌxEZÚ3žÇïGG³ÖnÃ<µ†‹:ÃÆ†‹Ì3‡ Ã4NíÏGŽÄ#/¯ ={ÚÃ߿Ǝ}fflÆ3ól¨¨ ..•‹Ìó†‡ Ã<9Mk<ûøôDÇŽlÆ3óì¨ ££ï#::QQÉu‚E®°µ5ní¦2ÌÓ`Á!¾²e IDATÃ0êeffâÒ¥K ÚW,–ãæÍÄÇçáîÝbhiñУ‡ Fv€¡¡N3·”{{{ 0 µ›ñÜÐ,º»;¡oßÎ2Ä•‹L{ÂC†aÔ CPPP£_Çç‹ ¾¡° ‚HÖ ­cçïï´v3ž[,Xdž´[» ô}ì;dÛÐÚMxîuè Ã%Ûê‹ÿûß!H$2¥`qð`WØÙ±`‘i[XpÈ0 Ã0Íàñ`±²R‚ØX,2m †a˜çRcÆÔ6%{{ÀÞÞ~~ÆHI)Ž{ň½‹ˆˆ8ÈåssºtÑÇÀ–°·g³ÿ™'ó4cYpÈ0 Ã<—.]ºôDcj› '€ŽŽ ÊÊl‘•e‡'b §´v³˜vêiÆ ³àa†y®±1µÌ³æiÇ ³àa˜gFqq1¾úê+|ÿý÷‰DÍVϲeËððáCn[[[ÎÎÎxýõ×áììÜlõ2 ô~k7€a¦©”••aݺu‹ÅÍZÏ®]»mmmhkkC.—c×®]èÝ»7Ο?߬u3 Ã47vça˜f!“É •J¹;xb±2™ zzz >†B¡@NN¬¬¬ê”JJJ`hhXïq$ ªªª```Ш2M|}}1þ|n[,ÃÅÅÛ¶mÃk¯½¦ÔÎôôtXXX4ëÝL†a˜¦Âî2 Ód’““! ±bÅ X[[ÃÔÔŸþ9.\cccâ“O>P=&æƒ>à^+“É`mmƒBCCáääØÚÚââŋܾG…¹¹9¬¬¬àéé‰ &à‹/¾PjË•+WàììŒÏ>û vvv011Á„ PYY©± V¬X¡C‡rÇz|[]]]¸ºº*_;~ü8,--ѯ_?áÓO?…\.‡··7¾úê+@EEôõõ±`Áîuöööøûï¿uí†aš †iRb±7oÞDBB6n܈eË–áæÍ›HMMÅÉ“'±aÃäåå!00‡‚T*üñǨ¨¨€¯¯/’““±víZܸqyyy áîÒ=|øAAAøòË/QRR‚/¾ø„\.Wj‡L&CRRªªª™™‰ôôtDGGcåʕˠgÏž9r$w¬Ç·kÚqãÆ Ü¸qW®\ÁÊ•+qá¼ýöÛ€¬¬,à—_~Á£G’’‚ÈÈHüøã:t(Î;¸|ù2 þøãÀ­[·PVV†~ýú5ûôgÅÅŘ9s&÷%¦9íÝ»ãÇÇСCñÍ7ß ..®Ù묑ŸŸo¿ýcÇŽÅàÁƒ‚³g϶Xý5–-[†™3grÏ>û ›6m½{÷šµÞ–|ŸÕaÁ!Ã0MnÉ’%033ƒŸŸ`Ú´i°°°ÀðáÃ!˜˜???Èd2.( Çøñã! AD(//ÇæÍ›‘——‡yóæqûíÛ·FFF @ €¯¯¯Æ\^‹/†ŽŽlll0mÚ4;v¬Þ2///Ì™3‡Ûïñmøå—_àããøúúbîܹèׯÜÝݹvZZZbÔ¨Q#""#GŽDtt4ªªªð×_áã?Ƶk×PZZŠßÿ#FŒ€¶6õÃ(k©1µß~û->ýôStêÔ S¦LAQQ<<<ðÓO?qû¸¹¹q_pšRRRú÷ïÇÃÓÓ“&MByy9¼½½±dÉ’&¯O“Ö[üøûÜ\×Z2 ÓäjÆÖ8µgðòx<Èår…Bøûû#<<2™ ˜8q" k׮ؾ};ÂÂÂ`kk‹ž={âĉ€ÔÔTxxx(Õ×¹sg•í044„™™·mgg‡¼¼¼zËbáÂ…ÈÊÊBVVòòòƒ¿þú »wïæÚùøÝ?GGG<|ønnn°´´Ä•+WðçŸbìØ±èÝ»7.^¼ˆßÿ½Î]J¦í‘ÉdJwvÄb1ÊËËu …BG©,#"7è8‰%%%.SgݺuXºt)Ö¬YƒI“&aåÊ•X¸p!Ö¯_ÏíSPP‰DR§ÍiiijïxUUU¡ªªŠÛ.**‚B¡PÚgÒ¤IxñÅqùòe|öÙgxï½÷°uëVìÙ³‹/V^RUÇW×u|}}±råJ¬\¹kÖ¬ÁÙ³gannŽmÛ¶5¸>MïsC¨ºÖ͇ Ã49>_ý¯–Úcò&NœˆÃ‡ãìÙ³‰D}ú¼½½qæÌܾ}Æ Ãøñãñûï¿#..“&Mzæ8È‹ÓæÔ2ÆPSSÓlètÁ‚Ø·o`È!ÈÏÏÇÔ©S±ÿ~òç×>zô?þø#,--‹ääd¸¸¸ÀÂÂÆÆÆX¹r%cHJJBbb"6lØÐ¬ç< Ø»w/RRR dzP}||¸äU^ýMc155UxZÒÒÜbyí)ºÏ­C£–®uG ä¢2cÆŒ@ ÀâÅ‹1kÖ,.©¼zõ*¦L™‚ââb˜ššÂÛÛ›û|üøñHJJBrr2 )) -Ö/•J±{÷nÀ½{÷pâÄ xyyµZ–˜˜ˆC‡qõ4Ý–ÇÄÄOž<ÐÐãpëÖ-DGGhøíÿ—_~APP€†äp×®]pssƒ¦¦&Ƈ½{÷ÂÑÑfffm¸Š¤#u÷9µjjjøøã±aà :K—.ʼn' ¥¥…‘#Ghø%§wïÞ8~ü8æÎ«p~-c µµµ\›|||0cÆ áÆ Åž={pûöm899µxíÝÝÝqÿþ}®Î§ÕÕÕA"‘ ¢¢BnýMcÙ¹s§Ü{Ô¨µ¹ÅŠÚStŸÃÓš^ëŽBÉ!!DeÔÕÕ1sæLܽ{óæÍãöOš4 :::077‡»»;°nÝ:hkkÃÓÓ+W®„‡‡77·ë …8{ö,lll0dÈxxx`Ñ¢E­–EGG㫯¾âêiº-©©)bccQSS777|óÍ7˜>}:`kk‹‰'bΜ9€×^{ UUUxõÕWžžž¨««£!å. »Ï©ýòË/‘ššŠ7ÞxW®\¿¿?,--±k×®cP4¿¶Ñúõëáåå…3gΠ®®‹-c ÆÆÆFdd$ÊÊÊ`hh55µÛÑÒÒ‚X,–c?~\nýMcñ÷÷—{µ6·XQ{ŠîsgG3ž !íÆÞÞ^f¸EWW·Ù«ÉšÎ±¶¶Æ«¯¾Š~ýúqû444‡ÔÔTÔÔÔ`ðàÁ2ÿa¬X±ï¿ÿ> àèèÈýFmii)ÓÇéS§^½zÁÐÐP©²¯¿þ_ýµÜí[·nµxþÛ·oÇöíÛ¹íO>ùo¿ý6îß¿;;;seB¡PfΓ––ªªªZ¬—t.mS;nÜ8;v GŽð¿9µ[¶lÁÒ¥K1pà@¬Y³Ó¦MSùœÚÚÚZTTT _¿~XµjV­Z…ââb|ñÅøàƒ0uêT˜››Ë|FÞüÚ§‡g HOOGEE·ÝÈÅÅvvvÈÏÏGMML‚Ö(55ööö-ÆÝØû§¨þ¦±(ºG>ûì3™õL“’’0|øp„††â½÷ÞSØž¢û¬è:J !*QZZŠ””lÛ¶ ›7onV®¦¦&wx e:E¬­­Ÿ©¬=p½ ¤{h˜ڀ€Ì˜1£Å9µAAA(,,ÄîÝ»1þ|Lœ8ÆÆÆÜ”‰F™™™-N5hœ7Û¸¸zKsj[*Sä?þ€——?~ ]]]€‘‘>ÿüslß¾999Í’CÄÅÅÉì{z~íÓÌÌÌ`dd„¬¬,‚TVVB(B àÀxï½÷¸²mÛ¶!88§NÂo¿ýÆ}îé!Ø´ZKäÝ#yšÎ-VÔž¢û¬è:V&„¨DVV,X€?üž{VÍþ#ÒÕÕ•›”)*#¤½tÅ9µnnn011Á²e˸ž,‰D‚;v@WW—ëãóùÜSЭͯ}Ú„ PRR‚ÐÐPîíAÞÞÞ8|ø0ÌÌÌð¯ý K—.ÅÁƒQ[[ ‡óçÏÃÝÝ'NĘ1c`kk ‡°°0@xx8²³³[­¿-÷H‘§ç+jOÑ}VtM=}­; #„9Ž9Â蟉®ÁÏÏùùù©:Œ.¥­ßï´´4€ÕÔÔ0Æ+//gXZZw ŸÏg.\à¶—.]ʰÔÔTnŸX,f#GŽdšššÌÍÍÙÛÛ³ï¿ÿž+ÿú믙¦¦&spp`¶¶¶läÈ‘lÉ’%,''‡`%%%,>>ž …B6iÒ$Ö§O¦­­ÍfΜÉÄb±Â2Æ[±b0`×^Óí„„æääÄ´´´˜££#344dcÆŒaqqqÜ1‹-bÚÚÚìàÁƒŒ1ÆBBBÇcöööLOO½÷Þ{¬¾¾^&æF¡¡¡L(2kkkÆçóÙܹsYmm-cŒ1©TÊ6mÚÄ´µµ™††‰DŒÏ糑#G2‘HÄbcccŒ-[¶Œ©©©16qâDæååŶlÙ¢°þ–b‘wcÌÅÅ…mذ¡Ù÷àƒ>`}ûöeÕÕÕ Ûkí>Ë;‡¦q6½ÖÊxÎÂÔk2!ˆBþ†ÀÀÀfóIçãïï ¡‚(§#¾ßÛ·oGddd³crçÔ@II‰ÌœZ‘H„7rå/^ÄäÉ“QZZÚlÞ¬¢2eI$¤§§£¨¨C† iñ½à¥¥¥èÕ«7÷²´´´Åùµ-©¬¬DJJ D"¬¬¬Zl?55¥¥¥èׯLLLpòäIÔÕÕaúôéÞ$R__/3·RÙúŸ&ïµ…¼öZ»ÏŠÎáiM¯ukžó߃pšsH!„´³®>§VCCŽŽŽ2Û4e``Ðl[ÙéB¡Pî*í;;;Ëìk|º‘¾¾þ3×´~ÚB^{­ÝgEçð´¦×úE£äBigí=§ÖÈÈHfÍ©}~íyºJ !„væêêŠ+W®´K]«V­j±þsçÎÉm[^ùŸö¼GÝ =­L!„B8ÔsHi•¼7ÎÅÏÏOÕ!BºJ !ryzz6{cé¼^ô‚Þ„ž’CBˆ\VVVPu„B:Í9$„B!ê9$„Ò£©rN-g -­>ÐÒꃊŠdÔÕµü 5BÚêyæ SrH!¤GRŜڲ²:Ü»WÆý”•ÕAG‡‡~ýô1vìôíÛ«Cã!Ý×óÌA¦×çB!/Huu’’2páÂ=ÄÅÝí[9ÐÐPƒ³³%Fî‡W^é‡#ìÁçk¨:TB…SrH!„´‰DŠ;wþB\Ü=\¸p—.¥£®N cŒÝ£G÷ÃØ±NÐÕ¨:TBä¡äBy™™wKËʪ`f¦‹áÃí1zt?Œï ‘H¹wèÒ PrH!„´Eqq%.^¼¸¸{øïS‘] M¼ür_¼òJCïà AV´x<éªÂéB!D‰DŠë׳ðÛow“‚Û·ÿ§Ž¡Cm8 ¯¼ÒC†Ø€Ç£ÕáH÷@=‡„BHÅÅ•ˆý¿ÿ~±±©()©DŸ>Æxí5'¼úêxz:@(ÔRu˜„¼4¬L!„@jj~ûí.\¸‡„„40 jƒ bôè~pu¥×’’CB!=Suu.\¸‡3gnã÷ßð z÷ÖǸqðÚkðÊ+ýÑ«õ’‡æBé9?®Ào¿Ýů¿ÞÂ… ÷P[[—^ꃷÞzãÆ €³³=HBz<ê9$„Ò­ee=ÆÙ³wpîÜ$&>€ºº† ³Ã믄Ï`Zf†Y4¬L!¤û¹~= §OßÂÙ³·‘ššŒç //¼úª=LBˆ|”BéúcHNÎÂ/¿\Ç/¿ÜDvv1¬­0a‚ ¼¼\0b„=-5CˆrhÎ!!„®I*e¸};çÎÝÁÑ£W‘‘QÄ%„¾¾ƒáînKó y”Bé2$)._~ˆ“'oàÔ©›ÈÏ/ƒƒƒÞxc(||ÃÙÙBÕ!ÒåQrH!¤ÓKMÍCDD""® ?¿ýú‰àçç†×_wưavªn…’CB!Ò;!*êŽOFNN Ì0{¶'¦N} fªn‹’CB!FVÖcDG_Ç‘#—‘–V Lšä _ßÁÔCHH¡§• !„¨T^^"#¯âرdܹóz÷Öƒ¯ïL:C‡ö¡‡JéX´” !„ŽWYY‹S§n""" /Þ‡®®6|}cêÔ¡ð𰇺:%„„¨%‡„B:†TÊ”ôI8v,55õðôt€ŸŸ||C[[SÕ!B(9$„ò¢5}ÒØÕÕ~~nxã¡01é¥êð!²hlB!í/?¿ ÑÑ7~·nåÀÂÂ~~î;;SU‡GQ€z !„´‹ššzœ;wI8>::Z˜0a üýÝ1j”#=XBH×@ÃÊ„Bž]Óy„uubŒëŸÁ=bá–-[ ê0H7®²¦iX™BH›Ý½ûaa—•Œ‚‚'ps³ÅçŸûbêÔ—`` £êð:LBB1bÄU‡Bº‰œœ$&&ª4J !„(¥¼¼'N\Cxø\¹ò––†ð÷†™3‡ÃÖ¶çÎ#1b„*{yH7†ÀÀ@•Æ@É!!„¹ž6>zô*¤R)&LpÁ‘#ïÓ_CÕáB:%‡„Ò•—WãÄ‰ëø¿ÿû·nåÀÎÎóæBPÐpXZª:<ò‚”••á‹/¾Àúõë¡­­ýÂÚY»v-ŠŠŠší·µµÅ¬Y³°víZ|óÍ7ÐÒÒzæX:---LŸ>‹/†££#æÏŸßìuuu•?àÑÕPrH!=„TÊpñâ}„‡_Á/¿Üc ¯¿>ŸîK—ôøöÛoñå—_¾Ðäpÿþý055…‹‹‹ÌþêêjÔÖÖâêÕ†‡›ž'Öøøx…BLŸ>Û¶mƒT*ÅK/½„áÇsÇœ={<’Ã6¢äBº¹ÜÜRüüs"º„GJ1l˜Ö­›ŸÁ å÷ÜK,£¾¾žK|jkk!‹! •®C*•¢  "‘¨Yc åååÐ××oµžºº:ÔÔÔ@OO¯MeŠaáÂ…-–ÅÅÅ5ÛWZZ ===¨««+¬·ªª ::ÍŠrvvÆ{g¤¤$ðxŠÓ›ÇÃÈȨÅ_ˆÚr_äŬè¾tŠï!„.I"‘âܹ;xóͽ6ì+8po¼1ññ+õ‡Qb¨<€@ @HHÌÍÍallŒO?ýŸ}ö ¡¯¯>úàïïwÞy‡û¬X,†¹¹9Ž= X³f lmmÑ¿XZZ">>ž;öĉ055…H$¨Q£„åË—ËÄréÒ%8::â“O>••ŒŒŒ„êêj…e‚qãÆqu5ÝVäáÇ000@EE 99...°°°€±±1V®\‰–^Þvüøq˜››ÃÀÀÈÎΖ)ÿꫯPPP€­[·ÊmûÌ™3prrBÿþýÑ»wo|üñÇÚv_Z‹YÑ}é*(9$„Nªºº®ÍŸÉÏ/ÃŽ¿ÃÓók¼ùæ^äç—cýz?\¾¼ Ÿî ;»ž»XugQ[[‹[·n!%%»víÂ7ß|ƒ[·n!##§OŸÆöíÛQTT„€€DFF¢¾¾ƒªª*Lž<<ÀÖ­[qóæMaÁ‚X¶l 77XµjÊË˱|ùr=z‰D&±XŒ´´4ÔÔÔ ''YYY¸|ù26mÚ¤° \]]áííÍÕÕthÒ]»v­ÌOii)¤R)ÊÊÊ4 ûøø`ÆŒ(**Â7Š={öÈÔU]]àà`,\¸………xÿý÷-sŒ¶mÛ†/¿ü™™™-^û+V`õêÕ(,,Äõë×±wï^$''·é¾(ŠYÑ}éR!„NçÔ©›ÌËk³RÇJ$RváB*{÷ÝýÌÚúcæä´‚-Yr„ýùgî Ž’øùù1???¥OKKcXzz:cŒ±ââb€>}š;†Ï糋/²êêj¦§§Ç~ýõWÆcï¼ó›7ocŒ±û÷ï3MMMÂ=zĤR)«©©aŒ1¶eË&‰dÚ=z4[²d ËÉÉaXII ‹gXaa!w\HH6l˜Â2eØÛÛ³¡C‡²àà`™Ÿ‚‚î‚­[Ïqÿ ‰Åœ>}ùùeÈÏ/ÇŽ¿ÃÃc-¿Cfæc¬[ç‡k׾į”vScÆŒ@ ÀâÅ‹1kÖ,.y¹zõ*¦L™‚ââb˜ššÂÛÛ›[füøñHJJâĤ¤$$$$´X¿T*ÅîÝ»÷îÝÉ'àååÕjYbb":ÄÕÓt[Y&L@II BCCÁCVV¼½½qøða™ã|}}q÷î]DDD€1†ØØØf ðÓ>øàXYY!**ŠÛ—™™ CCCôïßpìØ1¤§§·øð˳Ƭè¾t%”BˆŠUVÖâÿøááW •ÊþG¥¦¦†·ßÞ7·Õؽ;¾¾CðÇŸá×_?ÆìÙ4|ÜÍ©««cæÌ™¸{÷.æÍ›ÇíŸ4ittt`nnwww`ݺuÐÖÖ†§§'V®\ 8::" nnn-Ö/ qöìYØØØ`È!ðððÀ¢E‹Z-‹ŽŽÆW_}ÅÕÓt[Y¶¶¶Ø·oæÏŸ888`РAX¼x±ÌqÆ úuëKKK¼õÖ[VxÝöìÙ#Óèëë '''X[[ÃÖÖáááx÷Ýw±dÉäçç·KÌŠîKW¢ÆÚš2Bi7OüÒÒòQ_ßrƒžž66lðÇäÉ®ô:»NÆßßþÂÚØ¾};"###³Ÿ1†ÔÔTÔÔÔ`ðàÁÍÖì+))AAA1wî\ˆD"lܸ‘+¿xñ"&OžŒÒÒRdgg£W¯^044lµìE¨¬¬DJJ D"¬¬¬äWXXˆ¼¼<8;;7›/¨¬ŒŒ ÀÀÀðèÑ#˜››·yxy1·v_Z†ÀÀÀ6÷h¶£pšsH!*’‘QÿÈÏ/‡X,èéÉ“jèèð)1ìaJKK‘’’‚mÛ¶aóæÍÍÊÕÔÔàää$÷󆆆J'tÖÖÖÏTÖ^„B¡ÜÞͧ™ššÂÔôù–cêÛ·¯Ì¶……Å3Õ#/æÖîKW@ÃÊ„¢ÉÉ™˜4iË߉¡Dá±êêêØ·¯ù%H>"› IDAT÷–••… àÃ?„¯¯ïsÕåàà€>}úÈìÓÕÕ…»»{‹Ç+*#Ý +BH;sæ6Þ}w?¤R‰D¹Éêjjj¸xqúö5iý`ÒnªªêŸ_†‚‚'OýYŽ‚‚†Ÿää›pu-|¡Ãʤg¡aeBH·RPP ê:½°°dlØp¶ÅO44Ô¸ ôŒI!‘0î8ÆLÀçŸ?_iPRR‰‚‚'(((ç’½§ÿ,,|‚¼¼2TVÖrŸQWWƒ‰I/˜šêÁÜ\"‘> jA],¤»¡äÒnîÞ½«ê:-ÆÂÃÿÄéÓ £Ãƒ–::<…š þ.4ü…|,, šÍûô÷ìèS$ä…£äÒ®œ[\l·§“JÆŒ uuåŸ\Œ…³s¿=ëêÄ()©ä’»†Ÿ2”–VË$ýU"ó`–:\ÒgccŒaÃl¹íÆSS½6ÝBº;J !¤tDò‘ž^ˆï¾;ùóÇÂÞ¾ó'”55õ\¢WVVÍý½iXXøDf^K‹‘Hffz‰ôáêj ‘HÛnøSúú:*<;Bº.J !¤‹KNÎÄöí¿ãÌ™Û`ŒÁ×w°J“ÃÆ¡Ý§‡r›&~yy¥(/¯‘ùœ¾¾ŽL^¿~"™m}}XYB(ÔRÑ™µ,''aaaªƒtòÞfÓ‘(9$„.ˆ1†˜˜üç?¿áòå‡àó5Àƒºº ž¼6åÍç{zûÑ£RÔ×ÿoiMM åíêëk£wo}XYBC£k®®–˜˜ˆÀÀ@U‡AH»¡äBº©”á÷ßïbãÆS¸sç—P5&d<ž: Ê•®¯¶VŒÒÒæóùšnUÈ,»ÓÒЮv³ù|ffzm~CDWBKØîˆ’CBH—tèÐ!hiiaúô骥CTUÕá矱cG ʸ%oZZ'1?¿\f>_ÓDïéù}OdÖSkÚÕ×׆H¤wwÛfóù,,  «+è°s'„t,J !ÒÀ±}ûv¼úê«-–ÇÇÇC(ª,9l-¾öRRR…ÿû¿_ñý÷ÿEee-÷`†¼Å³Åb)¾Œ={þËíãó5`b¢ }ëƒ[s={pë‚ÇëšC»„öCÉ!!D¥¤R) ‰dö£®®®ÙñUUUÐÑiÿ§PKKK¡§§ÇõÈ=ߣG`eeÕj|Œ1deeÁÌÌ ÚÚÚÍÚ¨©ixC h½×-3ó1~üñbcOB,–(½Ð²TÊ éáûïßü{™]Z‘Ò&ô+"!DeÖ¬Y[[[ôïß–––ˆ 2ùùù˜:u*öïß8~ü8ÌÍÍa``dggsõ„„„`ܸq-nO˜0}ôW&‘H`mmˆˆ@rr2\\\`aaccc¬\¹’fŠŠ‚©©) kkklÞ¼Yn|¿üò z÷îáÇÃÀÀ .„D"Á£G ðã?ÂÒÒ±±±­^—º:1bcÿDyyttø` ÐÐPWúêê:ŒÓNNæ”BÚŒ’CBˆJŸß,¾Ã‡£wïÞðññXXX 88ÇŽãŽY¿~=¼¼¼”RnÊÆÆþþî ÄÕ«_ü,cÆŒ—aee !YÔÔl˜)TSS/óN`Bi šsHQ 8p[¶lÁÒ¥K1pà@¬Y³Ó¦Mkvì¹sç0räH™}ÇWª===L›6 ððð@dd$NŸ> HOOGEE $óddd`À€2ûå=ü’‘‘Ñ,ž¾}ûâèÑ£ÜvÓ6ž‡1llŒàÈË+äáÒ¥t\¸ŠÌÌÇ(((‡­­i»µIé9¨ç¢¹¹¹5j._¾Œüü|bþüù¨®®nv¬®®.RRRdö]»vMé¶æÌ™ƒÈÈHœ9s"‘Æ ˜™™ÁÈÈYYYÈÎÎFvv6®^½Š;wÂÄÄiii2õìØ±999Íê711ÁŸþ)³ïúõëèÓ§Ò1>‘HÓ§¿Œo¾ñGBÂç¸qc ÌÌô:¤mBH÷CÉ!!D%®^½Š)S¦ ¸¸¦¦¦ðööææŸÏGyyÃbξ¾¾¸{÷."""ÀCll,’““¹cqèÐ!¹ÛãLJT*ŲeË0wî\nÿ„ PRR‚ÐÐPîIcooo>|S§NEJJ Ž?8vì6oÞÌ=Uýt|“'OÆ­[·¸yÅÅÅøå—_¸!鎦¡¡Žº:±JÚ&„tŒBÚÉùóçY~~¾RÇŠÅb6räH¦©©ÉÜÜܘ½½=ûþûï¹òE‹1mmmvðàAÆcëׯgêêêÌÜÜœÙÙÙ±Y³f±%K–0Æ[±b0`÷Ù¦ÛŒ1¶dɦ¡¡Ársseö‡††2¡PȬ­­ŸÏgsçÎeµµµŒ1ƶmÛÆø|>ëÝ»7srrbQQQrã a<ÙÛÛ3===öÞ{ï±úúz–““ð’’e/#G™ëùäI ûã4¶sg {÷ÝÙK/}ÉÌÍÿÅââîµ¹=BaŒ…©1¦ìêY„¢Xll,œaff¦ÔñŒ1¤¦¦¢¦¦ƒnöšµÒÒRôêÕ <^ÃôèÂÂBäååÁÙÙ-?©û,*++‘’’‘HÔl=Ãêêjäçç£oß¾Í>×4¾ÒÒRÜ¿vvv066~^Ϻ:1nßþ 7ndáÆl$%eâáÃB0ÆÀçk@"a\ïë¥K+ammôÜ1BzœpJ !í¦­É!‘O,–âС“¨®ÖFzz)®\ÉÀýûy‹¥Ü6b±¤ÅÏòxêxø0Déu !ä)áô´2!„t2õõlÚô+víú/ê뛿&O^RØÈÌLCBÈ3£äB:>_Ë—O†““.\(ÄÑ£7 ®ÔÕ)N  ‘ð66Ɖô¡®®Öú‡!äo4¬Li74¬Ü¾¯§X¬‰;Ïã§Ÿ.`‹›÷&6âó5 «+@qq%€†·­X[qk#öécü÷ßM`cc Í:BHAÃÊ„ÒÙYX`íÚixÿý±øî»Ø¿“DyÃËjøàƒq˜9s823#3ó1²²þLK+@LL ²³‹!•6ô èëë´86üÝÊʆ§ é(9$„.ÂÒÒk×NÃüùcñí·çpøp"ÔÔÔe’D±X cèëëÀÕU®®ÖÍꩯ—àÑ£R.ilL ãâîáÀTT4¼zÏ×€……A³¤ÑÆÆvvfèÕK«ÃÎÒq(9$„.ÆÊÊ!!xÿýW±yó?ž Ouu0ôé£x>_ƒKöFn^^VVÕ¬×13³!yT¶×ÑÚÚˆæ:ÒEÑœCBH»¡9‡ ÿYmºnc[){=ÓÒ r'OÞø{íÈõÐÕoøÏL^¯cVÖcdes‰3õ:ÒiQrHi?ª¡Sù÷¿cpàÀ% ï;–J¥hüWCC¦¦½`ii€>} aiiss=XXèÃÒÒ&&½ ®®}}}hiu^6E½Žiiù¨ªªÐð„µ¹¹~‹½Žööf »Çõ ¤“¢äB^¤•+áÇã¸yz-ÑÐP‡††:êë%\ÏÚüùc±jÕÔŽ ³S ^GB:J !äEbŒaùò<˜ 0A|Ÿ¯Ë—W¡wo½]ס¨×ñþý|TW·ÞëèàЛÖu$¤u”BÈ‹Æ矆ãàÁD´öO.§7߉¯¾šÖAÑuíÑëØ§Ñs=D†À@ÕÍ÷$]›ŸŸÂÃÃU@‹`BÈ‹§¦¦† ü!39rR©ü7œ¨©|ðZF×=(Z×±¶VŒ¼¼æ½Žqq÷ðÃÊõ:::ö†¶¶r½ŽGŽi×s#Ýß¿ÿýoU‡ ƒ’CBéjjjظÑÕÕuˆŽ¾‰¤y‚ÈãiÀÉÉ¢Å2òì´´xϼ®cfæcî¸ÖztÄi‘n¤“ôr(9$„¢¡¡Žÿüg$)NºÙ, dŒ¡°°žž_cúô—ñÑGãaggª¢h{E½ŽååÕ-&Ž¿ürýU‚úú†·Óèê  §§uuz’št}”BHÒÐPÇöí³ñöÛ?àüù?!7$ˆ|¾fÍòÄêÕS•ŒíÛÇ+¯¬Ç¸qÎX´h† é£âÈ{&==m d…Aƒ¬š•‰ÅRüõW —4ž={IIµ*ˆ’öEoT'„Æçk`ïÞÿ‡Ñ£ûÇÓ0|ôÑkàó5àïïŽóç—áÇßBaáx{ÿS§nC|ü}GNžÆã©ÿ=Tݳg{ÀLJxÒ=PrH!*Àçkà‡Þˆv€Y³FÀÜÜ€+WWWÃë¯Ä©S‹õ´´x؉©S·áܹ;­>õL!ÏŠ†• !DE´´xøé§wðÖ[?àƒÆÉ=nØ0;„…ý—/§cÇŽÌ»˜ã½÷Æbúô—¡¡A¿ç“¶+++Ã_|õë×C[[û…µ³víZ5Ûokk‹Y³faíÚµøæ›o¾ ¨µX:---dff"33³Å:x<6mÚôì'҃п(„¢B¾ ++ÃV6̼sç>³³>þø0ÆAxønî"!ʪ¨¨À·ß~‹ÚÚ;Orÿþý¸té*++e~ª««Q[[‹«W¯*\ÞI™Xãã㑘˜©T ‰D‰D‚ØØX„‡‡sÛ‰äEœ^·D=‡„¢bm]xÙÙÙ۶͌οcñâÃØ´éW¼óÎÌží€ÿ‚"%/ŠX,F}}=×+V[[ ±X ¡P¨tR©‰DÍÊc(//‡¾¾~«õÔÕÕ¡¦¦zzÍßУ¨L‘   ,\¸°Å²¸¸¸fûJKK¡§§uuÅ}XUUUÐÑÑá¶/^Ìý}Ñ¢E¸víþóŸÿ´)VEç(/.E×¾+¢žCBé¢ú÷aÛ¶Y¸xñ3L˜à‚uëNbذ5ؼùW”—ר:<ÒŠ@  $$æææ066ƧŸ~ŠÏ>û †††Ð××ÇG}ð÷÷Ç;ï¼Ã}V,ÃÜÜG¬Y³¶¶¶èß¿?,--Ï{âÄ ˜ššB$aÔ¨Q ÂòåËeb¹téñÉ'ŸÀÊÊ FFF BuuµÂ2 Á¸qÿ›Ñt[‘‡ÂÀÀ€ääd¸¸¸ÀÂÂÆÆÆX¹re‹ók?sssÀÃÃÙÙÙJµ'ï:nذAá9*ŠKѵïª(9$„.ÎÚÚ_}5 ŸaÆ 7|÷Ýyxx¬Å¦M¿¢¨¨BÕájkkqëÖ-¤¤¤`×®]øæ›opëÖ-dddàôéÓØ¾};ŠŠŠ€ÈÈHÔ××bbbPUU…É“'ãÁƒغu+nÞ¼‰¢¢",X°Ë–-äææ"00«V­Byy9–/_Ž£G6b‹ÅHKKCMM rrr••…Ë—/cÓ¦M ËÀÕÕÞÞÞ\]M·àìÙ³X»v­ÌOii)¤R)ÊÊÊ4 ûøø`ÆŒ(**Â7Š={öÈÔU]]àà`,\¸………xÿý÷­Ôõ–w‡.÷Å¥èÚwe”BH7Ñ»·>¾øb*._^…yóFaÿþx¸»¯ÆÒ¥axð @Õá9V¯^ øúúþùÏÂÌÌ ¯¿þ:ø|>îÝ»___ˆÅbÄÄÄ"""0cÆ 0ÆPYY‰={ö ¨¨K—.åŽ;|ø0 °`Áðù|Lž<rcùòË/¡©© üóŸÿÄÉ“'[-óòò’Îmº yyy¸{÷®ÌOc‚Öèøñ㨫«Ã¢E‹Àƒ±±1‚ƒƒ)s\LL ðé§ŸB__sæÌ«««R×ZÞuÔÔÔ”{ŽŠâRtí»2J !¤›12â“O&"9ùKlÜ€K—Ò1fÌ~‡sçî¨:<ÒDã<5¯á1GGG®LMM ‰~~~ˆˆˆ€X,ƱcÇ0{öl€ƒƒ8€°°0XZZÂÕÕ§NdddÀÓÓS¦=;;»ãÐ×ׇ‰‰ ·meeÅ=e¬¨LsæÌÁÏ?ÿ,ócj*ûöŸôôtTTT`РAprr‚““~úé§fsrÏ;‡‘#GÊì>|¸Rq(ºŽòÎQQ\Š®}WFÉ!!„tSšš<™µàÍ7÷ÂËk3=á܉(zèâéùv³gÏFTT~ûí7hkkcìØ±†ŽG…Ë—/#??˜?>ª««allŒ‚Ù^cyK½,sœ¯¯/îÞ½‹ˆˆ0ÆËŸ2ä]Gyç¨(.E×¾+£äBzWWklÛ6 qq+ðúëñ»ûj¬\y ¹¹¥ª( ®®Ž™3gâîÝ»˜7o·Ò¤IÐÑѹ¹9ÜÝÝ€uëÖA[[žžžX¹r%<<<àè舀€¸¹¹µX¿P(ÄÙ³gaccƒ!C†ÀÃË-jµ,::_}õWOÓmeÙÚÚbß¾}˜?>lllààà€Aƒ5›¿8lØ0¬[·°´´Ä[o½…àà`¥Û‘w壢¸]û®LÑ;˜!¤Ç*/¯AXØeì܃Ç+0uêKøç?_ƒ““¹ªCërÂÂÂøB_m¸}ûvDFF6{è1†ÔÔTÔÔÔ`ðàÁÍæé•””   ŽŽŽ˜;w.D"6nÜÈ•_¼x“'OFii)²³³Ñ«W/¶Zö"TVV"%%"‘VVVr+,,D^^œ¡¡¡Ñ¦6š^GeÎQ^\­]{eøûûÂÃÃÛüÙ œÁ&„LOO€·ß~o¾9QQÉØ¹3¯½¶îî¶øðÃq?Þù™þ³#í«´´)))ضm6oÞܬ\MM NNNr?ohh¨tBgmmýLeíE(ÊíÝ|š©©i³‡ZZÓÚu䟣¼¸Z»ö] +BŸ¯wÄÄ,Å‘#ïÃÀ@o¾¹&4<¼R_O¯S¥¬¬,,X°~ø!·äͳrpp@Ÿ>}döéêêÂÝݽÅã•u5ò®cw:Çö@ÃÊ„BZtãF6¾ûî'¢×÷‘ž„’CB!äiýU‚³gïàÌ™ÛHHHc #FØÃËËãÇ„±ªC$äE¢äB‘§ªª/ÞGtôuœ={ååÕ°±1ÆèÑý0zt?¼öÚ…Zª“öDÉ!!„¢ ‰DŠ;wþ¹swpîÜ]ܺ•--ÜÝmñÊ+ý0a‚ ½ï™t”B!ÏâÑ£Rœ?Ÿ‚˜˜ÄÅÝCEE-ììLñÚkðÚk0b„=¾ªÃ$¤­(9$„BžWK½Šjpv¶ÄèÑýðÊ+ýàááO]Õ¡ÒJ !„ö–—W†ÿþ7qq÷w……O`h(ĨQŽÜ|Ez°…tR”BéÙrrrðǼ°úcÈÍ­Fjj)îÝ+Ã娫“ÂÄD€~ýô1i’5tuiø™´kkkxxxùäXYYÁÈÈAAA¨®®VX!!!7nW×ÓÛŒ1ÔÔÔàþýû2í-X°ûöí$%%!116l';K- Ø»w¯Âk©l)))2½¥>>>ضm 99...°°°€±±1V®\ Æ=z@€ü–––055Ux?Zâé鉪ª*äææΜ9'''ôïß½{÷ÆÇ ÍÚÚ·oŸÒß@ñw¡£QrH!„´Qmm-nݺ…””ìÚµ ß|ó nݺ…ŒŒ œ>}Û·oGQQ‰úú†7 ÄÄÄ ªª “'Oƃ°uëVܼyEEEX°`–-[ÈÍÍE`` V­Z…òòr,_¾G…D"‘‰C,#-- 555ÈÉÉAVV._¾ŒM›6),WWWx{{su=½­¦¦†?þ6lÀСC±téRœ8qZZZ9r$àöíÛprrjñ¹»»7K.›R¶ÆX³aôºº:H$TTTÀÇÇ3fÌ@QQnܸÐÐPìÙ³‡ûܾ}ûðóÏ?cçÎrïG£¢¢"¤§§#==¿ÿþ;–.]Š—^z ýû÷¬X±«W¯Faa!®_¿Ž½{÷"99¹Y[cÇŽUú{¢è» ÏÛ÷H!„temVNKKcXzz:cŒ±ââb€>}š;†Ï糋/²êêj¦§§Ç~ýõWÆcï¼ó›7ocŒ±û÷ï3MMMÂ=zĤR)«©©aŒ1¶eË&‰dÚ=z4[²d‰Ì°r||<À ¹ãBBBذaÖ)+55•­^½š;–ijj2CCCöÝwß1ÆÛºu+377—ûÙ%K–pmÉVV¶Ž;wî0ÜõaŒ±×_mÙ²…øàäææÂÎÎùùù¨©©i±ŽÔÔTØÛÛ+lçyêhìýKOOGEE '''899á§Ÿ~‚ššwì Aƒ@áýh´qãFTTT ¢¢ÅÅŸpᆠPWWÇñãÇÑ·o_ >[·n…†††ÌçÛj¤Ì÷DÑwA(9$„BžººüÿBÙSïiž={6¢¢¢ðÛo¿A[[cÇŽÐ0tàŽ)((À矎;wîàÔ©Sxï½÷¶£l‰ÞÓÃêO?›™™ÁÈÈYYYÈÎÎFvv6®^½*óTõÓäÝe$''cåÊ•ˆŽŽÆÃ‡¡P¨ð3Ê|O}T’CB!ä3f /^ŒY³fqÉÂÕ«W1eÊÃÔÔÞÞÞJ¥€ñãÇ#)) ÉÉÉÜHHHh±~©TŠÝ»wîÝ»‡'NÀË˫ղÄÄD:tˆ«çém777˜˜˜`Ù²e\D"ÁŽ; «« ˜™™á_ÿú–.]Šƒ¢¶¶<çÏŸ‡»»;&Nœˆ1cÆpõçææâÁƒ2?†††JÕakk ‡°°0@xx8²³³&L@II BCCÁCVV¼½½qøðá6ÝedffÂÐЛxìØ1¤§§Ëü2ð,}Tây¦ !„®ìYç6Î +//gXZZw ŸÏçæž1ÆØÒ¥K–ššÊí‹ÅläÈ‘LSS“¹¹¹1{{{öý÷ßså_ý5ÓÔÔdÌÖÖ–9²Å9‡B¡Mš4‰õéÓ‡ikk³™3g2±X¬°Œ1ÆV¬XÁ Àµ×t;!!9991---æèèÈ Ù˜1cd––‘J¥lÓ¦ML[[›ihh0‘HÄø|>9r$‰D,66–1Ö0ç@³ŸÆù{ÊÔ±lÙ2¦¦¦ÆLLLØÄ‰™——Û²e cŒ±ÐÐP& ™µµ5ãóùlîܹ¬¶¶Vî²?-ÝÆZ^Êæiõõõl̘1ÌÔÔ”õíÛ—³wß}—™››³K—.É´Õ–ïIkßeµ×œC5Æž3Ý%„Bº°°°0>wï"Û·oGdd$bbbdö3ÆššŠšš  MySQL++ Reference Manual MySQL++: Class Members - Enumerator
    MySQL++  3.3.0
     
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1InteractiveOption-members.html000644 000765 000024 00000015344 14042362133 027701 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
    MySQL++  3.3.0
    mysqlpp::InteractiveOption Member List

    This is the complete list of members for mysqlpp::InteractiveOption, including all inherited members.

    arg_mysqlpp::DataOption< T >protected
    ArgType typedefmysqlpp::DataOption< T >
    DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
    err_api_limit enum valuemysqlpp::Option
    err_api_reject enum valuemysqlpp::Option
    err_connected enum valuemysqlpp::Option
    err_disconnected enum valuemysqlpp::Option
    err_NONE enum valuemysqlpp::Option
    Error enum namemysqlpp::Option
    set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
    ~Option()mysqlpp::Optioninlinevirtual
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1UseEmbeddedConnectionOption-members.html000644 000765 000024 00000013530 14042362133 031605 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
    MySQL++  3.3.0
    mysqlpp::UseEmbeddedConnectionOption Member List

    This is the complete list of members for mysqlpp::UseEmbeddedConnectionOption, including all inherited members.

    err_api_limit enum valuemysqlpp::Option
    err_api_reject enum valuemysqlpp::Option
    err_connected enum valuemysqlpp::Option
    err_disconnected enum valuemysqlpp::Option
    err_NONE enum valuemysqlpp::Option
    Error enum namemysqlpp::Option
    set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
    ~Option()mysqlpp::Optioninlinevirtual
    mysql++-3.3.0/doc/html/refman/_header.html000644 000765 000024 00000004365 14042362133 021057 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual $projectname: $title $title $treeview $search $mathjax $extrastylesheet
    $projectname  $projectnumber
    $projectbrief
    $projectbrief
    $searchbox
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadInsertPolicy-members.html000644 000765 000024 00000014103 14042362133 027256 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
    MySQL++  3.3.0
    mysqlpp::BadInsertPolicy Member List

    This is the complete list of members for mysqlpp::BadInsertPolicy, including all inherited members.

    BadInsertPolicy(const std::string &w)mysqlpp::BadInsertPolicyinlineexplicit
    Exception(const Exception &e) MAY_THROW()mysqlpp::Exceptioninline
    Exception(const char *w="")mysqlpp::Exceptioninlineprotected
    Exception(const std::string &w)mysqlpp::Exceptioninlineprotected
    operator=(const Exception &rhs)mysqlpp::Exceptioninline
    what() constmysqlpp::Exceptioninlinevirtual
    what_mysqlpp::Exceptionprotected
    ~Exception()mysqlpp::Exceptioninline
    mysql++-3.3.0/doc/html/refman/folderclosed.png000644 000765 000024 00000001150 14042362133 021742 0ustar00tangentstaff000000 000000 ‰PNG  IHDRÚ}\ˆ/IDATxí]MOÔ@~ÚúuØlp]ö¿#›Å]PYECˆ\9ù¼yÑß`ÖÄÿàÿÀÉxóâ¢C &=qÐÄ£—vZçv¶3m؃‡vžLûNç}Þ÷}Þ½ZA@n° OäNp ’xóþK°ññ€xÜj”°8sÑ€“ “€œ_¼[Âíæ§ïD'‚•yye+ø¼û 7#rNŸlïük* ¾0Ь_d«_(àñÖ±àôz=ñxõv§÷h©‰z¹€šØP-äóä’̪uý¼$»\DãJc—B4¯ãÝÖ.:£Ï-ÑÏß}µŠLEíºþ #—ûáºÀÏgN;BŠ€6ïýñ䬜…ö@’Ðåñp&™h>p9¤™EEά¨ÎÊ‘" u¥n€$R"?{¹<˜…ë…%PNtâ$‰ß¶±úá+^<é"§2 ªDq”q´\¬«Ò™a–Œ‘©Aÿ€"Ôµ ™êŸèP£}#Eàz{û.8i îp³ê(ADwD¦E<ê¬cE¦$ HdÊÄ ”.:Ù GŽ-`ŒL‚ý¾'¢‰Ä<¤CIª½;ÙÇTZd±i};>èôß‚z×;K×§8t ¤Ž q”:uvÿv•Ý›¬²ÙvEân{„M·FXg¼ÌfZÖ¨°¹‰*›ßÌß©±ù©:›j–YqèÜë#3çÏSøWøÿÿÑr'ø Ôùù‚ ©¡IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SQLTypeAdapter.html000644 000765 000024 00000167631 14042362133 025414 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::SQLTypeAdapter Class Reference
    MySQL++  3.3.0
    mysqlpp::SQLTypeAdapter Class Reference

    Converts many different data types to strings suitable for use in SQL queries. More...

    #include <stadapter.h>

    Public Types

    typedef size_t size_type
     size of length values
     

    Public Member Functions

     SQLTypeAdapter ()
     Default constructor; empty string.
     
     SQLTypeAdapter (const SQLTypeAdapter &other)
     Copy ctor. More...
     
     SQLTypeAdapter (const String &str, bool processed=false)
     Create a copy of a MySQL++ string. More...
     
     SQLTypeAdapter (const std::string &str, bool processed=false)
     Create a copy of a C++ string.
     
     SQLTypeAdapter (const char *str, bool processed=false)
     Create a copy of a null-terminated C string.
     
     SQLTypeAdapter (const char *str, int len, bool processed=false)
     Create a copy of an arbitrary block of data.
     
     SQLTypeAdapter (char c)
     Create a single-character string. More...
     
     SQLTypeAdapter (tiny_int< signed char > i)
     Create a string representation of SQL TINYINT.
     
     SQLTypeAdapter (tiny_int< unsigned char > i)
     Create a string representation of SQL TINYINT UNSIGNED.
     
     SQLTypeAdapter (short i)
     Create a string representation of a short int value.
     
     SQLTypeAdapter (unsigned short i)
     Create a string representation of an unsigned short int value.
     
     SQLTypeAdapter (int i)
     Create a string representation of an int value.
     
     SQLTypeAdapter (unsigned i)
     Create a string representation of an unsigned int value.
     
     SQLTypeAdapter (long i)
     Create a string representation of a long int value.
     
     SQLTypeAdapter (unsigned long i)
     Create a string representation of an unsigned long int value.
     
     SQLTypeAdapter (longlong i)
     Create a string representation of a longlong value.
     
     SQLTypeAdapter (ulonglong i)
     Create a string representation of an unsigned longlong value.
     
     SQLTypeAdapter (float i)
     Create a string representation of a float value.
     
     SQLTypeAdapter (double i)
     Create a string representation of a double value.
     
     SQLTypeAdapter (const Date &d)
     Create a SQL string representation of a date.
     
     SQLTypeAdapter (const DateTime &dt)
     Create a SQL string representation of a date and time.
     
     SQLTypeAdapter (const Time &t)
     Create a SQL string representation of a time.
     
     SQLTypeAdapter (const null_type &i)
     Create object representing SQL NULL.
     
    SQLTypeAdapteroperator= (const SQLTypeAdapter &rhs)
     Standard assignment operator. More...
     
    SQLTypeAdapteroperator= (const null_type &n)
     Replace contents of object with a SQL null. More...
     
     operator const char * () const
     Returns a const char pointer to the object's raw data.
     
    SQLTypeAdapterassign (const SQLTypeAdapter &sta)
     Copies another SQLTypeAdapter's data buffer into this object. More...
     
    SQLTypeAdapterassign (const char *pc, int len=-1)
     Copies a C string or a raw buffer into this object. More...
     
    SQLTypeAdapterassign (const null_type &n)
     Replaces contents of object with a SQL null. More...
     
    char at (size_type i) const throw (std::out_of_range)
     Returns the character at a given position within the string buffer. More...
     
    int compare (const SQLTypeAdapter &other) const
     Compare the internal buffer to the given string. More...
     
    int compare (const std::string &other) const
     Compare the internal buffer to the given string. More...
     
    int compare (size_type pos, size_type num, std::string &other) const
     Compare the internal buffer to the given string. More...
     
    int compare (const char *other) const
     Compare the internal buffer to the given string. More...
     
    int compare (size_type pos, size_type num, const char *other) const
     Compare the internal buffer to the given string. More...
     
    const char * data () const
     Return pointer to raw data buffer.
     
    bool escape_q () const
     Returns true if we were initialized with a data type that must be escaped when used in a SQL query.
     
    bool is_null () const
     Return true if buffer's contents represent a SQL null. More...
     
    bool is_processed () const
     Returns true if the internal 'processed' flag is set. More...
     
    size_type length () const
     Return number of bytes in data buffer.
     
    size_type size () const
     alias for length()
     
    bool quote_q () const
     Returns true if we were initialized with a data type that must be quoted when used in a SQL query.
     
    int type_id () const
     Returns the type ID of the buffer's data. More...
     
    void set_processed ()
     Turns on the internal 'is_processed_' flag. More...
     

    Detailed Description

    Converts many different data types to strings suitable for use in SQL queries.

    This class provides implicit conversion between many C++ types and SQL-formatted string representations of that data without losing important type information. This class is not for direct use outside MySQL++ itself. It exists for those interfaces in MySQL++ that need to accept a value of any reasonable data type which it will use in building a query string.

    One major use for this is in the Query class interfaces for building template queries: they have to be generic with respect to argument type, but because we know we want the data in some kind of string form eventually, we don't need to templatize it. The interface can just use SQLTypeAdapter, which lets callers pass any reasonable data type. The adapter converts the passed value implicitly.

    The other major use for this type is the quoting and escaping logic in Query's stream interface: rather than overload the << operators and the manipulators for every single type we know the rules for a priori, we just specialize the manipulators for SQLTypeAdapter. The conversion to SQLTypeAdapter stringizes the data, which we needed anyway for stream insertion, and holds enough type information so that the manipulator can decide whether to do automatic quoting and/or escaping.

    Constructor & Destructor Documentation

    ◆ SQLTypeAdapter() [1/3]

    mysqlpp::SQLTypeAdapter::SQLTypeAdapter ( const SQLTypeAdapter other)

    Copy ctor.

    Parameters
    otherthe other SQLTypeAdapter object

    This ctor only copies the pointer to the other SQLTypeAdapter's data buffer and increments its reference counter. If you need a deep copy, use one of the ctors that takes a string.

    ◆ SQLTypeAdapter() [2/3]

    mysqlpp::SQLTypeAdapter::SQLTypeAdapter ( const String str,
    bool  processed = false 
    )

    Create a copy of a MySQL++ string.

    This does reference-counted buffer sharing with the other object. If you need a deep copy, pass the result of either String::c_str() or String::conv() instead, which will call one of the other string ctors.

    ◆ SQLTypeAdapter() [3/3]

    mysqlpp::SQLTypeAdapter::SQLTypeAdapter ( char  c)

    Create a single-character string.

    If you mean for c to be treated as a small integer, you should be using mysqlpp::tiny_int instead. It avoids the confusion in C++ between integer and character. See the documentation for tiny_int.h for details.

    References mysqlpp::stream2string().

    Member Function Documentation

    ◆ assign() [1/3]

    SQLTypeAdapter & mysqlpp::SQLTypeAdapter::assign ( const char *  pc,
    int  len = -1 
    )

    Copies a C string or a raw buffer into this object.

    Parameters
    pcPointer to char buffer to copy
    lenNumber of characters to copy; default tells function to use the return value of strlen() instead.
    Return values
    *thisIf you give the len parameter, this function will treat pc as a pointer to an array of char, not as a C string. It only treats null characters as special when you leave len at its default.

    References mysqlpp::mysql_type_info::string_type.

    ◆ assign() [2/3]

    SQLTypeAdapter & mysqlpp::SQLTypeAdapter::assign ( const null_type n)

    Replaces contents of object with a SQL null.

    Parameters
    ntypically, the MySQL++ global object mysqlpp::null
    Return values
    *this

    References mysqlpp::null_str.

    ◆ assign() [3/3]

    SQLTypeAdapter & mysqlpp::SQLTypeAdapter::assign ( const SQLTypeAdapter sta)

    Copies another SQLTypeAdapter's data buffer into this object.

    Parameters
    staOther object to copy
    Return values
    *thisDetaches this object from its internal buffer and attaches itself to the other object's buffer, with reference counting on each side. If you need a deep copy, call one of the assign() overloads taking a C or C++ string instead.

    Referenced by operator=().

    ◆ at()

    char mysqlpp::SQLTypeAdapter::at ( size_type  i) const
    throw (std::out_of_range
    )

    Returns the character at a given position within the string buffer.

    Exceptions
    mysqlpp::BadIndexif the internal buffer is not initialized (default ctor called, and no subsequent assignment) or if there are not at least i + 1 characters in the buffer.

    WARNING: The throw-spec is incorrect, but it's irrelevant since they're obsolete in modern C++ now anyway, since they were always unreliable. If we ever get to MySQL++ 4 and can break the ABI, this throw-spec will just go away.

    ◆ compare() [1/5]

    int mysqlpp::SQLTypeAdapter::compare ( const char *  other) const

    Compare the internal buffer to the given string.

    Works just like string::compare(const char*).

    References compare(), and length().

    ◆ compare() [2/5]

    int mysqlpp::SQLTypeAdapter::compare ( const SQLTypeAdapter other) const

    Compare the internal buffer to the given string.

    Works just like string::compare(const std::string&).

    References mysqlpp::SQLBuffer::data(), and length().

    Referenced by compare().

    ◆ compare() [3/5]

    int mysqlpp::SQLTypeAdapter::compare ( const std::string &  other) const

    Compare the internal buffer to the given string.

    Works just like string::compare(const std::string&).

    References compare(), and length().

    ◆ compare() [4/5]

    int mysqlpp::SQLTypeAdapter::compare ( size_type  pos,
    size_type  num,
    const char *  other 
    ) const

    Compare the internal buffer to the given string.

    Works just like string::compare(size_type, size_type, const char*).

    References data().

    ◆ compare() [5/5]

    int mysqlpp::SQLTypeAdapter::compare ( size_type  pos,
    size_type  num,
    std::string &  other 
    ) const

    Compare the internal buffer to the given string.

    Works just like string::compare(size_type, size_type, std::string&).

    References compare().

    ◆ is_null()

    bool mysqlpp::SQLTypeAdapter::is_null ( ) const
    inline

    Return true if buffer's contents represent a SQL null.

    The buffer's actual content will probably be "NULL" or something like it, but in the SQL data type system, a SQL null is distinct from a plain string with value "NULL".

    ◆ is_processed()

    bool mysqlpp::SQLTypeAdapter::is_processed ( ) const
    inline

    Returns true if the internal 'processed' flag is set.

    This is an implementation detail of template queries, used to prevent repeated processing of values.

    ◆ operator=() [1/2]

    SQLTypeAdapter & mysqlpp::SQLTypeAdapter::operator= ( const null_type n)

    Replace contents of object with a SQL null.

    See also
    assign(const null_type&) for details

    References assign().

    ◆ operator=() [2/2]

    SQLTypeAdapter & mysqlpp::SQLTypeAdapter::operator= ( const SQLTypeAdapter rhs)

    Standard assignment operator.

    See also
    assign(const SQLTypeAdapter&) for details

    References assign().

    ◆ set_processed()

    void mysqlpp::SQLTypeAdapter::set_processed ( )
    inline

    Turns on the internal 'is_processed_' flag.

    This is an implementation detail of template queries, used to prevent repeated processing of values.

    ◆ type_id()

    int mysqlpp::SQLTypeAdapter::type_id ( ) const

    Returns the type ID of the buffer's data.

    Values from type_info.h. At the moment, these are the same as the underlying MySQL C API type IDs, but it's not a good idea to count on this remaining the case.

    References mysqlpp::mysql_type_info::id(), and mysqlpp::SQLBuffer::type().


    The documentation for this class was generated from the following files:
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1UseRemoteConnectionOption-members.html000644 000765 000024 00000013516 14042362133 031353 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
    MySQL++  3.3.0
    mysqlpp::UseRemoteConnectionOption Member List

    This is the complete list of members for mysqlpp::UseRemoteConnectionOption, including all inherited members.

    err_api_limit enum valuemysqlpp::Option
    err_api_reject enum valuemysqlpp::Option
    err_connected enum valuemysqlpp::Option
    err_disconnected enum valuemysqlpp::Option
    err_NONE enum valuemysqlpp::Option
    Error enum namemysqlpp::Option
    set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
    ~Option()mysqlpp::Optioninlinevirtual
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ReadDefaultGroupOption__inherit__graph.png000644 000765 000024 00000014574 14042362133 032216 0ustar00tangentstaff000000 000000 ‰PNG  IHDR–“lÌàQsRGB®Îé6IDATxí”Å×Å,K0ü ‚ A "(F$F<¨ˆ 1€€D” õ€ *xLˆ‚$‘¤€ $ ‚‘ I‰"a¾ú=©ùzz{v{pWfØzçÌNwuuuõ­[¯^U÷ÎÍ1&ÎÙŒ@Þl.ÏçP±rG¬ÕzȈ5vìXÉ“'ûä >øà!cø!#Ö—_~)Ï>û¬0wpŸìÇà£>’Ÿþ9÷ëݱ»ð‚À!óXÿÉݹ‹2±ô‡÷…óÞ·—ùÝ-X°@J”(!Çw\æCݵk—LŸ>]~øá)]º´ÔªUK¿Ãœ>oÞ<)Y²d¶Õ%Ì5s2O®öX½{÷–©S§f ¾Ë—/— /¼PžþyÙ²e‹0ë­Q£†Œ1"nùéî»ïÖãß|óüöÛoqó¦Ú¤&VÛ¶m¥yóæròÉ'K½zõ"”+WNlýúõÒ¥KmH@ß¹s§T­ZU6nÜ(<òˆ”)SF÷¿ûî;m“¾}ûê¹—^z©Ô¯__.\m«7ß|Sš5k¦ùO<ñD7nœ;çœs¤U«VêIn¸áÙ±c‡¦_qÅòË/¿è¬ëª«®Ò´:HݺueòäÉÒ­[76l˜ 2DZ´h!»wï– ²n¹åyçw¤k×®²lÙ2Ù¼y³ìÝ»WZ¶l)ÇsŒT®\Y>ÿüs-¿fÍšxW°€¼ÉlIM¬Õ«WËܹseÔ¨Q²uëV:t¨0NOOWP½zuMàO?ýTòçÏ/‹/–‰'Ê¢E‹”,ýúõÓ£±9ÿþûï—I“&EI¹ëÖ­“?þXFŽ©äíØ±#É2þ|)Z´¨@NˆL¹Ø\ Gy¤~Î;ï‘Y³fézÓM7I§N´H– 6D£ó€C2[R àš6m*ÕªU“³Ï>[7n,gœq†œþù²fÍÁs,]ºT ^¯‚w[µj•6Öi§&ýû÷×áŽF®S§Ž4lØPN9å” mrÝu×IÅŠµŒmÛ¶)ÈôÐCiœt×]wE‰IñxE¼ ö÷ß+‰tçÀ€‚𘿬… k'¤Ö /ׂp;w–%K–Èï¿ÿ® É?þ¸Ö•ìÃfÒ«B… ŠyÞ¼y¥X±bý.P €4hÐ@I5~üx% Îâ+žæ¾ûî“Ö­[k#0„Zã<¿)R$š´gÏõP$ØtÒðšñ줓N’)S¦ÄÆ»@š²eËjz˜²ðnÅ‹–a÷ï߯ûGu”~çË—O•£™’p#鉕fx©=zhDãŽ=Z $ 3ï½÷žz«+¯¼RÉF#ÑpA+ÒŸ}ö™6àìÙ³• xHlÚ´i²oß>™0a‚Æ<¤AÜíÛ· žm /óþûïË÷߯ûýõ—ôéÓGc¬´´4M * æ5¼0„k2±(UªTJÎóyo*U¶í3Fê i6mÚ¤±û—\r‰´oß^ƒhˆÔ®];aHd8­T©’Ҷ瓟²0†ÏSO=U6lØ ú¤ã)˜@ <àÀ5/û_|¡õÕWklÔ¤I]f€xMb2Hß³gO='¨,HÅPÎ$ÄZ£Fd̘1Â$‚!¡ÜoÞû÷Kš}^ô;fÖˆyVø¯/mÚˆYÿ‰˜Fˆ–ez{ÄxŽˆ œ£il˜ÆÖ4£EÌô>zìé§ŸŽ˜x&bH1ž&šn†œˆ#ÆËEÓ²Ú0³S½¶!cLÖxeQ¾¿žœÈ5½u‰),ÄŽ î#Æû…È™3YRÒcÙ^É:ÐÍ7߬kAÇ{¬Mâ1¦ê~óÆ.þcì3Å÷eyã3ÿqÿ~Á‚¯M¾ ²˜áY"× :ÿP§¥4±ÚˆX=OÄXZð‡mÚ´ <}íÚµbã£À $fgY \öeMib1O”T mggõ#Ž8ÂnÆ|gåáb2g±“eeq©¤8œò³Â¤@ÑU"#9ºe]ê‡~È¥Ì'=ýØHåS¦¾`ûÀdÝ9”#åf¤›Kñ#РA_ó|ñ7Y±â9ÿ!·€€ @ñ'mݺËj•y4“fž]®ðvû8b€âO?~žy¦—fžþm^ƒ™é?ìöpÄ ÅŸ4xðWæÍ‚Ýf¥}¿|ðÁ\³"ï¢?Fþ}G,?"¾ý?þØ*?þ¸&&õË/—Ä컌8beÄ$&e̘¹1‹¤Û·ï–áÿŽÉãv2"àˆ•“˜”Áƒ¿6o§î‰¦1‰žä¹;›#VÈöç1Ž{$$X&›#Vx¬\ÎpÄ à á³p8b…ÃI‡A÷VCH°L6G¬ðX¹œ àˆ•X.kx±Âcår&€€#V`¹¬ápÄ •Ë™ŽX!ÁrË !:Í+$^¬º»å†`™lŽXá±r9@À+°\Öð8b…ÄŠ˽Ý,“Í+$VÄXîí†`9b…ÊåL ç±Bâå–Bu ›#VH¼ÜrCH ±ÊåN ç±Bâå†Â@Èæˆ/7†Ê+1 \îÄHÚÿ„FÝ u­d±ôôæ÷BF2ee²TI%÷Î:묤©·"I;B,ôù„døìÙó‡ù©ÈIQð¸óÎ;UGÑۘɴ´ÄJ&\]GÀ+qÌÜ!pÄ ’Ë’8‡Å¯Í l‰h$Zˆz£²ÏÂD¤2H,Þ96ë̘1Cµ™‘®]»vTïÐæ‰÷fu­Zµ¢2¾ñò.éñ[ EîðöÛoWíd„º_|ñEU’'¸0`€¼òÊ+îâ×_ÕÙT†Y$ hY¿~}1:‡ªA>s½zõT$3Þ©Þ: šŠðxn±”öXFtRårQ;µR»o¾ù¦ªŸvèÐAgp'œp‚Jè"P¾páBU¶ÇkA04£Ñüꫯäúë¯W""\YÉqgöÌ3Ϩä/ê©ÖPs}饗­DôŸÑOD7º_¿~*zî­Ã‚ TxœÙn³fÍT©žYïàÁƒUõ5¨.ö:©øÒ«P¡BÒªU+¹à‚ TÂ÷ùçŸWñqë›7o®¹ì²Ë”³fÍ’îÝ»«4/ ð»wït Q¯GGšFSð…^P‰_ôçÏŸ¯ç~÷Ýwrúé§gÐf¾øâ‹UzݺuZÖÈ‘#¥wïÞÒ±cG•öÖ­h¤z‘6а2sæL•~íµ×âÖ% eëœÒÄâ&ž{î9ó ÆŸjlE#¡ÿŒ'C=B4 ùÝPÜz5{óx3¼D<å”STí²¡#}æ™gª€8yÑ–ÆÐl¦| ‚V¬XQu ÑÆóy렙̟‰' Ã(úÓݺuSRs,¨.öœTüNibýôÓOòÔSOiPlt…}‚êáÇgh ¯´¯=èUY5šÍ:tþòË/:<’ÇJùžtÒI:Œâ™¼†º+DƼâšFçYÅÆ½yÙ&öÃ[ZQLÈ!-T=¢RšXåË—¼Ô¸qã´Ñð*4ª2ô$jx£¥¨§1b^x¡òBì½÷ÞÓ8íŽ;îÐ}HƱٳg«§²ÞÑ[<çå—_-Ÿ2ªGKéà½@òÄOˆ|Ô KÎð6eʹí¶Û¤N:Ún4jVFo4¢»víª1±D5j”4nÜX=ÞïðF¼„­ZµJ‡· 6hEY<ÇóÖ|>ø Æ…Lè“'O&9ƒ…©o†“’)Á””f‚툙5…®›#& É¿}ûöˆjbÒ²Ú2dHdÙ²eZ–™ÕE:uêsŠÊ"K—.I3ž,Ò¹sçˆ!UĬ‘Å‹W3äFŒwɛȎ™©FÌ 8‘SþÓ¼)í±¼”!ÌoñDÄýù¼û}ó“ÛK±bÅä?þéÓ§{KÙ²ecö½;6&ó¦Å«qÛál‡ ±²«‘º5j¤A63Å´´´,‹fèt‹€#V,ºÇ2íÎÏ+eȘ‹RzV˜‹Ú)ånÕ½A²ÉŽ8¢²l*aÙLyFÎg›;w®Îºï6‚pÄ Æ%š:räLóÂ?žId8:Ô ‡Q€âl8bÅÆ&¿ûî·æ½^m±i³f-“?ÿÜiwÝwŽX Ø¤¹sW˜Ø*–Tc8?~¾Íæ¾pÄ Å&130Pß±c·y•y†Íæ¾pÏ @±I'.д͟ÿŸ·KIç=)Þ€X¸p•Æ[GUÀfwßÜÊ» ÿæÞ½û¢ëw¾5¯>¯3/^«ÙòçO3¯0§ûOqûp+*KñÁ J7ÿ8‘&ÿû_ÁLÎp‡,.ƲHdñÍ›ÍNº7 <‡±<`d¶iÂ*§¥“@¾cŽX>@Ünö àˆ•=8ºR|8bù‰·ëb¬xȧ;bã’!ÕÅX É4Á+SxÜÁƒEÀë`‘sçeŠ€#V¦ð¸ƒ‹€#ÖÁ"çÎËG¬LáqG¬È¹å†@Èæˆ/·Ü(G¬Ä€r¹CÀy¬x¹¡0$P²9b…ÄË …!rÄJ (—;1œÇ ‰— Cu ›#VH¼ÜP(G¬Ä€r¹CÀy¬Äðr¹C"àˆ¨¼yô CfÏõÙ±BR`ÿ~´©CfvÙÜïc9ä^¹ócùôI÷ À oÞ‚‘´´#6ØÀT<¼óŸÐ¨0 Cƒð£3‡@XEœÊk.Æò¢á¶³ G¬lƒÒäEÀË‹†ÛÎ6bb¬l+õ_d$ÛT0HI+ÑbQD]±bEô44rP ³r»Ñ n|ýõ×*޹xñb12rz6úÔ*TˆQJ *–ühL×®];èp`úÕ?þø£T­Z5ÃqÊP¨@©µR¥JZ‡ ™ABÒy¬wß}WÊ,P§å•WT±ï±cÇÊ-·Ü"h9ÿC$ëß¿¿ùÉÈñZþ| wß}·îëÁ8Z´h¡Ê¬q&#®Ù«W/=† ú?ü ÛS§NUýj¾qãFyùå—Íd°„=73cÆ UE&÷šk®‘1cÆhADÛJ×¢FJO»÷Þ{0† &œ[¸paÛF² ÕÒ#FÈñǯòm(Ò[›0a‚,X°@Ðh6b’ªLZ£F iÙ²¥ŠzñÅ*n¦¹ªáüè£ÊÃ?,eÊ”»MYèÒàÖ¨e¢ýÖ[o©ú<Ú„=ôöxzÿ€TÓÉÞ¶mÛªú<êöFœSEÍ­|/eÖ­[WêÕ«§Åã!™USO¼bŸ>}dþüùZßöíÛ 3gÎAòwôèÑ!QpEÊîÚk¯U…W®{î¹ç ž 4h å#„Ž"ë7ß|£"ë­S×Ò¥Këqê5pà@óûʼyódæÌ™F¦e©b†ç¦ ø5B:âè¨ÐRg¤ô¶lÙ¢ª²/¾øb\Œõ"!ÿ$ì±påx‚ûï¿_*W®,¯¾úªöšZµj©G`¨¡Â„ˆ77ƒ ’+®¸BÐZ¦œ·ß~[Œ‚©Þ$æUŠß´i“Ó¥Kiݺµ¼ñÆZ&¤@:—}ÀøöÛo5a `Á~Í» pÔ‡éÛ·¯[¥JùùçŸç=zè°ôä“Oª¦3Ðz©6êÂ… #dÞ½{w%L‚§Ç(®–a¢1Y0¿ 5z ³é¤ÙÞmóù¿A\„ǃ1<0$¡žJƒòa#‡ôx(êF‡ÀèÕEŠÑmHÏcqO|Ê—/¯å3ìP6çÜxãz¾ýiñÄË—/ê4¡°{Ž÷›6  DÎ1D×ñ~\Óš­3÷Šw³Fž}ûöÙ]ýö_+Œc :°sPÄ *È›™Ï‹-ªÃÊ,ñ1nŸ!’ÞCoåñ o9Ä x†!†«ûŒà<†W£,¼š[ü±CÃä‡X7Ýt“ÆH •œÏ°m„õ~ 4u¥“pM¾½g˧‘Ÿ}öYÁËÒI(Ouë­·*L¼FìÅ,U{¼å2sµ3YYãb¼…5[ XÓ‘ˆÄAøØcéi|÷ë×O(ÓnÛò¼ßôD€ÅÕ3|ÈR>Á4D î÷Üs^‡ašÉÅSO=%Ó¦M<´×»pŒu¡ñxwÏž=u–HùFéÞ[ ¼öÚkÂ,‚Ÿxâ‰z-†w‚ò‰'ª—!À,&t.†»A&^%f¢£6lØP; õ¿ôÒK£×±çÐù¸¼2Ä#V£ÓW¯^]ãO¼)"ê¶ÃÄÃ8Zpˆ˜Ÿã¦’¿þúë¿~VHïÃsž‡žHOó6  C*ft‡À2dˆöB@~K¼K.¹D ÁðäJõ¤ƒøy)ß;TF|DƒS?{Œa”k„5ââÅ‹kÐî?Lˆ)/nx,:Û ¡A†ÇµC$ÀロgÐ9¤q/\Ó¶‰ÍÇ0Hǰ–(ÆöY!Ë9Ö²ÕcQ(Ã=˜Ùˆ÷h z¥ß²#è8=1;HE]àýæMó^ŸY_¢fã´ óÀÄÞÃ! BÇ#Ç-©Ø‹°õòÞ çZó’ʦý[Œ³X'œp‚É6p´Íê›Ù˜õJäõ»ö|â€ÿ·Æ’q³+Ϫ¶:2+›!˜¥Š UðÌÎK¥cÙqxŸ×DIEÑôB/aÖíº”÷Òñz7OVÛÇ×8ŒX‹¡ˆô6mÚDƒÿ óíŠ71Š?Ð ÊŸÊiÙq¶{¬d”8øEB»îEYa§§Ò)ü+þLDìŠ7Ãü²eËô6™‰B8Èɳ?Ê ÞaI…¸õ#Ò!mn³l÷XÉà’%K„áÚK*ê̬ ­ø{W¼Y9_¹r¥Þ&³SbIfqx?–G˜áòeÖ• $ ǹÍr±˜q±æã7Ö¡lðì_ñç˜]ñ¶q‹µÌ‰YOb…›…U¬dÉ’úèŠ'ï,Pæ6ËuÄbÅÚz&ocãmìš‘wÖå]ñ÷ægIÂ;›bÚi1ï$„¸Ñ®yÏ?Ü·s±xpÎCYâ,Öt°éæ]ÿµk×êó@öã­øC2k,IJžÄ°Èš+òçœsŽ=œë¿s]ðÎÚ Á|XÇ»àQX%gQ Zñ·+ÞïCâfµþ‘GQOÅÚÄ"÷›>ýé‡ó~ެ¼§ `ˆ`Û>T§ÞñVü9æ]ñf#^#8g‘27 þ“•w.”*æ]a÷×9h-Ç{Ùü,+ðŒÎY,¹n(Œ½ýŒ{ñVü3æt)™!àˆåC'hµß—Åí†@ ×Í C`â²dfF53ív¿Mç· Ö›L0ðÿvC̬0;ˆêÊp€€ rG¬Õêˆå8#üü´Ã_¢ ²IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Row.html000644 000765 000024 00000350543 14042362133 023355 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::Row Class Reference
    MySQL++  3.3.0
    mysqlpp::Row Class Reference

    Manages rows from a result set. More...

    #include <row.h>

    Inheritance diagram for mysqlpp::Row:
    Collaboration diagram for mysqlpp::Row:

    Public Types

    typedef std::vector< Stringlist_type
     type of our internal data list More...
     
    typedef list_type::const_iterator const_iterator
     constant iterator type
     
    typedef list_type::const_reference const_reference
     constant reference type
     
    typedef list_type::const_reverse_iterator const_reverse_iterator
     const reverse iterator type
     
    typedef list_type::difference_type difference_type
     type for index differences
     
    typedef const_iterator iterator
     iterator type More...
     
    typedef const_reference reference
     reference type More...
     
    typedef const_reverse_iterator reverse_iterator
     mutable reverse iterator type More...
     
    typedef list_type::size_type size_type
     type of returned sizes
     
    typedef list_type::value_type value_type
     type of data in container
     

    Public Member Functions

     Row ()
     Default constructor.
     
     Row (const Row &r)
     Copy constructor.
     
     Row (MYSQL_ROW row, const ResultBase *res, const unsigned long *lengths, bool te=true)
     Create a row object. More...
     
     ~Row ()
     Destroy object.
     
    const_reference at (size_type i) const
     Get a const reference to the field given its index. More...
     
    const_reference back () const
     Get a reference to the last element of the vector.
     
    const_iterator begin () const
     Return a const iterator pointing to first element in the container.
     
    bool empty () const
     Returns true if container is empty.
     
    const_iterator end () const
     Return a const iterator pointing to one past the last element in the container.
     
    equal_list_ba< FieldNames, Row, quote_type0equal_list (const char *d=",", const char *e=" = ") const
     Get an "equal list" of the fields and values in this row. More...
     
    template<class Manip >
    equal_list_ba< FieldNames, Row, Manip > equal_list (const char *d, const char *e, Manip m) const
     Get an "equal list" of the fields and values in this row. More...
     
    value_list_ba< FieldNames, do_nothing_type0field_list (const char *d=",") const
     Get a list of the field names in this row. More...
     
    template<class Manip >
    value_list_ba< FieldNames, Manip > field_list (const char *d, Manip m) const
     Get a list of the field names in this row. More...
     
    template<class Manip >
    value_list_b< FieldNames, Manip > field_list (const char *d, Manip m, const std::vector< bool > &vb) const
     Get a list of the field names in this row. More...
     
    value_list_b< FieldNames, quote_type0field_list (const char *d, const std::vector< bool > &vb) const
     Get a list of the field names in this row. More...
     
    value_list_b< FieldNames, quote_type0field_list (const std::vector< bool > &vb) const
     Get a list of the field names in this row. More...
     
    template<class Manip >
    value_list_b< FieldNames, Manip > field_list (const char *d, Manip m, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) const
     Get a list of the field names in this row. More...
     
    value_list_b< FieldNames, quote_type0field_list (const char *d, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) const
     Get a list of the field names in this row. More...
     
    value_list_b< FieldNames, quote_type0field_list (bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) const
     Get a list of the field names in this row. More...
     
    size_type field_num (const char *name) const
     Returns a field's index given its name.
     
    const_reference front () const
     Get a reference to the first element of the vector.
     
    size_type max_size () const
     Return maximum number of elements that can be stored in container without resizing.
     
    Rowoperator= (const Row &rhs)
     Assignment operator.
     
    const_reference operator[] (const char *field) const
     Get the value of a field given its name. More...
     
    const_reference operator[] (int i) const
     Get the value of a field given its index. More...
     
     operator private_bool_type () const
     Returns true if row object was fully initialized and has data. More...
     
    const_reverse_iterator rbegin () const
     Return reverse iterator pointing to first element in the container.
     
    const_reverse_iterator rend () const
     Return reverse iterator pointing to one past the last element in the container.
     
    size_type size () const
     Get the number of fields in the row.
     
    template<class Manip >
    value_list_ba< Row, Manip > value_list (const char *d=",", Manip m=quote) const
     Get a list of the values in this row. More...
     
    template<class Manip >
    value_list_b< Row, Manip > value_list (const char *d, const std::vector< bool > &vb, Manip m=quote) const
     Get a list of the values in this row. More...
     
    value_list_b< Row, quote_type0value_list (const std::vector< bool > &vb) const
     Get a list of the values in this row. More...
     
    template<class Manip >
    value_list_b< Row, Manip > value_list (const char *d, Manip m, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) const
     Get a list of the values in this row. More...
     
    value_list_b< Row, quote_type0value_list (const char *d, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) const
     Get a list of the values in this row. More...
     
    value_list_b< Row, quote_type0value_list (bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) const
     Get a list of the values in this row. More...
     
    template<class Manip >
    value_list_b< Row, Manip > value_list (const char *d, Manip m, std::string s0, std::string s1="", std::string s2="", std::string s3="", std::string s4="", std::string s5="", std::string s6="", std::string s7="", std::string s8="", std::string s9="", std::string sa="", std::string sb="", std::string sc="") const
     Get a list of the values in this row. More...
     
    value_list_b< Row, quote_type0value_list (const char *d, std::string s0, std::string s1="", std::string s2="", std::string s3="", std::string s4="", std::string s5="", std::string s6="", std::string s7="", std::string s8="", std::string s9="", std::string sa="", std::string sb="", std::string sc="") const
     Get a list of the values in this row. More...
     
    value_list_b< Row, quote_type0value_list (std::string s0, std::string s1="", std::string s2="", std::string s3="", std::string s4="", std::string s5="", std::string s6="", std::string s7="", std::string s8="", std::string s9="", std::string sa="", std::string sb="", std::string sc="") const
     Get a list of the values in this row. More...
     
    - Public Member Functions inherited from mysqlpp::OptionalExceptions
     OptionalExceptions (bool e=true)
     Default constructor. More...
     
    virtual ~OptionalExceptions ()
     Destroy object.
     
    void enable_exceptions () const
     Enable exceptions from the object.
     
    void disable_exceptions () const
     Disable exceptions from the object.
     
    bool throw_exceptions () const
     Returns true if exceptions are enabled.
     

    Additional Inherited Members

    - Protected Member Functions inherited from mysqlpp::OptionalExceptions
    void set_exceptions (bool e) const
     Sets the exception state to a particular value. More...
     

    Detailed Description

    Manages rows from a result set.

    This class is like an extended version of a const std::vector of mysqlpp::String. It adds stuff for populating the vector. As for why it's const, what would it mean to modify a Row? If we ever did support such semantics, it should probably actually modify the database. We can't do that if we just derive from std::vector.

    Not that we could derive from std::vector even if we wanted to: vector::operator[](size_type) would interfere with our operator[](const char*). We can avoid this only by maintaining our own public inteface independent of that of vector.

    Member Typedef Documentation

    ◆ iterator

    iterator type

    Note that this is just an alias for the const iterator. Row is immutable, but people are in the habit of saying 'iterator' even when they don't intend to use the iterator to modify the container, so we provide this as a convenience.

    ◆ list_type

    typedef std::vector<String> mysqlpp::Row::list_type

    type of our internal data list

    This is public because all other typedefs we have for mirroring std::vector's public interface depend on it.

    ◆ reference

    reference type

    See also
    iterator for justification for this const_reference alias

    ◆ reverse_iterator

    mutable reverse iterator type

    See also
    iterator for justification for this const_reverse_iterator alias

    Constructor & Destructor Documentation

    ◆ Row()

    mysqlpp::Row::Row ( MYSQL_ROW  row,
    const ResultBase res,
    const unsigned long *  lengths,
    bool  te = true 
    )

    Create a row object.

    Parameters
    rowMySQL C API row data
    resresult set that the row comes from
    lengthslength of each item in row
    teif true, throw exceptions on errors

    References mysqlpp::ResultBase::field_names(), mysqlpp::ResultBase::field_type(), mysqlpp::ResultBase::num_fields(), size(), and mysqlpp::OptionalExceptions::throw_exceptions().

    Member Function Documentation

    ◆ at()

    Row::const_reference mysqlpp::Row::at ( size_type  i) const

    Get a const reference to the field given its index.

    Exceptions
    mysqlpp::BadIndexif the row is not initialized or there are less than i fields in the row.

    References size().

    Referenced by operator[]().

    ◆ equal_list() [1/2]

    template<class Manip >
    equal_list_ba< FieldNames, Row, Manip > mysqlpp::Row::equal_list ( const char *  d,
    const char *  e,
    Manip  m 
    ) const

    Get an "equal list" of the fields and values in this row.

    This method's parameters govern how the returned list will behave when you insert it into a C++ stream:

    Parameters
    ddelimiter to use between items
    ethe operator to use between elements
    mthe manipulator to use for each element

    For example, if d is ",", e is " = ", and m is the quote manipulator, then the field and value lists (a, b) (c, d'e) will yield an equal list that gives the following when inserted into a C++ stream:

    'a' = 'c', 'b' = 'd''e'

    Notice how the single quote was 'escaped' in the SQL way to avoid a syntax error.

    ◆ equal_list() [2/2]

    equal_list_ba< FieldNames, Row, quote_type0 > mysqlpp::Row::equal_list ( const char *  d = ",",
    const char *  e = " = " 
    ) const

    Get an "equal list" of the fields and values in this row.

    When inserted into a C++ stream, the delimiter 'd' will be used between the items, " = " is the relationship operator, and items will be quoted and escaped.

    References mysqlpp::quote.

    ◆ field_list() [1/8]

    value_list_b< FieldNames, quote_type0 > mysqlpp::Row::field_list ( bool  t0,
    bool  t1 = false,
    bool  t2 = false,
    bool  t3 = false,
    bool  t4 = false,
    bool  t5 = false,
    bool  t6 = false,
    bool  t7 = false,
    bool  t8 = false,
    bool  t9 = false,
    bool  ta = false,
    bool  tb = false,
    bool  tc = false 
    ) const

    Get a list of the field names in this row.

    For each true parameter, the field name in that position within the row is added to the returned list. When the list is inserted into a C++ stream, a comma will be placed between the items as a delimiter, and the items will be quoted and escaped.

    References mysqlpp::quote.

    ◆ field_list() [2/8]

    value_list_b< FieldNames, quote_type0 > mysqlpp::Row::field_list ( const char *  d,
    bool  t0,
    bool  t1 = false,
    bool  t2 = false,
    bool  t3 = false,
    bool  t4 = false,
    bool  t5 = false,
    bool  t6 = false,
    bool  t7 = false,
    bool  t8 = false,
    bool  t9 = false,
    bool  ta = false,
    bool  tb = false,
    bool  tc = false 
    ) const

    Get a list of the field names in this row.

    For each true parameter, the field name in that position within the row is added to the returned list. When the list is inserted into a C++ stream, the delimiter 'd' will be placed between the items as a delimiter, and the items will be quoted and escaped.

    References mysqlpp::quote.

    ◆ field_list() [3/8]

    value_list_b< FieldNames, quote_type0 > mysqlpp::Row::field_list ( const char *  d,
    const std::vector< bool > &  vb 
    ) const

    Get a list of the field names in this row.

    Parameters
    ddelimiter to place between the items when the list is inserted into a C++ stream
    vbfor each true item in this list, add that field name to the returned list; ignore the others

    Field names will be quoted and escaped when inserted into a C++ stream.

    References mysqlpp::quote.

    ◆ field_list() [4/8]

    template<class Manip >
    value_list_ba< FieldNames, Manip > mysqlpp::Row::field_list ( const char *  d,
    Manip  m 
    ) const

    Get a list of the field names in this row.

    Parameters
    ddelimiter to place between the items when the list is inserted into a C++ stream
    mmanipulator to use before each item when the list is inserted into a C++ stream

    ◆ field_list() [5/8]

    template<class Manip >
    value_list_b< FieldNames, Manip > mysqlpp::Row::field_list ( const char *  d,
    Manip  m,
    bool  t0,
    bool  t1 = false,
    bool  t2 = false,
    bool  t3 = false,
    bool  t4 = false,
    bool  t5 = false,
    bool  t6 = false,
    bool  t7 = false,
    bool  t8 = false,
    bool  t9 = false,
    bool  ta = false,
    bool  tb = false,
    bool  tc = false 
    ) const

    Get a list of the field names in this row.

    For each true parameter, the field name in that position within the row is added to the returned list. When the list is inserted into a C++ stream, the delimiter 'd' will be placed between the items as a delimiter, and the manipulator 'm' used before each item.

    ◆ field_list() [6/8]

    template<class Manip >
    value_list_b< FieldNames, Manip > mysqlpp::Row::field_list ( const char *  d,
    Manip  m,
    const std::vector< bool > &  vb 
    ) const

    Get a list of the field names in this row.

    Parameters
    ddelimiter to place between the items when the list is inserted into a C++ stream
    mmanipulator to use before each item when the list is inserted into a C++ stream
    vbfor each true item in this list, add that field name to the returned list; ignore the others

    ◆ field_list() [7/8]

    value_list_ba< FieldNames, do_nothing_type0 > mysqlpp::Row::field_list ( const char *  d = ",") const

    Get a list of the field names in this row.

    When inserted into a C++ stream, the delimiter 'd' will be used between the items, and no manipulator will be used on the items.

    References mysqlpp::do_nothing.

    ◆ field_list() [8/8]

    value_list_b< FieldNames, quote_type0 > mysqlpp::Row::field_list ( const std::vector< bool > &  vb) const

    Get a list of the field names in this row.

    Parameters
    vbfor each true item in this list, add that field name to the returned list; ignore the others

    Field names will be quoted and escaped when inserted into a C++ stream, and a comma will be placed between them as a delimiter.

    References mysqlpp::quote.

    ◆ operator private_bool_type()

    mysqlpp::Row::operator private_bool_type ( ) const
    inline

    Returns true if row object was fully initialized and has data.

    This operator lets you use Row in bool context, which lets you do things like tell when you've run off the end of a "use" query's result set:

    Query q("....");
    if (UseQueryResult res = q.use()) {
    // Can use 'res', query succeeded
    while (Row row = res.fetch_row()) {
    // Retreived another row in the result set, can use 'row'
    }
    }
    Row()
    Default constructor.
    Definition: row.h:117

    ◆ operator[]() [1/2]

    const Row::value_type & mysqlpp::Row::operator[] ( const char *  field) const

    Get the value of a field given its name.

    If the field does not exist in this row, we throw a BadFieldName exception if exceptions are enabled, or an empty row if not. An empty row tests as false in bool context.

    This operator is fairly inefficient. operator[](int) is faster.

    References at(), empty(), field_num(), size(), and mysqlpp::OptionalExceptions::throw_exceptions().

    ◆ operator[]() [2/2]

    const_reference mysqlpp::Row::operator[] ( int  i) const
    inline

    Get the value of a field given its index.

    This function is just syntactic sugar, wrapping the at() method.

    It's critical that the parameter type be int, not size_type, because it will interfere with the const char* overload otherwise. row[0] is ambiguous when there isn't an int overload.

    Exceptions
    mysqlpp::BadIndexif the row is not initialized or there are less than i fields in the row.

    ◆ value_list() [1/9]

    value_list_b<Row, quote_type0> mysqlpp::Row::value_list ( bool  t0,
    bool  t1 = false,
    bool  t2 = false,
    bool  t3 = false,
    bool  t4 = false,
    bool  t5 = false,
    bool  t6 = false,
    bool  t7 = false,
    bool  t8 = false,
    bool  t9 = false,
    bool  ta = false,
    bool  tb = false,
    bool  tc = false 
    ) const
    inline

    Get a list of the values in this row.

    For each true parameter, the value in that position within the row is added to the returned list. When the list is inserted into a C++ stream, the a comma will be placed between the items, as a delimiter, and items will be quoted and escaped.

    References mysqlpp::quote.

    ◆ value_list() [2/9]

    value_list_b<Row, quote_type0> mysqlpp::Row::value_list ( const char *  d,
    bool  t0,
    bool  t1 = false,
    bool  t2 = false,
    bool  t3 = false,
    bool  t4 = false,
    bool  t5 = false,
    bool  t6 = false,
    bool  t7 = false,
    bool  t8 = false,
    bool  t9 = false,
    bool  ta = false,
    bool  tb = false,
    bool  tc = false 
    ) const
    inline

    Get a list of the values in this row.

    For each true parameter, the value in that position within the row is added to the returned list. When the list is inserted into a C++ stream, the delimiter 'd' will be placed between the items, and items will be quoted and escaped.

    References mysqlpp::quote.

    ◆ value_list() [3/9]

    template<class Manip >
    value_list_b<Row, Manip> mysqlpp::Row::value_list ( const char *  d,
    const std::vector< bool > &  vb,
    Manip  m = quote 
    ) const
    inline

    Get a list of the values in this row.

    Parameters
    ddelimiter to use between values
    vbfor each true item in this list, add that value to the returned list; ignore the others
    mmanipulator to use when inserting values into a stream

    ◆ value_list() [4/9]

    template<class Manip >
    value_list_b<Row, Manip> mysqlpp::Row::value_list ( const char *  d,
    Manip  m,
    bool  t0,
    bool  t1 = false,
    bool  t2 = false,
    bool  t3 = false,
    bool  t4 = false,
    bool  t5 = false,
    bool  t6 = false,
    bool  t7 = false,
    bool  t8 = false,
    bool  t9 = false,
    bool  ta = false,
    bool  tb = false,
    bool  tc = false 
    ) const
    inline

    Get a list of the values in this row.

    For each true parameter, the value in that position within the row is added to the returned list. When the list is inserted into a C++ stream, the delimiter 'd' will be placed between the items, and the manipulator 'm' used before each item.

    ◆ value_list() [5/9]

    template<class Manip >
    value_list_b<Row, Manip> mysqlpp::Row::value_list ( const char *  d,
    Manip  m,
    std::string  s0,
    std::string  s1 = "",
    std::string  s2 = "",
    std::string  s3 = "",
    std::string  s4 = "",
    std::string  s5 = "",
    std::string  s6 = "",
    std::string  s7 = "",
    std::string  s8 = "",
    std::string  s9 = "",
    std::string  sa = "",
    std::string  sb = "",
    std::string  sc = "" 
    ) const
    inline

    Get a list of the values in this row.

    The 's' parameters name the fields that will be added to the returned list. When inserted into a C++ stream, the delimiter 'd' will be placed between the items, and the manipulator 'm' will be inserted before each item.

    ◆ value_list() [6/9]

    value_list_b<Row, quote_type0> mysqlpp::Row::value_list ( const char *  d,
    std::string  s0,
    std::string  s1 = "",
    std::string  s2 = "",
    std::string  s3 = "",
    std::string  s4 = "",
    std::string  s5 = "",
    std::string  s6 = "",
    std::string  s7 = "",
    std::string  s8 = "",
    std::string  s9 = "",
    std::string  sa = "",
    std::string  sb = "",
    std::string  sc = "" 
    ) const
    inline

    Get a list of the values in this row.

    The 's' parameters name the fields that will be added to the returned list. When inserted into a C++ stream, the delimiter 'd' will be placed between the items, and items will be quoted and escaped.

    References mysqlpp::quote.

    ◆ value_list() [7/9]

    template<class Manip >
    value_list_ba<Row, Manip> mysqlpp::Row::value_list ( const char *  d = ",",
    Manip  m = quote 
    ) const
    inline

    Get a list of the values in this row.

    When inserted into a C++ stream, the delimiter 'd' will be used between the items, and the quoting and escaping rules will be set by the manipulator 'm' you choose.

    Parameters
    ddelimiter to use between values
    mmanipulator to use when inserting values into a stream

    ◆ value_list() [8/9]

    value_list_b<Row, quote_type0> mysqlpp::Row::value_list ( const std::vector< bool > &  vb) const
    inline

    Get a list of the values in this row.

    Parameters
    vbfor each true item in this list, add that value to the returned list; ignore the others

    Items will be quoted and escaped when inserted into a C++ stream, and a comma will be used as a delimiter between the items.

    References mysqlpp::quote.

    ◆ value_list() [9/9]

    value_list_b<Row, quote_type0> mysqlpp::Row::value_list ( std::string  s0,
    std::string  s1 = "",
    std::string  s2 = "",
    std::string  s3 = "",
    std::string  s4 = "",
    std::string  s5 = "",
    std::string  s6 = "",
    std::string  s7 = "",
    std::string  s8 = "",
    std::string  s9 = "",
    std::string  sa = "",
    std::string  sb = "",
    std::string  sc = "" 
    ) const
    inline

    Get a list of the values in this row.

    The 's' parameters name the fields that will be added to the returned list. When inserted into a C++ stream, a comma will be placed between the items as a delimiter, and items will be quoted and escaped.

    References mysqlpp::quote.


    The documentation for this class was generated from the following files:
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1UseQueryError__inherit__graph.png000644 000765 000024 00000012662 14042362133 030420 0ustar00tangentstaff000000 000000 ‰PNG  IHDR†‰é/@DsRGB®ÎélIDATxí”SEÇ V°`EÅU±7Dà±q°b¯ˆ‚Š]±£¢ˆ ŠØ ¨ Í{ïEÀŽ‚"ˆ‘f™ïþ.™ø’}»l6›l6¹÷œ·yuÞ¼;ÿ¹s'ÉæWÏ‹93ó@š–JÛ¶Mó€zÀ„aBˆõ€ #Ö-¶s™|º`Þ¼ynܸqù¼eÑÜ«eË–n¥•VÊÛóäUþù§[k­µÜV[m•·,†}öÙgnîܹy† %Å œ<ƒ #N-†"MÅЊ9x†:-Œ_~ùŽóÎ;9pKvE¾ôÒKnÑ¢EÙRËW× a|øá‡î¤“N*çª?þØõìÙ³ÜþÚØqÆg$g\O>ù¤[°`AmT£ÆîYp yä‘nÍ5×tíÚµs³gÏv;vt?ü°»êª«ÜÌ™3]Û¶mÝÆoìú÷ïŸtĈ#\=tû’K.q£Fr¼Ûùå—» 6ØÀµhÑÂ;ÖMœ8Ñm¿ýöîûï¿×²š7oî¾þúk÷Úk¯¹-·ÜÒm¸á†îÚk¯Õr>ùä׺uk·Þzë¹sÎ9Çýý÷ßnàÀîøã×26Úh#÷ÄO¸!C†¸xÀqÄî§Ÿ~r“&Mrýõ—{óÍ7Ý6ÛlãV_}uwòÉ'ëõS§NÕç:ôÐCÝÚk¯íºté’|†‚Zá³’|Ù?þ襗Wz»›nºÉwîÜÙÿüóϾS§N~À€^z oÕª•—)›?ýôÓ}‡üûï¿ïwÞyg¿ï¾ûjy¯¿þº—ÆÑõÁƒ{iÿÞ{ïùÍ7ßÜO˜0Á÷éÓÇ7nÜØÿóÏ?þ¨£ŽòÇ{¬oß¾½?묳ôÊ6l˜—©¡ž÷Ýwßùý÷ßß÷êÕËË{/^Ääï¾ûnß»wo/Sn=OÄç¥áýüùóý®»îêGíÿý÷_=>kÖ,­s¿~ýüøñãõ¼_|Ñ‹ØølÊ‹˜´ŽòÞ„ç^•Ù§Ÿ~êEÈ•RãÇèUy³ªãÑGõÒÃü¥—^ª KåÞxã ëM›6õ|ð«~РAIa莴?-üž{îéo¿ýv]–[n9/=ÖÓh«¬²Š—Hàç̙㥗kc†ËÇŒ3ü +¬àiX®—î;î8Æi§Nõeeeþ›o¾ñ{챇á…t?™õÔSI?Jw$£ØG}¤ùƒ nÙe—u_|±“áG‡0.¸à‡›4i⮾új'½VïINAÒ¸ãŽ;ºå—_ÞÉ0äg÷îݹϴiÓ´|òZ†}7’<£ŽÁÈ-$ïZ".Ò½öÚ+.ü׸Е«}UJ6Jó7Ûl3/ÓQÿÃ?xéÅ^z¼—Fñ’xj â%AÕê’›HÖõ<ÐKbêÿøãÏ:¡›±¼oß¾^„æ¥Çk™Œ÷+®¸¢†}†%ΓDÕwíÚUË>|¸îc?¹ õ ÇXýõý&›l¢Ãù Ö­[7/ ³çJ®ÈI®ÖYg/bó"J¶Þzk½†?‰ r(©Gåò%_B.Ë’>+á3Âû[láêÕ«§Õ£7ÒK%OÐL¨f¶Qc&C`ˆ¨Ì.\¨eG?¬â¾D Ém4b]sÍ5UÎ;ï<­KtXøí·ß\t˜á^”)É¥“\$ù,•Õ!îQ‡a‰YL¾,¯¢Uõ¡h¦ŽQcHƸ\UQp Óͪ¢c‰÷•ÈÝ¥ëq"K'RÓÚºf)ŒBvâùçŸ_ÈÕ«±º™02t¥ä$^Q7O/¸YIÝtcñÕ:¯ƒÜ)¥dîçÉ)S~•ÄóÉmÖ(¸ºQ¡Lrªšx€¼ÎJj¢Â¹*£U«^2ƒøK>K陫[Ô©rm(‘æš9ó7™FÿáæÌY SÓŸëT檲& ñìÿþ7^ýË[:£F½—+_שrMÒ\C‡¾£ÃÈ¢E»áÃß­S ˜«Ê–¼0¦LùA†‘¹Iÿ2œLž<#¹]ª+%/Œ‘#ÇÉläßdû5ØWêVòÂ1bœ|*ºøãpÄÀ”uôèÅ9G)‹£¤…1aÂtùHü¿ÊƒäK^ò5À¯ÂfI¾–´0H4,(/ŒyóºaÃJ; -é7¸7>_¾Mµ¼|œ^/ù-*>æçãý¹sº3úé±R %-ŒéÓqS§.~Ck̘4×hß¾•ê ¬¬‘|‡¢0ßχPóúYI>(“{4iÒH¾Þ·øË;'N×a¥M›Í3)¢hÏ-é£h[µÌ„‘p"¹_66[ìóDB |NBÒifÂ0 Tâ‹ çØP’ªFÂ6”˜0R=`[±°ˆëÛiÂ0 ÄzÀ„ëÛiÂ0 ÄzÀ„‘p‹MWSõaÂHøÃ¦«&ŒTØV¬,bĺÅvš0 Ç`1[ìFB ä,f& Ó@%°ˆ‘pŽ %©*1a$üaC‰ #Õ¶ë‹ ·ØP’ªFÂ6”˜0R=`[ñžRmÛm·Ý˜øÅR¿þº¾~ýÆEñ,´ ?QeõŸhüü3¿Â·¤Ÿ€Ž—¤íÍ•ø‰k`?Ù˜åÙx¯ˆ¯5aqãfóh&Œl¼WÄ×f•c‚_^yåÚ¥SªS·çŸÞ 3-åÒm·ÝÖ Ÿ$e_Mo€à¶ŠŽIM]íòê|ÄN™°^µ½ð°Ãs=ö˜R• +±ÀÉ…E‘¡…ó–‹ÛT¿Ìl¦4ÂY"Ò¡0I•ôsê©§* *• (=Ò ¸F«qóÍ7{AQ)µ©0Ä ³Ï>[¯Û}÷ÝNe‘²0hCƒ®xÊ)§xÁYù–-[ú/¾øÂ‹ó½ ®¼ §¼@`ü•W^©×|þùçI2#À|$á¨ézôå ÚSwà”–@?ñÄ•Æ(ûÉ?E{Áui˜.BgÂX°Çs~øáú¼2“Su9r¤’“„¯¦Ïá‰ãМ0Aa¨„{âî£I=PÁ€€eñËÆr1¦L™¢L08f@ð‘éÿl³”F°“ªlÀxâD'HKe› ]РˉӠ­”aF/‚GøÚ—_~)¿Ž3UÉÍ‚ºt·Ür‹–ÿøã»3ÏBŒ¿Q®-/É'„ñÃ$P‹£ÝX†í ¶Sä%¤d(„8Z¼î¨:# *J4z*м û¸gt´Ñu&.Ù«ž@6_ ݱc`:á•Ñ`çÉþ€ód=Ôƒ:ë•]åŒ((Cor?8Î𛽖/g^"FòIcV6ÝtSÅu#zFÔ`!”ñÛ …Ù ‘YC,ÇÃÐÃzÔ¢0®³®ƒÌ„ê¤6Bdc‹b9ÙŽ]h`uæuBEtàÁÁï½÷ÞŽ¨Á,æ®»îÒ^Γr©ç‚ ³î5С`89!S苎ˆT–—ˆQу…/ß"I<•©Ê¹ŒÏÛm·Žýô08肸t C={öÔqŸ¡(X(¾;¹ =’¡‡Wz3ùdFÊ¥fD§_ýU~z¤æ1\G9!º…²¯¿þzmLò I UPÉ)˜ÞRQ1Ñ`¼3’70\ݬWI®qÿý÷«ø¾úê+šƬˆá¸CȽ÷Þª‘òž7egMod“¹VeVR•ò%ZxqvÊ©0NAcGMB«rÐ¥§–Cwƒê–H¢³ ÎÃà»ï²Ë.Ê^§¼\˜äåŠe–›>˜„/÷2T„]úÊ>§ìcƒó`ÆV×jbVR«‘“ÔÑ»Y¢0ÝÑ}Œß„V²üŠ,.?€¹Ê’ KÏ™¸GΓü*äH¡QdhØÇkúyÑcy[¯®*¹®&"†Œ×>ôðªÖ…ž&ðÛ”ÓÙfÔd ÷2\DwÕʺ| ×ûEĨ}˜žÆt/jéÛ#ƒ³è¹ù^_cº÷ õ>+Éw#Ùýªæ¬r yË:9õªÚí ÷,ùö–T®ž¼×1³p+™AÍx‡4+é™:ÎðšQoÈ›‘©›¥¹exÍòínŸ^Ó„QÞ²ÇðšåÝRòÃðšåEÁž’†á5M±0¼f¬[J;b^3^ì-é¡Äðš £¤ßà2¼¦ #ֆ׌u‹îÌê³’Š‹­G ¯Yq;•tŽQ±[ìˆ #¡¾GixÍÿ:„ #á ùŠUò«úÿ¹§t×L¥Ûö•>¹ #áJRubÂHøÃ†Fªl+Ö1bÝb;M¦X˜0bÝb;M¦X˜0n±éjª>L ØtÕ„‘êÛŠõ€EŒX·ØNFBä,f‹=`ÂH(ƒÅÌ„a¨Ä1α¡$U%&Œ„?l(1a¤zÀ¶b=`#áJRõaÂHøÃ†Fªl+ÞÒS’&8„¢ÁKÊÓfô,ņ×Ìôùå7Γ:`%å?ÑDbÐ 'œ¯"Û[”6l˜hŽÛo¿ý’Ïg9FÒ¶õ€ #ê [OzÀ„‘t…­D=’cDÔÖ: ~ÿ»Q£FYWœ–@íR$“'OV¶ZÜoWvCù{¥ÀЬY3¨G•]—é±Y³f•ã½Á\Ùa‡2-*«ó .bÕ°ÆP“P…ÕD Ä¢L €À=4ày@k€Úç«iƒæ ØNXòåÛ2Ž ™€ÁŒ „;è ƒ”Ê¿ ,Ôøñã8ÀrôÖ.]º(6jèСŠs¢§rȫѣG;¨D‚ÄT–£` ¢&Mš¤=èDðZ·n­ ݺ"¤îÝ»+‹!ä!X!a=”÷ œüSÊN× A7hÐ êÁ!p'è å¨[·nIò"åA2yE½xíÓ§ÞFЛ®k×®êȰU(ŸëA]Ar‚zÕhܸq²#,|Ás²Î=ãE |W¸¾ÅçøbÒwܡ¥ނãTد”5mÚ4Z,Ë8b@~ûí·@Û §€¤„FÜ.©Š IpìØ±nðàÁŠ·zä‘G”L"ö³1¿"£ABD çÐÔ±Ò°ô:@v „kÄDHÇx³ó¨ ²#‚Àñôjž!݈¨e•••iYˆ,"ñW,‚ç¾ 5ø,ø€rçE{F¯åX€ôp/:g0ê(o^êf8'«êkµ"Æ’ çÉ) âXœõ ¢[£dCz&A¯$ì¥ã?BÂ!á8(Ÿ^ÈuôœQVèÕasmØ"TÆfÆw¢ç3öÓˈ`4%¹mÛ¶JID„"Ða£’WÔsÌ1šK)!$Ð LUÊB˜:uRÄ%ðÛh8|EôÆ3#ú°ð¬•Qšgã<žƒH¢ge×Uv¬Z£¢×iitDî€5oÞ\3mS*•!¢iÓ¦ŠêfüŒNýB9ônD‘±”ýô6•K²‡ñ ^›2£ë:tPŠ2çÒ›IVi|†¯=zhÓ¨ìGHä;vÔ{vîÜYñœš¼ƒÐ¨‘ÑÑSò;à€Üu×]§Uêß»woÝžM7ä‚`8 p_öÓ‰X‚q/’âôkÃ6ùY 2”,œ¶«úšò;Ÿôf¦`Ù~V‚ã¨äÀ“Ž¢„AxÐ`8 Q0£ ñI18ð$v䜄 —Æc E¡¼¸WÊ!ÜÒƒCç<ÄÅ~Du ‚äžéïu ÎG”IÒGtÄ8†8Ý‘øÃ@ŽP]šÏ)xž=[£nt€à«ª–G4³¯`51(”YC¯^½4 ½‡ýä#qcrºó97jqÇiÄªŠ‚²hä8ì&¨›n$†qFÇÆ'o¢àܰ?ý::BEÆ{*DQ8ö5a™ødI÷«ñˆÁ°@ò–iÒC£¡BS×0 B„‰K8^—^‰ MySQL++ Reference Manual MySQL++: mysqlpp::value_list_ba< Seq, Manip > Struct Template Reference
    MySQL++  3.3.0
    mysqlpp::value_list_ba< Seq, Manip > Struct Template Reference

    Holds a list of items, typically used to construct a SQL "value list". More...

    #include <vallist.h>

    Public Member Functions

     value_list_ba (const Seq &s, const char *d, Manip m)
     Create object. More...
     

    Public Attributes

    const Seq * list
     set of objects in the value list
     
    const char * delim
     delimiter to use between each value in the list when inserting it into a C++ stream
     
    Manip manip
     manipulator to use when inserting the list into a C++ stream
     

    Detailed Description

    template<class Seq, class Manip>
    struct mysqlpp::value_list_ba< Seq, Manip >

    Holds a list of items, typically used to construct a SQL "value list".

    The SQL INSERT statement has a VALUES clause; this class can be used to construct the list of items for that clause.

    Imagine an object of this type contains the list (a, b, c), and that the object's delimiter symbol is set to ", ". When you insert that object into a C++ stream, you would get "a, b, c".

    This class is never instantiated by hand. The value_list() functions build instances of this structure template to do their work. MySQL++'s SSQLS mechanism calls those functions when building SQL queries; you can call them yourself to do similar work. The "Harnessing SSQLS Internals" section of the user manual has some examples of this.

    See also
    value_list_b

    Constructor & Destructor Documentation

    ◆ value_list_ba()

    template<class Seq , class Manip >
    mysqlpp::value_list_ba< Seq, Manip >::value_list_ba ( const Seq &  s,
    const char *  d,
    Manip  m 
    )
    inline

    Create object.

    Parameters
    sset of objects in the value list
    dwhat delimiter to use between each value in the list when inserting the list into a C++ stream
    mmanipulator to use when inserting the list into a C++ stream

    The documentation for this struct was generated from the following file:
    mysql++-3.3.0/doc/html/refman/dynsections.js000644 000765 000024 00000010544 14042362133 021476 0ustar00tangentstaff000000 000000 /* @licstart The following is the entire license notice for the JavaScript code in this file. The MIT License (MIT) Copyright (C) 1997-2020 by Dimitri van Heesch Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @licend The above is the entire license notice for the JavaScript code in this file */ function toggleVisibility(linkObj) { var base = $(linkObj).attr('id'); var summary = $('#'+base+'-summary'); var content = $('#'+base+'-content'); var trigger = $('#'+base+'-trigger'); var src=$(trigger).attr('src'); if (content.is(':visible')===true) { content.hide(); summary.show(); $(linkObj).addClass('closed').removeClass('opened'); $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); } else { content.show(); summary.hide(); $(linkObj).removeClass('closed').addClass('opened'); $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); } return false; } function updateStripes() { $('table.directory tr'). removeClass('even').filter(':visible:even').addClass('even'); } function toggleLevel(level) { $('table.directory tr').each(function() { var l = this.id.split('_').length-1; var i = $('#img'+this.id.substring(3)); var a = $('#arr'+this.id.substring(3)); if (l MySQL++ Reference Manual MySQL++: mysqlpp::CompressOption Class Reference
    MySQL++  3.3.0
    mysqlpp::CompressOption Class Reference

    Enable data compression on the connection. More...

    #include <options.h>

    Inheritance diagram for mysqlpp::CompressOption:
    Collaboration diagram for mysqlpp::CompressOption:

    Additional Inherited Members

    - Public Types inherited from mysqlpp::Option
    enum  Error {
      err_NONE , err_api_limit , err_api_reject , err_connected ,
      err_disconnected
    }
     Types of option setting errors we can diagnose. More...
     
    - Public Member Functions inherited from mysqlpp::Option
    virtual ~Option ()
     Destroy object.
     
    virtual Error set (DBDriver *dbd)=0
     Apply option.
     

    Detailed Description

    Enable data compression on the connection.


    The documentation for this class was generated from the following file:
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SslOption__inherit__graph.png000644 000765 000024 00000006722 14042362133 027556 0ustar00tangentstaff000000 000000 ‰PNG  IHDRnRµãá-sRGB®Îé ŒIDATxíU†›ãˆ’ dE°DŀВ¥È&Ê2€  «„"ƒ« $”Q¤@P‘$IPTÀ#I%Gõ} o™ö¸]˜[nÇéªÛ™y3/õ߯ûM¸ÿe ‘@NI ×â Áª¸5„¸NˆqÑÈgŸ}F, þ2Q¯¾új4Pè5Q¸~øAÞ}÷]€þ2A_|ñ…üöÛoQÿ¨‹ºÄà¸h ..jö¾’8ïu—“ãR‹G•¬ZµJŠ+&W]u•'%þõ×_òí·ßÊ–-[äºë®“ÚµkËe—]UÙ+W®”+®¸Â³¶DU©ã¢„qýúõ“9sæ8šỳfÍ’»îºK>ýôSÙ¿¿ 6LªT©"«W¯N·PÀjÑ¢…ž_´h‘žîÅ™|ÂSà^yåiÙ²¥”/_^î½÷^AÑ¥J•’{î¹G°îwÞyGú÷ï¯]:räˆT®\Yþþûo1Ó`)Q¢„¯X±BÏ4HóÖ©SG4hF¡£F’gžyF¯/W®œ0#CP|›6mt$<òÈ#røðaM¯W¯ž¬_¿^Ö®]+ 6ÔYqóæÍeàÀ íúòË/¥iÓ¦Ò±cÇtËjÖ¬™|üñÇÒ¥KÙ°aƒìÙ³Gþý÷_iݺµ\~ùåR©R%ùî»ï4õêÕ}àÐÅÞ½{5Ý«OÛºu«,_¾\&Mš¤Vüá‡ÊŒ3$GŽòùçŸËí·ß.¤!ß|óäÌ™SÖ¬Y#Ó§O—_~ùEÁú¨Üxãê’P–ÿÇ3JŒÎ?ÿüS•qýõ×ËðáÃÕV«VMjÕª%=ôÆw§~øa©X±¢–qðàAÙ¼y³^òòË/ËÕW_-Ï=÷\8ŒËgT3ZNœ8!Ù²e“£G¦)vçÎjL6Ñ]VÁ‚Õqã .}ûí·eݺuB9”ÿúë¯kÛqÄQ/Åsஹæm_RR’)R$M[såÊ%7VЦM›¦JG¡óçÏבòâ‹/ÊóÏ?¯ÄÅZ!Ÿ[ *N:~ü¸Ž0l:iÄ®H€”Éhq ŒÇJ4ea0E‹µYÔ(N:¥ÇùòåÓmrr²ºçðEìx\Fmb”õêÕKãе×^+“'O–Ñ£G nhâĉ:Úêׯ¯`22P nÇ-(-]ºTÝ #™;w®œÑ©™ÌO¤²ˆiNÁ‹`„ÔÉÄéÊ+¯ŒËL3.·¸ þ@ù矄؅g:wî,ÌòŠÉV»½á†䨱cb-—ëm9¸× *ÈîݻҒ‰ë>øà²è„äûï¿WåÞÿý›úôé#Ï>ûlxJOLìÙ³§<øàƒš'RY€†«g2c¥I“&2eÊa’„‹ÄÕ»ÅÙ÷¹ >Žö©¦™!…̳Êh/O÷:°Cæþ'd:¾ÆXkÈL B&æ„ÓØ1ÊÔ43m™éwø\÷îÝC&ž„ h¡„ÓK 2£4œ–ÑŽ™†ÌÄ(d@IsizeQ¾»d¤Ng[Òʼnù¡FEqåéKâ2â¬UqÄ”›{¡âÅ‹Ûd!Z·N4;ÎØáL·ûLÁÝBYÎøè>ï>&ŽÙXæ>©,fÈ‘$–:#å5-®ÀáúˆM<ýˆE˜ú;Ýe‡"fgšOüòB¼,Ë‹ö¸Ëˆ+pÜ·Å  vˆ¼yóºû¡ÇЈ™ÒIô²¬tª¸¨ä¸Ï*/ªµA泈6&Úð9Їrå*“Poìcyž àÎÂ蟽úõû›û¿’šÚ×?rôÄ—®rÏžÃæ3€mzÏ·j•·šº»¤»¾nÚ´•’œœÝ<¹?!&,¹¤ άÊ} ÜØ± Ì“ùãæIÌ)óHm™çÏ 3 ŒXÊõpÛ·ï3ïÞv†u@_°`}øØ/;¾ŽfŸgÒ¡CÇ|é.}Üøñ Í{¶³OðO ™—˜«L¼;é—Á¦ýðpë×ï2Oè÷ÏçÎþcÓs È‚ ¾nâÄ¥:!qëùàÁ£ÂHô“øê¼t鎒;w²¾m°Ïˆw4¾PÙÃÌŽ¡½OIIQƒp·G3š\–ãÙ¦C5¼Á¬5€ËÄ `gg h}Y@!ì±Ç´è…—-[¦+T±¾Æ#GŽÔâ`D\¨ú!ü¶}°uE³8 ÅÒ¡k§3lí>¾ãŽ;”ÓŽc†‚«ç] ¨PÛS‹+”,Yòœöb \O( ÎcBnø$A€pïicí>VΨfq 5Ʊ=ZˆùÁ›8p0B6XÚ\¶lY]ÓØ8Ÿ'Ožp6ÚÆúÔSO)m?íà9*L¹ôùÖ[o½ ·zAÀÁë@CQ @pCÙLôî»ïÖ€NPGé(tÈ!’?~]]cÀ€ ¤“Þ7e®“·cËm:iv548sðÑG©õ0kôîÝ[GH¤öØüma´8…`Œ±õ³ïlÇN!ά`¸bÄ £­M³×E³½ à2*°ˆi0‘3ÚXíz^b d´±âëØÐF1Ó-( 6r&¸AÜ0‚û#Õ#”eg~vÃÂÛ±’´HíÑBÌŠ´îw‡àꙨÏgVùàåÕ¬YSoEXºW µ¾[¨ÓÖë>w¾ã4tŒfJû¬’ÀKcY¼ˆQ‡ 4,—ˆ;µ(€Æ,p˜X Ä"â ñŒë-°yÖÚ!V8]­-/Ò–‘Ku^Ÿ^{œùÉÇm1Í’tk ¼÷Þ{:Ûµý##Žrý#—‰‘Ù>‹pÊ¢¬¼eÅÓG¡Ìú˜Þ”ÂE±¨‚[œ1À}ŽãHç±P'‘ò9ÓˆIθĹôÚ“Q>{pÜÙÉ‹½Ænci«Í“ÑÖó‡Û#–¸™Ë3jÖEZ˶·vŠoó3B#iÏgöW‹tBfÖ—‡ÿ4:íV„0«˜K mÀ°Ümµm‹ç6Sf•ñìÀÿ¶.3K Ë<½7€úæí7}q¿Oãþ·Ö›€\e‚F“ààT Úìÿ!Ó±5P´ÚIEND®B`‚mysql++-3.3.0/doc/html/refman/functions_b.html000644 000765 000024 00000012720 14042362133 021773 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
    MySQL++  3.3.0
    Here is a list of all documented class members with links to the class documentation for each member:

    - b -

    mysql++-3.3.0/doc/html/refman/type__info_8h_source.html000644 000765 000024 00000141063 14042362133 023577 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: type_info.h Source File
    MySQL++  3.3.0
    type_info.h
    Go to the documentation of this file.
    1 
    7 /***********************************************************************
    8  Copyright (c) 1998 by Kevin Atkinson, (c) 1999-2001 by MySQL AB, and
    9  (c) 2004-2008 by Educational Technology Resources, Inc. Others may
    10  also hold copyrights on code in this file. See the CREDITS.txt file
    11  in the top directory of the distribution for details.
    12 
    13  This file is part of MySQL++.
    14 
    15  MySQL++ is free software; you can redistribute it and/or modify it
    16  under the terms of the GNU Lesser General Public License as published
    17  by the Free Software Foundation; either version 2.1 of the License, or
    18  (at your option) any later version.
    19 
    20  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
    21  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    22  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
    23  License for more details.
    24 
    25  You should have received a copy of the GNU Lesser General Public
    26  License along with MySQL++; if not, write to the Free Software
    27  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
    28  USA
    29 ***********************************************************************/
    30 
    31 #if !defined(MYSQLPP_TYPE_INFO_H)
    32 #define MYSQLPP_TYPE_INFO_H
    33 
    34 #include "common.h"
    35 
    36 #include "exceptions.h"
    37 
    38 #include <map>
    39 #include <sstream>
    40 #include <typeinfo>
    41 
    42 namespace mysqlpp {
    43 
    44 #if !defined(DOXYGEN_IGNORE)
    45 // Doxygen will not generate documentation for this section.
    46 
    47 class MYSQLPP_EXPORT mysql_type_info;
    48 class MYSQLPP_EXPORT mysql_ti_sql_type_info_lookup;
    49 
    50 class MYSQLPP_EXPORT mysql_ti_sql_type_info
    51 {
    52 public:
    53 #if __cplusplus >= 201103L
    54  // Do not allow copy by assignment. (C++11+ version.)
    55  mysql_ti_sql_type_info& operator=(const mysql_ti_sql_type_info&) =
    56  delete;
    57 #endif
    58 
    59 private:
    60  // For use with flags_ bitset
    61  enum {
    62  tf_default = 1,
    63  tf_null = 2,
    64  tf_unsigned = 4
    65  };
    66 
    67  friend class mysql_type_info;
    68  friend class mysql_ti_sql_type_info_lookup;
    69 
    70 #if __cplusplus < 201103L
    71  // Pre-C++11 alternative to no-assign declaration above.
    72  mysql_ti_sql_type_info& operator=(
    73  const mysql_ti_sql_type_info& b);
    74 #endif
    75 
    76  // Not initting _base_type and _default because only mysql_type_info
    77  // can create them. There *must* be only one copy of each.
    78  mysql_ti_sql_type_info() :
    79  sql_name_(0),
    80  c_type_(0),
    81  base_type_(
    82 #if MYSQL_VERSION_ID > 40000
    83  MYSQL_TYPE_NULL
    84 #else
    85  FIELD_TYPE_NULL
    86 #endif
    87  ),
    88  flags_(0)
    89  {
    90  }
    91 
    92  mysql_ti_sql_type_info(const char* s,
    93  const std::type_info& t, const enum_field_types bt,
    94  const unsigned int flags = 0) :
    95  sql_name_(s),
    96  c_type_(&t),
    97  base_type_(bt),
    98  flags_(flags)
    99  {
    100  }
    101 
    102  bool is_default() const { return flags_ & tf_default; }
    103  bool is_null() const { return flags_ & tf_null; }
    104  bool is_unsigned() const { return flags_ & tf_unsigned; }
    105 
    106  const char* sql_name_;
    107  const std::type_info* c_type_;
    108  const enum_field_types base_type_;
    109  const unsigned int flags_;
    110 };
    111 
    112 
    113 struct type_info_cmp
    114 {
    115  bool operator() (const std::type_info* lhs,
    116  const std::type_info* rhs) const
    117  {
    118  return lhs->before(*rhs) != 0;
    119  }
    120 };
    121 
    122 class MYSQLPP_EXPORT mysql_ti_sql_type_info_lookup
    123 {
    124 private:
    125  friend class mysql_type_info;
    126 
    127  typedef mysql_ti_sql_type_info sql_type_info;
    128  typedef std::map<const std::type_info*, unsigned char, type_info_cmp>
    129  map_type;
    130 
    131  mysql_ti_sql_type_info_lookup(const sql_type_info types[],
    132  const int size);
    133 
    134  const unsigned char& operator [](
    135  const std::type_info& ti) const
    136  {
    137  map_type::const_iterator it = map_.find(&ti);
    138  if (it != map_.end()) {
    139  return it->second;
    140  }
    141  else {
    142  std::ostringstream outs;
    143  outs << "Failed to find MySQL C API type ID for " << ti.name();
    144  throw TypeLookupFailed(outs.str());
    145  }
    146  }
    147 
    148  map_type map_;
    149 };
    150 
    151 #endif // !defined(DOXYGEN_IGNORE)
    152 
    153 
    158 class MYSQLPP_EXPORT mysql_type_info
    159 {
    160 public:
    169  num_(static_cast<unsigned char>(-1))
    170  {
    171  }
    172 
    178  mysql_type_info(enum_field_types t, bool _unsigned = false,
    179  bool _null = false) :
    180  num_(type(t, _unsigned, _null))
    181  {
    182  }
    183 
    186  num_(t.num_)
    187  {
    188  }
    189 
    194  mysql_type_info(const std::type_info& t) :
    195  num_(lookups[t])
    196  {
    197  }
    198 
    200  mysql_type_info& operator =(const mysql_type_info& t)
    201  {
    202  num_ = t.num_;
    203  return *this;
    204  }
    205 
    210  mysql_type_info& operator =(const std::type_info& t)
    211  {
    212  num_ = lookups[t];
    213  return *this;
    214  }
    215 
    220  const char* name() const { return deref().c_type_->name(); }
    221 
    225  const char* sql_name() const { return deref().sql_name_; }
    226 
    231  const std::type_info& c_type() const { return *deref().c_type_; }
    232 
    239  {
    240  return mysql_type_info(deref().base_type_);
    241  }
    242 
    248  int id() const
    249  {
    250  return num_;
    251  }
    252 
    258  bool quote_q() const;
    259 
    265  bool escape_q() const;
    266 
    272  {
    273  return num_ < b.num_;
    274  }
    275 
    280  static const enum_field_types string_type =
    281 #if MYSQL_VERSION_ID > 40000
    282  MYSQL_TYPE_STRING;
    283 #else
    284  FIELD_TYPE_STRING;
    285 #endif
    286 
    287 private:
    288  typedef mysql_ti_sql_type_info sql_type_info;
    289  typedef mysql_ti_sql_type_info_lookup sql_type_info_lookup;
    290 
    291  static const sql_type_info types[];
    292  static const int num_types;
    293 
    294  static const sql_type_info_lookup lookups;
    295 
    314  static unsigned char type(enum_field_types t,
    315  bool _unsigned, bool _null = false);
    316 
    317  const sql_type_info& deref() const
    318  {
    319  return types[num_];
    320  }
    321 
    322  unsigned char num_;
    323 };
    324 
    326 inline bool operator ==(const mysql_type_info& a, const mysql_type_info& b)
    327 {
    328  return a.id() == b.id();
    329 }
    330 
    332 inline bool operator !=(const mysql_type_info& a, const mysql_type_info& b)
    333 {
    334  return a.id() != b.id();
    335 }
    336 
    339 inline bool operator ==(const std::type_info& a, const mysql_type_info& b)
    340 {
    341  return a == b.c_type();
    342 }
    343 
    346 inline bool operator !=(const std::type_info& a, const mysql_type_info& b)
    347 {
    348  return a != b.c_type();
    349 }
    350 
    353 inline bool operator ==(const mysql_type_info& a, const std::type_info& b)
    354 {
    355  return a.c_type() == b;
    356 }
    357 
    360 inline bool operator !=(const mysql_type_info& a, const std::type_info& b)
    361 {
    362  return a.c_type() != b;
    363 }
    364 
    365 } // end namespace mysqlpp
    366 
    367 #endif // !defined(MYSQLPP_TYPE_INFO_H)
    368 
    SQL field type information.
    Definition: type_info.h:159
    mysql_type_info(const mysql_type_info &t)
    Create object as a copy of another.
    Definition: type_info.h:185
    int id() const
    Returns the ID of the SQL type.
    Definition: type_info.h:248
    const mysql_type_info base_type() const
    Returns the type_info for the C++ type inside of the mysqlpp::Null type.
    Definition: type_info.h:238
    mysql_type_info(enum_field_types t, bool _unsigned=false, bool _null=false)
    Create object from MySQL C API type info.
    Definition: type_info.h:178
    mysql_type_info()
    Default constructor.
    Definition: type_info.h:168
    const std::type_info & c_type() const
    Returns the type_info for the C++ type associated with the SQL type.
    Definition: type_info.h:231
    mysql_type_info(const std::type_info &t)
    Create object from a C++ type_info object.
    Definition: type_info.h:194
    bool before(mysql_type_info &b)
    Provides a way to compare two types for sorting.
    Definition: type_info.h:271
    const char * name() const
    Returns an implementation-defined name of the C++ type.
    Definition: type_info.h:220
    const char * sql_name() const
    Returns the name of the SQL type.
    Definition: type_info.h:225
    This file includes top-level definitions for use both internal to the library, and outside it....
    Declares the MySQL++-specific exception classes.
    mysql++-3.3.0/doc/html/refman/options_8h_source.html000644 000765 000024 00000254102 14042362133 023136 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: options.h Source File
    MySQL++  3.3.0
    options.h
    Go to the documentation of this file.
    1 
    11 /***********************************************************************
    12  Copyright (c) 2007-2009 by Educational Technology Resources, Inc.
    13  Others may also hold copyrights on code in this file. See the
    14  CREDITS file in the top directory of the distribution for details.
    15 
    16  This file is part of MySQL++.
    17 
    18  MySQL++ is free software; you can redistribute it and/or modify it
    19  under the terms of the GNU Lesser General Public License as published
    20  by the Free Software Foundation; either version 2.1 of the License, or
    21  (at your option) any later version.
    22 
    23  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
    24  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    25  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
    26  License for more details.
    27 
    28  You should have received a copy of the GNU Lesser General Public
    29  License along with MySQL++; if not, write to the Free Software
    30  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
    31  USA
    32 ***********************************************************************/
    33 
    34 #if !defined(MYSQLPP_OPTIONS_H)
    35 #define MYSQLPP_OPTIONS_H
    36 
    37 #include "common.h"
    38 
    39 #include <deque>
    40 #include <string>
    41 
    42 
    43 namespace mysqlpp {
    44 
    45 #if !defined(DOXYGEN_IGNORE)
    46 class DBDriver;
    47 #endif
    48 
    49 
    51 // Classes
    52 
    57 class MYSQLPP_EXPORT Option
    58 {
    59 public:
    61  enum Error {
    66  err_disconnected
    67  };
    68 
    69  virtual ~Option() { }
    70  virtual Error set(DBDriver* dbd) = 0;
    71 };
    72 
    73 
    76 template <typename T>
    77 class MYSQLPP_EXPORT DataOption : public Option
    78 {
    79 public:
    80  typedef T ArgType;
    81 
    82 protected:
    83  DataOption(const T& arg) : arg_(arg) { }
    84  T arg_;
    85 };
    86 
    90 
    91 
    93 class MYSQLPP_EXPORT CompressOption : public Option
    94 {
    95 #if !defined(DOXYGEN_IGNORE)
    96 public:
    97  CompressOption() : Option() { }
    98 
    99 private:
    100  Error set(DBDriver* dbd);
    101 #endif
    102 };
    103 
    104 
    106 class MYSQLPP_EXPORT ConnectTimeoutOption : public IntegerOption
    107 {
    108 #if !defined(DOXYGEN_IGNORE)
    109 public:
    111 
    112 private:
    113  Error set(DBDriver* dbd);
    114 #endif
    115 };
    116 
    117 
    121 class MYSQLPP_EXPORT FoundRowsOption : public BooleanOption
    122 {
    123 #if !defined(DOXYGEN_IGNORE)
    124 public:
    125  FoundRowsOption(ArgType arg) : BooleanOption(arg) { }
    126 
    127 private:
    128  Error set(DBDriver* dbd);
    129 #endif
    130 };
    131 
    132 
    137 class MYSQLPP_EXPORT GuessConnectionOption : public Option
    138 {
    139 #if !defined(DOXYGEN_IGNORE)
    140 public:
    141  GuessConnectionOption() : Option() { }
    142 
    143 private:
    144  Error set(DBDriver* dbd);
    145 #endif
    146 };
    147 
    148 
    150 class MYSQLPP_EXPORT IgnoreSpaceOption : public BooleanOption
    151 {
    152 #if !defined(DOXYGEN_IGNORE)
    153 public:
    154  IgnoreSpaceOption(ArgType arg) : BooleanOption(arg) { }
    155 
    156 private:
    157  Error set(DBDriver* dbd);
    158 #endif
    159 };
    160 
    161 
    163 class MYSQLPP_EXPORT InitCommandOption : public StringOption
    164 {
    165 #if !defined(DOXYGEN_IGNORE)
    166 public:
    167  InitCommandOption(ArgType arg) : StringOption(arg) { }
    168 
    169 private:
    170  Error set(DBDriver* dbd);
    171 #endif
    172 };
    173 
    174 
    178 class MYSQLPP_EXPORT InteractiveOption : public BooleanOption
    179 {
    180 #if !defined(DOXYGEN_IGNORE)
    181 public:
    182  InteractiveOption(ArgType arg) : BooleanOption(arg) { }
    183 
    184 private:
    185  Error set(DBDriver* dbd);
    186 #endif
    187 };
    188 
    189 
    191 class MYSQLPP_EXPORT LocalFilesOption : public BooleanOption
    192 {
    193 #if !defined(DOXYGEN_IGNORE)
    194 public:
    195  LocalFilesOption(ArgType arg) : BooleanOption(arg) { }
    196 
    197 private:
    198  Error set(DBDriver* dbd);
    199 #endif
    200 };
    201 
    202 
    204 class MYSQLPP_EXPORT LocalInfileOption : public IntegerOption
    205 {
    206 #if !defined(DOXYGEN_IGNORE)
    207 public:
    208  LocalInfileOption(ArgType arg) : IntegerOption(arg) { }
    209 
    210 private:
    211  Error set(DBDriver* dbd);
    212 #endif
    213 };
    214 
    215 
    217 class MYSQLPP_EXPORT MultiResultsOption : public BooleanOption
    218 {
    219 #if !defined(DOXYGEN_IGNORE)
    220 public:
    222 
    223 private:
    224  Error set(DBDriver* dbd);
    225 #endif
    226 };
    227 
    228 
    230 class MYSQLPP_EXPORT MultiStatementsOption : public BooleanOption
    231 {
    232 #if !defined(DOXYGEN_IGNORE)
    233 public:
    235 
    236 private:
    237  Error set(DBDriver* dbd);
    238 #endif
    239 };
    240 
    241 
    243 class MYSQLPP_EXPORT NamedPipeOption : public Option
    244 {
    245 #if !defined(DOXYGEN_IGNORE)
    246 public:
    247  NamedPipeOption() : Option() { }
    248 
    249 private:
    250  Error set(DBDriver* dbd);
    251 #endif
    252 };
    253 
    254 
    256 class MYSQLPP_EXPORT NoSchemaOption : public BooleanOption
    257 {
    258 #if !defined(DOXYGEN_IGNORE)
    259 public:
    260  NoSchemaOption(ArgType arg) : BooleanOption(arg) { }
    261 
    262 private:
    263  Error set(DBDriver* dbd);
    264 #endif
    265 };
    266 
    267 
    268 #if MYSQL_VERSION_ID > 40000 // only in 4.0 +
    270 class MYSQLPP_EXPORT ProtocolOption : public IntegerOption
    271 {
    272 #if !defined(DOXYGEN_IGNORE)
    273 public:
    274  ProtocolOption(ArgType arg) : IntegerOption(arg) { }
    275 
    276 private:
    277  Error set(DBDriver* dbd);
    278 #endif
    279 };
    280 #endif
    281 
    282 
    284 class MYSQLPP_EXPORT ReadDefaultFileOption : public StringOption
    285 {
    286 #if !defined(DOXYGEN_IGNORE)
    287 public:
    289 
    290 private:
    291  Error set(DBDriver* dbd);
    292 #endif
    293 };
    294 
    295 
    297 class MYSQLPP_EXPORT ReadDefaultGroupOption : public StringOption
    298 {
    299 #if !defined(DOXYGEN_IGNORE)
    300 public:
    302 
    303 private:
    304  Error set(DBDriver* dbd);
    305 #endif
    306 };
    307 
    308 
    310 class MYSQLPP_EXPORT ReadTimeoutOption : public IntegerOption
    311 {
    312 #if !defined(DOXYGEN_IGNORE)
    313 public:
    314  ReadTimeoutOption(ArgType arg) : IntegerOption(arg) { }
    315 
    316 private:
    317  Error set(DBDriver* dbd);
    318 #endif
    319 };
    320 
    321 
    323 class MYSQLPP_EXPORT ReconnectOption : public BooleanOption
    324 {
    325 #if !defined(DOXYGEN_IGNORE)
    326 public:
    327  ReconnectOption(ArgType arg) : BooleanOption(arg) { }
    328 
    329 private:
    330  Error set(DBDriver* dbd);
    331 #endif
    332 };
    333 
    334 
    336 class MYSQLPP_EXPORT ReportDataTruncationOption : public BooleanOption
    337 {
    338 #if !defined(DOXYGEN_IGNORE)
    339 public:
    341 
    342 private:
    343  Error set(DBDriver* dbd);
    344 #endif
    345 };
    346 
    347 
    350 class MYSQLPP_EXPORT SecureAuthOption : public BooleanOption
    351 {
    352 #if !defined(DOXYGEN_IGNORE)
    353 public:
    354  SecureAuthOption(ArgType arg) : BooleanOption(arg) { }
    355 
    356 private:
    357  Error set(DBDriver* dbd);
    358 #endif
    359 };
    360 
    361 
    363 class MYSQLPP_EXPORT SetCharsetDirOption : public StringOption
    364 {
    365 #if !defined(DOXYGEN_IGNORE)
    366 public:
    368 
    369 private:
    370  Error set(DBDriver* dbd);
    371 #endif
    372 };
    373 
    374 
    376 class MYSQLPP_EXPORT SetCharsetNameOption : public StringOption
    377 {
    378 #if !defined(DOXYGEN_IGNORE)
    379 public:
    381 
    382 private:
    383  Error set(DBDriver* dbd);
    384 #endif
    385 };
    386 
    387 
    389 class MYSQLPP_EXPORT SetClientIpOption : public StringOption
    390 {
    391 #if !defined(DOXYGEN_IGNORE)
    392 public:
    393  SetClientIpOption(ArgType arg) : StringOption(arg) { }
    394 
    395 private:
    396  Error set(DBDriver* dbd);
    397 #endif
    398 };
    399 
    400 
    402 class MYSQLPP_EXPORT SharedMemoryBaseNameOption : public StringOption
    403 {
    404 #if !defined(DOXYGEN_IGNORE)
    405 public:
    407 
    408 private:
    409  Error set(DBDriver* dbd);
    410 #endif
    411 };
    412 
    413 
    415 class MYSQLPP_EXPORT SslOption : public Option
    416 {
    417 public:
    430  SslOption(const char* key = 0, const char* cert = 0,
    431  const char* ca = 0, const char* capath = 0,
    432  const char* cipher = 0)
    433  {
    434  if (key) key_.assign(key);
    435  if (cert) cert_.assign(cert);
    436  if (ca) ca_.assign(ca);
    437  if (capath) capath_.assign(capath);
    438  if (cipher) cipher_.assign(cipher);
    439  }
    440 
    441 private:
    442  std::string key_, cert_, ca_, capath_, cipher_;
    443  Error set(DBDriver* dbd);
    444 };
    445 
    446 
    448 class MYSQLPP_EXPORT UseEmbeddedConnectionOption : public Option
    449 {
    450 #if !defined(DOXYGEN_IGNORE)
    451 public:
    453 
    454 private:
    455  Error set(DBDriver* dbd);
    456 #endif
    457 };
    458 
    459 
    461 class MYSQLPP_EXPORT UseRemoteConnectionOption : public Option
    462 {
    463 #if !defined(DOXYGEN_IGNORE)
    464 public:
    466 
    467 private:
    468  Error set(DBDriver* dbd);
    469 #endif
    470 };
    471 
    472 
    474 class MYSQLPP_EXPORT WriteTimeoutOption : public IntegerOption
    475 {
    476 #if !defined(DOXYGEN_IGNORE)
    477 public:
    479 
    480 private:
    481  Error set(DBDriver* dbd);
    482 #endif
    483 };
    484 
    485 
    487 // Typedefs
    488 
    490 typedef std::deque<Option*> OptionList;
    491 
    493 typedef OptionList::const_iterator OptionListIt;
    494 
    495 } // end namespace mysqlpp
    496 
    497 #endif // !defined(MYSQLPP_OPTIONS_H)
    Enable data compression on the connection.
    Definition: options.h:94
    Change Connection::connect() default timeout.
    Definition: options.h:107
    Provides a thin abstraction layer over the underlying database client library.
    Definition: dbdriver.h:58
    Define abstract interface for all *Options that take a lone scalar as an argument.
    Definition: options.h:78
    T ArgType
    Alias for template param.
    Definition: options.h:80
    DataOption(const T &arg)
    Construct object.
    Definition: options.h:83
    T arg_
    The argument value.
    Definition: options.h:84
    Make Query::affected_rows() return number of matched rows.
    Definition: options.h:122
    Allow C API to guess what kind of connection to use.
    Definition: options.h:138
    Allow spaces after function names in queries.
    Definition: options.h:151
    Give SQL executed on connect.
    Definition: options.h:164
    Assert that this is an interactive program.
    Definition: options.h:179
    Enable LOAD DATA LOCAL statement.
    Definition: options.h:192
    Enable LOAD LOCAL INFILE statement.
    Definition: options.h:205
    Enable multiple result sets in a reply.
    Definition: options.h:218
    Enable multiple queries in a request to the server.
    Definition: options.h:231
    Suggest use of named pipes.
    Definition: options.h:244
    Disable db.tbl.col syntax in queries.
    Definition: options.h:257
    Define abstract interface for all *Option subclasses.
    Definition: options.h:58
    virtual Error set(DBDriver *dbd)=0
    Apply option.
    virtual ~Option()
    Destroy object.
    Definition: options.h:69
    Error
    Types of option setting errors we can diagnose.
    Definition: options.h:61
    @ err_api_reject
    underlying C API returned error when setting option
    Definition: options.h:64
    @ err_NONE
    option was set successfully
    Definition: options.h:62
    @ err_api_limit
    option not supported by underlying C API
    Definition: options.h:63
    @ err_connected
    can't set the given option while connected
    Definition: options.h:65
    Override use of my.cnf.
    Definition: options.h:285
    Override use of my.cnf.
    Definition: options.h:298
    Set timeout for IPC data reads.
    Definition: options.h:311
    Enable automatic reconnection to server.
    Definition: options.h:324
    Set reporting of data truncation errors.
    Definition: options.h:337
    Enforce use of secure authentication, refusing connection if not available.
    Definition: options.h:351
    Give path to charset definition files.
    Definition: options.h:364
    Give name of default charset.
    Definition: options.h:377
    Fake client IP address when connecting to embedded server.
    Definition: options.h:390
    Set name of shmem segment for IPC.
    Definition: options.h:403
    Specialized option for handling SSL parameters.
    Definition: options.h:416
    SslOption(const char *key=0, const char *cert=0, const char *ca=0, const char *capath=0, const char *cipher=0)
    Create a set of SSL connection option parameters.
    Definition: options.h:430
    Connect to embedded server in preference to remote server.
    Definition: options.h:449
    Connect to remote server in preference to embedded server.
    Definition: options.h:462
    Set timeout for IPC data reads.
    Definition: options.h:475
    This file includes top-level definitions for use both internal to the library, and outside it....
    std::deque< Option * > OptionList
    The data type of the list of connection options.
    Definition: options.h:490
    OptionList::const_iterator OptionListIt
    Primary iterator type into List.
    Definition: options.h:493
    mysql++-3.3.0/doc/html/refman/inherit_graph_26.png000644 000765 000024 00000006321 14042362133 022434 0ustar00tangentstaff000000 000000 ‰PNG  IHDR˜%¾– ŠsRGB®Îé ‹IDATxíœ ÐÎÕÇ%‰*i³%Qm*KR bl™šA…(Ñ&QCÍ´ ¦²²/)C–VTd§D*i¥-nçsþÝçŸÇïñ.=Þ¼½¿3ó¼ÏýÝß]ν÷,ßsîC!§$1Å;ppv`]áƒ3nx,þÄ{kX±b…'¾×&Y00éׯBâ=ȱ ´mÛVTÀ’Ìv’€%½‰âÈÀÄ–MŒ‡H¿±€¥ß›øMv hÆÈèŸ|ò‰wÜqr 'üãq7oÞ,«W¯NŒsôÑG˹çž+Å‹OÔ¥~ûí7yã7äÒK/•Ò¥KËÚµkeÑ¢ERªT)iÖ¬™”,Y2µKž<¯[·NŠ)"åÊ•“wÞy'1gåÊ•åŒ3ÎH<§víÚ%~ø¡Ô«W/õUž<rlðàÁ2oÞ¼Œ,~Ú´iÒ»wo;å¹çž“ªU«Ê_|‘vü[n¹E^~ùeùóÏ?å‰'žk¯½VV­Z%kÖ¬‘«¯¾Z^z饴}súâ¼óγy²Óoܸq2qâDY¿~½¦YÏÛo¿-wß}·\vÙe²oß¾Èa~þùgyóÍ7#ßQ¹lÙ2éÔ©SÚ÷ÿøES>øàƒN£È°j¿ò+¯¼âÚµkçêÔ©ãjÔ¨ážyæwæ™gºSO=Õé‚­¿ŒõÛ½{·«U«–ûþûï]¯^½Ü‰'žhÏ}ô‘½òÉ'ÝÉ'Ÿì5jäš4iâÔz¹:¸Ñ£G»áÇ»n¸ÁÚWªTÉ©°XŸÚµk;§šìZ¶léTC­þŠ+®p6lH*?ýôÓ®M›6VçÿœrÊ)nêÔ©NÄÝÿý6?c¾÷Þ{îÕW_uj©\ÅŠÝܹsÝ‘Gé¶mÛæ»ºüÑ 0ÀžÕªÙúË”)ãô€Üï¿ÿîFåú÷ïoï¿ýö[× A+_|ñÅîŽ;îpåË—w 6t?ýô“ëÖ­›¥Xw/t|ë­·lŽš5kÚX=ö˜[²d‰c žöîÝëÔ"»?þØ}õÕWîòË/wj© ûòË/ÝÆ]‹-¬yÕ«WwGq„{àÜöíÛ]ëÖ­ÝñÇïš6mšX;<ß{ï½VççúVÁwcÇŽ _%§)²#­º9‚ePáºuëÊwÞ)Æ “ë®»Î,„–¨€ØPzHR¬X1sS³fÍ2Kpã7м0ÎC=dm»wïnnI2ÁÂ7ß|#³gÏ–ñãÇ Ví¾ûî³wË—/=TÑ •ï¾ûNºð î+,oÚ´ÉæÐÃæAÓ/¹äs&LéÓ§‹ ª}š7o.]t‘<úè£Æ_•*UÌ%Ùú‡y=XF4Μ9òÁÈ‚ DPàRx+cuXÛÂ… å‡~×_]TX¤páÂ2räÈH^à³k×®¢J&Ï>ûl’«g¬I“& üßzë­‚ëWE–§žzJT8dñâÅÆ+{Ïž=f}a$ŠAƒ‰ °Üu×]vŽð Ü~ûí þU°åᇶçœüÉ•‹ÄŸ«6ˆj¨a_þúë¯åÊ+¯”Ï>ûLT›ìðZµjenIµÉ^xá…lô«_¿¾¨†Éi§¶߸§ÓO?]cçÎ ×ÆÂÕJÇŽ†°zÜ–áiƌƋZÃUGu”)‰Zs5à+^­•~øáv`(Ư¿þºOT Ø®Z%A¡ºtébÙX+ *$jl¸³-[¶¿¢àR%AËABa´öAP¹ãe­›4—‰Äg8~^”ó€‘ÕçòÐ%ëÓ§%CýfaA°dàý]"nAÄE‘¡Çò!ˆÜÝaݸ8G(!¹d¶ý‡çHîòó¢e,Q-Ã$\Ó®ëÉ…;.œÌ*äÇyXÿ2dˆ¥04h`ý¹Cbp, õüêŒ:ÂJÑÁ$ÓŽûÄíB©Yr¬,¸ †@?ÿüóYZØtóþÛõ…ˆR<ü å;?Ø*LqxÞqK¸S3•¸†"·ER‘ ƒ r‘Òl{äQcÑ‹Š¥#¬+Ê*xéÚ*õ¸}°¤¿"T¾Öý?ñt¨p™ >¢„‹a”í÷¿ ¿D§œŠàtãÐ6«ö¸ùÿ å;ù_Ùø‚²ŽXÀ ÊIÿKëŒì_Úø3mxÁuˆ.<þÄ{kHý¿)’¢È£UñBójâÿ€.¯vº Îc°‚zòy´îXÀòh£ ê4Í´ÔéÝIEND®B`‚mysql++-3.3.0/doc/html/refman/inherit_graph_32.png000644 000765 000024 00000006714 14042362133 022437 0ustar00tangentstaff000000 000000 ‰PNG  IHDR0%Jõ"8bKGDÿÿÿ ½§“ IDATxœíLSWÇo ´½4-´´@™`P¶2”M¥@—€Ë˜a™›DtÎmbä…Ä2ÉœL 8Œ3Ó@' %ˆÓ„ˆ@q¤0 È!R~9ùÕ •ÒÒÞóþqÞÜ·ë/ ¢tï{?á{Ÿžó<ÏyÎýÒ{Î-…@¬òb'@@@ð_AX„ ¬BV„­îÉÄÄDÿb¥²°0™Lww÷ÅÎâ?dgg‹ÅâÅ΂À9xðàÚµkñÓ¿½CNOOŒŒ¼ò”ž‰‰‰‰‰‰ÅÎ⿈ÅâÆÆÆÅ΂Àê(--Õ{ ´5l$^U>/‹¶¶¶ÅNAŸ5kÖ”””,vÖ‰DÒ³kH+‚$A’€ÀŠ I@`E¼tA^¾|¹¬¬ìeG!˜•gÏžÅÇÇ+•Ê…rxùòå-[¶lܸñÛo¿•H$ ågll,55uÓ¦MÁÁÁqqqR©tÁCŒŽŽÆÇÇ«Tª÷áÎÎΣG†„„P(‹uæÌ`ÁÜýõ×_ßÿýòå˽¼¼ÒÓÓ¥R©¡ç¢¢"{{û™™£q³²²ø|>~š’’«×ÛÛ ‘‘‘‡Ö«Õj;::0 ƒ9‡Ã)**Ò¤^w£ce¬­­5šÛãÇ¿ùæ>Ÿïë뛕•5<=000ëÜååååççÇÆÆ^ºtiçÎááá†Úðõõe0UUUº‚>nÆhFÓÕÕÕÐЀo±âÌuîLÙ•Jåýû÷=z¤74èí÷ß5Oݸ?Ƶ488hèÖ£c1Ä’ËÒCAÎçƒ$É×××Юû8•Ëår¹ÜñF§ÓÍ„˜«Vy¬Zå!m‹••I*+ï¿ ÃW†\.oooÏÍÍýá‡tí¦ Èb±X,–‡F¿QÁò¯Y°±±ñññÁwžt™ëÜÁM,Ch4\òâèèøÎ;ïX’§n\>Ÿ»¹¹YÒÝèX 15„¹²0^þqÉ$¡Ð[(ôÎȈšœœ^ìt,¢¯¯oÿþýûö틈ˆ˜SGooo6›Ÿ2 ÃKÙ¨‘àÕó*H;;6{–¦Y þþþMMMóè(‰ôüܺuËй¡‘àÕCüùA’€ÀŠ I@`E‚$ °"Œlê [ô©KkF¥RQ©ÔÅÎâo ¿ÜOÌü`D>|õy,8>}e466FGG/vÖ ÿ’€Àj ÖV!H+‚$A’€ÀŠø7õÿ´žcØU]IEND®B`‚mysql++-3.3.0/doc/html/refman/common_8h.html000644 000765 000024 00000014002 14042362133 021344 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: common.h File Reference
    MySQL++  3.3.0
    common.h File Reference

    This file includes top-level definitions for use both internal to the library, and outside it. Contrast mysql++.h. More...

    #include <mysql.h>

    Go to the source code of this file.

    Macros

    #define MYSQLPP_UTF8_CS   "utf8"
     Use this macro in CREATE TABLE strings to get the best available UTF-8 character set and correpsonding collation. More...
     
    #define MYSQLPP_UTF8_COL   "utf8_general_ci"
     Use this macro in CREATE TABLE strings to get a matching collation to the character set selected by MYSQLPP_UTF8_CS.
     

    Detailed Description

    This file includes top-level definitions for use both internal to the library, and outside it. Contrast mysql++.h.

    This file mostly takes care of platform differences.

    Macro Definition Documentation

    ◆ MYSQLPP_UTF8_CS

    #define MYSQLPP_UTF8_CS   "utf8"

    Use this macro in CREATE TABLE strings to get the best available UTF-8 character set and correpsonding collation.

    MySQL++ is built against a version of MySQL or MariaDB older than 5.5, so we must use the legacy 3-byte-limited subset of UTF-8.

    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ssqlsxlat_1_1CommandLine-members.html000644 000765 000024 00000031056 14042362133 031036 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
    MySQL++  3.3.0
    mysqlpp::ssqlsxlat::CommandLine Member List

    This is the complete list of members for mysqlpp::ssqlsxlat::CommandLine, including all inherited members.

    ArgumentList typedefmysqlpp::CommandLineBase
    ArgumentListIt typedefmysqlpp::CommandLineBase
    CommandLine(int argc, char *const argv[])mysqlpp::ssqlsxlat::CommandLine
    CommandLineBase(int argc, char *const argv[], const char *opts)mysqlpp::CommandLineBaseinlineprotected
    extra_args() constmysqlpp::CommandLineBaseinline
    finish_parse()mysqlpp::CommandLineBaseprotected
    input() constmysqlpp::ssqlsxlat::CommandLineinline
    input_source() constmysqlpp::ssqlsxlat::CommandLineinline
    operator void *() constmysqlpp::CommandLineBaseinline
    option_argument() constmysqlpp::CommandLineBaseprotected
    option_index() constmysqlpp::CommandLineBaseprotected
    output() constmysqlpp::ssqlsxlat::CommandLineinline
    output_sink() constmysqlpp::ssqlsxlat::CommandLineinline
    parse_error(const char *message=0)mysqlpp::CommandLineBaseprotected
    parse_next() constmysqlpp::CommandLineBaseprotected
    pass() constmysqlpp::ssqlsxlat::CommandLineinline
    print_usage() constmysqlpp::ssqlsxlat::CommandLinevirtual
    program_name() constmysqlpp::CommandLineBaseinlineprotected
    server() constmysqlpp::ssqlsxlat::CommandLineinline
    SourceSink enum namemysqlpp::ssqlsxlat::CommandLine
    ss_ssqls1 enum valuemysqlpp::ssqlsxlat::CommandLine
    ss_ssqls2 enum valuemysqlpp::ssqlsxlat::CommandLine
    ss_table enum valuemysqlpp::ssqlsxlat::CommandLine
    ss_unknown enum valuemysqlpp::ssqlsxlat::CommandLine
    successful() constmysqlpp::CommandLineBaseinlineprotected
    user() constmysqlpp::ssqlsxlat::CommandLineinline
    ~CommandLineBase()mysqlpp::CommandLineBaseinlineprotectedvirtual
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1String-members.html000644 000765 000024 00000053770 14042362133 025506 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
    MySQL++  3.3.0
    mysqlpp::String Member List

    This is the complete list of members for mysqlpp::String, including all inherited members.

    assign(const char *str, size_type len, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)mysqlpp::Stringinline
    assign(const std::string &str, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)mysqlpp::Stringinline
    assign(const char *str, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)mysqlpp::Stringinline
    at(size_type pos) constmysqlpp::String
    begin() constmysqlpp::Stringinline
    c_str() constmysqlpp::Stringinline
    compare(const String &other) constmysqlpp::String
    compare(const std::string &other) constmysqlpp::String
    compare(size_type pos, size_type num, std::string &other) constmysqlpp::String
    compare(const char *other) constmysqlpp::String
    compare(size_type pos, size_type num, const char *other) constmysqlpp::String
    const_iterator typedefmysqlpp::String
    conv(Type) constmysqlpp::Stringinline
    conv(Null< T, B >) constmysqlpp::Stringinline
    data() constmysqlpp::String
    empty() constmysqlpp::Stringinline
    end() constmysqlpp::String
    escape_q() constmysqlpp::String
    is_null() constmysqlpp::String
    it_is_null()mysqlpp::String
    iterator typedefmysqlpp::String
    length() constmysqlpp::String
    max_size() constmysqlpp::Stringinline
    operator bool() constmysqlpp::Stringinline
    operator const char *() constmysqlpp::Stringinline
    operator Date() constmysqlpp::Stringinline
    operator DateTime() constmysqlpp::Stringinline
    operator double() constmysqlpp::Stringinline
    operator float() constmysqlpp::Stringinline
    operator int() constmysqlpp::Stringinline
    operator long int() constmysqlpp::Stringinline
    operator longlong() constmysqlpp::Stringinline
    operator Null< T, B >() constmysqlpp::Stringinline
    operator short int() constmysqlpp::Stringinline
    operator signed char() constmysqlpp::Stringinline
    operator Time() constmysqlpp::Stringinline
    operator ulonglong() constmysqlpp::Stringinline
    operator unsigned char() constmysqlpp::Stringinline
    operator unsigned int() constmysqlpp::Stringinline
    operator unsigned long int() constmysqlpp::Stringinline
    operator unsigned short int() constmysqlpp::Stringinline
    operator!=(const T &rhs) constmysqlpp::Stringinline
    operator!=(const mysqlpp::null_type &) constmysqlpp::Stringinline
    operator=(const std::string &rhs)mysqlpp::Stringinline
    operator=(const char *str)mysqlpp::Stringinline
    operator=(const String &other)mysqlpp::Stringinline
    operator==(const T &rhs) constmysqlpp::Stringinline
    operator==(const mysqlpp::null_type &) constmysqlpp::Stringinline
    operator[](size_type pos) constmysqlpp::Stringinline
    quote_q() constmysqlpp::String
    size() constmysqlpp::Stringinline
    size_type typedefmysqlpp::String
    SQLTypeAdapter (defined in mysqlpp::String)mysqlpp::Stringfriend
    String()mysqlpp::Stringinline
    String(const String &other)mysqlpp::Stringinline
    String(const char *str, size_type len, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)mysqlpp::Stringinlineexplicit
    String(const std::string &str, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)mysqlpp::Stringinlineexplicit
    String(const char *str, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)mysqlpp::Stringinlineexplicit
    strip_leading_blanks(std::string &s) constmysqlpp::Stringinline
    to_string(std::string &s) constmysqlpp::String
    type() constmysqlpp::Stringinline
    value_type typedefmysqlpp::String
    ~String()mysqlpp::Stringinline
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1examples_1_1CommandLine__inherit__graph.png000644 000765 000024 00000012135 14042362133 032204 0ustar00tangentstaff000000 000000 ‰PNG  IHDR›\yŒÇ€sRGB®ÎéIDATxí ¼ÅÇ\Q–,i±$*D„´H´‘áS‘H‹¥PQYR(…T²$)Ң앥ˆì[¨ìKR’R¡-ËùÏ÷é?Ç{Ï}ï½ç÷¸ç^ó|>ï9sæ™wæ™ß<Ï3ϼ÷>Y†Ä‘ã@ì90û¬tïÞ=XÀ%¢á@Ñ¢E%lNFÃIW'*8°EÅ6W)8°EÃ5W'*$²Ù¢j!+­X±BÎ<óL9ûì³Ó¤åƒÊÔ©Så§Ÿ~’ë®»NÊ•+—&íÆ¢‘ùóçK™2edÛ¶m’%K)]ºtð1{÷î•eË–IõêÕƒyá$Ö®]«c§ì)§œ"W_}µäÈ‘#œªi^&î$ÛË/¿,_}õUš ô×_•jÕªÉ;ï¼#ÿüó 4H'‹‰‹GêÚµ«¬_¿^ûKŸ½´{÷n™6mš7+¬ôàÁƒ¥wïÞ²xñb­_¹rey÷Ýwê›Ö…"ÛÇ,5:]¶lY8p \rÉ%R²dIae>÷Üsòꫯj?÷ïß/åË——;vHûöíåœsÎÑßß~û­Þýõ×å¼óΓ믿^j×®-+W® Žf7mÚTË/^\&Nœ¨÷.¿üriÙ²¥*TH4h ûöíÓü›nºI6nܘ(ݹsg©Y³¦|úé§BúÍ7ß”¶mÛ ÒóСCÒ¢E )X° J“9sæh]V~ëÖ­åÜsÏÕû­ZµÒg5kÖL8Ù{â‰'äÁÔñÒ6‹ƒ1\yå•òçŸÊ‘#Gäá‡Ö±ô¹sçj»ÔãÙ%J”‹/¾X¾ùæÍïׯŸ0>Úbq$GÕ«WëmúH{Hê±ëƒÆ§Òð /”¡C‡jHônݺ)讹æY°`Þ0`€–gþ%Ä\5lØPµ s²sçN7 qÂÿE‹iÙH?"Û_ý%Ÿ}ö™À$Ü¡CØwÞ©“Y©R%ùàƒ´3fÌPѽfÍ™2eŠ2 õïß_h e}ôQUu8TF•|ñÅ2zôhPÀ-_¾\òçÏ/–É¥]èŠ+®\¹r%J÷ÝwrÕUWižý €`úôé²dÉÁÝsÏ=÷H—.]´È÷ß/,’ &Èû￯qæÌ™ú{Ó¦M²uëVÊØ±ciCÿ?ÿüsÉž=»ò…E±jÕ*Uy<ð@ÐD=¤ Ï…GC† Ñ1²8Y°÷ÝwŸJ5ÛÏÐoÀ†J„6lØ ‹Œ8xþáÇ……ÁîÓ§<ýôÓ²nÝ:-›4i"uêÔ‘aÆÉC=¤õxöøñã…±0~ž1bÄÉ;·Ö=ãŒ3tܨï1cÆè‚¯_¿¾p=zTÛŽä#*› »Iܼy³üøãšÞµk—¼òÊ+‚„a`0Æ3¹H½_~ùEž|òI©W¯ž´iÓF'†6®½öZí/«1”(‹ÝÂEÝŸþY‹´k×N .,Í›7W°ñ ¯oЦ³e˦À m—߀”úØp\Løï¿ÿ®E™4$7Ò )ÊʧVòÜ}÷ÝR¡B©X±¢àOBÂW­ZUﳘ–#GŽ@úÇO»H6$`c1âD¿å–[´ “aÏuìØQŠ+¦’mË–-ðN;í4ùᇴ ´ÈÂ… 5 o‘R,f$U¯^½`óæÍÓzHzæû\pôìÙSŠ)"ðI†ï©†æÊ›7¯•¹G"GBK6‡aPÖ¬Y¥@š¶ŸuëÖU Mš4IÁ†¸g`H¤GyDW b–üŒÖ|ùòÙÛòï¿ÿª$#Ãæ“‡tIŽy¨ýÀX—•k É`WkJã£|J÷?ùäª-Ô˜Gb@ ªš~ûí7UWši>¼Þv›—Üwh[ð“  áBZ_zé¥ZoLÔ?ê•y¡|•*U­ƒ†Ê™3§–½ýöÛU¢£Y0oÜ”eáÚ¶_žK—.U‰$ØF“'OV{‹<Àl ›FÂb¯Yu‚: ä#a:íÐ$eZì€1ât=Tê§ô<`Œ˜hk“1ú…]i/òR"$ãÇ$yì±ÇTj²½ÄÂÄæfN°»!& EªÑW4›)lægžyFyƒäÅL@5#Õ1/Òlˆw&"®Y]P­ZµTÒ±­oܸ±Úy]t‘ª"TF«]©”·í zK•*¥+ ›‚|ÀÇfÎÁX{Änl KY¾Q‰¨lÁYg%ؘ¨8Úa¢`rjdûåWŽ{\Œ™‰ºì²ËÔ”@zaã†eQ¿û¨9¤ }±Ï`“ì…-éGö¹Œ »~žþù*ý±c¹Ïæ-„z§/l”n¸áí ¸oß¾jJ°ÙA²¡î1 ‚lv˜OÚ¤[ÔOùõ/QžAsL§FDG›0«$`v‹c›0+5` ç€1Bƒy$Œ‘¯yfp³Ú‚÷^xá…€YYíÛ·öìÙÌ7*(`VlÀHÃ`^j Ѐ¢Ö -K;ÞöCïGóÛH†€²V¥íÐ1‡¶ilÁ`|›ÞÛÃ¢Ú $BkÈv€Ø ŸÕf‰•…d %¯Ýz߬ÆP¢-¯½z?ô·]•¡ùüޤ¿ú~yìŠíÎØ+±ýÊ’—êÛ¶=kmZ›—Ü·—¨I.ˆ¾ãž %6ÇCi6Ä8v§‘nïÄ<þøã¾ÕQK«Ž2ÒlØ‘ ¶…®F¶ñ~”š$ô«ãòâƒ1ÙÆÇÐ\/âŽ^ nÖ¬Yü¥•»RàAöìg làx”,†Œ¯Ñ ¯Ä\ænÜ-ˆxêP×®ŒkcŽñ n3.‹BñÔµ¸ï‹S£NÑØ±KÌ®-›9³ý:š®¸[X´èãÙ¯þ5Ê-ÖiQ¶8öÑG‹Í±ÎG@û÷2ožüAmWÔ-L >|ÔœÅ.Ö8pÈœ3.³¶+ØÂÄÁ¬YëŒ3ù»Ž9jÞõúÆm¨ÂäŸ[Œ9r‘yâ`’sçú')è2œd Øg3g®M"Åöí;(}Ý+Òá<7³•9¦2ÛÈÒp<Ó¦­2/<&=5/E˜×ÙW™;¤áÓ2oSlaÌí¢EÍ‹‰ÿšwËôx6ÍFaÓ¦c¯~‡ÑÜI[$ ç 'íèÃ8ÌÚkk×þ&:5oü¶ÑÚ YÍ»ÿ§„ÙÒI]lxš¿õ‘Ù™5kó‡ÿ½£Ÿ;w³+=ö;3Ž7Vcrj4BΚ·£Í+Öÿ½þaÕ“¾¸[„Àè@­:Šœl‘óÌÕˆ’lQ2ÎU‹œlòÌÙl2ÌSÜÍÃŒp’Îf ‡KþeØüùârcÀ¶0Õ5éÏ6¾¸ÜpÀ-LuMúsÀÍŸ/.7p`‹©¸>¸Eζy†ëý'!Óþ_Ü-:¾¹ZQpÀ-B¦¹„æ)îÀæaF8Iw‚—üË8°ùóÅ寀l2Õ©Ñæ)îÀæaF8I§FÃá’6¾¸ÜpÀ-LuMúsÀÍŸ/Éæ:›-YÖ¤zÃ-U%.àl¶Äüˆä—[$ÜreÞÿ°›ÖiZ‡¿yËTW–, „„Ó3՘왨i o{‰ÿóñÁ6iíMl)â_ÚèpIK¸œxá‘ ¸KÌ­X‘S£±â¬k7 Ø’°ÄeÄŠl±â¬k7 2=؈%ä5 â<#3Œgz°½øâ‹n:Îñ”b÷2Ã`ºÿ¶6mÚhÌõ ˆü;wî\äK˜èŽ;ʽ÷Þ«‘~Mp\ùðÃ5HÃÄ6-]º´†—&Š;ª¯¿þZÛY¿~½¼ýöÛÁI¤Úá´ãòåËuÜO=õ”Žå7ÞÐðÚʇ_Df~ë­·4 u54J4§7^¨íG´ßé.ÙÍ}ðàAyþùç…øêû÷ï׉p&°† ž3gŽŽieBŸËàÁƒ`:tÐâÄu/W®œ¦ï¿ÿþ ðl[éñ`<a¤óæÍ›ˆ¬J |$œ4àèܹ³ìܹSÚ·o/_~ù¥2ÜÕ%À®ÙHͨ:žP‹Ø<~xóCëSžûôaïÞ½ªÆè”#GŽD߬[·næÿðþ#åË—×{ö#¥±RÆöǯ/&î¼þ{|žÙаaC.Ož<Ò¯_?Õ öYñö`K‰)Äw¯^½ºôïß_¥¿YŨ[l–&Mš¨Ä©R¥ŠÚ2´…”ó#$pkÖ¬©iì0T'ÀX¹r¥>ƒ¶IC6ÄB5UªTI7n,»wïVµŒº=z´fµÉÀ.¬]»¶4oÞ\˘3m+œ¿>ÚzHLâÉcÃ"Ѱa11yŽ]ˆtEúBœÞ ñ ÆÂ8Ò›Ò}ƒ„*ŪU«–þF¢téÒE'têÔIÕ6*ãÈ‘Äq l;3gÎTûnß¾}Ò·o_•PÙ³g—V­Zéd ¢Õ† ´ÍI“&éöIl&Bzr‡C-£þ™T6·Þz«ôèÑCíÈB… )xJ”\mî×­[Wzõê¥}Ùµk—`;–,YR°%Y`Œû®»îÒ*C‡•Š+ª™ÁF‹ÅJÙô¤˜þkzV¢9Œ?î³Ñ5kÖ¨ïÝ]²RQ+H;Q0rûöí’+W.µŸ%Ôm£F´Ú{Þo6ØžV}³ƒÝ¼y³ö)µgxÛñ¦á%vÒ1¢øÿ×ôìÀFŽ)­[·NÄv£E‹M”Ç&!%'®µë¼™ p')!!A7Þú~iúÇÙo¿r~y~}ô– uaúâÅ‹{‹Äe:î%f†N€Â6Ú¶m›¾©P¢D‰D FÍౄºe' X,¡v@Ö(·ùiýz ØsÒØÏGm³‘ðë£-ëï!Ù’×±]˜í£C†ªÄ¡:eÊ þ±¶mÛjÚ6ëyÊ 4òPm±ÏÁÙËF)MŸ½„ýh74~}ô–ÍèécË<Û ãÃÞÒìÙ³õ€ w~c›±KDj¤æ½Ç ÏÄs*׿jÕªê %ݳgOu-ø à$FBâÈe³ÁÉD©R¥dìØ±z±{Ä_˜!¡Ù9BôãŒ3ÔDÀÑ  cÆ6Ãf£)î%›S7nÜ(eË–Mt‹d™2edÙ²e²nÝ:õ9±{µ›ŠÔ¼÷HKÔ»M@‡ï®OŸ>* ÙI&w*@=œ¼¨!€>qâDU—Ç—víÚ©WË–-‰úêýØìiåØT°sĵ©@ä÷;O[ÞÛNFHgHɆ Ǥø'uêÔQÏ>vÜ„ ‚¶RjÞ{|o¸8[Äe…É„G‡3§øÂðÍY¢]œµ°ø *èIe^8Ä®š3îÞ˜e·Í9(¶&;Pˆ '^»/œ¶ã¡L†”lìÆ¬óÓ2‘CóQ£Féyí5$ƒuª¦æ½Oé~J§Ö¦ÄäYlpyXÂî —BÛpØšl”¸Ö¡›¡pÛNïrl7Þx£ž9Zu€üÊ•+«ÊdxÓ±Ûìôñ0;’SN3°ýöìÙ£>9N),aw᫳—ÍOîÛ‘sYÎ_9fLÔ͈”!Õ(Îb<åxö±yp°YÀ)ËÑÀÃFÕá(M¼NáвÜãB¢„s*@YÔ/‡à+!íØ$ñò—%Nüˆò\Œ‰EÔ̼ÀXÙìp^œ)îýl)1•ÅkHØW¡n Ô‡ÓV-¥ÔN¸÷"=ÀÖc7i=ýá>ǯ 5ÊXcA'ÂÏ–!%›e6+?Ô›nïá²Hk¸¼ö;¥g¤…ú¶íZ®ŒLÒfËÈ ?™ûîÀv2Ïþ »Û føIý8cdÇŒ2ãÿú0`áMÈLy·J̰`ÓÝèI½ŠÝàC90Ü©ÑP–¸ß1ã€[ÌXëå€[(GÜï˜qà ƒxVÏfàIEND®B`‚mysql++-3.3.0/doc/html/refman/folderopen.png000644 000765 000024 00000001125 14042362133 021434 0ustar00tangentstaff000000 000000 ‰PNG  IHDRÚ}\ˆIDATxí]?oÓPÿ9iš4i°;ii“¶‰ZЉ‘‰ÀÀ7`bèÔÙ¬Øù,HìU'ô$*Tµ]‚T¡DPÚÄ6wÏ}‰;¡C; a¿ÓߟûÝïîž¼jAÀ­InSþ}€9H“ÓŽ|?íÁ÷ =_ÊÆŠ­†¥Àue*;¯YEäsYäæB¢Ÿ¿þÄ—£sÙ½½ÙŒ† É«›©ÀYÇq !GÇ¿v̇¹ÑØ®š °Œ‚ÔF¹}q¥b]÷7í·0)Úd›¾ÿð-èº}Pfä£ÖY{4™ÑÂ@}úæôñ2ÛüÔ—ñúåNŒI‚ÁǃcçÁº%£¬UаI³mc±ô˜å¼ÔÆüÈ>é¸xþt9Æ$µý OæVE*õU´Ì‚ç#ž×ˆ•ïûr@l$øPÿrHaaÇ¥ ²›dZ®rè‘ãqI„o¼øT\Ž,tªj2FAxv-LŸp׌p TÄI/ \¥sfí½; jViTƒèú¤o^cpÅü¼ûû»Ïb]”€¢¤<†aþÕœ²“ßÓ˜y“£§9:Œîù+À³€ñà,E žf³6éNˆÄE£KU}Ü^;¶ØnZ¢uß­US4— ѬëbížN¶.Úk¦ØjTÄöº%µªâ i¯VÄÊÝò§™ Èù¸)ùÿG€™òºJ@T x”IEND®B`‚mysql++-3.3.0/doc/html/refman/inherits.html000644 000765 000024 00000070706 14042362133 021317 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Hierarchy
    MySQL++  3.3.0
    Class Hierarchy
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Query__inherit__graph.png000644 000765 000024 00000014566 14042362133 026736 0ustar00tangentstaff000000 000000 ‰PNG  IHDRòRnt‰JsRGB®Îé0IDATxíœTEÒÀK‚d¤€Å$(ŠdTê **È‚ø©žœN<=QŠ"~zd1œá Ї€(A8‚d$ç̲WÿZßð˜Yvvgwgv»~¿™yÓ¯»º_…®êêðÎITŽŽñL„\ñÜz×vGG$ 8Ev’à( (à90Ñ=‚£@? öíÛ' .ô'¹k®¼òJ)V¬˜/%òËÿüç?ríµ×F^ЕpðQà믿–FRÎñ»Ö¯_/ľ.¾øâ@w‘D 6HBB‚T¬X1]$ùÛßþ&»wï~8 ¤…Ï=÷œœ{î¹Âïoà‚]%ܯ£@N:IݺueæÌ™òóÏ?›à¿gÏžròäISøÎ;¼Ù³g[½Lû<úè£R®\9éÒ¥‹tëÖͬÁC=dÑzË_&L0A¤óºüòËåµ×^“jժɥ—^j–¦_¿~‚â't‚/Átãþ°aä|ùòrã7 üúé§ŸH6xçwäÁ´òDãÿõ¯YzíÚµ¥k×®F›Ö­[ËáÇ-=ŸyæiÒ¤‰|ùå—2`À;v¬Œ=ÚxtìØ1 …Ë//¿üò‹ìÙ³GNœ8a<)Q¢„T¯^]¾ù櫞=ùä“f±‘+: àÿø‡\vÙeF—áÇ[šÿ <(¶ÿ³iÓ&{Ö_ýÕdíꫯ:"¦rªV­*]t‘¼øâ‹†&”\-^¼Xî¸ãiÞ¼¹”.]Úä/ôíÛW>ûì3Á+àYBÉöÚµkwÞy§ÑY¾ÿþ{Á[¸à‚ L†-1¯ˆùŸÿü§.\XV¬X!%K–”?üP^~ùe¹âŠ+¤W¯^2pà@kääÉ“eûöíæ@(Ü. ~ýú‚ûƒáVÍŸ?ßægß|óMSºÏ?ÿ\°æÙßÿþwy饗$W®\2jÔ(c$mÀ@Hz÷î-7ß|³|ôÑGÆ|„\ºt©üðÖV­Ze‚O›¶ƒZgÀˆ+€`cÙè±nüãåí·ß–?üájÕª%cÆŒ±æâÊáÆ!xÁtÏNÞ=zÈÔ©SJIaúßÿþ·¼ÿþû&ð}úô1œ,óåt¢;vì0¼ÜÅChL'á‡k®¹Æ¬Sv¡pùåE¢_}õ• 4.zÛ¶måÏþ³¡ÄºÒ‘ ØtV_|ñ…ýÒ™M™2E3ò[Ad¯cÇŽF†g@fèh'S­üGéŒè4·nÝR®ø‚aÁÊc…1BÔÓ¾}{3JÈŠJ¶éØ 7ŠLÛ‘gêzþùçMÖçÍ›gòÏ3G y"-ðûßÿ^^xáSÊÇÜ”éÛo¿•¼yóšr£fÍš¦D\(¥žb!xXòÊ•+›ÀÝ}÷Ýf1é9éxàÇ{ÌpŸsÎ9ÅX,* † Xs:¼€9sæÊLž¢‚Þ£è\S¯‡Ÿò,o(¹â¾÷,\ûéÅÂÉ6÷ýuyσ;ϰo„Nfz)‘BÄŠL¯Íƒbõž}öY빨”‡@X \U†1ƒ¸ŒŸ•”±ÆÇliŒŸ/ãr¼÷Þ{殓Féuøž KB‡Â8K€õÂE¢w'ÐÆÚ’ÝåEš L¡èvÓM7­Q 6”ËÆø…!ò1nˆ?°’ 2f‚yxèÐ!£3q î0¯8V …+˜—È uÂs¼pQuÚ\£F v¡ÈR0ùOþmAa0F*T0/𪫮2y¦SÀ³`ØBÇJ®(O>: r ÿóàE„’mËâ ¹çƒ.à]zñYÃ&EìZC>¸xX<Æ«X5kÖãN?ü° Ì@ÐÆ_47‹1-(òâÞâªCD  c®@Ƈ¦Ü<`î–%êËÔpÉ_ß{ï½6ž‚aŒCp3Sˆàµ%e©'c_ÚÓÞAeøÀøÌo <<¸ã¸‹¸˜ŒëHG±x:l<£wß}×êÅÃ{î¹Ç¦èP<¼$„›¸ BïÉ‹eÒ/ÆÿxRð—zĈÞ­À/mãƒÐcP¨«†+NP ðòóð\{Á믿nr°råJëôñà'ÚŠlÑV<9 D(¹"ÆN¼:±»îºËò2Œd¨ã a¨/”l{íðÿÒ^ðÐ1Á/¬<ÈA{®¨IOT øîBœ¨=S¢>x ‹6 Q•Ñþ+£ÕîíB#؉”÷@{åDíáøH§öö^–3~)«ÌI¤œ´Q{NûK9¯mÞýHu¬š¨Âi±dùUhUá’¥Gš V(Q;ÉDú@ÑPtã¦*—=½zõuº'_“‰êU%ªŸA[UãG$<Ôáñ ºû!.¿¼øóSg8>ûóñ¬^ûÀ¥Ò;âkä#¸íÁr¥8Q£è‰<«ŸîT¦Š¨†'Y½Á²,Ão àCÆRðL½MÖ“[dz \0¢~ xὤl楇û 2á¢{îœWœ~‹â¥óKÝX?ÐF>@¸rþüñtÍ<,"÷^¼€ö‡¢éþ±'ÿƒqa0€+â óÌà —_^¼|ü¦¶N?Np…ÃçÇÒ5ñƒàB(¹ÏÊÇáš˶¿ŒÿÚÏGzj¯Ó¤È©Eîòe p•'²:+`êÃß©=ñÄ!‹3ñÆ·!3DM\T›!YÕ£ ̵gHé@ê9Ä˪¢ŒÓ"UbÚê¸ò?œ9›§lj!š¸R[gFåÃ+ ¦aFÕ)Þˆ£Ö‘Vàò; 8 d<Î8X€z¼²rånF˜­ÑÇêºX½‚)’q‹ÕY`àN‰\(så*  TÕu4Ò>Y#è›"GâJœA†V¾5 g(ò9ãäÏ‘#Çuõi >äÑé–^¢s›t:¦ªŽóœÃ‘UlLH8¥óÇ+t½Á72wî›Ò@³ÎÃÔ dò…)YÕÎlRoü+2Œøøã…:ß=Þ¨µÎ™ÖŽéöÇi㲇"Cü-^Õ… ›Õ*Ÿ^Å•7on]0KwA×µÙ×Ëý÷×S>Å~³'L˜¯:fê²Û]º‡UU'fÑCÕªetcD¯@š»ˆ*²"¯X±UWç Ñbg.ãô“käȇ5O ’»Ž¦N]ª«ùÞ ‹)þ¼º¢êqÝ’Y6lw#]È>‡ïU©RF—ÖÑIýÓ S<Ò H·Ýv•Sb QþmÑârݬrµ´’Ó~´jUÓ)q”iŒ.îƒ]þÚ¿ÿ¨î€ê¯k„’óäÉ­kÁKê^ºú'i঻ˆNžZ_ÖvÄúâ‰q§Ûê‚]§iúŠó¿Æë¢Ó.Åtƒü0}ÝžÐã4•©·Ûo¦o¦,¤çlusÑú8åcŽ[¢™>qçK/µÖÀO¹å–¡úõõiAse-Ú ¯gªë¦ëÚVOÎ7sŸpQëù6kÖ ]¦8V0¸Cß X+ÂÒ±“Ý-O^D¡%nŒœ"²q€ g„õêuSZPdi™!C¾”ñãçʨQôUže²´-®ò¨PÀ)rZÉÈV>N޼îºÊúŽââbбc'õåà_é àVÈ{ïuÔ·4Nëã»r±EìJ+?MšÔ]6lØ­;^Ó·ØïO+ªL)ÇÞkö`³›=ÙN‰3…ì™V‰‹n¤ƒÔçž›[-Ü}º”ñ ;S{Ù²-éÀ–qE“Îülóá¬Vs'£d­³ ³ vE‰ò@׫×DÛÛܬYõ(aM?š3–KÏžcåÅ[ÛÙÞéÇè0Ä Ü¡UQâ V¹\¹b6n&öè£M£„9íhFŒøZFŒ˜%cÇv‘+¯,ŸvD®dÌSÀYä(³ˆ±2GïV¯^V_ZÖ&KÅç°ø>}&‹ž"j{ˆË”ù]”ŸÒ¡‹1 ¸`W´Âi’}ÔSöí;¬oƒ.{öŽv)â۷mû¦ßè9Þ‹SâÉ•mnº`W°’½ÍNP·nEÛÓ»fÍŽ ¨%9JöP³—ºFò¶·Ú;(>yN—’Ý(à\ë æè,ÐU`ŸèyWØœsFU7gÎj—–gž¹E=ºUÛp B2ƒ/¬ÍîÐáÿå‰'šëù×D½Ê±cçÊ A_Øî¬zõ.‰:~‡0æ)à9³X´iÓ{?Ò]wÕÖé £Víðá35*ýíЪP¡DÔð:DqEœ¥È¼1+!W®|úvÈFúvÈiQkFÑ¢Ítñ7rêÔéWÉF yˆNž<)¹s»×ÖF@²hfÍyŠÜ”XR9lØ0³¼^»H§£ªT©’á ƒsßAìQ GíGFX£±ÖšH1®,ŠæÁž={äøñã¦À^Öw–h0nÿÔA%Làñ\ðÑ£GÆÎ(®}j+k^¶lY‹nã>{*Üj: ?pKL~†¡ wïÞ6fNEvk­CQ0SÓÜá{‘’ †ËÉ4•ˆh»J”(aŠ|ÿt,žûïGjÏ?ÿô+PqÅý¬ÄÜcÜïyþ¼Þu×®]Í­gêËA|PÀYäù„EÑ"Ù²‡Ľö²pƒ–<sÔY Xxçp¶¶8‹|6 eø}g‘#%qñâÅ#-bÐ¯Ä VbÒ²Zi‰'•pßYMФ¬n•«ßQÀQ " ä8×:"ê¸Ì©¦Ã‡H†©Fì2¦†9˵ö¦`RC—ÇQ ž(à\ëxâ–k«£@ 8EC—ì(OpŠOÜrmuCÿ*v8jâ_(wIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1MultiStatementsOption-members.html000644 000765 000024 00000015370 14042362133 030565 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
    MySQL++  3.3.0
    mysqlpp::MultiStatementsOption Member List

    This is the complete list of members for mysqlpp::MultiStatementsOption, including all inherited members.

    arg_mysqlpp::DataOption< T >protected
    ArgType typedefmysqlpp::DataOption< T >
    DataOption(const T &arg)mysqlpp::DataOption< T >inlineprotected
    err_api_limit enum valuemysqlpp::Option
    err_api_reject enum valuemysqlpp::Option
    err_connected enum valuemysqlpp::Option
    err_disconnected enum valuemysqlpp::Option
    err_NONE enum valuemysqlpp::Option
    Error enum namemysqlpp::Option
    set(DBDriver *dbd)=0mysqlpp::Optionpure virtual
    ~Option()mysqlpp::Optioninlinevirtual
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1TooOld__coll__graph.png000644 000765 000024 00000012567 14042362133 026317 0ustar00tangentstaff000000 000000 ‰PNG  IHDR¢\íjnrsRGB®Îé1IDATxí ¼MÕ÷À—!cýHdŒ(’yÎ9SŠŒ!¢O™éC(R¤")2„’>Q©(¥T”(ó¢‰ô/©Ð$%Cÿþ®Þ¹ŸóŽsß»ïÞ뽫öú|Þ»çì³÷Ú{¯½ööÚçìLޱ`)ÁÈœÁõÛê-”–-#$,#&Ä0ØFdͼ÷Þ{Q­­3B Ô®][räÈaîødKwFÄ7Êœ9³4hÐ >=°XâJ>úHþüóÏtgD«šã:ŒY´°Œ-ål¹¸RÀ2b\Éi‘EK#®_¿^:- Îh¹ 6ÈÎ;ãZÇÊ•+åĉqÅ™ÑÈÎ*F¬Y³¦üõ×_§Ñìî»ï–]»v–žÑ óçÏ—Æ…iæÎ+³fÍÒ.½þúëêPdtÿâYÂ2â°aähÑ¢R¹reÙ¶m›èÖ­[åšk®ÑþO:UJ–,)Mš4‘ýû÷kÚ_|!W_}µ^/\¸PF-¤µiÓ&D3žûí·rÛm·É­·Þ*¥J•’Ë/¿\>üðCÍ3cÆ ¹ì²Ë¤\¹r2{ölM[¼x±ôîÝ[jÕª%7Þx£L™2EÓ;¦íûå—_BøÝ‹¯¾úJî¼óNùî»ït’°$ò믿êã±cÇ 8wïÞ-­Zµ’víÚIÁ‚eÀ€ú|ïÞ½Ò¸qc)P €tëÖM>ùä5j”Œ3FÞxã ùøãåäÉ“ÚïfÍšIÞ¼y¥iÓ¦²oß¾°8Ýv%êoB2âÚµkåÍ7ß”Ï>ûLzöì)Ó§O—‰'ê²ÏÓO?-?üðƒ0˜>ú¨2†+ sçέ̱‹)"eË–UÉÁ€»ðå—_ª„bÐ6oÞ,ï¼óŽT¯^]üq¡ÀûòË/ËK/½¤ŒÌRjévóÍ7+£?û쳊™-[6¹à‚ \ô¡ß‹/¾Xúõë']ºtщÀ„p¥ù÷߯LyüøqY¾|¹2"uÒ7ž1*T¨ ,¥üôÓO²cǹå–[´¯0Þ§Ÿ~ªŒ8mÚ4eà-[¶ÈùçŸ/=ö˜„ÃjX‚^$$#^z饂T1b„2Óœ9sä¼óΓL™2)Áa€FIëÖ­¥W¯^R¼xq%/ôž{îÑëúõëK=R${ÿþýU"vêÔI%W¾|ùdݺuÂD€É>,üñ‡â@rõíÛW™i#/]ºT:vìXG–,YäÜsÏ•\¹r¥¸&W¢D e°zõêIéÒ¥µË–-S&f2=óÌ3‚4e’ ÆwÉ:räH)S¦ŒŒ7N'Ï‚pºeõ7!±páÂÊÌrl,Æ H Ô– yòäq/Sý=xð`(ŒdÍšUXhGú ~‘@uëÖMÆ@^x¡æÍž=»š0!¶Z8FÔÌaþµ¬´ãï¿ÿ–o¾ùFþ÷¿ÿii&`Pÿh/j?þüšr§NÒk·_ܸ}Ó ü/!55oÞ<™4i’¼øâ‹²jÕª ±Z¶l)«W¯Võöõ×_« 'ÃÑ£G•¹F¢¢ÚD醭dÏ‘g¥J•Ô@ò ƒvÉÁ|<ð€ªÅK.¹äŸÂ©ü§xÏ´qÓ¦Mas#õQ¿09€i‚]ÐwÈ×¼ysyõÕW5 :Qîl…tñEB( ïÛo¿]Þ~ûmåÇ×bØr8ï¾û®\y啪ÊÎ9çuZì°k¯½VtÑ¢Eªb_yåiß¾½æÅ!à/\À¨V­šJ’Š+ÊC=¤eyî©6hÐ 7)Õ_úÓ¹sg51\iTˆzè/Z`„ j:PZ`j4lØ0T g ;tüøñj “'¼mzži™ÌŒO×±T‡ –Z¬UƒÁ^D¨œWõ éðsæÌ™*-q8È›P/ößE]¤ÏØÏ8¤á±ã½¢²±Õ¼ê–:P©mÛ¶MVÝï¿ÿ®6“''v« HhhýélVìäHñzËú¯q°1#¡•¿l,÷ )é#Ê—/Ÿ¬oØ;.ò[2Rˆ”°Ô  ¬p·oß®K*xЮ݈”Å™ðBÐîoþ k/òg%"5‚Ê&JZÂ2b¤BºÂ0-jË/-"ÅãÏ÷ã? ö'«X_Ä–ÄYb]3Õï ¼_?°nÉ:¥0)¼ßhéL›Ò29£­ëL”KHg%’޲&‡ÓÀòÅtЯ¸â ]ü¤|jyXÆaQÝ81®ÇŽ-Ébs°Ö¹fÍýc/›{˜Û8,ÀÇز^§.\R1=ÁØ`Ž‘(iªÒH gðàÁŽYÖ•{ê©§œ5j„î¹0‘gÁ‚š6sæL§X±bŽY‹s̱¦ :TñûÎ1‹ÝÎ|àûÊ1·sÝu×9FÕ:ÆIмfAÛ1K8aˇÂ1jÜ1N“câ¾NŸ>}£J#1OëŸQïΞ={Wпûï¿ß1‘‡vûÌ1QÍflU窫®rŒÇ혒cV4=¨oÝ»wwÌB{=ý2dˆcðCi‘\íâIIÖ¸æIX‰hz©ž"‹ÖH:l7¯Í„:f­Ï xÕ„Ä~ûí7]à%>KTï“e“ hJ$‘ˆ r„Û°ÙžþyμÿþûòžÙyÞµkWÈxÛÉ5k—Ï=÷œ®š‚"'áú毃õE´†™¬Ù!‚”ÐW¶ŽY$i„Ä2qfÇDUÃD§a6±bÇÄOK'ò:t=3*Ü1Ë9ŽYq¤À’%K-q ¨ÒDó¯J•*Ž ý)W"•#¿ñ¦ã ;f'$uI7΋cT3— ‘HDãü¸Ù£úUú›0ŸcT¿¦›°žJÛp}óKDÙ‘#G3wÌR”–7ËYî£À_+=Ó•­SûÄiÙäm²¬ã·‰ˆ³d¦7âZ–düQoÄÁë‰{Ó=M yëAÏýõQu¦¼NK4”Šœøëòö-¨>ú†3-y Ð6!!UóäÉ“eãÆjØãa²ã… ^€áɱ‹ b‚Á~ÓM7I‹-Ô›Ea!’Á"ù™ê#‚*dr*T(¬÷Šw‹ª÷Ê+”ùPñ,ý\l6MENÒÒ7hh$¥Æë B¢U‰ ɈЍ;bX¬­ZµªÔ]æà9Øóqm©S§ŽÆYbiÔ¨‘[¼ˆÆ¸k~”u!\ÄÁMwÝüî¯?‰Ã¤`‘›ÍDgÂQwò¸yÀÇD¢<#7’Dä„8,V³³†8)õÍÛ.wç6"ž:´„¦‰ YñÌ4÷Åiñ*Œ ^K)Ä„~ñ¸×/î'žxB¥¥»¯ÒûŒuIÖAý‘œ ÈIj}£ßÐʘ޺Â]ÛÈJ8Ê$¥CÐpDu#!~Aûýyây®Þ:zlæ &SENRë[¼öƒÚs&ÒÎúÈÊ™ Ê™ÄiÖÏ$ú³÷ézî¬íŠmøÙLˈgóèý‹Úžîª;µ/¢ÿøÍÄšÿ0ÎR¡¤—¶þ }òoÊH>¥»×œJÏ:˜¸ß›7‡™EôL¾}‚éÙŽ³½.«šcÁ?ÍrËOæºl&zñõ¿DÂÇ@Ž˜ŠZFŒ|»L4%‹Ù¬{Òl¨øÄlX°=,#FO;ùȼêy‚¬ ޝÍÙSæ5 ÑQÀ2btt“£æ}™_ÌËú.d6¯|æå%7ý Oˈái“â“æ•Wo¤ç„QÏ%}"Å‚öa ,#’%õÄMèWÅ{ÍΙãfÇ…´SÀ2bÚi&¿šAGÍ;)~ÈjÔóI/ÃûŸÙû”)`1eú>ýÌ| É Øøz¼·Œc!íH÷ÈJÚ›˜x%>6ï©d6Ë6Y³eS†d‹Zf³˜÷üƒyAõœ=éÛ5‰×úÄl‘¬D1.'Ž‘£æ½gàÿÌW~4a¾+ï¸CïaÀÜIlÒû/" X‰™’gÊf>'’Ïü0̗ϼCc!z X1zÚÙ’q¤€eÄ8Ó¢Šž–£§-G XFŒ#1-ªè)`1zÚýS2…—ºbEý_*o1ÖÑNzÍ5V4ÿõò–ÿë ý·Œ˜ ñ_o†eÄ9 _ž0v¢…Ø(`16úý³ùÁ؉b£€eÄØègKlj–c%¤]¾‰•‚ZÞ2b¬d´Ë7±RÐ2b\(h‘Ä…V"Æ…ŒI¬°Œ+Yº±Ë7±RQ,#ÆJB–nìòM¬T´Œ3-‚¸PÀJÄÉh#+10©¸eÄ騯•ZÕ#Íi´1c°,â@ˈ±ÑFVb¥ –·Œ+md%V ZFŒ -’øPÀ{D¥ùÀ:û™ì_hpn–,Nþ¬Y-ÍÒ@3xÌçæe='Ù—øÒ?0r°¢K3Es`»,]º4zk#&#‡½É( XFÌ(ÊÛz“QÀ2b2rØ›Œ¢@21£á­—#aóæÍ+©¾é-tý§ùÂ?G¾ú!wîÜR¡BrØû'NÈöíÛ…ƒ·iS¥J•$þüšÛ¶mR¾|yÉf¾“èÂáÇõ°rÒ#ÿÒ|þbsXxåÊ•õ¨ÜH˦”ïÔ©S‚=V«V­dßûö–9b>±G?4hàMÖkΠæ¬g?.\XÏö§ÇrŸpñ…^ÍIN±ÂñãÇ•aÆGyD–,Y¢÷ x¤ðƒù<ñ€dÑ¢ErÔ|¬}Æ 2hÐ =¥&LÏ {öì‘ùóç{“Â^s¦òرceΜ9ŠgóæÍZßîݻÖI˃ßÍlGŽ©gV‡+×»wo WßÁƒC45j”özB—xCš%âªU«dýúõ:ë‘mÚ´ÑAföÑé­[· R§sçÎ30S¦L‘ èæÉ“Gó•.]Z^2Ÿ^¸p¡Î.Îîׯ_¨o˜oQ»’‚rš{ݺu¥oß¾ÂYqk×®UéräÈ¡§Æ2DŠ-ºîÓ§âãäû† JË–-åÀ2lØ0Ùµk—”)SF(_ @ímäë¯7Üpƒ´k×N¤jÕª2pàÀP»hýä¤y~þùgeJèÒ0ßIÜ»w¯¼lN"¸þúë¥`Á‚ZtÅŠ:¨œ.ïí‚1J•*ئ™3g*cmܸQÎ1ßì¾ë®»ôÀô©S§ªdæäz¤ÛСC]”úTnåÊ•‚ÔCjvïÞ]¦M›&«W¯–|ùòiy¤sÙ²eµ<“±k×®R¨P¡dxŸ3µ':³š¯èF i–ˆˆrW2 ~fÏž-Ç—úõëËk¯½¦ƒ $C­mÚ´IæÍ›'-Z´Å‹ x£GÖAß|‘uê³qË–-*1ú÷ï/œü Ñ8©žûC‡ R(W®œ2¤ÿZzþQ7„¦Ýç™mÒf¶Œ1B,Ïšc*Ž;&0põêÕ=¥EÕ:táóÝlý7nœ¶ÉM‡©éŒK8QÞ{:=}ñ› L2Ît×&&ÒÎ;eòäÉ:!Y9yò¤ÖÃÜ{ï½ò¶9ï…î½T®gÏž’={v3fŒ2ãçŸ.0tÓ¦MeîܹÞâa¯™0”.]ºt`L¢43"•`'U¬XQªT©¢¿î5¯Y³¦ìß¿_0,’)Å=ƒ_¼xqe\˜”AÒ¥X±b§µÂ’0ÆIŸ îØ±£Úi­ZµR§ kŸ®]é½ö#eBtëÖM8m¾W¯^*Y‘âô [Šºh Žê„é¼ð›ù>6éÞÙDAZ a¯N:¥ÉÂ@#í赞3gÎ:­áÚDÞ¶mÛJ‘"E´­î„@Ê2É èí¦{qûËåÊ•K'ºÐv«G²oß>A¤µk×–Y³f©FøÞ‚DÙ|P'Rje½Ï£bDˆøg8iîuêÔT , 2cÆ •@Ì8l6óBÏ·¦Q3~@ò¹€êwg››NÚæ²H E½˜÷0ƒæ¦yÓé' ál$LÔ9À‘¿ Àà¨HêjÒ¤‰j /jó†ÁQðÂòåËUK„ky]\˜3ôÁ›Æµ7]&ý *ç>÷×]\Ünž”~1µè+Œ¼nݺ4 x£bÄ”Ä3˜{ u±×¬Y#õ…4Dú|b>‚N‡‘tØP~À[e ±›|$ÀàQŽYŒ§ € ©é¿Ö„¤œU£F %ID’¸GŠƒuóìØ±CªU«¦‚¶»ž#Ldkݺuȳe2ÒˆÏÀÑ&ۻ̕86àõB½zõäWsÂ)ÒÀñÁfFÒ‡k“·|<¯©Á]ÌWäTNª™ˆÒ¿yóæzïNÔ”ÊzŸEo]z±$]»G‚10¨0 ~€A¥‘H:ŠÁŽÊŰG}a㸳•ü.˜QÏ¡ÖHg°Q0*厤¯ùó;}útÅé½àâìСƒ:Oب݇~X™bÂlÌl&QãÆÕ¾Å³dPÈL2× rñ¶oß^Õ“¤,€tÀ1ÂÁZ¶l™Œ?^&Nœ¨fÏYÂF¦mÇnnÖ¬™j¤ZP›(ç·_Þ4®Ã¥»ùüÏq6˜L˜LÚ  áhî·w#)ïæIv¼Ò -ÖX3vzòÉ'Cƒ‚dÃiABú×Ý`B<^˜ §Àð…Q°Éï2*†ô[o½¥êЫÚÝEú‹ „]åµõ`xÚé2’‹‹vïÐm‡ûÌýe‚a#§Ô&Œ?¤¨PL,?þpmò—×}¸v„ÃO¿™4i7ÖŒFr!®¤x‚÷ÝwŸª5ï€Bü’%Kºõ†~½¶Y(ÑsôœÙœÒ€{Ї½dBø!¨.ò0‚Úî-Ï`¤Ö&Úí—D.ŽpeõÉ-ïßpíWOZ™0ž¸3b‰%t=Ê5ÞÃUìOŸ4iR2iЩS'½g-.^¬À&fâΈx¿ieBzîzÂ.pN‚ ½%DPlZü)pº±ÿ:,FKÔ)`ŒçãÑî4NãNcCaK³(hàß¡ÌkNmmK3C«šÏ ]-Ö4RÀ2b f³Ÿ XF<3tµXÓHÿSfÇ1ÜŒÀöIEND®B`‚mysql++-3.3.0/doc/html/refman/utility_8h_source.html000644 000765 000024 00000024121 14042362133 023142 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: utility.h Source File
    MySQL++  3.3.0
    utility.h
    Go to the documentation of this file.
    1 
    8 /***********************************************************************
    9  Copyright (c) 2009 by Warren Young. Others may also hold copyrights
    10  on code in this file. See the CREDITS.txt file in the top directory
    11  of the distribution for details.
    12 
    13  This file is part of MySQL++.
    14 
    15  MySQL++ is free software; you can redistribute it and/or modify it
    16  under the terms of the GNU Lesser General Public License as published
    17  by the Free Software Foundation; either version 2.1 of the License, or
    18  (at your option) any later version.
    19 
    20  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
    21  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    22  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
    23  License for more details.
    24 
    25  You should have received a copy of the GNU Lesser General Public
    26  License along with MySQL++; if not, write to the Free Software
    27  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
    28  USA
    29 ***********************************************************************/
    30 
    31 #if !defined(MYSQLPP_UTILITY_H)
    32 #define MYSQLPP_UTILITY_H
    33 
    34 #include "common.h"
    35 
    36 #include <cctype>
    37 #include <cstring>
    38 #include <string>
    39 
    40 namespace mysqlpp {
    42  namespace internal {
    44  void MYSQLPP_EXPORT str_to_lwr(std::string& s);
    45 
    48  void MYSQLPP_EXPORT str_to_lwr(std::string& ls, const char* mcs);
    49  } // end namespace mysqlpp::internal
    50 } // end namespace mysqlpp
    51 
    52 #endif // !defined(MYSQLPP_UTILITY_H)
    This file includes top-level definitions for use both internal to the library, and outside it....
    void str_to_lwr(std::string &s)
    Lowercase a C++ string in place.
    Definition: utility.cpp:30
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1TooOld.html000644 000765 000024 00000012455 14042362133 024003 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::TooOld< ConnInfoT > Class Template Reference
    MySQL++  3.3.0
    mysqlpp::TooOld< ConnInfoT > Class Template Reference

    Functor to test whether a given ConnectionInfo object is "too old". More...

    Inheritance diagram for mysqlpp::TooOld< ConnInfoT >:
    Collaboration diagram for mysqlpp::TooOld< ConnInfoT >:

    Detailed Description

    template<typename ConnInfoT>
    class mysqlpp::TooOld< ConnInfoT >

    Functor to test whether a given ConnectionInfo object is "too old".


    The documentation for this class was generated from the following file:
    • cpool.cpp
    mysql++-3.3.0/doc/html/refman/inherit_graph_33.png000644 000765 000024 00000003640 14042362133 022433 0ustar00tangentstaff000000 000000 ‰PNG  IHDR~º;asRGB®ÎéZIDAThíZhMþ£kì5öö‚]ìb»Ø+T¬(ذ"¢QQQDlIDMbWD{¯Ø{ïíþýæg{É»¼wá%„ä’ÛÛ2;;å›ÙãŠàRfÓ@lpf;±{Þÿ5à>“z‚køLjx0Çk:zô(ó½û—uðôéSmf>c<"^3gΤ3¸HuëÖ…2¼¶yÞcÄ}ÉÐp Ÿ¡Ík8×ðöºÉÐ#!éít—/_FÁ‚Q´hÑ€ˆöãÇ8pß¾}CÛ¶m†¯_¿âüùóhÖ¬YŠ÷8rä5j„ìÙ³{åß¿ËXPPªT©‚Ò¥K{ë´Ó×ÞþðKw¿xñb>|ØÙ}ιtéj×®-Ff›†>tè>}ú$OŸ ’™Ð·o_¼yóÆvF¯^½°wï^œ:u 4TëÖ­1cÆ ÛùNôÞëׯÇêÕ«,5ç:6üöíÛÑ»woÔ«WÕ«WǪU«PµjU”/_^9kÖ,,]ºT6øþý;jÔ¨·oßb„ (^¼¸¼_¸pAÆW¬X’%KŠR:tè€+W®˜‚mذýúõ“ùáááˆŽŽ–1V¨Ã† CáÂ…Ñ£G‰d´k×wïÞ•9ºMÅS®¹sçbá…ؽ{7>~ü¢Àµk×dn“&M0bÄ”(QC‡ÅðáÃ…wÿþýåfc'‡,VÿÈF.R¤:wîŒW¯^é!Œ7óæÍ“½§L™‚ØØX»~ýº õ1fÌüùóGt)hG]¼{÷[·n•õ\ôúõk´lÙÒä}çÎL:Unaš¯9èGñáß¿}ûöaùòå"üĉ±nÝ:tïÞkÖ¬A:uD`î€lٲݿ¿(›Æ\¹r%ÈgΜ92wÔ¨Q8xð iD®}ñâ…@ôŽ;@˜6m»ÁÈÍ—/è•KÃ߸qCæRtP:Å–-[ðåËYÃ÷û÷ïÛÊ!‹Õ?žN”âþcÇŽÕC¢'çe0ÐAH“'OFÇŽ±gÏ?~t®Í›7#W®\¸yó¦¤#îOãS$îAY5•-[ƒ£¿M›6ºÛï§cÓ3!³qãÆhÑ¢š6mj¶Ÿ={&‘wïÞ=¹72J•Œº'Ož`Ò¤I¨\¹2¢¢¢DQäѼysDDD B… I„îÖ­*Uª$:«u’n3*ýÏŸ?—~: Õ)ÙÉA>:u’Hg*"²Y#ÞºOýúõ%½±²'šÐ¸ÌѬ]1Ož<ïL+V”ê™… ûé,©$æú7Ê2æÌ'NH1¨Û}úô’‹H*píÚµzŸÏääàb޳Ž`!ÈôE#2o{#¢kÏŸ?Kuß³gO™*yžŽÏ¨_²d >|ø 9Ÿ2³î` b*$²hâÞµjÕÏÈtÉ3;"Å̤ٳgê[½ùžÒ†º3ªê6^¾|i²PJ7®^½j¨ÂÊìcChÒ× AãÌ™3昪† åù†º2JYfHHˆ¡àÖP(aöùj¨BÒÑ|+?;9¬sØV…—ÁsûK<í[· êE“rfC9‡¡œ[wÉS‘Ç»õE¡œ¡‚ÉÚ•¤­Ò‰¡ê kL@#žwñâE¹î±8)T¨é„„X Ëf§jðƒJrT @$ÃäÅhð—mº.ðwMâyÞä°Î!Ì;¡¬Y³ šY×ðVÀ=‰‰ÈfG,îRB7<+bæD~}sBüºÆëŒ&k‘¤ûød¾fîN+²“#­öO­}nxÞÛ‡K‘vžì !­(;9½OZós^⦵„î~©£kÆw“q}”ø8A4|긔Ë5kÀýyu:6NªŠææøTUoúeî>ýÚ&U%ûzega¥0IEND®B`‚mysql++-3.3.0/doc/html/refman/inherit_graph_27.png000644 000765 000024 00000006321 14042362133 022435 0ustar00tangentstaff000000 000000 ‰PNG  IHDR˜%¾– ŠsRGB®Îé ‹IDATxíœ ð–ÓÇO›%J–²% …R²DdË’%“²†™l‘’B"¡l£±fjlY²¥ì*²¶²W´ Z¬•VqœÏùÿï;÷÷þž÷·õÖ¼å93ïïyž{Ÿ{ï¹÷ž{Î÷œóT%5’”ÒX7+0£òºé7í5]ÿ­@*`©$¬ÓHl.oÚ¹€Á?<–þÒ5¨° |þùçAœ¸N/¢ÁLÀ¤_¿~]úK× Ü2бcG1+¢¶‹X‘šô!]<¬@*`yXÄ´‹Ü+ XîµIkò°UóÐG^»øì³Ï¤víÚ²ãŽ;®u¿ß}÷|õÕW™~¶Új+Ùÿýe³Í6Ë”e߬^½ZÞxã 9üðÃ¥V­Z2}útyï½÷¤fÍšÒ¶m[Ùb‹-²›¬—ç3fH•*U¤N:òÁdÆÜm·Ýd¯½öÊ>}N˜0AŸ~úi5M¥»îº«Ž7N·ÜrK]¸pahª¿ýö›Þzë­þlZÍç¿õÖ[«mþõ×_úøã뀼~Ñ¢EzÔQGùýa‡¦W^y¥î°ÃzôÑGëï¿ÿ®—]v™‡˜w/4|ûí·}Œ}÷Ý×ûºãŽ;ô£>RæhÕªUjY§Nª?þø£{ì±jšZMètÞ¼y:{öl=õÔSýõ$>öÙgÝ|óÍõÆoÔ?þøCÏ<óLÝ~ûíõä“OÎÌž¯½öZ/ ã&]MðõÉ'ŸŒ«Š†)Ê"­¶8‚f0áC=T®ºê*y衇¤C‡®!l³ÄÄ»²M’M6ÙÄÍÔ«¯¾êšàüóÏÛx¡Ÿ›o¾Ùß½üòËÝ,™@fXX°`¼þúëòÌ3ÏZíºë®óºO?ýTlSÅT~þùg¡_èCɘ¯ø~îܹ>†m¾0'½U«Vn6ž}öYy饗ÄÕ§œrŠ´lÙRn¿ývç¯Aƒn’|ûø4#'̘12iÒ$yçwÄPà2x¿Gë0·wß}W~ýõWyíµ×Ä„E*W®,=öX"/ðy饗Š2¹ÿþû‹˜zúzá…þ»ví*˜~;È2hÐ 1áÉ“';¯hì•+Wºö…‘$>î¼óN1–«¯¾Ú÷¾± @+®¸"ÿ ¶ôïßߟËó§B&{n§Aì„:V ÷?ýô“´iÓFfÍš%vš|óN?ýt7Kvš|à…|Ð'A»#þüóÏŒic⦠¥sçÎCXn‹ïáéå—_v^L#8®ªQ£†ÓnjÀWl¼i+ÙtÓM}Ã8+V¬(Æ6‚kZI8P]ºtñ O|Ù +Uª$¦|Ž˜³~øAàr„–›ÍËĉ0ëmš.Ó=¸jذan®áýÃ?taå°1NÆ ýð"„1%ñpV«VÍ >LË ë¶£_ˆvrðky©B Ÿ“ q·Ùf›"c²A€a4Ë©eãÁ O<ñ„Ÿ83‰Ò¤I_ÔИvÙÈøfc¡PN£$BËšéóW"3‚#Á&š/^ìu˜Ùô@`54Ã̸#T|°Ï Á„¶Y³fMxô+Ú,&3·þXµjU`ÆuI¼ ¥X[ÖBá½òÊ+áѯf—|NÛm·?'ñDEi|ìñ5Ap9@p.*BÒ`¥ „ÆÁÌ ® ›ù风Që¨`N$BÇÆºQßÙ„Ùa¡>þøc?aáqÂá,2 Ñ';ûÞ þÿgÛm·u~0φ1üäöîÝÛA3&404' žÙ<Æ3Ì&†?½ÁÄÃDËqŽ;î8„’w1e!LR/h÷¥K—zdan”DhábøÒ_cá©,| ¹€° ÁÊÒG®wò*`LBx8Ál„ÆB£! çœsŽã6Lå~ûí'2Ý̆“Åû¡´êÞ€«\ýõ^ŽÀXˆ9sæH=hâÞ·ß~[ìÞ ¢?h?Ì<2üžŠµ(šãá‡B„ †@ÒÎ"ç mŽfdsááBã9²˜¦‚ Ú†ùa^ñL“x1à-¼Å¶0¼…¶¡}4-¿íÞ½»˜Ó%õêÕs<|á…f¿’y}±¾@ƺøâ‹]Û#\xÓà»@¹Æ õ9¯1ä/‹¿ŸëÞNœ{"±f ¯_|ñ…è,ÒÌÌž—™éQÛøLÝ-·Üâ^¨äL¹™5Ó¨¦õ2eksƒ§Å%õñ\»Ì/Í„>ùo³,dš£ÈÜ’xÁ³+¿ì±ì ùe—çzf=ã}ÁgËKI^d…0XNiµ â*gŸ}¶k„Øn£‚9‹ÛÌ—Å÷hŽl¢/@q>hçw.µ›$h„VA“fSŒÏ²ëâgðX¬¹“x‰±Wܶ¤{´ry,_”wÃä¢å!BñbÇ3îgþüùÎCø„ñ²‰àg!‚@œØ4†ºôšŸÈ»€áÞ—W¸˜Jð ôªW¯n‹\³5 OÂ[DK×AÃ% ˜ÜFºÈ¾Ž«ˆÜ;++¡¥Á:„ R*eb;›/ ÷™ï{ó6µ[·njà»X׿5©y«ÅÊã[µ`h¦ˆè;ÙÈRBjVÏ80 üc^±š`{¶Á½ÆÑïçž{N L«yœjÞ±>ðÀž kA–ìF$>dî¹çµ8]bÔ\IýŒ3Îðw“æ0¨Å¡<Ê ñš„ÁòêE–"Ë®¶Åô|n4q(0Xvü­¢£åHˆãý‘×Cýøâ‹®ÑPh7L7! ´'Þaý6îïà…†§¥¹<[qÛm· š¬5vìXg‘,Þ#ÙÂqÔœ¸¡—Ds"db©,©_¿¾G÷É‹n(TðF‚\Çæñ'(Iš*Ækk³Ø˜tÒ"–ÓËl6©BÄÌD¸ï¾ûnO Hqô›±O<ñDwë ðÙ ÒOIJÀ|¦‘}úxð”1I“Å\ò.& B³ ÍÅÆ“¾"HŒFCÛgÅñ!»6ƒÊ5'ÛaXσ®h. E£<Å`±ÐA>Ÿ¹˜©R‹Ó¨}€³î÷€|ÃL~oøGMã{Ç6Ä?“±È´Z Ko¸á†Ì;|®c‚æ?6è|–cxO[´h¡†±ü³€»iÿ4‰ÏŠ.ºè¢L W˽ú§>€ÿ@|ÆC?! i_…hóæÍý3'ó u¼ý‹.¤&Œ¡IæŠã` oµ/KÜñÈTØMÈGMg¨Ð,0JäœÌ@IdÀ] ·•ôJbQm„7îß4˜Ò_±ÏŽ~Ç%EþM{©…Gâ×ü¾,Qs¼Ù ’,ïq°õ¡²C­¤±0k|ºR^"ª7¸ Svô;®ËŽüóÉï¤xY¢æx¡*<«èÂò%DYS6£¬íÌ {(„$ô6Ü£±í_cüWi£Õ`ÿÕ -¸yÇàOÆLéTX²ÿoŠJXÁI}ÊÐÆ²é@·±ìd¡Î#Å`…º3 _©€m$Y¨Óø1£%è©=IEND®B`‚mysql++-3.3.0/doc/html/refman/sql__buffer_8h.html000644 000765 000024 00000014175 14042362133 022356 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: sql_buffer.h File Reference
    MySQL++  3.3.0
    sql_buffer.h File Reference

    Declares the SQLBuffer class. More...

    #include "refcounted.h"
    #include "type_info.h"
    #include <string>

    Go to the source code of this file.

    Classes

    class  mysqlpp::SQLBuffer
     Holds SQL data in string form plus type information for use in converting the string to compatible C++ data types. More...
     

    Typedefs

    typedef RefCountedPointer< SQLBuffer > mysqlpp::RefCountedBuffer
     Reference-counted version of SQLBuffer. More...
     

    Detailed Description

    Declares the SQLBuffer class.

    Typedef Documentation

    ◆ RefCountedBuffer

    typedef RefCountedPointer<SQLBuffer> mysqlpp::RefCountedBuffer

    Reference-counted version of SQLBuffer.

    No one uses SQLBuffer directly. It exists only for use in a RefCountedPointer wrapper.

    mysql++-3.3.0/doc/html/refman/cpool_8h_source.html000644 000765 000024 00000061342 14042362133 022561 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: cpool.h Source File
    MySQL++  3.3.0
    cpool.h
    Go to the documentation of this file.
    1 
    4 /***********************************************************************
    5  Copyright (c) 2007-2008 by Educational Technology Resources, Inc. and
    6  (c) 2007 by Jonathan Wakely. Others may also hold copyrights on
    7  code in this file. See the CREDITS.txt file in the top directory
    8  of the distribution for details.
    9 
    10  This file is part of MySQL++.
    11 
    12  MySQL++ is free software; you can redistribute it and/or modify it
    13  under the terms of the GNU Lesser General Public License as published
    14  by the Free Software Foundation; either version 2.1 of the License, or
    15  (at your option) any later version.
    16 
    17  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
    18  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    19  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
    20  License for more details.
    21 
    22  You should have received a copy of the GNU Lesser General Public
    23  License along with MySQL++; if not, write to the Free Software
    24  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
    25  USA
    26 ***********************************************************************/
    27 
    28 #if !defined(MYSQLPP_CPOOL_H)
    29 #define MYSQLPP_CPOOL_H
    30 
    31 #include "beemutex.h"
    32 
    33 #include <list>
    34 
    35 #include <assert.h>
    36 #include <time.h>
    37 
    38 namespace mysqlpp {
    39 
    40 #if !defined(DOXYGEN_IGNORE)
    41 // Make Doxygen ignore this
    42 class MYSQLPP_EXPORT Connection;
    43 #endif
    44 
    67 
    68 class MYSQLPP_EXPORT ConnectionPool
    69 {
    70 public:
    73 
    78  virtual ~ConnectionPool() { assert(empty()); }
    79 
    81  bool empty() const { return pool_.empty(); }
    82 
    106  virtual Connection* exchange(const Connection* pc);
    107 
    120  virtual Connection* grab();
    121 
    137  virtual void release(const Connection* pc);
    138 
    150  void remove(const Connection* pc);
    151 
    162  virtual Connection* safe_grab();
    163 
    165  void shrink() { clear(false); }
    166 
    167 protected:
    176  void clear(bool all = true);
    177 
    188  virtual Connection* create() = 0;
    189 
    197  virtual void destroy(Connection*) = 0;
    198 
    207  virtual unsigned int max_idle_time() = 0;
    208 
    210  size_t size() const { return pool_.size(); }
    211 
    212 private:
    214  struct ConnectionInfo {
    215  Connection* conn;
    216  time_t last_used;
    217  bool in_use;
    218 
    219  ConnectionInfo(Connection* c) :
    220  conn(c),
    221  last_used(time(0)),
    222  in_use(true)
    223  {
    224  }
    225 
    226  // Strict weak ordering for ConnectionInfo objects.
    227  //
    228  // This ordering defines all in-use connections to be "less
    229  // than" those not in use. Within each group, connections
    230  // less recently touched are less than those more recent.
    231  bool operator<(const ConnectionInfo& rhs) const
    232  {
    233  const ConnectionInfo& lhs = *this;
    234  return lhs.in_use == rhs.in_use ?
    235  lhs.last_used < rhs.last_used :
    236  lhs.in_use;
    237  }
    238  };
    239  typedef std::list<ConnectionInfo> PoolT;
    240  typedef PoolT::iterator PoolIt;
    241 
    243  Connection* find_mru();
    244  void remove(const PoolIt& it);
    245  void remove_old_connections();
    246 
    248  PoolT pool_;
    249  BeecryptMutex mutex_;
    250 };
    251 
    252 } // end namespace mysqlpp
    253 
    254 #endif // !defined(MYSQLPP_CPOOL_H)
    255 
    MUTually EXclusive lock class.
    Manages a pool of connections for programs that need more than one Connection object at a time,...
    Definition: cpool.h:69
    virtual ~ConnectionPool()
    Destroy object.
    Definition: cpool.h:78
    virtual void destroy(Connection *)=0
    Destroy a connection.
    size_t size() const
    Returns the current size of the internal connection pool.
    Definition: cpool.h:210
    virtual unsigned int max_idle_time()=0
    Returns the maximum number of seconds a connection is able to remain idle before it is dropped.
    void shrink()
    Remove all unused connections from the pool.
    Definition: cpool.h:165
    bool empty() const
    Returns true if pool is empty.
    Definition: cpool.h:81
    ConnectionPool()
    Create empty pool.
    Definition: cpool.h:72
    virtual Connection * create()=0
    Create a new connection.
    Manages the connection to the database server.
    Definition: connection.h:60
    mysql++-3.3.0/doc/html/refman/structmysqlpp_1_1equal__list__ba-members.html000644 000765 000024 00000012616 14042362133 027553 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
    MySQL++  3.3.0
    mysqlpp::equal_list_ba< Seq1, Seq2, Manip > Member List
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1InitCommandOption__coll__graph.png000644 000765 000024 00000013624 14042362133 030505 0ustar00tangentstaff000000 000000 ‰PNG  IHDRœ‰Ù£QesRGB®ÎéNIDATxí] ”MÕÿMyDƒ0ò¯By?[z(’,¯’ˆ”°-,Q)Ñò¨X ã]ž%LÞoC¢ãÅGI„éqþû÷ÍìÓ¹×½sïÝ3ƽ×÷­5÷ì³ßç·ûÛß>çÌù²YJHDÈâ³gM;ÒŠ Š€N˜¥á²ni,(סCÊ–-›üÝD 6lØl Â8q‚6mÚDØ¿È_æcðöÛo“.(æ›t"« —Õ-íÝ:„p·ûÛ²e!\Ú°¯[·Ž®_¿ži$8wî}ñÅ4nÜ8úꫯèÊ•+~×½fÍJIIñ;(eÂ¥V§Nèüùó™2vñññT»vmZ°`]ºt‰&OžL5jÔ ÄÄD¯õO:•&MšÄé èµk×¼æ é<ÚºÕR§NKíRÓíòôìÙÓ*V¬˜Õ½{w«GVáÂ…­Î;[ÿþû¯Õ²eK»Ž-[¶X­Zµ²¬6mÚX… ²Z´ha]¸pÁRšÃêÚµ«muëÖͪZµ*·[¼xqëäÉ“\ïË/¿l•(QªY³¦uèÐ!kÏž=ÖSO=e5mÚÔ*R¤ˆ5lØ0.sðàAn'óæÍ³Ì})Z´¨µtéRΣFŒa5kÖÌc]û÷ïç>,XÐRd³5jÄ}?uê”Õ¤Ië®»îâ8ôïèÑ£|-O?ý4_?0ñ%j—j >ÜW¶¬H_2îðáÃtõêUZ¼x1ÅÅÅÑåË— Ë Î;F±±±´hÑ"žü8â|ÆŒ”/_>JJJ"E:λbÅ R¢Õ«WsÒœräÈ®oÛ¶môØcÑøñã¹­eË–Q¯^½híÚµ¬‰Îž=Kyóæ¥ZµjqqE2nóôéÓ”œœL7vVK 4 }ûöy¬ëî»ï&E~‚–U¤æ|ýõ·­N ”?~š2e /û+W®¤Ö­[óõΜ9“ÐfÈHVÐÚWþh8h³;vpUeË–µ6oÞÌah¡7Z[·nµÊ”)ÃqåÊ•³¶oßn-Y²Ä*P kž;wrZïÞ½­±cÇrXÊŒŒä°ÖpÐ(sçÎå¸ãÇ[111ÜVùòå9?]ºt±™ísg@ÝS´ÔMlÖPÎøÏ?ÿÜ*Uª”׺FŽi 2„‹àZ‰¬Ê•+[jæ8EV«bÅŠ´aÉ’%íª¡¡5.v¤[@4œát,]º4—Ìž=;)"¹Ôòðó„&‚&„æQË kÃ3gÎ"Íš5‹~þùgRäⲊl.uèh wÿ‡°3çNQK>åΛ5¨37^¡u!þÔ¥8Ã}…f†(³þþûoCkkÉ‘#ß,×çÁ~ ™%Õx4öì³ÏÒk¯½FÊnãÇd à%lÚ´i4tèP^•-gßuÿæ›o}˜¤£Fâ]+v¿žD÷ÛSZÐŹ-÷·äÔΟŽ)CßÞuêüJ ±Ýƒ¬S°Dš¶átl8µ¡°ÔÒk©%Œ£a/Ö­[×RKµõË/¿è¬>Šˆ–Òz–Ò\vÞôêRd¶Û´ ¨€ÚÈðîÚH8˜l¸°Ðp˜ÅX6ÇŒÃÚÌ9«±“¬P¡‚3ŠÃØU¦w¯KÛy΂°ù¼Ù}Î|: [Íi¯éx=ÕuÇw8³Øáûï¿ß‡z l‡åö–Ó ö58tl"œ‚§î›¸_~ù¥3›q83ë2îÄ-,6„‹ŠŠ2‚Qïuau“Uí#v‚Þ4•ÉÏ@fÖåg“A•-lv©A…ªtÆ+A¡á°ãÃ]ýP‘ÈÈÒj‡û»ºq!TºLëׯоfÃn'(z"\ÅŠ½I ÆÒìÙ¯„H¯ƒ¦›òo‚ÅæÍ‡Õ3ÔÜ´uëõD㿵Ös»æ.À‘Ÿ3g»"Z åÌ™ƒâã÷XZ² áà@JÊ?´jÕ>õ\ÓRÌ®©g³Û(-Y€.¬Y³Ÿr䈰K$$ü¨ž­^µÏ%à!œoŒìÐhÐlZråŠP¯ïÕ§rô!œ !Ë•+×iË–Ã.¹·Õ%NNÒG@—>>vꊉj£ðßrª’’’ÕkK—ô©} „óNŽ‹ÛÂZNŸëcDDvõJÒn}*GÈ_!ùÒ¥kêmÝ·(**çÆ.¯àá=4¼S—/_$}÷Ýp?jºí³Ä áüä@RÒi:s&uéœ8q-=ø`qª[·—®X1š 6{yÀÏæÃ%[|Phú£\kfš7k9nJPl¸›«Tê !œ7d$þ¦ „»)°J¥Þ«¯'Á¶S®ÈÙQn£FH¹$÷vÝ¿gÏÛ§iº=$*W™ì/5Ož<ìGþWýø[ýöÛo©^½zþd»`28pÅX+¾ôÒKL0ÜúÙ°a÷ÇS_¸@ü„ á0äY³f1úöíK­Zµbíõ …~ U¯^Ýeøà»¾fÍšìwN{Ïž=K¿þú+Ÿ7lØš5kÆù•[rž¤•kröeLXÎA|ø¬ÿúë¯oèòàF-~‚ŒÐtÐ~÷¾pd˜ü„Í’ºtéRº~ý:=÷ÜsL´Ñ£G+¯ÅèàÁƒ7 UáÂ…oˆÓž¤á@›£GÚBæ‚ r¸©òìß¿_}’5–£µ3ß””&–3¯ŸÌ7uõmhM-Xª=µ£Ó‹/®ƒöÑSrçÎÍ·TìLa;Âeæxá¾vŸJ QÉ’%ýª÷ÑpëCÄ3B8ϸر°ÓÜ~ñŽ@Øl¼_¢¤òƯÁhDF–V¯~—7~ÇNœ»Š™Úë©ÊoªÛ/±4{ö+¿Ýó‡Æ+æÁ4J›7¦¼ys«òGÔ ÛÀn&Óuܪ¾ˆ  òsælWDKQÞ¡s¨×ŒöXZ² áà@J ^;Ú§ž:Xtùò5õLu[¥%+ÂÀƒ5kö«Ç[ÿù½OHøQ=½@ ’U Ñ Ù´äÊ¡ºïÕ§rô!œ !Ë•+×iË–Ã.¹·Õ%NNÒG@—>>vꊉj£ðßrª’’’ÕËš©¯Bé89zG@ç—”¸¸-¬å\"ÕIDDvZ¼x·{´œ{A $ž4xé{–E_ºtM½ÍûEEåá6±KU¯³ñ;mø‡™|ù"é»ï†gYB¸!yÒàïà%%VÿÑ•ºtNœ¸–|°¸zÉ3õ5¨Š£Õ ›QþVu;ç‹—·EüþØØh¥å¢9÷Â…»Ô[ÅÑÔ Ay?KK6€Øp 9f B8˜å+æ ¥Â`'_17Mgš”4G@4œvø×½°û÷=LŠá PÃK˜ø !\à˜I‰ „ËxR4p„pc&%2€€.àIÑÀÂŽ™”ÈB8ðäIƒhiE„pØÉ“Єpæ IIsDÙc'% €&¶ @K+"„3ÀNm€&„3MJš# Î;¹-bZZ!œvr[Ä4!œ9hRÒÑpØÉ.Õ´´"B8ìd—jšÎ4)™ÔlµeýúõxoZþ|`cåÌYPpò¸ôÓO?ÙüRWO4ŠpÔ©S'êÚµk(,ETàg ®@áÇV‹Øp 9f B¸,YÑá4rÌ‚ŽppŠ ß¡™!ðM OÍÞŽÛ~üñGÉßÿ=»ß½{·ò:óÇ<Á©Œr:uê”ÝØL+V¬PI\ÌΊ•¡n§¥€“à½{oþ÷ŠƒŽpóæÍ# rfHbb"Mš4ÉkU§OŸf•ÈðÊ+¯0±@®aÆѧŸ~Ê›wìØA¯¾ú*)Ÿ¦^빕 ð>½aÃîœ9shàÀ<ÉΟ?Ï×зo_ö8í­~ø!)_«¤|ÂÒ®]»¼eË´ø€¿·víZõqå-Ÿíðéþä“OÒ’%KØ_û Aƒ¸ÓyóæeßóðAÁÂEÍž=›PÞöžšáêÞ“áe9""‚zôèa_ØòåË ZæÈ‘#ì¼OŸ>ôè£21à¡yÓ¦MôÀÐ[o½E‘‘‘4`Àzã7ØÏ½Û•©€rðË>é׬Yî(á6üâÅ‹ìžò£>¢C‡q]5RûŒ“@À|ùòñ9 ©X±"Ï=̉êK &À„ @£ïž;wŽºwï΃7xð`&xåÊ•u1>‚àp~åÊî3 cp±a`@ØáÇ3ñpýï½÷_;ˆæ 34M òN›6‰AG¹Í›7´Ô /¼@sçÎåþ€ Íš5c÷æÀgÂðéê$â«V­ÊDò„'&Æ«W¯^GÁXž!è ˆ ê0I0‘¼õ… ð0áP74 f%.G†íßóÉÉÉ< fýúõYë``ANh3dÄÀ¢xZöäA>ì‘u``asAÚ´iC… ¢–-[2‘‡Ù¯Áv†‘ÁóO Ú©V­šúòøÙÔõ ‡ºH¿óÎ; žžALO‚Žk¯U«÷ ýׄÇà•)S†5·rWÎ^ž+T¨`Û£éa†¶@På6,X@ÊU9ÿ!Z=66–š6mÊ}ŽHo×®úìëƒÜäƒ)€Ç]“âŽ'ÒræÌÉ×Á$††oÛ¶-a¢aÃjqï GøcD¸¢E‹r3¨t§À8–„mÛ¶ñÈ"|üñÇ< X¾ÆÇ„Äò£î.ÐdZ”ÿxç:q°=ü•´’ÃÞu òB³3ØuèVÉŒ¿V­Z1ž¨k̘1T @®Æž¸îÑ£G6 ÔÕ¥KêׯÕ=÷ÜÄ[½z5§ëä3? è,fNFŸ¥bf´oßž `= ˜u˜ÅX.°ìjٰé`üC0Sa“À^C~MÈÆ+~«xép.ɺ>Ó#&ÚÓí ,¡ µ3ñè3®G_â2C@DBÎåÛ½~h!ôÙSÔƒI¬—q”õ†'ÒP—s¹E°€æ½÷Þ{o˜œH÷Gð,v;l¿4ÉüÏæc9ÀlÁ.Ç9 ˜™111ºaûè 0;Q<¥cve&ÙÐÙXÞÚðÔ'gŸMÃÐ&Z|µáN]Gg=Îx„=Õë©.LòèèT7îudä MySQL++ Reference Manual MySQL++: File Members
    MySQL++  3.3.0
    Here is a list of all documented file members with links to the documentation:
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1NoTransaction-members.html000644 000765 000024 00000011274 14042362133 027013 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
    MySQL++  3.3.0
    mysqlpp::NoTransaction Member List

    This is the complete list of members for mysqlpp::NoTransaction, including all inherited members.

    commit()mysqlpp::NoTransactioninline
    NoTransaction(Connection &, bool=false)mysqlpp::NoTransactioninline
    rollback()mysqlpp::NoTransactioninline
    ~NoTransaction()mysqlpp::NoTransactioninline
    mysql++-3.3.0/doc/html/refman/vallist_8h.html000644 000765 000024 00000252205 14042362133 021543 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: vallist.h File Reference
    MySQL++  3.3.0
    vallist.h File Reference

    Declares templates for holding lists of values. More...

    #include "manip.h"
    #include <string>
    #include <vector>

    Go to the source code of this file.

    Classes

    struct  mysqlpp::equal_list_ba< Seq1, Seq2, Manip >
     Holds two lists of items, typically used to construct a SQL "equals clause". More...
     
    struct  mysqlpp::equal_list_b< Seq1, Seq2, Manip >
     Same as equal_list_ba, plus the option to have some elements of the equals clause suppressed. More...
     
    struct  mysqlpp::value_list_ba< Seq, Manip >
     Holds a list of items, typically used to construct a SQL "value list". More...
     
    struct  mysqlpp::value_list_b< Seq, Manip >
     Same as value_list_ba, plus the option to have some elements of the list suppressed. More...
     

    Functions

    template<class Seq1 , class Seq2 , class Manip >
    std::ostream & mysqlpp::operator<< (std::ostream &o, const equal_list_ba< Seq1, Seq2, Manip > &el)
     Inserts an equal_list_ba into an std::ostream. More...
     
    template<class Seq1 , class Seq2 , class Manip >
    std::ostream & mysqlpp::operator<< (std::ostream &o, const equal_list_b< Seq1, Seq2, Manip > &el)
     Same as operator<< for equal_list_ba, plus the option to suppress insertion of some list items in the stream. More...
     
    template<class Seq , class Manip >
    std::ostream & mysqlpp::operator<< (std::ostream &o, const value_list_ba< Seq, Manip > &cl)
     Inserts a value_list_ba into an std::ostream. More...
     
    template<class Seq , class Manip >
    std::ostream & mysqlpp::operator<< (std::ostream &o, const value_list_b< Seq, Manip > &cl)
     Same as operator<< for value_list_ba, plus the option to suppress insertion of some list items in the stream. More...
     
    void mysqlpp::create_vector (size_t size, std::vector< bool > &v, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)
     Create a vector of bool with the given arguments as values. More...
     
    template<class Container >
    void mysqlpp::create_vector (const Container &c, std::vector< bool > &v, std::string s0, std::string s1, std::string s2, std::string s3, std::string s4, std::string s5, std::string s6, std::string s7, std::string s8, std::string s9, std::string sa, std::string sb, std::string sc)
     Create a vector of bool using a list of named fields. More...
     
    template<class Seq >
    value_list_ba< Seq, do_nothing_type0 > mysqlpp::value_list (const Seq &s, const char *d=",")
     Constructs a value_list_ba. More...
     
    template<class Seq , class Manip >
    value_list_ba< Seq, Manip > mysqlpp::value_list (const Seq &s, const char *d, Manip m)
     Constructs a value_list_ba. More...
     
    template<class Seq , class Manip >
    value_list_b< Seq, Manip > mysqlpp::value_list (const Seq &s, const char *d, Manip m, const std::vector< bool > &vb)
     Constructs a value_list_b (sparse value list) More...
     
    template<class Seq , class Manip >
    value_list_b< Seq, Manip > mysqlpp::value_list (const Seq &s, const char *d, Manip m, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)
     Constructs a value_list_b (sparse value list) More...
     
    template<class Seq >
    value_list_b< Seq, do_nothing_type0 > mysqlpp::value_list (const Seq &s, const char *d, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)
     Constructs a sparse value list. More...
     
    template<class Seq >
    value_list_b< Seq, do_nothing_type0 > mysqlpp::value_list (const Seq &s, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)
     Constructs a sparse value list. More...
     
    template<class Seq1 , class Seq2 >
    equal_list_ba< Seq1, Seq2, do_nothing_type0 > mysqlpp::equal_list (const Seq1 &s1, const Seq2 &s2, const char *d=",", const char *e=" = ")
     Constructs an equal_list_ba. More...
     
    template<class Seq1 , class Seq2 , class Manip >
    equal_list_ba< Seq1, Seq2, Manip > mysqlpp::equal_list (const Seq1 &s1, const Seq2 &s2, const char *d, const char *e, Manip m)
     Constructs an equal_list_ba. More...
     
    template<class Seq1 , class Seq2 , class Manip >
    equal_list_b< Seq1, Seq2, Manip > mysqlpp::equal_list (const Seq1 &s1, const Seq2 &s2, const char *d, const char *e, Manip m, const std::vector< bool > &vb)
     Constructs a equal_list_b (sparse equal list) More...
     
    template<class Seq1 , class Seq2 , class Manip >
    equal_list_b< Seq1, Seq2, Manip > mysqlpp::equal_list (const Seq1 &s1, const Seq2 &s2, const char *d, const char *e, Manip m, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)
     Constructs a equal_list_b (sparse equal list) More...
     
    template<class Seq1 , class Seq2 >
    equal_list_b< Seq1, Seq2, do_nothing_type0 > mysqlpp::equal_list (const Seq1 &s1, const Seq2 &s2, const char *d, const char *e, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)
     Constructs a equal_list_b (sparse equal list) More...
     
    template<class Seq1 , class Seq2 >
    equal_list_b< Seq1, Seq2, do_nothing_type0 > mysqlpp::equal_list (const Seq1 &s1, const Seq2 &s2, const char *d, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)
     Constructs a equal_list_b (sparse equal list) More...
     
    template<class Seq1 , class Seq2 >
    equal_list_b< Seq1, Seq2, do_nothing_type0 > mysqlpp::equal_list (const Seq1 &s1, const Seq2 &s2, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)
     Constructs a equal_list_b (sparse equal list) More...
     

    Detailed Description

    Declares templates for holding lists of values.

    Function Documentation

    ◆ create_vector() [1/2]

    template<class Container >
    void mysqlpp::create_vector ( const Container &  c,
    std::vector< bool > &  v,
    std::string  s0,
    std::string  s1,
    std::string  s2,
    std::string  s3,
    std::string  s4,
    std::string  s5,
    std::string  s6,
    std::string  s7,
    std::string  s8,
    std::string  s9,
    std::string  sa,
    std::string  sb,
    std::string  sc 
    )

    Create a vector of bool using a list of named fields.

    This function is used with the ResUse and Result containers, which have a field_num() member function that maps a field name to its position number. So for each named field, we set the bool in the vector at the corresponding position to true.

    This function is used within the library to build the vector used in calling the vector form of Row::equal_list(), Row::value_list(), and Row::field_list(). See the "Harnessing SSQLS Internals" section of the user manual to see that feature at work.

    ◆ create_vector() [2/2]

    void mysqlpp::create_vector ( size_t  size,
    std::vector< bool > &  v,
    bool  t0,
    bool  t1 = false,
    bool  t2 = false,
    bool  t3 = false,
    bool  t4 = false,
    bool  t5 = false,
    bool  t6 = false,
    bool  t7 = false,
    bool  t8 = false,
    bool  t9 = false,
    bool  ta = false,
    bool  tb = false,
    bool  tc = false 
    )

    Create a vector of bool with the given arguments as values.

    This function takes up to 13 bools, with the size parameter controlling the actual number of parameters we pay attention to.

    This function is used within the library to build the vector used in calling the vector form of Row::equal_list(), Row::value_list(), and Row::field_list(). See the "Harnessing SSQLS Internals" section of the user manual to see that feature at work.

    ◆ equal_list() [1/7]

    template<class Seq1 , class Seq2 >
    equal_list_b<Seq1, Seq2, do_nothing_type0> mysqlpp::equal_list ( const Seq1 &  s1,
    const Seq2 &  s2,
    bool  t0,
    bool  t1 = false,
    bool  t2 = false,
    bool  t3 = false,
    bool  t4 = false,
    bool  t5 = false,
    bool  t6 = false,
    bool  t7 = false,
    bool  t8 = false,
    bool  t9 = false,
    bool  ta = false,
    bool  tb = false,
    bool  tc = false 
    )

    Constructs a equal_list_b (sparse equal list)

    Same as equal_list(Seq&, Seq&, const char*, bool, bool...) except that it doesn't take the const char* argument. It uses a comma for the delimiter. This form is useful for building simple equals lists, where no manipulators are necessary, and the default delimiter and equals symbol are suitable.

    References mysqlpp::do_nothing, and mysqlpp::equal_list().

    ◆ equal_list() [2/7]

    template<class Seq1 , class Seq2 >
    equal_list_b<Seq1, Seq2, do_nothing_type0> mysqlpp::equal_list ( const Seq1 &  s1,
    const Seq2 &  s2,
    const char *  d,
    bool  t0,
    bool  t1 = false,
    bool  t2 = false,
    bool  t3 = false,
    bool  t4 = false,
    bool  t5 = false,
    bool  t6 = false,
    bool  t7 = false,
    bool  t8 = false,
    bool  t9 = false,
    bool  ta = false,
    bool  tb = false,
    bool  tc = false 
    )

    Constructs a equal_list_b (sparse equal list)

    Same as equal_list(Seq&, Seq&, const char*, const char*, bool, bool...) except that it doesn't take the second const char* argument. It uses " = " for the equals symbol.

    References mysqlpp::do_nothing, and mysqlpp::equal_list().

    ◆ equal_list() [3/7]

    template<class Seq1 , class Seq2 >
    equal_list_b<Seq1, Seq2, do_nothing_type0> mysqlpp::equal_list ( const Seq1 &  s1,
    const Seq2 &  s2,
    const char *  d,
    const char *  e,
    bool  t0,
    bool  t1 = false,
    bool  t2 = false,
    bool  t3 = false,
    bool  t4 = false,
    bool  t5 = false,
    bool  t6 = false,
    bool  t7 = false,
    bool  t8 = false,
    bool  t9 = false,
    bool  ta = false,
    bool  tb = false,
    bool  tc = false 
    )

    Constructs a equal_list_b (sparse equal list)

    Same as equal_list(Seq&, Seq&, const char*, const char*, Manip, bool, bool...) except that it doesn't take the Manip argument. It uses the do_nothing manipulator instead, meaning that none of the elements are escaped when being inserted into a stream.

    References mysqlpp::do_nothing, and mysqlpp::equal_list().

    ◆ equal_list() [4/7]

    template<class Seq1 , class Seq2 , class Manip >
    equal_list_ba<Seq1, Seq2, Manip> mysqlpp::equal_list ( const Seq1 &  s1,
    const Seq2 &  s2,
    const char *  d,
    const char *  e,
    Manip  m 
    )

    Constructs an equal_list_ba.

    Same as equal_list(Seq&, Seq&, const char*, const char*) except that it also lets you specify the manipulator. Use this version if the data must be escaped or quoted when being inserted into a stream.

    References mysqlpp::equal_list().

    ◆ equal_list() [5/7]

    template<class Seq1 , class Seq2 , class Manip >
    equal_list_b<Seq1, Seq2, Manip> mysqlpp::equal_list ( const Seq1 &  s1,
    const Seq2 &  s2,
    const char *  d,
    const char *  e,
    Manip  m,
    bool  t0,
    bool  t1 = false,
    bool  t2 = false,
    bool  t3 = false,
    bool  t4 = false,
    bool  t5 = false,
    bool  t6 = false,
    bool  t7 = false,
    bool  t8 = false,
    bool  t9 = false,
    bool  ta = false,
    bool  tb = false,
    bool  tc = false 
    )

    Constructs a equal_list_b (sparse equal list)

    Same as equal_list(Seq&, Seq&, const char*, const char*, Manip, vector<bool>&) except that it takes boolean parameters instead of a list of bools.

    References mysqlpp::equal_list().

    ◆ equal_list() [6/7]

    template<class Seq1 , class Seq2 , class Manip >
    equal_list_b<Seq1, Seq2, Manip> mysqlpp::equal_list ( const Seq1 &  s1,
    const Seq2 &  s2,
    const char *  d,
    const char *  e,
    Manip  m,
    const std::vector< bool > &  vb 
    )

    Constructs a equal_list_b (sparse equal list)

    Same as equal_list(Seq&, Seq&, const char*, const char*, Manip) except that you can pass a vector of bools. For each true item in that list, operator<< adds the corresponding item is put in the equal list. This lets you pass in sequences when you don't want all of the elements to be inserted into a stream.

    References mysqlpp::equal_list().

    ◆ equal_list() [7/7]

    template<class Seq1 , class Seq2 >
    equal_list_ba<Seq1, Seq2, do_nothing_type0> mysqlpp::equal_list ( const Seq1 &  s1,
    const Seq2 &  s2,
    const char *  d = ",",
    const char *  e = " = " 
    )

    Constructs an equal_list_ba.

    This function returns an equal list that uses the 'do_nothing' manipulator. That is, the items are not quoted or escaped in any way when inserted into a stream. See equal_list(Seq, Seq, const char*, const char*, Manip) if you need a different manipulator.

    The idea is for both lists to be of equal length because corresponding elements from each list are handled as pairs, but if one list is shorter than the other, the generated list will have that many elements.

    Parameters
    s1items on the left side of the equals sign when the equal list is inserted into a stream
    s2items on the right side of the equals sign
    ddelimiter operator<< should place between pairs
    ewhat operator<< should place between items in each pair; by default, an equals sign, as that is the primary use for this mechanism.

    References mysqlpp::do_nothing, and mysqlpp::equal_list().

    Referenced by mysqlpp::equal_list().

    ◆ operator<<() [1/4]

    template<class Seq1 , class Seq2 , class Manip >
    std::ostream& mysqlpp::operator<< ( std::ostream &  o,
    const equal_list_b< Seq1, Seq2, Manip > &  el 
    )

    Same as operator<< for equal_list_ba, plus the option to suppress insertion of some list items in the stream.

    See equal_list_b's documentation for examples of how this works.

    References mysqlpp::equal_list_b< Seq1, Seq2, Manip >::delim, mysqlpp::equal_list_b< Seq1, Seq2, Manip >::equl, mysqlpp::equal_list_b< Seq1, Seq2, Manip >::fields, mysqlpp::equal_list_b< Seq1, Seq2, Manip >::list1, mysqlpp::equal_list_b< Seq1, Seq2, Manip >::list2, and mysqlpp::equal_list_b< Seq1, Seq2, Manip >::manip.

    ◆ operator<<() [2/4]

    template<class Seq1 , class Seq2 , class Manip >
    std::ostream& mysqlpp::operator<< ( std::ostream &  o,
    const equal_list_ba< Seq1, Seq2, Manip > &  el 
    )

    Inserts an equal_list_ba into an std::ostream.

    Given two lists (a, b) and (c, d), a delimiter D, and an equals symbol E, this operator will insert "aEcDbEd" into the stream.

    See equal_list_ba's documentation for concrete examples.

    See also
    equal_list()

    References mysqlpp::equal_list_ba< Seq1, Seq2, Manip >::delim, mysqlpp::equal_list_ba< Seq1, Seq2, Manip >::equl, mysqlpp::equal_list_ba< Seq1, Seq2, Manip >::list1, mysqlpp::equal_list_ba< Seq1, Seq2, Manip >::list2, and mysqlpp::equal_list_ba< Seq1, Seq2, Manip >::manip.

    ◆ operator<<() [3/4]

    template<class Seq , class Manip >
    std::ostream& mysqlpp::operator<< ( std::ostream &  o,
    const value_list_b< Seq, Manip > &  cl 
    )

    Same as operator<< for value_list_ba, plus the option to suppress insertion of some list items in the stream.

    See value_list_b's documentation for examples of how this works.

    References mysqlpp::value_list_b< Seq, Manip >::delim, mysqlpp::value_list_b< Seq, Manip >::fields, mysqlpp::value_list_b< Seq, Manip >::list, and mysqlpp::value_list_b< Seq, Manip >::manip.

    ◆ operator<<() [4/4]

    template<class Seq , class Manip >
    std::ostream& mysqlpp::operator<< ( std::ostream &  o,
    const value_list_ba< Seq, Manip > &  cl 
    )

    Inserts a value_list_ba into an std::ostream.

    Given a list (a, b) and a delimiter D, this operator will insert "aDb" into the stream.

    See value_list_ba's documentation for concrete examples.

    See also
    value_list()

    References mysqlpp::value_list_ba< Seq, Manip >::delim, mysqlpp::value_list_ba< Seq, Manip >::list, and mysqlpp::value_list_ba< Seq, Manip >::manip.

    ◆ value_list() [1/6]

    template<class Seq >
    value_list_b<Seq, do_nothing_type0> mysqlpp::value_list ( const Seq &  s,
    bool  t0,
    bool  t1 = false,
    bool  t2 = false,
    bool  t3 = false,
    bool  t4 = false,
    bool  t5 = false,
    bool  t6 = false,
    bool  t7 = false,
    bool  t8 = false,
    bool  t9 = false,
    bool  ta = false,
    bool  tb = false,
    bool  tc = false 
    )

    Constructs a sparse value list.

    Same as value_list(Seq&, const char*, Manip, bool, bool...) but without the Manip or delimiter parameters. We use the do_nothing manipulator, meaning that the value list items are neither escaped nor quoted when being inserted into a stream. The delimiter is a comma. This form is suitable for lists of simple data, such as integers.

    References mysqlpp::do_nothing, and mysqlpp::value_list().

    ◆ value_list() [2/6]

    template<class Seq >
    value_list_b<Seq, do_nothing_type0> mysqlpp::value_list ( const Seq &  s,
    const char *  d,
    bool  t0,
    bool  t1 = false,
    bool  t2 = false,
    bool  t3 = false,
    bool  t4 = false,
    bool  t5 = false,
    bool  t6 = false,
    bool  t7 = false,
    bool  t8 = false,
    bool  t9 = false,
    bool  ta = false,
    bool  tb = false,
    bool  tc = false 
    )

    Constructs a sparse value list.

    Same as value_list(Seq&, const char*, Manip, bool, bool...) but without the Manip parameter. We use the do_nothing manipulator, meaning that the value list items are neither escaped nor quoted when being inserted into a stream.

    References mysqlpp::do_nothing, and mysqlpp::value_list().

    ◆ value_list() [3/6]

    template<class Seq , class Manip >
    value_list_ba<Seq, Manip> mysqlpp::value_list ( const Seq &  s,
    const char *  d,
    Manip  m 
    )

    Constructs a value_list_ba.

    Parameters
    san STL sequence of items in the value list
    ddelimiter operator<< should place between items
    mmanipulator to use when inserting items into a stream

    References mysqlpp::value_list().

    ◆ value_list() [4/6]

    template<class Seq , class Manip >
    value_list_b<Seq, Manip> mysqlpp::value_list ( const Seq &  s,
    const char *  d,
    Manip  m,
    bool  t0,
    bool  t1 = false,
    bool  t2 = false,
    bool  t3 = false,
    bool  t4 = false,
    bool  t5 = false,
    bool  t6 = false,
    bool  t7 = false,
    bool  t8 = false,
    bool  t9 = false,
    bool  ta = false,
    bool  tb = false,
    bool  tc = false 
    )

    Constructs a value_list_b (sparse value list)

    Same as value_list(Seq&, const char*, Manip, const vector<bool>&), except that it takes the bools as arguments instead of wrapped up in a vector object.

    References mysqlpp::value_list().

    ◆ value_list() [5/6]

    template<class Seq , class Manip >
    value_list_b<Seq, Manip> mysqlpp::value_list ( const Seq &  s,
    const char *  d,
    Manip  m,
    const std::vector< bool > &  vb 
    )
    inline

    Constructs a value_list_b (sparse value list)

    Parameters
    san STL sequence of items in the value list
    ddelimiter operator<< should place between items
    mmanipulator to use when inserting items into a stream
    vbfor each item in this vector that is true, the corresponding item in the value list is inserted into a stream; the others are suppressed

    References mysqlpp::value_list().

    ◆ value_list() [6/6]

    template<class Seq >
    value_list_ba<Seq, do_nothing_type0> mysqlpp::value_list ( const Seq &  s,
    const char *  d = "," 
    )

    Constructs a value_list_ba.

    This function returns a value list that uses the 'do_nothing' manipulator. That is, the items are not quoted or escaped in any way. See value_list(Seq, const char*, Manip) if you need to specify a manipulator.

    Parameters
    san STL sequence of items in the value list
    ddelimiter operator<< should place between items

    References mysqlpp::do_nothing, and mysqlpp::value_list().

    Referenced by mysqlpp::value_list().

    mysql++-3.3.0/doc/html/refman/functions_w.html000644 000765 000024 00000007246 14042362133 022027 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
    MySQL++  3.3.0
    Here is a list of all documented class members with links to the class documentation for each member:

    - w -

    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1UseRemoteConnectionOption__inherit__graph.png000644 000765 000024 00000011670 14042362133 032743 0ustar00tangentstaff000000 000000 ‰PNG  IHDRª\þ½.†sRGB®ÎérIDATxí ¸MUÇ_×"ÊLE¦B$‘)_”) $cE#’”© ORzHQôTOJ”y|$ÂM*™ç[(2Eƈpq¿ý{ÙçÛgß}Ü{îÝçsîµÞç9÷ì½öZï^ë¿þï»ÞµÖ¾ggH°DŒ¢˜(¯Ÿ©žA@0D5DH¢¦‰n2•Œz¢Îž=[2dÈ`>Ä K—.Qo QOÔï¿ÿ^,ÌùÌÇ ¾ùæÙ²e‹!jÔ#`*˜&ˆzš&P4•Œ8†¨‡ØÜÀ2ù¡$½ëX¿~½äË—O *äKSO:%±±±'… –Úµkëwr”¯]»V (à[]’sÏhÈcH7DMª ç Aƒ4Ž„,3fÌ1cÆÃêÔ©SÕ›6lØPÉK§C¯›ï¾ûN ±råJ%Y¼x±œ;wNæÌ™£1#i‰'ÏË1‚œ>}ºlܸQÏ?.C‡Õ5cÆŒšæ¥ ëF ŒŽ{2Ñ+X°`º^ Èäl|z;¶Ÿ ]ððáÃ{r^¯^=éÕ«—Nj f=„€ðá–[nщí™È.„p¡téÒrðàAaâE:žŒ‰„$V=z´æeÅ0dºÿþû5¶lÙ²¥.KAp¼:1-FÄ61⥠’º0)´¥Y³f2sæLaRÇOèâgûÝ×ÒÜ9NG³XdJ°:1ÕU´& Öúc‚Õ©],Ï–`MdiXäÑ4+ÆM°–ƒ×˜`Ń I,OH·†ØkÈO°¼p -©kõAïm‘;(k(]èwד‚ÜÓY— eÉ8±&‡ õë×OFÎË›%]{TÛk°Ù¦M]‹ÌŸ?¿,ij,í¸Åû¹¯qÎ’[ÐåŒoÝ×ÝçÙ²eó¼7ù¼t±‚á%áÜÓ«|ZI»"ˆÊPNlÉîR8ÂR”sø饗<‹ÿùçŸbÇ—žÂHôSW·ú¬WQYö —¤ôœ=û¶{1{öìöaÐwR8(s'~êJâViêò3ëOS½b*›Ë"'}wkžÿ’M3ŸìÙoIÈ•ë?i¦¾`kíÂ%Ý—9G¾&%¥Ô®=ØZJÚo­Ã•L™Ì€•RÝå ’nDRq¾gÏQkõ\}u6k .šLQ7†¨nDRq>cÆJ«tkáÿ´L˜°,šLQ7†¨nDRq9OŸŽ×ýõØØ_¬G ƒ·=S¡úŠ/jˆê¶nÝ/ýu< -sæŒÖc‚öó‰æ Å¢¦ºà‚S¦,·á»ðôWþÇŽý!8“9K1†¨)†.¸àäÉË­gJÏ%®ZµÃzÂþÂÓþAÌIØ¢† YâkÖìôŒGytöìu‰ ˜”°0D ²Ä&MúÙzj?ñÄéäÉÓòÅ?&.`RÂFàŠØë•0 Ì»Áz.U¬%ùßõ< Ê^ÊÆ»5^Í™3ñ „y›+:»Ù™ò¡ûããφ~¼k\ÜŸÖ˜>¤š³dÉ(Ù²y?¢çí¯Æ£úÐÕ,EñA®º*³åY3J®\Ù|ÐlTؘÕF§o†ü˜˜ ÿ¶â“J£ÆBÀÕg—ž?ožóñVCT¿5ú"ƒ€ñ¨‘ÁÕhõCTŸ51ªÏ€^Tgˆê3®&FõPCÔÈj´FãQ#ƒ«Ñê3†¨>jÔECÔÈàj´úŒ€!ªÏ€u‘AÀÕg\Íò”Ï€^Tgˆê3®fyÊg@ Q#¨ÑŒGõW†~>FüEÀÕ_</öYí¯ÎõЧ@ÚÀÕç~2C¿Ï€^Tgˆê3®ÌúùñCTñ4Ú"„€!j„€5jýEÀÕ_ƒ@²àý±Ë—/Êo†þ 8ÌI´"`ˆ­=cê„€!jæ$ZŠQ£¡’¼—žwz½Á9ÜúíÙ³ÇzKÉi)Q¢D è† äú믗ܹsÒ’:غu«>|8÷•/^\ßHü?9rDV­Z%Ö«Ý¥fÍš¾`•šêoÛ¶MòäÉÑzDG4i’¬^½:5¸Ê.^¼X¦L™8ç`øðáòË/¿¥%u2vìX™>}ºõ£¼eýúõòþûï oš¶&£I ûz‡äܹs!Ë­Y³Fºté"+V¬ãÇk{† 2¤.@Î!C†¨úÍ›7[o„ù+R·R½a{ÔE‹É?ü`½¡n·œ9sFxà™9s¦õF³b-)ÈÊ•+%GŽÒ¢E õfÏ=÷œäøñã…²x2ò•*UJ¦M›&“'OVÇkÄ;vìhìœ9s”râÄ yá…¤FBG–)SF˜Þzë­Ò»woë‡r³IÏž=åÅ_”"EŠŽÊ<þþûo­×ÚµkU_¿~ý¬7î]-Ÿ}ö™ðúó¼yóJ×®]…W¨#µjÕÒ¶r¼wï^iÛ¶­Ö‹ó¡C‡ÊºuëTO¯^½¬õýWÞyçámÔxã|P=àŽ;´\³fÍÏ.”»îºKºu린eËmÓ[o½åYÒ©WõêÕ¹µ ÆÇ?þ¼ 4H~ýõW)]º´ê‰—÷Þ{ÏúÍÖ,²iÓ&½FöÁ¨AüôÓOÖo»fÚO^ÿé§Ÿª®Ö­[K“&M¬—hÄË»ï¾+K—.Õ~£üÀ…W¶çÏŸ_û¹`Á‚Ê:À|+VTÃ*[¶¬,\¸Pn¸áyã7‚^/o·ãRßa{T¬øÇëE¯R®\9ù裤GR»vm™5k–6vÁ‚zO<#/\øã?dÙ²e2fÌiРz'ô|þùçÒ·o_iÚ´©zˆS§Nê ð,Qôïß_:uê$Ÿ|ò‰^ƒ¸9sæÔó£GÊÏ?ÿ¬é Â"ÎcMðø3oÞ<ëGw¯²~cÿ 5ˆI™Î†<¯¾úªvÅñ´ ¢ãï¸ã­ç)¤ãþx[:ÏGžöíÛk]12:nâĉZ›?üP7n¬„F7óì³ÏêlŸ>}<ërìØ1Ù¿¿”/_>¨E­ZµRbàõ!}‚ÑÑÔïKÿ¼þúë2þ|9tèH\\œ†o½Y‰ !ñØ8?þØz§ëNá0²Ñ£Gkÿr!UË–-eß¾}ÖÏ¿ÿ£ÆÈh>õêÕSÂSÑ]»v)™GŒ!´Áî³ F$q6Qч'«P¡‚TªTI¿íc sð8PBשSG½çH|±!1€£oU´hÑDU\ò£/E'!Í›7âÄF©ÆÚ¯×ÚÇxi/‰‰‰‘Â… ký¦Nªúî»ï>)òå˧Þoh¿ÿþ»à}08ŒO‚0º@ˆY¨P!õZ¤cx#ðÈš5«zÕ*Uª(I00:÷‘GQ/̨„¡pOž€dèu×ï‹w{ ukÓ¦+VL HÔAÐOŒ8ö0§ð%Qc#¶ç^`Œ†X÷Þ{¯âË:;íÂYà„h§-ÜãƒÀ=ö˜êÁáÐ&êEßvÛmûÛå’ó"¢Ò8„Ï•+WÐ}b–èT>€ð4tÖ†ÕB\»³QÀðãÀ°¯E#v:iL(B ÄNá¾ÔãÀsd÷îÝÕ[ÒY›Pƒy:˰EèÂ0†P†X•üä…|ä@Ñ™tª-Ô,l¡¼;.õª 82ÑÄ(l¡,až ½ö$Ñ©ÓI&êÄ5ÄN·Ó¸'õ´ÛW„t`H8‡ÐOLœ¼„òöý¹N›BÝË«ü¥ÒRDÔK)ää$&¥AXð’%K4îc80`€zÓªU«ªç¢1xJb^·0wsaéÄPE9,øÆoÔ4b>¼.b33§,C‚áàˆ§ðîä'¦ÄúñðFlV·n]&íÎTÿÜ|óÍÖëzNi(ƒA<úè£ÚV&\IIÉ’%u¨dX¥>Ô ok ª.õë×—/¿üRÉD~†lêH ˆâH„]F§NMLâOµjÕ´]„bŒZ`B]ðª`νG¥š¸æòÑòQ–‘ÆåœùRrü?3OIiWûñ6HȰIƒ‘Ê•+k¼ÃD‹F×0¤ÓaíÚµÓ8ÊI[1ñ!&& %¾ƒdx¥—_~YïÁ71:ÇÄoÄ~ä%.fòñ¨ÄǬ _‘±‰]ñPܳ½_2B¸Å¢‰-ñ´ƒ¶^|6[Ë0ɸ”Ð>èÆ“ƒC¼M*Œ‘ú'{Õ¼h?¸ ´…8yøá‡5V7nœNt™Ðy‰¯ói8 º1Qf"D¼!ç‚%aÌ›o¾©#)!q«-Äõ †Îís‹Ý~wzRçA¯ïÁÛ‹¥v¯/Ae±<{˜À32©ÂÃ:;B@RfìÑže³$XX6ùm"3Ñ ÙÎÐáR EÀӱ¶@vÒ1gça ÜÓ9ŒÙeB}×ÓÑ‘ÉêE\‡·ïqI·Ûª.äB »¬}_êBº3ܰ¯%çÃeøG‡Sp>ÎPJ¿:û“ü`Šc°ÛàÔ‘œcbk&ÒŒ¶øêQQÊDƒ8Ž Ú&)éÄjx,·$E¯ëtLrIÊýÒk²,—¸®`€á õÂxœ‚!9;8T]( Á½$%uqêa`ÏœéN’’ÊÂé§þKûNT:žµ4‚þp„ÅcgÙ“·Ž3fyE÷u¿Ï‰o‰;‰I14†C·óº'Þšå.òI=¾O¦˜†KRš;‡e&O|ÜâåaÝyü:Ÿ0a‚ƋĢ,׌9R×B!a(a=•õIV#ˆÉøƒ€ïÕŸj]~-ÄÓÄÉLLœ3Wvðê#Û©Î3b8ÔY üÙ¾}»6ÄkŠ•¯£Ëßòè¬ï5:›~­Øú$Œq’-lP@@&2î3–´˜µwîÜY'U,?!^»P¡vŒ´€ù“CÔD\H°gßîË,»Ø“÷Î×}cì86Ô.z™U³¥ìÞ1rßÓœ[“q‚7ì^ÙžÓ™ƒM–³ç̘¥{çÌ™Ÿå¥P»PÎÉ#ñ¹½‹ã,oŽ/ `ˆ‚ MySQL++ Reference Manual MySQL++: Member List
    MySQL++  3.2.5
    mysqlpp::Query::RowCountInsertPolicy< AccessController > Member List
    mysql++-3.3.0/doc/html/refman/functions_n.html000644 000765 000024 00000013245 14042362133 022012 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members
    MySQL++  3.3.0
    Here is a list of all documented class members with links to the class documentation for each member:

    - n -

    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Comparable-members.html000644 000765 000024 00000014262 14042362133 026276 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
    MySQL++  3.3.0
    mysqlpp::Comparable< T > Member List

    This is the complete list of members for mysqlpp::Comparable< T >, including all inherited members.

    compare(const T &other) const =0mysqlpp::Comparable< T >protectedpure virtual
    operator!=(const T &other) constmysqlpp::Comparable< T >inline
    operator<(const T &other) constmysqlpp::Comparable< T >inline
    operator<=(const T &other) constmysqlpp::Comparable< T >inline
    operator==(const T &other) constmysqlpp::Comparable< T >inline
    operator>(const T &other) constmysqlpp::Comparable< T >inline
    operator>=(const T &other) constmysqlpp::Comparable< T >inline
    ~Comparable()mysqlpp::Comparable< T >inlineprotectedvirtual
    mysql++-3.3.0/doc/html/refman/functions_rela.html000644 000765 000024 00000006164 14042362133 022502 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Related Functions
    MySQL++  3.3.0
     
    mysql++-3.3.0/doc/html/refman/inherit_graph_19.png000644 000765 000024 00000003225 14042362133 022436 0ustar00tangentstaff000000 000000 ‰PNG  IHDR“%FvÛ}bKGDÿÿÿ ½§“JIDATxœí›_HSïÇ_“³ˆùo¡¹ÃQt!]ä…"TXHšu‘M)ƒ’¢0Åú'QXRVˆRЕ¹f‰EA„šXAB I0*K 3kÛó½G›óèæiýúñ¼îžÏç<ŸóÞÇ·ÏÙžsŽF!HæÏ½¨¿­@òÿƒ4“D5¤™$ª!Í$Q m` ½½«W¯þ -’ˆ{÷îM‹M[™°Ûí$ù÷œÑÓV¦)‚9O"±ÙlÍÉïLÕf’¨†4“D5¤™$ªñÏ›idd„#GŽ0>>þGÏcµZ©««›ohh ±±qÖù¿ë Ô|ëÖ-þºŽy#hllAÂÿ³  @|ýúõžG«ÕЍ¨(ÑÑÑáß³gØ·o߬óרyÛ¶m¢´´ô¯ë˜ þ°©º2¹Ýn?—OLL066R ¯×˧OŸ‚愌ŒŒÌ©ÎÏŸ? 9§ÄêÕ«9pàn·;乡¢Ô‡Hê…y›©··NGuu5ÉÉÉ$$$pêÔ)NŸ>M\\z½žÃ‡°cÇöïßï›ëv»INN¦©© €óçÏ“ššÊÊ•+III¡­­ÍwlKK ƒ¤¤$²³³)..¦¢¢ÂOË‹/0™L;v £ÑH||<ÅÅÅŒ+檫«ÉÉÉñÕ TUU144DMMMÐ^8t:¾Ø–-[¨­­ ©§J}ˆ¤ŽPQeeš˜˜ »»‡ÃA]]—.]¢»»›¾¾>ž|˜Ö!„ß&WÁ@J(õ!’:ÂAµËܹsçHLL¤  €²²2–,Y¦M›ˆŽŽ¦§§‡‚‚Ün7­­­Øív¶oߎN§CÁØØõõõ8NNœ8á;îîÝ»ÄÆÆb±XˆŽŽ&??ŸÌÌ̵TVV²`Á–.]JYY=š5—››‹Õjõ8ž¢°°œœÊËËçß´ (õ!’:ÂA53%%% ÕNÞ¡1™L¾œF£Áãñ Óé(,,Än·ãv»yðà%%%¤¥¥qçÎl6)))¤§§óøñcúúúÈÊÊò;ߊ+‚êÐëõ$&&úÆF£§Ó9k.nܸÁóçÏ}—g%¦Vá¹¢Ô‡HêÕÌ5s)ñÛ“Á%%%477óìÙ3bbbX¿~=0y)ËÎΦ³³“ÏŸ?STTÄÁƒ'!!¡¡!¿šÁ–w€oß¾ùýèèèðO) F£‘ .`±Xü¾Èk4¿ËIoooHµ•úIáñ}¦uëÖ¡Óé°Z­ìÚµËg—/_²uëV\.ƒ¼¼<¼^/7n¤««‹W¯^ÐÕÕE{{{Ðú^¯—›7oÐÓÓCKK ¹¹¹³æ:::üözÇ:t£ÑHss³/–ššŠV«Åf³“7ËBêR"©#"n¦¨¨(vîÜÉÛ·oÙ»w¯/¾yóf.\Hrr2˜Íf.^¼HLL YYYœ9s†ÌÌLL&f³™µk×­¿hÑ"ž>}ÊòåËY³f ™™™=ztÖÜÇ©ªªòÕ ûõõõ~+òÔ?Iii)ƒÛ·oûÌ:W”úIa¦”j\»vMlذaZÜëõ ‡Ã!^¿~-¼^ï´¼ËåïÞ½GìÞ½[?~Ü/ßÖÖ&ôz½Bˆþþ~ár¹æ”S›ááañåË—°çÏÖ‡Hé†Ò¦åŒÏ3ý †‡‡q8ÔÖÖråÊ•iyFêU«fœG\\ܜεlÙ²°rj ×ëç5¶>DJG¨DÔLýýýX,ÊËË}[á’––F||¼_lñâÅddd=^)'Qþ/aN=I'ä»™’ (øC¾„)Qi&‰jH3ITCšI¢3þš›Ú=•H~g¦; `¦™Þ’HfbÚÖ€D&rk@¢ÒLÕf’¨†4“D5þ24F)”kIEND®B`‚mysql++-3.3.0/doc/html/refman/inherit_graph_31.png000644 000765 000024 00000003616 14042362133 022434 0ustar00tangentstaff000000 000000 ‰PNG  IHDRz³ñ›sRGB®ÎéHIDAThíZghUKžÄ{7–ˆ]TìŠ" †Ø+¨X±Š"&°bH,(("úÃòCÅ^PAüaWì5£b"ö’Ø7ß¼·‡soÎ1÷Æ<5׳pïÙ3»;;3ßìÌì冱4òZ¨[ 5<Ô5ôôû×Љ'x@ÿ%@r´iGŽA¾ö>!`ƒ””+ž)>'Z€¦Ù³g|mЯ_?JMMõ‰U>@ûŒx/!eè‚Ó]hwÛ„ÔÈôÕ«WéÉ“'¹fä?ÒîÝ»iÓ¦Môüùó\ã£}ûöé´S§NѳgÏYâ8çâÅ‹?-ûôâÅ‹éСCŽ K¼rå 5kÖŒ.\¸@èÇÄÄÐÁƒƒe“ãùýû÷×µ“&M¢sçÎå˜Obb¢êc²0h 7oÞL¤-ZPƒ hÅŠT¯^=ªU«|ø@7¦/^Д)S¨R¥Jú~éÒ%_¶lU®\™:tè@]»v¥k×®Yº¬Y³††ªó«W¯N{÷îÕ±æÍ›Óرc©|ùòÔ·o_ÊÌÌTzçÎéöíÛ>ý={ö¨\óçϧ… Ò®]»èÍ›7:{GGGS“&M,Þ+W®Ty 'ôBs“ãúõëÔºukÕiâĉôõëWúüù39RyŒ1‚¾}û¦<ܾœö{ôèµmÛ–¢¢¢ÔÎàkÚ«W¯¨]»v¡ -à§ý²5wî\–ë•”¥/Âq‘"EøÄ‰vì×­[—EP^²d 6Œ_¾|É¥J•bÜÝ ãÓ§O+ 6°x1—+WŽoܸÁÛ¶mcq*åÁÓ§Oçôôt–ªc€Ü?Ö9¦/)€‹-ÊU«Vå &ðt\Àf1$‹c±„u®_¿>ƒ†ý0gûöí\±bE~÷î«Ý»wgq >{ö,‹3óªU«X7jԈϜ9ÃãÆã‚ ê~°Áþýûµo¾Üö›:uªÊ ýÚ·o¯úõîÝ›wîÜÉ­ZµâiÓ¦®O¹^ñ–-[ìã)>?˜ ´œ>e²qãF–Ó¨}("ÞÆ’¹xñâ,žÉ£Gæ (0x\\œ*,ž¯ÆìÑ£‡%LíÚµ³=fÌk¼Zµj|ÿþ}Ðmýúõ<|øpkŽS]»v-ËéçÈÈHgÇŽún昭[·rŸ>} IÇAƒÃùËç+T¨Käb9ù † ¢ú†vçÎ grÚ¯aÆl~ì€ãÞ»wOùW¨P«T©Âß¿·dtë8tèF¨¨Q£†FŒððp*]º´OôN †C#¯r:H"É ¦ñãÇ“x;=|øPCœYŒuþ­dÉ’ aÑ4†ÚÛ·o­9þq2C‘8IT qFB¸MœÑšŽP yÊ–-kÑÄ ŽA0û¡=oݺE_¾|!¤&q$B:éÕ«—‘¹hà/QJûN_<ȲxŠ3[²+VŒJ”(¡ËÛ´iCùòåÓ¢Ò‰_v´S€›œœ¬y´fÍš$a‡äôÑ¢E‹Ôà(¶ºté¢à#Aé›7ofa{ôèQ‚ÁÏŸ?O’.´°Â¤Ã‡kþpvu)##çÃÌ›7ϪâápÎN:ÑñãÇÕIPåKˆ$äxðÅäII#JC9$lS:u´¶˜1c†Ö wïÞUàÜÐ O9q*¾@ø ï´j•Ž;êZ¬AÑûQ¨Jh§÷ïß+-˜¯ˆ`&g7×x0@”L’u QñBÉøøx’œ­… ¹OŸ>‘„v‹½áƒKH׫Š'Ð< ;(‹±nÝ:]×­[7ÅŸéß­/•0KUÌOŸ>µ¦ˆ‘5÷ ‡Û›„cÍë-[¶ÔmÆgΜÉb-Š 99^¢€!eûDè4ÿõë×,'Ìg=ö³Ëí&AŽ´´4†nö&©! Í>nïûïgÆä¦bºA?rt®žhxØåË—õZ€PcNè™æáÝ4{^44ûÞïßÀ '4ІkϳfÉæO§ýÜèùóç׈c_¾Tùþ$×w·ýükWä:ÐÅÈi¦( P’kOøžçì½Ïwï}«„S’„’(šXV²húMzMVàßH,‘„"]DÀŠty“Î æiÊ”)à±ä—¬A¡eà³Ï>óâÄuišS“»îº ¡K~Éd-—_~¹¨€¥™í4K«I’ÈÁ $–ƒELºÈ¼‰€e^›¤&+P:}ä´‹… J¥J•¤Zµj;ÜïÚµkeñâÅ©~öÝw_iذ¡ìµ×^©²èÍßÿ-ï¾û®œvÚi²ß~ûÉÒ¥Keúôé²Ï>ûÈùçŸ/åË—6)–çeË–I©R¥¤råÊ2sæÌÔ˜‡~¸Ô­[7õ½ùí·ßä£>’fÍšE«Šåy—³`=ôLž<9'“7nœÜrË-¶!lÊÓO?-µk×–uëÖeì¿G2bÄÙºu«<üðÃrñÅË¢E‹dÉ’%rÞyçÉðáÃ3¶Í¶â„N°q Òîå—_–×^{M¾øâ L3Ÿ3fÈm·Ý&gœq†lÛ¶-¶›Í›7Ë{ï½[Gá§Ÿ~*]»vÍX¿Ã¡O9`À§^dX´ÝýèÑ£ÝW\á7nìŽ9æ÷ÄO¸£Ž:ÊÕªUËé„­½nŒµûý÷ßݱÇë6lØàn¾ùfwÐAÙóÇlõ>ú¨«^½º;óÌ3]Ë–-Z/שS'7jÔ(÷ÜsϹ+¯¼ÒÞ?ì°Ãœ ‹µiÔ¨‘S!pªÉ®]»vN5ÔÊÏ9ç·|ùò´ûÇÜ]vÙeVæÿrÈ!nìØ±N7Äõïß߯§ÏÙ³g»1cÆ8µT®FnÒ¤Inï½÷vßÿ½oê~úé'wß}÷Ù³Z5›ÅŠnÛ²e‹9r¤4hÕÿðîE‹vß´iSwÓM7¹ªU«ºÓO?ÝýüóÏ®W¯^ `Þq¼Ððƒ>°1êׯo}ÝÿýîÃ?tÌÁÓ_ýåÔ"»O>ùÄ}ýõ×Îrj© ûꫯܪU«ÜE]d¯ÇñqôÑG»²e˺»ï¾ÛmܸѵoßÞU©RŵnÝ:5wxîÛ·¯•ùqã®*øî¥—^ «ÒÑV]Á2¨pH“&M¤OŸ>òì³ÏJÛ¶mÍBèf‰ ˆu¥›${î¹§Sï¼óŽY‚«®ºJtã…~î¹ç{÷ºë®³cI2ÅÂwß}''N”W^yE°jýúõ³º ˆnªè‚Êúõë…~¡“O>9u|…÷kÖ¬±1tó…qÐôSO=ÕŽW_}UÆ/*¨ökÓ¦œrÊ)2xð`ã¯fÍšv$Ùú‡q=XF4ÿý÷ß—¹sçÊÔ©SEPàRx»Çê0·iÓ¦É?þ(&L)Y²¤¼ð ±¼ÀgÏž=E•Lž|òÉ´£ž¾^ýuÿÞ½{ G¿*²<öØc¢Â!óæÍ3^±Øþù§Y_‰ããÁ`¹õÖ[má›(pà 7¤øWÁ–Ús6 uDrž«6ˆj¨aÿÍ7ßȹçž++W®Õ&Û¼K.¹ÄŽ%Õ&›xá™gž±IЮyóæ¢&uêÔÙŽoާ#{!ÒãOp$Ød@ó¦M›¬Ž3›î ¬†B1ô·b„ꤓN²¹!ž°6ÿüó´+Ö,$=ní±téÒÀ ëâxÁJ±¶¬1„ x zûí·ý£]õ\²9xàöÇùñ¡°ÇÖÁE<á\† eÁò‹Ã1ƒ¹VlfÚ 8ÆcÖ1Áh$BÇÆº1ßQâØa¡æÏŸoæ5 „³È,D_hvôÞ þÿç€0~8žc˜æÞ~ûíš9BCÃrÂá™Íc<Ål¢øÓÊLó"4¤Ùk·FV¡xàhï9úò"»†@.W ß÷ ¨WÏÄÒ/ºpêÖû*§IhK•<õÔSîù矷{D;õ¾,}°%¢š¥hHg ÑcÔbIÕ¨dýüñŽ´㑎!¥BªI½(K_©¥qo¾ù¦Óœ¢Sëj€'‚t<©9ËY_jUœ ®ÝëFY{Ò3jQ-%DZˆŸ~œéà´`~5Bï4¸éƒ9Í]¦xÐcÝÖ@ÃN=S›kèÐh8Á1D‹ù@*ô–’#7v§ jó"ÅÈ&u·FÖ¡þQÅu8T¤íXRZ¹¢bùhLÍ=ZŠâšk®±+–)JĨGó8I Yh8Àš6i@=¶h»æñ,ÜAJÄGÕq©yï‚ .ˆc¡Ž /¼Ðʉõ` !Ÿ)Àò*Áñ? ‡‡_-„@ž£þq÷!Àºæ6íž?İZ´haq&ž d"2!;wNË„ð.á„舼°ö‘wÍ áè…cá§ù`2dˆY]¬#–àj®©HŽH‚˜u6›#+N¸˜ñ<)€õfØú4÷`ŽN޵ð§¢(ŒeYþ ñ]\F€÷Ârß.¼²ø¤müØ™'x{rdñ#þÖ㘄¸4/ÏþÃLó†âæÀ¸j}Ò"ïqkDì0Jj%moÀ}jÝó͈DÛô¹HŒä1“Ç‫´’‹¦SòcÍâS~ÜcÙÀþ,–¬Âxô`G‰oÂx—Í'âï7w£™ÏôÈ5Kí/úܪU+Ë"L'ð‹ÅB`=He,2‡}ÿ¾>z…¿0B}Üâ"ïqkÄœ<±$űÆI¦“7öé0ÿ^®®9÷"=cOò{¤.L°â*‹ûw2]ÑB­GÓÐj‹"¶†å㊅ì#p¡P¨­¾¬Ë‰'žhB€ðÓbá9zà‹Eç}¾ÞàC"ñðŽrðõ…ïËFþÀ …óÁ× ðÂí8Æèƒ£ + Øö>ûLë)nDÞ»tébMÀqZD׈õò¼Àê‘¥(o5x¹ùaß܆³%Å$ÐÃv€|ÀHDûÕB8ÕJù¾€¬›ëÔÊ¥Eã3e |»Â\_SK›ªu)P„<š É4?P\ä=nx¿0{àÇÉïZl ßkKô Þʆ°:|—ÄwZ!ÅEªÃ mø®¿'0Ê/JÞ2FË ó N ±R´ÿ9Q´<|Δ áLsˆ‹¼Ç­}d»´Ù*TúøŽŠ#†ë®@`ƒ¸ôI^¼ñE€o —ñ-YtãùBÊеÊðìN ‚LsØ ìå9$Î °Åä //ËΤäÙ}î+³.8ˆþ£ 46*\¼·« ÙÁ¢E‹äçŸ>øˆ“´3²†’‚@Ò}ºäÏŸ_¾ýö[ùðÃeéÒ¥J†^xA„Á¤lûöíeòäÉ$àà 6ȤI“d̘1‚êÞ½»Ö¹páB)V¬˜@¾7j½d0p,EX­Zµ¤P¡B2þ|%¥&¦ÿ9ÿüó…åkÍš5V×ÓO?-gu–téÒEðXœï´iÓdîܹºäµhÑBzô衵­[·N¸÷E>ç=pà@S|;¥ˆ^x¡0õë×טÁÛ^¿~½0ÛW®\)€Š—À+àÖ®]«ƒQ¾|y4h.GW¯^=¹æškäŒ3ÎØ è&MšH¹rå´ŽmÛ¶é`Sèž{îQ’ÜvÛmÄÁ;Q!‰‘þý÷_%‰&¦ÿÁûáA 4¬«H‘"røá‡+ñÒÑ6h BõìÙS–/_.¿üò‹f·k×N=NóæÍSnYK9âàš±C=TŠ/®ÛÞŸ HãÆ•4&LÐAg?ûì3õwß}·6±Ë”g´¢E‹f$íܹS= ^:i[·nÍ(Ü8ýôÓeêÔ©™’YfðF't’¦g¥.¼Ó±Ç›Q„ܽ{·îuÔQú/_>½išQ(6RŽ8ñ0ÁË<ù䓇0xãÆ“aÆ ËqÁïå—_®db˜ï¿ÿ~¯jgΜ©4oÞ<ìsÏ=WË|òÉ'òßÿÉĉ5æ qÉ’%ê娆¤Û·o¼Äرc5ô?ÿüSž{î9q;ì0’$¬.<’ßð¢LÚ¤ïÇ|®¸ÒÊ5—ã<ç ŦM›4vaÿâ‹/–®]»j Qˆ‹X²ªV­ª5ª7s)ïÕÃòvæ™gÊo¿ý&Ò¤3Ó ´Yºˆu^{í5шvXz5j$Ÿ~ú©\ýõzáðzÄDºOŸ>zLX]†¥– ß3â·ñãÇ A:KKm˜yýË; i¼È• sƒ“æžUíwSîJ'ÍÝÿHs gÔåfkšó i.0ÍHcà ¦¦Õ¬Y3Í]þfäõîÝ;ÍÅiŽ4iÎSd¤»%!Í-QiÎKe¤ÅÛpWwÚ¶#[¦¢QuQ°ŸH›þ¾dª, ;îUš»ÍBÉì)’k<³Šû \®s/ä¸ãŽË˜hÄC\ÊÍ;óØç8hÔå‚ùÁý#Ž8"´mÊ…ÕEpf‰´v|²Órq¸§ClÂÝßDŒKoÿruß}÷…ÎÓe/> -@bvÖ•@³I+š«ˆÃen¢¤IïêÆCµ`Á‚Þf¦ïx*Sá8;ÙYWœ¦Hv®»ª: (Y£{#=¡RüZN]ë¹æ“/_±´#Ž8#×ôl/½ôÒø‘M%¡ž½éd):Œt÷iæ¹gJÏH¹jEOÊàÙRóÿívϲ»ƒܳ¢¥!%,ɈÂY³¾w—Òâîÿã”Î)aIFœ@–?ÿÜ©9³g¯tw’ÿ )•·“Œ8ñß±c—{f´Ì¥î ýòç?Ì=Á^(e»Fœ¦N]ê^‹Øó’,¼Ío|(e»Fœö,S;2¥.Y²Ö½i¸-SZ^ß1âø°uë÷ÖÝ*_ÊžMC¼÷ÞžWR÷ÊÌ£ FßÀOœ¸Pòåûß2åeýý÷N·\}áíÚ·CÀîlùh0dÈ,Ý+\øÈôSæ 7凉—Á6ȯ¿nuOå ûŽÈ»›vçØ7ö›6m—E‹ÖjÊüù?¸7øþϽv¹î{ìQî?/Nô•ÎÛ›æq|ã_¼x!©_¿œ¦ìÜù¯û—šµû¾b¶é°Çh°Oq"`ãç=ñMD<žlĉ ï ìÞm/DÀcKU0–ó8øØRLz²'[ª"€1âÄÆrc#`'6>–€'KŽ€'6>–€'KŽ€'»&=Ùˆ]ŽGcĉ ŒåÆFÀ‚¡“Hûì*|@–*ô n½õÖôÿÏÎ~)eÎ~×½k×f'¦¶b¿ëÉŽ¾DÕñÅ_È?þÇ5äLö!NΜŠÕšLŒ8ÉDû jˈs f2O%e­í&¿€i5BÕ^âe’ÑñÚ·ü”õ8¨þ"“ˆ )ªthh"Ìš¨™dt¢ˆe­|ʇÔòã?.N$MUðHGØÕé¨* Êuˆ»b P­)¤¤‘žöW&=ôæ#íŒî7†œ!úáèh"­ZµJ%§!+¢òwÝu—¦ç´dô\ ÈF£¸wÑE©ž¹6œ‚Rš8HC·jÕJ% ¼;î¸C!D ‘ýꫯTii„WQè2dˆ !ýÄO¨D¢‡9rÏhv¢|íµ×êùC X–4$ñnÈ1¢qqÐü|ã7ý©œ–ŒF;­sDaQþ裼î§ÜwÊÆ8 …‚bóhm¢äûì³Ïª.&:ã¿£© Y®»î:Õà¬[·®JLsì¨Q£2ž9*t,… Öášä|b%®úõ×_µÝSO=Un¾ùfªRùi”…éºâ~ “ŒFÕ“Ÿæ;–d4²ÑxGÚFw³[·nRºtiõ8´™ª–Ò¯‚”"ˆ°*ÀâÔÃkxj¿^`{éðÃÏÎþñÇúyøá‡U5%¯©üúä~E=O¾9¯KF{XòÒÄñ:Š´ò»ï¾«k~… ¤aÆîw‡ßÓl–fäšY²Pø%†!þñìÊ+¯Ô™ÿÀÈ 7Ü Ã‡×¥ŒåðÍ7ßTφæ'±P”åuÉh?.)»Tá]f̘á~Nm·ñh‹³ tìØQY‚f–Ž)S¦¨TtýúõU: pÈá ¾R²ÓÄ*x $£ º ¾IGÂp:˜ôd[ªBð1ùèPIFœ ìš|t($#NvM>:”@’'ˆÉG‰Ø5â€1ùè »Fœ0&$b׈ãÆä£}`ÄÙ4âø2ùhq6sõÓñ8ç–p¶ÉGg2»sìÃÊä£}`ÄÙ4ãÈä£}`ÄÙ´'@–Ž€'÷¾¯{ËÍýœ›Y8Fœp\ÜËë&&qb¡cy‘q" ±¥*˜ôd#N>¶TEcĉ ŒåÆFÀv9Lz²'»ƈË€yœØøXnFœ`ˆqø˜…#`Ä ÇEŸŽ瘅#`Ä ÇÅRã `ĉÈ.Ç#€IO6âDàc—ãÀqbc¹±0ÉGG“žlĉÀÇä£#€1âÄÆrã àÿG÷ø)/—ìN')}Ì-òÑÉ£|ùò~ª¤eúON´PjAÚÙÌðظq£êgxû|[ŒãGö³Œ€'ËPYA?F?¶e2Å8Y>* ®\¹REZ³¢â¯›6m’ 6¨–U¼²9•d":›hc%b;wî„׋³Ï>;C0^=ûÚf¼zýù)çqÐÒôëû;›èöâÅ‹U8ê8§w¥âiQùû“Þ¶m[AÙE™åË—'TdG¼v̘1ªâçt©T:ÅâX¶?mƪ7,/aCçDE¾YqÕUWÉøñãU!ÒyóæI¡B…T`5]èÛ·¯Œ9R¥š‹)¢‚¥è_¾óÎ;2zôh9å”ST/Ó“o¦£'NTe^wûöíÕשSG§\¹rªØË,DÒý¨.]ºÈ½÷Þ+èQyÛþF~Ú]RÊôéÓ¡ÖÇ{Lz÷î­‹’^³fÍTÐuáÂ…Z×®]e×®]òüóÏ«,£Q£FZæ»ï¾SýÎîÝ»«wä<—-V¬˜Š¸¢NŒ¢/}ã<À+¯¼¢ÊÅM›6UÜÀY¼ ÊÅhˆ¶hÑB7n,ƒ ’sÎ9GÕ‰½s@¥|‘˜æ\‚ „l“c°w×ÒÒ²eKU6~ùå—•Ô³gÏV¹Éž={ª0®×VV¾ö8Èz3 R¥J HçÎ^”vQæ:uª¶ç@w‹Fæ°aÃT;sìØ±B=¯¿þºôèÑCOfîܹ™vYf€^½z©pýàÁƒµNˆ„Ð*û[¶lQA{2*V¬¨ nëAîb®iit;çÌ™£$,S¦ŒJ&BTDa!9D|ñÅ•8ô9!ÉÑGÏ“å)jH=bÄU(¾å–[´_È\#‹±år–ž6mšvêüùóëy@LˆÀ¤8p ¬Y³F P­Z5¯ëú]¹re%*Åa„µIßÀ˜‰DôÓ©û©´ä²eË”¸ô‹óHÔ& 0Ó‘=®Zµª~{ÛH)W¯^]å ‚Õ«WO½ûÌ:¼ DƒT€AÌ"¿Jw‘òÔÁ 3s1¼ƒ‰´´'<Ͻ'/.òo{u1( Ó³™€€ûÈ#T/Z¼xqY°`’céÒ¥z(eÚµk'%J”6mÚ¨~'²ÌîÍ›7«y•*U4†á<ðTöŽ>úh¯y©]»¶¬^½ZAÉø"'Hw£ìºuët09'Úe‰Ã›û ²“N±  Ü«M¼?cU£F ż™0ØÕW_-¥J•Òt°HÔö‰84ˆ!´Š†·ß˜I€„äà3 Ì`€ìׯŸºˆä‰­r<ÚÜAóK8ã ð0˜—NgV ‚`ÈHãºýx¤1K„æÍ›k6çGyŒå€Ì9²ìaÄ#,Íž1øa"¬´Í‚ doР’"Ð&T‹ñ€àË ûÍ#Ʋ‚çDhàçù°XXxåc}ïqbUHda]eÍ'æ˜5k–Lš4IÝ1óx@$xåDð$ÄLAcýgí'¦`f² bxŽcJ—.­iÔ…WÂüÛšãäà ;ËÐM7ݤ}^²dÉ^G±œc1Û‘f ð°Ä KÀoÛ¶MÓ<À¡ÿ^¿C+KOäX¼BÉ’%3ãxúƒÖº¿ž( ¢ÚcÎ1Œ4™ŒØa£õέϲÕãP)?—ºÌNG‰‡˜¥Aó¯ÁÁ<öÃò¨ì õ{Á&ÛX˜¼ôžœ=‹-š±ë~½˜ÃË„@þÁöÒþ96x<å sfä…aÕf†Ô±?–íÄáIÿþýõþF"ó–ï/8õö½ïqãÆe¬ó^Z^ûN ²8\ùgeV58ã†Ã,'fOX;©œ– äÈUU*ƒn}Ë&\„ža3ì À¤¼]è†.×µ|0ÓUU6qѪÉØR•9'Nш“¨æ:8y`sâÿõw{ÔL2¶IEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1UseRemoteConnectionOption__coll__graph.png000644 000765 000024 00000011670 14042362133 032232 0ustar00tangentstaff000000 000000 ‰PNG  IHDRª\þ½.†sRGB®ÎérIDATxí ¸MUÇ_×"ÊLE¦B$‘)_”) $cE#’”© ORzHQôTOJ”y|$ÂM*™ç[(2Eƈpq¿ý{ÙçÛgß}Ü{îÝçsîµÞç9÷ì½öZï^ë¿þï»ÞµÖ¾ggH°DŒ¢˜(¯Ÿ©žA@0D5DH¢¦‰n2•Œz¢Îž=[2dÈ`>Ä K—.Qo QOÔï¿ÿ^,ÌùÌÇ ¾ùæÙ²e‹!jÔ#`*˜&ˆzš&P4•Œ8†¨‡ØÜÀ2ù¡$½ëX¿~½äË—O *äKSO:%±±±'… –Úµkëwr”¯]»V (à[]’sÏhÈcH7DMª ç Aƒ4Ž„,3fÌ1cÆÃêÔ©SÕ›6lØPÉK§C¯›ï¾ûN ±råJ%Y¼x±œ;wNæÌ™£1#i‰'ÏË1‚œ>}ºlܸQÏ?.C‡Õ5cÆŒšæ¥ ëF ŒŽ{2Ñ+X°`º^ Èäl|z;¶Ÿ ]ððáÃ{r^¯^=éÕ«—Nj f=„€ðá–[nщí™È.„p¡téÒrðàAaâE:žŒ‰„$V=z´æeÅ0dºÿþû5¶lÙ²¥.KAp¼:1-FÄ61⥠’º0)´¥Y³f2sæLaRÇOèâgûÝ×ÒÜ9NG³XdJ°:1ÕU´& Öúc‚Õ©],Ï–`MdiXäÑ4+ÆM°–ƒ×˜`Ń I,OH·†ØkÈO°¼p -©kõAïm‘;(k(]èwד‚ÜÓY— eÉ8±&‡ õë×OFÎË›%]{TÛk°Ù¦M]‹ÌŸ?¿,ij,í¸Åû¹¯qÎ’[ÐåŒoÝ×ÝçÙ²eó¼7ù¼t±‚á%áÜÓ«|ZI»"ˆÊPNlÉîR8ÂR”sø饗<‹ÿùçŸbÇ—žÂHôSW·ú¬WQYö —¤ôœ=û¶{1{öìöaÐwR8(s'~êJâViêò3ëOS½b*›Ë"'}wkžÿ’M3ŸìÙoIÈ•ë?i¦¾`kíÂ%Ý—9G¾&%¥Ô®=ØZJÚo­Ã•L™Ì€•RÝå ’nDRq¾gÏQkõ\}u6k .šLQ7†¨nDRq>cÆJ«tkáÿ´L˜°,šLQ7†¨nDRq9OŸŽ×ýõØØ_¬G ƒ·=S¡úŠ/jˆê¶nÝ/ýu< -sæŒÖc‚öó‰æ Å¢¦ºà‚S¦,·á»ðôWþÇŽý!8“9K1†¨)†.¸àäÉË­gJÏ%®ZµÃzÂþÂÓþAÌIØ¢† YâkÖìôŒGytöìu‰ ˜”°0D ²Ä&MúÙzj?ñÄéäÉÓòÅ?&.`RÂFàŠØë•0 Ì»Áz.U¬%ùßõ< Ê^ÊÆ»5^Í™3ñ „y›+:»Ù™ò¡ûããφ~¼k\ÜŸÖ˜>¤š³dÉ(Ù²y?¢çí¯Æ£úÐÕ,EñA®º*³åY3J®\Ù|ÐlTؘÕF§o†ü˜˜ ÿ¶â“J£ÆBÀÕg—ž?ožóñVCT¿5ú"ƒ€ñ¨‘ÁÕhõCTŸ51ªÏ€^Tgˆê3®&FõPCÔÈj´FãQ#ƒ«Ñê3†¨>jÔECÔÈàj´úŒ€!ªÏ€u‘AÀÕg\Íò”Ï€^Tgˆê3®fyÊg@ Q#¨ÑŒGõW†~>FüEÀÕ_</öYí¯ÎõЧ@ÚÀÕç~2C¿Ï€^Tgˆê3®ÌúùñCTñ4Ú"„€!j„€5jýEÀÕ_ƒ@²àý±Ë—/Êo†þ 8ÌI´"`ˆ­=cê„€!jæ$ZŠQ£¡’¼—žwz½Á9ÜúíÙ³ÇzKÉi)Q¢D è† äú믗ܹsÒ’:غu«>|8÷•/^\ßHü?9rDV­Z%Ö«Ý¥fÍš¾`•šêoÛ¶MòäÉÑzDG4i’¬^½:5¸Ê.^¼X¦L™8ç`øðáòË/¿¥%u2vìX™>}ºõ£¼eýúõòþûï oš¶&£I ûz‡äܹs!Ë­Y³Fºté"+V¬ãÇk{† 2¤.@Î!C†¨úÍ›7[o„ù+R·R½a{ÔE‹É?ü`½¡n·œ9sFxà™9s¦õF³b-)ÈÊ•+%GŽÒ¢E õfÏ=÷œäøñã…²x2ò•*UJ¦M›&“'OVÇkÄ;vìhìœ9s”râÄ yá…¤FBG–)SF˜Þzë­Ò»woë‡r³IÏž=åÅ_”"EŠŽÊ<þþûo­×ÚµkU_¿~ý¬7î]-Ÿ}ö™ðúó¼yóJ×®]…W¨#µjÕÒ¶r¼wï^iÛ¶­Ö‹ó¡C‡ÊºuëTO¯^½¬õýWÞyçámÔxã|P=àŽ;´\³fÍÏ.”»îºKºu린eËmÓ[o½åYÒ©WõêÕ¹µ ÆÇ?þ¼ 4H~ýõW)]º´ê‰—÷Þ{ÏúÍÖ,²iÓ&½FöÁ¨AüôÓOÖo»fÚO^ÿé§Ÿª®Ö­[K“&M¬—hÄË»ï¾+K—.Õ~£üÀ…W¶çÏŸ_û¹`Á‚Ê:À|+VTÃ*[¶¬,\¸Pn¸áyã7‚^/o·ãRßa{T¬øÇëE¯R®\9ù裤GR»vm™5k–6vÁ‚zO<#/\øã?dÙ²e2fÌiРz'ô|þùçÒ·o_iÚ´©zˆS§Nê ð,Qôïß_:uê$Ÿ|ò‰^ƒ¸9sæÔó£GÊÏ?ÿ¬é Â"ÎcMðø3oÞ<ëGw¯²~cÿ 5ˆI™Î†<¯¾úªvÅñ´ ¢ãï¸ã­ç)¤ãþx[:ÏGžöíÛk]12:nâĉZ›?üP7n¬„F7óì³ÏêlŸ>}<ërìØ1Ù¿¿”/_>¨E­ZµRbàõ!}‚ÑÑÔïKÿ¼þúë2þ|9tèH\\œ†o½Y‰ !ñØ8?þØz§ëNá0²Ñ£Gkÿr!UË–-eß¾}ÖÏ¿ÿ£ÆÈh>õêÕSÂSÑ]»v)™GŒ!´Áî³ F$q6Qч'«P¡‚TªTI¿íc sð8PBשSG½çH|±!1€£oU´hÑDU\ò£/E'!Í›7âÄF©ÆÚ¯×ÚÇxi/‰‰‰‘Â… ký¦Nªúî»ï>)òå˧Þoh¿ÿþ»à}08ŒO‚0º@ˆY¨P!õZ¤cx#ðÈš5«zÕ*Uª(I00:÷‘GQ/̨„¡pOž€dèu×ï‹w{ ukÓ¦+VL HÔAÐOŒ8ö0§ð%Qc#¶ç^`Œ†X÷Þ{¯âË:;íÂYà„h§-ÜãƒÀ=ö˜êÁáÐ&êEßvÛmûÛå’ó"¢Ò8„Ï•+WÐ}b–èT>€ð4tÖ†ÕB\»³QÀðãÀ°¯E#v:iL(B ÄNá¾ÔãÀsd÷îÝÕ[ÒY›Pƒy:˰EèÂ0†P†X•üä…|ä@Ñ™tª-Ô,l¡¼;.õª 82ÑÄ(l¡,až ½ö$Ñ©ÓI&êÄ5ÄN·Ó¸'õ´ÛW„t`H8‡ÐOLœ¼„òöý¹N›BÝË«ü¥ÒRDÔK)ää$&¥AXð’%K4îc80`€zÓªU«ªç¢1xJb^·0wsaéÄPE9,øÆoÔ4b>¼.b33§,C‚áàˆ§ðîä'¦ÄúñðFlV·n]&íÎTÿÜ|óÍÖëzNi(ƒA<úè£ÚV&\IIÉ’%u¨dX¥>Ô ok ª.õë×—/¿üRÉD~†lêH ˆâH„]F§NMLâOµjÕ´]„bŒZ`B]ðª`νG¥š¸æòÑòQ–‘ÆåœùRrü?3OIiWûñ6HȰIƒ‘Ê•+k¼ÃD‹F×0¤ÓaíÚµÓ8ÊI[1ñ!&& %¾ƒdx¥—_~YïÁ71:ÇÄoÄ~ä%.fòñ¨ÄǬ _‘±‰]ñPܳ½_2B¸Å¢‰-ñ´ƒ¶^|6[Ë0ɸ”Ð>èÆ“ƒC¼M*Œ‘ú'{Õ¼h?¸ ´…8yøá‡5V7nœNt™Ðy‰¯ói8 º1Qf"D¼!ç‚%aÌ›o¾©#)!q«-Äõ †Îís‹Ý~wzRçA¯ïÁÛ‹¥v¯/Ae±<{˜À32©ÂÃ:;B@RfìÑže³$XX6ùm"3Ñ ÙÎÐáR EÀӱ¶@vÒ1gça ÜÓ9ŒÙeB}×ÓÑ‘ÉêE\‡·ïqI·Ûª.äB »¬}_êBº3ܰ¯%çÃeøG‡Sp>ÎPJ¿:û“ü`Šc°ÛàÔ‘œcbk&ÒŒ¶øêQQÊDƒ8Ž Ú&)éÄjx,·$E¯ëtLrIÊýÒk²,—¸®`€á õÂxœ‚!9;8T]( Á½$%uqêa`ÏœéN’’ÊÂé§þKûNT:žµ4‚þp„ÅcgÙ“·Ž3fyE÷u¿Ï‰o‰;‰I14†C·óº'Þšå.òI=¾O¦˜†KRš;‡e&O|ÜâåaÝyü:Ÿ0a‚ƋĢ,׌9R×B!a(a=•õIV#ˆÉøƒ€ïÕŸj]~-ÄÓÄÉLLœ3Wvðê#Û©Î3b8ÔY üÙ¾}»6ÄkŠ•¯£Ëßòè¬ï5:›~­Øú$Œq’-lP@@&2î3–´˜µwîÜY'U,?!^»P¡vŒ´€ù“CÔD\H°gßîË,»Ø“÷Î×}cì86Ô.z™U³¥ìÞ1rßÓœ[“q‚7ì^ÙžÓ™ƒM–³ç̘¥{çÌ™Ÿå¥P»PÎÉ#ñ¹½‹ã,oŽ/ `ˆ‚ MySQL++ Reference Manual MySQL++: mysqlpp::BadInsertPolicy Class Reference
    MySQL++  3.3.0
    mysqlpp::BadInsertPolicy Class Reference

    Exception thrown when an insert policy is too strict to create a valid INSERT statement. More...

    #include <exceptions.h>

    Inheritance diagram for mysqlpp::BadInsertPolicy:
    Collaboration diagram for mysqlpp::BadInsertPolicy:

    Public Member Functions

     BadInsertPolicy (const std::string &w)
     Create exception object.
     
    - Public Member Functions inherited from mysqlpp::Exception
     Exception (const Exception &e) MAY_THROW()
     Create exception object as copy of another.
     
    Exceptionoperator= (const Exception &rhs) throw ()
     Assign another exception object's contents to this one.
     
     ~Exception () throw ()
     Destroy exception object.
     
    virtual const char * what () const throw ()
     Returns explanation of why exception was thrown.
     

    Additional Inherited Members

    - Protected Member Functions inherited from mysqlpp::Exception
     Exception (const char *w="") throw ()
     Create exception object.
     
     Exception (const std::string &w) throw ()
     Create exception object.
     
    - Protected Attributes inherited from mysqlpp::Exception
    std::string what_
     explanation of why exception was thrown
     

    Detailed Description

    Exception thrown when an insert policy is too strict to create a valid INSERT statement.

    Thrown by Query::insertfrom() if it is unable to add VALUES to an empty query. This means the size threshold or max packet size of the policy is set too small.


    The documentation for this class was generated from the following file:
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadQuery__coll__graph.png000644 000765 000024 00000017303 14042362133 026624 0ustar00tangentstaff000000 000000 ‰PNG  IHDR”|× ®sRGB®Îé}IDATxí]xTÅ’A:ÒATzDáO•E@Å " (R¥Š‚ á”& T±Ñ”^•"MéRˆJM0Âþç7øŽ—Ë]òîr—»wÙù¾»÷Þ¾Ý}³³³3³ïíÎdR ¤ASÀK „yYNÓ hÒŒ& hJùtá3 .\¸@;vì0'és‹¨W¯eÉ’Åbn×Ù¶mÛF—.]r}3HRï¾ûnºí¶ÛØ$a óçÏS©R¥äçÈ¡OR¥ÀöíÛéÊ•+if k×®Q:u(222Õg"ßþI/^LÂ@Z…¢'B虚B¨3ÑÍ@ z=Ó¯ ôÏ?ÿЦM›‚Š\qqq´víÚ ÂÉ_ÈüðÔà¯ê¥^Ÿ0ÐÎ;éÙgŸM†èÞ½{ièСÉÒ‘ðÒK/ÑÖ­[Å\¾|y PðÛ3¶9?à›o¾¡øøxçdŸ^{Ì@*ÑÑÑT @jÞ¼9={–ž|òIš3g <˜þøãjܸ1•.]šÆï@¶_¿~4oÞ<¹nÖ¬:tˆðÚà±Ç£B… Q«V­(&&†¦L™B­[·&|aùú믩iÓ¦”˜˜Hï¿ÿ>)R„ªV­*é¨hÁ‚tçwRÙ²eiòäÉR÷Ô©S©S§NT¥JºýöÛ%ïôéÓiƌԶm[ÁŒ X¿~=U¬X‘òæÍK]ºt!Ì‚æÎ+ƒ¡fÍšT¬X1úôÓO%o°üM›6Ê—/O%K–”6™Û† :¶k×Nî®]»èêÕ«Ô«W/êÞ½»ô ¦á˜5Ö¬Y#íG[Ÿ~úii»ÇíÄ·0~ÿýwuôèQãÒåñÝwßU;wVÿý·êСƒâWÌéªvíÚ*66V½øâ‹êñÇWüNCÝ{ï½êÿûŸÔà WÜar>pà@ÅSBõÎ;ï¨G}Tq‡*n´”»|ù²âŽW~ø¡âW jþüùŠM1êݻw«Å‹« *(&Œ¤}ÿý÷jáÂ…*Ož<ê×_Uo¿ý¶*X° úí·ß3¬bQÿþû¯jРԅg1Ó Àù½÷ÞS?ÿü³ä[¹r¥š0a‚b†R,­‡råʹ¤ƒ9måé­9É«óÍ›7 ®î ³úU9räP<øÔºuëp3·íàÁƒø®©^}õUuâÄ ¡Ã©S§„¶hëáÇvõüóÏË#˜q,õã?ª|ùò©qãÆ¹{´¤³pPH’'É{ +ÜW¦L>|¸HF”À½É™3g¦[n¹…¸èË/¿¤jÕªÉHÆ9RÁ€!C†Èé’%Kd¬ZµJ¤¤X¶lÙèã?¦-Zˆ$ŠŠŠ"fjذ¡ä…Ä(\¸0­^½š²gÏNL©«hÑ¢{‹™R$¤SŸ>}D²á%_®\¹(S¦L’ÿ¯¿þ"0Ô³gO¹fÆ—ç þ‡zˆjÕªEÜAÔ·o_¹   ¤íË/¿,R*ïŒÌmãD<È)<<< ÊPsРГ&Mš@{<õÔS’’ÞðX…=üðÃ4sæL:}ú45iÒ„fÍšåxîõë×%%€¤Ýzë­Ž{®Nx”ˆª‚*C^£3A(€Ž6×f9yò¤eñkß¾=U®\YòçÎ[Žøƒ fq”± îPaårŒˆˆüä"þÀüß~û­˜,)…É·X’$cÜwnžùÍ9Êy3F4«*‚­1`Àbñ'Ï…® #Ø7‹-£±ìÙ³Gì\Cba6Ô²eK‘hÜÊ#ÞÃf|íµ×hÆ "E0æ¶YAšL´ÿ~é ÐÙð˜ ï¹ç1\YŸŠ¨2ƒ cu© ¿üò‹Ce€IØž¡ž`D£,ŒV0˜¦k×®4bÄ1Ð!F-ÏÂ}ìlûÓÁXÇ÷˜Ž;ŠAY¢D ‚ÔÁgˆ õ ùæ›o 5jÔ5 ± ÀhF=ÈÑŽÉ+1n¨<)à?L" ÝÑ^´“ ã&Ú`_äA=è'¶QEÝcÀAâz f‹ˆUEªF4òÃXÞ·oŸâ‡:гªPúcËEºŸèhVXfþ4QIK A<9dH!£¤ÑÀ Ù°^h$Ùþ³û2Íþ•bÿL kW’~¿òßucåBz7Ôö¨zõ’¼&æægƒ€0¨1C XÑû]¿z®'&Ÿ¦ç*I™Òwòå «í†4$޲fÍL9sFÒ‡>iN¶õyÔÜ»¨L³¼b/ëEkæ4'¥ë¹í(W®lü1õ†þ1³d‰  ÊòZ AU3]‰éχE扠†CJRƒ7KPDö0ÊœíF×eæóB5n,€óçóÝÕm{BêU+ÎŒÎëZ ÑâÅÝy¡Ô_ôÓO¡7»~UÑöɧé·KSµç SDd%Ä%ÒmUc@ S%]ñaÏ+žy©™37:_³f¿ºçža¼>éª#-N¶O>¥Ør4%öT‚ÚÿÕߎë@œdÂC݉';§?ÿüt‘H¯½ÖÌÎÍpàŽO_uÚOQ_ÜMÙ $Ÿ482¦óIH¨0W42ä™…?þ«Û¶K[?â8UëR8¨˜D Y „Æ}òÉ*Þês˜7àuÁ¥m/ϽBÅên¶åŽx!+ÐàçžkHÇŽýMË–íq×~[¤ç(”%(™Ä iŠˆ£‘#ÛÒ[o-Lö®Èœc$Cš@ÿzõîàݳ·óÞú6èû¡Ò6Ñ11å+ý7ßôàùd}ôB^F ÞÊ»W›Úêãêé±ôÛ¢ÔgØ}‹«‚ Á@ î3ÏÔgBŸ§ï¾Û(Z[~nÜ™«´âµ#T´Vê³.öp"[­T×9ØSïSÄÛË@=sóæÃªzõÁ¼ 6!P(Xzîò^‡Þ:àÞ†·’Ë9vÝ®Y>úè#õÁˆëÞn®x{¶âïŠ}I^܃û¤Áe vçÏŸ_ܸÀ¯N2të6K þuжùØÚóê‹GöªÄ«7¶³óŸ_öG ¾‹p¿KìiMˆi)v^¡ØI”b²­þ’H8Çvtvò¥xã¥b—Ä>k†Qa†Ø4èaúüóÍòÁÕH –#†mu‚ (Aa7üÁI¶Ã‹;õ’mØìHK¼Œ[‘Ù¡—8ž€_#öI ×àMXRÉÖeø±Æ–tl¼4»uIkÛ3åÏŸƒÝ£4c¯ ÒJ;Ÿ—ÿó§XªÝ½(vZžw6`ìc¿ï¾ûø û'âlËð£døÀ¾2-âöyYmñkŒz~u\žá½Þ¹s}Í—hÉ’>g‚´TX¢Á­¼hì¦Ó+£.¸ Ì.…àa iîþ‘àl‹í ‘6ì}Ãá(ËS?Bîža¤gH ËD£FEÓàÁ‹m±— ** ?0;¢:8Ê‚³S8Öb.¼ñ a¶·ƒ“Ùéwß}gôšâE¢;*õì9‡ÝÜÝ ð[»ËbÛt8ŒÁÍ^Øà&Ò.ÿ`9$ܼxšÎžc•0’]ò½ÂÎ+oF ñ„€vÌ Ofp9è wÝuW’@*Î÷]]ghAx%#}õÕv¿×Õ}üž†í:‘™(oÙŽEýþ@? CÚ@fvèP—ctų‹ßmæät9Ǭë‡þG(Wñà ïd…ž`tŽ͞ݗð®Ö+Vh擜²èK4™ˆaœöë×’Õí¤½{·TÔÀ%Øš\ô<~¼õVk6¨ç¹¸ë]–©ÂŸa¨f 7=Ú®]-^AÊ3í®òvÏŠ¡µCQÄ.YÜ<Ò–ÉšRè6Ô£GÇ+úþM!WÊ· yv~zšê÷¼3ô”1õî®f èV¾|Y•C|~“B®”om{‚*u(H9‹eI9£MïjJ¥ã^½­X±—vï>™JÎä·¯»@gÅS厡»TD3Pò~O’’#GV^?ÝŠƒïÎs, M’ÁÍ|8oÿÝ7°¤c¼›¬¶NÖo¢-v_›6Q›65Ë?4ܤ€f ›´Hñ Y££'К5ýxÛL}¦ˆenúl‡™q3áVÏv¿¬Y‹«ÈÈR¶ÃÛZ÷êÕ˃žT*@î©™{BÓ5cD€ï‰0ížî×F´ïèŸ!kÒ ”!»ÝwÖ ä;ZfÈšf’ÚØd÷ÓO?É6a_àÁ^2(1ñfø%Ô‰Ý ÅŠÝ Eå‹ç8×Á®\dWáÂ…o¥Ûu†”@ðèõì³ÏúŒÈmÚ´á½e_Ñ?þèøùËk˜ÆÀzOœ8á³vxU‘Gs6efDS¬éðáêqãÆê‘GQ%J”P#GŽT¼?\ñH§JgΜQ<ÂU\\œÔ3nÜ85dȵuëVÅÞ+TÔ+¯¼"÷Nž<©6l¨J•*¥:wî,š:¤Ø£…Üç@·âS§`Á‚***JêdGªcÇŽŠH¹%K–HÞ¹sçª7Þx#Ù9»MQÜ‘’nüñbU·n]ÅûÐK'Õ¢E q…|ØXœ=µoß^ñ¶cuþüyñóÃ1ÜUË–-Úp…[ùòå{åPƒ R}ûöUK—.U Ò®¼yó*Ügç Rž·*‹? øjÔ¨‘:w»ûƒã)àé ¥‚#Œæ¦M›²„Á¼.§?µnÝZ¦˜cÆŒaŸ‡ ®LV®\)ƒfÖ¬Y„ˆÇÆ £N:qüÔ-²÷ûÀôî»ï3¡Ô‡Ñ ÿ9føå—_x| wŽ=ãp#–n¢nØ9¦”~<ÒåêÏd»Gܪ€éámlãÆr®p3$äiÖ¬™Ô‰™ Ô Û<”n33wâÌŸéÜæ«‡ ㎔

    6pà@ÁmÙ²eŠ_ˆÑήéÔ¦M›TÕªU¥~ü0€ÙÖ|ñ<–8‚3žá 7ØùòåS¨ßPa 3¦´%±2ðÝXr¢*Å6“_TXÊ=)öý_j dõ‰˜A·›v¶WX¤‹½ÁF¤09?ì t"«G2hÀ€âíôÒ¥KŽt_ž°Q›¬ºƒ² âËŽtW¸á&ð5#3Ÿ  iÁ7¤l ˆæ”€ G^)¸B~æ|˜¡9K-é˜Õ¸ØY†d¾Ï#Ý|éÓsžr'«Ïp–i¾á 7xmu®Úà*Ÿ/Ó²F%˜4µƒ% ±ãlsXֲؘšsë\ÔcäÀ%n ÁnþÄÇø£UÚYXj à©jjY’ÝÇÈ53283ÒÍ8Àà ·w‚çß¶³°à!aÆÆ$`j, <<;«ã«<å¿ùŽÊÎí≡J«ýãQ ýœ¹H‘žü‰¢{ïèç'gõZ…¥¡_¶m;FÙ²eá”ûX¥mR4ZT3PÈ?wîþÌq?·dâ·ÞûÓP“}‹jò²ï q/ÞΟ@®‹w×Ù³7{Y“½‹iò²ÿÖ­; IQ6ÝŠû8žÅ5/k³o1Í@^öÝœ9›).î¦_éÌ™ÃÙºñ¡ÕË*mYL3ÝI³|ùÞ$oÓccãiÖ¬M^Ôfï"š¼è¿~ØÇëk’BÙ´é°„Mð¢JÛÑ äE×AÒ@â8C–,ᶈ íŒwZ®ò15-º,ìž²eûñ Èäï`aLÃñÂŽCfº=_3¤^½z?:tFJÂùTÉ’ù¨\¹BrݨÑÝT¦L/jµgÍ@iì7#Nß-¾ƒÒX•-‹kÈ–Ý¡7GI”°”ˆÏŠøeZœ-Ù p``š>}ºdEÔå®]»J¨M„›BØNü+­•º•'(%ÐÇ,£zçÎâ›CXÒ‚ ä|øðá´hÑ"‰cŠ™B„¿üòËÄ‘šéóÏ?—˜¡éÔ¯_?vEW–æÏŸO_|ñ…ÌEl±_|ÑAkÄÅÚµk{;Ä.{ã$Dw½zõ¤ãî¼óN αã%ì8‚æ"Ô6GH”‡a™8 ²Ô…¸¬€§Ÿ~Zë–+WŽ.\(¸âMu›6m$ì7‚÷rÄi -n˜ã9³Ô…PíÚµ¥ü͘1ƒcp|"xáˆrŽìLŠ‚X®kŽ@zÀå LȺuëV —üA ´±Z}A)h £˜Ci #ad#^:"ã5:iH¤#òæÍ›‰ã…JZ0‡”Ž8ê>ú(a”s¨Hí8>ªxРAòjaòäÉr …hǸ†ZAz@ùòå%ú2:ìªfΜI`lHD}Fe¨'Ý:t¨´cÊ”)ýy§mCÝÄtǯJ•*rmüqÜWâ°ÝRÁ{ àPèíš1x€bÒƒ@Ä‹ŠŠ’€|Û¶m“¢ hçKJB7n,Œ!Eî¿ÿ~y/N¡kÕªEs]Bq#Â1Â-ZT®1Rž»wïÞÂ\7^¤Cýúõ]†åæ˜í’upp\‚ý@XqtBóæÍ¥Cé» Ñ¢¡ª cAJ"R4>k,]ºTì!t(l$HLŒ|0/:³}ûöÒ‘-Z´*m€ç›éîƒ ¡3wìØ!!=ˆÒ`~¼kž hÉÆ«Y³¦»ê¼JZ*R¤ˆ4âÆ©#¾nݺÄå‡ÎGǢË}üøñ"ÆA4s UW±F¸ê¨£Ù F:ÒŒ˜fÌç5jÔ &Mšˆšzê©§$Üø¹sç¤a瀉3˜ RψoDF£7HH±à¡^9Ò´ùQrÉ ˆ‰‰çV`NÔe„?½ŒP   $hš¹¢Tæå_Ð2Pjía`ó@@ú Fl¨¨6ØèHÄzwØYèØýû÷‹0Dóê?tˆ ÛP½zuš4iýüóÏÒñ=ö˜¨&ª0a˜§Ä¨ )©›‘ ‘£v„ Â(h0Z8~ðÁÂpýû÷'“-ù{öì)÷a¸bJŽ…M2qâDzî¹ç„A I`ÌØ†ñ…úÁ€ñ9Œ¹Ø-0~ÁpZ`ìJ•*T-êE~£L«V­hÔ¨Q‚ðçpåR—Ñ6¹à?0μyóDõi¾:¦»›_Ìb8îyš¿…À°%¦Nê ($ ŒiH$ß̃gƒI`³`ÐØ;Èo0l™eË–‰º1«@£>«Gàƒ ê€*Θ9A²A¢¸ªRª LÜ0´àž¡ZÍ8À¶»‚Ù³gK[ÐöÔ3902h`l%Œa–4lØ0‚jŒF܃½äÊfpŽÔlÔc]ÝÇ(vÕÁF+GàcÔ5fÄPYFºs=`ƒI`×̃|Fºs wðþûï‹T;v¬»,iJ·¥‚:‚áh£V)€ )c˜Æ”êÆ X®˜ÊœÇ.ç0Úѣͩá!$fž2ç<‚Ç n¨0Ú;ËŸ`ÛY˜?‰¢ëö€–—žù(c¨­HdRÛv5¥;Ü=Y‘˜î6¼­³Ú€Z…Ù “‚EÍ@ÁÜ;6ÀM3 :)˜Qü?ÈÑ”ÔÝN˜$IEND®B`‚mysql++-3.3.0/doc/html/refman/functions_func_s.html000644 000765 000024 00000024432 14042362133 023032 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions

    MySQL++  3.3.0
     

    - s -

    mysql++-3.3.0/doc/html/refman/sql__types_8h_source.html000644 000765 000024 00000112241 14042362133 023622 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: sql_types.h Source File
    MySQL++  3.3.0
    sql_types.h
    Go to the documentation of this file.
    1 
    8 /***********************************************************************
    9  Copyright (c) 2006-2009 by Educational Technology Resources, Inc.
    10  Others may also hold copyrights on code in this file. See the
    11  CREDITS.txt file in the top directory of the distribution for details.
    12 
    13  This file is part of MySQL++.
    14 
    15  MySQL++ is free software; you can redistribute it and/or modify it
    16  under the terms of the GNU Lesser General Public License as published
    17  by the Free Software Foundation; either version 2.1 of the License, or
    18  (at your option) any later version.
    19 
    20  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
    21  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    22  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
    23  License for more details.
    24 
    25  You should have received a copy of the GNU Lesser General Public
    26  License along with MySQL++; if not, write to the Free Software
    27  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
    28  USA
    29 ***********************************************************************/
    30 
    31 #if !defined(MYSQLPP_SQL_TYPES_H_MAIN)
    32 #define MYSQLPP_SQL_TYPES_H_MAIN
    33 
    34 #include "common.h"
    35 #include "tiny_int.h"
    36 
    37 #include <string>
    38 
    39 #if !defined(MYSQLPP_NO_STDINT_H)
    40 # include <stdint.h>
    41 #endif
    42 
    43 namespace mysqlpp {
    44 
    45 #if !defined(DOXYGEN_IGNORE)
    46 // Suppress refman documentation for these typedefs, as they're
    47 // system-dependent.
    48 
    49 // Define C++ integer types that are most nearly equivalent to those
    50 // used by the MySQL server.
    51 #if defined(MYSQLPP_NO_STDINT_H)
    52  // Boo, we're going to have to wing it.
    53  typedef tiny_int<signed char> sql_tinyint;
    54  typedef tiny_int<unsigned char> sql_tinyint_unsigned;
    55  typedef signed short sql_smallint;
    56  typedef unsigned short sql_smallint_unsigned;
    57  typedef signed int sql_int;
    58  typedef unsigned int sql_int_unsigned;
    59  typedef signed int sql_mediumint;
    60  typedef unsigned int sql_mediumint_unsigned;
    61  typedef longlong sql_bigint;
    62  typedef ulonglong sql_bigint_unsigned;
    63 #else
    64  // Assume a system where C99 is supported in C++ in advance of
    65  // actual standardization, so we can do this portably.
    66  typedef tiny_int<int8_t> sql_tinyint;
    67  typedef tiny_int<uint8_t> sql_tinyint_unsigned;
    68  typedef int16_t sql_smallint;
    69  typedef uint16_t sql_smallint_unsigned;
    70  typedef int32_t sql_int;
    71  typedef uint32_t sql_int_unsigned;
    72  typedef int32_t sql_mediumint;
    73  typedef uint32_t sql_mediumint_unsigned;
    74  typedef int64_t sql_bigint;
    75  typedef uint64_t sql_bigint_unsigned;
    76 #endif
    77 
    78 // Now define typedef equivalencies for the other standard MySQL
    79 // data types. There aren't serious portability issues here.
    80 typedef float sql_float;
    81 typedef double sql_double;
    82 typedef double sql_decimal;
    83 typedef std::string sql_enum;
    84 typedef std::string sql_char;
    85 typedef std::string sql_varchar;
    86 typedef std::string sql_tinytext;
    87 typedef std::string sql_text;
    88 typedef std::string sql_mediumtext;
    89 typedef std::string sql_longtext;
    90 
    91 // Aliases to match the rules MySQL uses in translating data types
    92 // from other database servers into its own type system. From:
    93 // http://dev.mysql.com/doc/refman/5.0/en/other-vendor-data-types.html
    94 typedef sql_tinyint sql_bool;
    95 typedef sql_tinyint sql_boolean;
    96 typedef sql_varchar sql_character_varying;
    97 typedef sql_decimal sql_fixed;
    98 typedef sql_float sql_float4;
    99 typedef sql_double sql_float8;
    100 typedef sql_tinyint sql_int1;
    101 typedef sql_smallint sql_int2;
    102 typedef sql_mediumint sql_int3;
    103 typedef sql_int sql_int4;
    104 typedef sql_bigint sql_int8;
    105 typedef sql_mediumtext sql_long_varchar;
    106 typedef sql_mediumtext sql_long;
    107 typedef sql_mediumint sql_middleint;
    108 typedef sql_decimal sql_numeric;
    109 #endif // !defined(DOXYGEN_IGNORE)
    110 
    111 } // end namespace mysqlpp
    112 
    113 #endif // !defined(MYSQLPP_SQL_TYPES_H_MAIN)
    114 
    115 
    116 // The following sections are treated separately to avoid making the
    117 // #include tree too dense: if mystring.h (for example) is not yet
    118 // #included, no sense pulling it in to define all the typedefs based
    119 // on String. The separate #include guards for each section allow
    120 // this file to be #included as many times as necessary to build up the
    121 // full typedef set. This trickery is necessary because sql_types.h
    122 // is needed in a few places within MySQL++, but we can't (and don't)
    123 // depend on having the full set of typedefs. mysql++.h #includes this
    124 // at a late stage, ensuring that end-user code does see the full set.
    125 #if defined(MYSQLPP_MYSTRING_H) && !defined(MYSQLPP_SQL_TYPES_H_MYSTRING) && !defined(DOXYGEN_IGNORE)
    126 # define MYSQLPP_SQL_TYPES_H_MYSTRING
    127  namespace mysqlpp {
    128  typedef String sql_blob;
    129  typedef String sql_tinyblob;
    130  typedef String sql_mediumblob;
    131  typedef String sql_longblob;
    132  typedef sql_mediumblob sql_long_varbinary;
    133  } // end namespace mysqlpp
    134 #endif
    135 
    136 
    137 #if defined(MYSQLPP_DATETIME_H) && !defined(MYSQLPP_SQL_TYPES_H_DATETIME) && !defined(DOXYGEN_IGNORE)
    138 # define MYSQLPP_SQL_TYPES_H_DATETIME
    139  namespace mysqlpp {
    140  typedef Date sql_date;
    141  typedef Time sql_time;
    142  typedef DateTime sql_timestamp;
    143  typedef DateTime sql_datetime;
    144  } // end namespace mysqlpp
    145 #endif
    146 
    147 
    148 #if defined(MYSQLPP_MYSET_H) && !defined(MYSQLPP_SQL_TYPES_H_SET) && !defined(DOXYGEN_IGNORE)
    149 # define MYSQLPP_SQL_TYPES_H_SET
    150  namespace mysqlpp {
    151  typedef Set<> sql_set;
    152  } // end namespace mysqlpp
    153 #endif
    154 
    155 #if defined(MYSQLPP_NULL_H) && !defined(MYSQLPP_SQL_TYPES_H_NULL) && !defined(DOXYGEN_IGNORE)
    156 # define MYSQLPP_SQL_TYPES_H_NULL
    157  // We have null.h, so define nullable versions of all the above
    158  namespace mysqlpp {
    159  typedef Null<sql_bigint> sql_bigint_null;
    160  typedef Null<sql_bigint_unsigned> sql_bigint_unsigned_null;
    161  typedef Null<sql_bool> sql_bool_null;
    162  typedef Null<sql_boolean> sql_boolean_null;
    163  typedef Null<sql_char> sql_char_null;
    164  typedef Null<sql_character_varying> sql_character_varying_null;
    165  typedef Null<sql_decimal> sql_decimal_null;
    166  typedef Null<sql_double> sql_double_null;
    167  typedef Null<sql_enum> sql_enum_null;
    168  typedef Null<sql_fixed> sql_fixed_null;
    169  typedef Null<sql_float> sql_float_null;
    170  typedef Null<sql_float4> sql_float4_null;
    171  typedef Null<sql_float8> sql_float8_null;
    172  typedef Null<sql_int> sql_int_null;
    173  typedef Null<sql_int1> sql_int1_null;
    174  typedef Null<sql_int2> sql_int2_null;
    175  typedef Null<sql_int3> sql_int3_null;
    176  typedef Null<sql_int4> sql_int4_null;
    177  typedef Null<sql_int8> sql_int8_null;
    178  typedef Null<sql_int_unsigned> sql_int_unsigned_null;
    179  typedef Null<sql_long> sql_long_null;
    180  typedef Null<sql_longtext> sql_longtext_null;
    181  typedef Null<sql_long_varchar> sql_long_varchar_null;
    182  typedef Null<sql_mediumint> sql_mediumint_null;
    183  typedef Null<sql_mediumint_unsigned> sql_mediumint_unsigned_null;
    184  typedef Null<sql_mediumtext> sql_mediumtext_null;
    185  typedef Null<sql_middleint> sql_middleint_null;
    186  typedef Null<sql_numeric> sql_numeric_null;
    187  typedef Null<sql_smallint> sql_smallint_null;
    188  typedef Null<sql_smallint_unsigned> sql_smallint_unsigned_null;
    189  typedef Null<sql_text> sql_text_null;
    190  typedef Null<sql_tinyint> sql_tinyint_null;
    191  typedef Null<sql_tinyint_unsigned> sql_tinyint_unsigned_null;
    192  typedef Null<sql_tinytext> sql_tinytext_null;
    193  typedef Null<sql_varchar> sql_varchar_null;
    194 
    195  // Also do nullable versions of optional sql_* types, where possible
    196 # if defined(MYSQLPP_SQL_TYPES_H_MYSTRING)
    197  typedef Null<sql_blob> sql_blob_null;
    198  typedef Null<sql_longblob> sql_longblob_null;
    199  typedef Null<sql_mediumblob> sql_mediumblob_null;
    200  typedef Null<sql_tinyblob> sql_tinyblob_null;
    201  typedef Null<sql_long_varbinary> sql_long_varbinary_null;
    202 # endif
    203 # if defined(MYSQLPP_SQL_TYPES_H_DATETIME)
    204  typedef Null<sql_date> sql_date_null;
    205  typedef Null<sql_datetime> sql_datetime_null;
    206  typedef Null<sql_time> sql_time_null;
    207  typedef Null<sql_timestamp> sql_timestamp_null;
    208 # endif
    209 # if defined(MYSQLPP_SQL_TYPES_H_SET)
    210  typedef Null<sql_set> sql_set_null;
    211 # endif
    212  } // end namespace mysqlpp
    213 #endif
    This file includes top-level definitions for use both internal to the library, and outside it....
    Declares class for holding a SQL TINYINT.
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadOption__inherit__graph.png000644 000765 000024 00000012074 14042362133 027500 0ustar00tangentstaff000000 000000 ‰PNG  IHDRr‰ðˆl§sRGB®ÎéöIDATxítUÇ/-V,؂숬ػ`×cÃÞbET”b/ر7±bCl T» *X‘* ð¾û»|o6“d“l6Ù—¹çìîÌ›·¯Ýöf²ùÿk9I$ïW vÞÏ ™€­@¢È@ !Qd Ь›yÌŸ?_FŒ‘¦j\­Zµ’UW]µÂóΚ"×YgÙrË-+< šÔÀ·ß~+sçÎÍŠ"“Јå$ŠLÈ 2jé‘þù§ >¼Ú-ñ{ï½'‹-ªvãb@UªÈÏ?ÿ\Î8ãŒ" óå—_J×®]‹”WEÁc=&>ø uýÚk¯É‚ ªb¥÷É#ºŠÊï¿ÿî¾øâ‹›ùã?ÜÑGíÖ^{mwà:õ:×¢E ·ÒJ+¹.]º¸©S§º¶mÛºfÍš¹öíÛ[ìÛ·¯»æšk¬í«®ºÊ½ð néÒ¥îÚk¯un¸¡Ûa‡œz¯S£pÛl³›>}ºµµýöۻɓ'»¡C‡º-¶ØÂ5iÒÄÝtÓMÖŽŠkݺµkÔ¨‘»è¢‹Ü¿ÿþëTaî”SN±6 Ý+¯¼â¾úê+ïZk­åT‰nï½÷vÌã—_~qû[}õÕ­Œ±Oš4ÉÆÜ®];·îºëºóÎ;Ïú*éí›o¾±ñ–T'Ók9óȧŸ~Ú¶Ù:xQeÊÀå¶Ûn“­·ÞZ®¸â éÞ½»¬·Þzòâ‹/Êo¿ý–²@]lQEØyóæÍ…óÑ£GKÿþýåÕW_•£Ž:Ê^´Ãõ+¯¼R:vì(»îº«¨Bìüú믗·ß~[î¿ÿ~QE[ÙÁ,/¿ü²|øá‡òøãËŒ3dðàÁ¢†"·ß~»¨ñÈf›m&gžy¦¨‚e¿ýö5VQ¥Ë=÷ÜccåÞyÍ5×”^½zÉÂ… íûj„òÒK/É3ÏúÈé‚Ûñ&›lâÆŒcÇO<ñDÊ#ãú½îºëÌ#T1Ž× +¬à~øá³n¼dƒ 6p³gÏvŒ ïð‚à=D»îºË¾‹÷ã‰jHîœsÎñU^ùÓO?¹nݺ¹Î;[9máñ[mµ•›0a‚•‰ˆ,xoÓ¦MSßßn»íÜgŸ}–:;ÈK<âˆ#äÙgŸ5Ë×°$½{÷NÙ¨†J+×…²²ÕV[-u-î`Ê”)R§N™5k–½ð¸úõëKݺu¥víÚRPP`Ç?ÿüór7Û"í¯úçŸì»}–L›6SæÍûW&Nüïùm©«’‡‚VäÀ£õ©QÑ{E}È>*Õ“ùƒVdïÞÃõÑÜ"ý‹Åé×ï³ÌW%k«ÈI“~×ñ³S*™;w¡Œ?%uÚA°Šìߤ†Ô¥)}-Z´Xúö ×+ƒUdŸ>ŸjH]öç%´¹xñ0`LNÿ´”²¢©Èqã¦Èüù c–ÏɰacÊó¿(HEöë7B79ÿy£WÓ¼y 5¼†ù¯ A>hÔèRýeÀŠzëQ+Jùƒ0Ï>æÌY á¿Sa– ©È)Sþv­È Acõg‹ô—;ÛyÓ¦kI³fÕóq °œoYyÖZξ+ík7пk6°ö'L˜ª?÷X {íµy¥õW+¾T‡­¢1¯HM–+«h}sÖmðŠäo;ú¡œ-hUu¼"«jasÝoðŠä„ðº¯HÂjØ:_f¢Á+2tOôóKéW"Ï?Eæ¹ýðEú•ÈóÏD‘y®@?üà™Ü~xUçùgrû‘ç ¬iÃ>´Ö…¯HÏ%è0gÏ%èPdM™Bð¡5¹ýÄ”“Û@YS¦‘„Ö@4¼"“Ј¥Ö˜iÄ¡6Kª Ä«  ¡+(Ø ˆ¹ 0iã$ö—æŠç¦à Dá,kŒAçÃDA»Üm·Ýb‡|ŽŒu€…‰"Qj¢È@›#«ÃÜÞÿ}iÓ¦MTÇòŒ þøck ¯Q. 7lØ0†¹†IGqá…º;î¸ÃêM›6Í)x¼{„(¥OŸ>Vöã?Á }Eîå´ÓNsj$þ´È'©`õN1õòðÛÊb}¡ ðÙª,W=…">§XÀ@'² Ê€`¤0j`æ±Êebkõ¨„·{ì±îÉ'Ÿ´bÖÆG_/ý³$¬PŽT0y³Xx~9 Úe—]Ìcñ¨ððÞÊ?„*P/ø›\âÄÓ8hNQ8ø2êGËã¾O™†ËØœ¨ ö¼«Æ"ä8Ú He¢ô”{z Žý8ž'lz<½×ã(&*J/QîÐ7àhJƒ%‡ð¥hJŒ£ŒÐ\"Ð4 ï¼óN´‰Ô1!¢á¸ã޳c( §p¨‡Z„\Ž‘(ÍçP>D_,&a\=јt®¾újã ‚pÏ.÷¡‡2j‹âè)h—±QŠ‹è¦&J1õP4ãb§ù—¯gM*ä‘Å%"ÇsŒå„N8ÁÎáäà¥ò÷ß[Î,,,4/åq ¢áÄêòæÛéׯŸå^eó‰·àåºÁ0ƒQêQ&QJ ™9s¦Q#éf˾G;>zøÆo½õV[| M7,f—\r‰åDnWh/ÅxÌ'çFOÞÓ ’Ýa p`@P+i˜´æÉwP6iè´seêQ0нlŸÀí\%ž¬Æ‡O?ßhYÆÇéq˜óLrdÜ÷ÒË ó»P¼/‡.‚/²OˆÃ¸æs¤¿HŽÔí:=e9RñÓmœ¾n6?!aK—tz r$»îtŠ h/Ò)'h * xIÊ+•–#K²wØÁá}Q‰£Œà:»Ì’(ýâîùÈ©ÅåÕhŸå9NÏù´wOËþ â‚|¥WòýÇQQøkþŒ³Žlx¤æ®X«Œë/ZLT4!IÁâ5|F«UÉqúX+{Uâ‘¥•gÑÝu”}®HU,Þï‹\ÌaAúXsØu‘®*m×Z¤§¤ RW v×ʽ•C‚‚õuuô^sjÓý…@ì<‚ŒÎ4¡‹ˆ®Fž'tyª¸ôa'té+’§ç ]Dž*.:ì„."ºy|œÐEä±ò¢COè"¢«‘§Ç ]Dž*.}Ø ]DúŠäéyB‘§ŠKvB‘¾"yzžÐEä©â’a+“Bè‹Àχ@ö]‚W$¿åâßÏC—àºýü‚Wd˜äUçŸ ªGž+°¦ ?øÐZSš(2M'ŠLÈ 2à=2¹ýÄR“Û@YS¦|hMÈ ð×^¡Kð™ÐE„nÂÍ/xLn?±Øäö#EÖ”i$¡5M¯È$´b©5fQl˜¡C‡òs³ ^¡ÑExý(0cTun90…Â4lÔ:ÔCÎlj‚Íâ×Ýwß~ð925ÓÀE¢àD‘(2ùª*ç6iÒ$ÙË’¢‚ð˜.ó¿4/p^3pÔ[·nmÕÁ—ð_*¾T<úrií‰bU½zõJ«ZîëÕÎ#•ÀtË=£ÈÍUÁট{î9cí‘z h/ Ú.ìÀš4i" èn í'ËBŒ?^``ñ.¾øb#ta˜^@GÆÊ;uêd;8`¶A@SÕÓž£àõÖ,Øê°¿ óŒà­Â ²3ðÕìQ\«V­ {\÷øÚ²R;ˆRdX;¼¨ T6ãQ`zÚE±¬GÛ¶må‘G±ºàúQÎú€¾|óÍ7‹ÒZˆöÛØé³gÏž)`7Øc=¬¯TG”Ù#rVQvÃðf2P1@å=ôØä@SÒqàx3að½§§è#:wî,íÛ··Å‹ïþõ×_2bÄéÒ¥‹yã>jSB±€ÚrN¸ƒnnÚƒðF•ñ@zôè!Êé!Ð9(ÿˆá [ݵk×F‰q°È”‚¦V$e{µlÙÒúñoÈäÉ“ xÃn×®,^ˆ!ƒƒ>:A=`¾™7€¾¬Yýúõm½P$†ÃúÑ/0ÜôYV)³"éO ß0>ý1¡_iŒ …ï¹çžæ% RkÀûP„OèŠhÓSŸ<Ì‹èAŸ;v4%öêÕK”Ë¥ÜT¶é‚§±Q#ÒxOeCÐ>ó!º e"œ¢8<gL(±aÆ6¨“¶Ýv[o´ÏHïÞ½-T+QêZôÀÏ?ZVÚq¥%þB {æ‘´”ëHBk®W¼’úKYI ›ëfEæzÅ+©¿ÿ`)”ÍIEND®B`‚mysql++-3.3.0/doc/html/refman/connection_8h.html000644 000765 000024 00000012251 14042362133 022217 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: connection.h File Reference
    MySQL++  3.3.0
    connection.h File Reference

    Declares the Connection class. More...

    #include "common.h"
    #include "noexceptions.h"
    #include "options.h"
    #include <string>
    #include "tcp_connection.h"
    #include "uds_connection.h"
    #include "wnp_connection.h"

    Go to the source code of this file.

    Classes

    class  mysqlpp::Connection
     Manages the connection to the database server. More...
     

    Detailed Description

    Declares the Connection class.

    Every program using MySQL++ must create a Connection object, which manages information about the connection to the database server, and performs connection-related operations once the connection is up. Subordinate classes, such as Query and Row take their defaults as to whether exceptions are thrown when errors are encountered from the Connection object that created them, directly or indirectly.

    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1SQLBuffer.html000644 000765 000024 00000050471 14042362133 024374 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::SQLBuffer Class Reference
    MySQL++  3.3.0
    mysqlpp::SQLBuffer Class Reference

    Holds SQL data in string form plus type information for use in converting the string to compatible C++ data types. More...

    #include <sql_buffer.h>

    Public Types

    typedef size_t size_type
     Type of length values.
     

    Public Member Functions

     SQLBuffer (const char *data, size_type length, mysql_type_info type, bool is_null)
     Initialize object as a copy of a raw data buffer. More...
     
     SQLBuffer (const std::string &s, mysql_type_info type, bool is_null)
     Initialize object as a copy of a C++ string object.
     
     ~SQLBuffer ()
     Destructor.
     
    SQLBufferassign (const char *data, size_type length, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)
     Replace contents of buffer with copy of given C string.
     
    SQLBufferassign (const std::string &s, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)
     Replace contents of buffer with copy of given C++ string.
     
    const char * data () const
     Return pointer to raw data buffer.
     
    bool escape_q () const
     Returns true if we were initialized with a data type that must be escaped when used in a SQL query.
     
    size_type length () const
     Return number of bytes in data buffer. More...
     
    bool is_string ()
     Returns true if type of buffer's contents is string.
     
    bool is_null () const
     Return true if buffer's contents represent a SQL null. More...
     
    bool quote_q () const
     Returns true if we were initialized with a data type that must be quoted when used in a SQL query.
     
    void set_null ()
     Sets the internal SQL null flag.
     
    const mysql_type_infotype () const
     Return the SQL type of the data held in the buffer.
     

    Detailed Description

    Holds SQL data in string form plus type information for use in converting the string to compatible C++ data types.

    Constructor & Destructor Documentation

    ◆ SQLBuffer()

    mysqlpp::SQLBuffer::SQLBuffer ( const char *  data,
    size_type  length,
    mysql_type_info  type,
    bool  is_null 
    )
    inline

    Initialize object as a copy of a raw data buffer.

    Copies the string into a new buffer one byte longer than the length value given, using that to hold a C string null terminator, just for safety. The length value we keep does not include this extra byte, allowing this same mechanism to work for both C strings and binary data.

    References data(), and length().

    Member Function Documentation

    ◆ is_null()

    bool mysqlpp::SQLBuffer::is_null ( ) const
    inline

    Return true if buffer's contents represent a SQL null.

    The buffer's actual content will probably be "NULL" or something like it, but in the SQL data type system, a SQL null is distinct from a plain string with value "NULL".

    Referenced by assign(), and mysqlpp::String::is_null().

    ◆ length()

    size_type mysqlpp::SQLBuffer::length ( ) const
    inline

    Return number of bytes in data buffer.

    Count does not include the trailing null we tack on to our copy of the buffer for ease of use in C string contexts. We do this because we can be holding binary data just as easily as a C string.

    Referenced by assign(), mysqlpp::String::end(), mysqlpp::String::length(), mysqlpp::SQLTypeAdapter::length(), SQLBuffer(), and mysqlpp::String::to_string().


    The documentation for this class was generated from the following files:
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1UseQueryError.html000644 000765 000024 00000032132 14042362133 025371 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::UseQueryError Class Reference
    MySQL++  3.3.0
    mysqlpp::UseQueryError Class Reference

    Exception thrown when something goes wrong in processing a "use" query. More...

    #include <exceptions.h>

    Inheritance diagram for mysqlpp::UseQueryError:
    Collaboration diagram for mysqlpp::UseQueryError:

    Public Member Functions

     UseQueryError (const char *w="")
     Create exception object.
     
    - Public Member Functions inherited from mysqlpp::Exception
     Exception (const Exception &e) MAY_THROW()
     Create exception object as copy of another.
     
    Exceptionoperator= (const Exception &rhs) throw ()
     Assign another exception object's contents to this one.
     
     ~Exception () throw ()
     Destroy exception object.
     
    virtual const char * what () const throw ()
     Returns explanation of why exception was thrown.
     

    Additional Inherited Members

    - Protected Member Functions inherited from mysqlpp::Exception
     Exception (const char *w="") throw ()
     Create exception object.
     
     Exception (const std::string &w) throw ()
     Create exception object.
     
    - Protected Attributes inherited from mysqlpp::Exception
    std::string what_
     explanation of why exception was thrown
     

    Detailed Description

    Exception thrown when something goes wrong in processing a "use" query.


    The documentation for this class was generated from the following file:
    mysql++-3.3.0/doc/html/refman/structmysqlpp_1_1equal__list__b.html000644 000765 000024 00000031520 14042362133 025755 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::equal_list_b< Seq1, Seq2, Manip > Struct Template Reference
    MySQL++  3.3.0
    mysqlpp::equal_list_b< Seq1, Seq2, Manip > Struct Template Reference

    Same as equal_list_ba, plus the option to have some elements of the equals clause suppressed. More...

    #include <vallist.h>

    Public Member Functions

     equal_list_b (const Seq1 &s1, const Seq2 &s2, const std::vector< bool > &f, const char *d, const char *e, Manip m)
     Create object. More...
     

    Public Attributes

    const Seq1 * list1
     the list of objects on the left-hand side of the equals sign
     
    const Seq2 * list2
     the list of objects on the right-hand side of the equals sign
     
    const std::vector< bool > fields
     for each true item in the list, the pair in that position will be inserted into a C++ stream
     
    const char * delim
     delimiter to use between each pair of elements
     
    const char * equl
     "equal" sign to use between each item in each equal pair; doesn't have to actually be " = "
     
    Manip manip
     manipulator to use when inserting the equal_list into a C++ stream
     

    Detailed Description

    template<class Seq1, class Seq2, class Manip>
    struct mysqlpp::equal_list_b< Seq1, Seq2, Manip >

    Same as equal_list_ba, plus the option to have some elements of the equals clause suppressed.

    Imagine an object of this type contains the lists (a, b, c) (d, e, f), that the object's 'fields' list is (true, false, true), and that the object's delimiter and equals symbols are set to " AND " and " = " respectively. When you insert that object into a C++ stream, you would get "a = d AND c = f".

    See equal_list_ba's documentation for more details.

    Constructor & Destructor Documentation

    ◆ equal_list_b()

    template<class Seq1 , class Seq2 , class Manip >
    mysqlpp::equal_list_b< Seq1, Seq2, Manip >::equal_list_b ( const Seq1 &  s1,
    const Seq2 &  s2,
    const std::vector< bool > &  f,
    const char *  d,
    const char *  e,
    Manip  m 
    )
    inline

    Create object.

    Parameters
    s1list of objects on left-hand side of equal sign
    s2list of objects on right-hand side of equal sign
    ffor each true item in the list, the pair of items in that position will be inserted into a C++ stream
    dwhat delimiter to use between each group in the list when inserting the list into a C++ stream
    ethe "equals" sign between each pair of items in the equal list; doesn't actually have to be " = "!
    mmanipulator to use when inserting the list into a C++ stream

    The documentation for this struct was generated from the following file:
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1String.html000644 000765 000024 00000267145 14042362133 024061 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::String Class Reference
    MySQL++  3.3.0
    mysqlpp::String Class Reference

    A std::string work-alike that can convert itself from SQL text data formats to C++ data types. More...

    #include <mystring.h>

    Public Types

    typedef const char value_type
     Type of the data stored in this object, when it is not equal to SQL null.
     
    typedef size_t size_type
     Type of "size" integers.
     
    typedef const char * const_iterator
     Type of iterators.
     
    typedef const_iterator iterator
     Same as const_iterator because the data cannot be changed.
     

    Public Member Functions

     String ()
     Default constructor. More...
     
     String (const String &other)
     Copy ctor. More...
     
     String (const char *str, size_type len, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)
     Full constructor. More...
     
     String (const std::string &str, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)
     C++ string version of full ctor. More...
     
     String (const char *str, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)
     Null-terminated C string version of full ctor. More...
     
     ~String ()
     Destroy string.
     
    void assign (const char *str, size_type len, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)
     Assign raw data to this object. More...
     
    void assign (const std::string &str, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)
     Assign a C++ string to this object. More...
     
    void assign (const char *str, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)
     Assign a C string to this object. More...
     
    char at (size_type pos) const
     Return a character within the string. More...
     
    const_iterator begin () const
     Return iterator pointing to the first character of the string.
     
    const char * c_str () const
     Return a const pointer to the string data.
     
    template<class Type >
    Type conv (Type) const
     Template for converting the column data to most any numeric data type.
     
    template<class T , class B >
    Null< T, B > conv (Null< T, B >) const
     Overload of conv() for types wrapped with Null<> More...
     
    int compare (const String &other) const
     Lexically compare this string to another. More...
     
    int compare (const std::string &other) const
     Lexically compare this string to another. More...
     
    int compare (size_type pos, size_type num, std::string &other) const
     Lexically compare this string to another. More...
     
    int compare (const char *other) const
     Lexically compare this string to another. More...
     
    int compare (size_type pos, size_type num, const char *other) const
     Lexically compare this string to another. More...
     
    const char * data () const
     Raw access to the underlying buffer, with no C string interpretation.
     
    bool empty () const
     Returns true if size() == 0.
     
    const_iterator end () const
     Return iterator pointing to one past the last character of the string.
     
    bool escape_q () const
     Returns true if data of this type should be escaped, false otherwise.
     
    bool is_null () const
     Returns true if this object is a SQL null.
     
    void it_is_null ()
     Set a flag indicating that this object is a SQL null.
     
    size_type length () const
     Return number of bytes in the string. More...
     
    size_type max_size () const
     Return the maximum number of characters in the string. More...
     
    bool quote_q () const
     Returns true if data of this type should be quoted, false otherwise.
     
    size_type size () const
     Return number of bytes in string. More...
     
    void strip_leading_blanks (std::string &s) const
     Returns a copy of our internal string without leading blanks.
     
    void to_string (std::string &s) const
     Copies this object's data into a C++ string. More...
     
    mysql_type_info type () const
     Get this object's current MySQL type.
     
    Stringoperator= (const std::string &rhs)
     Assignment operator, from C++ string.
     
    Stringoperator= (const char *str)
     Assignment operator, from C string. More...
     
    Stringoperator= (const String &other)
     Assignment operator, from other String. More...
     
    template<typename T >
    bool operator== (const T &rhs) const
     Equality comparison operator. More...
     
    bool operator== (const mysqlpp::null_type &) const
     Equality comparison operator. More...
     
    template<typename T >
    bool operator!= (const T &rhs) const
     Inequality comparison operator. More...
     
    bool operator!= (const mysqlpp::null_type &) const
     Inequality comparison operator. More...
     
    char operator[] (size_type pos) const
     Return a character within the string. More...
     
     operator const char * () const
     Returns a const char pointer to the object's raw data.
     
     operator signed char () const
     Converts this object's string data to a signed char.
     
     operator unsigned char () const
     Converts this object's string data to an unsigned char.
     
     operator int () const
     Converts this object's string data to an int.
     
     operator unsigned int () const
     Converts this object's string data to an unsigned int.
     
     operator short int () const
     Converts this object's string data to a short int.
     
     operator unsigned short int () const
     Converts this object's string data to an unsigned short int.
     
     operator long int () const
     Converts this object's string data to a long int.
     
     operator unsigned long int () const
     Converts this object's string data to an unsigned long int.
     
     operator longlong () const
     Converts this object's string data to the platform- specific 'longlong' type, usually a 64-bit integer.
     
     operator ulonglong () const
     Converts this object's string data to the platform- specific 'ulonglong' type, usually a 64-bit unsigned integer.
     
     operator float () const
     Converts this object's string data to a float.
     
     operator double () const
     Converts this object's string data to a double.
     
     operator bool () const
     Converts this object's string data to a bool.
     
     operator Date () const
     Converts this object's string data to a mysqlpp::Date.
     
     operator DateTime () const
     Converts this object's string data to a mysqlpp::DateTime.
     
     operator Time () const
     Converts this object's string data to a mysqlpp::Time.
     
    template<class T , class B >
     operator Null< T, B > () const
     Converts the String to a nullable data type. More...
     

    Friends

    class SQLTypeAdapter
     

    Detailed Description

    A std::string work-alike that can convert itself from SQL text data formats to C++ data types.

    This class is an intermediate form for a SQL field, normally converted to a more useful native C++ type, not used directly. The only exception is in dealing with BLOB data, which stays in String form for efficiency and to avoid corrupting the data with facile conversions. Even then, it's best to use it through the typedef aliases like sql_blob in sql_types.h, in case we later change this underlying representation.

    String's implicit conversion operators let you can use these objects naturally:

    String("12.86") + 2.0
    String()
    Default constructor.
    Definition: mystring.h:167

    That will give you 14.86 (approximately) as you expect, but be careful not to get tripped up by C++'s type conversion rules. If you had said this instead:

    String("12.86") + 2

    the result would be 14 because 2 is an integer, and C++'s type conversion rules put the String object in an integer context.

    You can disable the operator overloads that allow these things by defining MYSQLPP_NO_BINARY_OPERS.

    This class also has some basic information about the type of data stored in it, to allow it to do the conversions more intelligently than a trivial implementation would allow.

    Constructor & Destructor Documentation

    ◆ String() [1/5]

    mysqlpp::String::String ( )
    inline

    Default constructor.

    An object constructed this way is essentially useless, but sometimes you just need to construct a default object.

    ◆ String() [2/5]

    mysqlpp::String::String ( const String other)
    inline

    Copy ctor.

    Parameters
    otherthe other String object

    This ctor only copies the pointer to the other String's data buffer and increments its reference counter. If you need a deep copy, use one of the ctors that takes a string.

    ◆ String() [3/5]

    mysqlpp::String::String ( const char *  str,
    size_type  len,
    mysql_type_info  type = mysql_type_info::string_type,
    bool  is_null = false 
    )
    inlineexplicit

    Full constructor.

    Parameters
    strthe string this object represents, or 0 for SQL null
    lenthe length of the string; embedded nulls are legal
    typeMySQL type information for data within str
    is_nullstring represents a SQL null, not literal data

    The resulting object will contain a copy of the string buffer. The buffer will actually be 1 byte longer than the value given for len, to hold a null terminator for safety. We do this because this ctor may be used for things other than null-terminated C strings. (e.g. BLOB data)

    ◆ String() [4/5]

    mysqlpp::String::String ( const std::string &  str,
    mysql_type_info  type = mysql_type_info::string_type,
    bool  is_null = false 
    )
    inlineexplicit

    C++ string version of full ctor.

    Parameters
    strthe string this object represents, or 0 for SQL null
    typeMySQL type information for data within str
    is_nullstring represents a SQL null, not literal data

    The resulting object will contain a copy of the string buffer.

    ◆ String() [5/5]

    mysqlpp::String::String ( const char *  str,
    mysql_type_info  type = mysql_type_info::string_type,
    bool  is_null = false 
    )
    inlineexplicit

    Null-terminated C string version of full ctor.

    Parameters
    strthe string this object represents, or 0 for SQL null
    typeMySQL type information for data within str
    is_nullstring represents a SQL null, not literal data

    The resulting object will contain a copy of the string buffer.

    Member Function Documentation

    ◆ assign() [1/3]

    void mysqlpp::String::assign ( const char *  str,
    mysql_type_info  type = mysql_type_info::string_type,
    bool  is_null = false 
    )
    inline

    Assign a C string to this object.

    This parallels the ctor with the same parameters, for when you must do a 2-step create, or when you want to reassign the data without creating a String temporary to get around the fact that operator=() can only take one parameter.

    ◆ assign() [2/3]

    void mysqlpp::String::assign ( const char *  str,
    size_type  len,
    mysql_type_info  type = mysql_type_info::string_type,
    bool  is_null = false 
    )
    inline

    Assign raw data to this object.

    This parallels the ctor with the same parameters, for when you must do a 2-step create, or when you want to reassign the data without creating a String temporary to get around the fact that operator=() can only take one parameter.

    ◆ assign() [3/3]

    void mysqlpp::String::assign ( const std::string &  str,
    mysql_type_info  type = mysql_type_info::string_type,
    bool  is_null = false 
    )
    inline

    Assign a C++ string to this object.

    This parallels the ctor with the same parameters, for when you must do a 2-step create, or when you want to reassign the data without creating a String temporary to get around the fact that operator=() can only take one parameter.

    ◆ at()

    char mysqlpp::String::at ( size_type  pos) const

    Return a character within the string.

    Exceptions
    mysqlpp::BadIndexif the row is not initialized or there are less than i fields in the row.

    References mysqlpp::SQLBuffer::data(), and size().

    ◆ compare() [1/5]

    int mysqlpp::String::compare ( const char *  other) const

    Lexically compare this string to another.

    Parameters
    otherstring to compare against this one
    See also
    compare(size_type, size_type, const char*)

    References compare(), and length().

    ◆ compare() [2/5]

    int mysqlpp::String::compare ( const std::string &  other) const

    Lexically compare this string to another.

    Parameters
    otherstring to compare against this one
    See also
    compare(size_type, size_type, const char*)

    References compare(), and length().

    ◆ compare() [3/5]

    int mysqlpp::String::compare ( const String other) const

    Lexically compare this string to another.

    Parameters
    otherstring to compare against this one
    See also
    compare(size_type, size_type, const char*)

    References mysqlpp::SQLBuffer::data(), and length().

    Referenced by compare().

    ◆ compare() [4/5]

    int mysqlpp::String::compare ( size_type  pos,
    size_type  num,
    const char *  other 
    ) const

    Lexically compare this string to another.

    Parameters
    posposition within this string to begin comparison
    nummaximum number of characters within this string to use in comparison
    otherstring to compare against this one
    Return values
    <0 if this string is lexically "less than" other
    0if this string is equal to other
    >0 if this string is lexically "greater than" other

    References data(), and length().

    ◆ compare() [5/5]

    int mysqlpp::String::compare ( size_type  pos,
    size_type  num,
    std::string &  other 
    ) const

    Lexically compare this string to another.

    Parameters
    posposition within this string to begin comparison
    nummaximum number of characters within this string to use in comparison
    otherstring to compare against this one
    See also
    compare(size_type, size_type, const char*)

    References compare().

    ◆ conv()

    template<class T , class B >
    Null<T, B> mysqlpp::String::conv ( Null< T, B >  ) const
    inline

    Overload of conv() for types wrapped with Null<>

    If the String object was initialized with some string we recognize as a SQL null, we just return a copy of the global 'null' object converted to the requested type. Otherwise, we return the String's value wrapped in the Null<> template.

    ◆ length()

    String::size_type mysqlpp::String::length ( ) const

    Return number of bytes in the string.

    Note that this doesn't count the number of characters in the string. If your database is configured to use an 8-bit character set, this is a distinction without a difference. But, if you're using UTF-8 in the database, you will need to "widen" the UTF-8 data to use a fixed-size character set like UCS-2 and count the characters that way. You might use std::wstring, for example.

    References mysqlpp::SQLBuffer::length().

    Referenced by compare().

    ◆ max_size()

    size_type mysqlpp::String::max_size ( ) const
    inline

    Return the maximum number of characters in the string.

    Because this is a const string, this is just an alias for size(); its size is always equal to the amount of data currently stored.

    ◆ operator Null< T, B >()

    template<class T , class B >
    mysqlpp::String::operator Null< T, B > ( ) const
    inline

    Converts the String to a nullable data type.

    This is just an implicit version of conv(Null<T, B>)

    ◆ operator!=() [1/2]

    bool mysqlpp::String::operator!= ( const mysqlpp::null_type ) const
    inline

    Inequality comparison operator.

    For checking object against MySQL++'s global null constant

    ◆ operator!=() [2/2]

    template<typename T >
    bool mysqlpp::String::operator!= ( const T &  rhs) const
    inline

    Inequality comparison operator.

    For comparing this object to any of the data types we have a compare() overload for.

    ◆ operator=() [1/2]

    String& mysqlpp::String::operator= ( const char *  str)
    inline

    Assignment operator, from C string.

    This creates a copy of the entire string, not just a copy of the pointer.

    References mysqlpp::mysql_type_info::string_type.

    ◆ operator=() [2/2]

    String& mysqlpp::String::operator= ( const String other)
    inline

    Assignment operator, from other String.

    This only copies the pointer to the other String's data buffer and increments its reference counter. If you need a deep copy, assign a string to this object instead.

    ◆ operator==() [1/2]

    bool mysqlpp::String::operator== ( const mysqlpp::null_type ) const
    inline

    Equality comparison operator.

    For checking object against MySQL++'s global null constant

    ◆ operator==() [2/2]

    template<typename T >
    bool mysqlpp::String::operator== ( const T &  rhs) const
    inline

    Equality comparison operator.

    For comparing this object to any of the data types we have a compare() overload for.

    ◆ operator[]()

    char mysqlpp::String::operator[] ( size_type  pos) const
    inline

    Return a character within the string.

    This function is just syntactic sugar, wrapping the at() method.

    Exceptions
    mysqlpp::BadIndexif the string is not initialized or there are less than i fields in the string.

    ◆ size()

    size_type mysqlpp::String::size ( ) const
    inline

    Return number of bytes in string.

    See commentary for length() about the difference between bytes and characters.

    Referenced by at().

    ◆ to_string()

    void mysqlpp::String::to_string ( std::string &  s) const

    Copies this object's data into a C++ string.

    If you know the data doesn't contain null characters (i.e. it's a typical string, not BLOB data), it's more efficient to just assign this object to anything taking const char*. (Or equivalently, call the data() method.) This copies a pointer to a buffer instead of copying the buffer's contents.

    References mysqlpp::SQLBuffer::data(), and mysqlpp::SQLBuffer::length().


    The documentation for this class was generated from the following files:
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1GuessConnectionOption__inherit__graph.png000644 000765 000024 00000010626 14042362133 032121 0ustar00tangentstaff000000 000000 ‰PNG  IHDR’\…™ìJsRGB®ÎéPIDATxítTÅÆ/š(Ø ØPÄ^ ‚EA9Š‘£ Ž örìØQű æ¯°aT@‚ƒDAT”&ûŸß%³¼}û–÷6Ù,ÙìÌ9ɾ7ý}óÍ;ó6ùêÄLUD nË»âEÀÉ!#8"eFWIÖ‰TRR"uêÔq?ÕˆAÏž=³ÎìõB¤o¼QðñÝOæ1øüóÏeöìÙµŸHYB×`VȺEÊÊS¹F²Ž€#RÖ!¯ ÔÎÇZ÷SM›6M¶Øb Ùf›mÖ1bê²eËd̘1òí·ßJóæÍ¥cÇŽú¥ø”)Sd«­¶ÊX_¢´YyòÒ"Ý{ï½òÑGeÏY³fÉ!‡"<ð€,^¼XÞ~ûmiß¾½¼úê«)ë‡<çwž¦?^æÌ™“2o®$ÔH"½òÊ+ræ™gJ»víd¯½ö’G}TöØciÕª•°+¹å–[tàùßÿ•}÷ÝW~ÿýw¹òÊ+¥E‹zÿÕW_é |¸`¥n¸á­sêÔ©²É&›d\¸p¡ÖKÂî»ï_²>ø`iÒ¤‰Lš4IIª+~zè¡Âr÷ÓO?IP]÷Üsì½÷ÞrõÕW çýàƒäË/¿Ô%’s ŽHßÿ½öb1YÞ{jVjÖG$vØa€qÄêsØëyóæ Öà‡~¹sçªÁj`­~þùgœÝvÛM† ¢Ëå?üpéÞ½»ì²Ë.IèŸtÒI²ë®» uüý÷ß:ødºì²Ë”4çž{nœHX/ê#@P|¬U«V)i4²âŽ…à]Íš5“úõë++Šh´Ánºé&)++“_ýUn±„ô‹TS—ÁK¤vÚI1®[·®lºé¦oýlذ¡tëÖMI4bÄ%ƒúÙgŸ©%¹øâ‹å /TÐYÖl œ?l¼ñÆñ¨+V¨"ÂÆ÷çŸÆóø/vÞygyÿý÷¢±X«m·ÝVã£Ô…õÚ|óÍãõ@ÐÕ«Wëý†n¨ŸzˆÏTƒ.j,‘Â0‚Üu×]êÇ0˜EEEòÜsÏ Ë~ Ît—.]”\ Å2áŸ|ò‰ØÄ‰uð8àÍòñÇËÿý'ï¼óŽú,DNŸ>]­ ×véÒ¥‚yã74ø¿þúKî¿ÿ~õ‘êÕ«G”Õ…Åò¬,“‚6éûÖ[oS;¹œÛþóžŽI-Z¤¾÷Gu”\sÍ5êôBü*–¸ýöÛOu_;³Éoëa9lݺµüöÛo‚cN<–Ç¥_éÙgŸ¥ˆúP´ÃRuÜqÇɧŸ~*=zôÐm?Ä*âSAò»ï¾[ËÕ‰XšÙ4Ø€ÿ÷æ›o N?KK³?Øw”þøqÏÛ²n»í¶˜q$«Ü¤ÙIÅÌùKÌ€¯ËÌæ˜±1ãèÆã¸0ƒ«qtPÌl·ãi·ß~{Ìø#1C¢˜±$ñx³„ÄÌ’3V,vavÚ¶!_BÖTuQ¿¿Ÿ¤Mo_*‹pcvµ1s!gf³äœEböqÃñg1[n¹e|BâO±uö¯ïáOãž-·?P—׿ò§ûï5jØ6ù‚êÂÙ é´T~}Åå$‘8S·át:ÀVß»¼]qÅÅùå±þM`†4"3YWÍf=kN‰muº$Y»{²(o°Áö2á3Ì‚%d¹Éd]!M­×äœÝµ­WÔ\ãÉdÖå ¯Í,IüÕJÎü4nÜ:Ö¬Yçœé/ØžqÆá‘áu¨/™^.Æ"ЭÛ`™Á|ó1ùxmÙ²•f÷6. „‹ÊÉwmÕ=l#G–êw’4XûDûý¥òò…æ{PKÍ·6›Tw7rª~w²0\«V­Žoû9K*)™aþ8 ‡æ¬_¿ž9áþ H@Uyå,RÀPÔ•¦Mi ¤<ö> »‹28)„|)Í.k!Yó:Ù)døùε{¯’IvD ÇÈ刀€#R\–p‘B0r>R@ÉŽH!89) G¤h¹\Ñp)N.WŽH!¹äh8"EÃÉå AÀ) — G¤œÜö? ŠdG¤œÜö? G¤h¹\Ñp)§ýÏ­BúžÍdG¤´yóïÞþ‡€d’‘Â1r9" àˆ’Ûµ…T‘숂“Ûµ…äˆ —+Î"EÃÉå AÀ) ·ý¨"Ù)'·ýÈ)@.WDÌŒ‹‡1cÆäÔ?Ý4Xíý­[·a¬^½&ÕÞN6ž%“mœxâ‰qÞp‘𗶆HröÙgË9眑†.[>"€ä*úyÞà|$/îºÒ8"U:WЋ€#’ w]i|¤J×’Á‚蘡¤XT™fŒ¨º³³gÏVádÄ–½Â6•©3¬ µhÝ"ªŒti¦ž%¬ÝTéˆ8£;Wý¨q …íÉ“3óïõPàF étÔF=g±º‚Ê—\r‰¶…š$b‚H¹g;@Ô4 G/X° Z»¶EB&Ét”Ñ{=á„TùÕFD|­¤çé§Ÿ®rå]t‘‰Œ9e¶b¿¯¿þºòöÛo¯²V ² H€N›6M%Ñ!Á¥—^ªŠÛHš#fŒzã>ûì£réh¥¡X}ùå—«Õ±×H{¢êxíµ×ÚjUþé+³éÛ Aƒd£6R•Htte~æ™gT}-]Ô"‘õB¢ ‰uÔ³‘E:4(Žú(cÄ÷âm29P»ä0ò©3fÌPÕJ¤ÞQ“DMÅ'ÂiòƒXb¡)ËNÕJT¹QGe’¼è÷Rïƒ>¨ò¨ˆ(SÞˆ ωžê™H›2F‰2ž|HÝC|Ô6Q,ßa‡Ĉ3¦mµÓ¶H̲±cǪ("{?þ¸Ê~vìØQ%Ö‘õ´bÁX}YVŒr£jÎ2hÀRÏóÏ?¯²ä(]c-$o„ *׉бÝn2ÓXš¸_¼x±|ñÅZ„Á†P{†-R¤¤Ù™,7˜yŠÕ el¤G)Ð 8uóÍ7kàÎ;ïTläßé«?Žò 0˧7‘8ž›3È‹$=DâÙÁïÖ[oU)Uú>èæ2؈Bb“O>)HÅC&œ!’©àO;L8&R©<;}c¹ýî»ï”¸Hª>ýôÓZ'8@6$î‚¶˜jbÄ_i‰z±ÈŠ3H|Úkh×® ©Ž¶+„C*½E‹z€Xôfyx§Ž:Ä©½ý\òS˃D@3´®]»*A‰cÆZÀ^S€åååªÊ]XX¨³W#~A6´àJKK=7€…°(fc9x6žÅnß]"Ø6ýÕ3™ *‘}úôQ«J#©ªÁÊ.CíÛ·WKѹsgƒ¼àÆ„ayÆÚbÅxòðüœ¢@Îdc7nÜ8Þ ÚǪA°³Î:K…ž™°¼O¤_<Ïþûïo?^0ÂE¥ˆÔ¼ys­àš6mšÐ &³>nÜ8ý<à#<¢³ÁÀ C4¯Œh4§×)Æ,3 O&U ŸÌZ}B°r,AD=’å”éuÊò[o½¥~N¼?Žf£€Ÿdùzõ꥖€gfi'¢6Á;Ø´Mš7ÞÆñü<3D¥o,ñLB,}$€£µ¸áùųÙö‰¦ýTmyŠEº¬‘Âj†<øD<3¬¤¤Dý | ê¬:ðÀuÖó0X|.@»–¥Ÿ‚AÂl(Ê1ÃvÜqGÂ`öóÍòÈÒJ@²}ôèÑzÍ/À'r8¤ÇÀõìÙS:uê¤ù!+ýf™`B0 ôÉQŽ9æ%M(..V¢àƒ´mÛV—+ây‹À}:? ݦM%'Ö?ˆU«&}èСZ-¤óò1Áɇec™µVÜ›¯2×i;ÛëjÄþ¯EHÂCâû2gmÇyä!iÕª•ôîÝ[ýהּõ00˜à%K–¨OF<3è±ÇÓÁÇϰŽ4Ÿ¬ñÔi¯!f¾oß¾ õ° ÀQ'@–èfeIéû¨Q£t ÈßÇ,A,!L ÊòÉ’ƒ³îc‰âyèý&@J+Ë~Ê)§èÆ‹Ê}÷ݧyü¿ìó{ãmõB`Ö? Lð³ðÅXrï¸ã])X†­Ô<ùñùð»xnŽ(¤÷Ú±mùÓÖuŸðï‘éà?þXåwm˜^:ËÌl–Åžå€ $bÇÕ¯_?u”I×lü!ò[¢aehÖvïÒhë úÄâIva©c`½4–ü o€Ä´ë] æÎ«Ë³w9Š£úN!—`(C¼¿MoûëºÆÒ`‰°öÖ/#?“×Û7ò»oò±Ä1 -¦Ä¥ì»6¬š ‰èÙØ*|²«bûˆSgIDu]·ï›s¿ÅHU Ûgv¬AƒTeò%>ãDätIØv'f·gBöÞ~Y(›öùÒK/͵ê¬2{9ïÂrpfä%±·Îi8ëéÞ½»:ª8ÍŽH^„Ö\gœHÉMÔŒü3ü.]ïN¥ÿþ‚•ƒüþ“t– !C†èàÓà?âwàoE=¡®O_ý½¨–íõw;ýÊÊÊôøßK"já@”ÃÊ “tèŽ?þxÝÒ³U'»ÎtN¨Óïin–È"AvRþÀ6Ø:¥þ“t,Kˬw9K÷„Úßfm¼Ï"±õ·–Ç;zr¦Eðúi,aö$Ý›Ÿ3›tO¨½åkëuÞ‰Ìl™ñ“ì‹Ú1æt™ó˜.]ºèø¦:I‡T6°Ã«ê µ­«6}æ³Í9®üpÚÍ’…uá}¯ A'霔óÖŸcªrBmë¨mŸÕr²]ÓA‚0léíËgú›ê$4Þºã#ùOÅ«zBMݹ²r² ÀZÛ~S¥:Óªê µm³6|æÍÒ6X©NÒÃʹô58"U0!•ÕqD‰†@ÞìÚ¢ÁárU³s‰³vãž…ÿ'`+çqöÿí®­Òltó·´å=2€#RfpÌûZ‘òž™àÿGƒ¤1†ÜIEND®B`‚mysql++-3.3.0/doc/html/refman/mysql_09_09_8h_source.html000644 000765 000024 00000033406 14042362133 023432 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysql++.h Source File
    MySQL++  3.3.0
    mysql++.h
    Go to the documentation of this file.
    1 
    11 /***********************************************************************
    12  Copyright (c) 1998 by Kevin Atkinson, (c) 1999-2001 by MySQL AB, and
    13  (c) 2004-2010 by Educational Technology Resources, Inc. Others may
    14  also hold copyrights on code in this file. See the CREDITS.txt file
    15  in the top directory of the distribution for details.
    16 
    17  This file is part of MySQL++.
    18 
    19  MySQL++ is free software; you can redistribute it and/or modify it
    20  under the terms of the GNU Lesser General Public License as published
    21  by the Free Software Foundation; either version 2.1 of the License, or
    22  (at your option) any later version.
    23 
    24  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
    25  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    26  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
    27  License for more details.
    28 
    29  You should have received a copy of the GNU Lesser General Public
    30  License along with MySQL++; if not, write to the Free Software
    31  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
    32  USA
    33 ***********************************************************************/
    34 
    35 #ifndef MYSQLPP_MYSQLPP_H
    36 #define MYSQLPP_MYSQLPP_H
    37 
    42 #define MYSQLPP_VERSION(major, minor, bugfix) \
    43  (((major) << 16) | ((minor) << 8) | (bugfix))
    44 
    52 #define MYSQLPP_HEADER_VERSION MYSQLPP_VERSION(3, 3, 0)
    53 
    54 // This #include order gives the fewest redundancies in the #include
    55 // dependency chain.
    56 #include "connection.h"
    57 #include "cpool.h"
    58 #include "query.h"
    59 #include "scopedconnection.h"
    60 #include "sql_types.h"
    61 #include "transaction.h"
    62 
    63 namespace mysqlpp {
    64 
    72 MYSQLPP_EXPORT unsigned int get_library_version();
    73 
    74 // This won't exist forever! Wean yourself away from these as soon as
    75 // you can!
    76 #if defined(MYSQLPP_OLD_CLASS_NAMES)
    77 # define ColData String
    78 # define NullisBlank NullIsBlank
    79 # define NullisNull NullIsNull
    80 # define NullisZero NullIsZero
    81 # define ResNSel SimpleResult
    82 # define Result StoreQueryResult
    83 # define ResUse UseQueryResult
    84 # define SQLString SQLTypeAdapter
    85 #endif
    86 
    87 } // end namespace mysqlpp
    88 
    89 #endif // !defined(MYSQLPP_MYSQLPP_H)
    90 
    91 
    Declares the Connection class.
    Declares the ConnectionPool class.
    Defines a class for building and executing SQL queries.
    Declares the ScopedConnection class.
    Declares the closest C++ equivalent of each MySQL column type.
    Declares the Transaction class.
    mysql++-3.3.0/doc/html/refman/mystring_8h.html000644 000765 000024 00000017002 14042362133 021733 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mystring.h File Reference
    MySQL++  3.3.0
    mystring.h File Reference

    Declares String class, MySQL++'s generic std::string-like class, used for holding data received from the database server. More...

    #include "common.h"
    #include "datetime.h"
    #include "exceptions.h"
    #include "null.h"
    #include "sql_buffer.h"
    #include <string>
    #include <sstream>
    #include <limits>
    #include <stdlib.h>
    #include <string.h>

    Go to the source code of this file.

    Classes

    class  mysqlpp::String
     A std::string work-alike that can convert itself from SQL text data formats to C++ data types. More...
     

    Functions

    std::ostream & mysqlpp::operator<< (std::ostream &o, const String &in)
     Stream insertion operator for String objects. More...
     

    Detailed Description

    Declares String class, MySQL++'s generic std::string-like class, used for holding data received from the database server.

    Function Documentation

    ◆ operator<<()

    MYSQLPP_EXPORT std::ostream & mysqlpp::operator<< ( std::ostream &  o,
    const String in 
    )

    Stream insertion operator for String objects.

    This doesn't have anything to do with the automatic quoting and escaping you get when using SQLTypeAdapter with Query. The need to use String with Query should be rare, since String generally comes in result sets; it should only go back out as queries when using result data in a new query. Since SQLTypeAdapter has a conversion ctor for String, this shouldn't be a problem. It's just trading simplicity for a tiny bit of inefficiency in a rare case. And since String and SQLTypeAdapter can share a buffer, it's not all that inefficient anyway.

    mysql++-3.3.0/doc/html/refman/functions_func_f.html000644 000765 000024 00000014423 14042362133 023014 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Class Members - Functions
    MySQL++  3.3.0
     

    - f -

    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ScopedLock.html000644 000765 000024 00000013642 14042362133 024630 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::ScopedLock Class Reference
    MySQL++  3.3.0
    mysqlpp::ScopedLock Class Reference

    Wrapper around BeecryptMutex to add scope-bound locking and unlocking. More...

    #include <beemutex.h>

    Public Member Functions

     ScopedLock (BeecryptMutex &mutex)
     Lock the mutex.
     
     ~ScopedLock ()
     Unlock the mutex.
     

    Detailed Description

    Wrapper around BeecryptMutex to add scope-bound locking and unlocking.

    This allows code to lock a mutex and ensure it will unlock on exit from the enclosing scope even in the face of exceptions. This is separate from BeecryptMutex because we don't want to make this behavior mandatory.


    The documentation for this class was generated from the following file:
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1BadParamCount.html000644 000765 000024 00000033251 14042362133 025260 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::BadParamCount Class Reference
    MySQL++  3.3.0
    mysqlpp::BadParamCount Class Reference

    Exception thrown when not enough query parameters are provided. More...

    #include <exceptions.h>

    Inheritance diagram for mysqlpp::BadParamCount:
    Collaboration diagram for mysqlpp::BadParamCount:

    Public Member Functions

     BadParamCount (const char *w="")
     Create exception object.
     
     ~BadParamCount () throw ()
     Destroy exception.
     
    - Public Member Functions inherited from mysqlpp::Exception
     Exception (const Exception &e) MAY_THROW()
     Create exception object as copy of another.
     
    Exceptionoperator= (const Exception &rhs) throw ()
     Assign another exception object's contents to this one.
     
     ~Exception () throw ()
     Destroy exception object.
     
    virtual const char * what () const throw ()
     Returns explanation of why exception was thrown.
     

    Additional Inherited Members

    - Protected Member Functions inherited from mysqlpp::Exception
     Exception (const char *w="") throw ()
     Create exception object.
     
     Exception (const std::string &w) throw ()
     Create exception object.
     
    - Protected Attributes inherited from mysqlpp::Exception
    std::string what_
     explanation of why exception was thrown
     

    Detailed Description

    Exception thrown when not enough query parameters are provided.

    This is used in handling template queries.


    The documentation for this class was generated from the following file:
    mysql++-3.3.0/doc/html/refman/inherit_graph_24.png000644 000765 000024 00000007130 14042362133 022431 0ustar00tangentstaff000000 000000 ‰PNG  IHDR˜%¾– ŠsRGB®ÎéIDATxíœ ´WÓÇw™+¤Œ½”2/*2+)’JEˆ%c)S «P­R´­RLQh QÆ4ÑDÊØ`Jfç¿?ûÿ?¿ÿùÝîï½÷{ÝÊzëîµî»÷žsÏ9ûœ³‡ïÞç·^§$)¥+°iV`IÙMÓoÚkºÿ]TÀRIؤ+ Ø&]Þ´sƒyš>}:x,½Ò5(± ,X°À‹÷ÅYLLzõê…Ð¥WºyËÀ9çœ#*`Yf;KÀ²jÒ—tXTÀXÄ´‹Ü+ XîµIkXò ô‘hóçÏ—*UªÈî»ï¾Ñý~þùç²páÂL?+V”ºuëÊ6Ûl“)‹>üñÇòÊ+¯ÈñÇ/•*U’Å‹Ëo¼!;í´“œ~úé²ýöÛG›l–÷%K–H¹råd·Ýv“™3gfƬQ£†ì¿ÿþ™÷èÃ/¿ü"³gÏ–N8!ZµYÞÿulРAòꫯ&2ù &H·nÝlCØ”aÆI­Zµä‹/¾ÈÙ§Nä±Ç“¿ÿþ[îºë.iݺµ|ôÑG²hÑ"9í´ÓdĈ9Ûæ[qÄGØ8Åi7fÌyúé§eéÒ¥˜f>o¾ù¦Üpà rÒI'É?ÿüÛÍO?ý$“'OŽ­£pîܹrÉ%—ä¬ßèŠ0¦¼õÖ[F‘aÑÏO>ù¤;÷Üs]ýúõÝAäî½÷^wÀ¸š5k:°µ×±vëׯw‡z¨[½zµ»îºëÜ{ìaï|ðÕß}÷Ýn¯½ör7v§žzªSëåÎ?ÿ|7zôh7|øpwÁØ÷N…ÅÚÔ«WÏ©8Õd×¶m[§jåM›6uüqÖó!CÜÙgŸmeþÏÞ{ïížþy§ân¹åŸ>ßzë-÷ÔSO9µT®zõênÚ´in‡vpß~û­oêÖ®]ëúõëgïjÕlþ•+WvºAîÏ?ÿt£Fr}úô±úï¾ûÎ5lØÐž=öXwíµ×ºjÕª¹F¹ï¿ÿÞuéÒÅRÌ;޾öÚk6Æ!‡b} 0À½÷Þ{Ž9xúý÷ßZd7gÎ÷å—_º“O>Ù©¥v*tnåÊ•nùòåîŒ3ΰÏãø8ðÀݶÛnëz÷îí~øá×®];WµjU×¼yóÌÜá¹GVæÇ»«à»'žx"¬ÊNSGZuqË Â!ÇsŒtïÞ]zè!iÓ¦YÝ,Q±®t“dë­·675iÒ$³:tÝx¡ŸÛn»Í¾½òÊ+Í-©@fXøæ›oäå—_–±cÇ Ví¦›n²ºyóæ‰nªè‚ʪU«„~¡£Ž:*ã¾ÂçÏ>ûÌÆÐÍÆAÓ;î8sãÆ“^xATPíjÑ¢…}ôÑÒ¿ãoß}÷5—dèÆõ|`Ñü)S¦È;ï¼#¯¿þº¨ |C*p¢oÏXæ6cÆ Y³f¼ôÒK¢Â"eË–•‘#GÆòŸ;wU2¹ï¾û²\=}=óÌ3ÿW\q…àúU‘åž{îy÷ÝwW,öo¿ýfÖFâø8p ¨Ëõ×_oûßx À5×\“á_[n¿ýv{ÏçO‰\$þ\µATC «øç¯¾úJN9åY¶l™¨6Ùæyæ™æ–T›là…|Ð&A»OÖ­[—qmL\­¡\|ñÅCX=n ŸáéÅ_4^Ô"®ÚqÇMIÔ˜«_±ñj­¤B… ¶a(Ư¿þºO Ø®Z%A¡.¿ürÛðØµ°L™2¢Àæˆ;[±b…Àå- ååí·ß6~P`Ö[-]¦{pÕÃ?lîÞgÍšeв1NíÚµMyÂâø@8·Új+(øP++¬ØŽ~!Ú¡äà×|©D ͆ÐÀwÞ9kL60Œe`cÑZ6¼ðøã›Æ©K”ƒ>ØÕ7¦]”Ùžßl,äË)cFXYu}ö B¤îO$Ød@ó?þhu$˜ÙtO`5,Š¡nÜŠª ØÜ OX›¿þúË¿Úk’º[{-_¾¼%0ú8^°R¬-k !ž‚&Nœè_í®~Éæ´ë®»Ú{OTŇÂ[òDpQ*‘+j ,ns­ØÌ´pŒ9Ƭc‚ÑH„Žtc¾£„Ûa¡Þÿ}Ó0¯Ah œEfA úB³£ÏVð¿?»ì²‹ñƒ{VŒaš{ã7hÆ…††å„Ã3›ÇxŠÙDñ§•#˜D˜X9©I“&&%ßâ:‹C¸¤8^°î?ÿü³eÆ6àFa„•Q*Š/í3ÖžŠCðÁ– €‚y Vœ>r}“¨€1IáAƒÙ ‹…ECÎ;ï<Ãm¸ÊÃ;Ldš›õšÅ÷¾¬æ^«Ü|óÍVŽÀXˆO?ýTºvíJ‹ð>ùä“ ž­ øƒõÃýÀ#ã àðThE±>ú¨ê@QN,I; ˆŒ/¬9–‘Í…O„ ‹÷ì³Ïn`©`ƒ¶~~¸W"Ó8^x‹oQ€-Œo¾­oL˯¾újÑ KöÙgÃ×^ziô“Ì»ï‹õÒ0VÇŽÍÚ#\DÓà;O¹Æôõ9ï!ä/N~ŸëY5Î"‘0Ó…w~ø¡SЙÕLÝž•©ëqºñ™º¾}ûZ”Gªšœ)WãÔ5:µz™²y ÒbŒÂˆúp.þ[æB”¦Bï‹ìN´YRË‘5·8^ˆìŠâ/:–*š­Q´<×;ëî Ñ8{˜/ÅE‘%Â`9¥U+È«´oßÞ,Bè·±Þ…í=fËÂg,G”è Pœí¹çžEvǰ*XÒ(…ø,Z¾ƒÇBËÇKˆ½Â¶…=c•ó!@~HX°¤(qÃå¢ù)‰p±C€öóõ×_8ËÂgðÀ>twa}>ÏdÀ5Ÿ•Õ„^-йMµf} /q<àFÁ™Gy¤%>q^é÷Nz¥´Q¢ŒÅ!¼ÏW¸h6B£=m·ÝvÂ¥¢,y#6, —["(ñ†#òËEq!DCòí?묳Lp›5kf‘y0òa—]v™~øáY㤴’–Àjø¤§ž@XÞ àN´K„‘¿ÃŠ`eàÁ“f¶Gøä"²$¸ %’Ô“Ë‘š‰Z;rÌNb:$Å7¢Yï°Èžd’½ ä× Ò,ÀÆ&½CâOÁúsIŽ‘ˆ|É'’ø†HŽ’gÄR„¤ØÑÒüMI‰ úÈ#X„xÑE٤à °èhìøñã-‡EÖŸÌ68€DÑ¥Orç³AÜ'i,mÀ{S§Nµ2êBBXXD=²(Ku@ôD$‰Bp½BD“‰ #aæÛ·Õ@Å\)s §D¤Ñ| HôF®ŽCv”± ;=!ÕƒB1GÒ*ôËz豕YJNè+L±ŽD¼(\Ë–-m=ßIÞ0\mÒ3;³þ¸!dšÃZRäµ°h% L²îX*Rw¬  •’•9!Ÿ…Žv]ØI@—ä%›ÇkB†D(‚K¿¸†3E(×ÏoÂŒ¿?àû°¼¨“rT¸â8‚6WÍ|#$œKz O}”HÜêÌÊQ‡Û$9Êú0nx|VØšÁØ×ŸJ$·Çåe-Ižò‹‚‚‚,6ð œ#cI1 ÀŽî’¢D-w6ŸŸ–`Ézöìi‰Ê|˜E˜8|¾êª«ÌzñÎA,g‘œ¿±)¸$6ŒåÊšÍA>XÉ帇¸“ÆñПë^Xæå×ù„kôh‡>q«X˜;î¸Ã† €à÷k`3°&¡+Šø–S óI<“õç aåbþ$»±t!aå°¢XgÊ/¸Ø$)Q †0°ñ\àŸ¡C‡Úñƒ&X‹ä™¶\nóíOZµj%\¸ M<&+PMĪ¡¡K¸¾ ÆJy!ô'ù*0„›§Ð¸Ç÷cÄü!ˆ¸ð íðž@$t/´Å5ƒC96ã™À û"<ðÀ&¸sÖ—Ê|6lhEqFÙ /¬$‘+p °Ç ¨X2ãÇžˆjé— ìþûïÏ:ëôß$r׉dH±G‘¿Ë|\̲Õù’j–SŒ–ÕL©vo5ç7PÔñ›¨Ô•:Å@N݇Sœ©Jú$€Ž Ë|3ÿ|OBžóÉâ«R8µD™¹òÀ D´ŒrÖ$zAùÆÐfÉäG¥>ÌmEëâÞqƒüV kî¼%´­ÍEþ—a}’'ôÿáXÌ?ßS‡ç\§áþléñ¥/óпû;¿$Ù”¨‹L‚aÜ#x)ÌêÕ/  ©¸DmQ'aéóƯÀ¿NÀ⢭âL3šáÏu†ý®8}§ß”|"KÎFÚ²Ô®@ꦧÿ›‚œ@zmÄDÿ7E¬ÔjO:±-½é? ÛÒ;PÚÇO1Xißá-<¿TÀ¶ð”öáÿ%¦1÷'ß“IEND®B`‚mysql++-3.3.0/doc/html/refman/jquery.js000644 000765 000024 00000526541 14042362133 020464 0ustar00tangentstaff000000 000000 /*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
    ",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
    "),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
    ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
    "),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
    "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element },_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler * Licensed under MIT * @author Ariel Flesler * @version 2.1.2 */ ;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 * http://www.smartmenus.org/ * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$});mysql++-3.3.0/doc/html/refman/inherit_graph_30.png000644 000765 000024 00000004406 14042362133 022431 0ustar00tangentstaff000000 000000 ‰PNG  IHDR—qíÚsRGB®ÎéÀIDAThíZuˆUM?»®Ýݺ¶¨X "bb!bw+6 &* ¢¸*X`·Øþa &&bww·žïüÎóÞ»÷í¾Ø'~xì{óΜ™9sæwb†b!òȳ@,9½)= ¨}ª:,\¸0I÷ç[ ÈÆÙ³g#®Ç_®™3gÒ¾}û‚4•»ø¹sç¨bÅŠtúôiB»fÍš´wï^wápÛ´i£³îß¿ŸjÔ¨A{öì¡—/_Ò€¨OŸ>X1á)¨îÝ»«Ð±cÇèÞ½{ ³7hp­Y³†ÚµkG•+W¦2eÊмyó¨T©RT´hQ:zô(?žfÏž­j}úô‰Ê•+G/^¼ aÆQÞ¼yõ÷™3g´Μ9”?~ª[·.5jÔˆ.\¸àÛÎâÅ‹©sçÎ*_¨P!Ú¶m›öUªTI&gΜԺukúøñ£ò4h@ׯ_·µ·nݪzMš4‰¦OŸN›7o¦7oÞ¨ ÖΓ'•/_Þ7÷üùóUè‰}üéqéÒ%ªV­šîiРAôýûwúúõ«öÔ­[7úñã‡ÎѵkWµÉòåËiôèÑ´qãF*R¤=yò„>|HõêÕ£L™2Q:uèÁƒtóæMµG‹-ûìׯŸÎÛ°A¾|ùhÉ’%ÊOH—¬Y³ª}¯]»FíÛ·§Õ«WÓ„ èÖ­[ôêÕ+úöíõîÝ› Wºti:tèÎ g:t(åΛj×®M¯_¿V~PÖ‡ Y”å)Âʊזà´iÓò‘#G¸gÏžœ2eJm1‚;tèÀr \¡B'€`1‹Â\²dI–Íð¬Y³¸K—.,Ì™3gf¼­É¡sTT‹7é+V¬àÉ“'sŽ9øòå˼~ýz ëœ111—-[–?Î}ûöåT©Réžå@t¿º¸ãcäÈ‘,‡ÎW®\áV­Zñ˜1cXÀ¢ïLFµ-ì½ÁöY²dÑ5çÎËÅ‹×ÙÜtÙ¹s'W­ZUÇaþýû³¤i®R¥ ¿ÿž%ª²!‡ó’rD÷# Ò9a_½zU÷$e…CsûOyŠ`É6¦í5PpI”ÑIV®\Éu´½cÇ„³Ô8œ!C–7îÕ«O›6M7ˆCîÑ£CN<\°iÓ¦>e`('¸°9C±±±|çθвeËX¢‚qýhÄÃY¢§H‘B (‘C›úuëôp òàäN=øÔ©S³Dh–Ça¸S§Nº?ð@}\oß¾U ÀÜNƒ.^¼È’\pC]°—DseK$Q>|øàªËÀU7LRðáǹzõê:Þ€ N ’HÉ?VG“è¦ìÁƒ³D~#âúí® Ó"ÂbáÂ…5:FGG“x’¶Í‡D2ÐhªAA‹Ô…Ð*‘Ž$R‘x‰Wk¾Gú0„qNBª0„”óìÙ3ýiøàÉá‘xßlº}û6!-Iô#6!õ'à“GDý‘-[6ïçÏŸšêÀ0ë¡5‘bNö‘f‘¦š7o®²x<Ät~‰Æ”>}z’ˆh«#åt¨X±btòäIÛºÖ5Åu|ˆCéƒ&Ú†ox°‰›.Ö=ŠSizÅx'ݽ{×¶o¤wèr®å›ØïÀ•ؤÔÔ©SuC¨-6mÚDehÆŒzÈ(Ø6l¨€Ãf°A ¿ñ¦=xð n¯¿’´8‡ dÔ3 êÀ+^lk'K–Œ&Nœè»ˆpˆúõë“x±·SÔ:¨Ù0/dðÒŒ‚|SICT¢D ­ePC¡¦D ƒ=Á¡°'|D Ž;R\\œÏ-Z¤ûAÝ ]P‚ਿ‚!‰p®º`Þ]»v©°¶¤[@´ö ]aOœK®\¹4XeBmÇ„:Ðm<#›[~ã$ïëM †>|8I ¦Å4._¾|ñy äÍ<8dI—ú„€|x.ê5.]ºC¨qãÆ \ L‡ ƒaDIO¸ˆàa€‰*ÚµjÕR½¤Ö¢¶mÛjÄÁÜnzŒ;–ÌmPj+-„1¿¤R*P €È&ã’H¢ÎÚµkµËnŽS¦L!<›ø»Í›è _†ç¦ €¹¾4iÒ(€Q´ß¸qC/]fž–-[êS .M¸`øNÂ:f-g_‚¿­ 4šË*ï¯-78Fîe}"bx­)P“YIºÖi(>QsB­ƒâVÞ¦´°6|Ô\¨Ù$ÚV¢ß¸H¸É£nO¶ÇzV½ýéAÐ…8öf%IIñxèÇÞQLjƒXŵ-7]/^G€ ºHTµÍ9ç@öÁ&Tr«¹’4rÅxKÁS®Ì¨5 !™Haxø¶Ö9V¾iÃÛœ„¹¬õš³ßù5“µn2ý3f4Mß·Ûzètã'Ož\£¢o帨!’ÅÆÆºuéÓ„kG€Lº8kbȹQ0ötïÆKrp!Í¡F1…­Û¢n±€µ€Ãk¹ˆ{ž B€ó?Q£®Dðçu{É^Z ÉlÞ @,à++y2!YÀWHfóbÿÓœ;e@rIEND®B`‚mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1ResultBase__inherit__graph.png000644 000765 000024 00000023532 14042362133 027673 0ustar00tangentstaff000000 000000 ‰PNG  IHDR(‰Ÿ0¥æsRGB®Îé'IDATxí]˜Å.rÎY$GÉÂSr,HPÉI'Y• § Y@@‚A$HAr‰JÎYrNG:¼ú‹7ËÞÞܱùöowg{zª»ÿîþ§ªº§'†Á4(Š€"€Ä À2i‘E@” ´#(Š@À" °M£SØ k”/_žþøã×.ÒÔŠ€·oߦ¤I“:Äê_G” yÉÿ+W®ÐÁƒéµ×^{IJ=­X#)S&R‚²ÆÆ1VM˜˜ðUxã7èéÓ§tçÎZµj•¯²Q¹î €G]48@Þ¼y ,á^Pºti£}ûöFÆŒ6mÚíÚµ3Ò¦Mk|ðÁÆ¥K—Œ‚ |·#FŒ0úöíklß¾Ýà;·‘&Mãã?–sçÎ3xYƒ‘5kVãÃ?Y8ñꫯ8¹}ô‘‘9sfƒ™Áš±{÷n£N:F•*UŒtéÒ<ØEÖ‘#G &"9ž={¶Ñ«W/©Gâĉ &‰7¿˜ ŒLD“¡Q¨P!)ÃâÅ‹åšÔ©S©R¥2˜œ ¤e²4˜ÜŒÊ•+É’%“8”ïĉFõêÕºuëJý ÂÙ³g5jHγ¶d?~ÜÈ™3§œ¯Y³¦1}út9¶ÿš4i’Q«V-ãÙ³gÊ‚:>yòÄ9r¤‘!Cƒ5,‰Ç5óçÏ7rçÎ-2'Nœ(b¬ðêСõ’ržýöÛobRqÇ&Ö(GŽ4lØ0bb‘w~Z½z5ñ`&”6óÇ1ëÿûßÿLçÎiÙ²erײ%y²6B<Јµ9êÓ§œ‡Ïˆ‰Xû°4ϘÐl>¥wß}WÊ]¯^=1û`2ÑP„ mi yÃG.Äuð9™Ö̈É^®a “X«#&BZ³f añ,|g¨ó”)Sè÷ß—ò±'x£î[·n•ò8â•$Iñ·1‰Éy|w`T­Z5Éeg²“ó|#‘v~¨ Ê„z±&F|s!¾)Ùäèç(AyŽ¡¥„ìÙ³K<߉ïº!Ò`°/]ºTH f ÚÏ>ûLkitúôiXÔ‡–C88˜®^½*ÇfþØÇËI»/"kÄf§],ц e@pFßÿ¤¬lúÉ5l‚ ùák‡¯Ø±cCc'Ö¶ˆµ4©HÜ*T­Z•@DæÇÄ„€‚DNö+²AFl^ ¦X ‰OãÆ…ÐÞ¬Ox¸°ùEf]pU}̺`2m ¿ür¨ÒkðJPÞÁÑ%)¸ã²é%¤m Z>lú‰vÇiØ?#„…óЬfôp]Æ åeh%œlZ‘©ýà˜MN*Y²¤›r¶AŦœhl¢JZÜÎ;Es*Z´¨Ä³%¿øÂ ¡  º„V®\IC† !6aéÏ?ÿÒrL §5ò0?øÏ&%µmÛ–†.Z4Cä˦•8¸÷îÝ+ØÁé¹N:Ñ'Ÿ|B˜i!!Xá…xûú@sB:8Í& ñYhÄÀ7Ì„w\£Á;è2ïàè´súÄÄr1#p1̘-Ð\0˜`ZÁÌymK`"šÁ”3gÎZ¸p¡ &˜&TÐÈÞ|óM¤ 9ìÃ!hkì÷¡¹sçÊ ÆuìÇ¡ ˆfmÌ5v°KVl0Û0k8jÔ(!#ö¡‰‰ÓÊ 01QÖˆÙÖlÊÍŽfùÀ¼bŸ‘Ê`Ö ¿ H“$‘HÚ ˆÄ“f4û–ää :Tʳf5fQÎ%JÈyG¼É~@b§½mf×U¨PAÚ‚}OÔ¨Q#bŸ”\oÿ…r¼Æ9ž¨ßÚµk˱}:=ö°ÝSzÆ gœäV×9ƱIgðÝ=D4œÙgΜ ‡Y*̲Áá‹/û'9kV2+†tpF—)SÆàuEâ·OÞ1fÖ0ëfà$‡³³tpÛ8‡Í<íãá,f‚µ²<ÆÌ/es7nÜ™9Ë„NFÞºuKœãöÉá„·ÇÓ /¤gí)Týz£Mœ ¨÷õë×I*“:‹çT†jP»»—Âô€¶ƒ}°ºKÇŠ‹x‰öìÙcŸ4Ä1ñŽ!~üø„³ÁJ†y-/)0m¿¦Èñÿøµœ ЄÌ`ï 6ã\ý…Fåào2}Nöçë ’½¯ÌLkUoóœã¯³õv¼Nÿ‡@ ðXøIô¬=ØÅ3Tžìf€Y28aA>ÎøH`æÙDø˜@qâı‰ÁÌYZ L["'BXd䤘€If…WD[¶l!s$"ÊYòT *ZÊô︒5HÈžœp­ãÄAð9AVT!&ÔÁ ¯çgô;PÐY¼@m-—" jP.vø‰0Ë£Á8qR±éšŒgÏNZ'ÐXA@µ9ç:‚ú œÃIS9‰@Ó¦x Ña^%ÿ­mÙ€“—j2E jâ…‚D#ÜEàÁƒÇìü=Î3bñxÕ1wÅèuŠ€ %(zà)«Víg'},žm ¦Y³¶y*N¯WH J;ט>}+¯^ÄÆ´rå~^ÿÔk²UPôD@ *z¶»×k}û6vÄ&&_ˆHý£¸€€” `iRk._¾CGŽ\ uÕòåûBÅk„"à,JPÎ"¥éÂD`á¿yqf讇ùôé›Ã¼NO(/C@W’¿ !=ÿR&LXO1cÆà-È~Rxüÿvì8Mwï>¤$IœßYá¥j‚hƒ€®$6Mí»Š^¹r‡|nâmÚt”·†9G;V” 3dHÆí¥÷]æ*9J# T”n^ÿT.mÚ¤¼›dRÉìúõ»ŸT… /vÿôO)4—¨ˆ@hÇAT¬¥ÖIP"%JP‘²Ù·ÐاÛô?n)µd‘%¨ÈÒR‘¤œØ ºhP¼€”7PTŠ€"à” |kô  Š€7P‚òŠ*ÆL<}‡ =ð%(ÔËEÀw(Aù[•¬(" å!€z¹" ø%(ßa«’EÀC” <P/Wß! å;l£¥d]I-›Ýg•V‚ò´ÑS°®$žíî«Z+Aù Y•«(# å1„*@P|…€”¯¦rõQ—hÚð>ª¶”€®bõQ—èÚò¾©·”opU©Š€"à” ¼¢Šx€.3x…yŽ€”çª;t™zè1JPC¨EÀW(Aù Ùh*Wgñ¢iÃû¨ÚJP>6ºŠÕY¼èÚò¾©·”opU©Š€"àôÍÂ^ÑU¤üùó»zY¤H'N*Š+)=|x*R”×ÕBŽ?žÚ¶mëêešÞMôÍÂnçÉe ¨·Þz‹¾üòKOÄèµ~Fà·ß~£íÛ·+Aùw5ñü¶f¥(®! å^šZPüˆ€”ÁÖ¬EÀ5Ôå^Q&õÕ«W)((ˆ²eËæq.]ºDgΜ±ÉI”(åΛâÆk‹s÷àÑ£Gtøða*\¸°MÄÓ§Oiçζÿ3f¤W_}Õö_¢ªAE¶t©&pöΟ?ߥkÂJ¼eË7níß¿_>‹/¦¦M›Òå˗úÄéøk×®Ñ7ß|#é¿ýö[:tèÝ»wzöì)Ç I“&Q—.]èÁƒNËÕ„‘Õ ´Ö­[G›7o¦sçÎQpp0Õ®]›~ýõWzòä‰ Nh?«W¯¶ÍöëתU«F7nÜ Y³fñ4ÿCjÕª•ÄíÞ½›0¸¡ÑdΜ™Š+f«õñãÇiêÔ©’þäÉ“’χ~(éŸ={F;vì )RPïÞ½EK™8q¢hG*T nݺÑ'Ÿ|"²räÈA­[·¶ÉmРAvÚ´iiÊ”)´bÅ J™2¥I¾|ùä¿c9;tè@C† ¡$I’Ð?þHÙ³g§œ9sŠL\¿jÕ*Ú¶m >\âPNÔ¹~ýú¢œ?räåÊ•‹zõêEÉ“'·ÌïôéÓ4tèP!ÒråÊQÇŽy‰D,‘©_€jPÑ¡Jq÷î]‚fÒ©S'Y3õý÷ßÓçŸNeË–%h(ä›6m¢;wîÒâzÔ¨Q4pà@!”3fˆÜ±cÇRݺué?ÿù¬nß¾mËZˆçAb Á›7oÒùóçéâÅ‹„k *D ,k@p©R¥’c”!~üør 3„ A°¢¼`Á‚tôèQÚ°a 4ˆ@XZqÿþ}Ërž={–@Šׯ_‘?üU±bE!FHÒ¤I%zÀ€bîܹ3½ùæ›”&Mš3geȦOŸ.åÄÒµ.&L %JPÿþýiïÞ½´téR3;ý ” ¤!¬ŠbÀ /R¤ˆüšÇ¼É’%¿ÌŸþ)ksà£qÀ3räHºpáÔnݺE üM¥K—•U¦L™¨L™2”5kV°0ÿjÖ¬I©S§¦÷Þ{O4ÄU¯^]Ê‚ã–-[ÚÈ ¦ØÖ­[…TwíÚE‰'¦„  ù8öíÛ'ÿA¨(“c9!/¼í/Nœ8"Ïû!/^\Ê[¹reÁÛG}DE‹¥…  9‚lãÅ‹*?Ößÿ- ³¤sQC`! &^`µGˆÒ¼òÊ+ò?f̘6­Á>Aùòå…0`qŒßÁƒÓÊ•+iÑ¢E¢E@c‰äŽdb˜ 3Þ>ÎLçø[ @›¹ ­Q£FtâÄ ºr劘Mð!´hÑ‚àDw,ç´iÓBˆ„Vø²b2ÌSh‘ÈdX¥JÊ›7¯œ¶Â¦ê'<>yòä¡,Y²˜âô7@P *@Âb@ëÁl>8†Ó·o_jذ!=Zˆæ|X Ì~íÙ³'TVðÅ@Ó€ÿƒd‡M& L,„S§NfÖÊ1 íä y%K–‚jܸ±È€ ϱœ âÂl dbµ½U©88çQ. |fx¥^½z"¦¦. lÓ‡>4;˜´ Õ «=œ*iâÀù G0´"´%8¨ñ[ªT)JŸ>½üÇ,¬L9¸¾}ûöB '\ƒ°~ýzÚ¸q£ʰaÃ$3f0¡@=zô ï¾ûNâ¿ }dHÚ Û0§Ë™.]:‰õéÓGLA˜‡f0ˉ¥ ðe3FNáq!8Õáß‚ù ’Á¬_‚ Ĥ…ÿ r­òkÞ¼¹%dÀ„„ŸJC`!  G@{`zÓòÞx¯{÷î2ó Ê ppcКÎdÄC+õóÏ?‹éÖ¤II-3s˜ù‚†ŒðÙgŸÒ@ËÀì›§³[Ð@&‘"°Ê ÂŒÛúÞ ­Ì4=!Ã*ÀD…ß $SéArVùA#©a-•i[ÉDî=yòä°’h¼—°î^ÎDÅùvíÚ‰“š’}À`s ¬á>Žno+9î”óe䄲B³4ˆÚ Vù1I !0P‚ ÌvqªT˜b·øá] ³Æ^SÀR˜MŽ>"s ã9ý¯ø %(!íƒ|\%'ÁQ“‚éf¥•XÅù  *RÅ =©(‰€jP€>Ì*Ìá¨!V¬ÄìhÎÊWž%LÏK ¦±“ýåk“\­O’$¥8¼ìÄ?ÂË!ÎðçÏ4>_Mîª,¤ÇŽšü‡€Îâùë€Î)8ø)ýùç ~Tå?·¶5¹+3wOž<¥>(ÃÓÿu|RþÓ§¯ñò€œWL&ª8¼hò ?+˜•W±¢ òòã;ÞqÒû¤ð*Ôç(AùâÀÍàÚµ ^q¾‹§Ïwó3zÿ°Æ›×<=bMéùZ)FΜiiÍšnB ¾ªÉ‚;yMÕ\Îû±-‹ âòÒbG}Þù5ªZ5?ÕªUÄv^¢JPÑ£CÕòòå;ôúë_ )Ak± Æe3´Oç´:íÕ¸6m¦2ä{_Ô‹ ðìÁ 0P³f%_DëQ”G@äQ¾‰­+˜.]RÞñ V˜šÈ „àrB Gj‹8ˆÖºÄ†”£Aƒ7CŸÒ˜(€T”nÞð+סCE1ábÇÙ âÅ{nV½÷Þ‹}£Â—äùY˜tÓ§·a.ôÃÌ0ó¦LiÍ Iu¯&Ï‘Ž\BöÌÈUv-­‡\½z—Ðdzt!'s“&Ï[¶4öPºë—(‘ºw¯ÁÏâų] M.Q¢¸üàò[œD” ¢O[‡¨éŠûywoøâ\¼«džA{þ˜ ´•iÓ>â qŸþ´kW7È{•µ¥Ø¼â=? ˜’ù]hÆŒ­¼U˼+Ã?•D³ ” ¡üX†  G¼íîϼ‹äb6©>⇂«ñ†tبrŠ Õ¹seÞ/bŸMûᇖì‹Áë¡HL;,5XºôÞ¸/U®<Œ–, ½eŒ!Ô¬üˆ€ÎâùìˆÎjûöS¼…ð Öœ^“uMЖÌpóæ}:vì²h/öñæyÿb–18ø ï„™Bv"0óß»÷,ï>ƒÉ*3 ð>ïØð|Ëaó¼þF-” ¢V{ZÖæñã§lÆ-ç·¸ì¤aà AY&Œ$‘X1hÐÞ›}7ûÊšð^P¹#Iɵ˜®" å*b‘,ýÑ£—¨C‡éìËIÅ{>5âýž^lɪª¸[¶sµJ•üôßÿÖ–•è¡iD¤F@}P‘ºùÂ/ü¤IØ¿4†_$Pž}9­¢9¡æð›­[×7Ú{ľ©¡üé ¿GD¾³ªAE¾6{i‰/]ºMlìˆO ÿW‚ ô £|\E—yò¤§!CêËNa$öÑX€ŠIìà€¥©S¿x“r´'ÀP'y€7cñðâͱc×ñ«Å¿'<–2~| %'GþçÊ•N•ÉŸ?£<ˆ? ‘Õ "G;I)Ï»)Zvº=º)¿^üÅûß"Q5"´¨Ø9Ê-š…Íã÷ù§ú¨L„6ÈK2W ê%ÊéyóvPõêÞ`AG%'7Ïð­]ÛM´Î·ÞB›7sS’^æTƒòÊä‡x»u›CgÎ\',º„ÏIƒwظñ(ïæ0›ªU+ÈNôwdÿsïHV)ÞB@5(o!é9ë׿ ¡¬YSÓòåŸ*9ycÌz®]Ûnݺ/ÊìÙsÖË9¨8OP ÊS}pýƒ©oßE¼2ú ûššQñâÙ}‹Š´G`Ù²½ü¨Ì|Þ¯uíZ5̽Úí¯Ñcß# ”ï1v)ìw„_<f‚ê¡ääzî'Æ"Wø¦ EÕ¬9’Ž¿â¾0½Òk¨å5(=ôì™Á+žWÓÔ©›x¯£zâ ÷L¢^í.3gn£Áƒ—ò2Ž*¼D9wÅèu^@@ Ê z*âÔ©k²|»C~÷]SJ“&‰§"õz0—t`W„Q£šRÆŒº¤ÃCHݺ\M<·`óÞEx@­Z#©^½ѬY픜¼­G’°ÕðÂ…d÷Q,ï˜;w‡Gòôb÷P Ê=Ü<¾êúõ ~ÀwáÕOcÇ6§9Òx,Sølá‚GeðÀ1¶LN™2‘o2R©¡P *$¾X¹r¿¼¤`ÁWå %'ßcîIyóf e˺RîÜé¨R¥¡„öÓàTƒòÎ’ËýûÁôå— Û£Œ×\·ðcöš•À¶Âx3NÉ’9x)È»”8ñ‹—ŒzA¼Šp@@5(@|õwçÎÓ²è/£\¿¾»’“¯€ö±\<ÇåxE{ÅŠChëÖ>Î1z‹W ÊÇíÿäÉ3Þâcýüó6ñ_à $¢¿ÿ~„÷?ŸEuê¼Î‹hVÕ |ª)‹ýjÖAp²âí#JN&2Qã·B…<¬ ÷×±W­:Œöï?5*@µP ÊG1eÊF1b•ÜY›6-á£\Tl  °hÑ.~7ßBjÙ²ŒìÓ…-q4xŽ€”熓®Y³‰ôPáxa¦†èÀ•+wø9¾Y„(æÏïH Æ÷e-y‡F[øý÷ß ÎK?`'NZ#I’âFŒ1£4Ž5²õw¶nÝ%1J”¨?~ö(Y7_óC—.]Bt§z(OƒIœB?nb|™îÜÙFÏž=²nÞ¼™÷§òü-¾Û¶mãW—w‰r8íᇽOD¹zùš–-[FGŽ ¡… ¨gô" (Œ€T7€f¯(a# 66zFP"Øœ¨ì÷îÝËOô§¡ 2„:çNÄÇiÅŠtÿþ}ªZµ*¿-µ;b¼æêÕ«´aÃúçŸøY­Ü¼Zü-J”Èû“ÂçsðàA[9’%Kƫыò>Úž¿•äÁƒ´cÇ*W.úí}äÍþvâÄ ég ´µüuyòäq¹ßE…~uîÜ9ÞNù(PÀ†‡«§A :”5®sµ–é÷ìÙ#ƒø¯¿þâ÷È\µj•¤}ã7èéÓ§–×9 Y¥J•¢ ÐÝ»wéûï¿§ýë_´oŸ÷ß»¶xñbÞàÿ3~ ÉfùŒ?žræÌ)ÄèlyÃJwáÂjݺµœö.aåˆñÞìosæÌ¡o¿ý6D5;vì(ä"ò%¢J¿Z¹r%ï¥5Jjën¿r™ fÏžMMš4!df3f åË—O ÏW_}ek$Ü™ .Lׯ_—Á•1cFù¿k×.)4 Ÿ)S&~²¿2½ýöÛ!öäÉ“éƒ>ôÙ²eã×{ÿ&×€ÚµkÇo‰MÇ{(Õ“;NT«V·i=.iÌãE‹I¹úõëÇoßÂûû,¤Û·oó{Ñ:ÒÎ;éwÞ¡ÇSÛ¶m)UªT”?~úã?DFÏž=¥ÌÙ³g§àà`^„÷_)+òÇìf4Z¶lÉ{†æ}œfI½—.]*Ø|þùçtôèQª]»¶ÈÂW5„Lp£,œ¯X±"}ñżڼ *TÈV¯‘#GÒ×_$ß¿ÂgÚ´i3fLÚ½{·”ÅJæÔ©S¥m²dÉ"é!£D‰¼Nç&¥Ì W3ØãbÆEôo ö7ôyóæ ÓéÓ§¥“ }:?Q߉—2<£2eÊXÊ ’:£Ì3gΤˆ §©9^¼xÑFV8i‹$€¯@ío¯½ö¿›ðAÈìoáÁõÓO?ñΉù±§ÃbîáfiÕÜíWƒ¸ÙÂúÀ8Àò ´wdîW.* _EéÒ¥©B… T¶lYÛ1,î&°Å4´˜"°G»uëFy󿥉' ^·n]Ê•+D‡ï¾û®Øï?ÀGçhÕª• @v¦ßÊ<ÆÝå€VƒFí#I’$#F !:äÀoлwo:vì]¾|Yòéܹ³\B†¦ 1iÒ¤¢‚, å²üqâı ql% þ%Èï„;-°CÙ¡B«B¾K–,‘s ÞäÉ“K]¬dâ L;tè D¹}ûöå°úc‹ÕùˆŠ ÄþíýÁìo¸±@r ±bÅâ sÈ& ú/Lj«vó¤_¡¿£_ÀâØ²e‹#²÷+· fLŒ”)Sʱù/^.#K18.`ÅMå¯S§Žh¾¸QÂ¥MتÝ<éW GôO´}×®]mM™û•[e«y`ƒ ?î0•àùæ›o„( †V¯^]H „’€*ê0;†AÔVh¸K€0á7BÞ»w/Ä1Hw7˜2 3ª Cã‘BÊ…»©‰™éjÖ¬)ZQ=ˆñŽ’lÞ¼¹øà0Ð:$šåðáà é0ˆ|Ña`ŽÂ`%Ë$(3?tRÌdChSV>3` ÈJ&œöðI˜ŽuhTÐbQ.”š|iV¸D¦ý f<ÈÁì{ðÉœ2û2úfA\°€9|«ÐÔÑ׬ÚÍ“~…|à ÅbjPöíûÕ‹Ñj_7¡N"€|0háÓA¨T©’h “¦M›Šß ¦^‘"Eĉ 3ö¹L9P˜ºÇ¾!ă°0èЧNâ}½?‘Ëà„6äæ12àȇz„ ’~¤ƒï ƒòà¼DG2ƒYÔÇ 8°¡žCSáâîBƒo “0ï@¨pLC6:E‹-„¬!7,Y8gæ‡c:44¬€Î ’±’‰ú l™3gÌ[wïÞ4h d;­̼M\Ìø@þ5Ëý D0þ|ÇìoðK_ÜH5ú?üœ¸QBƒ‚åP¼xqñÙÂ?jÕnîö+ȃv r¤,3˜8á¤ëW¬ÚBŸ>} 6_lÿÝ=`R0x–Í`_ŽMk(ßu vÛâpÀf›ÄqÃ<ØlçØWdðƸvíšÁÚ€-ží|ƒM;ƒµ.[ÜËXË•žµ„r!Ï>+™L˜RÇsϦ–ÁšÁdg°9iK‚sV!,YfZÖž &_ó¯S¿V2™´ ÖÞB\ÏÄ'†ˆüÿG\¬Ò°/Î(Y²¤Õ)—âFŒa°?Æ¥k¬ZCg-Ê`ë Dq;¯e3ø&"ÞªÝÀ~Å>Tx„¹_±?Ø`ÒQt¯/ÔÄ´7–!@Ë0m_07L+ÓÃ3ØûÌ8û_˜2޲à´v6@ÓÀÇ>À¡i¯µ9#Ë$¬‚½|˜k09Ìà˜¯–,œÇ ÝêÕ«åc¦wæ×J&´>Ç`Îv:Æã¿#.Vi).û´ hÎŽ¸CËr Ví†4îô+hPa…ÈØ¯¼NP0¥à;‚Å•€ÕÞö„aïä³—¿T樰¦ kÄ¢z=½Ñ†ÚßœG12ö+¯f¶\%'@ì¨i$L˜Ðù—i\–E²H,BÕàÚߜà ©"c¿òª“Üy¨4¥" (N `ï‘âÕÔº  »i2ÜÑ?ÝQ3ú´µ?ûµã¤‰îIî‰kE@ˆÔÄ‹Ü5WE@p%('@Ò$Š€"1(AE îš«" 8ÀÿëöŸžŽ^HIEND®B`‚mysql++-3.3.0/doc/html/refman/inherit_graph_18.png000644 000765 000024 00000004061 14042362133 022434 0ustar00tangentstaff000000 000000 ‰PNG  IHDR%×Ý|™bKGDÿÿÿ ½§“æIDATxœíš{HSmÇŸÙ´-«9uæåˆ.¥@úC‰™Qb!iFÔܤŒ¨°BmV¦ibhšRVèr`¸ÿÉÜ4m %3¼` M¬y^6×ÔÔÔíœ÷‡óÎ3·–õöŽóùë9ßçú;ßç<ϹQ$6‡Ý=’ßé«mBúj›¾Ú&TüAGGÇ“'Oþ«¡ü çæÍ›Øá¿®×ñññššš?>$’_¥³³³££¯P×’J¥j<$›Cll¬‘B é«mBúj›¾Ú&¯sssׯ__^^Þ”ÖRSSËÊÊðJUUUuuµÙÞñÃxþüyUU•©*0 _Ç‘——×ÚÚju,SSSééé–—7Å_çë÷ïßKJJVVV6¥5¡P˜””ÔÕÕ…)MMMÍÍÍf{ÇC.—oP†á’’’ÙÙÙíÛ·Óéô¾¾¾ððpt2Y‹V«‰D–—7…õ¾êõzl&®¬¬,..š­ÃðÔÔ”‘ˆ ÈÜÜܵVWWççç- Ù³gÏ•+Wôz½%…-0ŠK—.åççJ¥ÒS§NUTTÖ]ÿÍ`0ètºÍÊOûªT*i4ZQQ‘‡‡‡‹‹KFFFVV“Éd0×®]ÄÆÆ&$$ …õz½‡‡Gmm-àÞ½{l6; ÀËË«½½- “ÉX,–»»{XXX\\\ff&ÖQWW—¿¿ÿ­[· rvvŽ‹‹[^^&EEEhE|——733S\\lˆB¡ ÑhØÅtüøq¡Ph6|Â(ŒX[[Û½{·‘øöíÛÀÀÀ€€€]»v¡/†”JåÎ;KKKY,–‹‹ËÁƒfjvvöÞ½{U*•ÙQ­Çšëuee¥¿¿_¡P”••=xð ¿¿dd¤±±±´´T£Ñðx¼W¯^­­­ZZZ–––¢££•Jeqqq__ŸF£·oßLNNòùü»wïÎÏÏgffÖÖÖ ¬½^ÿõë×?~LLLŒuww?zôˆPEEE¡ñi€“““P(ÌÉÉÅG ~…\]]Å÷Na(b±8+++##ãäÉ“ÝÝÝYYYFuïܹ“››«V«?}ú$‹{{{ mmmããã]]]_¾|‘ÉdXùÌÌL‰DÒÔÔäååe‰)FX¹çææºººÆÄÄÝÜÜŽ=joo?88£×ë[ZZ555§OŸ¦Ñh‚,..–——k4šôôt4÷åË—NNNÀÞÞ>::šÃá¬ï(''ÇÁÁÁÓÓ311ñÍ›7¦ÄÈÈÈÔÔT4ŸFár¹ÉÉÉÖ‹A–… …Ba0‚ˆÅb|E†_¼xÁãñÔjõàààÖ­[Ь‡:::‡††bbzzºH$jmmµÎT`µ¯îîî*• ð÷÷GE …b0h4—Ë­©©Ñëõuuuñññ??¿ÊÊJ‰DâååÔÐÐ ÅÚ\¿v1 WWW4 AF£1%šE$½ÿÝA˜!Œ%!!¡   °°°²²²½½]$á×O;;»×¯_ûúúîß¿¿¸¸xË–-X–››š Óé«««€¥¥¥ÆÆF …òîÝ;KB#ÄJ_íì*bwñññõõõÍÍÍt:ýðáÀÉÉɰ°°îîîééi>ŸõêÕååe—™™¬ºÑ: XXXÀnÍ:;;Qã E³@tÿþ}@€ía €­½J¥Òl#„Q¬/†Z544„)½½½ÙÙÙr¹|xx¸¾¾ÞÑÑËÂÎ$vöÚÚÚòóóSRR,œµëù-Ï9‡¢Ñh©©©gÏžEÇýáÇ'NhµZ‹Ã0àÈ‘#===èNÓÓÓcôEÃð³gσƒƒ2™,22Ò”ØÙÙ‰=bâÓx’’’ ª¯¯GÙl6•J•H$©T:>>n6.Â(PÔjµJ¥R©T ±±±îîîÀrGGG™Lf@@ ®®nhhhƒßʨTª““SRR’OJJŠÙQò[|µ³³;sæÌçÏŸ/\¸€*ÇŽÛ¶m›‡‡GHHÇ+(( Óé¡¡¡ÙÙÙÇßߟÇãµãèèØÔÔäãã³oß>‡sãÆ S¢\.ÏËËCkáÓF£*//Ç®tæ]¼x‘ÅbUTT ócc£@³x<A?žJ¥¶¶¶â—´˜˜˜ÀÀ@ooo6›-•J/_¾œ––6==½ñ9,++«®®Æ¯ö?‚}ƒlOŸ> Ç+0 +Š?Â0Œ×µZíÀÀ€Á`8wî\ZZ¦···£÷ cccZ­vñWÐétjµÚòò¦¢°„áááoß¾¡i•JeE ¦àr¹\.¯|ýEt:B¡ …?Æë %00p}y&“Éd27hÐÛÛÛBÑ  ÆO•7…%øúúbiOOOë±Í÷ullL $''£OA–ãçççììŒîر#$$Ĩ ¡H² ‚ÛÀ% ŸÏGÈ?Åÿo ÿKàtùëÞû“l ¤¯¶ é«mBúj›Ü£¯`HþGLLL@„W|åóùj<$›—ËÅRȧ›„Ü_mÒWÛ„ôÕ6!}µMþ˜žmŠ¡JÝIEND®B`‚mysql++-3.3.0/doc/html/refman/sqlstream_8h.html000644 000765 000024 00000014563 14042362133 022103 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: sqlstream.h File Reference
    MySQL++  3.3.0
    sqlstream.h File Reference

    Defines a class for building quoted and escaped SQL text. More...

    #include "common.h"
    #include <sstream>

    Go to the source code of this file.

    Classes

    class  mysqlpp::SQLStream
     A class for building SQL-formatted strings. More...
     

    Functions

    std::ostream & mysqlpp::operator<< (std::ostream &os, SQLStream &s)
     Insert raw string into the given stream. More...
     

    Detailed Description

    Defines a class for building quoted and escaped SQL text.

    Function Documentation

    ◆ operator<<()

    std::ostream& mysqlpp::operator<< ( std::ostream &  os,
    SQLStream s 
    )
    inline

    Insert raw string into the given stream.

    This is just syntactic sugar for SQLStream::str(void)

    mysql++-3.3.0/doc/html/refman/structmysqlpp_1_1SQLParseElement-members.html000644 000765 000024 00000011171 14042362133 027410 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: Member List
    MySQL++  3.3.0
    mysqlpp::SQLParseElement Member List

    This is the complete list of members for mysqlpp::SQLParseElement, including all inherited members.

    beforemysqlpp::SQLParseElement
    nummysqlpp::SQLParseElement
    optionmysqlpp::SQLParseElement
    SQLParseElement(std::string b, char o, signed char n)mysqlpp::SQLParseElementinline
    mysql++-3.3.0/doc/html/refman/classmysqlpp_1_1Exception.html000644 000765 000024 00000031311 14042362133 024531 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++: mysqlpp::Exception Class Reference
    MySQL++  3.3.0

    Base class for all MySQL++ custom exceptions. More...

    #include <exceptions.h>

    Inheritance diagram for mysqlpp::Exception:
    Collaboration diagram for mysqlpp::Exception:

    Public Member Functions

     Exception (const Exception &e) MAY_THROW()
     Create exception object as copy of another.
     
    Exceptionoperator= (const Exception &rhs) throw ()
     Assign another exception object's contents to this one.
     
     ~Exception () throw ()
     Destroy exception object.
     
    virtual const char * what () const throw ()
     Returns explanation of why exception was thrown.
     

    Protected Member Functions

     Exception (const char *w="") throw ()
     Create exception object.
     
     Exception (const std::string &w) throw ()
     Create exception object.
     

    Protected Attributes

    std::string what_
     explanation of why exception was thrown
     

    Detailed Description

    Base class for all MySQL++ custom exceptions.


    The documentation for this class was generated from the following file:
    mysql++-3.3.0/doc/html/refman/search/functions_17.html000644 000765 000024 00000002654 14042362132 023252 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/enums_2.js000644 000765 000024 00000000645 14042362132 021751 0ustar00tangentstaff000000 000000 var searchData= [ ['ignore_5ftype0_1044',['ignore_type0',['../manip_8h.html#aecf53d5cc6a2962626f69dd69e45845f',1,'mysqlpp']]], ['isolationlevel_1045',['IsolationLevel',['../classmysqlpp_1_1Transaction.html#a91d16b4539a969fb632ee672999cdd1f',1,'mysqlpp::Transaction']]], ['isolationscope_1046',['IsolationScope',['../classmysqlpp_1_1Transaction.html#a933f0528d41cea97732d9e70e232612c',1,'mysqlpp::Transaction']]] ]; mysql++-3.3.0/doc/html/refman/search/variables_7.js000644 000765 000024 00000001420 14042362132 022567 0ustar00tangentstaff000000 000000 var searchData= [ ['list_1003',['list',['../structmysqlpp_1_1value__list__ba.html#abab3903454b75548f120269967696c26',1,'mysqlpp::value_list_ba::list()'],['../structmysqlpp_1_1value__list__b.html#a2b804fe2d3c181d8ec2a2db4737fe2de',1,'mysqlpp::value_list_b::list()']]], ['list1_1004',['list1',['../structmysqlpp_1_1equal__list__ba.html#af0307d8b613d4ea52c0d9eb19b462e12',1,'mysqlpp::equal_list_ba::list1()'],['../structmysqlpp_1_1equal__list__b.html#a7b24538643ef04ca3969f4597a2e9337',1,'mysqlpp::equal_list_b::list1()']]], ['list2_1005',['list2',['../structmysqlpp_1_1equal__list__ba.html#a50b12dedeeba529383fd2ac61a566599',1,'mysqlpp::equal_list_ba::list2()'],['../structmysqlpp_1_1equal__list__b.html#ace8b74187f066eba8ad90b46be681f6b',1,'mysqlpp::equal_list_b::list2()']]] ]; mysql++-3.3.0/doc/html/refman/search/enumvalues_8.js000644 000765 000024 00000000314 14042362132 023005 0ustar00tangentstaff000000 000000 var searchData= [ ['this_5ftransaction_1076',['this_transaction',['../classmysqlpp_1_1Transaction.html#a933f0528d41cea97732d9e70e232612caf73085a07470c23fcdf8c9792cf4839d',1,'mysqlpp::Transaction']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_3.js000644 000765 000024 00000010372 14042362132 022631 0ustar00tangentstaff000000 000000 var searchData= [ ['data_695',['data',['../classmysqlpp_1_1String.html#a778f3f54fd40ec19fc9a800f85f18133',1,'mysqlpp::String::data()'],['../classmysqlpp_1_1SQLBuffer.html#abae32d826be7605448f5480d06974a75',1,'mysqlpp::SQLBuffer::data()'],['../classmysqlpp_1_1SQLTypeAdapter.html#a08e6264e3c9f688540de3bcea275c642',1,'mysqlpp::SQLTypeAdapter::data()']]], ['data_5fseek_696',['data_seek',['../classmysqlpp_1_1DBDriver.html#a73096f9f0d7f4f120cd803f6ebca8a4d',1,'mysqlpp::DBDriver']]], ['dataoption_697',['DataOption',['../classmysqlpp_1_1DataOption.html#a7147eab7b5fbd88b8e4e94958d744f8e',1,'mysqlpp::DataOption']]], ['date_698',['Date',['../classmysqlpp_1_1Date.html#af7734235d07959eed18b09027ed4930d',1,'mysqlpp::Date::Date()'],['../classmysqlpp_1_1Date.html#a7ef3095d32280a8e91cd85e693ec40db',1,'mysqlpp::Date::Date(unsigned short y, unsigned char m, unsigned char d)'],['../classmysqlpp_1_1Date.html#a30e97344bc6f97f12bbf2e9674faca4d',1,'mysqlpp::Date::Date(const Date &other)'],['../classmysqlpp_1_1Date.html#ad242744ac60cee035ab0640208bd416f',1,'mysqlpp::Date::Date(const DateTime &other)'],['../classmysqlpp_1_1Date.html#a06385a2d560ddd11412239221ea2d8b1',1,'mysqlpp::Date::Date(const char *str)'],['../classmysqlpp_1_1Date.html#aa2222d9a0058b355a1fc80b5a5076be0',1,'mysqlpp::Date::Date(const Str &str)'],['../classmysqlpp_1_1Date.html#a1f2f8c4e11dabe035bdf997921ab08f2',1,'mysqlpp::Date::Date(time_t t)']]], ['datetime_699',['DateTime',['../classmysqlpp_1_1DateTime.html#a5adf9a1a66996efd042d4a1e516ec8d4',1,'mysqlpp::DateTime::DateTime()'],['../classmysqlpp_1_1DateTime.html#a409407a25b49c89b0da432ba7df0a548',1,'mysqlpp::DateTime::DateTime(unsigned short y, unsigned char mon, unsigned char d, unsigned char h, unsigned char min, unsigned char s)'],['../classmysqlpp_1_1DateTime.html#a889be0bed1facbc1119d170480987ac4',1,'mysqlpp::DateTime::DateTime(const DateTime &other)'],['../classmysqlpp_1_1DateTime.html#ac34658dea4ae82bd4582b6cbf6ecf6c2',1,'mysqlpp::DateTime::DateTime(const char *str)'],['../classmysqlpp_1_1DateTime.html#accc75ba7e058a1c981f4f09d1ec9993c',1,'mysqlpp::DateTime::DateTime(const Str &str)'],['../classmysqlpp_1_1DateTime.html#ad0893c6349be27651a0711994aa0721d',1,'mysqlpp::DateTime::DateTime(time_t t)']]], ['day_700',['day',['../classmysqlpp_1_1DateTime.html#a2db923b56c4d17c917b7a71a7ea0039e',1,'mysqlpp::DateTime::day() const'],['../classmysqlpp_1_1DateTime.html#a98e378690e35ee9e9744b26ebcb1c899',1,'mysqlpp::DateTime::day(unsigned char d)'],['../classmysqlpp_1_1Date.html#a99feb3a0b68bde7a1a2355b03d12dc73',1,'mysqlpp::Date::day() const'],['../classmysqlpp_1_1Date.html#a2377b5e34f24864d6e727bb949b1735b',1,'mysqlpp::Date::day(unsigned char d)']]], ['db_701',['db',['../classmysqlpp_1_1Field.html#acb15b398d46119b6f0b4418daa9177eb',1,'mysqlpp::Field']]], ['dbdriver_702',['DBDriver',['../classmysqlpp_1_1DBDriver.html#a6ccfeba0e619aaff0a0b535024734096',1,'mysqlpp::DBDriver::DBDriver()'],['../classmysqlpp_1_1DBDriver.html#a97cb209e2560e41ce28d060e2c8c1a10',1,'mysqlpp::DBDriver::DBDriver(const DBDriver &other)']]], ['dbselectionfailed_703',['DBSelectionFailed',['../classmysqlpp_1_1DBSelectionFailed.html#abe3fafb68ac7103a4389484c380bc5ef',1,'mysqlpp::DBSelectionFailed']]], ['destroy_704',['destroy',['../classmysqlpp_1_1ConnectionPool.html#a3dae30e24dd6967e4e427fa69dbc2105',1,'mysqlpp::ConnectionPool']]], ['disable_5fexceptions_705',['disable_exceptions',['../classmysqlpp_1_1OptionalExceptions.html#a4e1a95b8d3c97338c66f21c5d5a4be20',1,'mysqlpp::OptionalExceptions']]], ['disconnect_706',['disconnect',['../classmysqlpp_1_1Connection.html#a61e571ee724d79c455555f62472880ef',1,'mysqlpp::Connection::disconnect()'],['../classmysqlpp_1_1DBDriver.html#ae7a74e96d9b1e2ff307f7983bd0a8b03',1,'mysqlpp::DBDriver::disconnect()']]], ['driver_707',['driver',['../classmysqlpp_1_1Connection.html#a0d118df40a7bd4bb63e7286b221f7680',1,'mysqlpp::Connection']]], ['drop_5fdb_708',['drop_db',['../classmysqlpp_1_1Connection.html#aa073e784a16a9d4b357740a626a6b2e1',1,'mysqlpp::Connection::drop_db()'],['../classmysqlpp_1_1DBDriver.html#a872929be520caecca06830cf8db89828',1,'mysqlpp::DBDriver::drop_db()']]], ['dtest_5fmode_709',['dtest_mode',['../classmysqlpp_1_1examples_1_1CommandLine.html#a177733504f32c0d051e7043878280525',1,'mysqlpp::examples::CommandLine']]] ]; mysql++-3.3.0/doc/html/refman/search/searchdata.js000644 000765 000024 00000001335 14042362132 022475 0ustar00tangentstaff000000 000000 var indexSectionsWithContent = { 0: "abcdefghiklmnopqrstuvwyz~", 1: "abcdefgilmnoqrstuvw", 2: "m", 3: "abcdefimnoqrstuvw", 4: "abcdefghiklmnopqrstuvwyz~", 5: "abcdefilmnorstw", 6: "abcdfilorstv", 7: "deinqs", 8: "deginqrst", 9: "n", 10: "m", 11: "m" }; var indexSectionNames = { 0: "all", 1: "classes", 2: "namespaces", 3: "files", 4: "functions", 5: "variables", 6: "typedefs", 7: "enums", 8: "enumvalues", 9: "related", 10: "defines", 11: "pages" }; var indexSectionLabels = { 0: "All", 1: "Classes", 2: "Namespaces", 3: "Files", 4: "Functions", 5: "Variables", 6: "Typedefs", 7: "Enumerations", 8: "Enumerator", 9: "Friends", 10: "Macros", 11: "Pages" }; mysql++-3.3.0/doc/html/refman/search/functions_6.html000644 000765 000024 00000002653 14042362132 023167 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_f.html000644 000765 000024 00000002647 14042362132 022344 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/all_6.js000644 000765 000024 00000001066 14042362132 021374 0ustar00tangentstaff000000 000000 var searchData= [ ['get_5foptions_142',['get_options',['../classmysqlpp_1_1DBDriver.html#a172203c0fbb69a6008c1071b3184880a',1,'mysqlpp::DBDriver']]], ['global_143',['global',['../classmysqlpp_1_1Transaction.html#a933f0528d41cea97732d9e70e232612ca707b5ddb102ba887030eb7f15acfe80e',1,'mysqlpp::Transaction']]], ['grab_144',['grab',['../classmysqlpp_1_1ConnectionPool.html#acbf56ee86ef66b3ebdf02adde5908776',1,'mysqlpp::ConnectionPool']]], ['guessconnectionoption_145',['GuessConnectionOption',['../classmysqlpp_1_1GuessConnectionOption.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_11.js000644 000765 000024 00000040217 14042362132 022711 0ustar00tangentstaff000000 000000 var searchData= [ ['safe_5fgrab_883',['safe_grab',['../classmysqlpp_1_1ConnectionPool.html#aac4d50bb5c603efec4b8d7e0a3e8a164',1,'mysqlpp::ConnectionPool']]], ['scopedconnection_884',['ScopedConnection',['../classmysqlpp_1_1ScopedConnection.html#a048b8756b1cd598785a709967894eeae',1,'mysqlpp::ScopedConnection']]], ['scopedlock_885',['ScopedLock',['../classmysqlpp_1_1ScopedLock.html#a0684decf81a6915e06297ff0fec218e9',1,'mysqlpp::ScopedLock']]], ['second_886',['second',['../classmysqlpp_1_1DateTime.html#ae38f73ce817b518ea4d220e8e24b1458',1,'mysqlpp::DateTime::second() const'],['../classmysqlpp_1_1DateTime.html#a3f292485082824144354948114c07bc6',1,'mysqlpp::DateTime::second(unsigned char s)'],['../classmysqlpp_1_1Time.html#a0d17ee57feaa42fca4d6ab0437ed0e53',1,'mysqlpp::Time::second() const'],['../classmysqlpp_1_1Time.html#af7cd937e307d2df96952b3bf5a606c66',1,'mysqlpp::Time::second(unsigned char s)']]], ['select_5fdb_887',['select_db',['../classmysqlpp_1_1Connection.html#af1bd6c380dea4cf157e4de7295550a0c',1,'mysqlpp::Connection::select_db()'],['../classmysqlpp_1_1DBDriver.html#a9b04fc35e69c50a11fed637f94474918',1,'mysqlpp::DBDriver::select_db()']]], ['selftestfailed_888',['SelfTestFailed',['../classmysqlpp_1_1SelfTestFailed.html#a6d78379544bdc0ba6a88e493b219b961',1,'mysqlpp::SelfTestFailed']]], ['server_889',['server',['../classmysqlpp_1_1examples_1_1CommandLine.html#a16890a1ca1d3a73429499ba246144496',1,'mysqlpp::examples::CommandLine::server()'],['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#a7b01c9596e5389faf5ee245d56ef73ce',1,'mysqlpp::ssqlsxlat::CommandLine::server()']]], ['server_5fstatus_890',['server_status',['../classmysqlpp_1_1Connection.html#a63c741b003f7bd9d51434a25290e65c0',1,'mysqlpp::Connection::server_status()'],['../classmysqlpp_1_1DBDriver.html#af101492dc6fccbd2d14b0113fb288d33',1,'mysqlpp::DBDriver::server_status()']]], ['server_5fversion_891',['server_version',['../classmysqlpp_1_1Connection.html#ac437af32250e56136373c3d9e38413d6',1,'mysqlpp::Connection::server_version()'],['../classmysqlpp_1_1DBDriver.html#a2a9a4cb1c28f7f865370673b6eb580b6',1,'mysqlpp::DBDriver::server_version()']]], ['set_892',['set',['../classmysqlpp_1_1Option.html#ab783846ebf48b7c7319cc045cb0b1828',1,'mysqlpp::Option::set()'],['../classmysqlpp_1_1SQLQueryParms.html#a2938179f7995d7fb8dbc7afc31e83971',1,'mysqlpp::SQLQueryParms::set()']]], ['set_893',['Set',['../classmysqlpp_1_1Set.html#a62dffb5ed205ad680fdc48ae7bed3533',1,'mysqlpp::Set::Set()'],['../classmysqlpp_1_1Set.html#a8bd3055564b6a0094cb6bd48c02f41e8',1,'mysqlpp::Set::Set(const char *str)'],['../classmysqlpp_1_1Set.html#a4ceafc69577666ed1c13799aa6b5e932',1,'mysqlpp::Set::Set(const std::string &str)'],['../classmysqlpp_1_1Set.html#a759edffe120ba1521b100e51617487f7',1,'mysqlpp::Set::Set(const String &str)']]], ['set_5fexceptions_894',['set_exceptions',['../classmysqlpp_1_1OptionalExceptions.html#a5e4f4a7a1526ceaef3308a385bd28a10',1,'mysqlpp::OptionalExceptions']]], ['set_5fnull_895',['set_null',['../classmysqlpp_1_1SQLBuffer.html#a1d7f060aea9c7ccd27c6d7a98c29417b',1,'mysqlpp::SQLBuffer']]], ['set_5foption_896',['set_option',['../classmysqlpp_1_1Connection.html#a266f69b0e8d9d588e8cc6c5a2a897b87',1,'mysqlpp::Connection::set_option()'],['../classmysqlpp_1_1DBDriver.html#a7e904fea92e008b62dc029a4edc64b14',1,'mysqlpp::DBDriver::set_option(Option *o)'],['../classmysqlpp_1_1DBDriver.html#aabf4611f79504ff607855f478cdda42c',1,'mysqlpp::DBDriver::set_option(mysql_option moption, const void *arg=0)'],['../classmysqlpp_1_1DBDriver.html#a7d1fc0bbcde9be05152eea9d41ce3cbd',1,'mysqlpp::DBDriver::set_option(unsigned int option, bool arg)']]], ['set_5foption_5fdefault_897',['set_option_default',['../classmysqlpp_1_1DBDriver.html#aafe09837335dc46b7865c88074a1b614',1,'mysqlpp::DBDriver']]], ['set_5foption_5fimpl_898',['set_option_impl',['../classmysqlpp_1_1DBDriver.html#a8b8c5db0d41c25917e23ba58ef153c00',1,'mysqlpp::DBDriver']]], ['set_5fprocessed_899',['set_processed',['../classmysqlpp_1_1SQLTypeAdapter.html#a2a48fae9511a363de243feaf7892ff53',1,'mysqlpp::SQLTypeAdapter']]], ['set_5ftype_900',['set_type',['../classmysqlpp_1_1Field.html#a78ce1b25eb3c7d32711fb6de22c037c3',1,'mysqlpp::Field']]], ['shrink_901',['shrink',['../classmysqlpp_1_1ConnectionPool.html#ac410ed5cb3032aed048fb3a275629654',1,'mysqlpp::ConnectionPool']]], ['shutdown_902',['shutdown',['../classmysqlpp_1_1Connection.html#a8fed0ebc10f72fe591941dc6f64b6f20',1,'mysqlpp::Connection::shutdown()'],['../classmysqlpp_1_1DBDriver.html#adead80da9db0351a439f175ecfc79513',1,'mysqlpp::DBDriver::shutdown()']]], ['simpleresult_903',['SimpleResult',['../classmysqlpp_1_1SimpleResult.html#af42179309a2de75590514c6014f3cf16',1,'mysqlpp::SimpleResult::SimpleResult()'],['../classmysqlpp_1_1SimpleResult.html#a5247a26c102ec13cc7c89e3c1e3d9051',1,'mysqlpp::SimpleResult::SimpleResult(bool copacetic, ulonglong insert_id, ulonglong rows, const std::string &info)']]], ['size_904',['size',['../classmysqlpp_1_1ConnectionPool.html#a852e802aa80a2e608926760a1d9b4591',1,'mysqlpp::ConnectionPool::size()'],['../classmysqlpp_1_1String.html#a35ba1053c5e756d26202cbf3c23145b4',1,'mysqlpp::String::size()'],['../classmysqlpp_1_1Row.html#a88744fee52c19b1d93466d7ab7c761c3',1,'mysqlpp::Row::size()'],['../classmysqlpp_1_1SQLTypeAdapter.html#a090f501c95476918fdd2efca6f019c72',1,'mysqlpp::SQLTypeAdapter::size()']]], ['sql_5fname_905',['sql_name',['../classmysqlpp_1_1mysql__type__info.html#aef8441941c7c216bfb04e44cbcc65988',1,'mysqlpp::mysql_type_info']]], ['sqlbuffer_906',['SQLBuffer',['../classmysqlpp_1_1SQLBuffer.html#a4e86b8febc1ab8c889fbd42c3c3dfc49',1,'mysqlpp::SQLBuffer::SQLBuffer(const char *data, size_type length, mysql_type_info type, bool is_null)'],['../classmysqlpp_1_1SQLBuffer.html#affbff8bda67d898d47a4df8498fe61b9',1,'mysqlpp::SQLBuffer::SQLBuffer(const std::string &s, mysql_type_info type, bool is_null)']]], ['sqlparseelement_907',['SQLParseElement',['../structmysqlpp_1_1SQLParseElement.html#a5095f861effa2f1695c3cc29f79f825e',1,'mysqlpp::SQLParseElement']]], ['sqlqueryparms_908',['SQLQueryParms',['../classmysqlpp_1_1SQLQueryParms.html#aab7e6bc3ba59425a174c9d31ab6a3a99',1,'mysqlpp::SQLQueryParms::SQLQueryParms()'],['../classmysqlpp_1_1SQLQueryParms.html#a0796bfe6a2982b8fce758b174e547f5f',1,'mysqlpp::SQLQueryParms::SQLQueryParms(Query *p)']]], ['sqlstream_909',['SQLStream',['../classmysqlpp_1_1SQLStream.html#ad5c7fbaf7deb94157dcb71f1efe4596b',1,'mysqlpp::SQLStream::SQLStream(Connection *c, const char *pstr=0)'],['../classmysqlpp_1_1SQLStream.html#a0e13aec37b6179e439bf2a9acec87151',1,'mysqlpp::SQLStream::SQLStream(const SQLStream &s)']]], ['sqltypeadapter_910',['SQLTypeAdapter',['../classmysqlpp_1_1SQLTypeAdapter.html#a31d688da24be77d02c469dac6df37d9b',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter()'],['../classmysqlpp_1_1SQLTypeAdapter.html#a03e2497ff08c680bef861c770721bb7e',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(const SQLTypeAdapter &other)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a400bb55e95bf590f0acc470b15e9a5d9',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(const String &str, bool processed=false)'],['../classmysqlpp_1_1SQLTypeAdapter.html#aee0af64f24407cdc09a7beb3c05ad498',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(const std::string &str, bool processed=false)'],['../classmysqlpp_1_1SQLTypeAdapter.html#ab07682f02f5075785ea448a395732689',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(const char *str, bool processed=false)'],['../classmysqlpp_1_1SQLTypeAdapter.html#ae0c49d150e21f615cfbbc7edd756900e',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(const char *str, int len, bool processed=false)'],['../classmysqlpp_1_1SQLTypeAdapter.html#acdb7e3614d5c7af0f3e1ee7f597ff94e',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(char c)'],['../classmysqlpp_1_1SQLTypeAdapter.html#aff5116aaa18b17b0e44f33f7cd716869',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(tiny_int< signed char > i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a162ad4a4740b1de8dadbdadaccf6a918',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(tiny_int< unsigned char > i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a090ef8382b8f634dc2f4431cb5f06a82',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(short i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a4a30a1e650133ec73539e0b41b19c6eb',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(unsigned short i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a4fd2e3fb7cae9affa10ffa8c3b8a18d1',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(int i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a297f5141430325f66f792cbf2b8025f4',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(unsigned i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#aa156c377d40caa9f85c8272187e3ee23',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(long i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a4360e65155a9ea8aa2549fb0e224c41b',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(unsigned long i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#afef5f1b5afaecde206c37b21de7edf33',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(longlong i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#ad375a42a497804bf3354a37422b3bc95',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(ulonglong i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#ac3738e04ac47c8599f8589e49c87bd68',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(float i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a902bcb5c1afabf4e65b51b42957c4fbb',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(double i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#aeb0c72567357857773b04f2843b650a9',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(const Date &d)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a083fd1b8fa62d2fed37dc24da02790c3',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(const DateTime &dt)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a74a3ef39d98fffce5320de180b987d69',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(const Time &t)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a5df707a6b5f40119cb2111c6c1fa2e3e',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(const null_type &i)']]], ['ssloption_911',['SslOption',['../classmysqlpp_1_1SslOption.html#a84845e9568b894a8f6059fff47e6908d',1,'mysqlpp::SslOption']]], ['store_912',['store',['../classmysqlpp_1_1Query.html#a16c800e645429d558f4295065b1aed73',1,'mysqlpp::Query::store()'],['../classmysqlpp_1_1Query.html#a2bcd3c940f936f38bd40396449007d80',1,'mysqlpp::Query::store(SQLQueryParms &p)'],['../classmysqlpp_1_1Query.html#a4531cbffbb15c003ff35c3bbbd3b4397',1,'mysqlpp::Query::store(const SQLTypeAdapter &str)'],['../classmysqlpp_1_1Query.html#a15f991f68505f9a35aed0a03932a1900',1,'mysqlpp::Query::store(const char *str, size_t len)']]], ['store_5fif_913',['store_if',['../classmysqlpp_1_1Query.html#ad7c3181bf3e2bc4399a302a60c4a3527',1,'mysqlpp::Query::store_if(Sequence &con, const SQLTypeAdapter &query, Function fn)'],['../classmysqlpp_1_1Query.html#a7a044520c6a19e55ad0fbfa4b52ae237',1,'mysqlpp::Query::store_if(Sequence &con, const SSQLS &ssqls, Function fn)'],['../classmysqlpp_1_1Query.html#a6d6e8dcd8e1538017c11ac02b2846ce2',1,'mysqlpp::Query::store_if(Sequence &con, Function fn)']]], ['store_5fnext_914',['store_next',['../classmysqlpp_1_1Query.html#a0e22c60aa550675b5e89ab9bbaea7f8e',1,'mysqlpp::Query']]], ['store_5fresult_915',['store_result',['../classmysqlpp_1_1DBDriver.html#a2a5e5817177c96b4cd3fd80a74f8ae80',1,'mysqlpp::DBDriver']]], ['storein_916',['storein',['../classmysqlpp_1_1Query.html#a8ba080b7a2f2cd4086fbb374ae86b6e9',1,'mysqlpp::Query::storein(Container &con)'],['../classmysqlpp_1_1Query.html#a461d17d9db64dd040339cbff070ea02c',1,'mysqlpp::Query::storein(T &con, SQLQueryParms &p)'],['../classmysqlpp_1_1Query.html#ae47fd3e16132af6238b6c6a182fb18f4',1,'mysqlpp::Query::storein(std::vector< T > &con, const SQLTypeAdapter &s)'],['../classmysqlpp_1_1Query.html#a04245f7ef8e01ebbe162674c3daaea73',1,'mysqlpp::Query::storein(std::deque< T > &con, const SQLTypeAdapter &s)'],['../classmysqlpp_1_1Query.html#a8407a8143474046bd147fbd5a322ec98',1,'mysqlpp::Query::storein(std::list< T > &con, const SQLTypeAdapter &s)'],['../classmysqlpp_1_1Query.html#af6fbb8786321102e82bfa5fe681e763f',1,'mysqlpp::Query::storein(std::set< T > &con, const SQLTypeAdapter &s)'],['../classmysqlpp_1_1Query.html#ab98ff9a520fe140f7622994c951b6dff',1,'mysqlpp::Query::storein(std::multiset< T > &con, const SQLTypeAdapter &s)']]], ['storein_5fsequence_917',['storein_sequence',['../classmysqlpp_1_1Query.html#a948387c9f15db2837e7aad557c955424',1,'mysqlpp::Query::storein_sequence(Sequence &con)'],['../classmysqlpp_1_1Query.html#a2fa1ef7235bee641ae4a42a4944fa69c',1,'mysqlpp::Query::storein_sequence(Sequence &con, const SQLTypeAdapter &s)'],['../classmysqlpp_1_1Query.html#a1b378e41e2de26cb0f16ca004c116760',1,'mysqlpp::Query::storein_sequence(Seq &con, SQLQueryParms &p)']]], ['storein_5fset_918',['storein_set',['../classmysqlpp_1_1Query.html#aef7fb34235a244fd3d92e62fc026946f',1,'mysqlpp::Query::storein_set(Set &con)'],['../classmysqlpp_1_1Query.html#af82a6e6f875c8d1834ac4e56979969bc',1,'mysqlpp::Query::storein_set(Set &con, const SQLTypeAdapter &s)'],['../classmysqlpp_1_1Query.html#af207b0559f75833bbf38e670dc217978',1,'mysqlpp::Query::storein_set(Set &con, SQLQueryParms &p)']]], ['storequeryresult_919',['StoreQueryResult',['../classmysqlpp_1_1StoreQueryResult.html#a0db61dd318b1e02d8c72bbce1fd12f2a',1,'mysqlpp::StoreQueryResult::StoreQueryResult()'],['../classmysqlpp_1_1StoreQueryResult.html#a80f379be1da2a5d35f248bd9f4423c2a',1,'mysqlpp::StoreQueryResult::StoreQueryResult(MYSQL_RES *result, DBDriver *dbd, bool te=true)'],['../classmysqlpp_1_1StoreQueryResult.html#a3754c274c83f045bc3772e821c97629b',1,'mysqlpp::StoreQueryResult::StoreQueryResult(const StoreQueryResult &other)']]], ['str_920',['str',['../classmysqlpp_1_1DateTime.html#aa44354b972e259afbcc566823d8bce79',1,'mysqlpp::DateTime::str()'],['../classmysqlpp_1_1Date.html#ad5072189a07c97d189883dedd685f8d9',1,'mysqlpp::Date::str()'],['../classmysqlpp_1_1Time.html#a8739509927c26cd9368e10b1f0ef9e7e',1,'mysqlpp::Time::str()'],['../classmysqlpp_1_1Set.html#afe41e306013db20c116ce2ed8aa57cc6',1,'mysqlpp::Set::str()'],['../classmysqlpp_1_1Query.html#a17036cdcf4dd7a747b1ba6ee664da048',1,'mysqlpp::Query::str()'],['../classmysqlpp_1_1Query.html#a7fa8d56bd3d8a1bd3b5403665dbf6c8e',1,'mysqlpp::Query::str(const SQLTypeAdapter &arg0)'],['../classmysqlpp_1_1Query.html#ac93d201c91a7e0b9056e8cac33a38f7d',1,'mysqlpp::Query::str(SQLQueryParms &p)']]], ['str_5fto_5flwr_921',['str_to_lwr',['../namespacemysqlpp_1_1internal.html#ae621e2f49ab790bef36364760608e8d0',1,'mysqlpp::internal::str_to_lwr(std::string &s)'],['../namespacemysqlpp_1_1internal.html#a8f93b8d591a05df71ea786cf53dfafae',1,'mysqlpp::internal::str_to_lwr(std::string &ls, const char *mcs)']]], ['stream2string_922',['stream2string',['../stream2string_8h.html#a6423fad89ee663f09a8c04df1f887ffb',1,'mysqlpp']]], ['string_923',['String',['../classmysqlpp_1_1String.html#ae711df130eb705131bb4121b58114304',1,'mysqlpp::String::String()'],['../classmysqlpp_1_1String.html#a7e81654babcc5d285b3e9f838833bd88',1,'mysqlpp::String::String(const String &other)'],['../classmysqlpp_1_1String.html#af5ff5d5045cbca01c441d2b1b1b02136',1,'mysqlpp::String::String(const char *str, size_type len, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)'],['../classmysqlpp_1_1String.html#af6d39e2ae5aeb13761b80fafcfdcb8a0',1,'mysqlpp::String::String(const std::string &str, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)'],['../classmysqlpp_1_1String.html#afb546bc0f5231627b93c66746a9cd3c0',1,'mysqlpp::String::String(const char *str, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)']]], ['strip_5fleading_5fblanks_924',['strip_leading_blanks',['../classmysqlpp_1_1String.html#adb2d45ea62286c4e491d7d922d66137b',1,'mysqlpp::String']]], ['successful_925',['successful',['../classmysqlpp_1_1CommandLineBase.html#ade5bf9dbcab332246ea2c4f8854071f1',1,'mysqlpp::CommandLineBase']]], ['swap_926',['swap',['../classmysqlpp_1_1RefCountedPointer.html#ac6de38aa306bfe6166384e70bc9dbaef',1,'mysqlpp::RefCountedPointer::swap()'],['../result_8h.html#ab206305738ebbb201551ffa08dfebf05',1,'mysqlpp::swap(StoreQueryResult &x, StoreQueryResult &y)'],['../result_8h.html#a3ce1d7360288ef3d4aab99f4469bcac3',1,'mysqlpp::swap(UseQueryResult &x, UseQueryResult &y)']]] ]; mysql++-3.3.0/doc/html/refman/search/all_4.html000644 000765 000024 00000002645 14042362132 021726 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/classes_1.html000644 000765 000024 00000002651 14042362132 022605 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_9.js000644 000765 000024 00000000125 14042362132 021724 0ustar00tangentstaff000000 000000 var searchData= [ ['options_2eh_634',['options.h',['../options_8h.html',1,'']]] ]; mysql++-3.3.0/doc/html/refman/search/variables_8.html000644 000765 000024 00000002653 14042362132 023131 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/variables_c.html000644 000765 000024 00000002653 14042362132 023204 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/functions_d.js000644 000765 000024 00000050171 14042362132 022713 0ustar00tangentstaff000000 000000 var searchData= [ ['objectnotinitialized_787',['ObjectNotInitialized',['../classmysqlpp_1_1ObjectNotInitialized.html#adf2d313b70dca87a0c78dae20141af11',1,'mysqlpp::ObjectNotInitialized']]], ['operator_20bool_788',['operator bool',['../classmysqlpp_1_1String.html#ab0d364d1503a1eb51577c43c4c961ac0',1,'mysqlpp::String::operator bool()'],['../classmysqlpp_1_1tiny__int.html#ab733957913c1801a188873d2b3089126',1,'mysqlpp::tiny_int::operator bool()']]], ['operator_20const_20char_20_2a_789',['operator const char *',['../classmysqlpp_1_1String.html#adb031ef20e97139a3750f097a9eea7bf',1,'mysqlpp::String::operator const char *()'],['../classmysqlpp_1_1SQLTypeAdapter.html#ae53774c6ab86a8472c888600b15871c3',1,'mysqlpp::SQLTypeAdapter::operator const char *()']]], ['operator_20const_20void_20_2a_790',['operator const void *',['../classmysqlpp_1_1RefCountedPointer.html#a70e3f29073ff9707cec12ba841910ca8',1,'mysqlpp::RefCountedPointer']]], ['operator_20date_791',['operator Date',['../classmysqlpp_1_1String.html#aee36fa5381717ac82bbba1b30f33c002',1,'mysqlpp::String']]], ['operator_20datetime_792',['operator DateTime',['../classmysqlpp_1_1String.html#aa80a17fa4d2125b83a91d180b9c86581',1,'mysqlpp::String']]], ['operator_20double_793',['operator double',['../classmysqlpp_1_1String.html#a58e2e69f569cf0a763f3b872a50f028b',1,'mysqlpp::String']]], ['operator_20float_794',['operator float',['../classmysqlpp_1_1String.html#ac9214795d988addd4ddd7347137f94e6',1,'mysqlpp::String']]], ['operator_20int_795',['operator int',['../classmysqlpp_1_1String.html#a6ed67e9a9661a0df677d7037c533c219',1,'mysqlpp::String::operator int()'],['../classmysqlpp_1_1tiny__int.html#a220a6aab5326ad5f61380786a3f2ef79',1,'mysqlpp::tiny_int::operator int()']]], ['operator_20long_20int_796',['operator long int',['../classmysqlpp_1_1String.html#ade46267c46a58e55145b9127ea9940f5',1,'mysqlpp::String']]], ['operator_20longlong_797',['operator longlong',['../classmysqlpp_1_1String.html#a48a10dba7e8ca3ff4377e512e38bdcde',1,'mysqlpp::String']]], ['operator_20mysql_5fres_20_2a_798',['operator MYSQL_RES *',['../classmysqlpp_1_1UseQueryResult.html#a8e8966dcc7b06fc0ccc937df03592eb3',1,'mysqlpp::UseQueryResult']]], ['operator_20null_3c_20t_2c_20b_20_3e_799',['operator Null< T, B >',['../classmysqlpp_1_1String.html#a4916487ca99be70ca919c067a0d4bd1d',1,'mysqlpp::String']]], ['operator_20private_5fbool_5ftype_800',['operator private_bool_type',['../classmysqlpp_1_1Connection.html#ac566c5ccf8cf92d3b80969bd09bea184',1,'mysqlpp::Connection::operator private_bool_type()'],['../classmysqlpp_1_1SimpleResult.html#a0097b2e46727000537cd5a876ff54fdf',1,'mysqlpp::SimpleResult::operator private_bool_type()'],['../classmysqlpp_1_1StoreQueryResult.html#a4d182f773d04d30f13a3d276f6494cc9',1,'mysqlpp::StoreQueryResult::operator private_bool_type()'],['../classmysqlpp_1_1Row.html#adcdec8796ef8f7d3156d66296bdf3f06',1,'mysqlpp::Row::operator private_bool_type()']]], ['operator_20short_20int_801',['operator short int',['../classmysqlpp_1_1String.html#a362d9ff02feb199298f3329869636ccf',1,'mysqlpp::String']]], ['operator_20signed_20char_802',['operator signed char',['../classmysqlpp_1_1String.html#ab6fbba4b6b9d85c5cb8667c76cf4cf9a',1,'mysqlpp::String']]], ['operator_20time_803',['operator Time',['../classmysqlpp_1_1String.html#a3904e41b9760abc26d0d93261747ee6f',1,'mysqlpp::String']]], ['operator_20time_5ft_804',['operator time_t',['../classmysqlpp_1_1DateTime.html#a35922ebd991bfe51451a3359b08a983a',1,'mysqlpp::DateTime::operator time_t()'],['../classmysqlpp_1_1Date.html#a7bd903b8ba4753252adb809d9e67f567',1,'mysqlpp::Date::operator time_t()'],['../classmysqlpp_1_1Time.html#a5f605e02560a20c8e48153fccaeaa638',1,'mysqlpp::Time::operator time_t()']]], ['operator_20type_805',['operator Type',['../classmysqlpp_1_1Null.html#a2ff8415d7070ebbe0462dd78f278d78a',1,'mysqlpp::Null']]], ['operator_20ulonglong_806',['operator ulonglong',['../classmysqlpp_1_1String.html#aee68e1ba1d6acc1cc19c740ecd8afca4',1,'mysqlpp::String']]], ['operator_20unsigned_20char_807',['operator unsigned char',['../classmysqlpp_1_1String.html#a82c21ae0458451ae82e92ed64a7096a9',1,'mysqlpp::String']]], ['operator_20unsigned_20int_808',['operator unsigned int',['../classmysqlpp_1_1String.html#a591ed46247129f1393a31350a549b1f9',1,'mysqlpp::String']]], ['operator_20unsigned_20long_20int_809',['operator unsigned long int',['../classmysqlpp_1_1String.html#a9e00717ff67a8d61ec15c284ad357567',1,'mysqlpp::String']]], ['operator_20unsigned_20short_20int_810',['operator unsigned short int',['../classmysqlpp_1_1String.html#a3c90987f511c39b8a9f1e87c05c608b9',1,'mysqlpp::String']]], ['operator_20value_5ftype_811',['operator value_type',['../classmysqlpp_1_1tiny__int.html#a32c029e1f927c6571006b5ff36536add',1,'mysqlpp::tiny_int']]], ['operator_20void_20_2a_812',['operator void *',['../classmysqlpp_1_1CommandLineBase.html#a8cef39986e213b2e596602e8f505e773',1,'mysqlpp::CommandLineBase::operator void *()'],['../classmysqlpp_1_1Query.html#adef9279b7c7f9e706fed4a4293aa25b8',1,'mysqlpp::Query::operator void *()'],['../classmysqlpp_1_1RefCountedPointer.html#a48f681f74dbe025e8c639f65850e2302',1,'mysqlpp::RefCountedPointer::operator void *()'],['../classmysqlpp_1_1ScopedConnection.html#af78d1e0d9b08ead6741775b9fa1f1f76',1,'mysqlpp::ScopedConnection::operator void *()']]], ['operator_21_813',['operator!',['../classmysqlpp_1_1Query.html#a5789166f3ba43e57632bfff471bfde9c',1,'mysqlpp::Query']]], ['operator_21_3d_814',['operator!=',['../type__info_8h.html#a76c7cf5acdee2b571e3faf747ff05f86',1,'mysqlpp::operator!=(const mysql_type_info &a, const mysql_type_info &b)'],['../type__info_8h.html#a2f5e39c2ce07a10d10fbac05c69719c7',1,'mysqlpp::operator!=(const std::type_info &a, const mysql_type_info &b)'],['../type__info_8h.html#aa850515ed37836d129fcb2519b715616',1,'mysqlpp::operator!=(const mysql_type_info &a, const std::type_info &b)'],['../classmysqlpp_1_1Comparable.html#abd6838057873cc50a61718e3a9c3d288',1,'mysqlpp::Comparable::operator!=()'],['../classmysqlpp_1_1String.html#a3ee730cb495dcd5f13208d7c3684dd82',1,'mysqlpp::String::operator!=(const T &rhs) const'],['../classmysqlpp_1_1String.html#a7b1a97b852f97b37314a2ac17606ba9d',1,'mysqlpp::String::operator!=(const mysqlpp::null_type &) const'],['../classmysqlpp_1_1Null.html#a40a4bb82c9460d9e9e510b6c37a26134',1,'mysqlpp::Null::operator!=(const Null< Type > &rhs) const'],['../classmysqlpp_1_1Null.html#a169bf669bfb3738c45e7bb78afc66851',1,'mysqlpp::Null::operator!=(const null_type &rhs) const'],['../classmysqlpp_1_1tiny__int.html#a9cd53203e656f96c171246fae11061af',1,'mysqlpp::tiny_int::operator!=(const this_type &i) const']]], ['operator_25_815',['operator%',['../classmysqlpp_1_1tiny__int.html#ae96ea883a7b0a03ddfa576427f08c258',1,'mysqlpp::tiny_int']]], ['operator_25_3d_816',['operator%=',['../classmysqlpp_1_1tiny__int.html#abbc67bd4206bcdc011987d8982c8fde2',1,'mysqlpp::tiny_int']]], ['operator_26_817',['operator&',['../classmysqlpp_1_1tiny__int.html#aca3b72be7352df7182e4e8aba6daee76',1,'mysqlpp::tiny_int']]], ['operator_26_3d_818',['operator&=',['../classmysqlpp_1_1tiny__int.html#a24b3a6fbf978a37dcb28af603f496caa',1,'mysqlpp::tiny_int']]], ['operator_28_29_819',['operator()',['../structmysqlpp_1_1RefCountedPointerDestroyer_3_01MYSQL__RES_01_4.html#ae78dc40ea63d76b4efff3476fb4e0eed',1,'mysqlpp::RefCountedPointerDestroyer< MYSQL_RES >::operator()()'],['../structmysqlpp_1_1RefCountedPointerDestroyer.html#a2bb4681a031201322d3a10fae7be7dfc',1,'mysqlpp::RefCountedPointerDestroyer::operator()()']]], ['operator_2a_820',['operator*',['../classmysqlpp_1_1RefCountedPointer.html#abe859269484d98811b0429c1d714d22c',1,'mysqlpp::RefCountedPointer::operator*()'],['../classmysqlpp_1_1ScopedConnection.html#abdb6508f802571704070242ddbfebac4',1,'mysqlpp::ScopedConnection::operator*()'],['../classmysqlpp_1_1tiny__int.html#a6ed99c56a6ed8778309721ac1d3bf7b6',1,'mysqlpp::tiny_int::operator*(const this_type &i) const']]], ['operator_2a_3d_821',['operator*=',['../classmysqlpp_1_1tiny__int.html#aad168f067098aef3975fac384a7bfc7c',1,'mysqlpp::tiny_int']]], ['operator_2b_822',['operator+',['../classmysqlpp_1_1SQLQueryParms.html#a3463a21eab7b56def356c9f0bf81cbb5',1,'mysqlpp::SQLQueryParms::operator+()'],['../classmysqlpp_1_1tiny__int.html#a0a68f5fb5aad27e3e2eb8ab202d23b20',1,'mysqlpp::tiny_int::operator+(const this_type &i) const']]], ['operator_2b_2b_823',['operator++',['../classmysqlpp_1_1tiny__int.html#ac73c26862208cf500871288153975397',1,'mysqlpp::tiny_int::operator++()'],['../classmysqlpp_1_1tiny__int.html#acb6a9557f17f0d9491bfca78dd447133',1,'mysqlpp::tiny_int::operator++(int)']]], ['operator_2b_3d_824',['operator+=',['../classmysqlpp_1_1SQLQueryParms.html#a5ea5a8f1b1598a03c969e4bd42b70367',1,'mysqlpp::SQLQueryParms::operator+=()'],['../classmysqlpp_1_1tiny__int.html#a36e18f2ce991fb4296dc59e2212a5fa1',1,'mysqlpp::tiny_int::operator+=(int v)']]], ['operator_2d_825',['operator-',['../classmysqlpp_1_1tiny__int.html#a6da55c932a8b5eaeb364b41b431fd27b',1,'mysqlpp::tiny_int']]], ['operator_2d_2d_826',['operator--',['../classmysqlpp_1_1tiny__int.html#a85a9927cabf14fc6d6c57b3654bcdd98',1,'mysqlpp::tiny_int::operator--()'],['../classmysqlpp_1_1tiny__int.html#a7bc7eacd9a17ee36161595b2715da7c8',1,'mysqlpp::tiny_int::operator--(int)']]], ['operator_2d_3d_827',['operator-=',['../classmysqlpp_1_1tiny__int.html#ae5efcbe08b3c794b6891e601087901f0',1,'mysqlpp::tiny_int']]], ['operator_2d_3e_828',['operator->',['../classmysqlpp_1_1RefCountedPointer.html#ae3cba580c671f21bed27b1bbfddb38be',1,'mysqlpp::RefCountedPointer::operator->()'],['../classmysqlpp_1_1ScopedConnection.html#adfdccb62813dbd052750a205e0cd1d29',1,'mysqlpp::ScopedConnection::operator->()']]], ['operator_2f_829',['operator/',['../classmysqlpp_1_1tiny__int.html#a0ae2cc2ea907f6c485f8a14ab27fc298',1,'mysqlpp::tiny_int']]], ['operator_2f_3d_830',['operator/=',['../classmysqlpp_1_1tiny__int.html#a1202e5b687748679fb3fc3f8dd58590c',1,'mysqlpp::tiny_int']]], ['operator_3c_831',['operator<',['../classmysqlpp_1_1tiny__int.html#a356bb331a01fa80e8d738bf223ea3ac8',1,'mysqlpp::tiny_int::operator<()'],['../classmysqlpp_1_1Comparable.html#aeedff722c69d1f025e2f93241ce24dfa',1,'mysqlpp::Comparable::operator<()'],['../classmysqlpp_1_1Null.html#ae7209f1af6f37a583f914bc616ea64ab',1,'mysqlpp::Null::operator<(const Null< Type > &rhs) const'],['../classmysqlpp_1_1Null.html#af52c81541d4ee25a3c09399a5f402698',1,'mysqlpp::Null::operator<(const null_type &) const']]], ['operator_3c_3c_832',['operator<<',['../classmysqlpp_1_1SQLQueryParms.html#a99cd26777450918add30f14c0224d4e8',1,'mysqlpp::SQLQueryParms::operator<<()'],['../myset_8h.html#afac17b799a2d8f5a36b411b7e75dcc99',1,'mysqlpp::operator<<()'],['../classmysqlpp_1_1tiny__int.html#ad434a8f7339c86a6fe93ddbde954beeb',1,'mysqlpp::tiny_int::operator<<()'],['../null_8h.html#ac214a288279ed7ccfc2c5b6219a83821',1,'mysqlpp::operator<<(std::ostream &o, const Null< Type, Behavior > &n)'],['../query_8h.html#a0bb63973f664fc1c142cdd093f539d03',1,'mysqlpp::operator<<(std::ostream &os, Query &q)'],['../sqlstream_8h.html#a11f16ac6788a32f6f2d249c6fb8ba435',1,'mysqlpp::operator<<(std::ostream &os, SQLStream &s)'],['../tiny__int_8h.html#acdb621cc1a5decd8e9b6950470bdf0cb',1,'mysqlpp::operator<<(std::ostream &os, tiny_int< VT > i)'],['../vallist_8h.html#a14959a9a7adf3bdb1f68ab7ea4e6bb7e',1,'mysqlpp::operator<<(std::ostream &o, const equal_list_ba< Seq1, Seq2, Manip > &el)'],['../vallist_8h.html#a3fa2009cde5ff7ee5d817d9e8e1b9ace',1,'mysqlpp::operator<<(std::ostream &o, const equal_list_b< Seq1, Seq2, Manip > &el)'],['../vallist_8h.html#a5190aab5cca65dbb641e287de9cb6f66',1,'mysqlpp::operator<<(std::ostream &o, const value_list_ba< Seq, Manip > &cl)'],['../vallist_8h.html#ae42f3fce3eb51f9257d519728ebb247c',1,'mysqlpp::operator<<(std::ostream &o, const value_list_b< Seq, Manip > &cl)']]], ['operator_3c_3c_3d_833',['operator<<=',['../classmysqlpp_1_1tiny__int.html#a256b54a16c73ac9f5ceb98cc18ea08a2',1,'mysqlpp::tiny_int']]], ['operator_3c_3d_834',['operator<=',['../classmysqlpp_1_1Comparable.html#a87d2453b99391154e1a5ece20ec6c046',1,'mysqlpp::Comparable::operator<=()'],['../classmysqlpp_1_1tiny__int.html#a662f6c125b44a2bf856e8fee093301fa',1,'mysqlpp::tiny_int::operator<=()']]], ['operator_3d_835',['operator=',['../classmysqlpp_1_1String.html#a1252d1e232376f6493755b49761fa439',1,'mysqlpp::String::operator=()'],['../classmysqlpp_1_1Null.html#a166ecaa4b711982efe2d8ceee57cd06a',1,'mysqlpp::Null::operator=(const Type &x)'],['../classmysqlpp_1_1Null.html#a05b4d11b4ac5bfa80c2a05cbcc740d01',1,'mysqlpp::Null::operator=(const null_type &)'],['../classmysqlpp_1_1Query.html#a75982ff4f3b5fe603ee6041ed64172ce',1,'mysqlpp::Query::operator=()'],['../classmysqlpp_1_1RefCountedPointer.html#a33e254256ace5abc2b07d8a630e55188',1,'mysqlpp::RefCountedPointer::operator=(T *c)'],['../classmysqlpp_1_1RefCountedPointer.html#a506a85c3e871b5436eb20d6436fb5d9d',1,'mysqlpp::RefCountedPointer::operator=(const ThisType &rhs)'],['../classmysqlpp_1_1StoreQueryResult.html#a832e623301e516f7f31714bc7ed471b9',1,'mysqlpp::StoreQueryResult::operator=()'],['../classmysqlpp_1_1UseQueryResult.html#a2c7f55f092e888911acca535d630fbf2',1,'mysqlpp::UseQueryResult::operator=()'],['../classmysqlpp_1_1Row.html#a0daff2b6eaca8ea5b3193c0c3e68fea4',1,'mysqlpp::Row::operator=()'],['../classmysqlpp_1_1SQLStream.html#a48bd3485fca317bfef9b21405aca78d2',1,'mysqlpp::SQLStream::operator=()'],['../classmysqlpp_1_1SQLTypeAdapter.html#a81c7586c2d06c3be039e1ec29e91fe2a',1,'mysqlpp::SQLTypeAdapter::operator=(const SQLTypeAdapter &rhs)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a4b1e09ad61e2c57be780362d9eb68dd8',1,'mysqlpp::SQLTypeAdapter::operator=(const null_type &n)'],['../classmysqlpp_1_1tiny__int.html#ade6a9d3ddfb2d1fcc75a7ea591e91a8b',1,'mysqlpp::tiny_int::operator=()'],['../classmysqlpp_1_1mysql__type__info.html#acad519adee26270008af428388239863',1,'mysqlpp::mysql_type_info::operator=(const mysql_type_info &t)'],['../classmysqlpp_1_1mysql__type__info.html#a3e3c72bb667e7a0d73f9ebfe6aa5e8c5',1,'mysqlpp::mysql_type_info::operator=(const std::type_info &t)'],['../classmysqlpp_1_1Connection.html#aaf58375723c00a4ac494c83ab384596e',1,'mysqlpp::Connection::operator=()'],['../classmysqlpp_1_1Exception.html#a2103d37da48b9824fa4407863aef9e0e',1,'mysqlpp::Exception::operator=()'],['../classmysqlpp_1_1FieldNames.html#a5d8a3d1721f5cdec568a88176820eaf1',1,'mysqlpp::FieldNames::operator=(const ResultBase *res)'],['../classmysqlpp_1_1FieldNames.html#a71d157dd44ea72f4d85be8ae590f7e18',1,'mysqlpp::FieldNames::operator=(int i)'],['../classmysqlpp_1_1FieldTypes.html#a42f144b9057b8da595ed3d4ce6367065',1,'mysqlpp::FieldTypes::operator=(const ResultBase *res)'],['../classmysqlpp_1_1FieldTypes.html#a868d074de1ddd8d41a49bebf62eec6c6',1,'mysqlpp::FieldTypes::operator=(int i)'],['../classmysqlpp_1_1String.html#a6f31d730d66f311a4045bf62b170869d',1,'mysqlpp::String::operator=(const std::string &rhs)'],['../classmysqlpp_1_1String.html#a7bc9c3f4dd56805e844aba503b175bcd',1,'mysqlpp::String::operator=(const char *str)']]], ['operator_3d_3d_836',['operator==',['../classmysqlpp_1_1Null.html#accd1446f726c245aa894e21a527612d8',1,'mysqlpp::Null::operator==()'],['../type__info_8h.html#ac8fc6cbf67f8ece2794edc86f36f1d8a',1,'mysqlpp::operator==(const std::type_info &a, const mysql_type_info &b)'],['../type__info_8h.html#ac6ad1f599784d7ab05293f4b7aa9e8ef',1,'mysqlpp::operator==(const mysql_type_info &a, const mysql_type_info &b)'],['../classmysqlpp_1_1tiny__int.html#a982d4075d43545cc60fbf1af287d634e',1,'mysqlpp::tiny_int::operator==()'],['../classmysqlpp_1_1Null.html#a86e89a86b33184fe32d3f72e5b504fe3',1,'mysqlpp::Null::operator==()'],['../classmysqlpp_1_1String.html#a5e6cd3a1ea6c7ad6cea716a8eaea9227',1,'mysqlpp::String::operator==(const mysqlpp::null_type &) const'],['../classmysqlpp_1_1String.html#a96c7fd85e0391a2e3a2864d27ed86929',1,'mysqlpp::String::operator==(const T &rhs) const'],['../classmysqlpp_1_1Comparable.html#a1027c7512c91124faf9bc5458a7d8aba',1,'mysqlpp::Comparable::operator==()'],['../type__info_8h.html#aa8e49fa4b497a88c2996187ac2f34f7c',1,'mysqlpp::operator==()']]], ['operator_3e_837',['operator>',['../classmysqlpp_1_1tiny__int.html#a0c478e4305b8d1c0cad2271f6732c6d1',1,'mysqlpp::tiny_int::operator>()'],['../classmysqlpp_1_1Comparable.html#a3e33afd04393aad053ac80e14f33d434',1,'mysqlpp::Comparable::operator>()']]], ['operator_3e_3d_838',['operator>=',['../classmysqlpp_1_1tiny__int.html#a07ac3989d6587b9bf5b9c524700211ee',1,'mysqlpp::tiny_int::operator>=()'],['../classmysqlpp_1_1Comparable.html#affce4fc1ccb1c8b0038cd1f21431100d',1,'mysqlpp::Comparable::operator>=()']]], ['operator_3e_3e_839',['operator>>',['../classmysqlpp_1_1tiny__int.html#ab37745df0f2b2b08f84a656879719e65',1,'mysqlpp::tiny_int']]], ['operator_3e_3e_3d_840',['operator>>=',['../classmysqlpp_1_1tiny__int.html#a110f9067985f3fb752b7f789e51dd807',1,'mysqlpp::tiny_int']]], ['operator_5b_5d_841',['operator[]',['../classmysqlpp_1_1Row.html#a295e7403ffc80c0cefc16899ecd0f6f8',1,'mysqlpp::Row::operator[](const char *field) const'],['../classmysqlpp_1_1Row.html#af4118483226f8c8c7c6654c7ace7c100',1,'mysqlpp::Row::operator[](int i) const'],['../classmysqlpp_1_1SQLQueryParms.html#a9e182572b2832ea47a6b2ea7c8ef25b9',1,'mysqlpp::SQLQueryParms::operator[](const char *str)'],['../classmysqlpp_1_1SQLQueryParms.html#ae04231f2277200c79f292345074b6185',1,'mysqlpp::SQLQueryParms::operator[](size_type n) const'],['../classmysqlpp_1_1SQLQueryParms.html#ae062e7125fd3af499cb6a50d9e9ed078',1,'mysqlpp::SQLQueryParms::operator[](size_type n)'],['../classmysqlpp_1_1String.html#aacf7372054b76c22e33bbdf44b390359',1,'mysqlpp::String::operator[]()'],['../classmysqlpp_1_1FieldNames.html#a8fa3eb420608ac5a32099d2da68992c1',1,'mysqlpp::FieldNames::operator[](const std::string &s) const'],['../classmysqlpp_1_1FieldNames.html#acaababa1d2d9e3464183cd07e90401ee',1,'mysqlpp::FieldNames::operator[](size_type i) const'],['../classmysqlpp_1_1FieldNames.html#ad357ab3a247c0762bc2da3336b56ffc1',1,'mysqlpp::FieldNames::operator[](size_type i)'],['../classmysqlpp_1_1FieldNames.html#abfc85bbc52fa4199c1a04d87886ed844',1,'mysqlpp::FieldNames::operator[](int i) const'],['../classmysqlpp_1_1FieldNames.html#afc48d06fa18e5289fad80207e95d85eb',1,'mysqlpp::FieldNames::operator[](int i)'],['../classmysqlpp_1_1SQLQueryParms.html#a2bb26b0019d2d15cfb315ffb559fed19',1,'mysqlpp::SQLQueryParms::operator[]()']]], ['operator_5e_842',['operator^',['../classmysqlpp_1_1tiny__int.html#ae4e89235b5788e2ce4cdca99b571d057',1,'mysqlpp::tiny_int']]], ['operator_5e_3d_843',['operator^=',['../classmysqlpp_1_1tiny__int.html#affffdfea42926ff6dca2e7d55ec5d991',1,'mysqlpp::tiny_int']]], ['operator_7c_844',['operator|',['../classmysqlpp_1_1tiny__int.html#a5ee6dd4ef8585f91235f2aaa5e2a34ce',1,'mysqlpp::tiny_int']]], ['operator_7c_3d_845',['operator|=',['../classmysqlpp_1_1tiny__int.html#a879dc1f591dee511e6f5e4e551c92745',1,'mysqlpp::tiny_int']]], ['option_5fargument_846',['option_argument',['../classmysqlpp_1_1CommandLineBase.html#ac7b0b1da54f84d332378a68f017d8cf1',1,'mysqlpp::CommandLineBase']]], ['option_5findex_847',['option_index',['../classmysqlpp_1_1CommandLineBase.html#a0f361569f3197bea6a6c203dde6e151d',1,'mysqlpp::CommandLineBase']]], ['optionalexceptions_848',['OptionalExceptions',['../classmysqlpp_1_1OptionalExceptions.html#a45a3e93f56716abf10704419b5ba4f31',1,'mysqlpp::OptionalExceptions']]], ['output_849',['output',['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#a5c828553af28d24f9194fbbc82745c73',1,'mysqlpp::ssqlsxlat::CommandLine']]], ['output_5fsink_850',['output_sink',['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#a4540ba9363eaf6d05bbd3959acc32b65',1,'mysqlpp::ssqlsxlat::CommandLine']]], ['string_851',['string',['../classmysqlpp_1_1Time.html#a769ba6be3b158930fd72a28d9d97c9e7',1,'mysqlpp::Time::string()'],['../classmysqlpp_1_1Date.html#ae24e56018ade8682ed796d0af85b7a28',1,'mysqlpp::Date::string()'],['../classmysqlpp_1_1DateTime.html#af8aac90946fbc0c3e936604c03da3de5',1,'mysqlpp::DateTime::string()'],['../classmysqlpp_1_1Set.html#aa30a5151d8419fc8485d373f64cb0b5d',1,'mysqlpp::Set::string()']]] ]; mysql++-3.3.0/doc/html/refman/search/all_17.html000644 000765 000024 00000002646 14042362132 022013 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/all_a.js000644 000765 000024 00000003440 14042362132 021445 0ustar00tangentstaff000000 000000 var searchData= [ ['length_173',['length',['../classmysqlpp_1_1Field.html#a307ff524ddb269d093f1d1072432e5cd',1,'mysqlpp::Field::length()'],['../classmysqlpp_1_1String.html#a66c9621a34af636ec44c7005aacaeee3',1,'mysqlpp::String::length()'],['../classmysqlpp_1_1SQLBuffer.html#a559e04e15eb087d2519dc3316584bae7',1,'mysqlpp::SQLBuffer::length()'],['../classmysqlpp_1_1SQLTypeAdapter.html#a74e7ef6bf6cdba4e0e6448d735d5cde0',1,'mysqlpp::SQLTypeAdapter::length()']]], ['list_174',['list',['../structmysqlpp_1_1value__list__ba.html#abab3903454b75548f120269967696c26',1,'mysqlpp::value_list_ba::list()'],['../structmysqlpp_1_1value__list__b.html#a2b804fe2d3c181d8ec2a2db4737fe2de',1,'mysqlpp::value_list_b::list()']]], ['list1_175',['list1',['../structmysqlpp_1_1equal__list__ba.html#af0307d8b613d4ea52c0d9eb19b462e12',1,'mysqlpp::equal_list_ba::list1()'],['../structmysqlpp_1_1equal__list__b.html#a7b24538643ef04ca3969f4597a2e9337',1,'mysqlpp::equal_list_b::list1()']]], ['list2_176',['list2',['../structmysqlpp_1_1equal__list__ba.html#a50b12dedeeba529383fd2ac61a566599',1,'mysqlpp::equal_list_ba::list2()'],['../structmysqlpp_1_1equal__list__b.html#ace8b74187f066eba8ad90b46be681f6b',1,'mysqlpp::equal_list_b::list2()']]], ['list_5ftype_177',['list_type',['../classmysqlpp_1_1StoreQueryResult.html#ac5a4eb33883201e9e8d21d41fecd80d0',1,'mysqlpp::StoreQueryResult::list_type()'],['../classmysqlpp_1_1Row.html#a0b6d7fcda0e98859957a47eb1aef2208',1,'mysqlpp::Row::list_type()']]], ['localfilesoption_178',['LocalFilesOption',['../classmysqlpp_1_1LocalFilesOption.html',1,'mysqlpp']]], ['localinfileoption_179',['LocalInfileOption',['../classmysqlpp_1_1LocalInfileOption.html',1,'mysqlpp']]], ['lock_180',['lock',['../classmysqlpp_1_1BeecryptMutex.html#adb5f8dc007416c376826ac9461b82e87',1,'mysqlpp::BeecryptMutex']]] ]; mysql++-3.3.0/doc/html/refman/search/search_r.png000644 000765 000024 00000001051 14042362132 022327 0ustar00tangentstaff000000 000000 ‰PNG  IHDR7›•ygAMA± üa cHRMm˜sŽà8‚ÕzÊ´3Dv„6*½bKGDÿ‡Ì¿ pHYs  šœtIMEâ  OíWßIDAT(Ï…’AKQFI+ ª]‹–ýƒ–ý‚ý–A‹‚¶F»H* )¤…¡Í$¨E¨P»À„©6T ˜ ‚Žóæ£à„ãܳ=÷r¹÷›øÙèn±øÑª>ÿAxˆGüT¸%+ÍXùp§8;~ñóƒÉ'%u"÷óú !~\l:4¨‘‘ñt>ŠŒ)…¢O›7.œÄ^)2VòD‡6Ï$ZÚR Š> nܳ­ (:TUò\8’͇J%'N‡&éÝIÒär=tÒ—Ì®„,nóbfæB$‹Ê©6r§÷fn9à-Ë׻wÚ4Bx6êßïz|Ëûkmq$îH zXÔÝj«ÒyzÅÁe«X¸ZËE‡Éü°cû‘sÑÂ%tEXtdate:create2018-12-07T11:28:17+00:00-?CÛ%tEXtdate:modify2018-12-07T11:28:17+00:00\bûgIEND®B`‚mysql++-3.3.0/doc/html/refman/search/functions_7.js000644 000765 000024 00000000733 14042362132 022635 0ustar00tangentstaff000000 000000 var searchData= [ ['hour_750',['hour',['../classmysqlpp_1_1DateTime.html#aa6d6bfc01854db049ae8e8a72458522e',1,'mysqlpp::DateTime::hour() const'],['../classmysqlpp_1_1DateTime.html#af7105e63694a4c5fea2e6d7caeb94437',1,'mysqlpp::DateTime::hour(unsigned char h)'],['../classmysqlpp_1_1Time.html#a0c034640c2ab604be113d2bff99bbc55',1,'mysqlpp::Time::hour() const'],['../classmysqlpp_1_1Time.html#aa84fbbeca4515a70beb227937fb0aa82',1,'mysqlpp::Time::hour(unsigned char h)']]] ]; mysql++-3.3.0/doc/html/refman/search/typedefs_9.js000644 000765 000024 00000001320 14042362132 022443 0ustar00tangentstaff000000 000000 var searchData= [ ['size_5ftype_1035',['size_type',['../classmysqlpp_1_1String.html#af5b6729bef9c0a50914a142c361c44b7',1,'mysqlpp::String::size_type()'],['../classmysqlpp_1_1Row.html#a159ba856d15593741d544af536cddccd',1,'mysqlpp::Row::size_type()'],['../classmysqlpp_1_1SQLBuffer.html#a5e789c1879057f4106ee1de6614380a5',1,'mysqlpp::SQLBuffer::size_type()'],['../classmysqlpp_1_1SQLTypeAdapter.html#af79be3979de6990414263493b6da8f4e',1,'mysqlpp::SQLTypeAdapter::size_type()']]], ['sta_1036',['sta',['../classmysqlpp_1_1SQLQueryParms.html#ac637090d1e8981437fcc3277a9983099',1,'mysqlpp::SQLQueryParms']]], ['stringoption_1037',['StringOption',['../options_8h.html#a307e959b80e992078a2e61c8730a27f8',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/variables_3.js000644 000765 000024 00000001740 14042362132 022570 0ustar00tangentstaff000000 000000 var searchData= [ ['data_994',['data',['../classmysqlpp_1_1BadConversion.html#a1f96a9d36f6f4904496cc9ecab8dfdfb',1,'mysqlpp::BadConversion::data()'],['../classmysqlpp_1_1Null.html#a11c562b34e0f4f39f34cd36ace40c33e',1,'mysqlpp::Null::data()']]], ['db_5fname_995',['db_name',['../namespacemysqlpp_1_1examples.html#ab28e135f83d959f8e683a9704a88e225',1,'mysqlpp::examples']]], ['delim_996',['delim',['../structmysqlpp_1_1equal__list__ba.html#a11cce071cfe6c26585602970e0eab481',1,'mysqlpp::equal_list_ba::delim()'],['../structmysqlpp_1_1equal__list__b.html#acc88d6a3d51f9e985641f3931a026c59',1,'mysqlpp::equal_list_b::delim()'],['../structmysqlpp_1_1value__list__ba.html#a6b0f93524912bc3a861b5764883287b7',1,'mysqlpp::value_list_ba::delim()'],['../structmysqlpp_1_1value__list__b.html#acad7cd0a818d772b907502956da4dd9a',1,'mysqlpp::value_list_b::delim()']]], ['driver_5f_997',['driver_',['../classmysqlpp_1_1ResultBase.html#ac0265838557fd0f63b7abae4927a835f',1,'mysqlpp::ResultBase']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_a.html000644 000765 000024 00000002653 14042362132 023242 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/all_8.html000644 000765 000024 00000002645 14042362132 021732 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_1.html000644 000765 000024 00000002647 14042362132 022257 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/classes_11.js000644 000765 000024 00000000341 14042362132 022330 0ustar00tangentstaff000000 000000 var searchData= [ ['value_5flist_5fb_608',['value_list_b',['../structmysqlpp_1_1value__list__b.html',1,'mysqlpp']]], ['value_5flist_5fba_609',['value_list_ba',['../structmysqlpp_1_1value__list__ba.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/all_c.html000644 000765 000024 00000002645 14042362132 022005 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/functions_15.js000644 000765 000024 00000001633 14042362132 022714 0ustar00tangentstaff000000 000000 var searchData= [ ['what_955',['what',['../classmysqlpp_1_1Exception.html#af59280d82dba0627192a26cdcf53ba96',1,'mysqlpp::Exception']]], ['what_5foption_956',['what_option',['../classmysqlpp_1_1BadOption.html#a7a1be48b23c7148e553110985ec680ff',1,'mysqlpp::BadOption']]], ['windowsnamedpipeconnection_957',['WindowsNamedPipeConnection',['../classmysqlpp_1_1WindowsNamedPipeConnection.html#a8f144565e1f5c82783b923529c791944',1,'mysqlpp::WindowsNamedPipeConnection::WindowsNamedPipeConnection()'],['../classmysqlpp_1_1WindowsNamedPipeConnection.html#aaa7a945b918efe54b095d52a472153fc',1,'mysqlpp::WindowsNamedPipeConnection::WindowsNamedPipeConnection(const char *db, const char *user=0, const char *password=0)'],['../classmysqlpp_1_1WindowsNamedPipeConnection.html#ac9fe1d6a34624327ed811ad9a4e960e6',1,'mysqlpp::WindowsNamedPipeConnection::WindowsNamedPipeConnection(const WindowsNamedPipeConnection &other)']]] ]; mysql++-3.3.0/doc/html/refman/search/enumvalues_2.html000644 000765 000024 00000002654 14042362132 023340 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/all_2.js000644 000765 000024 00000021707 14042362132 021374 0ustar00tangentstaff000000 000000 var searchData= [ ['c_5fstr_29',['c_str',['../classmysqlpp_1_1String.html#a9c26df79f745061a53ed5da9ac409b49',1,'mysqlpp::String']]], ['c_5ftype_30',['c_type',['../classmysqlpp_1_1mysql__type__info.html#a4ac25a093e1bdbf302ba5caa8d4816be',1,'mysqlpp::mysql_type_info']]], ['clear_31',['clear',['../classmysqlpp_1_1ConnectionPool.html#a981e1b1715de2daea9f6b10bdcbb5915',1,'mysqlpp::ConnectionPool::clear()'],['../classmysqlpp_1_1SQLQueryParms.html#a15b3fb93546e32b4cbd8015db34ec1e5',1,'mysqlpp::SQLQueryParms::clear()']]], ['client_5fversion_32',['client_version',['../classmysqlpp_1_1DBDriver.html#ae25d81f232a155e24a724f741593d81f',1,'mysqlpp::DBDriver::client_version()'],['../classmysqlpp_1_1Connection.html#a8923972d5b75e0cd194b556ca3c11dd9',1,'mysqlpp::Connection::client_version()']]], ['commandline_33',['CommandLine',['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#a055b4f3a100607034f43159bc96d394d',1,'mysqlpp::ssqlsxlat::CommandLine::CommandLine()'],['../classmysqlpp_1_1examples_1_1CommandLine.html#a94a1168f204e8a945743b533393d0edf',1,'mysqlpp::examples::CommandLine::CommandLine()'],['../classmysqlpp_1_1examples_1_1CommandLine.html',1,'mysqlpp::examples::CommandLine'],['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html',1,'mysqlpp::ssqlsxlat::CommandLine']]], ['commandlinebase_34',['CommandLineBase',['../classmysqlpp_1_1CommandLineBase.html#a36aff0ceccfb08be9b04717dc48ac706',1,'mysqlpp::CommandLineBase::CommandLineBase()'],['../classmysqlpp_1_1CommandLineBase.html',1,'mysqlpp::CommandLineBase']]], ['commit_35',['commit',['../classmysqlpp_1_1NoTransaction.html#a6cf5b1a6d4b6baaf60077ef3afafa853',1,'mysqlpp::NoTransaction::commit()'],['../classmysqlpp_1_1Transaction.html#a109bd0f1d70b6ff69cf3abccf7eea8f8',1,'mysqlpp::Transaction::commit()']]], ['common_2eh_36',['common.h',['../common_8h.html',1,'']]], ['comparable_37',['Comparable',['../classmysqlpp_1_1Comparable.html',1,'mysqlpp']]], ['comparable_2eh_38',['comparable.h',['../comparable_8h.html',1,'']]], ['comparable_3c_20date_20_3e_39',['Comparable< Date >',['../classmysqlpp_1_1Comparable.html',1,'mysqlpp']]], ['comparable_3c_20datetime_20_3e_40',['Comparable< DateTime >',['../classmysqlpp_1_1Comparable.html',1,'mysqlpp']]], ['comparable_3c_20time_20_3e_41',['Comparable< Time >',['../classmysqlpp_1_1Comparable.html',1,'mysqlpp']]], ['compare_42',['compare',['../classmysqlpp_1_1SQLTypeAdapter.html#a51d2fc9b8b5d8fb613dcf0f0a5b9e8d3',1,'mysqlpp::SQLTypeAdapter::compare()'],['../classmysqlpp_1_1Comparable.html#a189507426ed585f7da84f63dc426c651',1,'mysqlpp::Comparable::compare()'],['../classmysqlpp_1_1DateTime.html#aeb193c449b06d0c39085434576004085',1,'mysqlpp::DateTime::compare()'],['../classmysqlpp_1_1Date.html#aa710b0fec0151ed558906edfa1ce6e63',1,'mysqlpp::Date::compare()'],['../classmysqlpp_1_1Time.html#aded59e5685516ae30a7fbb16a1b670b2',1,'mysqlpp::Time::compare()'],['../classmysqlpp_1_1String.html#ac2143864e43d0feb640f685f91c5f477',1,'mysqlpp::String::compare(const String &other) const'],['../classmysqlpp_1_1String.html#ada0d25c1fd031ad73395e3449896cd40',1,'mysqlpp::String::compare(const std::string &other) const'],['../classmysqlpp_1_1String.html#ad77fd562c855993913006b902b76432d',1,'mysqlpp::String::compare(size_type pos, size_type num, std::string &other) const'],['../classmysqlpp_1_1String.html#acbcb9d297781a104d74b39475cdce1a9',1,'mysqlpp::String::compare(const char *other) const'],['../classmysqlpp_1_1String.html#aaae99b094abc7832f106e6ce121e4595',1,'mysqlpp::String::compare(size_type pos, size_type num, const char *other) const'],['../classmysqlpp_1_1SQLTypeAdapter.html#ad45e34461e2cbb891fb3bf927354aa0a',1,'mysqlpp::SQLTypeAdapter::compare(const std::string &other) const'],['../classmysqlpp_1_1SQLTypeAdapter.html#ac1565d6f154f1db5ea66a57b6128dbf5',1,'mysqlpp::SQLTypeAdapter::compare(size_type pos, size_type num, std::string &other) const'],['../classmysqlpp_1_1SQLTypeAdapter.html#a08161483af60f8d40708e07a0b56c156',1,'mysqlpp::SQLTypeAdapter::compare(const char *other) const'],['../classmysqlpp_1_1SQLTypeAdapter.html#a5632bb0e3f7e8ab9e32cb7f5ab7eaef4',1,'mysqlpp::SQLTypeAdapter::compare(size_type pos, size_type num, const char *other) const']]], ['compressoption_43',['CompressOption',['../classmysqlpp_1_1CompressOption.html',1,'mysqlpp']]], ['conn_5f_44',['conn_',['../classmysqlpp_1_1SQLStream.html#a58377cc5c3925dd87be081d47e021d79',1,'mysqlpp::SQLStream']]], ['connect_45',['connect',['../classmysqlpp_1_1WindowsNamedPipeConnection.html#a7cf8d2f55b38508d5a16120bf21e7a3c',1,'mysqlpp::WindowsNamedPipeConnection::connect()'],['../classmysqlpp_1_1Connection.html#aa8e2b54058f7ff7c480e34129a8ee212',1,'mysqlpp::Connection::connect()'],['../classmysqlpp_1_1DBDriver.html#adbd9ba43e74fca9c46dbe85ea8657c0f',1,'mysqlpp::DBDriver::connect(const MYSQL &mysql)'],['../classmysqlpp_1_1DBDriver.html#a0ccac7c3ea27374601af7ce537d1f36f',1,'mysqlpp::DBDriver::connect(const char *host, const char *socket_name, unsigned int port, const char *db, const char *user, const char *password)'],['../classmysqlpp_1_1TCPConnection.html#ad111bd8e49a43b3ab4972d67459efaa5',1,'mysqlpp::TCPConnection::connect()'],['../classmysqlpp_1_1UnixDomainSocketConnection.html#ac7c12c846db3d1f15c2b7a45b9f17612',1,'mysqlpp::UnixDomainSocketConnection::connect()']]], ['connect_5fprepare_46',['connect_prepare',['../classmysqlpp_1_1DBDriver.html#a527ffc220d550bbf59a1496e7dcb745c',1,'mysqlpp::DBDriver']]], ['connected_47',['connected',['../classmysqlpp_1_1DBDriver.html#a78a43a4917343e9bc4b9ce535aea1f0b',1,'mysqlpp::DBDriver::connected()'],['../classmysqlpp_1_1Connection.html#ac9e310f5c544a7aec143c02f4618ff69',1,'mysqlpp::Connection::connected() const']]], ['connection_48',['Connection',['../classmysqlpp_1_1Connection.html#a23e80d1b3fee58e8771b2a6dd3c9ac3f',1,'mysqlpp::Connection::Connection(const Connection &other)'],['../classmysqlpp_1_1Connection.html#a382ec4947dbb1998833ad0fc6f93d1c9',1,'mysqlpp::Connection::Connection(const char *db, const char *server=0, const char *user=0, const char *password=0, unsigned int port=0)'],['../classmysqlpp_1_1Connection.html#a0053ef79210079a5579e55a12fe5f10a',1,'mysqlpp::Connection::Connection(bool te=true)'],['../classmysqlpp_1_1Connection.html',1,'mysqlpp::Connection']]], ['connection_2eh_49',['connection.h',['../connection_8h.html',1,'']]], ['connectionfailed_50',['ConnectionFailed',['../classmysqlpp_1_1ConnectionFailed.html#abede9f71e0283af57a7101c0137eaaab',1,'mysqlpp::ConnectionFailed::ConnectionFailed()'],['../classmysqlpp_1_1ConnectionFailed.html',1,'mysqlpp::ConnectionFailed']]], ['connectionpool_51',['ConnectionPool',['../classmysqlpp_1_1ConnectionPool.html#acc1262db33d586284651825ff076a8d7',1,'mysqlpp::ConnectionPool::ConnectionPool()'],['../classmysqlpp_1_1ConnectionPool.html',1,'mysqlpp::ConnectionPool']]], ['connecttimeoutoption_52',['ConnectTimeoutOption',['../classmysqlpp_1_1ConnectTimeoutOption.html',1,'mysqlpp']]], ['const_5fiterator_53',['const_iterator',['../classmysqlpp_1_1String.html#a9c18cd6c1fb2d3130e80b10ff00550e5',1,'mysqlpp::String::const_iterator()'],['../classmysqlpp_1_1Row.html#a9250253f37f5bf2f07c203e07210f0ee',1,'mysqlpp::Row::const_iterator()']]], ['const_5freference_54',['const_reference',['../classmysqlpp_1_1Row.html#a6d690acbc14d8f8f19850cd808beaa58',1,'mysqlpp::Row']]], ['const_5freverse_5fiterator_55',['const_reverse_iterator',['../classmysqlpp_1_1Row.html#a1007cbff287988c53096f3502bbd3d8d',1,'mysqlpp::Row']]], ['conv_56',['conv',['../classmysqlpp_1_1String.html#aa1e504e60b47e57be9908c1f533f99d0',1,'mysqlpp::String::conv(Type) const'],['../classmysqlpp_1_1String.html#a9e78b4e07b6371999898b432b3035cfa',1,'mysqlpp::String::conv(Null< T, B >) const']]], ['convert_57',['convert',['../classmysqlpp_1_1DateTime.html#a3c7919437f4a7b8a6c15c4a9e7aa6f93',1,'mysqlpp::DateTime::convert()'],['../classmysqlpp_1_1Date.html#ac5a073e35be0c0fd95ef63b930df8ade',1,'mysqlpp::Date::convert()'],['../classmysqlpp_1_1Time.html#a799341cb9540bca202d6170ad5ffbb22',1,'mysqlpp::Time::convert()']]], ['copy_58',['copy',['../classmysqlpp_1_1Connection.html#a44070d9f1bee49126320ad815a854ed3',1,'mysqlpp::Connection::copy()'],['../classmysqlpp_1_1DBDriver.html#a3eb75725a72627f5a51667323c555ff5',1,'mysqlpp::DBDriver::copy()'],['../classmysqlpp_1_1ResultBase.html#a3649538671f94a215c72ad03ff9025aa',1,'mysqlpp::ResultBase::copy()']]], ['count_5frows_59',['count_rows',['../classmysqlpp_1_1Connection.html#a71356d1ca53c988bf9f1e1946e4a7f48',1,'mysqlpp::Connection']]], ['cpool_2eh_60',['cpool.h',['../cpool_8h.html',1,'']]], ['create_61',['create',['../classmysqlpp_1_1ConnectionPool.html#af755c7e11b92bbab0e88ab3e9c88f0fd',1,'mysqlpp::ConnectionPool']]], ['create_5fdb_62',['create_db',['../classmysqlpp_1_1Connection.html#ac9852fb87572c6f10c6de051bacf6b8d',1,'mysqlpp::Connection::create_db()'],['../classmysqlpp_1_1DBDriver.html#a90b2741227a1f1a4c5e8f5bd79ba7315',1,'mysqlpp::DBDriver::create_db()']]], ['current_5ffield_5f_63',['current_field_',['../classmysqlpp_1_1ResultBase.html#a4e3b9892adbd9ad6d86c80e17af9bc5a',1,'mysqlpp::ResultBase']]] ]; mysql++-3.3.0/doc/html/refman/search/classes_f.html000644 000765 000024 00000002651 14042362132 022672 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/typedefs_0.html000644 000765 000024 00000002652 14042362132 022773 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/variables_4.html000644 000765 000024 00000002653 14042362132 023125 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/variables_d.js000644 000765 000024 00000000657 14042362132 022657 0ustar00tangentstaff000000 000000 var searchData= [ ['template_5fdefaults_1014',['template_defaults',['../classmysqlpp_1_1Query.html#a622a5b10c49ab798f7f5481ff38a55d1',1,'mysqlpp::Query']]], ['type_5fname_1015',['type_name',['../classmysqlpp_1_1BadConversion.html#acd61f67d6bbc2348ce8e3de376a05ef3',1,'mysqlpp::BadConversion']]], ['types_5f_1016',['types_',['../classmysqlpp_1_1ResultBase.html#a60823bb0a547046e1efc68083802194c',1,'mysqlpp::ResultBase']]] ]; mysql++-3.3.0/doc/html/refman/search/enums_2.html000644 000765 000024 00000002647 14042362132 022305 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_10.js000644 000765 000024 00000000155 14042362132 021777 0ustar00tangentstaff000000 000000 var searchData= [ ['wnp_5fconnection_2eh_653',['wnp_connection.h',['../wnp__connection_8h.html',1,'']]] ]; mysql++-3.3.0/doc/html/refman/search/all_e.js000644 000765 000024 00000004543 14042362132 021456 0ustar00tangentstaff000000 000000 var searchData= [ ['parse_301',['parse',['../classmysqlpp_1_1Query.html#a5bfc86346581917cb833ed55ccd4d5b8',1,'mysqlpp::Query']]], ['parse_5faddress_302',['parse_address',['../classmysqlpp_1_1TCPConnection.html#a5726d3cf9dbd843686dcee1fe0899595',1,'mysqlpp::TCPConnection']]], ['parse_5ferror_303',['parse_error',['../classmysqlpp_1_1CommandLineBase.html#a59476f73810f50528f0c6cc681ab998c',1,'mysqlpp::CommandLineBase']]], ['parse_5fipc_5fmethod_304',['parse_ipc_method',['../classmysqlpp_1_1Connection.html#ad9724a5edab5db2c7a71fdccfe124cb5',1,'mysqlpp::Connection']]], ['parse_5fnext_305',['parse_next',['../classmysqlpp_1_1CommandLineBase.html#af8c430749d38637982a596e0e8efb670',1,'mysqlpp::CommandLineBase']]], ['pass_306',['pass',['../classmysqlpp_1_1examples_1_1CommandLine.html#ab3b029171c383d60eeeff0110aef20ab',1,'mysqlpp::examples::CommandLine::pass()'],['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#a2caf4aaabc2974e4356562fa0a13864c',1,'mysqlpp::ssqlsxlat::CommandLine::pass()']]], ['ping_307',['ping',['../classmysqlpp_1_1Connection.html#ac1dbc411f7ab1debbabe241561fe4091',1,'mysqlpp::Connection::ping()'],['../classmysqlpp_1_1DBDriver.html#afb313dbd435e6cef84e00e5e803e458d',1,'mysqlpp::DBDriver::ping()']]], ['primary_5fkey_308',['primary_key',['../classmysqlpp_1_1Field.html#a27be919503aa4110a03e5dade6f574dc',1,'mysqlpp::Field']]], ['print_5fusage_309',['print_usage',['../classmysqlpp_1_1CommandLineBase.html#a5d620f5e364c55c813254aad693b08ec',1,'mysqlpp::CommandLineBase::print_usage()'],['../classmysqlpp_1_1examples_1_1CommandLine.html#a50cb9ca32084ad1d3877f27811977b13',1,'mysqlpp::examples::CommandLine::print_usage() const'],['../classmysqlpp_1_1examples_1_1CommandLine.html#a324c89f3b9bc149636d0e64f84322fa3',1,'mysqlpp::examples::CommandLine::print_usage(const char *extra) const'],['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#a9f55ef46605f00fe670ef77595b91c17',1,'mysqlpp::ssqlsxlat::CommandLine::print_usage()']]], ['program_5fname_310',['program_name',['../classmysqlpp_1_1CommandLineBase.html#ae938c52719facf6b323d769178726d56',1,'mysqlpp::CommandLineBase']]], ['protocol_5fversion_311',['protocol_version',['../classmysqlpp_1_1Connection.html#a4f5e8249ddaeeaeb94e01ae71f4181f0',1,'mysqlpp::Connection::protocol_version()'],['../classmysqlpp_1_1DBDriver.html#a7346a9f2e25376cc54e2fee3c8f41834',1,'mysqlpp::DBDriver::protocol_version()']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_6.js000644 000765 000024 00000000434 14042362132 022632 0ustar00tangentstaff000000 000000 var searchData= [ ['get_5foptions_748',['get_options',['../classmysqlpp_1_1DBDriver.html#a172203c0fbb69a6008c1071b3184880a',1,'mysqlpp::DBDriver']]], ['grab_749',['grab',['../classmysqlpp_1_1ConnectionPool.html#acbf56ee86ef66b3ebdf02adde5908776',1,'mysqlpp::ConnectionPool']]] ]; mysql++-3.3.0/doc/html/refman/search/typedefs_8.js000644 000765 000024 00000000615 14042362132 022450 0ustar00tangentstaff000000 000000 var searchData= [ ['refcountedbuffer_1032',['RefCountedBuffer',['../sql__buffer_8h.html#ad2f8b25a76e80dbdd6b76a2e4d068bbe',1,'mysqlpp']]], ['reference_1033',['reference',['../classmysqlpp_1_1Row.html#af84401d71970c5d15b4d078e01189278',1,'mysqlpp::Row']]], ['reverse_5fiterator_1034',['reverse_iterator',['../classmysqlpp_1_1Row.html#a0982d2e6bff5d029570d5ef5e1830fd3',1,'mysqlpp::Row']]] ]; mysql++-3.3.0/doc/html/refman/search/all_18.js000644 000765 000024 00000010312 14042362132 021451 0ustar00tangentstaff000000 000000 var searchData= [ ['_7eautoflag_481',['~AutoFlag',['../classmysqlpp_1_1AutoFlag.html#af2d90a6ae3a33bbbf7fa707337010e50',1,'mysqlpp::AutoFlag']]], ['_7ebadconversion_482',['~BadConversion',['../classmysqlpp_1_1BadConversion.html#a37b983a1f5442c96e6e325970cf1bdde',1,'mysqlpp::BadConversion']]], ['_7ebadfieldname_483',['~BadFieldName',['../classmysqlpp_1_1BadFieldName.html#a41a7d1554fb2daddcaccb331f9361e9b',1,'mysqlpp::BadFieldName']]], ['_7ebadindex_484',['~BadIndex',['../classmysqlpp_1_1BadIndex.html#ac50efa62247aa2010a3079d778a67a8e',1,'mysqlpp::BadIndex']]], ['_7ebadparamcount_485',['~BadParamCount',['../classmysqlpp_1_1BadParamCount.html#a34867d29b93976635daac8084869b780',1,'mysqlpp::BadParamCount']]], ['_7ebeecryptmutex_486',['~BeecryptMutex',['../classmysqlpp_1_1BeecryptMutex.html#a8f568cdd9ab9ea3ebebe88db934dd46a',1,'mysqlpp::BeecryptMutex']]], ['_7ecommandlinebase_487',['~CommandLineBase',['../classmysqlpp_1_1CommandLineBase.html#a70bf4aaf7c80497bd36a51d2a31c87cd',1,'mysqlpp::CommandLineBase']]], ['_7ecomparable_488',['~Comparable',['../classmysqlpp_1_1Comparable.html#a04f46aa0ee2ba5e0dcb6e3bd77a22f0f',1,'mysqlpp::Comparable']]], ['_7econnection_489',['~Connection',['../classmysqlpp_1_1Connection.html#a8eda1910b116f1ccdc1a86711ca6f660',1,'mysqlpp::Connection']]], ['_7econnectionpool_490',['~ConnectionPool',['../classmysqlpp_1_1ConnectionPool.html#a2cee954229416e24da07f5e208b35b09',1,'mysqlpp::ConnectionPool']]], ['_7edbdriver_491',['~DBDriver',['../classmysqlpp_1_1DBDriver.html#a0af585eeaa3ab0483449525caa6c2eb3',1,'mysqlpp::DBDriver']]], ['_7eexception_492',['~Exception',['../classmysqlpp_1_1Exception.html#a82b1a9a71b10a4b83cd67905689d700d',1,'mysqlpp::Exception']]], ['_7enoexceptions_493',['~NoExceptions',['../classmysqlpp_1_1NoExceptions.html#aaff5fcc1cd24040c594055773303209f',1,'mysqlpp::NoExceptions']]], ['_7enotransaction_494',['~NoTransaction',['../classmysqlpp_1_1NoTransaction.html#adbfd3f9de75fee1904eb216fb17ea1b2',1,'mysqlpp::NoTransaction']]], ['_7eoption_495',['~Option',['../classmysqlpp_1_1Option.html#acf6f7585df2f41324516e45ad4856899',1,'mysqlpp::Option']]], ['_7eoptionalexceptions_496',['~OptionalExceptions',['../classmysqlpp_1_1OptionalExceptions.html#ae97334b7e5f89c1927c5d277b770db0a',1,'mysqlpp::OptionalExceptions']]], ['_7erefcountedpointer_497',['~RefCountedPointer',['../classmysqlpp_1_1RefCountedPointer.html#a67b7d093310fa6112a45c361c37d5ed3',1,'mysqlpp::RefCountedPointer']]], ['_7eresultbase_498',['~ResultBase',['../classmysqlpp_1_1ResultBase.html#a792b7694b013dee563349544058bec8f',1,'mysqlpp::ResultBase']]], ['_7erow_499',['~Row',['../classmysqlpp_1_1Row.html#a001fb68decc36916134c8eed1ade1686',1,'mysqlpp::Row']]], ['_7escopedconnection_500',['~ScopedConnection',['../classmysqlpp_1_1ScopedConnection.html#ab8b21eb30678cb0530d6dbc1eed38bef',1,'mysqlpp::ScopedConnection']]], ['_7escopedlock_501',['~ScopedLock',['../classmysqlpp_1_1ScopedLock.html#a1f03bd9ff85a61bef0255c6f313f3099',1,'mysqlpp::ScopedLock']]], ['_7esqlbuffer_502',['~SQLBuffer',['../classmysqlpp_1_1SQLBuffer.html#a41e777868636c20ad09093e1ddb9368a',1,'mysqlpp::SQLBuffer']]], ['_7estorequeryresult_503',['~StoreQueryResult',['../classmysqlpp_1_1StoreQueryResult.html#aa4577436a49e8ccae60125daeec43d94',1,'mysqlpp::StoreQueryResult']]], ['_7estring_504',['~String',['../classmysqlpp_1_1String.html#a43e145f153028b0932fe916159f803dc',1,'mysqlpp::String']]], ['_7etcpconnection_505',['~TCPConnection',['../classmysqlpp_1_1TCPConnection.html#acb3ac928977f621b89c14d6690c0d28c',1,'mysqlpp::TCPConnection']]], ['_7etransaction_506',['~Transaction',['../classmysqlpp_1_1Transaction.html#a362b0d2524d0c799165190517192dca9',1,'mysqlpp::Transaction']]], ['_7eunixdomainsocketconnection_507',['~UnixDomainSocketConnection',['../classmysqlpp_1_1UnixDomainSocketConnection.html#a9fe33cf6c50d64c6e4fbbb18f035f809',1,'mysqlpp::UnixDomainSocketConnection']]], ['_7eusequeryresult_508',['~UseQueryResult',['../classmysqlpp_1_1UseQueryResult.html#a3077144651e05dfc524ab373bee13384',1,'mysqlpp::UseQueryResult']]], ['_7ewindowsnamedpipeconnection_509',['~WindowsNamedPipeConnection',['../classmysqlpp_1_1WindowsNamedPipeConnection.html#a9827c3ca18e60f6a8b0f6b333170531f',1,'mysqlpp::WindowsNamedPipeConnection']]] ]; mysql++-3.3.0/doc/html/refman/search/variables_2.js000644 000765 000024 00000000442 14042362132 022565 0ustar00tangentstaff000000 000000 var searchData= [ ['conn_5f_992',['conn_',['../classmysqlpp_1_1SQLStream.html#a58377cc5c3925dd87be081d47e021d79',1,'mysqlpp::SQLStream']]], ['current_5ffield_5f_993',['current_field_',['../classmysqlpp_1_1ResultBase.html#a4e3b9892adbd9ad6d86c80e17af9bc5a',1,'mysqlpp::ResultBase']]] ]; mysql++-3.3.0/doc/html/refman/search/enums_3.html000644 000765 000024 00000002647 14042362132 022306 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/classes_10.js000644 000765 000024 00000001161 14042362132 022330 0ustar00tangentstaff000000 000000 var searchData= [ ['unixdomainsocketconnection_603',['UnixDomainSocketConnection',['../classmysqlpp_1_1UnixDomainSocketConnection.html',1,'mysqlpp']]], ['useembeddedconnectionoption_604',['UseEmbeddedConnectionOption',['../classmysqlpp_1_1UseEmbeddedConnectionOption.html',1,'mysqlpp']]], ['usequeryerror_605',['UseQueryError',['../classmysqlpp_1_1UseQueryError.html',1,'mysqlpp']]], ['usequeryresult_606',['UseQueryResult',['../classmysqlpp_1_1UseQueryResult.html',1,'mysqlpp']]], ['useremoteconnectionoption_607',['UseRemoteConnectionOption',['../classmysqlpp_1_1UseRemoteConnectionOption.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_14.js000644 000765 000024 00000010601 14042362132 022706 0ustar00tangentstaff000000 000000 var searchData= [ ['value_5flist_952',['value_list',['../classmysqlpp_1_1Row.html#a1ab820f79463373cb4124135a79eb4e0',1,'mysqlpp::Row::value_list(const char *d=",", Manip m=quote) const'],['../classmysqlpp_1_1Row.html#a963d9f1de8a28fa84785242749f6bd69',1,'mysqlpp::Row::value_list(const char *d, const std::vector< bool > &vb, Manip m=quote) const'],['../classmysqlpp_1_1Row.html#a6d7aef3cc8cc200cff3ed8f041fbe6ed',1,'mysqlpp::Row::value_list(const std::vector< bool > &vb) const'],['../classmysqlpp_1_1Row.html#a5064c2f54b65873ea1491a67c43fa55b',1,'mysqlpp::Row::value_list(const char *d, Manip m, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) const'],['../classmysqlpp_1_1Row.html#acf3d52d817014e1c396de15d3603be1d',1,'mysqlpp::Row::value_list(const char *d, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) const'],['../classmysqlpp_1_1Row.html#aece089c0dd11a9a54e28506f80c8e08c',1,'mysqlpp::Row::value_list(bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) const'],['../classmysqlpp_1_1Row.html#a74003fa81408165dc8b4061f11186061',1,'mysqlpp::Row::value_list(const char *d, Manip m, std::string s0, std::string s1="", std::string s2="", std::string s3="", std::string s4="", std::string s5="", std::string s6="", std::string s7="", std::string s8="", std::string s9="", std::string sa="", std::string sb="", std::string sc="") const'],['../classmysqlpp_1_1Row.html#abe0cd03e22a93142810ee41743a311b6',1,'mysqlpp::Row::value_list(const char *d, std::string s0, std::string s1="", std::string s2="", std::string s3="", std::string s4="", std::string s5="", std::string s6="", std::string s7="", std::string s8="", std::string s9="", std::string sa="", std::string sb="", std::string sc="") const'],['../classmysqlpp_1_1Row.html#a10ed3ab27d0083ac14c1a9d0b7edb985',1,'mysqlpp::Row::value_list(std::string s0, std::string s1="", std::string s2="", std::string s3="", std::string s4="", std::string s5="", std::string s6="", std::string s7="", std::string s8="", std::string s9="", std::string sa="", std::string sb="", std::string sc="") const'],['../vallist_8h.html#af4a72c65d3b93039ff475fa8ccfdefac',1,'mysqlpp::value_list(const Seq &s, const char *d=",")'],['../vallist_8h.html#aff65f7d8b22e407c0155027fbb667a08',1,'mysqlpp::value_list(const Seq &s, const char *d, Manip m)'],['../vallist_8h.html#a74121e3b9914a429855ad6d0e70c2172',1,'mysqlpp::value_list(const Seq &s, const char *d, Manip m, const std::vector< bool > &vb)'],['../vallist_8h.html#a2813894f74517f80ad2f66ff36be897b',1,'mysqlpp::value_list(const Seq &s, const char *d, Manip m, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)'],['../vallist_8h.html#a4490f602c7b8b06e3fe5f17e43171ded',1,'mysqlpp::value_list(const Seq &s, const char *d, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)'],['../vallist_8h.html#a788f18caa122c7a4e92f8fb795c31bfe',1,'mysqlpp::value_list(const Seq &s, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)']]], ['value_5flist_5fb_953',['value_list_b',['../structmysqlpp_1_1value__list__b.html#ac86a7ace185511342e39b2ef989c92cf',1,'mysqlpp::value_list_b']]], ['value_5flist_5fba_954',['value_list_ba',['../structmysqlpp_1_1value__list__ba.html#a5d589f50b26af0a2ff39c3c3897ebc90',1,'mysqlpp::value_list_ba']]] ]; mysql++-3.3.0/doc/html/refman/search/all_3.js000644 000765 000024 00000014010 14042362132 021362 0ustar00tangentstaff000000 000000 var searchData= [ ['data_64',['data',['../classmysqlpp_1_1BadConversion.html#a1f96a9d36f6f4904496cc9ecab8dfdfb',1,'mysqlpp::BadConversion::data()'],['../classmysqlpp_1_1Null.html#a11c562b34e0f4f39f34cd36ace40c33e',1,'mysqlpp::Null::data()'],['../classmysqlpp_1_1String.html#a778f3f54fd40ec19fc9a800f85f18133',1,'mysqlpp::String::data()'],['../classmysqlpp_1_1SQLBuffer.html#abae32d826be7605448f5480d06974a75',1,'mysqlpp::SQLBuffer::data()'],['../classmysqlpp_1_1SQLTypeAdapter.html#a08e6264e3c9f688540de3bcea275c642',1,'mysqlpp::SQLTypeAdapter::data()']]], ['data_5fseek_65',['data_seek',['../classmysqlpp_1_1DBDriver.html#a73096f9f0d7f4f120cd803f6ebca8a4d',1,'mysqlpp::DBDriver']]], ['dataoption_66',['DataOption',['../classmysqlpp_1_1DataOption.html#a7147eab7b5fbd88b8e4e94958d744f8e',1,'mysqlpp::DataOption::DataOption()'],['../classmysqlpp_1_1DataOption.html',1,'mysqlpp::DataOption< T >']]], ['date_67',['Date',['../classmysqlpp_1_1Date.html#a1f2f8c4e11dabe035bdf997921ab08f2',1,'mysqlpp::Date::Date(time_t t)'],['../classmysqlpp_1_1Date.html#aa2222d9a0058b355a1fc80b5a5076be0',1,'mysqlpp::Date::Date(const Str &str)'],['../classmysqlpp_1_1Date.html#a06385a2d560ddd11412239221ea2d8b1',1,'mysqlpp::Date::Date(const char *str)'],['../classmysqlpp_1_1Date.html#ad242744ac60cee035ab0640208bd416f',1,'mysqlpp::Date::Date(const DateTime &other)'],['../classmysqlpp_1_1Date.html#a30e97344bc6f97f12bbf2e9674faca4d',1,'mysqlpp::Date::Date(const Date &other)'],['../classmysqlpp_1_1Date.html#af7734235d07959eed18b09027ed4930d',1,'mysqlpp::Date::Date()'],['../classmysqlpp_1_1Date.html#a7ef3095d32280a8e91cd85e693ec40db',1,'mysqlpp::Date::Date(unsigned short y, unsigned char m, unsigned char d)'],['../classmysqlpp_1_1Date.html',1,'mysqlpp::Date']]], ['datetime_68',['DateTime',['../classmysqlpp_1_1DateTime.html#ad0893c6349be27651a0711994aa0721d',1,'mysqlpp::DateTime::DateTime(time_t t)'],['../classmysqlpp_1_1DateTime.html#a5adf9a1a66996efd042d4a1e516ec8d4',1,'mysqlpp::DateTime::DateTime()'],['../classmysqlpp_1_1DateTime.html#a409407a25b49c89b0da432ba7df0a548',1,'mysqlpp::DateTime::DateTime(unsigned short y, unsigned char mon, unsigned char d, unsigned char h, unsigned char min, unsigned char s)'],['../classmysqlpp_1_1DateTime.html#a889be0bed1facbc1119d170480987ac4',1,'mysqlpp::DateTime::DateTime(const DateTime &other)'],['../classmysqlpp_1_1DateTime.html#ac34658dea4ae82bd4582b6cbf6ecf6c2',1,'mysqlpp::DateTime::DateTime(const char *str)'],['../classmysqlpp_1_1DateTime.html#accc75ba7e058a1c981f4f09d1ec9993c',1,'mysqlpp::DateTime::DateTime(const Str &str)'],['../classmysqlpp_1_1DateTime.html',1,'mysqlpp::DateTime']]], ['datetime_2eh_69',['datetime.h',['../datetime_8h.html',1,'']]], ['day_70',['day',['../classmysqlpp_1_1DateTime.html#a2db923b56c4d17c917b7a71a7ea0039e',1,'mysqlpp::DateTime::day() const'],['../classmysqlpp_1_1DateTime.html#a98e378690e35ee9e9744b26ebcb1c899',1,'mysqlpp::DateTime::day(unsigned char d)'],['../classmysqlpp_1_1Date.html#a99feb3a0b68bde7a1a2355b03d12dc73',1,'mysqlpp::Date::day() const'],['../classmysqlpp_1_1Date.html#a2377b5e34f24864d6e727bb949b1735b',1,'mysqlpp::Date::day(unsigned char d)']]], ['db_71',['db',['../classmysqlpp_1_1Field.html#acb15b398d46119b6f0b4418daa9177eb',1,'mysqlpp::Field']]], ['db_5fname_72',['db_name',['../namespacemysqlpp_1_1examples.html#ab28e135f83d959f8e683a9704a88e225',1,'mysqlpp::examples']]], ['dbdriver_73',['DBDriver',['../classmysqlpp_1_1DBDriver.html#a6ccfeba0e619aaff0a0b535024734096',1,'mysqlpp::DBDriver::DBDriver()'],['../classmysqlpp_1_1DBDriver.html#a97cb209e2560e41ce28d060e2c8c1a10',1,'mysqlpp::DBDriver::DBDriver(const DBDriver &other)'],['../classmysqlpp_1_1DBDriver.html',1,'mysqlpp::DBDriver']]], ['dbdriver_2eh_74',['dbdriver.h',['../dbdriver_8h.html',1,'']]], ['dbselectionfailed_75',['DBSelectionFailed',['../classmysqlpp_1_1DBSelectionFailed.html#abe3fafb68ac7103a4389484c380bc5ef',1,'mysqlpp::DBSelectionFailed::DBSelectionFailed()'],['../classmysqlpp_1_1DBSelectionFailed.html',1,'mysqlpp::DBSelectionFailed']]], ['delim_76',['delim',['../structmysqlpp_1_1equal__list__ba.html#a11cce071cfe6c26585602970e0eab481',1,'mysqlpp::equal_list_ba::delim()'],['../structmysqlpp_1_1equal__list__b.html#acc88d6a3d51f9e985641f3931a026c59',1,'mysqlpp::equal_list_b::delim()'],['../structmysqlpp_1_1value__list__ba.html#a6b0f93524912bc3a861b5764883287b7',1,'mysqlpp::value_list_ba::delim()'],['../structmysqlpp_1_1value__list__b.html#acad7cd0a818d772b907502956da4dd9a',1,'mysqlpp::value_list_b::delim()']]], ['destroy_77',['destroy',['../classmysqlpp_1_1ConnectionPool.html#a3dae30e24dd6967e4e427fa69dbc2105',1,'mysqlpp::ConnectionPool']]], ['difference_5ftype_78',['difference_type',['../classmysqlpp_1_1Row.html#a52ab7eb9a848c022ea543f7d619fd337',1,'mysqlpp::Row']]], ['disable_5fexceptions_79',['disable_exceptions',['../classmysqlpp_1_1OptionalExceptions.html#a4e1a95b8d3c97338c66f21c5d5a4be20',1,'mysqlpp::OptionalExceptions']]], ['disconnect_80',['disconnect',['../classmysqlpp_1_1Connection.html#a61e571ee724d79c455555f62472880ef',1,'mysqlpp::Connection::disconnect()'],['../classmysqlpp_1_1DBDriver.html#ae7a74e96d9b1e2ff307f7983bd0a8b03',1,'mysqlpp::DBDriver::disconnect()']]], ['do_5fnothing_81',['do_nothing',['../manip_8h.html#acabd5572224baf2f7c26f89bc082673fae465f6c0ca597e0ab6332883b7b5f00d',1,'mysqlpp']]], ['do_5fnothing_5ftype0_82',['do_nothing_type0',['../manip_8h.html#acabd5572224baf2f7c26f89bc082673f',1,'mysqlpp']]], ['driver_83',['driver',['../classmysqlpp_1_1Connection.html#a0d118df40a7bd4bb63e7286b221f7680',1,'mysqlpp::Connection']]], ['driver_5f_84',['driver_',['../classmysqlpp_1_1ResultBase.html#ac0265838557fd0f63b7abae4927a835f',1,'mysqlpp::ResultBase']]], ['drop_5fdb_85',['drop_db',['../classmysqlpp_1_1Connection.html#aa073e784a16a9d4b357740a626a6b2e1',1,'mysqlpp::Connection::drop_db()'],['../classmysqlpp_1_1DBDriver.html#a872929be520caecca06830cf8db89828',1,'mysqlpp::DBDriver::drop_db()']]], ['dtest_5fmode_86',['dtest_mode',['../classmysqlpp_1_1examples_1_1CommandLine.html#a177733504f32c0d051e7043878280525',1,'mysqlpp::examples::CommandLine']]] ]; mysql++-3.3.0/doc/html/refman/search/variables_5.html000644 000765 000024 00000002653 14042362132 023126 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/typedefs_1.html000644 000765 000024 00000002652 14042362132 022774 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/functions_a.js000644 000765 000024 00000001121 14042362132 022677 0ustar00tangentstaff000000 000000 var searchData= [ ['length_767',['length',['../classmysqlpp_1_1Field.html#a307ff524ddb269d093f1d1072432e5cd',1,'mysqlpp::Field::length()'],['../classmysqlpp_1_1String.html#a66c9621a34af636ec44c7005aacaeee3',1,'mysqlpp::String::length()'],['../classmysqlpp_1_1SQLBuffer.html#a559e04e15eb087d2519dc3316584bae7',1,'mysqlpp::SQLBuffer::length()'],['../classmysqlpp_1_1SQLTypeAdapter.html#a74e7ef6bf6cdba4e0e6448d735d5cde0',1,'mysqlpp::SQLTypeAdapter::length()']]], ['lock_768',['lock',['../classmysqlpp_1_1BeecryptMutex.html#adb5f8dc007416c376826ac9461b82e87',1,'mysqlpp::BeecryptMutex']]] ]; mysql++-3.3.0/doc/html/refman/search/enumvalues_3.html000644 000765 000024 00000002654 14042362132 023341 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/variables_e.js000644 000765 000024 00000000221 14042362132 022643 0ustar00tangentstaff000000 000000 var searchData= [ ['what_5f_1017',['what_',['../classmysqlpp_1_1Exception.html#a9d1f31934daa02fdbedfe419be524191',1,'mysqlpp::Exception']]] ]; mysql++-3.3.0/doc/html/refman/search/all_b.html000644 000765 000024 00000002645 14042362132 022004 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/all_9.html000644 000765 000024 00000002645 14042362132 021733 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_0.html000644 000765 000024 00000002647 14042362132 022256 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/all_d.js000644 000765 000024 00000051646 14042362132 021463 0ustar00tangentstaff000000 000000 var searchData= [ ['objectnotinitialized_231',['ObjectNotInitialized',['../classmysqlpp_1_1ObjectNotInitialized.html',1,'mysqlpp::ObjectNotInitialized'],['../classmysqlpp_1_1ObjectNotInitialized.html#adf2d313b70dca87a0c78dae20141af11',1,'mysqlpp::ObjectNotInitialized::ObjectNotInitialized()']]], ['operator_20bool_232',['operator bool',['../classmysqlpp_1_1String.html#ab0d364d1503a1eb51577c43c4c961ac0',1,'mysqlpp::String::operator bool()'],['../classmysqlpp_1_1tiny__int.html#ab733957913c1801a188873d2b3089126',1,'mysqlpp::tiny_int::operator bool()']]], ['operator_20const_20char_20_2a_233',['operator const char *',['../classmysqlpp_1_1String.html#adb031ef20e97139a3750f097a9eea7bf',1,'mysqlpp::String::operator const char *()'],['../classmysqlpp_1_1SQLTypeAdapter.html#ae53774c6ab86a8472c888600b15871c3',1,'mysqlpp::SQLTypeAdapter::operator const char *()']]], ['operator_20const_20void_20_2a_234',['operator const void *',['../classmysqlpp_1_1RefCountedPointer.html#a70e3f29073ff9707cec12ba841910ca8',1,'mysqlpp::RefCountedPointer']]], ['operator_20date_235',['operator Date',['../classmysqlpp_1_1String.html#aee36fa5381717ac82bbba1b30f33c002',1,'mysqlpp::String']]], ['operator_20datetime_236',['operator DateTime',['../classmysqlpp_1_1String.html#aa80a17fa4d2125b83a91d180b9c86581',1,'mysqlpp::String']]], ['operator_20double_237',['operator double',['../classmysqlpp_1_1String.html#a58e2e69f569cf0a763f3b872a50f028b',1,'mysqlpp::String']]], ['operator_20float_238',['operator float',['../classmysqlpp_1_1String.html#ac9214795d988addd4ddd7347137f94e6',1,'mysqlpp::String']]], ['operator_20int_239',['operator int',['../classmysqlpp_1_1String.html#a6ed67e9a9661a0df677d7037c533c219',1,'mysqlpp::String::operator int()'],['../classmysqlpp_1_1tiny__int.html#a220a6aab5326ad5f61380786a3f2ef79',1,'mysqlpp::tiny_int::operator int()']]], ['operator_20long_20int_240',['operator long int',['../classmysqlpp_1_1String.html#ade46267c46a58e55145b9127ea9940f5',1,'mysqlpp::String']]], ['operator_20longlong_241',['operator longlong',['../classmysqlpp_1_1String.html#a48a10dba7e8ca3ff4377e512e38bdcde',1,'mysqlpp::String']]], ['operator_20mysql_5fres_20_2a_242',['operator MYSQL_RES *',['../classmysqlpp_1_1UseQueryResult.html#a8e8966dcc7b06fc0ccc937df03592eb3',1,'mysqlpp::UseQueryResult']]], ['operator_20null_3c_20t_2c_20b_20_3e_243',['operator Null< T, B >',['../classmysqlpp_1_1String.html#a4916487ca99be70ca919c067a0d4bd1d',1,'mysqlpp::String']]], ['operator_20private_5fbool_5ftype_244',['operator private_bool_type',['../classmysqlpp_1_1Connection.html#ac566c5ccf8cf92d3b80969bd09bea184',1,'mysqlpp::Connection::operator private_bool_type()'],['../classmysqlpp_1_1SimpleResult.html#a0097b2e46727000537cd5a876ff54fdf',1,'mysqlpp::SimpleResult::operator private_bool_type()'],['../classmysqlpp_1_1StoreQueryResult.html#a4d182f773d04d30f13a3d276f6494cc9',1,'mysqlpp::StoreQueryResult::operator private_bool_type()'],['../classmysqlpp_1_1Row.html#adcdec8796ef8f7d3156d66296bdf3f06',1,'mysqlpp::Row::operator private_bool_type()']]], ['operator_20short_20int_245',['operator short int',['../classmysqlpp_1_1String.html#a362d9ff02feb199298f3329869636ccf',1,'mysqlpp::String']]], ['operator_20signed_20char_246',['operator signed char',['../classmysqlpp_1_1String.html#ab6fbba4b6b9d85c5cb8667c76cf4cf9a',1,'mysqlpp::String']]], ['operator_20time_247',['operator Time',['../classmysqlpp_1_1String.html#a3904e41b9760abc26d0d93261747ee6f',1,'mysqlpp::String']]], ['operator_20time_5ft_248',['operator time_t',['../classmysqlpp_1_1Time.html#a5f605e02560a20c8e48153fccaeaa638',1,'mysqlpp::Time::operator time_t()'],['../classmysqlpp_1_1Date.html#a7bd903b8ba4753252adb809d9e67f567',1,'mysqlpp::Date::operator time_t()'],['../classmysqlpp_1_1DateTime.html#a35922ebd991bfe51451a3359b08a983a',1,'mysqlpp::DateTime::operator time_t()']]], ['operator_20type_249',['operator Type',['../classmysqlpp_1_1Null.html#a2ff8415d7070ebbe0462dd78f278d78a',1,'mysqlpp::Null']]], ['operator_20ulonglong_250',['operator ulonglong',['../classmysqlpp_1_1String.html#aee68e1ba1d6acc1cc19c740ecd8afca4',1,'mysqlpp::String']]], ['operator_20unsigned_20char_251',['operator unsigned char',['../classmysqlpp_1_1String.html#a82c21ae0458451ae82e92ed64a7096a9',1,'mysqlpp::String']]], ['operator_20unsigned_20int_252',['operator unsigned int',['../classmysqlpp_1_1String.html#a591ed46247129f1393a31350a549b1f9',1,'mysqlpp::String']]], ['operator_20unsigned_20long_20int_253',['operator unsigned long int',['../classmysqlpp_1_1String.html#a9e00717ff67a8d61ec15c284ad357567',1,'mysqlpp::String']]], ['operator_20unsigned_20short_20int_254',['operator unsigned short int',['../classmysqlpp_1_1String.html#a3c90987f511c39b8a9f1e87c05c608b9',1,'mysqlpp::String']]], ['operator_20value_5ftype_255',['operator value_type',['../classmysqlpp_1_1tiny__int.html#a32c029e1f927c6571006b5ff36536add',1,'mysqlpp::tiny_int']]], ['operator_20void_20_2a_256',['operator void *',['../classmysqlpp_1_1ScopedConnection.html#af78d1e0d9b08ead6741775b9fa1f1f76',1,'mysqlpp::ScopedConnection::operator void *()'],['../classmysqlpp_1_1RefCountedPointer.html#a48f681f74dbe025e8c639f65850e2302',1,'mysqlpp::RefCountedPointer::operator void *()'],['../classmysqlpp_1_1Query.html#adef9279b7c7f9e706fed4a4293aa25b8',1,'mysqlpp::Query::operator void *()'],['../classmysqlpp_1_1CommandLineBase.html#a8cef39986e213b2e596602e8f505e773',1,'mysqlpp::CommandLineBase::operator void *()']]], ['operator_21_257',['operator!',['../classmysqlpp_1_1Query.html#a5789166f3ba43e57632bfff471bfde9c',1,'mysqlpp::Query']]], ['operator_21_3d_258',['operator!=',['../classmysqlpp_1_1String.html#a7b1a97b852f97b37314a2ac17606ba9d',1,'mysqlpp::String::operator!=()'],['../type__info_8h.html#aa850515ed37836d129fcb2519b715616',1,'mysqlpp::operator!=(const mysql_type_info &a, const std::type_info &b)'],['../type__info_8h.html#a2f5e39c2ce07a10d10fbac05c69719c7',1,'mysqlpp::operator!=(const std::type_info &a, const mysql_type_info &b)'],['../type__info_8h.html#a76c7cf5acdee2b571e3faf747ff05f86',1,'mysqlpp::operator!=(const mysql_type_info &a, const mysql_type_info &b)'],['../classmysqlpp_1_1tiny__int.html#a9cd53203e656f96c171246fae11061af',1,'mysqlpp::tiny_int::operator!=()'],['../classmysqlpp_1_1Comparable.html#abd6838057873cc50a61718e3a9c3d288',1,'mysqlpp::Comparable::operator!=()'],['../classmysqlpp_1_1String.html#a3ee730cb495dcd5f13208d7c3684dd82',1,'mysqlpp::String::operator!=()'],['../classmysqlpp_1_1Null.html#a40a4bb82c9460d9e9e510b6c37a26134',1,'mysqlpp::Null::operator!=(const Null< Type > &rhs) const'],['../classmysqlpp_1_1Null.html#a169bf669bfb3738c45e7bb78afc66851',1,'mysqlpp::Null::operator!=(const null_type &rhs) const']]], ['operator_25_259',['operator%',['../classmysqlpp_1_1tiny__int.html#ae96ea883a7b0a03ddfa576427f08c258',1,'mysqlpp::tiny_int']]], ['operator_25_3d_260',['operator%=',['../classmysqlpp_1_1tiny__int.html#abbc67bd4206bcdc011987d8982c8fde2',1,'mysqlpp::tiny_int']]], ['operator_26_261',['operator&',['../classmysqlpp_1_1tiny__int.html#aca3b72be7352df7182e4e8aba6daee76',1,'mysqlpp::tiny_int']]], ['operator_26_3d_262',['operator&=',['../classmysqlpp_1_1tiny__int.html#a24b3a6fbf978a37dcb28af603f496caa',1,'mysqlpp::tiny_int']]], ['operator_28_29_263',['operator()',['../structmysqlpp_1_1RefCountedPointerDestroyer.html#a2bb4681a031201322d3a10fae7be7dfc',1,'mysqlpp::RefCountedPointerDestroyer::operator()()'],['../structmysqlpp_1_1RefCountedPointerDestroyer_3_01MYSQL__RES_01_4.html#ae78dc40ea63d76b4efff3476fb4e0eed',1,'mysqlpp::RefCountedPointerDestroyer< MYSQL_RES >::operator()()']]], ['operator_2a_264',['operator*',['../classmysqlpp_1_1RefCountedPointer.html#abe859269484d98811b0429c1d714d22c',1,'mysqlpp::RefCountedPointer::operator*()'],['../classmysqlpp_1_1ScopedConnection.html#abdb6508f802571704070242ddbfebac4',1,'mysqlpp::ScopedConnection::operator*()'],['../classmysqlpp_1_1tiny__int.html#a6ed99c56a6ed8778309721ac1d3bf7b6',1,'mysqlpp::tiny_int::operator*(const this_type &i) const']]], ['operator_2a_3d_265',['operator*=',['../classmysqlpp_1_1tiny__int.html#aad168f067098aef3975fac384a7bfc7c',1,'mysqlpp::tiny_int']]], ['operator_2b_266',['operator+',['../classmysqlpp_1_1SQLQueryParms.html#a3463a21eab7b56def356c9f0bf81cbb5',1,'mysqlpp::SQLQueryParms::operator+()'],['../classmysqlpp_1_1tiny__int.html#a0a68f5fb5aad27e3e2eb8ab202d23b20',1,'mysqlpp::tiny_int::operator+(const this_type &i) const']]], ['operator_2b_2b_267',['operator++',['../classmysqlpp_1_1tiny__int.html#ac73c26862208cf500871288153975397',1,'mysqlpp::tiny_int::operator++()'],['../classmysqlpp_1_1tiny__int.html#acb6a9557f17f0d9491bfca78dd447133',1,'mysqlpp::tiny_int::operator++(int)']]], ['operator_2b_3d_268',['operator+=',['../classmysqlpp_1_1tiny__int.html#a36e18f2ce991fb4296dc59e2212a5fa1',1,'mysqlpp::tiny_int::operator+=()'],['../classmysqlpp_1_1SQLQueryParms.html#a5ea5a8f1b1598a03c969e4bd42b70367',1,'mysqlpp::SQLQueryParms::operator+=()']]], ['operator_2d_269',['operator-',['../classmysqlpp_1_1tiny__int.html#a6da55c932a8b5eaeb364b41b431fd27b',1,'mysqlpp::tiny_int']]], ['operator_2d_2d_270',['operator--',['../classmysqlpp_1_1tiny__int.html#a85a9927cabf14fc6d6c57b3654bcdd98',1,'mysqlpp::tiny_int::operator--()'],['../classmysqlpp_1_1tiny__int.html#a7bc7eacd9a17ee36161595b2715da7c8',1,'mysqlpp::tiny_int::operator--(int)']]], ['operator_2d_3d_271',['operator-=',['../classmysqlpp_1_1tiny__int.html#ae5efcbe08b3c794b6891e601087901f0',1,'mysqlpp::tiny_int']]], ['operator_2d_3e_272',['operator->',['../classmysqlpp_1_1RefCountedPointer.html#ae3cba580c671f21bed27b1bbfddb38be',1,'mysqlpp::RefCountedPointer::operator->()'],['../classmysqlpp_1_1ScopedConnection.html#adfdccb62813dbd052750a205e0cd1d29',1,'mysqlpp::ScopedConnection::operator->()']]], ['operator_2f_273',['operator/',['../classmysqlpp_1_1tiny__int.html#a0ae2cc2ea907f6c485f8a14ab27fc298',1,'mysqlpp::tiny_int']]], ['operator_2f_3d_274',['operator/=',['../classmysqlpp_1_1tiny__int.html#a1202e5b687748679fb3fc3f8dd58590c',1,'mysqlpp::tiny_int']]], ['operator_3c_275',['operator<',['../classmysqlpp_1_1tiny__int.html#a356bb331a01fa80e8d738bf223ea3ac8',1,'mysqlpp::tiny_int::operator<()'],['../classmysqlpp_1_1Null.html#af52c81541d4ee25a3c09399a5f402698',1,'mysqlpp::Null::operator<(const null_type &) const'],['../classmysqlpp_1_1Null.html#ae7209f1af6f37a583f914bc616ea64ab',1,'mysqlpp::Null::operator<(const Null< Type > &rhs) const'],['../classmysqlpp_1_1Comparable.html#aeedff722c69d1f025e2f93241ce24dfa',1,'mysqlpp::Comparable::operator<()']]], ['operator_3c_3c_276',['operator<<',['../sqlstream_8h.html#a11f16ac6788a32f6f2d249c6fb8ba435',1,'mysqlpp::operator<<(std::ostream &os, SQLStream &s)'],['../tiny__int_8h.html#acdb621cc1a5decd8e9b6950470bdf0cb',1,'mysqlpp::operator<<(std::ostream &os, tiny_int< VT > i)'],['../vallist_8h.html#a14959a9a7adf3bdb1f68ab7ea4e6bb7e',1,'mysqlpp::operator<<(std::ostream &o, const equal_list_ba< Seq1, Seq2, Manip > &el)'],['../query_8h.html#a0bb63973f664fc1c142cdd093f539d03',1,'mysqlpp::operator<<(std::ostream &os, Query &q)'],['../classmysqlpp_1_1SQLQueryParms.html#a99cd26777450918add30f14c0224d4e8',1,'mysqlpp::SQLQueryParms::operator<<()'],['../classmysqlpp_1_1tiny__int.html#ad434a8f7339c86a6fe93ddbde954beeb',1,'mysqlpp::tiny_int::operator<<()'],['../vallist_8h.html#a5190aab5cca65dbb641e287de9cb6f66',1,'mysqlpp::operator<<(std::ostream &o, const value_list_ba< Seq, Manip > &cl)'],['../vallist_8h.html#a3fa2009cde5ff7ee5d817d9e8e1b9ace',1,'mysqlpp::operator<<(std::ostream &o, const equal_list_b< Seq1, Seq2, Manip > &el)'],['../myset_8h.html#afac17b799a2d8f5a36b411b7e75dcc99',1,'mysqlpp::operator<<(std::ostream &s, const Set< Container > &d)'],['../null_8h.html#ac214a288279ed7ccfc2c5b6219a83821',1,'mysqlpp::operator<<(std::ostream &o, const Null< Type, Behavior > &n)'],['../vallist_8h.html#ae42f3fce3eb51f9257d519728ebb247c',1,'mysqlpp::operator<<(std::ostream &o, const value_list_b< Seq, Manip > &cl)']]], ['operator_3c_3c_3d_277',['operator<<=',['../classmysqlpp_1_1tiny__int.html#a256b54a16c73ac9f5ceb98cc18ea08a2',1,'mysqlpp::tiny_int']]], ['operator_3c_3d_278',['operator<=',['../classmysqlpp_1_1Comparable.html#a87d2453b99391154e1a5ece20ec6c046',1,'mysqlpp::Comparable::operator<=()'],['../classmysqlpp_1_1tiny__int.html#a662f6c125b44a2bf856e8fee093301fa',1,'mysqlpp::tiny_int::operator<=()']]], ['operator_3d_279',['operator=',['../classmysqlpp_1_1FieldTypes.html#a868d074de1ddd8d41a49bebf62eec6c6',1,'mysqlpp::FieldTypes::operator=()'],['../classmysqlpp_1_1String.html#a6f31d730d66f311a4045bf62b170869d',1,'mysqlpp::String::operator=(const std::string &rhs)'],['../classmysqlpp_1_1String.html#a7bc9c3f4dd56805e844aba503b175bcd',1,'mysqlpp::String::operator=(const char *str)'],['../classmysqlpp_1_1FieldTypes.html#a42f144b9057b8da595ed3d4ce6367065',1,'mysqlpp::FieldTypes::operator=()'],['../classmysqlpp_1_1Null.html#a166ecaa4b711982efe2d8ceee57cd06a',1,'mysqlpp::Null::operator=(const Type &x)'],['../classmysqlpp_1_1Null.html#a05b4d11b4ac5bfa80c2a05cbcc740d01',1,'mysqlpp::Null::operator=(const null_type &)'],['../classmysqlpp_1_1Query.html#a75982ff4f3b5fe603ee6041ed64172ce',1,'mysqlpp::Query::operator=()'],['../classmysqlpp_1_1RefCountedPointer.html#a33e254256ace5abc2b07d8a630e55188',1,'mysqlpp::RefCountedPointer::operator=(T *c)'],['../classmysqlpp_1_1RefCountedPointer.html#a506a85c3e871b5436eb20d6436fb5d9d',1,'mysqlpp::RefCountedPointer::operator=(const ThisType &rhs)'],['../classmysqlpp_1_1StoreQueryResult.html#a832e623301e516f7f31714bc7ed471b9',1,'mysqlpp::StoreQueryResult::operator=()'],['../classmysqlpp_1_1UseQueryResult.html#a2c7f55f092e888911acca535d630fbf2',1,'mysqlpp::UseQueryResult::operator=()'],['../classmysqlpp_1_1Row.html#a0daff2b6eaca8ea5b3193c0c3e68fea4',1,'mysqlpp::Row::operator=()'],['../classmysqlpp_1_1SQLStream.html#a48bd3485fca317bfef9b21405aca78d2',1,'mysqlpp::SQLStream::operator=()'],['../classmysqlpp_1_1SQLTypeAdapter.html#a81c7586c2d06c3be039e1ec29e91fe2a',1,'mysqlpp::SQLTypeAdapter::operator=(const SQLTypeAdapter &rhs)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a4b1e09ad61e2c57be780362d9eb68dd8',1,'mysqlpp::SQLTypeAdapter::operator=(const null_type &n)'],['../classmysqlpp_1_1tiny__int.html#ade6a9d3ddfb2d1fcc75a7ea591e91a8b',1,'mysqlpp::tiny_int::operator=()'],['../classmysqlpp_1_1mysql__type__info.html#acad519adee26270008af428388239863',1,'mysqlpp::mysql_type_info::operator=(const mysql_type_info &t)'],['../classmysqlpp_1_1mysql__type__info.html#a3e3c72bb667e7a0d73f9ebfe6aa5e8c5',1,'mysqlpp::mysql_type_info::operator=(const std::type_info &t)'],['../classmysqlpp_1_1FieldNames.html#a71d157dd44ea72f4d85be8ae590f7e18',1,'mysqlpp::FieldNames::operator=(int i)'],['../classmysqlpp_1_1FieldNames.html#a5d8a3d1721f5cdec568a88176820eaf1',1,'mysqlpp::FieldNames::operator=(const ResultBase *res)'],['../classmysqlpp_1_1Exception.html#a2103d37da48b9824fa4407863aef9e0e',1,'mysqlpp::Exception::operator=()'],['../classmysqlpp_1_1Connection.html#aaf58375723c00a4ac494c83ab384596e',1,'mysqlpp::Connection::operator=()'],['../classmysqlpp_1_1String.html#a1252d1e232376f6493755b49761fa439',1,'mysqlpp::String::operator=()']]], ['operator_3d_3d_280',['operator==',['../classmysqlpp_1_1tiny__int.html#a982d4075d43545cc60fbf1af287d634e',1,'mysqlpp::tiny_int::operator==()'],['../type__info_8h.html#ac6ad1f599784d7ab05293f4b7aa9e8ef',1,'mysqlpp::operator==(const mysql_type_info &a, const mysql_type_info &b)'],['../type__info_8h.html#aa8e49fa4b497a88c2996187ac2f34f7c',1,'mysqlpp::operator==(const mysql_type_info &a, const std::type_info &b)'],['../type__info_8h.html#ac8fc6cbf67f8ece2794edc86f36f1d8a',1,'mysqlpp::operator==(const std::type_info &a, const mysql_type_info &b)'],['../classmysqlpp_1_1Comparable.html#a1027c7512c91124faf9bc5458a7d8aba',1,'mysqlpp::Comparable::operator==()'],['../classmysqlpp_1_1String.html#a96c7fd85e0391a2e3a2864d27ed86929',1,'mysqlpp::String::operator==(const T &rhs) const'],['../classmysqlpp_1_1String.html#a5e6cd3a1ea6c7ad6cea716a8eaea9227',1,'mysqlpp::String::operator==(const mysqlpp::null_type &) const'],['../classmysqlpp_1_1Null.html#accd1446f726c245aa894e21a527612d8',1,'mysqlpp::Null::operator==(const Null< Type > &rhs) const'],['../classmysqlpp_1_1Null.html#a86e89a86b33184fe32d3f72e5b504fe3',1,'mysqlpp::Null::operator==(const null_type &) const']]], ['operator_3e_281',['operator>',['../classmysqlpp_1_1Comparable.html#a3e33afd04393aad053ac80e14f33d434',1,'mysqlpp::Comparable::operator>()'],['../classmysqlpp_1_1tiny__int.html#a0c478e4305b8d1c0cad2271f6732c6d1',1,'mysqlpp::tiny_int::operator>()']]], ['operator_3e_3d_282',['operator>=',['../classmysqlpp_1_1Comparable.html#affce4fc1ccb1c8b0038cd1f21431100d',1,'mysqlpp::Comparable::operator>=()'],['../classmysqlpp_1_1tiny__int.html#a07ac3989d6587b9bf5b9c524700211ee',1,'mysqlpp::tiny_int::operator>=(const this_type &i) const']]], ['operator_3e_3e_283',['operator>>',['../classmysqlpp_1_1tiny__int.html#ab37745df0f2b2b08f84a656879719e65',1,'mysqlpp::tiny_int']]], ['operator_3e_3e_3d_284',['operator>>=',['../classmysqlpp_1_1tiny__int.html#a110f9067985f3fb752b7f789e51dd807',1,'mysqlpp::tiny_int']]], ['operator_5b_5d_285',['operator[]',['../classmysqlpp_1_1String.html#aacf7372054b76c22e33bbdf44b390359',1,'mysqlpp::String::operator[]()'],['../classmysqlpp_1_1SQLQueryParms.html#ae062e7125fd3af499cb6a50d9e9ed078',1,'mysqlpp::SQLQueryParms::operator[](size_type n)'],['../classmysqlpp_1_1SQLQueryParms.html#ae04231f2277200c79f292345074b6185',1,'mysqlpp::SQLQueryParms::operator[](size_type n) const'],['../classmysqlpp_1_1SQLQueryParms.html#a9e182572b2832ea47a6b2ea7c8ef25b9',1,'mysqlpp::SQLQueryParms::operator[](const char *str)'],['../classmysqlpp_1_1SQLQueryParms.html#a2bb26b0019d2d15cfb315ffb559fed19',1,'mysqlpp::SQLQueryParms::operator[](const char *str) const'],['../classmysqlpp_1_1Row.html#a295e7403ffc80c0cefc16899ecd0f6f8',1,'mysqlpp::Row::operator[](const char *field) const'],['../classmysqlpp_1_1Row.html#af4118483226f8c8c7c6654c7ace7c100',1,'mysqlpp::Row::operator[](int i) const'],['../classmysqlpp_1_1FieldNames.html#a8fa3eb420608ac5a32099d2da68992c1',1,'mysqlpp::FieldNames::operator[](const std::string &s) const'],['../classmysqlpp_1_1FieldNames.html#acaababa1d2d9e3464183cd07e90401ee',1,'mysqlpp::FieldNames::operator[](size_type i) const'],['../classmysqlpp_1_1FieldNames.html#ad357ab3a247c0762bc2da3336b56ffc1',1,'mysqlpp::FieldNames::operator[](size_type i)'],['../classmysqlpp_1_1FieldNames.html#abfc85bbc52fa4199c1a04d87886ed844',1,'mysqlpp::FieldNames::operator[](int i) const'],['../classmysqlpp_1_1FieldNames.html#afc48d06fa18e5289fad80207e95d85eb',1,'mysqlpp::FieldNames::operator[](int i)']]], ['operator_5e_286',['operator^',['../classmysqlpp_1_1tiny__int.html#ae4e89235b5788e2ce4cdca99b571d057',1,'mysqlpp::tiny_int']]], ['operator_5e_3d_287',['operator^=',['../classmysqlpp_1_1tiny__int.html#affffdfea42926ff6dca2e7d55ec5d991',1,'mysqlpp::tiny_int']]], ['operator_7c_288',['operator|',['../classmysqlpp_1_1tiny__int.html#a5ee6dd4ef8585f91235f2aaa5e2a34ce',1,'mysqlpp::tiny_int']]], ['operator_7c_3d_289',['operator|=',['../classmysqlpp_1_1tiny__int.html#a879dc1f591dee511e6f5e4e551c92745',1,'mysqlpp::tiny_int']]], ['option_290',['Option',['../classmysqlpp_1_1Option.html',1,'mysqlpp']]], ['option_291',['option',['../structmysqlpp_1_1SQLParseElement.html#a99ca4660111774c7bdfc5d0a142d9f00',1,'mysqlpp::SQLParseElement']]], ['option_5fargument_292',['option_argument',['../classmysqlpp_1_1CommandLineBase.html#ac7b0b1da54f84d332378a68f017d8cf1',1,'mysqlpp::CommandLineBase']]], ['option_5findex_293',['option_index',['../classmysqlpp_1_1CommandLineBase.html#a0f361569f3197bea6a6c203dde6e151d',1,'mysqlpp::CommandLineBase']]], ['optionalexceptions_294',['OptionalExceptions',['../classmysqlpp_1_1OptionalExceptions.html',1,'mysqlpp::OptionalExceptions'],['../classmysqlpp_1_1OptionalExceptions.html#a45a3e93f56716abf10704419b5ba4f31',1,'mysqlpp::OptionalExceptions::OptionalExceptions()']]], ['optionlist_295',['OptionList',['../options_8h.html#a42aca90e097537c93980365712a534fe',1,'mysqlpp']]], ['optionlistit_296',['OptionListIt',['../options_8h.html#a679d140d3eb1e59e4513af4b639c63b2',1,'mysqlpp']]], ['options_2eh_297',['options.h',['../options_8h.html',1,'']]], ['output_298',['output',['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#a5c828553af28d24f9194fbbc82745c73',1,'mysqlpp::ssqlsxlat::CommandLine']]], ['output_5fsink_299',['output_sink',['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#a4540ba9363eaf6d05bbd3959acc32b65',1,'mysqlpp::ssqlsxlat::CommandLine']]], ['string_300',['string',['../classmysqlpp_1_1Set.html#aa30a5151d8419fc8485d373f64cb0b5d',1,'mysqlpp::Set::string()'],['../classmysqlpp_1_1DateTime.html#af8aac90946fbc0c3e936604c03da3de5',1,'mysqlpp::DateTime::string()'],['../classmysqlpp_1_1Date.html#ae24e56018ade8682ed796d0af85b7a28',1,'mysqlpp::Date::string()'],['../classmysqlpp_1_1Time.html#a769ba6be3b158930fd72a28d9d97c9e7',1,'mysqlpp::Time::string()']]] ]; mysql++-3.3.0/doc/html/refman/search/enums_3.js000644 000765 000024 00000000223 14042362132 021742 0ustar00tangentstaff000000 000000 var searchData= [ ['nr_5fcode_1047',['nr_code',['../classmysqlpp_1_1DBDriver.html#a0275cada4dbb299404e02bffc113adda',1,'mysqlpp::DBDriver']]] ]; mysql++-3.3.0/doc/html/refman/search/variables_6.js000644 000765 000024 00000000213 14042362132 022565 0ustar00tangentstaff000000 000000 var searchData= [ ['is_5fnull_1002',['is_null',['../classmysqlpp_1_1Null.html#a2ce81045c6da00302bb3c998527aab7b',1,'mysqlpp::Null']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_2.js000644 000765 000024 00000015470 14042362132 022634 0ustar00tangentstaff000000 000000 var searchData= [ ['c_5fstr_675',['c_str',['../classmysqlpp_1_1String.html#a9c26df79f745061a53ed5da9ac409b49',1,'mysqlpp::String']]], ['c_5ftype_676',['c_type',['../classmysqlpp_1_1mysql__type__info.html#a4ac25a093e1bdbf302ba5caa8d4816be',1,'mysqlpp::mysql_type_info']]], ['clear_677',['clear',['../classmysqlpp_1_1ConnectionPool.html#a981e1b1715de2daea9f6b10bdcbb5915',1,'mysqlpp::ConnectionPool::clear()'],['../classmysqlpp_1_1SQLQueryParms.html#a15b3fb93546e32b4cbd8015db34ec1e5',1,'mysqlpp::SQLQueryParms::clear()']]], ['client_5fversion_678',['client_version',['../classmysqlpp_1_1Connection.html#a8923972d5b75e0cd194b556ca3c11dd9',1,'mysqlpp::Connection::client_version()'],['../classmysqlpp_1_1DBDriver.html#ae25d81f232a155e24a724f741593d81f',1,'mysqlpp::DBDriver::client_version()']]], ['commandline_679',['CommandLine',['../classmysqlpp_1_1examples_1_1CommandLine.html#a94a1168f204e8a945743b533393d0edf',1,'mysqlpp::examples::CommandLine::CommandLine()'],['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#a055b4f3a100607034f43159bc96d394d',1,'mysqlpp::ssqlsxlat::CommandLine::CommandLine()']]], ['commandlinebase_680',['CommandLineBase',['../classmysqlpp_1_1CommandLineBase.html#a36aff0ceccfb08be9b04717dc48ac706',1,'mysqlpp::CommandLineBase']]], ['commit_681',['commit',['../classmysqlpp_1_1Transaction.html#a109bd0f1d70b6ff69cf3abccf7eea8f8',1,'mysqlpp::Transaction::commit()'],['../classmysqlpp_1_1NoTransaction.html#a6cf5b1a6d4b6baaf60077ef3afafa853',1,'mysqlpp::NoTransaction::commit()']]], ['compare_682',['compare',['../classmysqlpp_1_1Comparable.html#a189507426ed585f7da84f63dc426c651',1,'mysqlpp::Comparable::compare()'],['../classmysqlpp_1_1DateTime.html#aeb193c449b06d0c39085434576004085',1,'mysqlpp::DateTime::compare()'],['../classmysqlpp_1_1Date.html#aa710b0fec0151ed558906edfa1ce6e63',1,'mysqlpp::Date::compare()'],['../classmysqlpp_1_1Time.html#aded59e5685516ae30a7fbb16a1b670b2',1,'mysqlpp::Time::compare()'],['../classmysqlpp_1_1String.html#ac2143864e43d0feb640f685f91c5f477',1,'mysqlpp::String::compare(const String &other) const'],['../classmysqlpp_1_1String.html#ada0d25c1fd031ad73395e3449896cd40',1,'mysqlpp::String::compare(const std::string &other) const'],['../classmysqlpp_1_1String.html#ad77fd562c855993913006b902b76432d',1,'mysqlpp::String::compare(size_type pos, size_type num, std::string &other) const'],['../classmysqlpp_1_1String.html#acbcb9d297781a104d74b39475cdce1a9',1,'mysqlpp::String::compare(const char *other) const'],['../classmysqlpp_1_1String.html#aaae99b094abc7832f106e6ce121e4595',1,'mysqlpp::String::compare(size_type pos, size_type num, const char *other) const'],['../classmysqlpp_1_1SQLTypeAdapter.html#a51d2fc9b8b5d8fb613dcf0f0a5b9e8d3',1,'mysqlpp::SQLTypeAdapter::compare(const SQLTypeAdapter &other) const'],['../classmysqlpp_1_1SQLTypeAdapter.html#ad45e34461e2cbb891fb3bf927354aa0a',1,'mysqlpp::SQLTypeAdapter::compare(const std::string &other) const'],['../classmysqlpp_1_1SQLTypeAdapter.html#ac1565d6f154f1db5ea66a57b6128dbf5',1,'mysqlpp::SQLTypeAdapter::compare(size_type pos, size_type num, std::string &other) const'],['../classmysqlpp_1_1SQLTypeAdapter.html#a08161483af60f8d40708e07a0b56c156',1,'mysqlpp::SQLTypeAdapter::compare(const char *other) const'],['../classmysqlpp_1_1SQLTypeAdapter.html#a5632bb0e3f7e8ab9e32cb7f5ab7eaef4',1,'mysqlpp::SQLTypeAdapter::compare(size_type pos, size_type num, const char *other) const']]], ['connect_683',['connect',['../classmysqlpp_1_1Connection.html#aa8e2b54058f7ff7c480e34129a8ee212',1,'mysqlpp::Connection::connect()'],['../classmysqlpp_1_1DBDriver.html#adbd9ba43e74fca9c46dbe85ea8657c0f',1,'mysqlpp::DBDriver::connect(const MYSQL &mysql)'],['../classmysqlpp_1_1DBDriver.html#a0ccac7c3ea27374601af7ce537d1f36f',1,'mysqlpp::DBDriver::connect(const char *host, const char *socket_name, unsigned int port, const char *db, const char *user, const char *password)'],['../classmysqlpp_1_1TCPConnection.html#ad111bd8e49a43b3ab4972d67459efaa5',1,'mysqlpp::TCPConnection::connect()'],['../classmysqlpp_1_1UnixDomainSocketConnection.html#ac7c12c846db3d1f15c2b7a45b9f17612',1,'mysqlpp::UnixDomainSocketConnection::connect()'],['../classmysqlpp_1_1WindowsNamedPipeConnection.html#a7cf8d2f55b38508d5a16120bf21e7a3c',1,'mysqlpp::WindowsNamedPipeConnection::connect()']]], ['connect_5fprepare_684',['connect_prepare',['../classmysqlpp_1_1DBDriver.html#a527ffc220d550bbf59a1496e7dcb745c',1,'mysqlpp::DBDriver']]], ['connected_685',['connected',['../classmysqlpp_1_1Connection.html#ac9e310f5c544a7aec143c02f4618ff69',1,'mysqlpp::Connection::connected()'],['../classmysqlpp_1_1DBDriver.html#a78a43a4917343e9bc4b9ce535aea1f0b',1,'mysqlpp::DBDriver::connected()']]], ['connection_686',['Connection',['../classmysqlpp_1_1Connection.html#a0053ef79210079a5579e55a12fe5f10a',1,'mysqlpp::Connection::Connection(bool te=true)'],['../classmysqlpp_1_1Connection.html#a382ec4947dbb1998833ad0fc6f93d1c9',1,'mysqlpp::Connection::Connection(const char *db, const char *server=0, const char *user=0, const char *password=0, unsigned int port=0)'],['../classmysqlpp_1_1Connection.html#a23e80d1b3fee58e8771b2a6dd3c9ac3f',1,'mysqlpp::Connection::Connection(const Connection &other)']]], ['connectionfailed_687',['ConnectionFailed',['../classmysqlpp_1_1ConnectionFailed.html#abede9f71e0283af57a7101c0137eaaab',1,'mysqlpp::ConnectionFailed']]], ['connectionpool_688',['ConnectionPool',['../classmysqlpp_1_1ConnectionPool.html#acc1262db33d586284651825ff076a8d7',1,'mysqlpp::ConnectionPool']]], ['conv_689',['conv',['../classmysqlpp_1_1String.html#aa1e504e60b47e57be9908c1f533f99d0',1,'mysqlpp::String::conv(Type) const'],['../classmysqlpp_1_1String.html#a9e78b4e07b6371999898b432b3035cfa',1,'mysqlpp::String::conv(Null< T, B >) const']]], ['convert_690',['convert',['../classmysqlpp_1_1DateTime.html#a3c7919437f4a7b8a6c15c4a9e7aa6f93',1,'mysqlpp::DateTime::convert()'],['../classmysqlpp_1_1Date.html#ac5a073e35be0c0fd95ef63b930df8ade',1,'mysqlpp::Date::convert()'],['../classmysqlpp_1_1Time.html#a799341cb9540bca202d6170ad5ffbb22',1,'mysqlpp::Time::convert()']]], ['copy_691',['copy',['../classmysqlpp_1_1Connection.html#a44070d9f1bee49126320ad815a854ed3',1,'mysqlpp::Connection::copy()'],['../classmysqlpp_1_1DBDriver.html#a3eb75725a72627f5a51667323c555ff5',1,'mysqlpp::DBDriver::copy()'],['../classmysqlpp_1_1ResultBase.html#a3649538671f94a215c72ad03ff9025aa',1,'mysqlpp::ResultBase::copy()']]], ['count_5frows_692',['count_rows',['../classmysqlpp_1_1Connection.html#a71356d1ca53c988bf9f1e1946e4a7f48',1,'mysqlpp::Connection']]], ['create_693',['create',['../classmysqlpp_1_1ConnectionPool.html#af755c7e11b92bbab0e88ab3e9c88f0fd',1,'mysqlpp::ConnectionPool']]], ['create_5fdb_694',['create_db',['../classmysqlpp_1_1Connection.html#ac9852fb87572c6f10c6de051bacf6b8d',1,'mysqlpp::Connection::create_db()'],['../classmysqlpp_1_1DBDriver.html#a90b2741227a1f1a4c5e8f5bd79ba7315',1,'mysqlpp::DBDriver::create_db()']]] ]; mysql++-3.3.0/doc/html/refman/search/all_16.html000644 000765 000024 00000002646 14042362132 022012 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/all_7.js000644 000765 000024 00000000733 14042362132 021375 0ustar00tangentstaff000000 000000 var searchData= [ ['hour_146',['hour',['../classmysqlpp_1_1DateTime.html#aa6d6bfc01854db049ae8e8a72458522e',1,'mysqlpp::DateTime::hour() const'],['../classmysqlpp_1_1DateTime.html#af7105e63694a4c5fea2e6d7caeb94437',1,'mysqlpp::DateTime::hour(unsigned char h)'],['../classmysqlpp_1_1Time.html#a0c034640c2ab604be113d2bff99bbc55',1,'mysqlpp::Time::hour() const'],['../classmysqlpp_1_1Time.html#aa84fbbeca4515a70beb227937fb0aa82',1,'mysqlpp::Time::hour(unsigned char h)']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_10.js000644 000765 000024 00000006661 14042362132 022715 0ustar00tangentstaff000000 000000 var searchData= [ ['raw_867',['raw',['../classmysqlpp_1_1RefCountedPointer.html#a26757f1138dded33faeb1978004d0639',1,'mysqlpp::RefCountedPointer::raw()'],['../classmysqlpp_1_1RefCountedPointer.html#aca68d9c999240bd05e992b15fa38fef9',1,'mysqlpp::RefCountedPointer::raw() const']]], ['rbegin_868',['rbegin',['../classmysqlpp_1_1Row.html#a0f1b98296a92411e93a06caae0166b79',1,'mysqlpp::Row']]], ['refcountedpointer_869',['RefCountedPointer',['../classmysqlpp_1_1RefCountedPointer.html#a02aa2860b0644b6333cee8f321477fee',1,'mysqlpp::RefCountedPointer::RefCountedPointer()'],['../classmysqlpp_1_1RefCountedPointer.html#a586313b144a88e487d77adf7d64bd3bb',1,'mysqlpp::RefCountedPointer::RefCountedPointer(T *c)'],['../classmysqlpp_1_1RefCountedPointer.html#ae25ec10685c0c1ae2c7afa6bd72f483c',1,'mysqlpp::RefCountedPointer::RefCountedPointer(const ThisType &other)']]], ['refresh_870',['refresh',['../classmysqlpp_1_1DBDriver.html#af106eca9a1a1b64a9823467df564e53f',1,'mysqlpp::DBDriver']]], ['release_871',['release',['../classmysqlpp_1_1ConnectionPool.html#ac51a7a63ce4d8825c3f7b05f4b8bfe68',1,'mysqlpp::ConnectionPool']]], ['remove_872',['remove',['../classmysqlpp_1_1ConnectionPool.html#aae75febe979da2d4a3335c46438f3d33',1,'mysqlpp::ConnectionPool']]], ['rend_873',['rend',['../classmysqlpp_1_1Row.html#afe1a524f6da1ac4ca30955fe12de5243',1,'mysqlpp::Row']]], ['replace_874',['replace',['../classmysqlpp_1_1Query.html#aa2d5b5aa23b96c600c157718e4ac60b4',1,'mysqlpp::Query::replace(const T &v)'],['../classmysqlpp_1_1Query.html#ab4359a9dbd99e93ded73d5df5cd244ba',1,'mysqlpp::Query::replace(Iter first, Iter last)']]], ['replacefrom_875',['replacefrom',['../classmysqlpp_1_1Query.html#a7ff065d1b18f3c6141ef57ce9d542837',1,'mysqlpp::Query']]], ['reset_876',['reset',['../classmysqlpp_1_1Query.html#af12740e420c1d61b1d9c2995459a3ce0',1,'mysqlpp::Query']]], ['result_5fempty_877',['result_empty',['../classmysqlpp_1_1DBDriver.html#af56834aa1357f86141b9cdcccf4ff4ce',1,'mysqlpp::DBDriver::result_empty()'],['../classmysqlpp_1_1Query.html#ab02c4ab2f46159d9d45bfd2bbe57e2b4',1,'mysqlpp::Query::result_empty()']]], ['resultbase_878',['ResultBase',['../classmysqlpp_1_1ResultBase.html#a13f306c66abb2a9793b02e5db0105093',1,'mysqlpp::ResultBase::ResultBase()'],['../classmysqlpp_1_1ResultBase.html#ade911ef2b108a18ebbcfaf43fdc7e7d8',1,'mysqlpp::ResultBase::ResultBase(MYSQL_RES *result, DBDriver *dbd, bool te=true)'],['../classmysqlpp_1_1ResultBase.html#ab1e56ed72be6dc439eab03fccec9ce70',1,'mysqlpp::ResultBase::ResultBase(const ResultBase &other)']]], ['rollback_879',['rollback',['../classmysqlpp_1_1Transaction.html#a000e4f0882139eb8470f7472ca14a24e',1,'mysqlpp::Transaction::rollback()'],['../classmysqlpp_1_1NoTransaction.html#a1494ffb3d3b2f6b8d2990cd934fecb6a',1,'mysqlpp::NoTransaction::rollback()']]], ['row_880',['Row',['../classmysqlpp_1_1Row.html#a84e860a824a854c9e2eaa46092be193d',1,'mysqlpp::Row::Row()'],['../classmysqlpp_1_1Row.html#a3f99608cac738cbff8603c4ebb331f7a',1,'mysqlpp::Row::Row(const Row &r)'],['../classmysqlpp_1_1Row.html#ade70a7328179bc45610a624ec1b1bd2d',1,'mysqlpp::Row::Row(MYSQL_ROW row, const ResultBase *res, const unsigned long *lengths, bool te=true)']]], ['rows_881',['rows',['../classmysqlpp_1_1SimpleResult.html#afb7d866e050865bc461eb98788329a47',1,'mysqlpp::SimpleResult']]], ['run_5fmode_882',['run_mode',['../classmysqlpp_1_1examples_1_1CommandLine.html#aabac5f3110f7533834fd0cd32bffa8d2',1,'mysqlpp::examples::CommandLine']]] ]; mysql++-3.3.0/doc/html/refman/search/variables_b.html000644 000765 000024 00000002653 14042362132 023203 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/variables_9.html000644 000765 000024 00000002653 14042362132 023132 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_8.js000644 000765 000024 00000000234 14042362132 021724 0ustar00tangentstaff000000 000000 var searchData= [ ['noexceptions_2eh_632',['noexceptions.h',['../noexceptions_8h.html',1,'']]], ['null_2eh_633',['null.h',['../null_8h.html',1,'']]] ]; mysql++-3.3.0/doc/html/refman/search/classes_0.html000644 000765 000024 00000002651 14042362132 022604 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/variables_a.js000644 000765 000024 00000000236 14042362132 022645 0ustar00tangentstaff000000 000000 var searchData= [ ['option_1011',['option',['../structmysqlpp_1_1SQLParseElement.html#a99ca4660111774c7bdfc5d0a142d9f00',1,'mysqlpp::SQLParseElement']]] ]; mysql++-3.3.0/doc/html/refman/search/search.css000644 000765 000024 00000010543 14042362132 022020 0ustar00tangentstaff000000 000000 /*---------------- Search Box */ #MSearchBox { white-space : nowrap; background: white; border-radius: 0.65em; box-shadow: inset 0.5px 0.5px 3px 0px #555; z-index: 102; } #MSearchBox .left { display: inline-block; vertical-align: middle; height: 1.4em; } #MSearchSelect { display: inline-block; vertical-align: middle; height: 1.4em; padding: 0 0 0 0.3em; margin: 0; } #MSearchField { display: inline-block; vertical-align: middle; width: 7.5em; height: 1.1em; margin: 0 0.15em; padding: 0; line-height: 1em; border:none; color: #909090; outline: none; font-family: Arial, Verdana, sans-serif; -webkit-border-radius: 0px; border-radius: 0px; background: none; } #MSearchBox .right { display: inline-block; vertical-align: middle; width: 1.4em; height: 1.4em; } #MSearchClose { display: none; font-size: inherit; background : none; border: none; margin: 0; padding: 0; outline: none; } #MSearchCloseImg { height: 1.4em; padding: 0.3em; margin: 0; } .MSearchBoxActive #MSearchField { color: #000000; } #main-menu > li:last-child { /* This
  • object is the parent of the search bar */ display: flex; justify-content: center; align-items: center; height: 36px; margin-right: 1em; } /*---------------- Search filter selection */ #MSearchSelectWindow { display: none; position: absolute; left: 0; top: 0; border: 1px solid #90A5CE; background-color: #F9FAFC; z-index: 10001; padding-top: 4px; padding-bottom: 4px; -moz-border-radius: 4px; -webkit-border-top-left-radius: 4px; -webkit-border-top-right-radius: 4px; -webkit-border-bottom-left-radius: 4px; -webkit-border-bottom-right-radius: 4px; -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); } .SelectItem { font: 8pt Arial, Verdana, sans-serif; padding-left: 2px; padding-right: 12px; border: 0px; } span.SelectionMark { margin-right: 4px; font-family: monospace; outline-style: none; text-decoration: none; } a.SelectItem { display: block; outline-style: none; color: #000000; text-decoration: none; padding-left: 6px; padding-right: 12px; } a.SelectItem:focus, a.SelectItem:active { color: #000000; outline-style: none; text-decoration: none; } a.SelectItem:hover { color: #FFFFFF; background-color: #3D578C; outline-style: none; text-decoration: none; cursor: pointer; display: block; } /*---------------- Search results window */ iframe#MSearchResults { width: 60ex; height: 15em; } #MSearchResultsWindow { display: none; position: absolute; left: 0; top: 0; border: 1px solid #000; background-color: #EEF1F7; z-index:10000; } /* ----------------------------------- */ #SRIndex { clear:both; padding-bottom: 15px; } .SREntry { font-size: 10pt; padding-left: 1ex; } .SRPage .SREntry { font-size: 8pt; padding: 1px 5px; } body.SRPage { margin: 5px 2px; } .SRChildren { padding-left: 3ex; padding-bottom: .5em } .SRPage .SRChildren { display: none; } .SRSymbol { font-weight: bold; color: #425E97; font-family: Arial, Verdana, sans-serif; text-decoration: none; outline: none; } a.SRScope { display: block; color: #425E97; font-family: Arial, Verdana, sans-serif; text-decoration: none; outline: none; } a.SRSymbol:focus, a.SRSymbol:active, a.SRScope:focus, a.SRScope:active { text-decoration: underline; } span.SRScope { padding-left: 4px; font-family: Arial, Verdana, sans-serif; } .SRPage .SRStatus { padding: 2px 5px; font-size: 8pt; font-style: italic; font-family: Arial, Verdana, sans-serif; } .SRResult { display: none; } div.searchresults { margin-left: 10px; margin-right: 10px; } /*---------------- External search page results */ .searchresult { background-color: #F0F3F8; } .pages b { color: white; padding: 5px 5px 3px 5px; background-image: url("../tab_a.png"); background-repeat: repeat-x; text-shadow: 0 1px 1px #000000; } .pages { line-height: 17px; margin-left: 4px; text-decoration: none; } .hl { font-weight: bold; } #searchresults { margin-bottom: 20px; } .searchpages { margin-top: 10px; } mysql++-3.3.0/doc/html/refman/search/all_5.html000644 000765 000024 00000002645 14042362132 021727 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/functions_e.js000644 000765 000024 00000004543 14042362132 022716 0ustar00tangentstaff000000 000000 var searchData= [ ['parse_852',['parse',['../classmysqlpp_1_1Query.html#a5bfc86346581917cb833ed55ccd4d5b8',1,'mysqlpp::Query']]], ['parse_5faddress_853',['parse_address',['../classmysqlpp_1_1TCPConnection.html#a5726d3cf9dbd843686dcee1fe0899595',1,'mysqlpp::TCPConnection']]], ['parse_5ferror_854',['parse_error',['../classmysqlpp_1_1CommandLineBase.html#a59476f73810f50528f0c6cc681ab998c',1,'mysqlpp::CommandLineBase']]], ['parse_5fipc_5fmethod_855',['parse_ipc_method',['../classmysqlpp_1_1Connection.html#ad9724a5edab5db2c7a71fdccfe124cb5',1,'mysqlpp::Connection']]], ['parse_5fnext_856',['parse_next',['../classmysqlpp_1_1CommandLineBase.html#af8c430749d38637982a596e0e8efb670',1,'mysqlpp::CommandLineBase']]], ['pass_857',['pass',['../classmysqlpp_1_1examples_1_1CommandLine.html#ab3b029171c383d60eeeff0110aef20ab',1,'mysqlpp::examples::CommandLine::pass()'],['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#a2caf4aaabc2974e4356562fa0a13864c',1,'mysqlpp::ssqlsxlat::CommandLine::pass()']]], ['ping_858',['ping',['../classmysqlpp_1_1Connection.html#ac1dbc411f7ab1debbabe241561fe4091',1,'mysqlpp::Connection::ping()'],['../classmysqlpp_1_1DBDriver.html#afb313dbd435e6cef84e00e5e803e458d',1,'mysqlpp::DBDriver::ping()']]], ['primary_5fkey_859',['primary_key',['../classmysqlpp_1_1Field.html#a27be919503aa4110a03e5dade6f574dc',1,'mysqlpp::Field']]], ['print_5fusage_860',['print_usage',['../classmysqlpp_1_1CommandLineBase.html#a5d620f5e364c55c813254aad693b08ec',1,'mysqlpp::CommandLineBase::print_usage()'],['../classmysqlpp_1_1examples_1_1CommandLine.html#a50cb9ca32084ad1d3877f27811977b13',1,'mysqlpp::examples::CommandLine::print_usage() const'],['../classmysqlpp_1_1examples_1_1CommandLine.html#a324c89f3b9bc149636d0e64f84322fa3',1,'mysqlpp::examples::CommandLine::print_usage(const char *extra) const'],['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#a9f55ef46605f00fe670ef77595b91c17',1,'mysqlpp::ssqlsxlat::CommandLine::print_usage()']]], ['program_5fname_861',['program_name',['../classmysqlpp_1_1CommandLineBase.html#ae938c52719facf6b323d769178726d56',1,'mysqlpp::CommandLineBase']]], ['protocol_5fversion_862',['protocol_version',['../classmysqlpp_1_1Connection.html#a4f5e8249ddaeeaeb94e01ae71f4181f0',1,'mysqlpp::Connection::protocol_version()'],['../classmysqlpp_1_1DBDriver.html#a7346a9f2e25376cc54e2fee3c8f41834',1,'mysqlpp::DBDriver::protocol_version()']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_7.html000644 000765 000024 00000002653 14042362132 023170 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/functions_16.html000644 000765 000024 00000002654 14042362132 023251 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/related_0.html000644 000765 000024 00000002651 14042362132 022567 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/classes_1.js000644 000765 000024 00000001365 14042362132 022256 0ustar00tangentstaff000000 000000 var searchData= [ ['badconversion_511',['BadConversion',['../classmysqlpp_1_1BadConversion.html',1,'mysqlpp']]], ['badfieldname_512',['BadFieldName',['../classmysqlpp_1_1BadFieldName.html',1,'mysqlpp']]], ['badindex_513',['BadIndex',['../classmysqlpp_1_1BadIndex.html',1,'mysqlpp']]], ['badinsertpolicy_514',['BadInsertPolicy',['../classmysqlpp_1_1BadInsertPolicy.html',1,'mysqlpp']]], ['badoption_515',['BadOption',['../classmysqlpp_1_1BadOption.html',1,'mysqlpp']]], ['badparamcount_516',['BadParamCount',['../classmysqlpp_1_1BadParamCount.html',1,'mysqlpp']]], ['badquery_517',['BadQuery',['../classmysqlpp_1_1BadQuery.html',1,'mysqlpp']]], ['beecryptmutex_518',['BeecryptMutex',['../classmysqlpp_1_1BeecryptMutex.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/files_d.js000644 000765 000024 00000000513 14042362132 022000 0ustar00tangentstaff000000 000000 var searchData= [ ['tcp_5fconnection_2eh_646',['tcp_connection.h',['../tcp__connection_8h.html',1,'']]], ['tiny_5fint_2eh_647',['tiny_int.h',['../tiny__int_8h.html',1,'']]], ['transaction_2eh_648',['transaction.h',['../transaction_8h.html',1,'']]], ['type_5finfo_2eh_649',['type_info.h',['../type__info_8h.html',1,'']]] ]; mysql++-3.3.0/doc/html/refman/search/files_7.html000644 000765 000024 00000002647 14042362132 022265 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/all_e.html000644 000765 000024 00000002645 14042362132 022007 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/all_17.js000644 000765 000024 00000000214 14042362132 021450 0ustar00tangentstaff000000 000000 var searchData= [ ['zerofill_480',['zerofill',['../classmysqlpp_1_1Field.html#ad68319625f0c81b2b246bb5cc6c09064',1,'mysqlpp::Field']]] ]; mysql++-3.3.0/doc/html/refman/search/enumvalues_4.html000644 000765 000024 00000002654 14042362132 023342 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/typedefs_7.js000644 000765 000024 00000000356 14042362132 022451 0ustar00tangentstaff000000 000000 var searchData= [ ['optionlist_1030',['OptionList',['../options_8h.html#a42aca90e097537c93980365712a534fe',1,'mysqlpp']]], ['optionlistit_1031',['OptionListIt',['../options_8h.html#a679d140d3eb1e59e4513af4b639c63b2',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/enumvalues_2.js000644 000765 000024 00000000266 14042362132 023005 0ustar00tangentstaff000000 000000 var searchData= [ ['global_1058',['global',['../classmysqlpp_1_1Transaction.html#a933f0528d41cea97732d9e70e232612ca707b5ddb102ba887030eb7f15acfe80e',1,'mysqlpp::Transaction']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_9.js000644 000765 000024 00000000373 14042362132 022637 0ustar00tangentstaff000000 000000 var searchData= [ ['kill_766',['kill',['../classmysqlpp_1_1Connection.html#a8d934ece7ac0fdc7341022f7af75225f',1,'mysqlpp::Connection::kill()'],['../classmysqlpp_1_1DBDriver.html#abef4b00d04388bd13a410e378b06950a',1,'mysqlpp::DBDriver::kill()']]] ]; mysql++-3.3.0/doc/html/refman/search/classes_10.html000644 000765 000024 00000002652 14042362132 022666 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/typedefs_6.html000644 000765 000024 00000002652 14042362132 023001 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/variables_2.html000644 000765 000024 00000002653 14042362132 023123 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/classes_f.js000644 000765 000024 00000001041 14042362132 022332 0ustar00tangentstaff000000 000000 var searchData= [ ['tcpconnection_597',['TCPConnection',['../classmysqlpp_1_1TCPConnection.html',1,'mysqlpp']]], ['time_598',['Time',['../classmysqlpp_1_1Time.html',1,'mysqlpp']]], ['tiny_5fint_599',['tiny_int',['../classmysqlpp_1_1tiny__int.html',1,'mysqlpp']]], ['tooold_600',['TooOld',['../classmysqlpp_1_1TooOld.html',1,'mysqlpp']]], ['transaction_601',['Transaction',['../classmysqlpp_1_1Transaction.html',1,'mysqlpp']]], ['typelookupfailed_602',['TypeLookupFailed',['../classmysqlpp_1_1TypeLookupFailed.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/enums_4.html000644 000765 000024 00000002647 14042362132 022307 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_3.js000644 000765 000024 00000000234 14042362132 021717 0ustar00tangentstaff000000 000000 var searchData= [ ['datetime_2eh_621',['datetime.h',['../datetime_8h.html',1,'']]], ['dbdriver_2eh_622',['dbdriver.h',['../dbdriver_8h.html',1,'']]] ]; mysql++-3.3.0/doc/html/refman/search/defines_0.html000644 000765 000024 00000002651 14042362132 022564 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/classes_5.js000644 000765 000024 00000000564 14042362132 022262 0ustar00tangentstaff000000 000000 var searchData= [ ['field_538',['Field',['../classmysqlpp_1_1Field.html',1,'mysqlpp']]], ['fieldnames_539',['FieldNames',['../classmysqlpp_1_1FieldNames.html',1,'mysqlpp']]], ['fieldtypes_540',['FieldTypes',['../classmysqlpp_1_1FieldTypes.html',1,'mysqlpp']]], ['foundrowsoption_541',['FoundRowsOption',['../classmysqlpp_1_1FoundRowsOption.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_11.html000644 000765 000024 00000002654 14042362132 023244 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/functions_0.html000644 000765 000024 00000002653 14042362132 023161 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/all_8.js000644 000765 000024 00000010263 14042362132 021375 0ustar00tangentstaff000000 000000 var searchData= [ ['id_147',['id',['../classmysqlpp_1_1mysql__type__info.html#a1aade3eab85d7a1d33560051bcd4103f',1,'mysqlpp::mysql_type_info']]], ['ignore_148',['ignore',['../manip_8h.html#aecf53d5cc6a2962626f69dd69e45845fa2a90c97a62d76da373d485b2abf3b02a',1,'mysqlpp']]], ['ignore_5ftype0_149',['ignore_type0',['../manip_8h.html#aecf53d5cc6a2962626f69dd69e45845f',1,'mysqlpp']]], ['ignorespaceoption_150',['IgnoreSpaceOption',['../classmysqlpp_1_1IgnoreSpaceOption.html',1,'mysqlpp']]], ['info_151',['info',['../classmysqlpp_1_1Query.html#afecef4fce9f76f19ee82ad5a4bece19f',1,'mysqlpp::Query::info()'],['../classmysqlpp_1_1SimpleResult.html#ae91ea00493caa2d1c831b0409d76eaa7',1,'mysqlpp::SimpleResult::info()']]], ['initcommandoption_152',['InitCommandOption',['../classmysqlpp_1_1InitCommandOption.html',1,'mysqlpp']]], ['input_153',['input',['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#aa769d1e3237bd2e338aa3e67bccf1c6c',1,'mysqlpp::ssqlsxlat::CommandLine']]], ['input_5fsource_154',['input_source',['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#af579952bd2620bbc30921a1a6c5e89cb',1,'mysqlpp::ssqlsxlat::CommandLine']]], ['insert_155',['insert',['../classmysqlpp_1_1Query.html#aa91bbb80705fce681f30f32c6df4c0c2',1,'mysqlpp::Query::insert(const T &v)'],['../classmysqlpp_1_1Query.html#a27b148136e317f91aee3a43b3d7b2250',1,'mysqlpp::Query::insert(Iter first, Iter last)']]], ['insert_5fid_156',['insert_id',['../classmysqlpp_1_1DBDriver.html#a685cd87d9f8c96e97859277882363b8e',1,'mysqlpp::DBDriver::insert_id()'],['../classmysqlpp_1_1Query.html#aa15198c894157a099154be69201b5baf',1,'mysqlpp::Query::insert_id()'],['../classmysqlpp_1_1SimpleResult.html#a1d24b9951f55474eaacf0e3c84ed76ce',1,'mysqlpp::SimpleResult::insert_id()']]], ['insertfrom_157',['insertfrom',['../classmysqlpp_1_1Query.html#a9084d8e752601d5663ab145be02ef224',1,'mysqlpp::Query']]], ['insertpolicy_2eh_158',['insertpolicy.h',['../insertpolicy_8h.html',1,'']]], ['integeroption_159',['IntegerOption',['../options_8h.html#ad85ecc5f33b8cc440fec324f0a638e3a',1,'mysqlpp']]], ['interactiveoption_160',['InteractiveOption',['../classmysqlpp_1_1InteractiveOption.html',1,'mysqlpp']]], ['ipc_5finfo_161',['ipc_info',['../classmysqlpp_1_1DBDriver.html#aa69862fc8ab2ddfc3169b0af7c3ccd47',1,'mysqlpp::DBDriver::ipc_info()'],['../classmysqlpp_1_1Connection.html#acdd753570fdc8239f0aa1f3160673272',1,'mysqlpp::Connection::ipc_info()']]], ['is_5fnow_162',['is_now',['../classmysqlpp_1_1DateTime.html#a9fcd836831e496776b9d88af79a4cc3c',1,'mysqlpp::DateTime']]], ['is_5fnull_163',['is_null',['../classmysqlpp_1_1Null.html#a2ce81045c6da00302bb3c998527aab7b',1,'mysqlpp::Null::is_null()'],['../classmysqlpp_1_1String.html#a79cfd0846cb9c83720d996ec1c601c65',1,'mysqlpp::String::is_null()'],['../classmysqlpp_1_1SQLBuffer.html#a6ec652ab02b2c2499ac66a71da0e19da',1,'mysqlpp::SQLBuffer::is_null()'],['../classmysqlpp_1_1SQLTypeAdapter.html#a472f39d0fc89cdb70ba142ce2f96c4f0',1,'mysqlpp::SQLTypeAdapter::is_null() const']]], ['is_5fprocessed_164',['is_processed',['../classmysqlpp_1_1SQLTypeAdapter.html#ad49fe33d0dcf377f3c76c2102a0ad133',1,'mysqlpp::SQLTypeAdapter']]], ['is_5fsocket_165',['is_socket',['../classmysqlpp_1_1UnixDomainSocketConnection.html#abd3442d91e12853169a32d14a5e87e58',1,'mysqlpp::UnixDomainSocketConnection']]], ['is_5fstring_166',['is_string',['../classmysqlpp_1_1SQLBuffer.html#ab077d486f1a873ca0bc2c0e0596e8ca7',1,'mysqlpp::SQLBuffer']]], ['is_5fwnp_167',['is_wnp',['../classmysqlpp_1_1WindowsNamedPipeConnection.html#ad514b534112ad0477325af6ff4c41080',1,'mysqlpp::WindowsNamedPipeConnection']]], ['isolationlevel_168',['IsolationLevel',['../classmysqlpp_1_1Transaction.html#a91d16b4539a969fb632ee672999cdd1f',1,'mysqlpp::Transaction']]], ['isolationscope_169',['IsolationScope',['../classmysqlpp_1_1Transaction.html#a933f0528d41cea97732d9e70e232612c',1,'mysqlpp::Transaction']]], ['it_5fis_5fnull_170',['it_is_null',['../classmysqlpp_1_1String.html#ac73442369274b0a9425061b8e0cc139f',1,'mysqlpp::String']]], ['iterator_171',['iterator',['../classmysqlpp_1_1String.html#ac9a55310c5344694df502667a432cc3d',1,'mysqlpp::String::iterator()'],['../classmysqlpp_1_1Row.html#a10071b9d17ad3b84ec7cdf9bdc6704ac',1,'mysqlpp::Row::iterator()']]] ]; mysql++-3.3.0/doc/html/refman/search/typedefs_3.js000644 000765 000024 00000000231 14042362132 022435 0ustar00tangentstaff000000 000000 var searchData= [ ['difference_5ftype_1025',['difference_type',['../classmysqlpp_1_1Row.html#a52ab7eb9a848c022ea543f7d619fd337',1,'mysqlpp::Row']]] ]; mysql++-3.3.0/doc/html/refman/search/all_13.js000644 000765 000024 00000006304 14042362132 021452 0ustar00tangentstaff000000 000000 var searchData= [ ['uds_5fconnection_2eh_455',['uds_connection.h',['../uds__connection_8h.html',1,'']]], ['unique_5fkey_456',['unique_key',['../classmysqlpp_1_1Field.html#acac67cc1a4d189e1b6a1db016bf5c586',1,'mysqlpp::Field']]], ['unixdomainsocketconnection_457',['UnixDomainSocketConnection',['../classmysqlpp_1_1UnixDomainSocketConnection.html',1,'mysqlpp::UnixDomainSocketConnection'],['../classmysqlpp_1_1UnixDomainSocketConnection.html#a5d8de74a7214d9e45c5c39684e2170c2',1,'mysqlpp::UnixDomainSocketConnection::UnixDomainSocketConnection()'],['../classmysqlpp_1_1UnixDomainSocketConnection.html#a11e293c95b248eb610eed67e4fd48d93',1,'mysqlpp::UnixDomainSocketConnection::UnixDomainSocketConnection(const char *path, const char *db=0, const char *user=0, const char *password=0)'],['../classmysqlpp_1_1UnixDomainSocketConnection.html#ac4fcbd1b593330588f656c44b88c4299',1,'mysqlpp::UnixDomainSocketConnection::UnixDomainSocketConnection(const UnixDomainSocketConnection &other)']]], ['unlock_458',['unlock',['../classmysqlpp_1_1BeecryptMutex.html#a9c9dbc827e3777a0310dc7e6253d0998',1,'mysqlpp::BeecryptMutex']]], ['update_459',['update',['../classmysqlpp_1_1Query.html#a64aa3f8489020795552965c70b515428',1,'mysqlpp::Query']]], ['use_460',['use',['../classmysqlpp_1_1Query.html#a8538e92f55a5536bbf7704d27151ed87',1,'mysqlpp::Query::use()'],['../classmysqlpp_1_1Query.html#a66040c8c0071b50b043e8031309f7852',1,'mysqlpp::Query::use(SQLQueryParms &p)'],['../classmysqlpp_1_1Query.html#afe90361bc4f17f78c11857d32538dabe',1,'mysqlpp::Query::use(const SQLTypeAdapter &str)'],['../classmysqlpp_1_1Query.html#ab00af2e285dbb32eb51de17e567d8b00',1,'mysqlpp::Query::use(const char *str, size_t len)']]], ['use_5fresult_461',['use_result',['../classmysqlpp_1_1DBDriver.html#adeb6b2f834cccc051d3b39c8017c1166',1,'mysqlpp::DBDriver']]], ['useembeddedconnectionoption_462',['UseEmbeddedConnectionOption',['../classmysqlpp_1_1UseEmbeddedConnectionOption.html',1,'mysqlpp']]], ['usequeryerror_463',['UseQueryError',['../classmysqlpp_1_1UseQueryError.html',1,'mysqlpp::UseQueryError'],['../classmysqlpp_1_1UseQueryError.html#a8a6b5031294cce3b297edab7a7c9ab03',1,'mysqlpp::UseQueryError::UseQueryError()']]], ['usequeryresult_464',['UseQueryResult',['../classmysqlpp_1_1UseQueryResult.html',1,'mysqlpp::UseQueryResult'],['../classmysqlpp_1_1UseQueryResult.html#a8c4596a5f7b1aab0d4ef6939a67de10c',1,'mysqlpp::UseQueryResult::UseQueryResult()'],['../classmysqlpp_1_1UseQueryResult.html#ae8e54798b2f62788f2741da6d91b69f9',1,'mysqlpp::UseQueryResult::UseQueryResult(MYSQL_RES *result, DBDriver *dbd, bool te=true)'],['../classmysqlpp_1_1UseQueryResult.html#a8a68bb41c82a36c534cd1c128f559cfb',1,'mysqlpp::UseQueryResult::UseQueryResult(const UseQueryResult &other)']]], ['user_465',['user',['../classmysqlpp_1_1examples_1_1CommandLine.html#ad6ed7a4884d859c650718ae9beea6e1b',1,'mysqlpp::examples::CommandLine::user()'],['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#ac8b73e74e579e29a8eaa1748b4d6c428',1,'mysqlpp::ssqlsxlat::CommandLine::user()']]], ['useremoteconnectionoption_466',['UseRemoteConnectionOption',['../classmysqlpp_1_1UseRemoteConnectionOption.html',1,'mysqlpp']]], ['utility_2eh_467',['utility.h',['../utility_8h.html',1,'']]] ]; mysql++-3.3.0/doc/html/refman/search/all_2.html000644 000765 000024 00000002645 14042362132 021724 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/enumvalues_6.js000644 000765 000024 00000001066 14042362132 023010 0ustar00tangentstaff000000 000000 var searchData= [ ['read_5fcommitted_1067',['read_committed',['../classmysqlpp_1_1Transaction.html#a91d16b4539a969fb632ee672999cdd1fa82065aaf4094dab18b48d8e973d4ef4f',1,'mysqlpp::Transaction']]], ['read_5funcommitted_1068',['read_uncommitted',['../classmysqlpp_1_1Transaction.html#a91d16b4539a969fb632ee672999cdd1fa3932f25965a310d79e396f8f749f3d17',1,'mysqlpp::Transaction']]], ['repeatable_5fread_1069',['repeatable_read',['../classmysqlpp_1_1Transaction.html#a91d16b4539a969fb632ee672999cdd1fa6a5934315b282de9c0f4037297c6f93a',1,'mysqlpp::Transaction']]] ]; mysql++-3.3.0/doc/html/refman/search/variables_9.js000644 000765 000024 00000000733 14042362132 022577 0ustar00tangentstaff000000 000000 var searchData= [ ['names_5f_1007',['names_',['../classmysqlpp_1_1ResultBase.html#a5a3645ffe00fcd51838317fc40f0194a',1,'mysqlpp::ResultBase']]], ['null_1008',['null',['../null_8h.html#a1a8f2c546401c800672ddcc7fc9abd62',1,'mysqlpp']]], ['null_5fstr_1009',['null_str',['../null_8h.html#afe6d3a4c5d24603fa2bde1a36fbc6b86',1,'mysqlpp']]], ['num_1010',['num',['../structmysqlpp_1_1SQLParseElement.html#adad4d34b5d3435cf327382a0cc343323',1,'mysqlpp::SQLParseElement']]] ]; mysql++-3.3.0/doc/html/refman/search/classes_7.html000644 000765 000024 00000002651 14042362132 022613 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/enumvalues_8.html000644 000765 000024 00000002654 14042362132 023346 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/classes_b.js000644 000765 000024 00000000506 14042362132 022333 0ustar00tangentstaff000000 000000 var searchData= [ ['objectnotinitialized_561',['ObjectNotInitialized',['../classmysqlpp_1_1ObjectNotInitialized.html',1,'mysqlpp']]], ['option_562',['Option',['../classmysqlpp_1_1Option.html',1,'mysqlpp']]], ['optionalexceptions_563',['OptionalExceptions',['../classmysqlpp_1_1OptionalExceptions.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/typedefs_a.html000644 000765 000024 00000002652 14042362132 023054 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/variables_e.html000644 000765 000024 00000002653 14042362132 023206 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/all_11.html000644 000765 000024 00000002646 14042362132 022005 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_7.js000644 000765 000024 00000000427 14042362132 021727 0ustar00tangentstaff000000 000000 var searchData= [ ['manip_2eh_628',['manip.h',['../manip_8h.html',1,'']]], ['myset_2eh_629',['myset.h',['../myset_8h.html',1,'']]], ['mysql_2b_2b_2eh_630',['mysql++.h',['../mysql_09_09_8h.html',1,'']]], ['mystring_2eh_631',['mystring.h',['../mystring_8h.html',1,'']]] ]; mysql++-3.3.0/doc/html/refman/search/namespaces_0.html000644 000765 000024 00000002654 14042362132 023271 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/classes_4.js000644 000765 000024 00000000466 14042362132 022262 0ustar00tangentstaff000000 000000 var searchData= [ ['equal_5flist_5fb_535',['equal_list_b',['../structmysqlpp_1_1equal__list__b.html',1,'mysqlpp']]], ['equal_5flist_5fba_536',['equal_list_ba',['../structmysqlpp_1_1equal__list__ba.html',1,'mysqlpp']]], ['exception_537',['Exception',['../classmysqlpp_1_1Exception.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/all_9.js000644 000765 000024 00000000373 14042362132 021377 0ustar00tangentstaff000000 000000 var searchData= [ ['kill_172',['kill',['../classmysqlpp_1_1Connection.html#a8d934ece7ac0fdc7341022f7af75225f',1,'mysqlpp::Connection::kill()'],['../classmysqlpp_1_1DBDriver.html#abef4b00d04388bd13a410e378b06950a',1,'mysqlpp::DBDriver::kill()']]] ]; mysql++-3.3.0/doc/html/refman/search/all_10.html000644 000765 000024 00000002646 14042362132 022004 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/typedefs_2.js000644 000765 000024 00000001056 14042362132 022442 0ustar00tangentstaff000000 000000 var searchData= [ ['const_5fiterator_1022',['const_iterator',['../classmysqlpp_1_1String.html#a9c18cd6c1fb2d3130e80b10ff00550e5',1,'mysqlpp::String::const_iterator()'],['../classmysqlpp_1_1Row.html#a9250253f37f5bf2f07c203e07210f0ee',1,'mysqlpp::Row::const_iterator()']]], ['const_5freference_1023',['const_reference',['../classmysqlpp_1_1Row.html#a6d690acbc14d8f8f19850cd808beaa58',1,'mysqlpp::Row']]], ['const_5freverse_5fiterator_1024',['const_reverse_iterator',['../classmysqlpp_1_1Row.html#a1007cbff287988c53096f3502bbd3d8d',1,'mysqlpp::Row']]] ]; mysql++-3.3.0/doc/html/refman/search/all_12.js000644 000765 000024 00000013644 14042362132 021456 0ustar00tangentstaff000000 000000 var searchData= [ ['table_428',['table',['../classmysqlpp_1_1Field.html#a8a3fdaf1db0c6c7a6f28298eb6badf05',1,'mysqlpp::Field::table()'],['../classmysqlpp_1_1ResultBase.html#ac781c52c6a6724601d0a889363149a38',1,'mysqlpp::ResultBase::table()']]], ['tcp_5fconnection_2eh_429',['tcp_connection.h',['../tcp__connection_8h.html',1,'']]], ['tcpconnection_430',['TCPConnection',['../classmysqlpp_1_1TCPConnection.html',1,'mysqlpp::TCPConnection'],['../classmysqlpp_1_1TCPConnection.html#a75cbc21607ac3f1998e11ea58faad534',1,'mysqlpp::TCPConnection::TCPConnection()'],['../classmysqlpp_1_1TCPConnection.html#a3712f8d8ee8f4521f733d410fb2ab6c8',1,'mysqlpp::TCPConnection::TCPConnection(const char *addr, const char *db=0, const char *user=0, const char *password=0)'],['../classmysqlpp_1_1TCPConnection.html#af19b05063295b93feae5de92caad693c',1,'mysqlpp::TCPConnection::TCPConnection(const TCPConnection &other)']]], ['template_5fdefaults_431',['template_defaults',['../classmysqlpp_1_1Query.html#a622a5b10c49ab798f7f5481ff38a55d1',1,'mysqlpp::Query']]], ['this_5ftransaction_432',['this_transaction',['../classmysqlpp_1_1Transaction.html#a933f0528d41cea97732d9e70e232612caf73085a07470c23fcdf8c9792cf4839d',1,'mysqlpp::Transaction']]], ['this_5ftype_433',['this_type',['../classmysqlpp_1_1tiny__int.html#a9897d070e5985ef9a63b4ac7b0f34bec',1,'mysqlpp::tiny_int']]], ['thistype_434',['ThisType',['../classmysqlpp_1_1RefCountedPointer.html#a745d3cf3d478d70c09474eb8766bae3a',1,'mysqlpp::RefCountedPointer']]], ['thread_5faware_435',['thread_aware',['../classmysqlpp_1_1DBDriver.html#ad186d2b986ab0f1495daf63c3f0a40a0',1,'mysqlpp::DBDriver::thread_aware()'],['../classmysqlpp_1_1Connection.html#a3c2442a1e8f9210b23eb10d3c024d6df',1,'mysqlpp::Connection::thread_aware()']]], ['thread_5fend_436',['thread_end',['../classmysqlpp_1_1DBDriver.html#a8a670435400c145e7c022adbc7a6f739',1,'mysqlpp::DBDriver::thread_end()'],['../classmysqlpp_1_1Connection.html#a63d89963e63c74fe0dcb0eb00a5a8cbd',1,'mysqlpp::Connection::thread_end()']]], ['thread_5fid_437',['thread_id',['../classmysqlpp_1_1DBDriver.html#a9c73ac21eb910ee9a28e41a8dad453bc',1,'mysqlpp::DBDriver::thread_id()'],['../classmysqlpp_1_1Connection.html#a60c43e10eb9db82c075443add56785ce',1,'mysqlpp::Connection::thread_id()']]], ['thread_5fstart_438',['thread_start',['../classmysqlpp_1_1Connection.html#aade1534fea22a5d1e2f315515f23f880',1,'mysqlpp::Connection::thread_start()'],['../classmysqlpp_1_1DBDriver.html#affae19fda3fc1a8b25e9725e9aa41fe7',1,'mysqlpp::DBDriver::thread_start()']]], ['throw_5fexceptions_439',['throw_exceptions',['../classmysqlpp_1_1OptionalExceptions.html#acac3ee271ab36b9f65e6c2110a04ffff',1,'mysqlpp::OptionalExceptions']]], ['time_440',['Time',['../classmysqlpp_1_1Time.html',1,'mysqlpp::Time'],['../classmysqlpp_1_1Time.html#a6b5f0dd2e877e95dd2520d4507d6a657',1,'mysqlpp::Time::Time(const char *str)'],['../classmysqlpp_1_1Time.html#ab22256adcccacf69e092d0d057018c3e',1,'mysqlpp::Time::Time()'],['../classmysqlpp_1_1Time.html#a86338fd97b61c82032d78626b5e71534',1,'mysqlpp::Time::Time(unsigned char h, unsigned char m, unsigned char s)'],['../classmysqlpp_1_1Time.html#a4677463d04af62e7f5e273ef221fed65',1,'mysqlpp::Time::Time(const Time &other)'],['../classmysqlpp_1_1Time.html#acf9cfcb0cd6f5d900658acf8394f5379',1,'mysqlpp::Time::Time(const DateTime &other)'],['../classmysqlpp_1_1Time.html#a96c89e955f11f0aaf21b73ad1ad910f2',1,'mysqlpp::Time::Time(const Str &str)'],['../classmysqlpp_1_1Time.html#a86cd1bb6ce70199907d6853e3e1fe53d',1,'mysqlpp::Time::Time(time_t t)']]], ['timestamp_441',['timestamp',['../classmysqlpp_1_1Field.html#a4508b043ec630a28868f75dba2dcefd5',1,'mysqlpp::Field']]], ['tiny_5fint_442',['tiny_int',['../classmysqlpp_1_1tiny__int.html',1,'mysqlpp::tiny_int< VT >'],['../classmysqlpp_1_1tiny__int.html#a260d365f3716314aaf9f7f4e1b25a2c1',1,'mysqlpp::tiny_int::tiny_int()'],['../classmysqlpp_1_1tiny__int.html#a4b508b1914798beeb778b982655b88c9',1,'mysqlpp::tiny_int::tiny_int(value_type v)']]], ['tiny_5fint_2eh_443',['tiny_int.h',['../tiny__int_8h.html',1,'']]], ['to_5fstring_444',['to_string',['../classmysqlpp_1_1String.html#a5cec60e5c5798929b78c43170167f775',1,'mysqlpp::String']]], ['tooold_445',['TooOld',['../classmysqlpp_1_1TooOld.html',1,'mysqlpp']]], ['transaction_446',['Transaction',['../classmysqlpp_1_1Transaction.html',1,'mysqlpp::Transaction'],['../classmysqlpp_1_1Transaction.html#aa83ef7b66a4c62fbc012f7ce71e6b2a5',1,'mysqlpp::Transaction::Transaction(Connection &conn, IsolationLevel level, IsolationScope scope=this_transaction, bool consistent=false)'],['../classmysqlpp_1_1Transaction.html#a5472100c371746d23311bbd74067c5dc',1,'mysqlpp::Transaction::Transaction(Connection &conn, bool consistent=false)']]], ['transaction_2eh_447',['transaction.h',['../transaction_8h.html',1,'']]], ['trylock_448',['trylock',['../classmysqlpp_1_1BeecryptMutex.html#a8f2ede53abf6ca90e733f139d860999d',1,'mysqlpp::BeecryptMutex']]], ['type_449',['type',['../classmysqlpp_1_1Field.html#ad3c602a453c813c9442af389d1826058',1,'mysqlpp::Field::type()'],['../classmysqlpp_1_1String.html#af131cc4467ce7db60cb06c037ae07b4c',1,'mysqlpp::String::type()'],['../classmysqlpp_1_1SQLBuffer.html#afe48e952d2b7d1cc70984cefe0ea21b7',1,'mysqlpp::SQLBuffer::type()']]], ['type_5fid_450',['type_id',['../classmysqlpp_1_1SQLTypeAdapter.html#ab60274160c2aca7a752a0dd59f8bf27d',1,'mysqlpp::SQLTypeAdapter']]], ['type_5finfo_2eh_451',['type_info.h',['../type__info_8h.html',1,'']]], ['type_5fname_452',['type_name',['../classmysqlpp_1_1BadConversion.html#acd61f67d6bbc2348ce8e3de376a05ef3',1,'mysqlpp::BadConversion']]], ['typelookupfailed_453',['TypeLookupFailed',['../classmysqlpp_1_1TypeLookupFailed.html',1,'mysqlpp::TypeLookupFailed'],['../classmysqlpp_1_1TypeLookupFailed.html#ae4048296649be8771305d11d655ab128',1,'mysqlpp::TypeLookupFailed::TypeLookupFailed()']]], ['types_5f_454',['types_',['../classmysqlpp_1_1ResultBase.html#a60823bb0a547046e1efc68083802194c',1,'mysqlpp::ResultBase']]] ]; mysql++-3.3.0/doc/html/refman/search/enumvalues_7.js000644 000765 000024 00000002156 14042362132 023012 0ustar00tangentstaff000000 000000 var searchData= [ ['serializable_1070',['serializable',['../classmysqlpp_1_1Transaction.html#a91d16b4539a969fb632ee672999cdd1fa6479eabcb53fb2d5b2ade3b254f0fd61',1,'mysqlpp::Transaction']]], ['session_1071',['session',['../classmysqlpp_1_1Transaction.html#a933f0528d41cea97732d9e70e232612caaa607cae58b78192121c1e1e96111298',1,'mysqlpp::Transaction']]], ['ss_5fssqls1_1072',['ss_ssqls1',['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#acff98a36fac151c8f37f7f1d3991773ea0928d94b4ff8acd7282e70ce7026d727',1,'mysqlpp::ssqlsxlat::CommandLine']]], ['ss_5fssqls2_1073',['ss_ssqls2',['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#acff98a36fac151c8f37f7f1d3991773eaa00452941838c0b390c90235716b65db',1,'mysqlpp::ssqlsxlat::CommandLine']]], ['ss_5ftable_1074',['ss_table',['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#acff98a36fac151c8f37f7f1d3991773ea587e5cd81301ac94ae40bf5ab40561dd',1,'mysqlpp::ssqlsxlat::CommandLine']]], ['ss_5funknown_1075',['ss_unknown',['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#acff98a36fac151c8f37f7f1d3991773ea169d93217a5effc5ceb2f6e09357a719',1,'mysqlpp::ssqlsxlat::CommandLine']]] ]; mysql++-3.3.0/doc/html/refman/search/variables_d.html000644 000765 000024 00000002653 14042362132 023205 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/variables_8.js000644 000765 000024 00000000770 14042362132 022577 0ustar00tangentstaff000000 000000 var searchData= [ ['manip_1006',['manip',['../structmysqlpp_1_1equal__list__ba.html#ae80eca8a48261205c78b7f73f1aa8f17',1,'mysqlpp::equal_list_ba::manip()'],['../structmysqlpp_1_1equal__list__b.html#a0519c5d83b6ded32b258ff58d1972e38',1,'mysqlpp::equal_list_b::manip()'],['../structmysqlpp_1_1value__list__ba.html#a88e7f44bdf891147b949faa780a7948b',1,'mysqlpp::value_list_ba::manip()'],['../structmysqlpp_1_1value__list__b.html#af40a0443dfc363c76fa2201ea0bc352c',1,'mysqlpp::value_list_b::manip()']]] ]; mysql++-3.3.0/doc/html/refman/search/files_a.js000644 000765 000024 00000000215 14042362132 021774 0ustar00tangentstaff000000 000000 var searchData= [ ['qparms_2eh_635',['qparms.h',['../qparms_8h.html',1,'']]], ['query_2eh_636',['query.h',['../query_8h.html',1,'']]] ]; mysql++-3.3.0/doc/html/refman/search/classes_6.html000644 000765 000024 00000002651 14042362132 022612 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/classes_c.js000644 000765 000024 00000000135 14042362132 022332 0ustar00tangentstaff000000 000000 var searchData= [ ['query_564',['Query',['../classmysqlpp_1_1Query.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/all_3.html000644 000765 000024 00000002645 14042362132 021725 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_a.html000644 000765 000024 00000002647 14042362132 022337 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/functions_1.html000644 000765 000024 00000002653 14042362132 023162 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_10.html000644 000765 000024 00000002650 14042362132 022331 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/functions_10.html000644 000765 000024 00000002654 14042362132 023243 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_6.js000644 000765 000024 00000000144 14042362132 021722 0ustar00tangentstaff000000 000000 var searchData= [ ['insertpolicy_2eh_627',['insertpolicy.h',['../insertpolicy_8h.html',1,'']]] ]; mysql++-3.3.0/doc/html/refman/search/classes_0.js000644 000765 000024 00000000146 14042362132 022251 0ustar00tangentstaff000000 000000 var searchData= [ ['autoflag_510',['AutoFlag',['../classmysqlpp_1_1AutoFlag.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/files_e.js000644 000765 000024 00000000256 14042362132 022005 0ustar00tangentstaff000000 000000 var searchData= [ ['uds_5fconnection_2eh_650',['uds_connection.h',['../uds__connection_8h.html',1,'']]], ['utility_2eh_651',['utility.h',['../utility_8h.html',1,'']]] ]; mysql++-3.3.0/doc/html/refman/search/enums_5.html000644 000765 000024 00000002647 14042362132 022310 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/all_16.js000644 000765 000024 00000000735 14042362132 021457 0ustar00tangentstaff000000 000000 var searchData= [ ['year_479',['year',['../classmysqlpp_1_1DateTime.html#ad05f2bfc0df3b9940e97349a7eae3951',1,'mysqlpp::DateTime::year() const'],['../classmysqlpp_1_1DateTime.html#af0334cd0302c99eeaab042d03ebbfec3',1,'mysqlpp::DateTime::year(unsigned short y)'],['../classmysqlpp_1_1Date.html#ae3ad93d899600e3d60a34912ce657216',1,'mysqlpp::Date::year() const'],['../classmysqlpp_1_1Date.html#a6c88fea71a585cfbc8de5d7226ad33b9',1,'mysqlpp::Date::year(unsigned short y)']]] ]; mysql++-3.3.0/doc/html/refman/search/variables_3.html000644 000765 000024 00000002653 14042362132 023124 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/typedefs_6.js000644 000765 000024 00000000424 14042362132 022444 0ustar00tangentstaff000000 000000 var searchData= [ ['list_5ftype_1029',['list_type',['../classmysqlpp_1_1StoreQueryResult.html#ac5a4eb33883201e9e8d21d41fecd80d0',1,'mysqlpp::StoreQueryResult::list_type()'],['../classmysqlpp_1_1Row.html#a0b6d7fcda0e98859957a47eb1aef2208',1,'mysqlpp::Row::list_type()']]] ]; mysql++-3.3.0/doc/html/refman/search/classes_11.html000644 000765 000024 00000002652 14042362132 022667 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/typedefs_7.html000644 000765 000024 00000002652 14042362132 023002 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/enumvalues_3.js000644 000765 000024 00000000226 14042362132 023002 0ustar00tangentstaff000000 000000 var searchData= [ ['ignore_1059',['ignore',['../manip_8h.html#aecf53d5cc6a2962626f69dd69e45845fa2a90c97a62d76da373d485b2abf3b02a',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_8.js000644 000765 000024 00000005530 14042362132 022636 0ustar00tangentstaff000000 000000 var searchData= [ ['id_751',['id',['../classmysqlpp_1_1mysql__type__info.html#a1aade3eab85d7a1d33560051bcd4103f',1,'mysqlpp::mysql_type_info']]], ['info_752',['info',['../classmysqlpp_1_1Query.html#afecef4fce9f76f19ee82ad5a4bece19f',1,'mysqlpp::Query::info()'],['../classmysqlpp_1_1SimpleResult.html#ae91ea00493caa2d1c831b0409d76eaa7',1,'mysqlpp::SimpleResult::info()']]], ['input_753',['input',['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#aa769d1e3237bd2e338aa3e67bccf1c6c',1,'mysqlpp::ssqlsxlat::CommandLine']]], ['input_5fsource_754',['input_source',['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#af579952bd2620bbc30921a1a6c5e89cb',1,'mysqlpp::ssqlsxlat::CommandLine']]], ['insert_755',['insert',['../classmysqlpp_1_1Query.html#aa91bbb80705fce681f30f32c6df4c0c2',1,'mysqlpp::Query::insert(const T &v)'],['../classmysqlpp_1_1Query.html#a27b148136e317f91aee3a43b3d7b2250',1,'mysqlpp::Query::insert(Iter first, Iter last)']]], ['insert_5fid_756',['insert_id',['../classmysqlpp_1_1DBDriver.html#a685cd87d9f8c96e97859277882363b8e',1,'mysqlpp::DBDriver::insert_id()'],['../classmysqlpp_1_1Query.html#aa15198c894157a099154be69201b5baf',1,'mysqlpp::Query::insert_id()'],['../classmysqlpp_1_1SimpleResult.html#a1d24b9951f55474eaacf0e3c84ed76ce',1,'mysqlpp::SimpleResult::insert_id()']]], ['insertfrom_757',['insertfrom',['../classmysqlpp_1_1Query.html#a9084d8e752601d5663ab145be02ef224',1,'mysqlpp::Query']]], ['ipc_5finfo_758',['ipc_info',['../classmysqlpp_1_1Connection.html#acdd753570fdc8239f0aa1f3160673272',1,'mysqlpp::Connection::ipc_info()'],['../classmysqlpp_1_1DBDriver.html#aa69862fc8ab2ddfc3169b0af7c3ccd47',1,'mysqlpp::DBDriver::ipc_info()']]], ['is_5fnow_759',['is_now',['../classmysqlpp_1_1DateTime.html#a9fcd836831e496776b9d88af79a4cc3c',1,'mysqlpp::DateTime']]], ['is_5fnull_760',['is_null',['../classmysqlpp_1_1String.html#a79cfd0846cb9c83720d996ec1c601c65',1,'mysqlpp::String::is_null()'],['../classmysqlpp_1_1SQLBuffer.html#a6ec652ab02b2c2499ac66a71da0e19da',1,'mysqlpp::SQLBuffer::is_null()'],['../classmysqlpp_1_1SQLTypeAdapter.html#a472f39d0fc89cdb70ba142ce2f96c4f0',1,'mysqlpp::SQLTypeAdapter::is_null() const']]], ['is_5fprocessed_761',['is_processed',['../classmysqlpp_1_1SQLTypeAdapter.html#ad49fe33d0dcf377f3c76c2102a0ad133',1,'mysqlpp::SQLTypeAdapter']]], ['is_5fsocket_762',['is_socket',['../classmysqlpp_1_1UnixDomainSocketConnection.html#abd3442d91e12853169a32d14a5e87e58',1,'mysqlpp::UnixDomainSocketConnection']]], ['is_5fstring_763',['is_string',['../classmysqlpp_1_1SQLBuffer.html#ab077d486f1a873ca0bc2c0e0596e8ca7',1,'mysqlpp::SQLBuffer']]], ['is_5fwnp_764',['is_wnp',['../classmysqlpp_1_1WindowsNamedPipeConnection.html#ad514b534112ad0477325af6ff4c41080',1,'mysqlpp::WindowsNamedPipeConnection']]], ['it_5fis_5fnull_765',['it_is_null',['../classmysqlpp_1_1String.html#ac73442369274b0a9425061b8e0cc139f',1,'mysqlpp::String']]] ]; mysql++-3.3.0/doc/html/refman/search/classes_a.html000644 000765 000024 00000002651 14042362132 022665 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/enumvalues_5.html000644 000765 000024 00000002654 14042362132 023343 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/all_d.html000644 000765 000024 00000002645 14042362132 022006 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_6.html000644 000765 000024 00000002647 14042362132 022264 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/related_0.js000644 000765 000024 00000000257 14042362132 022237 0ustar00tangentstaff000000 000000 var searchData= [ ['noexceptions_1077',['NoExceptions',['../classmysqlpp_1_1OptionalExceptions.html#ac41c56580e33a404b4f43f38f26bea82',1,'mysqlpp::OptionalExceptions']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_f.html000644 000765 000024 00000002653 14042362132 023247 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_2.js000644 000765 000024 00000000441 14042362132 021716 0ustar00tangentstaff000000 000000 var searchData= [ ['common_2eh_617',['common.h',['../common_8h.html',1,'']]], ['comparable_2eh_618',['comparable.h',['../comparable_8h.html',1,'']]], ['connection_2eh_619',['connection.h',['../connection_8h.html',1,'']]], ['cpool_2eh_620',['cpool.h',['../cpool_8h.html',1,'']]] ]; mysql++-3.3.0/doc/html/refman/search/typedefs_a.js000644 000765 000024 00000000451 14042362132 022517 0ustar00tangentstaff000000 000000 var searchData= [ ['this_5ftype_1038',['this_type',['../classmysqlpp_1_1tiny__int.html#a9897d070e5985ef9a63b4ac7b0f34bec',1,'mysqlpp::tiny_int']]], ['thistype_1039',['ThisType',['../classmysqlpp_1_1RefCountedPointer.html#a745d3cf3d478d70c09474eb8766bae3a',1,'mysqlpp::RefCountedPointer']]] ]; mysql++-3.3.0/doc/html/refman/search/classes_7.js000644 000765 000024 00000000533 14042362132 022260 0ustar00tangentstaff000000 000000 var searchData= [ ['ignorespaceoption_543',['IgnoreSpaceOption',['../classmysqlpp_1_1IgnoreSpaceOption.html',1,'mysqlpp']]], ['initcommandoption_544',['InitCommandOption',['../classmysqlpp_1_1InitCommandOption.html',1,'mysqlpp']]], ['interactiveoption_545',['InteractiveOption',['../classmysqlpp_1_1InteractiveOption.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/enumvalues_4.js000644 000765 000024 00000001314 14042362132 023002 0ustar00tangentstaff000000 000000 var searchData= [ ['nr_5ferror_1060',['nr_error',['../classmysqlpp_1_1DBDriver.html#a0275cada4dbb299404e02bffc113addaa49d5639a52fa99f7c926c0dc4f047eda',1,'mysqlpp::DBDriver']]], ['nr_5flast_5fresult_1061',['nr_last_result',['../classmysqlpp_1_1DBDriver.html#a0275cada4dbb299404e02bffc113addaaea97a245e323d633c3be7fa0f5630cc7',1,'mysqlpp::DBDriver']]], ['nr_5fmore_5fresults_1062',['nr_more_results',['../classmysqlpp_1_1DBDriver.html#a0275cada4dbb299404e02bffc113addaa17d7be6c71fbd797813ef09ae89eb421',1,'mysqlpp::DBDriver']]], ['nr_5fnot_5fsupported_1063',['nr_not_supported',['../classmysqlpp_1_1DBDriver.html#a0275cada4dbb299404e02bffc113addaa7e069992f33f9811026317b5f6f6ebd3',1,'mysqlpp::DBDriver']]] ]; mysql++-3.3.0/doc/html/refman/search/all_11.js000644 000765 000024 00000050222 14042362132 021446 0ustar00tangentstaff000000 000000 var searchData= [ ['safe_5fgrab_362',['safe_grab',['../classmysqlpp_1_1ConnectionPool.html#aac4d50bb5c603efec4b8d7e0a3e8a164',1,'mysqlpp::ConnectionPool']]], ['scopedconnection_363',['ScopedConnection',['../classmysqlpp_1_1ScopedConnection.html',1,'mysqlpp::ScopedConnection'],['../classmysqlpp_1_1ScopedConnection.html#a048b8756b1cd598785a709967894eeae',1,'mysqlpp::ScopedConnection::ScopedConnection()']]], ['scopedconnection_2eh_364',['scopedconnection.h',['../scopedconnection_8h.html',1,'']]], ['scopedlock_365',['ScopedLock',['../classmysqlpp_1_1ScopedLock.html',1,'mysqlpp::ScopedLock'],['../classmysqlpp_1_1ScopedLock.html#a0684decf81a6915e06297ff0fec218e9',1,'mysqlpp::ScopedLock::ScopedLock()']]], ['second_366',['second',['../classmysqlpp_1_1Time.html#af7cd937e307d2df96952b3bf5a606c66',1,'mysqlpp::Time::second(unsigned char s)'],['../classmysqlpp_1_1Time.html#a0d17ee57feaa42fca4d6ab0437ed0e53',1,'mysqlpp::Time::second() const'],['../classmysqlpp_1_1DateTime.html#a3f292485082824144354948114c07bc6',1,'mysqlpp::DateTime::second(unsigned char s)'],['../classmysqlpp_1_1DateTime.html#ae38f73ce817b518ea4d220e8e24b1458',1,'mysqlpp::DateTime::second() const']]], ['secureauthoption_367',['SecureAuthOption',['../classmysqlpp_1_1SecureAuthOption.html',1,'mysqlpp']]], ['select_5fdb_368',['select_db',['../classmysqlpp_1_1DBDriver.html#a9b04fc35e69c50a11fed637f94474918',1,'mysqlpp::DBDriver::select_db()'],['../classmysqlpp_1_1Connection.html#af1bd6c380dea4cf157e4de7295550a0c',1,'mysqlpp::Connection::select_db()']]], ['selftestfailed_369',['SelfTestFailed',['../classmysqlpp_1_1SelfTestFailed.html',1,'mysqlpp::SelfTestFailed'],['../classmysqlpp_1_1SelfTestFailed.html#a6d78379544bdc0ba6a88e493b219b961',1,'mysqlpp::SelfTestFailed::SelfTestFailed()']]], ['serializable_370',['serializable',['../classmysqlpp_1_1Transaction.html#a91d16b4539a969fb632ee672999cdd1fa6479eabcb53fb2d5b2ade3b254f0fd61',1,'mysqlpp::Transaction']]], ['server_371',['server',['../classmysqlpp_1_1examples_1_1CommandLine.html#a16890a1ca1d3a73429499ba246144496',1,'mysqlpp::examples::CommandLine::server()'],['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#a7b01c9596e5389faf5ee245d56ef73ce',1,'mysqlpp::ssqlsxlat::CommandLine::server()']]], ['server_5fstatus_372',['server_status',['../classmysqlpp_1_1DBDriver.html#af101492dc6fccbd2d14b0113fb288d33',1,'mysqlpp::DBDriver::server_status()'],['../classmysqlpp_1_1Connection.html#a63c741b003f7bd9d51434a25290e65c0',1,'mysqlpp::Connection::server_status()']]], ['server_5fversion_373',['server_version',['../classmysqlpp_1_1DBDriver.html#a2a9a4cb1c28f7f865370673b6eb580b6',1,'mysqlpp::DBDriver::server_version()'],['../classmysqlpp_1_1Connection.html#ac437af32250e56136373c3d9e38413d6',1,'mysqlpp::Connection::server_version()']]], ['session_374',['session',['../classmysqlpp_1_1Transaction.html#a933f0528d41cea97732d9e70e232612caaa607cae58b78192121c1e1e96111298',1,'mysqlpp::Transaction']]], ['set_375',['Set',['../classmysqlpp_1_1Set.html',1,'mysqlpp::Set< Container >'],['../classmysqlpp_1_1Set.html#a62dffb5ed205ad680fdc48ae7bed3533',1,'mysqlpp::Set::Set()'],['../classmysqlpp_1_1Set.html#a759edffe120ba1521b100e51617487f7',1,'mysqlpp::Set::Set(const String &str)'],['../classmysqlpp_1_1Set.html#a4ceafc69577666ed1c13799aa6b5e932',1,'mysqlpp::Set::Set(const std::string &str)'],['../classmysqlpp_1_1Set.html#a8bd3055564b6a0094cb6bd48c02f41e8',1,'mysqlpp::Set::Set(const char *str)']]], ['set_376',['set',['../classmysqlpp_1_1SQLQueryParms.html#a2938179f7995d7fb8dbc7afc31e83971',1,'mysqlpp::SQLQueryParms::set()'],['../classmysqlpp_1_1Option.html#ab783846ebf48b7c7319cc045cb0b1828',1,'mysqlpp::Option::set()']]], ['set_5fexceptions_377',['set_exceptions',['../classmysqlpp_1_1OptionalExceptions.html#a5e4f4a7a1526ceaef3308a385bd28a10',1,'mysqlpp::OptionalExceptions']]], ['set_5fnull_378',['set_null',['../classmysqlpp_1_1SQLBuffer.html#a1d7f060aea9c7ccd27c6d7a98c29417b',1,'mysqlpp::SQLBuffer']]], ['set_5foption_379',['set_option',['../classmysqlpp_1_1DBDriver.html#a7d1fc0bbcde9be05152eea9d41ce3cbd',1,'mysqlpp::DBDriver::set_option()'],['../classmysqlpp_1_1Connection.html#a266f69b0e8d9d588e8cc6c5a2a897b87',1,'mysqlpp::Connection::set_option()'],['../classmysqlpp_1_1DBDriver.html#a7e904fea92e008b62dc029a4edc64b14',1,'mysqlpp::DBDriver::set_option(Option *o)'],['../classmysqlpp_1_1DBDriver.html#aabf4611f79504ff607855f478cdda42c',1,'mysqlpp::DBDriver::set_option(mysql_option moption, const void *arg=0)']]], ['set_5foption_5fdefault_380',['set_option_default',['../classmysqlpp_1_1DBDriver.html#aafe09837335dc46b7865c88074a1b614',1,'mysqlpp::DBDriver']]], ['set_5foption_5fimpl_381',['set_option_impl',['../classmysqlpp_1_1DBDriver.html#a8b8c5db0d41c25917e23ba58ef153c00',1,'mysqlpp::DBDriver']]], ['set_5fprocessed_382',['set_processed',['../classmysqlpp_1_1SQLTypeAdapter.html#a2a48fae9511a363de243feaf7892ff53',1,'mysqlpp::SQLTypeAdapter']]], ['set_5ftype_383',['set_type',['../classmysqlpp_1_1Field.html#a78ce1b25eb3c7d32711fb6de22c037c3',1,'mysqlpp::Field']]], ['setcharsetdiroption_384',['SetCharsetDirOption',['../classmysqlpp_1_1SetCharsetDirOption.html',1,'mysqlpp']]], ['setcharsetnameoption_385',['SetCharsetNameOption',['../classmysqlpp_1_1SetCharsetNameOption.html',1,'mysqlpp']]], ['setclientipoption_386',['SetClientIpOption',['../classmysqlpp_1_1SetClientIpOption.html',1,'mysqlpp']]], ['sharedmemorybasenameoption_387',['SharedMemoryBaseNameOption',['../classmysqlpp_1_1SharedMemoryBaseNameOption.html',1,'mysqlpp']]], ['shrink_388',['shrink',['../classmysqlpp_1_1ConnectionPool.html#ac410ed5cb3032aed048fb3a275629654',1,'mysqlpp::ConnectionPool']]], ['shutdown_389',['shutdown',['../classmysqlpp_1_1Connection.html#a8fed0ebc10f72fe591941dc6f64b6f20',1,'mysqlpp::Connection::shutdown()'],['../classmysqlpp_1_1DBDriver.html#adead80da9db0351a439f175ecfc79513',1,'mysqlpp::DBDriver::shutdown()']]], ['simpleresult_390',['SimpleResult',['../classmysqlpp_1_1SimpleResult.html',1,'mysqlpp::SimpleResult'],['../classmysqlpp_1_1SimpleResult.html#af42179309a2de75590514c6014f3cf16',1,'mysqlpp::SimpleResult::SimpleResult()'],['../classmysqlpp_1_1SimpleResult.html#a5247a26c102ec13cc7c89e3c1e3d9051',1,'mysqlpp::SimpleResult::SimpleResult(bool copacetic, ulonglong insert_id, ulonglong rows, const std::string &info)']]], ['size_391',['size',['../classmysqlpp_1_1ConnectionPool.html#a852e802aa80a2e608926760a1d9b4591',1,'mysqlpp::ConnectionPool::size()'],['../classmysqlpp_1_1String.html#a35ba1053c5e756d26202cbf3c23145b4',1,'mysqlpp::String::size()'],['../classmysqlpp_1_1Row.html#a88744fee52c19b1d93466d7ab7c761c3',1,'mysqlpp::Row::size()'],['../classmysqlpp_1_1SQLTypeAdapter.html#a090f501c95476918fdd2efca6f019c72',1,'mysqlpp::SQLTypeAdapter::size() const']]], ['size_5ftype_392',['size_type',['../classmysqlpp_1_1SQLTypeAdapter.html#af79be3979de6990414263493b6da8f4e',1,'mysqlpp::SQLTypeAdapter::size_type()'],['../classmysqlpp_1_1String.html#af5b6729bef9c0a50914a142c361c44b7',1,'mysqlpp::String::size_type()'],['../classmysqlpp_1_1Row.html#a159ba856d15593741d544af536cddccd',1,'mysqlpp::Row::size_type()'],['../classmysqlpp_1_1SQLBuffer.html#a5e789c1879057f4106ee1de6614380a5',1,'mysqlpp::SQLBuffer::size_type()']]], ['sourcesink_393',['SourceSink',['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#acff98a36fac151c8f37f7f1d3991773e',1,'mysqlpp::ssqlsxlat::CommandLine']]], ['sql_5fbuffer_2eh_394',['sql_buffer.h',['../sql__buffer_8h.html',1,'']]], ['sql_5fname_395',['sql_name',['../classmysqlpp_1_1mysql__type__info.html#aef8441941c7c216bfb04e44cbcc65988',1,'mysqlpp::mysql_type_info']]], ['sql_5ftypes_2eh_396',['sql_types.h',['../sql__types_8h.html',1,'']]], ['sqlbuffer_397',['SQLBuffer',['../classmysqlpp_1_1SQLBuffer.html',1,'mysqlpp::SQLBuffer'],['../classmysqlpp_1_1SQLBuffer.html#a4e86b8febc1ab8c889fbd42c3c3dfc49',1,'mysqlpp::SQLBuffer::SQLBuffer(const char *data, size_type length, mysql_type_info type, bool is_null)'],['../classmysqlpp_1_1SQLBuffer.html#affbff8bda67d898d47a4df8498fe61b9',1,'mysqlpp::SQLBuffer::SQLBuffer(const std::string &s, mysql_type_info type, bool is_null)']]], ['sqlparseelement_398',['SQLParseElement',['../structmysqlpp_1_1SQLParseElement.html',1,'mysqlpp::SQLParseElement'],['../structmysqlpp_1_1SQLParseElement.html#a5095f861effa2f1695c3cc29f79f825e',1,'mysqlpp::SQLParseElement::SQLParseElement()']]], ['sqlqueryparms_399',['SQLQueryParms',['../classmysqlpp_1_1SQLQueryParms.html',1,'mysqlpp::SQLQueryParms'],['../classmysqlpp_1_1SQLQueryParms.html#a0796bfe6a2982b8fce758b174e547f5f',1,'mysqlpp::SQLQueryParms::SQLQueryParms(Query *p)'],['../classmysqlpp_1_1SQLQueryParms.html#aab7e6bc3ba59425a174c9d31ab6a3a99',1,'mysqlpp::SQLQueryParms::SQLQueryParms()']]], ['sqlstream_400',['SQLStream',['../classmysqlpp_1_1SQLStream.html',1,'mysqlpp::SQLStream'],['../classmysqlpp_1_1SQLStream.html#ad5c7fbaf7deb94157dcb71f1efe4596b',1,'mysqlpp::SQLStream::SQLStream(Connection *c, const char *pstr=0)'],['../classmysqlpp_1_1SQLStream.html#a0e13aec37b6179e439bf2a9acec87151',1,'mysqlpp::SQLStream::SQLStream(const SQLStream &s)']]], ['sqlstream_2eh_401',['sqlstream.h',['../sqlstream_8h.html',1,'']]], ['sqltypeadapter_402',['SQLTypeAdapter',['../classmysqlpp_1_1SQLTypeAdapter.html',1,'mysqlpp::SQLTypeAdapter'],['../classmysqlpp_1_1SQLTypeAdapter.html#a162ad4a4740b1de8dadbdadaccf6a918',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(tiny_int< unsigned char > i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a4fd2e3fb7cae9affa10ffa8c3b8a18d1',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(int i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a31d688da24be77d02c469dac6df37d9b',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter()'],['../classmysqlpp_1_1SQLTypeAdapter.html#a03e2497ff08c680bef861c770721bb7e',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(const SQLTypeAdapter &other)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a400bb55e95bf590f0acc470b15e9a5d9',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(const String &str, bool processed=false)'],['../classmysqlpp_1_1SQLTypeAdapter.html#aee0af64f24407cdc09a7beb3c05ad498',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(const std::string &str, bool processed=false)'],['../classmysqlpp_1_1SQLTypeAdapter.html#ab07682f02f5075785ea448a395732689',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(const char *str, bool processed=false)'],['../classmysqlpp_1_1SQLTypeAdapter.html#ae0c49d150e21f615cfbbc7edd756900e',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(const char *str, int len, bool processed=false)'],['../classmysqlpp_1_1SQLTypeAdapter.html#acdb7e3614d5c7af0f3e1ee7f597ff94e',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(char c)'],['../classmysqlpp_1_1SQLTypeAdapter.html#aff5116aaa18b17b0e44f33f7cd716869',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(tiny_int< signed char > i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a090ef8382b8f634dc2f4431cb5f06a82',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(short i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a4a30a1e650133ec73539e0b41b19c6eb',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(unsigned short i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a297f5141430325f66f792cbf2b8025f4',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(unsigned i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#aa156c377d40caa9f85c8272187e3ee23',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(long i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a4360e65155a9ea8aa2549fb0e224c41b',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(unsigned long i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#afef5f1b5afaecde206c37b21de7edf33',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(longlong i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#ad375a42a497804bf3354a37422b3bc95',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(ulonglong i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#ac3738e04ac47c8599f8589e49c87bd68',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(float i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a902bcb5c1afabf4e65b51b42957c4fbb',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(double i)'],['../classmysqlpp_1_1SQLTypeAdapter.html#aeb0c72567357857773b04f2843b650a9',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(const Date &d)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a083fd1b8fa62d2fed37dc24da02790c3',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(const DateTime &dt)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a74a3ef39d98fffce5320de180b987d69',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(const Time &t)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a5df707a6b5f40119cb2111c6c1fa2e3e',1,'mysqlpp::SQLTypeAdapter::SQLTypeAdapter(const null_type &i)']]], ['ss_5fssqls1_403',['ss_ssqls1',['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#acff98a36fac151c8f37f7f1d3991773ea0928d94b4ff8acd7282e70ce7026d727',1,'mysqlpp::ssqlsxlat::CommandLine']]], ['ss_5fssqls2_404',['ss_ssqls2',['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#acff98a36fac151c8f37f7f1d3991773eaa00452941838c0b390c90235716b65db',1,'mysqlpp::ssqlsxlat::CommandLine']]], ['ss_5ftable_405',['ss_table',['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#acff98a36fac151c8f37f7f1d3991773ea587e5cd81301ac94ae40bf5ab40561dd',1,'mysqlpp::ssqlsxlat::CommandLine']]], ['ss_5funknown_406',['ss_unknown',['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#acff98a36fac151c8f37f7f1d3991773ea169d93217a5effc5ceb2f6e09357a719',1,'mysqlpp::ssqlsxlat::CommandLine']]], ['ssloption_407',['SslOption',['../classmysqlpp_1_1SslOption.html',1,'mysqlpp::SslOption'],['../classmysqlpp_1_1SslOption.html#a84845e9568b894a8f6059fff47e6908d',1,'mysqlpp::SslOption::SslOption()']]], ['sta_408',['sta',['../classmysqlpp_1_1SQLQueryParms.html#ac637090d1e8981437fcc3277a9983099',1,'mysqlpp::SQLQueryParms']]], ['stadapter_2eh_409',['stadapter.h',['../stadapter_8h.html',1,'']]], ['store_410',['store',['../classmysqlpp_1_1Query.html#a2bcd3c940f936f38bd40396449007d80',1,'mysqlpp::Query::store(SQLQueryParms &p)'],['../classmysqlpp_1_1Query.html#a4531cbffbb15c003ff35c3bbbd3b4397',1,'mysqlpp::Query::store(const SQLTypeAdapter &str)'],['../classmysqlpp_1_1Query.html#a15f991f68505f9a35aed0a03932a1900',1,'mysqlpp::Query::store(const char *str, size_t len)'],['../classmysqlpp_1_1Query.html#a16c800e645429d558f4295065b1aed73',1,'mysqlpp::Query::store()']]], ['store_5fif_411',['store_if',['../classmysqlpp_1_1Query.html#a7a044520c6a19e55ad0fbfa4b52ae237',1,'mysqlpp::Query::store_if(Sequence &con, const SSQLS &ssqls, Function fn)'],['../classmysqlpp_1_1Query.html#ad7c3181bf3e2bc4399a302a60c4a3527',1,'mysqlpp::Query::store_if(Sequence &con, const SQLTypeAdapter &query, Function fn)'],['../classmysqlpp_1_1Query.html#a6d6e8dcd8e1538017c11ac02b2846ce2',1,'mysqlpp::Query::store_if(Sequence &con, Function fn)']]], ['store_5fnext_412',['store_next',['../classmysqlpp_1_1Query.html#a0e22c60aa550675b5e89ab9bbaea7f8e',1,'mysqlpp::Query']]], ['store_5fresult_413',['store_result',['../classmysqlpp_1_1DBDriver.html#a2a5e5817177c96b4cd3fd80a74f8ae80',1,'mysqlpp::DBDriver']]], ['storein_414',['storein',['../classmysqlpp_1_1Query.html#a8ba080b7a2f2cd4086fbb374ae86b6e9',1,'mysqlpp::Query::storein(Container &con)'],['../classmysqlpp_1_1Query.html#a461d17d9db64dd040339cbff070ea02c',1,'mysqlpp::Query::storein(T &con, SQLQueryParms &p)'],['../classmysqlpp_1_1Query.html#ae47fd3e16132af6238b6c6a182fb18f4',1,'mysqlpp::Query::storein(std::vector< T > &con, const SQLTypeAdapter &s)'],['../classmysqlpp_1_1Query.html#a04245f7ef8e01ebbe162674c3daaea73',1,'mysqlpp::Query::storein(std::deque< T > &con, const SQLTypeAdapter &s)'],['../classmysqlpp_1_1Query.html#a8407a8143474046bd147fbd5a322ec98',1,'mysqlpp::Query::storein(std::list< T > &con, const SQLTypeAdapter &s)'],['../classmysqlpp_1_1Query.html#af6fbb8786321102e82bfa5fe681e763f',1,'mysqlpp::Query::storein(std::set< T > &con, const SQLTypeAdapter &s)'],['../classmysqlpp_1_1Query.html#ab98ff9a520fe140f7622994c951b6dff',1,'mysqlpp::Query::storein(std::multiset< T > &con, const SQLTypeAdapter &s)']]], ['storein_5fsequence_415',['storein_sequence',['../classmysqlpp_1_1Query.html#a948387c9f15db2837e7aad557c955424',1,'mysqlpp::Query::storein_sequence(Sequence &con)'],['../classmysqlpp_1_1Query.html#a2fa1ef7235bee641ae4a42a4944fa69c',1,'mysqlpp::Query::storein_sequence(Sequence &con, const SQLTypeAdapter &s)'],['../classmysqlpp_1_1Query.html#a1b378e41e2de26cb0f16ca004c116760',1,'mysqlpp::Query::storein_sequence(Seq &con, SQLQueryParms &p)']]], ['storein_5fset_416',['storein_set',['../classmysqlpp_1_1Query.html#af207b0559f75833bbf38e670dc217978',1,'mysqlpp::Query::storein_set(Set &con, SQLQueryParms &p)'],['../classmysqlpp_1_1Query.html#af82a6e6f875c8d1834ac4e56979969bc',1,'mysqlpp::Query::storein_set(Set &con, const SQLTypeAdapter &s)'],['../classmysqlpp_1_1Query.html#aef7fb34235a244fd3d92e62fc026946f',1,'mysqlpp::Query::storein_set(Set &con)']]], ['storequeryresult_417',['StoreQueryResult',['../classmysqlpp_1_1StoreQueryResult.html',1,'mysqlpp::StoreQueryResult'],['../classmysqlpp_1_1StoreQueryResult.html#a3754c274c83f045bc3772e821c97629b',1,'mysqlpp::StoreQueryResult::StoreQueryResult(const StoreQueryResult &other)'],['../classmysqlpp_1_1StoreQueryResult.html#a0db61dd318b1e02d8c72bbce1fd12f2a',1,'mysqlpp::StoreQueryResult::StoreQueryResult()'],['../classmysqlpp_1_1StoreQueryResult.html#a80f379be1da2a5d35f248bd9f4423c2a',1,'mysqlpp::StoreQueryResult::StoreQueryResult(MYSQL_RES *result, DBDriver *dbd, bool te=true)']]], ['str_418',['str',['../classmysqlpp_1_1DateTime.html#aa44354b972e259afbcc566823d8bce79',1,'mysqlpp::DateTime::str()'],['../classmysqlpp_1_1Date.html#ad5072189a07c97d189883dedd685f8d9',1,'mysqlpp::Date::str()'],['../classmysqlpp_1_1Time.html#a8739509927c26cd9368e10b1f0ef9e7e',1,'mysqlpp::Time::str()'],['../classmysqlpp_1_1Set.html#afe41e306013db20c116ce2ed8aa57cc6',1,'mysqlpp::Set::str()'],['../classmysqlpp_1_1Query.html#a17036cdcf4dd7a747b1ba6ee664da048',1,'mysqlpp::Query::str()'],['../classmysqlpp_1_1Query.html#a7fa8d56bd3d8a1bd3b5403665dbf6c8e',1,'mysqlpp::Query::str(const SQLTypeAdapter &arg0)'],['../classmysqlpp_1_1Query.html#ac93d201c91a7e0b9056e8cac33a38f7d',1,'mysqlpp::Query::str(SQLQueryParms &p)']]], ['str_5fto_5flwr_419',['str_to_lwr',['../namespacemysqlpp_1_1internal.html#ae621e2f49ab790bef36364760608e8d0',1,'mysqlpp::internal::str_to_lwr(std::string &s)'],['../namespacemysqlpp_1_1internal.html#a8f93b8d591a05df71ea786cf53dfafae',1,'mysqlpp::internal::str_to_lwr(std::string &ls, const char *mcs)']]], ['stream2string_420',['stream2string',['../stream2string_8h.html#a6423fad89ee663f09a8c04df1f887ffb',1,'mysqlpp']]], ['stream2string_2eh_421',['stream2string.h',['../stream2string_8h.html',1,'']]], ['string_422',['String',['../classmysqlpp_1_1String.html',1,'mysqlpp::String'],['../classmysqlpp_1_1String.html#ae711df130eb705131bb4121b58114304',1,'mysqlpp::String::String()'],['../classmysqlpp_1_1String.html#a7e81654babcc5d285b3e9f838833bd88',1,'mysqlpp::String::String(const String &other)'],['../classmysqlpp_1_1String.html#af5ff5d5045cbca01c441d2b1b1b02136',1,'mysqlpp::String::String(const char *str, size_type len, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)'],['../classmysqlpp_1_1String.html#af6d39e2ae5aeb13761b80fafcfdcb8a0',1,'mysqlpp::String::String(const std::string &str, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)'],['../classmysqlpp_1_1String.html#afb546bc0f5231627b93c66746a9cd3c0',1,'mysqlpp::String::String(const char *str, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)']]], ['string_5ftype_423',['string_type',['../classmysqlpp_1_1mysql__type__info.html#a18d778e786cf06f63a7222129feed227',1,'mysqlpp::mysql_type_info']]], ['stringoption_424',['StringOption',['../options_8h.html#a307e959b80e992078a2e61c8730a27f8',1,'mysqlpp']]], ['strip_5fleading_5fblanks_425',['strip_leading_blanks',['../classmysqlpp_1_1String.html#adb2d45ea62286c4e491d7d922d66137b',1,'mysqlpp::String']]], ['successful_426',['successful',['../classmysqlpp_1_1CommandLineBase.html#ade5bf9dbcab332246ea2c4f8854071f1',1,'mysqlpp::CommandLineBase']]], ['swap_427',['swap',['../classmysqlpp_1_1RefCountedPointer.html#ac6de38aa306bfe6166384e70bc9dbaef',1,'mysqlpp::RefCountedPointer::swap()'],['../result_8h.html#ab206305738ebbb201551ffa08dfebf05',1,'mysqlpp::swap(StoreQueryResult &x, StoreQueryResult &y)'],['../result_8h.html#a3ce1d7360288ef3d4aab99f4469bcac3',1,'mysqlpp::swap(UseQueryResult &x, UseQueryResult &y)']]] ]; mysql++-3.3.0/doc/html/refman/search/typedefs_1.js000644 000765 000024 00000000205 14042362132 022434 0ustar00tangentstaff000000 000000 var searchData= [ ['booleanoption_1021',['BooleanOption',['../options_8h.html#ac9b8af956539a775787583a269827d4b',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/variables_0.html000644 000765 000024 00000002653 14042362132 023121 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_b.js000644 000765 000024 00000000321 14042362132 021773 0ustar00tangentstaff000000 000000 var searchData= [ ['refcounted_2eh_637',['refcounted.h',['../refcounted_8h.html',1,'']]], ['result_2eh_638',['result.h',['../result_8h.html',1,'']]], ['row_2eh_639',['row.h',['../row_8h.html',1,'']]] ]; mysql++-3.3.0/doc/html/refman/search/classes_12.html000644 000765 000024 00000002652 14042362132 022670 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/typedefs_4.html000644 000765 000024 00000002652 14042362132 022777 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/classes_b.html000644 000765 000024 00000002651 14042362132 022666 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/enumvalues_6.html000644 000765 000024 00000002654 14042362132 023344 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/classes_9.html000644 000765 000024 00000002651 14042362132 022615 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_5.html000644 000765 000024 00000002647 14042362132 022263 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/functions_e.html000644 000765 000024 00000002653 14042362132 023246 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_5.js000644 000765 000024 00000000357 14042362132 021727 0ustar00tangentstaff000000 000000 var searchData= [ ['field_2eh_624',['field.h',['../field_8h.html',1,'']]], ['field_5fnames_2eh_625',['field_names.h',['../field__names_8h.html',1,'']]], ['field_5ftypes_2eh_626',['field_types.h',['../field__types_8h.html',1,'']]] ]; mysql++-3.3.0/doc/html/refman/search/classes_3.js000644 000765 000024 00000000703 14042362132 022253 0ustar00tangentstaff000000 000000 var searchData= [ ['dataoption_530',['DataOption',['../classmysqlpp_1_1DataOption.html',1,'mysqlpp']]], ['date_531',['Date',['../classmysqlpp_1_1Date.html',1,'mysqlpp']]], ['datetime_532',['DateTime',['../classmysqlpp_1_1DateTime.html',1,'mysqlpp']]], ['dbdriver_533',['DBDriver',['../classmysqlpp_1_1DBDriver.html',1,'mysqlpp']]], ['dbselectionfailed_534',['DBSelectionFailed',['../classmysqlpp_1_1DBSelectionFailed.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/all_13.html000644 000765 000024 00000002646 14042362132 022007 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_f.js000644 000765 000024 00000000125 14042362132 022001 0ustar00tangentstaff000000 000000 var searchData= [ ['vallist_2eh_652',['vallist.h',['../vallist_8h.html',1,'']]] ]; mysql++-3.3.0/doc/html/refman/search/enumvalues_0.js000644 000765 000024 00000000240 14042362132 022773 0ustar00tangentstaff000000 000000 var searchData= [ ['do_5fnothing_1052',['do_nothing',['../manip_8h.html#acabd5572224baf2f7c26f89bc082673fae465f6c0ca597e0ab6332883b7b5f00d',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/typedefs_8.html000644 000765 000024 00000002652 14042362132 023003 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/typedefs_5.js000644 000765 000024 00000000553 14042362132 022446 0ustar00tangentstaff000000 000000 var searchData= [ ['integeroption_1027',['IntegerOption',['../options_8h.html#ad85ecc5f33b8cc440fec324f0a638e3a',1,'mysqlpp']]], ['iterator_1028',['iterator',['../classmysqlpp_1_1String.html#ac9a55310c5344694df502667a432cc3d',1,'mysqlpp::String::iterator()'],['../classmysqlpp_1_1Row.html#a10071b9d17ad3b84ec7cdf9bdc6704ac',1,'mysqlpp::Row::iterator()']]] ]; mysql++-3.3.0/doc/html/refman/search/all_15.js000644 000765 000024 00000002477 14042362132 021463 0ustar00tangentstaff000000 000000 var searchData= [ ['what_473',['what',['../classmysqlpp_1_1Exception.html#af59280d82dba0627192a26cdcf53ba96',1,'mysqlpp::Exception']]], ['what_5f_474',['what_',['../classmysqlpp_1_1Exception.html#a9d1f31934daa02fdbedfe419be524191',1,'mysqlpp::Exception']]], ['what_5foption_475',['what_option',['../classmysqlpp_1_1BadOption.html#a7a1be48b23c7148e553110985ec680ff',1,'mysqlpp::BadOption']]], ['windowsnamedpipeconnection_476',['WindowsNamedPipeConnection',['../classmysqlpp_1_1WindowsNamedPipeConnection.html',1,'mysqlpp::WindowsNamedPipeConnection'],['../classmysqlpp_1_1WindowsNamedPipeConnection.html#a8f144565e1f5c82783b923529c791944',1,'mysqlpp::WindowsNamedPipeConnection::WindowsNamedPipeConnection()'],['../classmysqlpp_1_1WindowsNamedPipeConnection.html#aaa7a945b918efe54b095d52a472153fc',1,'mysqlpp::WindowsNamedPipeConnection::WindowsNamedPipeConnection(const char *db, const char *user=0, const char *password=0)'],['../classmysqlpp_1_1WindowsNamedPipeConnection.html#ac9fe1d6a34624327ed811ad9a4e960e6',1,'mysqlpp::WindowsNamedPipeConnection::WindowsNamedPipeConnection(const WindowsNamedPipeConnection &other)']]], ['wnp_5fconnection_2eh_477',['wnp_connection.h',['../wnp__connection_8h.html',1,'']]], ['writetimeoutoption_478',['WriteTimeoutOption',['../classmysqlpp_1_1WriteTimeoutOption.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/classes_5.html000644 000765 000024 00000002651 14042362132 022611 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_9.html000644 000765 000024 00000002647 14042362132 022267 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/defines_0.js000644 000765 000024 00000001022 14042362132 022223 0ustar00tangentstaff000000 000000 var searchData= [ ['mysqlpp_5fheader_5fversion_1078',['MYSQLPP_HEADER_VERSION',['../mysql_09_09_8h.html#aa5519915a48d82e2f6958f059ed41079',1,'mysql++.h']]], ['mysqlpp_5futf8_5fcol_1079',['MYSQLPP_UTF8_COL',['../common_8h.html#a6d000c4cd322dac7cdf8f43acba810cc',1,'common.h']]], ['mysqlpp_5futf8_5fcs_1080',['MYSQLPP_UTF8_CS',['../common_8h.html#a817040871caaaaf21e471a7d76fffa19',1,'common.h']]], ['mysqlpp_5fversion_1081',['MYSQLPP_VERSION',['../mysql_09_09_8h.html#a9e2bea148cfa102c37bad4ec0d79bb3c',1,'mysql++.h']]] ]; mysql++-3.3.0/doc/html/refman/search/all_0.html000644 000765 000024 00000002645 14042362132 021722 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/classes_d.js000644 000765 000024 00000003503 14042362132 022335 0ustar00tangentstaff000000 000000 var searchData= [ ['readdefaultfileoption_565',['ReadDefaultFileOption',['../classmysqlpp_1_1ReadDefaultFileOption.html',1,'mysqlpp']]], ['readdefaultgroupoption_566',['ReadDefaultGroupOption',['../classmysqlpp_1_1ReadDefaultGroupOption.html',1,'mysqlpp']]], ['readtimeoutoption_567',['ReadTimeoutOption',['../classmysqlpp_1_1ReadTimeoutOption.html',1,'mysqlpp']]], ['reconnectoption_568',['ReconnectOption',['../classmysqlpp_1_1ReconnectOption.html',1,'mysqlpp']]], ['refcountedpointer_569',['RefCountedPointer',['../classmysqlpp_1_1RefCountedPointer.html',1,'mysqlpp']]], ['refcountedpointer_3c_20mysql_5fres_20_3e_570',['RefCountedPointer< MYSQL_RES >',['../classmysqlpp_1_1RefCountedPointer.html',1,'mysqlpp']]], ['refcountedpointer_3c_20mysqlpp_3a_3afieldnames_20_3e_571',['RefCountedPointer< mysqlpp::FieldNames >',['../classmysqlpp_1_1RefCountedPointer.html',1,'mysqlpp']]], ['refcountedpointer_3c_20mysqlpp_3a_3afieldtypes_20_3e_572',['RefCountedPointer< mysqlpp::FieldTypes >',['../classmysqlpp_1_1RefCountedPointer.html',1,'mysqlpp']]], ['refcountedpointer_3c_20sqlbuffer_20_3e_573',['RefCountedPointer< SQLBuffer >',['../classmysqlpp_1_1RefCountedPointer.html',1,'mysqlpp']]], ['refcountedpointerdestroyer_574',['RefCountedPointerDestroyer',['../structmysqlpp_1_1RefCountedPointerDestroyer.html',1,'mysqlpp']]], ['refcountedpointerdestroyer_3c_20mysql_5fres_20_3e_575',['RefCountedPointerDestroyer< MYSQL_RES >',['../structmysqlpp_1_1RefCountedPointerDestroyer_3_01MYSQL__RES_01_4.html',1,'mysqlpp']]], ['reportdatatruncationoption_576',['ReportDataTruncationOption',['../classmysqlpp_1_1ReportDataTruncationOption.html',1,'mysqlpp']]], ['resultbase_577',['ResultBase',['../classmysqlpp_1_1ResultBase.html',1,'mysqlpp']]], ['row_578',['Row',['../classmysqlpp_1_1Row.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/files_b.html000644 000765 000024 00000002647 14042362132 022340 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_1.js000644 000765 000024 00000000130 14042362132 021710 0ustar00tangentstaff000000 000000 var searchData= [ ['beemutex_2eh_616',['beemutex.h',['../beemutex_8h.html',1,'']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_2.html000644 000765 000024 00000002653 14042362132 023163 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/typedefs_b.js000644 000765 000024 00000000723 14042362132 022522 0ustar00tangentstaff000000 000000 var searchData= [ ['value_5ftype_1040',['value_type',['../classmysqlpp_1_1String.html#af2ac840e79adca00ed4f3858ed1e1f75',1,'mysqlpp::String::value_type()'],['../classmysqlpp_1_1Null.html#aca01e95f7308d0601463e941857245ac',1,'mysqlpp::Null::value_type()'],['../classmysqlpp_1_1Row.html#a2a23493761130c3e66a4a49bd71b224c',1,'mysqlpp::Row::value_type()'],['../classmysqlpp_1_1tiny__int.html#a41bd9d701b334239937583fcd822982d',1,'mysqlpp::tiny_int::value_type()']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_13.html000644 000765 000024 00000002654 14042362132 023246 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/functions_18.js000644 000765 000024 00000010312 14042362132 022711 0ustar00tangentstaff000000 000000 var searchData= [ ['_7eautoflag_960',['~AutoFlag',['../classmysqlpp_1_1AutoFlag.html#af2d90a6ae3a33bbbf7fa707337010e50',1,'mysqlpp::AutoFlag']]], ['_7ebadconversion_961',['~BadConversion',['../classmysqlpp_1_1BadConversion.html#a37b983a1f5442c96e6e325970cf1bdde',1,'mysqlpp::BadConversion']]], ['_7ebadfieldname_962',['~BadFieldName',['../classmysqlpp_1_1BadFieldName.html#a41a7d1554fb2daddcaccb331f9361e9b',1,'mysqlpp::BadFieldName']]], ['_7ebadindex_963',['~BadIndex',['../classmysqlpp_1_1BadIndex.html#ac50efa62247aa2010a3079d778a67a8e',1,'mysqlpp::BadIndex']]], ['_7ebadparamcount_964',['~BadParamCount',['../classmysqlpp_1_1BadParamCount.html#a34867d29b93976635daac8084869b780',1,'mysqlpp::BadParamCount']]], ['_7ebeecryptmutex_965',['~BeecryptMutex',['../classmysqlpp_1_1BeecryptMutex.html#a8f568cdd9ab9ea3ebebe88db934dd46a',1,'mysqlpp::BeecryptMutex']]], ['_7ecommandlinebase_966',['~CommandLineBase',['../classmysqlpp_1_1CommandLineBase.html#a70bf4aaf7c80497bd36a51d2a31c87cd',1,'mysqlpp::CommandLineBase']]], ['_7ecomparable_967',['~Comparable',['../classmysqlpp_1_1Comparable.html#a04f46aa0ee2ba5e0dcb6e3bd77a22f0f',1,'mysqlpp::Comparable']]], ['_7econnection_968',['~Connection',['../classmysqlpp_1_1Connection.html#a8eda1910b116f1ccdc1a86711ca6f660',1,'mysqlpp::Connection']]], ['_7econnectionpool_969',['~ConnectionPool',['../classmysqlpp_1_1ConnectionPool.html#a2cee954229416e24da07f5e208b35b09',1,'mysqlpp::ConnectionPool']]], ['_7edbdriver_970',['~DBDriver',['../classmysqlpp_1_1DBDriver.html#a0af585eeaa3ab0483449525caa6c2eb3',1,'mysqlpp::DBDriver']]], ['_7eexception_971',['~Exception',['../classmysqlpp_1_1Exception.html#a82b1a9a71b10a4b83cd67905689d700d',1,'mysqlpp::Exception']]], ['_7enoexceptions_972',['~NoExceptions',['../classmysqlpp_1_1NoExceptions.html#aaff5fcc1cd24040c594055773303209f',1,'mysqlpp::NoExceptions']]], ['_7enotransaction_973',['~NoTransaction',['../classmysqlpp_1_1NoTransaction.html#adbfd3f9de75fee1904eb216fb17ea1b2',1,'mysqlpp::NoTransaction']]], ['_7eoption_974',['~Option',['../classmysqlpp_1_1Option.html#acf6f7585df2f41324516e45ad4856899',1,'mysqlpp::Option']]], ['_7eoptionalexceptions_975',['~OptionalExceptions',['../classmysqlpp_1_1OptionalExceptions.html#ae97334b7e5f89c1927c5d277b770db0a',1,'mysqlpp::OptionalExceptions']]], ['_7erefcountedpointer_976',['~RefCountedPointer',['../classmysqlpp_1_1RefCountedPointer.html#a67b7d093310fa6112a45c361c37d5ed3',1,'mysqlpp::RefCountedPointer']]], ['_7eresultbase_977',['~ResultBase',['../classmysqlpp_1_1ResultBase.html#a792b7694b013dee563349544058bec8f',1,'mysqlpp::ResultBase']]], ['_7erow_978',['~Row',['../classmysqlpp_1_1Row.html#a001fb68decc36916134c8eed1ade1686',1,'mysqlpp::Row']]], ['_7escopedconnection_979',['~ScopedConnection',['../classmysqlpp_1_1ScopedConnection.html#ab8b21eb30678cb0530d6dbc1eed38bef',1,'mysqlpp::ScopedConnection']]], ['_7escopedlock_980',['~ScopedLock',['../classmysqlpp_1_1ScopedLock.html#a1f03bd9ff85a61bef0255c6f313f3099',1,'mysqlpp::ScopedLock']]], ['_7esqlbuffer_981',['~SQLBuffer',['../classmysqlpp_1_1SQLBuffer.html#a41e777868636c20ad09093e1ddb9368a',1,'mysqlpp::SQLBuffer']]], ['_7estorequeryresult_982',['~StoreQueryResult',['../classmysqlpp_1_1StoreQueryResult.html#aa4577436a49e8ccae60125daeec43d94',1,'mysqlpp::StoreQueryResult']]], ['_7estring_983',['~String',['../classmysqlpp_1_1String.html#a43e145f153028b0932fe916159f803dc',1,'mysqlpp::String']]], ['_7etcpconnection_984',['~TCPConnection',['../classmysqlpp_1_1TCPConnection.html#acb3ac928977f621b89c14d6690c0d28c',1,'mysqlpp::TCPConnection']]], ['_7etransaction_985',['~Transaction',['../classmysqlpp_1_1Transaction.html#a362b0d2524d0c799165190517192dca9',1,'mysqlpp::Transaction']]], ['_7eunixdomainsocketconnection_986',['~UnixDomainSocketConnection',['../classmysqlpp_1_1UnixDomainSocketConnection.html#a9fe33cf6c50d64c6e4fbbb18f035f809',1,'mysqlpp::UnixDomainSocketConnection']]], ['_7eusequeryresult_987',['~UseQueryResult',['../classmysqlpp_1_1UseQueryResult.html#a3077144651e05dfc524ab373bee13384',1,'mysqlpp::UseQueryResult']]], ['_7ewindowsnamedpipeconnection_988',['~WindowsNamedPipeConnection',['../classmysqlpp_1_1WindowsNamedPipeConnection.html#a9827c3ca18e60f6a8b0f6b333170531f',1,'mysqlpp::WindowsNamedPipeConnection']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_12.html000644 000765 000024 00000002654 14042362132 023245 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/classes_2.js000644 000765 000024 00000002424 14042362132 022254 0ustar00tangentstaff000000 000000 var searchData= [ ['commandline_519',['CommandLine',['../classmysqlpp_1_1examples_1_1CommandLine.html',1,'mysqlpp::examples::CommandLine'],['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html',1,'mysqlpp::ssqlsxlat::CommandLine']]], ['commandlinebase_520',['CommandLineBase',['../classmysqlpp_1_1CommandLineBase.html',1,'mysqlpp']]], ['comparable_521',['Comparable',['../classmysqlpp_1_1Comparable.html',1,'mysqlpp']]], ['comparable_3c_20date_20_3e_522',['Comparable< Date >',['../classmysqlpp_1_1Comparable.html',1,'mysqlpp']]], ['comparable_3c_20datetime_20_3e_523',['Comparable< DateTime >',['../classmysqlpp_1_1Comparable.html',1,'mysqlpp']]], ['comparable_3c_20time_20_3e_524',['Comparable< Time >',['../classmysqlpp_1_1Comparable.html',1,'mysqlpp']]], ['compressoption_525',['CompressOption',['../classmysqlpp_1_1CompressOption.html',1,'mysqlpp']]], ['connection_526',['Connection',['../classmysqlpp_1_1Connection.html',1,'mysqlpp']]], ['connectionfailed_527',['ConnectionFailed',['../classmysqlpp_1_1ConnectionFailed.html',1,'mysqlpp']]], ['connectionpool_528',['ConnectionPool',['../classmysqlpp_1_1ConnectionPool.html',1,'mysqlpp']]], ['connecttimeoutoption_529',['ConnectTimeoutOption',['../classmysqlpp_1_1ConnectTimeoutOption.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_3.html000644 000765 000024 00000002653 14042362132 023164 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_c.html000644 000765 000024 00000002647 14042362132 022341 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_8.html000644 000765 000024 00000002647 14042362132 022266 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/all_1.html000644 000765 000024 00000002645 14042362132 021723 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/enumvalues_1.js000644 000765 000024 00000001536 14042362132 023005 0ustar00tangentstaff000000 000000 var searchData= [ ['err_5fapi_5flimit_1053',['err_api_limit',['../classmysqlpp_1_1Option.html#af0c0e22b32d2ee489bc77d360ce74c8ca8006fc8212a2393a084f26d7980b8707',1,'mysqlpp::Option']]], ['err_5fapi_5freject_1054',['err_api_reject',['../classmysqlpp_1_1Option.html#af0c0e22b32d2ee489bc77d360ce74c8ca3b6c862bd1548d5f4c28b62df8e600c6',1,'mysqlpp::Option']]], ['err_5fconnected_1055',['err_connected',['../classmysqlpp_1_1Option.html#af0c0e22b32d2ee489bc77d360ce74c8cab6ee57a202c62afb4f66912137174973',1,'mysqlpp::Option']]], ['err_5fdisconnected_1056',['err_disconnected',['../classmysqlpp_1_1Option.html#af0c0e22b32d2ee489bc77d360ce74c8ca6d200a37429e238707384de5826cd270',1,'mysqlpp::Option']]], ['err_5fnone_1057',['err_NONE',['../classmysqlpp_1_1Option.html#af0c0e22b32d2ee489bc77d360ce74c8ca428c375eef3714cefac2c2c10396c14c',1,'mysqlpp::Option']]] ]; mysql++-3.3.0/doc/html/refman/search/typedefs_4.js000644 000765 000024 00000000165 14042362132 022444 0ustar00tangentstaff000000 000000 var searchData= [ ['fields_1026',['Fields',['../field_8h.html#a6ece05119812efae848df2e61e413273',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/classes_4.html000644 000765 000024 00000002651 14042362132 022610 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/all_14.js000644 000765 000024 00000012127 14042362132 021453 0ustar00tangentstaff000000 000000 var searchData= [ ['vallist_2eh_468',['vallist.h',['../vallist_8h.html',1,'']]], ['value_5flist_469',['value_list',['../classmysqlpp_1_1Row.html#a1ab820f79463373cb4124135a79eb4e0',1,'mysqlpp::Row::value_list(const char *d=",", Manip m=quote) const'],['../classmysqlpp_1_1Row.html#a963d9f1de8a28fa84785242749f6bd69',1,'mysqlpp::Row::value_list(const char *d, const std::vector< bool > &vb, Manip m=quote) const'],['../classmysqlpp_1_1Row.html#a6d7aef3cc8cc200cff3ed8f041fbe6ed',1,'mysqlpp::Row::value_list(const std::vector< bool > &vb) const'],['../classmysqlpp_1_1Row.html#a5064c2f54b65873ea1491a67c43fa55b',1,'mysqlpp::Row::value_list(const char *d, Manip m, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) const'],['../classmysqlpp_1_1Row.html#acf3d52d817014e1c396de15d3603be1d',1,'mysqlpp::Row::value_list(const char *d, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) const'],['../classmysqlpp_1_1Row.html#aece089c0dd11a9a54e28506f80c8e08c',1,'mysqlpp::Row::value_list(bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) const'],['../classmysqlpp_1_1Row.html#a74003fa81408165dc8b4061f11186061',1,'mysqlpp::Row::value_list(const char *d, Manip m, std::string s0, std::string s1="", std::string s2="", std::string s3="", std::string s4="", std::string s5="", std::string s6="", std::string s7="", std::string s8="", std::string s9="", std::string sa="", std::string sb="", std::string sc="") const'],['../classmysqlpp_1_1Row.html#abe0cd03e22a93142810ee41743a311b6',1,'mysqlpp::Row::value_list(const char *d, std::string s0, std::string s1="", std::string s2="", std::string s3="", std::string s4="", std::string s5="", std::string s6="", std::string s7="", std::string s8="", std::string s9="", std::string sa="", std::string sb="", std::string sc="") const'],['../classmysqlpp_1_1Row.html#a10ed3ab27d0083ac14c1a9d0b7edb985',1,'mysqlpp::Row::value_list(std::string s0, std::string s1="", std::string s2="", std::string s3="", std::string s4="", std::string s5="", std::string s6="", std::string s7="", std::string s8="", std::string s9="", std::string sa="", std::string sb="", std::string sc="") const'],['../vallist_8h.html#af4a72c65d3b93039ff475fa8ccfdefac',1,'mysqlpp::value_list(const Seq &s, const char *d=",")'],['../vallist_8h.html#aff65f7d8b22e407c0155027fbb667a08',1,'mysqlpp::value_list(const Seq &s, const char *d, Manip m)'],['../vallist_8h.html#a74121e3b9914a429855ad6d0e70c2172',1,'mysqlpp::value_list(const Seq &s, const char *d, Manip m, const std::vector< bool > &vb)'],['../vallist_8h.html#a2813894f74517f80ad2f66ff36be897b',1,'mysqlpp::value_list(const Seq &s, const char *d, Manip m, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)'],['../vallist_8h.html#a4490f602c7b8b06e3fe5f17e43171ded',1,'mysqlpp::value_list(const Seq &s, const char *d, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)'],['../vallist_8h.html#a788f18caa122c7a4e92f8fb795c31bfe',1,'mysqlpp::value_list(const Seq &s, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)']]], ['value_5flist_5fb_470',['value_list_b',['../structmysqlpp_1_1value__list__b.html',1,'mysqlpp::value_list_b< Seq, Manip >'],['../structmysqlpp_1_1value__list__b.html#ac86a7ace185511342e39b2ef989c92cf',1,'mysqlpp::value_list_b::value_list_b()']]], ['value_5flist_5fba_471',['value_list_ba',['../structmysqlpp_1_1value__list__ba.html',1,'mysqlpp::value_list_ba< Seq, Manip >'],['../structmysqlpp_1_1value__list__ba.html#a5d589f50b26af0a2ff39c3c3897ebc90',1,'mysqlpp::value_list_ba::value_list_ba()']]], ['value_5ftype_472',['value_type',['../classmysqlpp_1_1String.html#af2ac840e79adca00ed4f3858ed1e1f75',1,'mysqlpp::String::value_type()'],['../classmysqlpp_1_1Null.html#aca01e95f7308d0601463e941857245ac',1,'mysqlpp::Null::value_type()'],['../classmysqlpp_1_1Row.html#a2a23493761130c3e66a4a49bd71b224c',1,'mysqlpp::Row::value_type()'],['../classmysqlpp_1_1tiny__int.html#a41bd9d701b334239937583fcd822982d',1,'mysqlpp::tiny_int::value_type()']]] ]; mysql++-3.3.0/doc/html/refman/search/typedefs_b.html000644 000765 000024 00000002652 14042362132 023055 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/typedefs_9.html000644 000765 000024 00000002652 14042362132 023004 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/variables_f.html000644 000765 000024 00000002356 14042362132 023207 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/classes_e.js000644 000765 000024 00000003405 14042362132 022337 0ustar00tangentstaff000000 000000 var searchData= [ ['scopedconnection_579',['ScopedConnection',['../classmysqlpp_1_1ScopedConnection.html',1,'mysqlpp']]], ['scopedlock_580',['ScopedLock',['../classmysqlpp_1_1ScopedLock.html',1,'mysqlpp']]], ['secureauthoption_581',['SecureAuthOption',['../classmysqlpp_1_1SecureAuthOption.html',1,'mysqlpp']]], ['selftestfailed_582',['SelfTestFailed',['../classmysqlpp_1_1SelfTestFailed.html',1,'mysqlpp']]], ['set_583',['Set',['../classmysqlpp_1_1Set.html',1,'mysqlpp']]], ['setcharsetdiroption_584',['SetCharsetDirOption',['../classmysqlpp_1_1SetCharsetDirOption.html',1,'mysqlpp']]], ['setcharsetnameoption_585',['SetCharsetNameOption',['../classmysqlpp_1_1SetCharsetNameOption.html',1,'mysqlpp']]], ['setclientipoption_586',['SetClientIpOption',['../classmysqlpp_1_1SetClientIpOption.html',1,'mysqlpp']]], ['sharedmemorybasenameoption_587',['SharedMemoryBaseNameOption',['../classmysqlpp_1_1SharedMemoryBaseNameOption.html',1,'mysqlpp']]], ['simpleresult_588',['SimpleResult',['../classmysqlpp_1_1SimpleResult.html',1,'mysqlpp']]], ['sqlbuffer_589',['SQLBuffer',['../classmysqlpp_1_1SQLBuffer.html',1,'mysqlpp']]], ['sqlparseelement_590',['SQLParseElement',['../structmysqlpp_1_1SQLParseElement.html',1,'mysqlpp']]], ['sqlqueryparms_591',['SQLQueryParms',['../classmysqlpp_1_1SQLQueryParms.html',1,'mysqlpp']]], ['sqlstream_592',['SQLStream',['../classmysqlpp_1_1SQLStream.html',1,'mysqlpp']]], ['sqltypeadapter_593',['SQLTypeAdapter',['../classmysqlpp_1_1SQLTypeAdapter.html',1,'mysqlpp']]], ['ssloption_594',['SslOption',['../classmysqlpp_1_1SslOption.html',1,'mysqlpp']]], ['storequeryresult_595',['StoreQueryResult',['../classmysqlpp_1_1StoreQueryResult.html',1,'mysqlpp']]], ['string_596',['String',['../classmysqlpp_1_1String.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/all_12.html000644 000765 000024 00000002646 14042362132 022006 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_0.js000644 000765 000024 00000000130 14042362132 021707 0ustar00tangentstaff000000 000000 var searchData= [ ['autoflag_2eh_615',['autoflag.h',['../autoflag_8h.html',1,'']]] ]; mysql++-3.3.0/doc/html/refman/search/classes_6.js000644 000765 000024 00000000215 14042362132 022254 0ustar00tangentstaff000000 000000 var searchData= [ ['guessconnectionoption_542',['GuessConnectionOption',['../classmysqlpp_1_1GuessConnectionOption.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_d.html000644 000765 000024 00000002653 14042362132 023245 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_4.html000644 000765 000024 00000002647 14042362132 022262 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/enumvalues_5.js000644 000765 000024 00000000674 14042362132 023013 0ustar00tangentstaff000000 000000 var searchData= [ ['quote_1064',['quote',['../manip_8h.html#ae9f9a1a0b5b6c666cc577ac4ea30f2f8abc8a579670da714d08fece6f43b11b53',1,'mysqlpp']]], ['quote_5fdouble_5fonly_1065',['quote_double_only',['../manip_8h.html#ab7c0f5b960b8c68a5bb6615908f8fb4fade9ec989c0afd3cb18e23689f17f74ed',1,'mysqlpp']]], ['quote_5fonly_1066',['quote_only',['../manip_8h.html#ac6684f37ebc2f5dc4b526f1858938ae0af77dc617bf2f8715000fea02996eb703',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/all_10.js000644 000765 000024 00000014607 14042362132 021454 0ustar00tangentstaff000000 000000 var searchData= [ ['raw_325',['raw',['../classmysqlpp_1_1RefCountedPointer.html#aca68d9c999240bd05e992b15fa38fef9',1,'mysqlpp::RefCountedPointer::raw() const'],['../classmysqlpp_1_1RefCountedPointer.html#a26757f1138dded33faeb1978004d0639',1,'mysqlpp::RefCountedPointer::raw()']]], ['rbegin_326',['rbegin',['../classmysqlpp_1_1Row.html#a0f1b98296a92411e93a06caae0166b79',1,'mysqlpp::Row']]], ['read_5fcommitted_327',['read_committed',['../classmysqlpp_1_1Transaction.html#a91d16b4539a969fb632ee672999cdd1fa82065aaf4094dab18b48d8e973d4ef4f',1,'mysqlpp::Transaction']]], ['read_5funcommitted_328',['read_uncommitted',['../classmysqlpp_1_1Transaction.html#a91d16b4539a969fb632ee672999cdd1fa3932f25965a310d79e396f8f749f3d17',1,'mysqlpp::Transaction']]], ['readdefaultfileoption_329',['ReadDefaultFileOption',['../classmysqlpp_1_1ReadDefaultFileOption.html',1,'mysqlpp']]], ['readdefaultgroupoption_330',['ReadDefaultGroupOption',['../classmysqlpp_1_1ReadDefaultGroupOption.html',1,'mysqlpp']]], ['readtimeoutoption_331',['ReadTimeoutOption',['../classmysqlpp_1_1ReadTimeoutOption.html',1,'mysqlpp']]], ['reconnectoption_332',['ReconnectOption',['../classmysqlpp_1_1ReconnectOption.html',1,'mysqlpp']]], ['refcounted_2eh_333',['refcounted.h',['../refcounted_8h.html',1,'']]], ['refcountedbuffer_334',['RefCountedBuffer',['../sql__buffer_8h.html#ad2f8b25a76e80dbdd6b76a2e4d068bbe',1,'mysqlpp']]], ['refcountedpointer_335',['RefCountedPointer',['../classmysqlpp_1_1RefCountedPointer.html',1,'mysqlpp::RefCountedPointer< T, Destroyer >'],['../classmysqlpp_1_1RefCountedPointer.html#a02aa2860b0644b6333cee8f321477fee',1,'mysqlpp::RefCountedPointer::RefCountedPointer()'],['../classmysqlpp_1_1RefCountedPointer.html#a586313b144a88e487d77adf7d64bd3bb',1,'mysqlpp::RefCountedPointer::RefCountedPointer(T *c)'],['../classmysqlpp_1_1RefCountedPointer.html#ae25ec10685c0c1ae2c7afa6bd72f483c',1,'mysqlpp::RefCountedPointer::RefCountedPointer(const ThisType &other)']]], ['refcountedpointer_3c_20mysql_5fres_20_3e_336',['RefCountedPointer< MYSQL_RES >',['../classmysqlpp_1_1RefCountedPointer.html',1,'mysqlpp']]], ['refcountedpointer_3c_20mysqlpp_3a_3afieldnames_20_3e_337',['RefCountedPointer< mysqlpp::FieldNames >',['../classmysqlpp_1_1RefCountedPointer.html',1,'mysqlpp']]], ['refcountedpointer_3c_20mysqlpp_3a_3afieldtypes_20_3e_338',['RefCountedPointer< mysqlpp::FieldTypes >',['../classmysqlpp_1_1RefCountedPointer.html',1,'mysqlpp']]], ['refcountedpointer_3c_20sqlbuffer_20_3e_339',['RefCountedPointer< SQLBuffer >',['../classmysqlpp_1_1RefCountedPointer.html',1,'mysqlpp']]], ['refcountedpointerdestroyer_340',['RefCountedPointerDestroyer',['../structmysqlpp_1_1RefCountedPointerDestroyer.html',1,'mysqlpp']]], ['refcountedpointerdestroyer_3c_20mysql_5fres_20_3e_341',['RefCountedPointerDestroyer< MYSQL_RES >',['../structmysqlpp_1_1RefCountedPointerDestroyer_3_01MYSQL__RES_01_4.html',1,'mysqlpp']]], ['reference_342',['reference',['../classmysqlpp_1_1Row.html#af84401d71970c5d15b4d078e01189278',1,'mysqlpp::Row']]], ['refresh_343',['refresh',['../classmysqlpp_1_1DBDriver.html#af106eca9a1a1b64a9823467df564e53f',1,'mysqlpp::DBDriver']]], ['release_344',['release',['../classmysqlpp_1_1ConnectionPool.html#ac51a7a63ce4d8825c3f7b05f4b8bfe68',1,'mysqlpp::ConnectionPool']]], ['remove_345',['remove',['../classmysqlpp_1_1ConnectionPool.html#aae75febe979da2d4a3335c46438f3d33',1,'mysqlpp::ConnectionPool']]], ['rend_346',['rend',['../classmysqlpp_1_1Row.html#afe1a524f6da1ac4ca30955fe12de5243',1,'mysqlpp::Row']]], ['repeatable_5fread_347',['repeatable_read',['../classmysqlpp_1_1Transaction.html#a91d16b4539a969fb632ee672999cdd1fa6a5934315b282de9c0f4037297c6f93a',1,'mysqlpp::Transaction']]], ['replace_348',['replace',['../classmysqlpp_1_1Query.html#aa2d5b5aa23b96c600c157718e4ac60b4',1,'mysqlpp::Query::replace(const T &v)'],['../classmysqlpp_1_1Query.html#ab4359a9dbd99e93ded73d5df5cd244ba',1,'mysqlpp::Query::replace(Iter first, Iter last)']]], ['replacefrom_349',['replacefrom',['../classmysqlpp_1_1Query.html#a7ff065d1b18f3c6141ef57ce9d542837',1,'mysqlpp::Query']]], ['reportdatatruncationoption_350',['ReportDataTruncationOption',['../classmysqlpp_1_1ReportDataTruncationOption.html',1,'mysqlpp']]], ['reset_351',['reset',['../classmysqlpp_1_1Query.html#af12740e420c1d61b1d9c2995459a3ce0',1,'mysqlpp::Query']]], ['result_2eh_352',['result.h',['../result_8h.html',1,'']]], ['result_5fempty_353',['result_empty',['../classmysqlpp_1_1DBDriver.html#af56834aa1357f86141b9cdcccf4ff4ce',1,'mysqlpp::DBDriver::result_empty()'],['../classmysqlpp_1_1Query.html#ab02c4ab2f46159d9d45bfd2bbe57e2b4',1,'mysqlpp::Query::result_empty()']]], ['resultbase_354',['ResultBase',['../classmysqlpp_1_1ResultBase.html',1,'mysqlpp::ResultBase'],['../classmysqlpp_1_1ResultBase.html#a13f306c66abb2a9793b02e5db0105093',1,'mysqlpp::ResultBase::ResultBase()'],['../classmysqlpp_1_1ResultBase.html#ade911ef2b108a18ebbcfaf43fdc7e7d8',1,'mysqlpp::ResultBase::ResultBase(MYSQL_RES *result, DBDriver *dbd, bool te=true)'],['../classmysqlpp_1_1ResultBase.html#ab1e56ed72be6dc439eab03fccec9ce70',1,'mysqlpp::ResultBase::ResultBase(const ResultBase &other)']]], ['retrieved_355',['retrieved',['../classmysqlpp_1_1BadConversion.html#affa2b749b5a068b5bcbfa25d6e0cff48',1,'mysqlpp::BadConversion']]], ['reverse_5fiterator_356',['reverse_iterator',['../classmysqlpp_1_1Row.html#a0982d2e6bff5d029570d5ef5e1830fd3',1,'mysqlpp::Row']]], ['rollback_357',['rollback',['../classmysqlpp_1_1Transaction.html#a000e4f0882139eb8470f7472ca14a24e',1,'mysqlpp::Transaction::rollback()'],['../classmysqlpp_1_1NoTransaction.html#a1494ffb3d3b2f6b8d2990cd934fecb6a',1,'mysqlpp::NoTransaction::rollback()']]], ['row_358',['Row',['../classmysqlpp_1_1Row.html',1,'mysqlpp::Row'],['../classmysqlpp_1_1Row.html#a84e860a824a854c9e2eaa46092be193d',1,'mysqlpp::Row::Row()'],['../classmysqlpp_1_1Row.html#a3f99608cac738cbff8603c4ebb331f7a',1,'mysqlpp::Row::Row(const Row &r)'],['../classmysqlpp_1_1Row.html#ade70a7328179bc45610a624ec1b1bd2d',1,'mysqlpp::Row::Row(MYSQL_ROW row, const ResultBase *res, const unsigned long *lengths, bool te=true)']]], ['row_2eh_359',['row.h',['../row_8h.html',1,'']]], ['rows_360',['rows',['../classmysqlpp_1_1SimpleResult.html#afb7d866e050865bc461eb98788329a47',1,'mysqlpp::SimpleResult']]], ['run_5fmode_361',['run_mode',['../classmysqlpp_1_1examples_1_1CommandLine.html#aabac5f3110f7533834fd0cd32bffa8d2',1,'mysqlpp::examples::CommandLine']]] ]; mysql++-3.3.0/doc/html/refman/search/all_f.html000644 000765 000024 00000002645 14042362132 022010 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/typedefs_0.js000644 000765 000024 00000000703 14042362132 022436 0ustar00tangentstaff000000 000000 var searchData= [ ['argtype_1018',['ArgType',['../classmysqlpp_1_1DataOption.html#a1a713f6354ef275a9b5ea2ac79e9f23d',1,'mysqlpp::DataOption']]], ['argumentlist_1019',['ArgumentList',['../classmysqlpp_1_1CommandLineBase.html#ae8de28354623bd1541425f512d46b23a',1,'mysqlpp::CommandLineBase']]], ['argumentlistit_1020',['ArgumentListIt',['../classmysqlpp_1_1CommandLineBase.html#a15d9a9ce39ed7da69ece62472905d4c5',1,'mysqlpp::CommandLineBase']]] ]; mysql++-3.3.0/doc/html/refman/search/enumvalues_7.html000644 000765 000024 00000002654 14042362132 023345 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/classes_8.html000644 000765 000024 00000002651 14042362132 022614 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_c.js000644 000765 000024 00000000750 14042362132 022002 0ustar00tangentstaff000000 000000 var searchData= [ ['scopedconnection_2eh_640',['scopedconnection.h',['../scopedconnection_8h.html',1,'']]], ['sql_5fbuffer_2eh_641',['sql_buffer.h',['../sql__buffer_8h.html',1,'']]], ['sql_5ftypes_2eh_642',['sql_types.h',['../sql__types_8h.html',1,'']]], ['sqlstream_2eh_643',['sqlstream.h',['../sqlstream_8h.html',1,'']]], ['stadapter_2eh_644',['stadapter.h',['../stadapter_8h.html',1,'']]], ['stream2string_2eh_645',['stream2string.h',['../stream2string_8h.html',1,'']]] ]; mysql++-3.3.0/doc/html/refman/search/classes_c.html000644 000765 000024 00000002651 14042362132 022667 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/typedefs_5.html000644 000765 000024 00000002652 14042362132 023000 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/variables_1.html000644 000765 000024 00000002653 14042362132 023122 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/classes_a.js000644 000765 000024 00000001512 14042362132 022330 0ustar00tangentstaff000000 000000 var searchData= [ ['namedpipeoption_552',['NamedPipeOption',['../classmysqlpp_1_1NamedPipeOption.html',1,'mysqlpp']]], ['noexceptions_553',['NoExceptions',['../classmysqlpp_1_1NoExceptions.html',1,'mysqlpp']]], ['noschemaoption_554',['NoSchemaOption',['../classmysqlpp_1_1NoSchemaOption.html',1,'mysqlpp']]], ['notransaction_555',['NoTransaction',['../classmysqlpp_1_1NoTransaction.html',1,'mysqlpp']]], ['null_556',['Null',['../classmysqlpp_1_1Null.html',1,'mysqlpp']]], ['null_5ftype_557',['null_type',['../classmysqlpp_1_1null__type.html',1,'mysqlpp']]], ['nullisblank_558',['NullIsBlank',['../structmysqlpp_1_1NullIsBlank.html',1,'mysqlpp']]], ['nullisnull_559',['NullIsNull',['../structmysqlpp_1_1NullIsNull.html',1,'mysqlpp']]], ['nulliszero_560',['NullIsZero',['../structmysqlpp_1_1NullIsZero.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/files_4.js000644 000765 000024 00000000136 14042362132 021721 0ustar00tangentstaff000000 000000 var searchData= [ ['exceptions_2eh_623',['exceptions.h',['../exceptions_8h.html',1,'']]] ]; mysql++-3.3.0/doc/html/refman/search/namespaces_0.js000644 000765 000024 00000000431 14042362132 022730 0ustar00tangentstaff000000 000000 var searchData= [ ['examples_612',['examples',['../namespacemysqlpp_1_1examples.html',1,'mysqlpp']]], ['internal_613',['internal',['../namespacemysqlpp_1_1internal.html',1,'mysqlpp']]], ['ssqlsxlat_614',['ssqlsxlat',['../namespacemysqlpp_1_1ssqlsxlat.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_5.js000644 000765 000024 00000014505 14042362132 022635 0ustar00tangentstaff000000 000000 var searchData= [ ['fetch_5ffield_728',['fetch_field',['../classmysqlpp_1_1DBDriver.html#ae1559ffecfa39fcca51e5190c3ef2dd0',1,'mysqlpp::DBDriver::fetch_field()'],['../classmysqlpp_1_1ResultBase.html#a7cab2f3d0a4981c8c205ef1dcd148cdc',1,'mysqlpp::ResultBase::fetch_field() const'],['../classmysqlpp_1_1ResultBase.html#a828a05022ab4526abc58c88ff66ab65b',1,'mysqlpp::ResultBase::fetch_field(Fields::size_type i) const'],['../classmysqlpp_1_1UseQueryResult.html#a8bebfc62afd411184544926854530227',1,'mysqlpp::UseQueryResult::fetch_field() const'],['../classmysqlpp_1_1UseQueryResult.html#a40ee09b721976d85e5167a333cccf5fb',1,'mysqlpp::UseQueryResult::fetch_field(Fields::size_type i) const']]], ['fetch_5flengths_729',['fetch_lengths',['../classmysqlpp_1_1DBDriver.html#aad3ce5642565baa9f726dc0783f1d2f9',1,'mysqlpp::DBDriver::fetch_lengths()'],['../classmysqlpp_1_1UseQueryResult.html#abf21991cc4612e85a86b4c8b16507aa0',1,'mysqlpp::UseQueryResult::fetch_lengths() const']]], ['fetch_5fraw_5frow_730',['fetch_raw_row',['../classmysqlpp_1_1UseQueryResult.html#ab9369befd99bc6bec5665a038e5a5eea',1,'mysqlpp::UseQueryResult']]], ['fetch_5frow_731',['fetch_row',['../classmysqlpp_1_1DBDriver.html#ab389d52312e33926b6cd41d04667a0ba',1,'mysqlpp::DBDriver::fetch_row()'],['../classmysqlpp_1_1UseQueryResult.html#aeb04925edae3dda7aa3cfc567480ec20',1,'mysqlpp::UseQueryResult::fetch_row()']]], ['field_732',['field',['../classmysqlpp_1_1ResultBase.html#a14d36c2330286a7f2761a94b4314f444',1,'mysqlpp::ResultBase']]], ['field_733',['Field',['../classmysqlpp_1_1Field.html#af93a6fa53e488b3566bcb1ea4908e996',1,'mysqlpp::Field::Field()'],['../classmysqlpp_1_1Field.html#a887e4566a1266e5c98be8d86eedbd548',1,'mysqlpp::Field::Field(const MYSQL_FIELD *pf)'],['../classmysqlpp_1_1Field.html#a6833175bda71e745b6b83df585030154',1,'mysqlpp::Field::Field(const Field &other)']]], ['field_5flist_734',['field_list',['../classmysqlpp_1_1Row.html#ae5fce3ea026ec4bfc955406ea095a58c',1,'mysqlpp::Row::field_list(const char *d=",") const'],['../classmysqlpp_1_1Row.html#a636c03a6a7f7f4abbb5213c0658aa9a4',1,'mysqlpp::Row::field_list(const char *d, Manip m) const'],['../classmysqlpp_1_1Row.html#aaa66beadb335ff141aab3b6c16ad99e7',1,'mysqlpp::Row::field_list(const char *d, Manip m, const std::vector< bool > &vb) const'],['../classmysqlpp_1_1Row.html#a19be385bd4a03d8cbe79aefa7f3ca2d1',1,'mysqlpp::Row::field_list(const char *d, const std::vector< bool > &vb) const'],['../classmysqlpp_1_1Row.html#a00e1081a9e6e0e400eeeaba3c4cfd07a',1,'mysqlpp::Row::field_list(const std::vector< bool > &vb) const'],['../classmysqlpp_1_1Row.html#a147aaaa8a29022e1069b63323866968e',1,'mysqlpp::Row::field_list(const char *d, Manip m, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) const'],['../classmysqlpp_1_1Row.html#a52e5e86b8c718bd136775dcbd70b7c95',1,'mysqlpp::Row::field_list(const char *d, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) const'],['../classmysqlpp_1_1Row.html#a28bfec90454946d0adb35b62dd594eaa',1,'mysqlpp::Row::field_list(bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) const']]], ['field_5fname_735',['field_name',['../classmysqlpp_1_1ResultBase.html#a0b54766b327814a78fcfb1fb3aa7f2d2',1,'mysqlpp::ResultBase']]], ['field_5fnames_736',['field_names',['../classmysqlpp_1_1ResultBase.html#a3600373c3b09d982b28cb140841edc9b',1,'mysqlpp::ResultBase']]], ['field_5fnum_737',['field_num',['../classmysqlpp_1_1ResultBase.html#ae62270bceb936176b95c21fbbcffc845',1,'mysqlpp::ResultBase::field_num()'],['../classmysqlpp_1_1Row.html#a860b5ec5156cc644bb4d2656d7044575',1,'mysqlpp::Row::field_num()']]], ['field_5fseek_738',['field_seek',['../classmysqlpp_1_1DBDriver.html#a3ef8a76a607e6ba32ff8b2688368d0f3',1,'mysqlpp::DBDriver::field_seek()'],['../classmysqlpp_1_1UseQueryResult.html#a0e7d5988960da5d1dbe3cb289815309a',1,'mysqlpp::UseQueryResult::field_seek()']]], ['field_5ftype_739',['field_type',['../classmysqlpp_1_1ResultBase.html#a5e008a59841230913f93d8585e72d5fc',1,'mysqlpp::ResultBase']]], ['field_5ftypes_740',['field_types',['../classmysqlpp_1_1ResultBase.html#aaba9906e58d03a3f5ec969c909f3cf35',1,'mysqlpp::ResultBase']]], ['fieldnames_741',['FieldNames',['../classmysqlpp_1_1FieldNames.html#adbadd878ad84d13634fef61d7205cfe8',1,'mysqlpp::FieldNames::FieldNames()'],['../classmysqlpp_1_1FieldNames.html#a09bb05d6361a0d50ff7a06092cfd480f',1,'mysqlpp::FieldNames::FieldNames(const FieldNames &other)'],['../classmysqlpp_1_1FieldNames.html#a5a7ac14ce335849923bedec760e24222',1,'mysqlpp::FieldNames::FieldNames(const ResultBase *res)'],['../classmysqlpp_1_1FieldNames.html#a31c5e4316f0d8aac02c2bff2a278d706',1,'mysqlpp::FieldNames::FieldNames(int i)']]], ['fields_742',['fields',['../classmysqlpp_1_1ResultBase.html#a50aa09c8f5492beb8a5d802755d94f0d',1,'mysqlpp::ResultBase']]], ['fieldtypes_743',['FieldTypes',['../classmysqlpp_1_1FieldTypes.html#a233d74a8659827951874c0e47e0351f5',1,'mysqlpp::FieldTypes::FieldTypes()'],['../classmysqlpp_1_1FieldTypes.html#a3508d5cf2018e20ee872683b98efa6c4',1,'mysqlpp::FieldTypes::FieldTypes(const ResultBase *res)'],['../classmysqlpp_1_1FieldTypes.html#a5fc59aa9502f78bd30a1926533b95dd3',1,'mysqlpp::FieldTypes::FieldTypes(int i)']]], ['finish_5fparse_744',['finish_parse',['../classmysqlpp_1_1CommandLineBase.html#a2351077d0a931ee3ba9738464aaba0c6',1,'mysqlpp::CommandLineBase']]], ['for_5feach_745',['for_each',['../classmysqlpp_1_1Query.html#a2468c96fcf7ea01ebde250f9e9cd0523',1,'mysqlpp::Query::for_each(const SQLTypeAdapter &query, Function fn)'],['../classmysqlpp_1_1Query.html#a1436c089b356ccaeca67d1fd5bbd4280',1,'mysqlpp::Query::for_each(Function fn)'],['../classmysqlpp_1_1Query.html#ab9e16f754112ec2f743db10d92059f86',1,'mysqlpp::Query::for_each(const SSQLS &ssqls, Function fn)']]], ['free_5fresult_746',['free_result',['../classmysqlpp_1_1DBDriver.html#a25d7d00df44add6decb59cecd6ab6411',1,'mysqlpp::DBDriver']]], ['front_747',['front',['../classmysqlpp_1_1Row.html#ae11a98d528212a8d726a954f7367e180',1,'mysqlpp::Row']]] ]; mysql++-3.3.0/doc/html/refman/search/enums_4.js000644 000765 000024 00000000603 14042362132 021745 0ustar00tangentstaff000000 000000 var searchData= [ ['quote_5fdouble_5fonly_5ftype0_1048',['quote_double_only_type0',['../manip_8h.html#ab7c0f5b960b8c68a5bb6615908f8fb4f',1,'mysqlpp']]], ['quote_5fonly_5ftype0_1049',['quote_only_type0',['../manip_8h.html#ac6684f37ebc2f5dc4b526f1858938ae0',1,'mysqlpp']]], ['quote_5ftype0_1050',['quote_type0',['../manip_8h.html#ae9f9a1a0b5b6c666cc577ac4ea30f2f8',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/variables_1.js000644 000765 000024 00000000235 14042362132 022564 0ustar00tangentstaff000000 000000 var searchData= [ ['before_991',['before',['../structmysqlpp_1_1SQLParseElement.html#a8b0a5afd4a8b825d13579b1427e94331',1,'mysqlpp::SQLParseElement']]] ]; mysql++-3.3.0/doc/html/refman/search/all_15.html000644 000765 000024 00000002646 14042362132 022011 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/variables_a.html000644 000765 000024 00000002653 14042362132 023202 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/all_0.js000644 000765 000024 00000006501 14042362132 021365 0ustar00tangentstaff000000 000000 var searchData= [ ['actual_5fsize_0',['actual_size',['../classmysqlpp_1_1BadConversion.html#a34e2c445a3c9a35377937062131cc0ed',1,'mysqlpp::BadConversion']]], ['affected_5frows_1',['affected_rows',['../classmysqlpp_1_1DBDriver.html#ae7f574b870c35e3d07327d07c31211ca',1,'mysqlpp::DBDriver::affected_rows()'],['../classmysqlpp_1_1Query.html#a80d0b71c5cb23f70ebc0d27f0ecc3adc',1,'mysqlpp::Query::affected_rows()']]], ['arg_5f_2',['arg_',['../classmysqlpp_1_1DataOption.html#a80fc5b75a6ba6f5caf74caabb8f679f6',1,'mysqlpp::DataOption']]], ['argtype_3',['ArgType',['../classmysqlpp_1_1DataOption.html#a1a713f6354ef275a9b5ea2ac79e9f23d',1,'mysqlpp::DataOption']]], ['argumentlist_4',['ArgumentList',['../classmysqlpp_1_1CommandLineBase.html#ae8de28354623bd1541425f512d46b23a',1,'mysqlpp::CommandLineBase']]], ['argumentlistit_5',['ArgumentListIt',['../classmysqlpp_1_1CommandLineBase.html#a15d9a9ce39ed7da69ece62472905d4c5',1,'mysqlpp::CommandLineBase']]], ['assign_6',['assign',['../classmysqlpp_1_1String.html#a07d5fc7add1e11e9f11b8169a7f2c792',1,'mysqlpp::String::assign(const char *str, size_type len, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)'],['../classmysqlpp_1_1String.html#a2495cd58ddbf6427747d8bbfefd4f5b7',1,'mysqlpp::String::assign(const std::string &str, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)'],['../classmysqlpp_1_1String.html#a30624cfe0e895bb2e20d653c35cca80c',1,'mysqlpp::String::assign(const char *str, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)'],['../classmysqlpp_1_1RefCountedPointer.html#ac6a54b0c4fdac3d05389639c5bc71168',1,'mysqlpp::RefCountedPointer::assign(T *c)'],['../classmysqlpp_1_1RefCountedPointer.html#aa806e37d44b4d0384dc0bcd1deefd1b9',1,'mysqlpp::RefCountedPointer::assign(const ThisType &other)'],['../classmysqlpp_1_1SQLBuffer.html#abd3057457a375547d7e82fe4fbacbc45',1,'mysqlpp::SQLBuffer::assign(const char *data, size_type length, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)'],['../classmysqlpp_1_1SQLBuffer.html#a36e353c31f41674a5c21d7a84c404845',1,'mysqlpp::SQLBuffer::assign(const std::string &s, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a2e1ab68e3dad7c0fd30b822a8f708d21',1,'mysqlpp::SQLTypeAdapter::assign(const SQLTypeAdapter &sta)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a1911afd4940a3739268996a803f972a1',1,'mysqlpp::SQLTypeAdapter::assign(const char *pc, int len=-1)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a3a8b1056b9ea57efdbb44a099d5841e0',1,'mysqlpp::SQLTypeAdapter::assign(const null_type &n)']]], ['at_7',['at',['../classmysqlpp_1_1String.html#af0417324b1aebfc72616ce4d82efc669',1,'mysqlpp::String::at()'],['../classmysqlpp_1_1Row.html#ad5a7faa9ea2c55d215b11f89ef249b6a',1,'mysqlpp::Row::at()'],['../classmysqlpp_1_1SQLTypeAdapter.html#a433c6996a1f8afa5af2ee6da83c3a37f',1,'mysqlpp::SQLTypeAdapter::at()']]], ['auto_5fincrement_8',['auto_increment',['../classmysqlpp_1_1Field.html#a777755e6c546e98ea2d227368a0bebe9',1,'mysqlpp::Field']]], ['autoflag_9',['AutoFlag',['../classmysqlpp_1_1AutoFlag.html#abcd9fbf81e922d5d16959c1dbff0bfbc',1,'mysqlpp::AutoFlag::AutoFlag()'],['../classmysqlpp_1_1AutoFlag.html',1,'mysqlpp::AutoFlag< T >']]], ['autoflag_2eh_10',['autoflag.h',['../autoflag_8h.html',1,'']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_17.js000644 000765 000024 00000000214 14042362132 022710 0ustar00tangentstaff000000 000000 var searchData= [ ['zerofill_959',['zerofill',['../classmysqlpp_1_1Field.html#ad68319625f0c81b2b246bb5cc6c09064',1,'mysqlpp::Field']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_b.js000644 000765 000024 00000005140 14042362132 022705 0ustar00tangentstaff000000 000000 var searchData= [ ['max_5fidle_5ftime_769',['max_idle_time',['../classmysqlpp_1_1ConnectionPool.html#a8a5ba414a5b02c48d64501c25b64a656',1,'mysqlpp::ConnectionPool']]], ['max_5flength_770',['max_length',['../classmysqlpp_1_1Field.html#afa185acf090746d01d9b84c40c5e9d13',1,'mysqlpp::Field']]], ['max_5fsize_771',['max_size',['../classmysqlpp_1_1String.html#a75e6378c0624036c762bc89f89919edd',1,'mysqlpp::String::max_size()'],['../classmysqlpp_1_1Row.html#ae5e47f65ff7f6650ca4e6e291571c2a5',1,'mysqlpp::Row::max_size()']]], ['minute_772',['minute',['../classmysqlpp_1_1DateTime.html#a530e5f2879b0180f4d8a9d5a202d759b',1,'mysqlpp::DateTime::minute() const'],['../classmysqlpp_1_1DateTime.html#a4cad53260478413f244b93aaa0097437',1,'mysqlpp::DateTime::minute(unsigned char m)'],['../classmysqlpp_1_1Time.html#ac41f1d1a6fc75c8e7229e2fb96909dee',1,'mysqlpp::Time::minute() const'],['../classmysqlpp_1_1Time.html#ad1f0ceffefa07814fe1ff7f413c6f474',1,'mysqlpp::Time::minute(unsigned char m)']]], ['month_773',['month',['../classmysqlpp_1_1DateTime.html#a60df06d7f47b7a835aa30b2b45f854f0',1,'mysqlpp::DateTime::month() const'],['../classmysqlpp_1_1DateTime.html#a27355f13f6d00783beaccd3252538efd',1,'mysqlpp::DateTime::month(unsigned char m)'],['../classmysqlpp_1_1Date.html#a5aa9856e7c036e86ca2e8e30ae600800',1,'mysqlpp::Date::month() const'],['../classmysqlpp_1_1Date.html#afaaa0eea8c9011bd1fed64d47b36e237',1,'mysqlpp::Date::month(unsigned char m)']]], ['more_5fresults_774',['more_results',['../classmysqlpp_1_1DBDriver.html#a7b2168472fbe6ecb93609187001357e7',1,'mysqlpp::DBDriver::more_results()'],['../classmysqlpp_1_1Query.html#aeeaff6b3fb94ff4bcad4046a833ee2ed',1,'mysqlpp::Query::more_results()']]], ['multiple_5fkey_775',['multiple_key',['../classmysqlpp_1_1Field.html#ab4e3e8f448ec16e47be2f45e4c11cc96',1,'mysqlpp::Field']]], ['mutexfailed_776',['MutexFailed',['../classmysqlpp_1_1MutexFailed.html#a4c7c778e653345efde2211ae76f02e7b',1,'mysqlpp::MutexFailed']]], ['mysql_5ftype_5finfo_777',['mysql_type_info',['../classmysqlpp_1_1mysql__type__info.html#a497b41bf3e4e0f8b8fd14807c663559d',1,'mysqlpp::mysql_type_info::mysql_type_info()'],['../classmysqlpp_1_1mysql__type__info.html#a2241d92a6ba848bad3519fbcce54f323',1,'mysqlpp::mysql_type_info::mysql_type_info(enum_field_types t, bool _unsigned=false, bool _null=false)'],['../classmysqlpp_1_1mysql__type__info.html#a045c7f8f8f6a039ef021dc5c192a7bff',1,'mysqlpp::mysql_type_info::mysql_type_info(const mysql_type_info &t)'],['../classmysqlpp_1_1mysql__type__info.html#a579e000af3c38789851b486488ea224a',1,'mysqlpp::mysql_type_info::mysql_type_info(const std::type_info &t)']]] ]; mysql++-3.3.0/doc/html/refman/search/classes_3.html000644 000765 000024 00000002651 14042362132 022607 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/all_6.html000644 000765 000024 00000002645 14042362132 021730 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_d.html000644 000765 000024 00000002647 14042362132 022342 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/variables_f.js000644 000765 000024 00000000221 14042362132 022644 0ustar00tangentstaff000000 000000 var searchData= [ ['what_5f_1003',['what_',['../classmysqlpp_1_1Exception.html#a9d1f31934daa02fdbedfe419be524191',1,'mysqlpp::Exception']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_4.html000644 000765 000024 00000002653 14042362132 023165 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/functions_15.html000644 000765 000024 00000002654 14042362132 023250 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/enums_0.js000644 000765 000024 00000000215 14042362132 021740 0ustar00tangentstaff000000 000000 var searchData= [ ['do_5fnothing_5ftype0_1041',['do_nothing_type0',['../manip_8h.html#acabd5572224baf2f7c26f89bc082673f',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/search_l.png000644 000765 000024 00000001067 14042362133 022331 0ustar00tangentstaff000000 000000 ‰PNG  IHDR:…å>gAMA± üa cHRMm˜sŽà8‚ÕzÊ´3Dv„6*½bKGDÿ‡Ì¿ pHYs  šœtIMEâ  OíWß*IDAT(Ï’ÍJBQF÷&Š&ö ›ô>Ѥ|ƒ(‚ÀFAI õ–¢‘`šAP Õ ‘~ÀŸ&FzžÕ A튷oM6‡uß-È/iÃtyÝžÛæ «¬Ù¹6bSÞ%ÏÝž pA’476Iæìvܧäx£B•Ÿ6‰LîDü
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/functions_13.js000644 000765 000024 00000005036 14042362133 022714 0ustar00tangentstaff000000 000000 var searchData= [ ['unique_5fkey_943',['unique_key',['../classmysqlpp_1_1Field.html#acac67cc1a4d189e1b6a1db016bf5c586',1,'mysqlpp::Field']]], ['unixdomainsocketconnection_944',['UnixDomainSocketConnection',['../classmysqlpp_1_1UnixDomainSocketConnection.html#a5d8de74a7214d9e45c5c39684e2170c2',1,'mysqlpp::UnixDomainSocketConnection::UnixDomainSocketConnection()'],['../classmysqlpp_1_1UnixDomainSocketConnection.html#a11e293c95b248eb610eed67e4fd48d93',1,'mysqlpp::UnixDomainSocketConnection::UnixDomainSocketConnection(const char *path, const char *db=0, const char *user=0, const char *password=0)'],['../classmysqlpp_1_1UnixDomainSocketConnection.html#ac4fcbd1b593330588f656c44b88c4299',1,'mysqlpp::UnixDomainSocketConnection::UnixDomainSocketConnection(const UnixDomainSocketConnection &other)']]], ['unlock_945',['unlock',['../classmysqlpp_1_1BeecryptMutex.html#a9c9dbc827e3777a0310dc7e6253d0998',1,'mysqlpp::BeecryptMutex']]], ['update_946',['update',['../classmysqlpp_1_1Query.html#a64aa3f8489020795552965c70b515428',1,'mysqlpp::Query']]], ['use_947',['use',['../classmysqlpp_1_1Query.html#a8538e92f55a5536bbf7704d27151ed87',1,'mysqlpp::Query::use()'],['../classmysqlpp_1_1Query.html#a66040c8c0071b50b043e8031309f7852',1,'mysqlpp::Query::use(SQLQueryParms &p)'],['../classmysqlpp_1_1Query.html#afe90361bc4f17f78c11857d32538dabe',1,'mysqlpp::Query::use(const SQLTypeAdapter &str)'],['../classmysqlpp_1_1Query.html#ab00af2e285dbb32eb51de17e567d8b00',1,'mysqlpp::Query::use(const char *str, size_t len)']]], ['use_5fresult_948',['use_result',['../classmysqlpp_1_1DBDriver.html#adeb6b2f834cccc051d3b39c8017c1166',1,'mysqlpp::DBDriver']]], ['usequeryerror_949',['UseQueryError',['../classmysqlpp_1_1UseQueryError.html#a8a6b5031294cce3b297edab7a7c9ab03',1,'mysqlpp::UseQueryError']]], ['usequeryresult_950',['UseQueryResult',['../classmysqlpp_1_1UseQueryResult.html#a8c4596a5f7b1aab0d4ef6939a67de10c',1,'mysqlpp::UseQueryResult::UseQueryResult()'],['../classmysqlpp_1_1UseQueryResult.html#ae8e54798b2f62788f2741da6d91b69f9',1,'mysqlpp::UseQueryResult::UseQueryResult(MYSQL_RES *result, DBDriver *dbd, bool te=true)'],['../classmysqlpp_1_1UseQueryResult.html#a8a68bb41c82a36c534cd1c128f559cfb',1,'mysqlpp::UseQueryResult::UseQueryResult(const UseQueryResult &other)']]], ['user_951',['user',['../classmysqlpp_1_1examples_1_1CommandLine.html#ad6ed7a4884d859c650718ae9beea6e1b',1,'mysqlpp::examples::CommandLine::user()'],['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#ac8b73e74e579e29a8eaa1748b4d6c428',1,'mysqlpp::ssqlsxlat::CommandLine::user()']]] ]; mysql++-3.3.0/doc/html/refman/search/all_4.js000644 000765 000024 00000023643 14042362133 021400 0ustar00tangentstaff000000 000000 var searchData= [ ['empty_87',['empty',['../classmysqlpp_1_1ConnectionPool.html#ac7f3bd443b9a70fb21ce86fa7ced880e',1,'mysqlpp::ConnectionPool::empty()'],['../classmysqlpp_1_1String.html#a9159f93d7c73c2a2c5ec62f55db92297',1,'mysqlpp::String::empty()'],['../classmysqlpp_1_1Row.html#afeb347bf428595bdd88b186611bc5379',1,'mysqlpp::Row::empty()']]], ['enable_5fexceptions_88',['enable_exceptions',['../classmysqlpp_1_1OptionalExceptions.html#a46ce5ac667513bac88c0bd459115f236',1,'mysqlpp::OptionalExceptions']]], ['enable_5fssl_89',['enable_ssl',['../classmysqlpp_1_1DBDriver.html#a2c1d658505dd0e14b1d54eef8142e12d',1,'mysqlpp::DBDriver']]], ['end_90',['end',['../classmysqlpp_1_1String.html#aaea2346cde37d332327202dbadde9e30',1,'mysqlpp::String::end()'],['../classmysqlpp_1_1Row.html#a8385cf922dbd81c8ce3a784181c64f32',1,'mysqlpp::Row::end()']]], ['enumeration_91',['enumeration',['../classmysqlpp_1_1Field.html#a864c0336cf9cb67231d8210045ae9478',1,'mysqlpp::Field']]], ['equal_5flist_92',['equal_list',['../vallist_8h.html#a6d668a9cbaf5a51c877c70b8305033e5',1,'mysqlpp::equal_list(const Seq1 &s1, const Seq2 &s2, const char *d=",", const char *e=" = ")'],['../vallist_8h.html#a1aa2b7c57b4d42e4587f4cd4172e8229',1,'mysqlpp::equal_list(const Seq1 &s1, const Seq2 &s2, const char *d, const char *e, Manip m)'],['../vallist_8h.html#ab118db64ba8109b183aca1ef5af12964',1,'mysqlpp::equal_list(const Seq1 &s1, const Seq2 &s2, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)'],['../vallist_8h.html#a690e19dc9016c200586543559a0236ce',1,'mysqlpp::equal_list(const Seq1 &s1, const Seq2 &s2, const char *d, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)'],['../classmysqlpp_1_1Row.html#a774ed0ca6b5b70de2055a7e6256573fa',1,'mysqlpp::Row::equal_list(const char *d=",", const char *e=" = ") const'],['../classmysqlpp_1_1Row.html#ac27ab8ed2667598da2ad1bd3a5a7b6b7',1,'mysqlpp::Row::equal_list(const char *d, const char *e, Manip m) const'],['../vallist_8h.html#aec821d7f933c45a1496fd6c916d1a27f',1,'mysqlpp::equal_list(const Seq1 &s1, const Seq2 &s2, const char *d, const char *e, Manip m, const std::vector< bool > &vb)'],['../vallist_8h.html#a158ffc0201b5aabf20c7be69c230c8bc',1,'mysqlpp::equal_list(const Seq1 &s1, const Seq2 &s2, const char *d, const char *e, Manip m, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)'],['../vallist_8h.html#a91b3eac886712cf5caf5da2fd1b50280',1,'mysqlpp::equal_list(const Seq1 &s1, const Seq2 &s2, const char *d, const char *e, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)']]], ['equal_5flist_5fb_93',['equal_list_b',['../structmysqlpp_1_1equal__list__b.html#a39f8de2a70484b8834f7dc8b78f49288',1,'mysqlpp::equal_list_b::equal_list_b()'],['../structmysqlpp_1_1equal__list__b.html',1,'mysqlpp::equal_list_b< Seq1, Seq2, Manip >']]], ['equal_5flist_5fba_94',['equal_list_ba',['../structmysqlpp_1_1equal__list__ba.html#a2055acbb60e6d09362b8fb5194afca9a',1,'mysqlpp::equal_list_ba::equal_list_ba()'],['../structmysqlpp_1_1equal__list__ba.html',1,'mysqlpp::equal_list_ba< Seq1, Seq2, Manip >']]], ['equl_95',['equl',['../structmysqlpp_1_1equal__list__b.html#a5092f431c71217200400c94eed206f6e',1,'mysqlpp::equal_list_b::equl()'],['../structmysqlpp_1_1equal__list__ba.html#a5f8c1b857897e584bd78c1a9f58439a7',1,'mysqlpp::equal_list_ba::equl()']]], ['err_5fapi_5flimit_96',['err_api_limit',['../classmysqlpp_1_1Option.html#af0c0e22b32d2ee489bc77d360ce74c8ca8006fc8212a2393a084f26d7980b8707',1,'mysqlpp::Option']]], ['err_5fapi_5freject_97',['err_api_reject',['../classmysqlpp_1_1Option.html#af0c0e22b32d2ee489bc77d360ce74c8ca3b6c862bd1548d5f4c28b62df8e600c6',1,'mysqlpp::Option']]], ['err_5fconnected_98',['err_connected',['../classmysqlpp_1_1Option.html#af0c0e22b32d2ee489bc77d360ce74c8cab6ee57a202c62afb4f66912137174973',1,'mysqlpp::Option']]], ['err_5fdisconnected_99',['err_disconnected',['../classmysqlpp_1_1Option.html#af0c0e22b32d2ee489bc77d360ce74c8ca6d200a37429e238707384de5826cd270',1,'mysqlpp::Option']]], ['err_5fnone_100',['err_NONE',['../classmysqlpp_1_1Option.html#af0c0e22b32d2ee489bc77d360ce74c8ca428c375eef3714cefac2c2c10396c14c',1,'mysqlpp::Option']]], ['errnum_101',['errnum',['../classmysqlpp_1_1Connection.html#a3cb1bf601b19dbb87b36bed4590f4214',1,'mysqlpp::Connection::errnum()'],['../classmysqlpp_1_1DBDriver.html#aa840c50ecd1c823a8ff7f33545ea6ddb',1,'mysqlpp::DBDriver::errnum()'],['../classmysqlpp_1_1BadQuery.html#ad0ba4ef64626959ccdddd660eda95bd8',1,'mysqlpp::BadQuery::errnum()'],['../classmysqlpp_1_1ConnectionFailed.html#a30c67de85288ec8e3fd137155f0a4443',1,'mysqlpp::ConnectionFailed::errnum()'],['../classmysqlpp_1_1DBSelectionFailed.html#a29358548ad36942e9e9b0dfdbdc78dce',1,'mysqlpp::DBSelectionFailed::errnum()'],['../classmysqlpp_1_1Query.html#ae8466a2016113e57fee94769fc41ea04',1,'mysqlpp::Query::errnum()']]], ['error_102',['error',['../classmysqlpp_1_1Connection.html#abe12a159a0a05fbd6c9ade18cea39246',1,'mysqlpp::Connection::error()'],['../classmysqlpp_1_1DBDriver.html#a649df7e2b57192734dcd7ba05b80af20',1,'mysqlpp::DBDriver::error()'],['../classmysqlpp_1_1Query.html#a7f0ac13c968f3c662205d1f8af415cb3',1,'mysqlpp::Query::error()']]], ['error_103',['Error',['../classmysqlpp_1_1Option.html#af0c0e22b32d2ee489bc77d360ce74c8c',1,'mysqlpp::Option']]], ['error_5fmessage_5f_104',['error_message_',['../classmysqlpp_1_1Connection.html#affbdf4dd97aa66cfa592fc85938faf41',1,'mysqlpp::Connection']]], ['escape_5fq_105',['escape_q',['../classmysqlpp_1_1String.html#a4275e3e94749bb23896d17c068469917',1,'mysqlpp::String::escape_q()'],['../classmysqlpp_1_1mysql__type__info.html#a0830b5d94fa4951885679499f3a1da4e',1,'mysqlpp::mysql_type_info::escape_q()'],['../classmysqlpp_1_1SQLTypeAdapter.html#a7aa842e6f75ce9dcda07eff1e65da337',1,'mysqlpp::SQLTypeAdapter::escape_q()'],['../classmysqlpp_1_1SQLBuffer.html#ab46d62b3b2d94d201eedd40a615adfca',1,'mysqlpp::SQLBuffer::escape_q()']]], ['escape_5fstring_106',['escape_string',['../classmysqlpp_1_1SQLQueryParms.html#a1da14b19c0b3992d54af4953b6e380f9',1,'mysqlpp::SQLQueryParms::escape_string(std::string *ps, const char *original=0, size_t length=0) const'],['../classmysqlpp_1_1SQLQueryParms.html#a235d4542d758cc37153cd2ace4782a4f',1,'mysqlpp::SQLQueryParms::escape_string(char *escaped, const char *original, size_t length) const'],['../classmysqlpp_1_1Query.html#a02a2c704dedd789c781b7b10420f82e7',1,'mysqlpp::Query::escape_string(std::string *ps, const char *original=0, size_t length=0) const'],['../classmysqlpp_1_1Query.html#a3afcb145e4bd1100e5da0086da20394a',1,'mysqlpp::Query::escape_string(char *escaped, const char *original, size_t length) const'],['../classmysqlpp_1_1SQLStream.html#a6e29b4815905252a66ebf6a521dc2e1c',1,'mysqlpp::SQLStream::escape_string(std::string *ps, const char *original=0, size_t length=0) const'],['../classmysqlpp_1_1SQLStream.html#a5906b8be3d7ee86d947c5fd52f0c55cb',1,'mysqlpp::SQLStream::escape_string(char *escaped, const char *original, size_t length) const'],['../classmysqlpp_1_1DBDriver.html#a69881b0fab7f7d10c1d1adc7aacbbd6a',1,'mysqlpp::DBDriver::escape_string(char *to, const char *from, size_t length)'],['../classmysqlpp_1_1DBDriver.html#a64b30d25d02719ffc22f9b3ba92cdd89',1,'mysqlpp::DBDriver::escape_string(std::string *ps, const char *original, size_t length)']]], ['escape_5fstring_5fno_5fconn_107',['escape_string_no_conn',['../classmysqlpp_1_1DBDriver.html#a2a404051fc2cc55b9e1f41cfe47190f3',1,'mysqlpp::DBDriver::escape_string_no_conn(char *to, const char *from, size_t length)'],['../classmysqlpp_1_1DBDriver.html#a8eff95a3ac80a6719e15036f3bf2273f',1,'mysqlpp::DBDriver::escape_string_no_conn(std::string *ps, const char *original=0, size_t length=0)']]], ['escape_5ftype0_108',['escape_type0',['../manip_8h.html#ae85db9a9abb211c818c9c3c1241bd660',1,'mysqlpp']]], ['exception_109',['Exception',['../classmysqlpp_1_1Exception.html#ac8fcfb052b81644ebf6d966d626e6ca9',1,'mysqlpp::Exception::Exception(const Exception &e) MAY_THROW()'],['../classmysqlpp_1_1Exception.html#ad9410f221db3876329a168d6c6a0864f',1,'mysqlpp::Exception::Exception(const char *w="")'],['../classmysqlpp_1_1Exception.html#ab6bce06d1c5f5a8ace87764ea118e25d',1,'mysqlpp::Exception::Exception(const std::string &w)'],['../classmysqlpp_1_1Exception.html',1,'mysqlpp::Exception']]], ['exceptions_2eh_110',['exceptions.h',['../exceptions_8h.html',1,'']]], ['exchange_111',['exchange',['../classmysqlpp_1_1ConnectionPool.html#a4f9844f2c57c9f51f1b5a2b8a996ee15',1,'mysqlpp::ConnectionPool']]], ['exec_112',['exec',['../classmysqlpp_1_1Query.html#a23057cc385f9645d7d7ef00aecc2c8ba',1,'mysqlpp::Query::exec()'],['../classmysqlpp_1_1Query.html#a985acb52d0a988d1800c8fc4f4c5dc06',1,'mysqlpp::Query::exec(const std::string &str)']]], ['execute_113',['execute',['../classmysqlpp_1_1DBDriver.html#aa5ce8af647f93839757a8398a9e106db',1,'mysqlpp::DBDriver::execute()'],['../classmysqlpp_1_1Query.html#a03ee1b9e393d88de946f5be804ea88cf',1,'mysqlpp::Query::execute()'],['../classmysqlpp_1_1Query.html#aaf36ce2e47a62fae2cc507a7750d1ecd',1,'mysqlpp::Query::execute(SQLQueryParms &p)'],['../classmysqlpp_1_1Query.html#af2cc737d916e4e1c9fd0392316e5415c',1,'mysqlpp::Query::execute(const SQLTypeAdapter &str)'],['../classmysqlpp_1_1Query.html#a1faab5676c797dac619c6c98dc264e3c',1,'mysqlpp::Query::execute(const char *str, size_t len)']]], ['extra_5fargs_114',['extra_args',['../classmysqlpp_1_1CommandLineBase.html#aa8efb9e02ee1ac9af845f726c293fc55',1,'mysqlpp::CommandLineBase']]] ]; mysql++-3.3.0/doc/html/refman/search/variables_6.html000644 000765 000024 00000002653 14042362133 023130 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/classes_9.js000644 000765 000024 00000000705 14042362133 022264 0ustar00tangentstaff000000 000000 var searchData= [ ['multiresultsoption_548',['MultiResultsOption',['../classmysqlpp_1_1MultiResultsOption.html',1,'mysqlpp']]], ['multistatementsoption_549',['MultiStatementsOption',['../classmysqlpp_1_1MultiStatementsOption.html',1,'mysqlpp']]], ['mutexfailed_550',['MutexFailed',['../classmysqlpp_1_1MutexFailed.html',1,'mysqlpp']]], ['mysql_5ftype_5finfo_551',['mysql_type_info',['../classmysqlpp_1_1mysql__type__info.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/typedefs_2.html000644 000765 000024 00000002652 14042362133 022776 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/classes_d.html000644 000765 000024 00000002651 14042362133 022671 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/enumvalues_0.html000644 000765 000024 00000002654 14042362133 023337 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/variables_b.js000644 000765 000024 00000000237 14042362133 022650 0ustar00tangentstaff000000 000000 var searchData= [ ['retrieved_1012',['retrieved',['../classmysqlpp_1_1BadConversion.html#affa2b749b5a068b5bcbfa25d6e0cff48',1,'mysqlpp::BadConversion']]] ]; mysql++-3.3.0/doc/html/refman/search/all_a.html000644 000765 000024 00000002645 14042362133 022004 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/functions_f.js000644 000765 000024 00000002253 14042362133 022714 0ustar00tangentstaff000000 000000 var searchData= [ ['query_863',['query',['../classmysqlpp_1_1Connection.html#a6954d437d52004915fbc96a0be79ab37',1,'mysqlpp::Connection::query(const char *qstr=0)'],['../classmysqlpp_1_1Connection.html#af7aaad10bb2f08cae4384f5c227c0f19',1,'mysqlpp::Connection::query(const std::string &qstr)']]], ['query_864',['Query',['../classmysqlpp_1_1Query.html#a6c6cbae18ebcb31b6d44e7784d5a3daa',1,'mysqlpp::Query::Query(Connection *c, bool te=true, const char *qstr=0)'],['../classmysqlpp_1_1Query.html#a936b1062bb31b3428ead059a26590b6b',1,'mysqlpp::Query::Query(const Query &q)']]], ['query_5finfo_865',['query_info',['../classmysqlpp_1_1DBDriver.html#aada58fbda1a5e24921db7a41cf012ef8',1,'mysqlpp::DBDriver']]], ['quote_5fq_866',['quote_q',['../classmysqlpp_1_1String.html#a097ecb7273db07c03ceb190c52e82e54',1,'mysqlpp::String::quote_q()'],['../classmysqlpp_1_1SQLBuffer.html#a8fffb0c9ac385d3c54076aa3046a876f',1,'mysqlpp::SQLBuffer::quote_q()'],['../classmysqlpp_1_1SQLTypeAdapter.html#a6048cdd727bc1d03530c4380a6a9dbf9',1,'mysqlpp::SQLTypeAdapter::quote_q()'],['../classmysqlpp_1_1mysql__type__info.html#a389dc3e54837afc88579034fdbd1028b',1,'mysqlpp::mysql_type_info::quote_q()']]] ]; mysql++-3.3.0/doc/html/refman/search/files_3.html000644 000765 000024 00000002647 14042362133 022262 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/functions_c.html000644 000765 000024 00000002653 14042362133 023245 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/all_c.js000644 000765 000024 00000007767 14042362133 021470 0ustar00tangentstaff000000 000000 var searchData= [ ['name_205',['name',['../classmysqlpp_1_1mysql__type__info.html#ae076a2162cc025e9dd500907814abb22',1,'mysqlpp::mysql_type_info::name()'],['../classmysqlpp_1_1Field.html#ac44d0e13e19e14995a6e845f0f4c5875',1,'mysqlpp::Field::name()']]], ['namedpipeoption_206',['NamedPipeOption',['../classmysqlpp_1_1NamedPipeOption.html',1,'mysqlpp']]], ['names_5f_207',['names_',['../classmysqlpp_1_1ResultBase.html#a5a3645ffe00fcd51838317fc40f0194a',1,'mysqlpp::ResultBase']]], ['next_5fresult_208',['next_result',['../classmysqlpp_1_1DBDriver.html#abaa7e674055e1e1715c7ccb0f515fedb',1,'mysqlpp::DBDriver']]], ['noexceptions_209',['NoExceptions',['../classmysqlpp_1_1NoExceptions.html',1,'mysqlpp::NoExceptions'],['../classmysqlpp_1_1NoExceptions.html#a973bfe8078bf8502a301d2eb95645d37',1,'mysqlpp::NoExceptions::NoExceptions()'],['../classmysqlpp_1_1OptionalExceptions.html#ac41c56580e33a404b4f43f38f26bea82',1,'mysqlpp::OptionalExceptions::NoExceptions()']]], ['noexceptions_2eh_210',['noexceptions.h',['../noexceptions_8h.html',1,'']]], ['noschemaoption_211',['NoSchemaOption',['../classmysqlpp_1_1NoSchemaOption.html',1,'mysqlpp']]], ['notransaction_212',['NoTransaction',['../classmysqlpp_1_1NoTransaction.html',1,'mysqlpp::NoTransaction'],['../classmysqlpp_1_1NoTransaction.html#a7b255c73b2f978254a6d71c193ee7804',1,'mysqlpp::NoTransaction::NoTransaction()']]], ['now_213',['now',['../classmysqlpp_1_1DateTime.html#aecad5f88097d9288ec7007f743085e3f',1,'mysqlpp::DateTime']]], ['now_214',['NOW',['../datetime_8h.html#a410ed5ef22e3a93637ea0ca2848705e3',1,'mysqlpp']]], ['nr_5fcode_215',['nr_code',['../classmysqlpp_1_1DBDriver.html#a0275cada4dbb299404e02bffc113adda',1,'mysqlpp::DBDriver']]], ['nr_5ferror_216',['nr_error',['../classmysqlpp_1_1DBDriver.html#a0275cada4dbb299404e02bffc113addaa49d5639a52fa99f7c926c0dc4f047eda',1,'mysqlpp::DBDriver']]], ['nr_5flast_5fresult_217',['nr_last_result',['../classmysqlpp_1_1DBDriver.html#a0275cada4dbb299404e02bffc113addaaea97a245e323d633c3be7fa0f5630cc7',1,'mysqlpp::DBDriver']]], ['nr_5fmore_5fresults_218',['nr_more_results',['../classmysqlpp_1_1DBDriver.html#a0275cada4dbb299404e02bffc113addaa17d7be6c71fbd797813ef09ae89eb421',1,'mysqlpp::DBDriver']]], ['nr_5fnot_5fsupported_219',['nr_not_supported',['../classmysqlpp_1_1DBDriver.html#a0275cada4dbb299404e02bffc113addaa7e069992f33f9811026317b5f6f6ebd3',1,'mysqlpp::DBDriver']]], ['null_220',['Null',['../classmysqlpp_1_1Null.html',1,'mysqlpp::Null< Type, Behavior >'],['../classmysqlpp_1_1Null.html#aa776139d049ac32aa7850ecd5e623b8f',1,'mysqlpp::Null::Null()'],['../classmysqlpp_1_1Null.html#a738398c6aa00bd5a4d691f6277e453ca',1,'mysqlpp::Null::Null(const Type &x)'],['../classmysqlpp_1_1Null.html#ab04ae6dc7e0e4ad80021014a6e241b67',1,'mysqlpp::Null::Null(const null_type &)']]], ['null_221',['null',['../null_8h.html#a1a8f2c546401c800672ddcc7fc9abd62',1,'mysqlpp']]], ['null_2eh_222',['null.h',['../null_8h.html',1,'']]], ['null_5fstr_223',['null_str',['../null_8h.html#afe6d3a4c5d24603fa2bde1a36fbc6b86',1,'mysqlpp']]], ['null_5ftype_224',['null_type',['../classmysqlpp_1_1null__type.html',1,'mysqlpp']]], ['nullisblank_225',['NullIsBlank',['../structmysqlpp_1_1NullIsBlank.html',1,'mysqlpp']]], ['nullisnull_226',['NullIsNull',['../structmysqlpp_1_1NullIsNull.html',1,'mysqlpp']]], ['nulliszero_227',['NullIsZero',['../structmysqlpp_1_1NullIsZero.html',1,'mysqlpp']]], ['num_228',['num',['../structmysqlpp_1_1SQLParseElement.html#adad4d34b5d3435cf327382a0cc343323',1,'mysqlpp::SQLParseElement']]], ['num_5ffields_229',['num_fields',['../classmysqlpp_1_1DBDriver.html#a5a45673f238c640c94917fb52f5fb631',1,'mysqlpp::DBDriver::num_fields()'],['../classmysqlpp_1_1ResultBase.html#abad7be8ab5e6f997f0b11a8d35a9bc0f',1,'mysqlpp::ResultBase::num_fields()']]], ['num_5frows_230',['num_rows',['../classmysqlpp_1_1DBDriver.html#a48498943758ec764b98a787c53ff6fbd',1,'mysqlpp::DBDriver::num_rows()'],['../classmysqlpp_1_1StoreQueryResult.html#a77f6955108a7d2ff328f1bfdffdbe974',1,'mysqlpp::StoreQueryResult::num_rows()']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_8.html000644 000765 000024 00000002653 14042362133 023172 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/search_m.png000644 000765 000024 00000000236 14042362133 022327 0ustar00tangentstaff000000 000000 ‰PNG  IHDR5^KMgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<0IDATxÚb,//g```<~ü8ˆúøñ#ˆúÿÿ?bbZP,Xnݺ¤ ¥<~áE§IEND®B`‚mysql++-3.3.0/doc/html/refman/search/enums_1.js000644 000765 000024 00000000370 14042362133 021744 0ustar00tangentstaff000000 000000 var searchData= [ ['error_1042',['Error',['../classmysqlpp_1_1Option.html#af0c0e22b32d2ee489bc77d360ce74c8c',1,'mysqlpp::Option']]], ['escape_5ftype0_1043',['escape_type0',['../manip_8h.html#ae85db9a9abb211c818c9c3c1241bd660',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/variables_4.js000644 000765 000024 00000000641 14042362133 022571 0ustar00tangentstaff000000 000000 var searchData= [ ['equl_998',['equl',['../structmysqlpp_1_1equal__list__ba.html#a5f8c1b857897e584bd78c1a9f58439a7',1,'mysqlpp::equal_list_ba::equl()'],['../structmysqlpp_1_1equal__list__b.html#a5092f431c71217200400c94eed206f6e',1,'mysqlpp::equal_list_b::equl()']]], ['error_5fmessage_5f_999',['error_message_',['../classmysqlpp_1_1Connection.html#affbdf4dd97aa66cfa592fc85938faf41',1,'mysqlpp::Connection']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_18.html000644 000765 000024 00000002654 14042362133 023254 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/search.js000644 000765 000024 00000055741 14042362133 021656 0ustar00tangentstaff000000 000000 /* @licstart The following is the entire license notice for the JavaScript code in this file. The MIT License (MIT) Copyright (C) 1997-2020 by Dimitri van Heesch Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @licend The above is the entire license notice for the JavaScript code in this file */ function convertToId(search) { var result = ''; for (i=0;i do a search { this.Search(); } } this.OnSearchSelectKey = function(evt) { var e = (evt) ? evt : window.event; // for IE if (e.keyCode==40 && this.searchIndex0) // Up { this.searchIndex--; this.OnSelectItem(this.searchIndex); } else if (e.keyCode==13 || e.keyCode==27) { this.OnSelectItem(this.searchIndex); this.CloseSelectionWindow(); this.DOMSearchField().focus(); } return false; } // --------- Actions // Closes the results window. this.CloseResultsWindow = function() { this.DOMPopupSearchResultsWindow().style.display = 'none'; this.DOMSearchClose().style.display = 'none'; this.Activate(false); } this.CloseSelectionWindow = function() { this.DOMSearchSelectWindow().style.display = 'none'; } // Performs a search. this.Search = function() { this.keyTimeout = 0; // strip leading whitespace var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); var code = searchValue.toLowerCase().charCodeAt(0); var idxChar = searchValue.substr(0, 1).toLowerCase(); if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair { idxChar = searchValue.substr(0, 2); } var resultsPage; var resultsPageWithSearch; var hasResultsPage; var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); if (idx!=-1) { var hexCode=idx.toString(16); resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; resultsPageWithSearch = resultsPage+'?'+escape(searchValue); hasResultsPage = true; } else // nothing available for this search term { resultsPage = this.resultsPath + '/nomatches' + this.extension; resultsPageWithSearch = resultsPage; hasResultsPage = false; } window.frames.MSearchResults.location = resultsPageWithSearch; var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); if (domPopupSearchResultsWindow.style.display!='block') { var domSearchBox = this.DOMSearchBox(); this.DOMSearchClose().style.display = 'inline-block'; if (this.insideFrame) { var domPopupSearchResults = this.DOMPopupSearchResults(); domPopupSearchResultsWindow.style.position = 'relative'; domPopupSearchResultsWindow.style.display = 'block'; var width = document.body.clientWidth - 8; // the -8 is for IE :-( domPopupSearchResultsWindow.style.width = width + 'px'; domPopupSearchResults.style.width = width + 'px'; } else { var domPopupSearchResults = this.DOMPopupSearchResults(); var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; domPopupSearchResultsWindow.style.display = 'block'; left -= domPopupSearchResults.offsetWidth; domPopupSearchResultsWindow.style.top = top + 'px'; domPopupSearchResultsWindow.style.left = left + 'px'; } } this.lastSearchValue = searchValue; this.lastResultsPage = resultsPage; } // -------- Activation Functions // Activates or deactivates the search panel, resetting things to // their default values if necessary. this.Activate = function(isActive) { if (isActive || // open it this.DOMPopupSearchResultsWindow().style.display == 'block' ) { this.DOMSearchBox().className = 'MSearchBoxActive'; var searchField = this.DOMSearchField(); if (searchField.value == this.searchLabel) // clear "Search" term upon entry { searchField.value = ''; this.searchActive = true; } } else if (!isActive) // directly remove the panel { this.DOMSearchBox().className = 'MSearchBoxInactive'; this.DOMSearchField().value = this.searchLabel; this.searchActive = false; this.lastSearchValue = '' this.lastResultsPage = ''; } } } // ----------------------------------------------------------------------- // The class that handles everything on the search results page. function SearchResults(name) { // The number of matches from the last run of . this.lastMatchCount = 0; this.lastKey = 0; this.repeatOn = false; // Toggles the visibility of the passed element ID. this.FindChildElement = function(id) { var parentElement = document.getElementById(id); var element = parentElement.firstChild; while (element && element!=parentElement) { if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') { return element; } if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) { element = element.firstChild; } else if (element.nextSibling) { element = element.nextSibling; } else { do { element = element.parentNode; } while (element && element!=parentElement && !element.nextSibling); if (element && element!=parentElement) { element = element.nextSibling; } } } } this.Toggle = function(id) { var element = this.FindChildElement(id); if (element) { if (element.style.display == 'block') { element.style.display = 'none'; } else { element.style.display = 'block'; } } } // Searches for the passed string. If there is no parameter, // it takes it from the URL query. // // Always returns true, since other documents may try to call it // and that may or may not be possible. this.Search = function(search) { if (!search) // get search word from URL { search = window.location.search; search = search.substring(1); // Remove the leading '?' search = unescape(search); } search = search.replace(/^ +/, ""); // strip leading spaces search = search.replace(/ +$/, ""); // strip trailing spaces search = search.toLowerCase(); search = convertToId(search); var resultRows = document.getElementsByTagName("div"); var matches = 0; var i = 0; while (i < resultRows.length) { var row = resultRows.item(i); if (row.className == "SRResult") { var rowMatchName = row.id.toLowerCase(); rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' if (search.length<=rowMatchName.length && rowMatchName.substr(0, search.length)==search) { row.style.display = 'block'; matches++; } else { row.style.display = 'none'; } } i++; } document.getElementById("Searching").style.display='none'; if (matches == 0) // no results { document.getElementById("NoMatches").style.display='block'; } else // at least one result { document.getElementById("NoMatches").style.display='none'; } this.lastMatchCount = matches; return true; } // return the first item with index index or higher that is visible this.NavNext = function(index) { var focusItem; while (1) { var focusName = 'Item'+index; focusItem = document.getElementById(focusName); if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { break; } else if (!focusItem) // last element { break; } focusItem=null; index++; } return focusItem; } this.NavPrev = function(index) { var focusItem; while (1) { var focusName = 'Item'+index; focusItem = document.getElementById(focusName); if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { break; } else if (!focusItem) // last element { break; } focusItem=null; index--; } return focusItem; } this.ProcessKeys = function(e) { if (e.type == "keydown") { this.repeatOn = false; this.lastKey = e.keyCode; } else if (e.type == "keypress") { if (!this.repeatOn) { if (this.lastKey) this.repeatOn = true; return false; // ignore first keypress after keydown } } else if (e.type == "keyup") { this.lastKey = 0; this.repeatOn = false; } return this.lastKey!=0; } this.Nav = function(evt,itemIndex) { var e = (evt) ? evt : window.event; // for IE if (e.keyCode==13) return true; if (!this.ProcessKeys(e)) return false; if (this.lastKey==38) // Up { var newIndex = itemIndex-1; var focusItem = this.NavPrev(newIndex); if (focusItem) { var child = this.FindChildElement(focusItem.parentNode.parentNode.id); if (child && child.style.display == 'block') // children visible { var n=0; var tmpElem; while (1) // search for last child { tmpElem = document.getElementById('Item'+newIndex+'_c'+n); if (tmpElem) { focusItem = tmpElem; } else // found it! { break; } n++; } } } if (focusItem) { focusItem.focus(); } else // return focus to search field { parent.document.getElementById("MSearchField").focus(); } } else if (this.lastKey==40) // Down { var newIndex = itemIndex+1; var focusItem; var item = document.getElementById('Item'+itemIndex); var elem = this.FindChildElement(item.parentNode.parentNode.id); if (elem && elem.style.display == 'block') // children visible { focusItem = document.getElementById('Item'+itemIndex+'_c0'); } if (!focusItem) focusItem = this.NavNext(newIndex); if (focusItem) focusItem.focus(); } else if (this.lastKey==39) // Right { var item = document.getElementById('Item'+itemIndex); var elem = this.FindChildElement(item.parentNode.parentNode.id); if (elem) elem.style.display = 'block'; } else if (this.lastKey==37) // Left { var item = document.getElementById('Item'+itemIndex); var elem = this.FindChildElement(item.parentNode.parentNode.id); if (elem) elem.style.display = 'none'; } else if (this.lastKey==27) // Escape { parent.searchBox.CloseResultsWindow(); parent.document.getElementById("MSearchField").focus(); } else if (this.lastKey==13) // Enter { return true; } return false; } this.NavChild = function(evt,itemIndex,childIndex) { var e = (evt) ? evt : window.event; // for IE if (e.keyCode==13) return true; if (!this.ProcessKeys(e)) return false; if (this.lastKey==38) // Up { if (childIndex>0) { var newIndex = childIndex-1; document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); } else // already at first child, jump to parent { document.getElementById('Item'+itemIndex).focus(); } } else if (this.lastKey==40) // Down { var newIndex = childIndex+1; var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); if (!elem) // last child, jump to parent next parent { elem = this.NavNext(itemIndex+1); } if (elem) { elem.focus(); } } else if (this.lastKey==27) // Escape { parent.searchBox.CloseResultsWindow(); parent.document.getElementById("MSearchField").focus(); } else if (this.lastKey==13) // Enter { return true; } return false; } } function setKeyActions(elem,action) { elem.setAttribute('onkeydown',action); elem.setAttribute('onkeypress',action); elem.setAttribute('onkeyup',action); } function setClassAttr(elem,attr) { elem.setAttribute('class',attr); elem.setAttribute('className',attr); } function createResults() { var results = document.getElementById("SRResults"); for (var e=0; e
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/functions_0.js000644 000765 000024 00000005010 14042362133 022620 0ustar00tangentstaff000000 000000 var searchData= [ ['affected_5frows_654',['affected_rows',['../classmysqlpp_1_1DBDriver.html#ae7f574b870c35e3d07327d07c31211ca',1,'mysqlpp::DBDriver::affected_rows()'],['../classmysqlpp_1_1Query.html#a80d0b71c5cb23f70ebc0d27f0ecc3adc',1,'mysqlpp::Query::affected_rows()']]], ['assign_655',['assign',['../classmysqlpp_1_1String.html#a07d5fc7add1e11e9f11b8169a7f2c792',1,'mysqlpp::String::assign(const char *str, size_type len, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)'],['../classmysqlpp_1_1String.html#a2495cd58ddbf6427747d8bbfefd4f5b7',1,'mysqlpp::String::assign(const std::string &str, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)'],['../classmysqlpp_1_1String.html#a30624cfe0e895bb2e20d653c35cca80c',1,'mysqlpp::String::assign(const char *str, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)'],['../classmysqlpp_1_1RefCountedPointer.html#ac6a54b0c4fdac3d05389639c5bc71168',1,'mysqlpp::RefCountedPointer::assign(T *c)'],['../classmysqlpp_1_1RefCountedPointer.html#aa806e37d44b4d0384dc0bcd1deefd1b9',1,'mysqlpp::RefCountedPointer::assign(const ThisType &other)'],['../classmysqlpp_1_1SQLBuffer.html#abd3057457a375547d7e82fe4fbacbc45',1,'mysqlpp::SQLBuffer::assign(const char *data, size_type length, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)'],['../classmysqlpp_1_1SQLBuffer.html#a36e353c31f41674a5c21d7a84c404845',1,'mysqlpp::SQLBuffer::assign(const std::string &s, mysql_type_info type=mysql_type_info::string_type, bool is_null=false)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a2e1ab68e3dad7c0fd30b822a8f708d21',1,'mysqlpp::SQLTypeAdapter::assign(const SQLTypeAdapter &sta)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a1911afd4940a3739268996a803f972a1',1,'mysqlpp::SQLTypeAdapter::assign(const char *pc, int len=-1)'],['../classmysqlpp_1_1SQLTypeAdapter.html#a3a8b1056b9ea57efdbb44a099d5841e0',1,'mysqlpp::SQLTypeAdapter::assign(const null_type &n)']]], ['at_656',['at',['../classmysqlpp_1_1String.html#af0417324b1aebfc72616ce4d82efc669',1,'mysqlpp::String::at()'],['../classmysqlpp_1_1Row.html#ad5a7faa9ea2c55d215b11f89ef249b6a',1,'mysqlpp::Row::at()'],['../classmysqlpp_1_1SQLTypeAdapter.html#a433c6996a1f8afa5af2ee6da83c3a37f',1,'mysqlpp::SQLTypeAdapter::at()']]], ['auto_5fincrement_657',['auto_increment',['../classmysqlpp_1_1Field.html#a777755e6c546e98ea2d227368a0bebe9',1,'mysqlpp::Field']]], ['autoflag_658',['AutoFlag',['../classmysqlpp_1_1AutoFlag.html#abcd9fbf81e922d5d16959c1dbff0bfbc',1,'mysqlpp::AutoFlag']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_b.html000644 000765 000024 00000002653 14042362133 023244 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_2.html000644 000765 000024 00000002647 14042362133 022261 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/functions_12.js000644 000765 000024 00000010537 14042362133 022715 0ustar00tangentstaff000000 000000 var searchData= [ ['table_927',['table',['../classmysqlpp_1_1Field.html#a8a3fdaf1db0c6c7a6f28298eb6badf05',1,'mysqlpp::Field::table()'],['../classmysqlpp_1_1ResultBase.html#ac781c52c6a6724601d0a889363149a38',1,'mysqlpp::ResultBase::table()']]], ['tcpconnection_928',['TCPConnection',['../classmysqlpp_1_1TCPConnection.html#a75cbc21607ac3f1998e11ea58faad534',1,'mysqlpp::TCPConnection::TCPConnection()'],['../classmysqlpp_1_1TCPConnection.html#a3712f8d8ee8f4521f733d410fb2ab6c8',1,'mysqlpp::TCPConnection::TCPConnection(const char *addr, const char *db=0, const char *user=0, const char *password=0)'],['../classmysqlpp_1_1TCPConnection.html#af19b05063295b93feae5de92caad693c',1,'mysqlpp::TCPConnection::TCPConnection(const TCPConnection &other)']]], ['thread_5faware_929',['thread_aware',['../classmysqlpp_1_1Connection.html#a3c2442a1e8f9210b23eb10d3c024d6df',1,'mysqlpp::Connection::thread_aware()'],['../classmysqlpp_1_1DBDriver.html#ad186d2b986ab0f1495daf63c3f0a40a0',1,'mysqlpp::DBDriver::thread_aware()']]], ['thread_5fend_930',['thread_end',['../classmysqlpp_1_1Connection.html#a63d89963e63c74fe0dcb0eb00a5a8cbd',1,'mysqlpp::Connection::thread_end()'],['../classmysqlpp_1_1DBDriver.html#a8a670435400c145e7c022adbc7a6f739',1,'mysqlpp::DBDriver::thread_end()']]], ['thread_5fid_931',['thread_id',['../classmysqlpp_1_1Connection.html#a60c43e10eb9db82c075443add56785ce',1,'mysqlpp::Connection::thread_id()'],['../classmysqlpp_1_1DBDriver.html#a9c73ac21eb910ee9a28e41a8dad453bc',1,'mysqlpp::DBDriver::thread_id()']]], ['thread_5fstart_932',['thread_start',['../classmysqlpp_1_1Connection.html#aade1534fea22a5d1e2f315515f23f880',1,'mysqlpp::Connection::thread_start()'],['../classmysqlpp_1_1DBDriver.html#affae19fda3fc1a8b25e9725e9aa41fe7',1,'mysqlpp::DBDriver::thread_start()']]], ['throw_5fexceptions_933',['throw_exceptions',['../classmysqlpp_1_1OptionalExceptions.html#acac3ee271ab36b9f65e6c2110a04ffff',1,'mysqlpp::OptionalExceptions']]], ['time_934',['Time',['../classmysqlpp_1_1Time.html#ab22256adcccacf69e092d0d057018c3e',1,'mysqlpp::Time::Time()'],['../classmysqlpp_1_1Time.html#a86338fd97b61c82032d78626b5e71534',1,'mysqlpp::Time::Time(unsigned char h, unsigned char m, unsigned char s)'],['../classmysqlpp_1_1Time.html#a4677463d04af62e7f5e273ef221fed65',1,'mysqlpp::Time::Time(const Time &other)'],['../classmysqlpp_1_1Time.html#acf9cfcb0cd6f5d900658acf8394f5379',1,'mysqlpp::Time::Time(const DateTime &other)'],['../classmysqlpp_1_1Time.html#a6b5f0dd2e877e95dd2520d4507d6a657',1,'mysqlpp::Time::Time(const char *str)'],['../classmysqlpp_1_1Time.html#a96c89e955f11f0aaf21b73ad1ad910f2',1,'mysqlpp::Time::Time(const Str &str)'],['../classmysqlpp_1_1Time.html#a86cd1bb6ce70199907d6853e3e1fe53d',1,'mysqlpp::Time::Time(time_t t)']]], ['timestamp_935',['timestamp',['../classmysqlpp_1_1Field.html#a4508b043ec630a28868f75dba2dcefd5',1,'mysqlpp::Field']]], ['tiny_5fint_936',['tiny_int',['../classmysqlpp_1_1tiny__int.html#a260d365f3716314aaf9f7f4e1b25a2c1',1,'mysqlpp::tiny_int::tiny_int()'],['../classmysqlpp_1_1tiny__int.html#a4b508b1914798beeb778b982655b88c9',1,'mysqlpp::tiny_int::tiny_int(value_type v)']]], ['to_5fstring_937',['to_string',['../classmysqlpp_1_1String.html#a5cec60e5c5798929b78c43170167f775',1,'mysqlpp::String']]], ['transaction_938',['Transaction',['../classmysqlpp_1_1Transaction.html#a5472100c371746d23311bbd74067c5dc',1,'mysqlpp::Transaction::Transaction(Connection &conn, bool consistent=false)'],['../classmysqlpp_1_1Transaction.html#aa83ef7b66a4c62fbc012f7ce71e6b2a5',1,'mysqlpp::Transaction::Transaction(Connection &conn, IsolationLevel level, IsolationScope scope=this_transaction, bool consistent=false)']]], ['trylock_939',['trylock',['../classmysqlpp_1_1BeecryptMutex.html#a8f2ede53abf6ca90e733f139d860999d',1,'mysqlpp::BeecryptMutex']]], ['type_940',['type',['../classmysqlpp_1_1Field.html#ad3c602a453c813c9442af389d1826058',1,'mysqlpp::Field::type()'],['../classmysqlpp_1_1String.html#af131cc4467ce7db60cb06c037ae07b4c',1,'mysqlpp::String::type()'],['../classmysqlpp_1_1SQLBuffer.html#afe48e952d2b7d1cc70984cefe0ea21b7',1,'mysqlpp::SQLBuffer::type()']]], ['type_5fid_941',['type_id',['../classmysqlpp_1_1SQLTypeAdapter.html#ab60274160c2aca7a752a0dd59f8bf27d',1,'mysqlpp::SQLTypeAdapter']]], ['typelookupfailed_942',['TypeLookupFailed',['../classmysqlpp_1_1TypeLookupFailed.html#ae4048296649be8771305d11d655ab128',1,'mysqlpp::TypeLookupFailed']]] ]; mysql++-3.3.0/doc/html/refman/search/all_5.js000644 000765 000024 00000016436 14042362133 021403 0ustar00tangentstaff000000 000000 var searchData= [ ['fetch_5ffield_115',['fetch_field',['../classmysqlpp_1_1DBDriver.html#ae1559ffecfa39fcca51e5190c3ef2dd0',1,'mysqlpp::DBDriver::fetch_field()'],['../classmysqlpp_1_1ResultBase.html#a7cab2f3d0a4981c8c205ef1dcd148cdc',1,'mysqlpp::ResultBase::fetch_field() const'],['../classmysqlpp_1_1ResultBase.html#a828a05022ab4526abc58c88ff66ab65b',1,'mysqlpp::ResultBase::fetch_field(Fields::size_type i) const'],['../classmysqlpp_1_1UseQueryResult.html#a8bebfc62afd411184544926854530227',1,'mysqlpp::UseQueryResult::fetch_field() const'],['../classmysqlpp_1_1UseQueryResult.html#a40ee09b721976d85e5167a333cccf5fb',1,'mysqlpp::UseQueryResult::fetch_field(Fields::size_type i) const']]], ['fetch_5flengths_116',['fetch_lengths',['../classmysqlpp_1_1DBDriver.html#aad3ce5642565baa9f726dc0783f1d2f9',1,'mysqlpp::DBDriver::fetch_lengths()'],['../classmysqlpp_1_1UseQueryResult.html#abf21991cc4612e85a86b4c8b16507aa0',1,'mysqlpp::UseQueryResult::fetch_lengths() const']]], ['fetch_5fraw_5frow_117',['fetch_raw_row',['../classmysqlpp_1_1UseQueryResult.html#ab9369befd99bc6bec5665a038e5a5eea',1,'mysqlpp::UseQueryResult']]], ['fetch_5frow_118',['fetch_row',['../classmysqlpp_1_1UseQueryResult.html#aeb04925edae3dda7aa3cfc567480ec20',1,'mysqlpp::UseQueryResult::fetch_row()'],['../classmysqlpp_1_1DBDriver.html#ab389d52312e33926b6cd41d04667a0ba',1,'mysqlpp::DBDriver::fetch_row()']]], ['field_119',['Field',['../classmysqlpp_1_1Field.html#a6833175bda71e745b6b83df585030154',1,'mysqlpp::Field::Field(const Field &other)'],['../classmysqlpp_1_1Field.html#a887e4566a1266e5c98be8d86eedbd548',1,'mysqlpp::Field::Field(const MYSQL_FIELD *pf)'],['../classmysqlpp_1_1Field.html#af93a6fa53e488b3566bcb1ea4908e996',1,'mysqlpp::Field::Field()']]], ['field_120',['field',['../classmysqlpp_1_1ResultBase.html#a14d36c2330286a7f2761a94b4314f444',1,'mysqlpp::ResultBase']]], ['field_121',['Field',['../classmysqlpp_1_1Field.html',1,'mysqlpp']]], ['field_2eh_122',['field.h',['../field_8h.html',1,'']]], ['field_5flist_123',['field_list',['../classmysqlpp_1_1Row.html#a52e5e86b8c718bd136775dcbd70b7c95',1,'mysqlpp::Row::field_list(const char *d, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) const'],['../classmysqlpp_1_1Row.html#ae5fce3ea026ec4bfc955406ea095a58c',1,'mysqlpp::Row::field_list(const char *d=",") const'],['../classmysqlpp_1_1Row.html#a636c03a6a7f7f4abbb5213c0658aa9a4',1,'mysqlpp::Row::field_list(const char *d, Manip m) const'],['../classmysqlpp_1_1Row.html#aaa66beadb335ff141aab3b6c16ad99e7',1,'mysqlpp::Row::field_list(const char *d, Manip m, const std::vector< bool > &vb) const'],['../classmysqlpp_1_1Row.html#a19be385bd4a03d8cbe79aefa7f3ca2d1',1,'mysqlpp::Row::field_list(const char *d, const std::vector< bool > &vb) const'],['../classmysqlpp_1_1Row.html#a00e1081a9e6e0e400eeeaba3c4cfd07a',1,'mysqlpp::Row::field_list(const std::vector< bool > &vb) const'],['../classmysqlpp_1_1Row.html#a147aaaa8a29022e1069b63323866968e',1,'mysqlpp::Row::field_list(const char *d, Manip m, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) const'],['../classmysqlpp_1_1Row.html#a28bfec90454946d0adb35b62dd594eaa',1,'mysqlpp::Row::field_list(bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false) const']]], ['field_5fname_124',['field_name',['../classmysqlpp_1_1ResultBase.html#a0b54766b327814a78fcfb1fb3aa7f2d2',1,'mysqlpp::ResultBase']]], ['field_5fnames_125',['field_names',['../classmysqlpp_1_1ResultBase.html#a3600373c3b09d982b28cb140841edc9b',1,'mysqlpp::ResultBase']]], ['field_5fnames_2eh_126',['field_names.h',['../field__names_8h.html',1,'']]], ['field_5fnum_127',['field_num',['../classmysqlpp_1_1Row.html#a860b5ec5156cc644bb4d2656d7044575',1,'mysqlpp::Row::field_num()'],['../classmysqlpp_1_1ResultBase.html#ae62270bceb936176b95c21fbbcffc845',1,'mysqlpp::ResultBase::field_num()']]], ['field_5fseek_128',['field_seek',['../classmysqlpp_1_1UseQueryResult.html#a0e7d5988960da5d1dbe3cb289815309a',1,'mysqlpp::UseQueryResult::field_seek()'],['../classmysqlpp_1_1DBDriver.html#a3ef8a76a607e6ba32ff8b2688368d0f3',1,'mysqlpp::DBDriver::field_seek()']]], ['field_5ftype_129',['field_type',['../classmysqlpp_1_1ResultBase.html#a5e008a59841230913f93d8585e72d5fc',1,'mysqlpp::ResultBase']]], ['field_5ftypes_130',['field_types',['../classmysqlpp_1_1ResultBase.html#aaba9906e58d03a3f5ec969c909f3cf35',1,'mysqlpp::ResultBase']]], ['field_5ftypes_2eh_131',['field_types.h',['../field__types_8h.html',1,'']]], ['fieldnames_132',['FieldNames',['../classmysqlpp_1_1FieldNames.html#adbadd878ad84d13634fef61d7205cfe8',1,'mysqlpp::FieldNames::FieldNames()'],['../classmysqlpp_1_1FieldNames.html#a09bb05d6361a0d50ff7a06092cfd480f',1,'mysqlpp::FieldNames::FieldNames(const FieldNames &other)'],['../classmysqlpp_1_1FieldNames.html#a5a7ac14ce335849923bedec760e24222',1,'mysqlpp::FieldNames::FieldNames(const ResultBase *res)'],['../classmysqlpp_1_1FieldNames.html#a31c5e4316f0d8aac02c2bff2a278d706',1,'mysqlpp::FieldNames::FieldNames(int i)'],['../classmysqlpp_1_1FieldNames.html',1,'mysqlpp::FieldNames']]], ['fields_133',['fields',['../structmysqlpp_1_1equal__list__b.html#a4b47050126de3e1afbc99cba2f4f37b6',1,'mysqlpp::equal_list_b::fields()'],['../structmysqlpp_1_1value__list__b.html#ae4db426c6a7d661f5a94d9dc4b1acce7',1,'mysqlpp::value_list_b::fields()'],['../classmysqlpp_1_1ResultBase.html#a50aa09c8f5492beb8a5d802755d94f0d',1,'mysqlpp::ResultBase::fields()']]], ['fields_134',['Fields',['../field_8h.html#a6ece05119812efae848df2e61e413273',1,'mysqlpp']]], ['fields_5f_135',['fields_',['../classmysqlpp_1_1ResultBase.html#a77840415ae9c611506e39e3f42f6ce1f',1,'mysqlpp::ResultBase']]], ['fieldtypes_136',['FieldTypes',['../classmysqlpp_1_1FieldTypes.html#a233d74a8659827951874c0e47e0351f5',1,'mysqlpp::FieldTypes::FieldTypes()'],['../classmysqlpp_1_1FieldTypes.html#a3508d5cf2018e20ee872683b98efa6c4',1,'mysqlpp::FieldTypes::FieldTypes(const ResultBase *res)'],['../classmysqlpp_1_1FieldTypes.html#a5fc59aa9502f78bd30a1926533b95dd3',1,'mysqlpp::FieldTypes::FieldTypes(int i)'],['../classmysqlpp_1_1FieldTypes.html',1,'mysqlpp::FieldTypes']]], ['finish_5fparse_137',['finish_parse',['../classmysqlpp_1_1CommandLineBase.html#a2351077d0a931ee3ba9738464aaba0c6',1,'mysqlpp::CommandLineBase']]], ['for_5feach_138',['for_each',['../classmysqlpp_1_1Query.html#a2468c96fcf7ea01ebde250f9e9cd0523',1,'mysqlpp::Query::for_each(const SQLTypeAdapter &query, Function fn)'],['../classmysqlpp_1_1Query.html#a1436c089b356ccaeca67d1fd5bbd4280',1,'mysqlpp::Query::for_each(Function fn)'],['../classmysqlpp_1_1Query.html#ab9e16f754112ec2f743db10d92059f86',1,'mysqlpp::Query::for_each(const SSQLS &ssqls, Function fn)']]], ['foundrowsoption_139',['FoundRowsOption',['../classmysqlpp_1_1FoundRowsOption.html',1,'mysqlpp']]], ['free_5fresult_140',['free_result',['../classmysqlpp_1_1DBDriver.html#a25d7d00df44add6decb59cecd6ab6411',1,'mysqlpp::DBDriver']]], ['front_141',['front',['../classmysqlpp_1_1Row.html#ae11a98d528212a8d726a954f7367e180',1,'mysqlpp::Row']]] ]; mysql++-3.3.0/doc/html/refman/search/pages_0.html000644 000765 000024 00000002647 14042362133 022254 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/enumvalues_1.html000644 000765 000024 00000002654 14042362133 023340 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/classes_e.html000644 000765 000024 00000002651 14042362133 022672 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/classes_8.js000644 000765 000024 00000000353 14042362133 022262 0ustar00tangentstaff000000 000000 var searchData= [ ['localfilesoption_546',['LocalFilesOption',['../classmysqlpp_1_1LocalFilesOption.html',1,'mysqlpp']]], ['localinfileoption_547',['LocalInfileOption',['../classmysqlpp_1_1LocalInfileOption.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/typedefs_3.html000644 000765 000024 00000002652 14042362133 022777 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/variables_7.html000644 000765 000024 00000002653 14042362133 023131 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/variables_c.js000644 000765 000024 00000000253 14042362133 022647 0ustar00tangentstaff000000 000000 var searchData= [ ['string_5ftype_1013',['string_type',['../classmysqlpp_1_1mysql__type__info.html#a18d778e786cf06f63a7222129feed227',1,'mysqlpp::mysql_type_info']]] ]; mysql++-3.3.0/doc/html/refman/search/mag_sel.png000644 000765 000024 00000000721 14042362133 022154 0ustar00tangentstaff000000 000000 ‰PNG  IHDR:…å>gAMA± üa cHRMm˜sŽà8‚ÕzÊ´3Dv„6*½bKGDÿ‡Ì¿ pHYs  šœtIMEâ  OíWßÄIDAT(ÏÍÒ½JÃ`àïfÏ’ü’¶WÐEgÄ© ºz’ââÒ‚v)ÝCI E7ål‡‡ÎO’~WéáÚ£‰ÂÄ“µ£°u#öumåœ •¬–•Âì Ï6¤aDÊ]~Öƒ…ÐvV(H9e!ËýÄJ˜Cb.Tß0e9Àalaka,Ü‘:zßL{S‡3Ÿ{z0ÌNí^©Pºu*\vt°ðw•Ú…p5 ƒ}m-;ÑøñÖ[K¯þÑ›}%º²þ%=Ã%tEXtdate:create2018-12-07T11:28:17+00:00-?CÛ%tEXtdate:modify2018-12-07T11:28:17+00:00\bûgIEND®B`‚mysql++-3.3.0/doc/html/refman/search/enums_1.html000644 000765 000024 00000002647 14042362133 022305 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/all_b.js000644 000765 000024 00000011051 14042362133 021444 0ustar00tangentstaff000000 000000 var searchData= [ ['examples_181',['examples',['../namespacemysqlpp_1_1examples.html',1,'mysqlpp']]], ['internal_182',['internal',['../namespacemysqlpp_1_1internal.html',1,'mysqlpp']]], ['manip_183',['manip',['../structmysqlpp_1_1equal__list__ba.html#ae80eca8a48261205c78b7f73f1aa8f17',1,'mysqlpp::equal_list_ba::manip()'],['../structmysqlpp_1_1equal__list__b.html#a0519c5d83b6ded32b258ff58d1972e38',1,'mysqlpp::equal_list_b::manip()'],['../structmysqlpp_1_1value__list__ba.html#a88e7f44bdf891147b949faa780a7948b',1,'mysqlpp::value_list_ba::manip()'],['../structmysqlpp_1_1value__list__b.html#af40a0443dfc363c76fa2201ea0bc352c',1,'mysqlpp::value_list_b::manip()']]], ['manip_2eh_184',['manip.h',['../manip_8h.html',1,'']]], ['max_5fidle_5ftime_185',['max_idle_time',['../classmysqlpp_1_1ConnectionPool.html#a8a5ba414a5b02c48d64501c25b64a656',1,'mysqlpp::ConnectionPool']]], ['max_5flength_186',['max_length',['../classmysqlpp_1_1Field.html#afa185acf090746d01d9b84c40c5e9d13',1,'mysqlpp::Field']]], ['max_5fsize_187',['max_size',['../classmysqlpp_1_1String.html#a75e6378c0624036c762bc89f89919edd',1,'mysqlpp::String::max_size()'],['../classmysqlpp_1_1Row.html#ae5e47f65ff7f6650ca4e6e291571c2a5',1,'mysqlpp::Row::max_size()']]], ['minute_188',['minute',['../classmysqlpp_1_1DateTime.html#a4cad53260478413f244b93aaa0097437',1,'mysqlpp::DateTime::minute(unsigned char m)'],['../classmysqlpp_1_1DateTime.html#a530e5f2879b0180f4d8a9d5a202d759b',1,'mysqlpp::DateTime::minute() const'],['../classmysqlpp_1_1Time.html#ad1f0ceffefa07814fe1ff7f413c6f474',1,'mysqlpp::Time::minute(unsigned char m)'],['../classmysqlpp_1_1Time.html#ac41f1d1a6fc75c8e7229e2fb96909dee',1,'mysqlpp::Time::minute() const']]], ['month_189',['month',['../classmysqlpp_1_1Date.html#afaaa0eea8c9011bd1fed64d47b36e237',1,'mysqlpp::Date::month(unsigned char m)'],['../classmysqlpp_1_1Date.html#a5aa9856e7c036e86ca2e8e30ae600800',1,'mysqlpp::Date::month() const'],['../classmysqlpp_1_1DateTime.html#a27355f13f6d00783beaccd3252538efd',1,'mysqlpp::DateTime::month(unsigned char m)'],['../classmysqlpp_1_1DateTime.html#a60df06d7f47b7a835aa30b2b45f854f0',1,'mysqlpp::DateTime::month() const']]], ['more_5fresults_190',['more_results',['../classmysqlpp_1_1Query.html#aeeaff6b3fb94ff4bcad4046a833ee2ed',1,'mysqlpp::Query::more_results()'],['../classmysqlpp_1_1DBDriver.html#a7b2168472fbe6ecb93609187001357e7',1,'mysqlpp::DBDriver::more_results()']]], ['multiple_5fkey_191',['multiple_key',['../classmysqlpp_1_1Field.html#ab4e3e8f448ec16e47be2f45e4c11cc96',1,'mysqlpp::Field']]], ['multiresultsoption_192',['MultiResultsOption',['../classmysqlpp_1_1MultiResultsOption.html',1,'mysqlpp']]], ['multistatementsoption_193',['MultiStatementsOption',['../classmysqlpp_1_1MultiStatementsOption.html',1,'mysqlpp']]], ['mutexfailed_194',['MutexFailed',['../classmysqlpp_1_1MutexFailed.html#a4c7c778e653345efde2211ae76f02e7b',1,'mysqlpp::MutexFailed::MutexFailed()'],['../classmysqlpp_1_1MutexFailed.html',1,'mysqlpp::MutexFailed']]], ['myset_2eh_195',['myset.h',['../myset_8h.html',1,'']]], ['mysql_2b_2b_20reference_20manual_196',['MySQL++ Reference Manual',['../index.html',1,'']]], ['mysql_2b_2b_2eh_197',['mysql++.h',['../mysql_09_09_8h.html',1,'']]], ['mysql_5ftype_5finfo_198',['mysql_type_info',['../classmysqlpp_1_1mysql__type__info.html#a497b41bf3e4e0f8b8fd14807c663559d',1,'mysqlpp::mysql_type_info::mysql_type_info()'],['../classmysqlpp_1_1mysql__type__info.html#a2241d92a6ba848bad3519fbcce54f323',1,'mysqlpp::mysql_type_info::mysql_type_info(enum_field_types t, bool _unsigned=false, bool _null=false)'],['../classmysqlpp_1_1mysql__type__info.html#a045c7f8f8f6a039ef021dc5c192a7bff',1,'mysqlpp::mysql_type_info::mysql_type_info(const mysql_type_info &t)'],['../classmysqlpp_1_1mysql__type__info.html#a579e000af3c38789851b486488ea224a',1,'mysqlpp::mysql_type_info::mysql_type_info(const std::type_info &t)'],['../classmysqlpp_1_1mysql__type__info.html',1,'mysqlpp::mysql_type_info']]], ['mysqlpp_5fheader_5fversion_199',['MYSQLPP_HEADER_VERSION',['../mysql_09_09_8h.html#aa5519915a48d82e2f6958f059ed41079',1,'mysql++.h']]], ['mysqlpp_5futf8_5fcol_200',['MYSQLPP_UTF8_COL',['../common_8h.html#a6d000c4cd322dac7cdf8f43acba810cc',1,'common.h']]], ['mysqlpp_5futf8_5fcs_201',['MYSQLPP_UTF8_CS',['../common_8h.html#a817040871caaaaf21e471a7d76fffa19',1,'common.h']]], ['mysqlpp_5fversion_202',['MYSQLPP_VERSION',['../mysql_09_09_8h.html#a9e2bea148cfa102c37bad4ec0d79bb3c',1,'mysql++.h']]], ['mystring_2eh_203',['mystring.h',['../mystring_8h.html',1,'']]], ['ssqlsxlat_204',['ssqlsxlat',['../namespacemysqlpp_1_1ssqlsxlat.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/all_18.html000644 000765 000024 00000002646 14042362133 022015 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/nomatches.html000644 000765 000024 00000000764 14042362133 022715 0ustar00tangentstaff000000 000000
    No Matches
    mysql++-3.3.0/doc/html/refman/search/functions_4.js000644 000765 000024 00000020032 14042362133 022625 0ustar00tangentstaff000000 000000 var searchData= [ ['empty_710',['empty',['../classmysqlpp_1_1ConnectionPool.html#ac7f3bd443b9a70fb21ce86fa7ced880e',1,'mysqlpp::ConnectionPool::empty()'],['../classmysqlpp_1_1String.html#a9159f93d7c73c2a2c5ec62f55db92297',1,'mysqlpp::String::empty()'],['../classmysqlpp_1_1Row.html#afeb347bf428595bdd88b186611bc5379',1,'mysqlpp::Row::empty()']]], ['enable_5fexceptions_711',['enable_exceptions',['../classmysqlpp_1_1OptionalExceptions.html#a46ce5ac667513bac88c0bd459115f236',1,'mysqlpp::OptionalExceptions']]], ['enable_5fssl_712',['enable_ssl',['../classmysqlpp_1_1DBDriver.html#a2c1d658505dd0e14b1d54eef8142e12d',1,'mysqlpp::DBDriver']]], ['end_713',['end',['../classmysqlpp_1_1String.html#aaea2346cde37d332327202dbadde9e30',1,'mysqlpp::String::end()'],['../classmysqlpp_1_1Row.html#a8385cf922dbd81c8ce3a784181c64f32',1,'mysqlpp::Row::end()']]], ['enumeration_714',['enumeration',['../classmysqlpp_1_1Field.html#a864c0336cf9cb67231d8210045ae9478',1,'mysqlpp::Field']]], ['equal_5flist_715',['equal_list',['../classmysqlpp_1_1Row.html#a774ed0ca6b5b70de2055a7e6256573fa',1,'mysqlpp::Row::equal_list(const char *d=",", const char *e=" = ") const'],['../classmysqlpp_1_1Row.html#ac27ab8ed2667598da2ad1bd3a5a7b6b7',1,'mysqlpp::Row::equal_list(const char *d, const char *e, Manip m) const'],['../vallist_8h.html#a690e19dc9016c200586543559a0236ce',1,'mysqlpp::equal_list(const Seq1 &s1, const Seq2 &s2, const char *d, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)'],['../vallist_8h.html#a91b3eac886712cf5caf5da2fd1b50280',1,'mysqlpp::equal_list(const Seq1 &s1, const Seq2 &s2, const char *d, const char *e, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)'],['../vallist_8h.html#ab118db64ba8109b183aca1ef5af12964',1,'mysqlpp::equal_list(const Seq1 &s1, const Seq2 &s2, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)'],['../vallist_8h.html#a158ffc0201b5aabf20c7be69c230c8bc',1,'mysqlpp::equal_list(const Seq1 &s1, const Seq2 &s2, const char *d, const char *e, Manip m, bool t0, bool t1=false, bool t2=false, bool t3=false, bool t4=false, bool t5=false, bool t6=false, bool t7=false, bool t8=false, bool t9=false, bool ta=false, bool tb=false, bool tc=false)'],['../vallist_8h.html#aec821d7f933c45a1496fd6c916d1a27f',1,'mysqlpp::equal_list(const Seq1 &s1, const Seq2 &s2, const char *d, const char *e, Manip m, const std::vector< bool > &vb)'],['../vallist_8h.html#a1aa2b7c57b4d42e4587f4cd4172e8229',1,'mysqlpp::equal_list(const Seq1 &s1, const Seq2 &s2, const char *d, const char *e, Manip m)'],['../vallist_8h.html#a6d668a9cbaf5a51c877c70b8305033e5',1,'mysqlpp::equal_list(const Seq1 &s1, const Seq2 &s2, const char *d=",", const char *e=" = ")']]], ['equal_5flist_5fb_716',['equal_list_b',['../structmysqlpp_1_1equal__list__b.html#a39f8de2a70484b8834f7dc8b78f49288',1,'mysqlpp::equal_list_b']]], ['equal_5flist_5fba_717',['equal_list_ba',['../structmysqlpp_1_1equal__list__ba.html#a2055acbb60e6d09362b8fb5194afca9a',1,'mysqlpp::equal_list_ba']]], ['errnum_718',['errnum',['../classmysqlpp_1_1Connection.html#a3cb1bf601b19dbb87b36bed4590f4214',1,'mysqlpp::Connection::errnum()'],['../classmysqlpp_1_1DBDriver.html#aa840c50ecd1c823a8ff7f33545ea6ddb',1,'mysqlpp::DBDriver::errnum()'],['../classmysqlpp_1_1BadQuery.html#ad0ba4ef64626959ccdddd660eda95bd8',1,'mysqlpp::BadQuery::errnum()'],['../classmysqlpp_1_1ConnectionFailed.html#a30c67de85288ec8e3fd137155f0a4443',1,'mysqlpp::ConnectionFailed::errnum()'],['../classmysqlpp_1_1DBSelectionFailed.html#a29358548ad36942e9e9b0dfdbdc78dce',1,'mysqlpp::DBSelectionFailed::errnum()'],['../classmysqlpp_1_1Query.html#ae8466a2016113e57fee94769fc41ea04',1,'mysqlpp::Query::errnum()']]], ['error_719',['error',['../classmysqlpp_1_1Connection.html#abe12a159a0a05fbd6c9ade18cea39246',1,'mysqlpp::Connection::error()'],['../classmysqlpp_1_1DBDriver.html#a649df7e2b57192734dcd7ba05b80af20',1,'mysqlpp::DBDriver::error()'],['../classmysqlpp_1_1Query.html#a7f0ac13c968f3c662205d1f8af415cb3',1,'mysqlpp::Query::error()']]], ['escape_5fq_720',['escape_q',['../classmysqlpp_1_1String.html#a4275e3e94749bb23896d17c068469917',1,'mysqlpp::String::escape_q()'],['../classmysqlpp_1_1SQLBuffer.html#ab46d62b3b2d94d201eedd40a615adfca',1,'mysqlpp::SQLBuffer::escape_q()'],['../classmysqlpp_1_1SQLTypeAdapter.html#a7aa842e6f75ce9dcda07eff1e65da337',1,'mysqlpp::SQLTypeAdapter::escape_q()'],['../classmysqlpp_1_1mysql__type__info.html#a0830b5d94fa4951885679499f3a1da4e',1,'mysqlpp::mysql_type_info::escape_q()']]], ['escape_5fstring_721',['escape_string',['../classmysqlpp_1_1SQLStream.html#a5906b8be3d7ee86d947c5fd52f0c55cb',1,'mysqlpp::SQLStream::escape_string(char *escaped, const char *original, size_t length) const'],['../classmysqlpp_1_1SQLStream.html#a6e29b4815905252a66ebf6a521dc2e1c',1,'mysqlpp::SQLStream::escape_string(std::string *ps, const char *original=0, size_t length=0) const'],['../classmysqlpp_1_1Query.html#a3afcb145e4bd1100e5da0086da20394a',1,'mysqlpp::Query::escape_string(char *escaped, const char *original, size_t length) const'],['../classmysqlpp_1_1Query.html#a02a2c704dedd789c781b7b10420f82e7',1,'mysqlpp::Query::escape_string(std::string *ps, const char *original=0, size_t length=0) const'],['../classmysqlpp_1_1SQLQueryParms.html#a235d4542d758cc37153cd2ace4782a4f',1,'mysqlpp::SQLQueryParms::escape_string()'],['../classmysqlpp_1_1DBDriver.html#a64b30d25d02719ffc22f9b3ba92cdd89',1,'mysqlpp::DBDriver::escape_string(std::string *ps, const char *original, size_t length)'],['../classmysqlpp_1_1DBDriver.html#a69881b0fab7f7d10c1d1adc7aacbbd6a',1,'mysqlpp::DBDriver::escape_string(char *to, const char *from, size_t length)'],['../classmysqlpp_1_1SQLQueryParms.html#a1da14b19c0b3992d54af4953b6e380f9',1,'mysqlpp::SQLQueryParms::escape_string()']]], ['escape_5fstring_5fno_5fconn_722',['escape_string_no_conn',['../classmysqlpp_1_1DBDriver.html#a2a404051fc2cc55b9e1f41cfe47190f3',1,'mysqlpp::DBDriver::escape_string_no_conn(char *to, const char *from, size_t length)'],['../classmysqlpp_1_1DBDriver.html#a8eff95a3ac80a6719e15036f3bf2273f',1,'mysqlpp::DBDriver::escape_string_no_conn(std::string *ps, const char *original=0, size_t length=0)']]], ['exception_723',['Exception',['../classmysqlpp_1_1Exception.html#ac8fcfb052b81644ebf6d966d626e6ca9',1,'mysqlpp::Exception::Exception(const Exception &e) MAY_THROW()'],['../classmysqlpp_1_1Exception.html#ad9410f221db3876329a168d6c6a0864f',1,'mysqlpp::Exception::Exception(const char *w="")'],['../classmysqlpp_1_1Exception.html#ab6bce06d1c5f5a8ace87764ea118e25d',1,'mysqlpp::Exception::Exception(const std::string &w)']]], ['exchange_724',['exchange',['../classmysqlpp_1_1ConnectionPool.html#a4f9844f2c57c9f51f1b5a2b8a996ee15',1,'mysqlpp::ConnectionPool']]], ['exec_725',['exec',['../classmysqlpp_1_1Query.html#a23057cc385f9645d7d7ef00aecc2c8ba',1,'mysqlpp::Query::exec()'],['../classmysqlpp_1_1Query.html#a985acb52d0a988d1800c8fc4f4c5dc06',1,'mysqlpp::Query::exec(const std::string &str)']]], ['execute_726',['execute',['../classmysqlpp_1_1DBDriver.html#aa5ce8af647f93839757a8398a9e106db',1,'mysqlpp::DBDriver::execute()'],['../classmysqlpp_1_1Query.html#a03ee1b9e393d88de946f5be804ea88cf',1,'mysqlpp::Query::execute()'],['../classmysqlpp_1_1Query.html#aaf36ce2e47a62fae2cc507a7750d1ecd',1,'mysqlpp::Query::execute(SQLQueryParms &p)'],['../classmysqlpp_1_1Query.html#af2cc737d916e4e1c9fd0392316e5415c',1,'mysqlpp::Query::execute(const SQLTypeAdapter &str)'],['../classmysqlpp_1_1Query.html#a1faab5676c797dac619c6c98dc264e3c',1,'mysqlpp::Query::execute(const char *str, size_t len)']]], ['extra_5fargs_727',['extra_args',['../classmysqlpp_1_1CommandLineBase.html#aa8efb9e02ee1ac9af845f726c293fc55',1,'mysqlpp::CommandLineBase']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_14.html000644 000765 000024 00000002654 14042362133 023250 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/enums_5.js000644 000765 000024 00000000265 14042362133 021753 0ustar00tangentstaff000000 000000 var searchData= [ ['sourcesink_1051',['SourceSink',['../classmysqlpp_1_1ssqlsxlat_1_1CommandLine.html#acff98a36fac151c8f37f7f1d3991773e',1,'mysqlpp::ssqlsxlat::CommandLine']]] ]; mysql++-3.3.0/doc/html/refman/search/variables_0.js000644 000765 000024 00000000440 14042362133 022562 0ustar00tangentstaff000000 000000 var searchData= [ ['actual_5fsize_989',['actual_size',['../classmysqlpp_1_1BadConversion.html#a34e2c445a3c9a35377937062131cc0ed',1,'mysqlpp::BadConversion']]], ['arg_5f_990',['arg_',['../classmysqlpp_1_1DataOption.html#a80fc5b75a6ba6f5caf74caabb8f679f6',1,'mysqlpp::DataOption']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_5.html000644 000765 000024 00000002653 14042362133 023167 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/files_e.html000644 000765 000024 00000002647 14042362133 022344 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/classes_12.js000644 000765 000024 00000000414 14042362133 022333 0ustar00tangentstaff000000 000000 var searchData= [ ['windowsnamedpipeconnection_610',['WindowsNamedPipeConnection',['../classmysqlpp_1_1WindowsNamedPipeConnection.html',1,'mysqlpp']]], ['writetimeoutoption_611',['WriteTimeoutOption',['../classmysqlpp_1_1WriteTimeoutOption.html',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/search/all_7.html000644 000765 000024 00000002645 14042362133 021732 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/all_1.js000644 000765 000024 00000007626 14042362133 021400 0ustar00tangentstaff000000 000000 var searchData= [ ['back_11',['back',['../classmysqlpp_1_1Row.html#aba39771a98ead7d55b44070b28509e70',1,'mysqlpp::Row']]], ['badconversion_12',['BadConversion',['../classmysqlpp_1_1BadConversion.html#a1319fb1a5af6d71c2dcb0b758eda3e02',1,'mysqlpp::BadConversion::BadConversion(const char *w="")'],['../classmysqlpp_1_1BadConversion.html#ad7af8c4551b59261aac4b677c2fe83bb',1,'mysqlpp::BadConversion::BadConversion(const std::string &w, const char *tn, const char *d, size_t r, size_t a)'],['../classmysqlpp_1_1BadConversion.html#a82cc066cce4605acadac58a5ae0ac0a0',1,'mysqlpp::BadConversion::BadConversion(const char *tn, const char *d, size_t r, size_t a)'],['../classmysqlpp_1_1BadConversion.html',1,'mysqlpp::BadConversion']]], ['badfieldname_13',['BadFieldName',['../classmysqlpp_1_1BadFieldName.html#a431a74a0d37c63d3391302ef3c1466ed',1,'mysqlpp::BadFieldName::BadFieldName()'],['../classmysqlpp_1_1BadFieldName.html',1,'mysqlpp::BadFieldName']]], ['badindex_14',['BadIndex',['../classmysqlpp_1_1BadIndex.html#a4067f2146bef7e0c309f9f832d46cbe1',1,'mysqlpp::BadIndex::BadIndex()'],['../classmysqlpp_1_1BadIndex.html',1,'mysqlpp::BadIndex']]], ['badinsertpolicy_15',['BadInsertPolicy',['../classmysqlpp_1_1BadInsertPolicy.html#afd5c4e816f1ece5cc77bd9a717c6589d',1,'mysqlpp::BadInsertPolicy::BadInsertPolicy()'],['../classmysqlpp_1_1BadInsertPolicy.html',1,'mysqlpp::BadInsertPolicy']]], ['badoption_16',['BadOption',['../classmysqlpp_1_1BadOption.html#af075d3f4704c79bc7d6407abebfed6ff',1,'mysqlpp::BadOption::BadOption(const char *w, const std::type_info &ti)'],['../classmysqlpp_1_1BadOption.html#a3bee408533d419841996176c169ecd30',1,'mysqlpp::BadOption::BadOption(const std::string &w, const std::type_info &ti)'],['../classmysqlpp_1_1BadOption.html',1,'mysqlpp::BadOption']]], ['badparamcount_17',['BadParamCount',['../classmysqlpp_1_1BadParamCount.html#a692b5bd2cdf4a558a6e92400414a4ebc',1,'mysqlpp::BadParamCount::BadParamCount()'],['../classmysqlpp_1_1BadParamCount.html',1,'mysqlpp::BadParamCount']]], ['badquery_18',['BadQuery',['../classmysqlpp_1_1BadQuery.html#a49600596b86773d8a13f0cd15a02118a',1,'mysqlpp::BadQuery::BadQuery(const char *w="", int e=0)'],['../classmysqlpp_1_1BadQuery.html#a35999dcc51a6cd76a03bd4a1d565d888',1,'mysqlpp::BadQuery::BadQuery(const std::string &w, int e=0)'],['../classmysqlpp_1_1BadQuery.html',1,'mysqlpp::BadQuery']]], ['base_5ftype_19',['base_type',['../classmysqlpp_1_1mysql__type__info.html#a1dcf647bf75f56eca5c3b342a75a2617',1,'mysqlpp::mysql_type_info']]], ['beecryptmutex_20',['BeecryptMutex',['../classmysqlpp_1_1BeecryptMutex.html#ad5f40c490dfe41d0dce5a2742545bdab',1,'mysqlpp::BeecryptMutex::BeecryptMutex()'],['../classmysqlpp_1_1BeecryptMutex.html',1,'mysqlpp::BeecryptMutex']]], ['beemutex_2eh_21',['beemutex.h',['../beemutex_8h.html',1,'']]], ['before_22',['before',['../structmysqlpp_1_1SQLParseElement.html#a8b0a5afd4a8b825d13579b1427e94331',1,'mysqlpp::SQLParseElement::before()'],['../classmysqlpp_1_1mysql__type__info.html#a9276f86cb57dbe3526d5e3e9b5db7d07',1,'mysqlpp::mysql_type_info::before()']]], ['begin_23',['begin',['../classmysqlpp_1_1String.html#abb8d74d711700dfb13975782d7a54199',1,'mysqlpp::String::begin()'],['../classmysqlpp_1_1Row.html#a265964f5c94649dd27c0e663bbfb518a',1,'mysqlpp::Row::begin()']]], ['binary_5ftype_24',['binary_type',['../classmysqlpp_1_1Field.html#a3294a6683f0fdce76a51a4d08e2ed964',1,'mysqlpp::Field']]], ['blob_5ftype_25',['blob_type',['../classmysqlpp_1_1Field.html#abfd56de16f7a880bfdb5a124643f2cfa',1,'mysqlpp::Field']]], ['booleanoption_26',['BooleanOption',['../options_8h.html#ac9b8af956539a775787583a269827d4b',1,'mysqlpp']]], ['bound_27',['bound',['../classmysqlpp_1_1SQLQueryParms.html#a90660977a90ed50dd83a7ddc26f0f334',1,'mysqlpp::SQLQueryParms']]], ['build_5ferror_5fmessage_28',['build_error_message',['../classmysqlpp_1_1Connection.html#a3dcec3b1e9a1aa6efb287bc9ec11f7d5',1,'mysqlpp::Connection']]] ]; mysql++-3.3.0/doc/html/refman/search/functions_16.js000644 000765 000024 00000000735 14042362133 022720 0ustar00tangentstaff000000 000000 var searchData= [ ['year_958',['year',['../classmysqlpp_1_1DateTime.html#ad05f2bfc0df3b9940e97349a7eae3951',1,'mysqlpp::DateTime::year() const'],['../classmysqlpp_1_1DateTime.html#af0334cd0302c99eeaab042d03ebbfec3',1,'mysqlpp::DateTime::year(unsigned short y)'],['../classmysqlpp_1_1Date.html#ae3ad93d899600e3d60a34912ce657216',1,'mysqlpp::Date::year() const'],['../classmysqlpp_1_1Date.html#a6c88fea71a585cfbc8de5d7226ad33b9',1,'mysqlpp::Date::year(unsigned short y)']]] ]; mysql++-3.3.0/doc/html/refman/search/classes_2.html000644 000765 000024 00000002651 14042362133 022607 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/functions_c.js000644 000765 000024 00000003324 14042362133 022711 0ustar00tangentstaff000000 000000 var searchData= [ ['name_778',['name',['../classmysqlpp_1_1Field.html#ac44d0e13e19e14995a6e845f0f4c5875',1,'mysqlpp::Field::name()'],['../classmysqlpp_1_1mysql__type__info.html#ae076a2162cc025e9dd500907814abb22',1,'mysqlpp::mysql_type_info::name()']]], ['next_5fresult_779',['next_result',['../classmysqlpp_1_1DBDriver.html#abaa7e674055e1e1715c7ccb0f515fedb',1,'mysqlpp::DBDriver']]], ['noexceptions_780',['NoExceptions',['../classmysqlpp_1_1NoExceptions.html#a973bfe8078bf8502a301d2eb95645d37',1,'mysqlpp::NoExceptions']]], ['notransaction_781',['NoTransaction',['../classmysqlpp_1_1NoTransaction.html#a7b255c73b2f978254a6d71c193ee7804',1,'mysqlpp::NoTransaction']]], ['now_782',['now',['../classmysqlpp_1_1DateTime.html#aecad5f88097d9288ec7007f743085e3f',1,'mysqlpp::DateTime']]], ['now_783',['NOW',['../datetime_8h.html#a410ed5ef22e3a93637ea0ca2848705e3',1,'mysqlpp']]], ['null_784',['Null',['../classmysqlpp_1_1Null.html#aa776139d049ac32aa7850ecd5e623b8f',1,'mysqlpp::Null::Null()'],['../classmysqlpp_1_1Null.html#a738398c6aa00bd5a4d691f6277e453ca',1,'mysqlpp::Null::Null(const Type &x)'],['../classmysqlpp_1_1Null.html#ab04ae6dc7e0e4ad80021014a6e241b67',1,'mysqlpp::Null::Null(const null_type &)']]], ['num_5ffields_785',['num_fields',['../classmysqlpp_1_1DBDriver.html#a5a45673f238c640c94917fb52f5fb631',1,'mysqlpp::DBDriver::num_fields()'],['../classmysqlpp_1_1ResultBase.html#abad7be8ab5e6f997f0b11a8d35a9bc0f',1,'mysqlpp::ResultBase::num_fields()']]], ['num_5frows_786',['num_rows',['../classmysqlpp_1_1DBDriver.html#a48498943758ec764b98a787c53ff6fbd',1,'mysqlpp::DBDriver::num_rows()'],['../classmysqlpp_1_1StoreQueryResult.html#a77f6955108a7d2ff328f1bfdffdbe974',1,'mysqlpp::StoreQueryResult::num_rows()']]] ]; mysql++-3.3.0/doc/html/refman/search/all_14.html000644 000765 000024 00000002646 14042362133 022011 0ustar00tangentstaff000000 000000
    Loading...
    Searching...
    No Matches
    mysql++-3.3.0/doc/html/refman/search/close.png000644 000765 000024 00000000421 14042362133 021647 0ustar00tangentstaff000000 000000 ‰PNG  IHDR ©¬w&ØIDATuQ½F@ Ü Cë5¼§Cg3(ÐÞw{#*ß—ŸÛË&9Áƒ}ßͲ,ض çy"Š"ÄqŒ<Ï‘¦©æŽišÌ8ޏ®Kß¾6 C”e‰¢(Ä;Žã/‘/¨ÂBVÑxó<»/Ú¶EUUte,"¸ïëºÂgL}ߣ®kçÓ2VçSF1 ƒs•¨1“œÇãÔ ¶ DZÆÆwÍA½$I”ûYQ[Òíú Üo×uŸkÓ*A iWY(G™/0Ï{ûAÏ,ëë)el«n]? yEÂIEND®B`‚mysql++-3.3.0/doc/html/refman/search/all_f.js000644 000765 000024 00000004176 14042362133 021462 0ustar00tangentstaff000000 000000 var searchData= [ ['qparms_2eh_312',['qparms.h',['../qparms_8h.html',1,'']]], ['query_313',['Query',['../classmysqlpp_1_1Query.html',1,'mysqlpp']]], ['query_314',['query',['../classmysqlpp_1_1Connection.html#a6954d437d52004915fbc96a0be79ab37',1,'mysqlpp::Connection::query(const char *qstr=0)'],['../classmysqlpp_1_1Connection.html#af7aaad10bb2f08cae4384f5c227c0f19',1,'mysqlpp::Connection::query(const std::string &qstr)']]], ['query_315',['Query',['../classmysqlpp_1_1Query.html#a6c6cbae18ebcb31b6d44e7784d5a3daa',1,'mysqlpp::Query::Query(Connection *c, bool te=true, const char *qstr=0)'],['../classmysqlpp_1_1Query.html#a936b1062bb31b3428ead059a26590b6b',1,'mysqlpp::Query::Query(const Query &q)']]], ['query_2eh_316',['query.h',['../query_8h.html',1,'']]], ['query_5finfo_317',['query_info',['../classmysqlpp_1_1DBDriver.html#aada58fbda1a5e24921db7a41cf012ef8',1,'mysqlpp::DBDriver']]], ['quote_318',['quote',['../manip_8h.html#ae9f9a1a0b5b6c666cc577ac4ea30f2f8abc8a579670da714d08fece6f43b11b53',1,'mysqlpp']]], ['quote_5fdouble_5fonly_319',['quote_double_only',['../manip_8h.html#ab7c0f5b960b8c68a5bb6615908f8fb4fade9ec989c0afd3cb18e23689f17f74ed',1,'mysqlpp']]], ['quote_5fdouble_5fonly_5ftype0_320',['quote_double_only_type0',['../manip_8h.html#ab7c0f5b960b8c68a5bb6615908f8fb4f',1,'mysqlpp']]], ['quote_5fonly_321',['quote_only',['../manip_8h.html#ac6684f37ebc2f5dc4b526f1858938ae0af77dc617bf2f8715000fea02996eb703',1,'mysqlpp']]], ['quote_5fonly_5ftype0_322',['quote_only_type0',['../manip_8h.html#ac6684f37ebc2f5dc4b526f1858938ae0',1,'mysqlpp']]], ['quote_5fq_323',['quote_q',['../classmysqlpp_1_1String.html#a097ecb7273db07c03ceb190c52e82e54',1,'mysqlpp::String::quote_q()'],['../classmysqlpp_1_1SQLBuffer.html#a8fffb0c9ac385d3c54076aa3046a876f',1,'mysqlpp::SQLBuffer::quote_q()'],['../classmysqlpp_1_1SQLTypeAdapter.html#a6048cdd727bc1d03530c4380a6a9dbf9',1,'mysqlpp::SQLTypeAdapter::quote_q()'],['../classmysqlpp_1_1mysql__type__info.html#a389dc3e54837afc88579034fdbd1028b',1,'mysqlpp::mysql_type_info::quote_q()']]], ['quote_5ftype0_324',['quote_type0',['../manip_8h.html#ae9f9a1a0b5b6c666cc577ac4ea30f2f8',1,'mysqlpp']]] ]; mysql++-3.3.0/doc/html/refman/ssx/splitbar.png000644 000765 000024 00000000472 14042362131 021736 0ustar00tangentstaff000000 000000 ‰PNG  IHDRM¸¿IDATxíÝ¡JCa‡ñç(˜ ëƒ%±Ø4 b±È˜Í¶3˜v^Á±˜…ãó–ŽELƒõ…¥•³ ,ÿb;íç{Ã/¼ðÞÀaYÕ¯åóøq:¼º¹›\òIIIIIIIIIIIIIIIIII-Òçl¹›«õ抢è_t/Ï»ã£ÑíYQVõðêäíã÷´×ùY¬Úÿµ§¦ivók¾_íåýÛ£I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$ýC[Vì=ü[„fÆIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1HeaderExtensionOption.html000644 000765 000024 00000040362 14042362131 027447 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: ParseV2::HeaderExtensionOption Class Reference
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2::HeaderExtensionOption Class Reference

    'option header_extension' directive line More...

    #include <parsev2.h>

    Inheritance diagram for ParseV2::HeaderExtensionOption:
    Collaboration diagram for ParseV2::HeaderExtensionOption:

    Public Member Functions

     HeaderExtensionOption (const std::string &value)
     Constructor.
     
    const char * extension () const
     Return the extension used for C++ headers we emit.
     
    void print (std::ostream &os) const
     Print the option description out to a stream in SSQLS v2 form.
     
    - Public Member Functions inherited from ParseV2::Option
    virtual ~Option ()
     Virtual dtor, since this is a base class.
     
    - Public Member Functions inherited from ParseV2::Line
    virtual ~Line ()
     Virtual dtor, since this is a base class.
     

    Additional Inherited Members

    - Static Public Member Functions inherited from ParseV2::Option
    static Optionparse (const StringList &tl, bool subdirective, const File &file)
     Attempt to create an Option object from information in the passed StringList. More...
     
    - Static Public Member Functions inherited from ParseV2::Line
    static Lineparse (const StringList &tl, bool subdirective, const File &file)
     Virtual ctor, creating one of our subclass objects based on what we're passed. More...
     
    - Protected Member Functions inherited from ParseV2::Option
     Option (const std::string &value)
     Protected ctor, so we cannot be directly instantiated. More...
     
    const char * value () const
     Return the option's value in string form, unmodified from the original parse. More...
     
    - Protected Member Functions inherited from ParseV2::Line
     Line ()
     Protected ctor, to prevent instantiation.
     
    - Static Protected Member Functions inherited from ParseV2::Option
    static bool parse_bool (const std::string &value)
     Convert a string expressing a boolean value to a bool. More...
     

    Detailed Description

    'option header_extension' directive line


    The documentation for this class was generated from the following files:
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2.html000644 000765 000024 00000050462 14042362131 022612 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: ParseV2 Class Reference
    MySQL++ SSQLS v2 Translator  3.3.0

    Parses SSQLS v2 documents and holds the parse result. More...

    #include <parsev2.h>

    Classes

    class  AccessorStyleOption
     'option accessor_style' directive line More...
     
    class  ExceptionOnSchemaMismatchOption
     'option exception_on_schema_mismatch' directive line More...
     
    class  Field
     'field' directive line More...
     
    class  File
     Holds information about an SSQLS v2 file we're parsing. More...
     
    class  FileException
     Exception object thrown to indicate a file I/O error. More...
     
    class  HeaderExtensionOption
     'option header_extension' directive line More...
     
    class  ImplementationExtensionOption
     'option implementation_extension' directive line More...
     
    class  Include
     'include' directive line More...
     
    class  Line
     Base class for parsed SSQLS v2 declaration lines. More...
     
    class  Option
     Base class for known SSQLS v2 'option' directives. More...
     
    class  ParseException
     Exception object thrown by File::error() to report an SSQLS v2 parsing error. More...
     
    class  Table
     'table' directive line More...
     

    Public Types

    typedef std::vector< std::string > StringList
     List of tokens as returned by boost::algorithm::split.
     
    typedef StringList::const_iterator StringListIt
     Iterator into a StringList. More...
     
    typedef std::vector< Line * > LineList
     A list of pointers to Line objects. More...
     
    typedef LineList::const_iterator LineListIt
     Iterator into a LineList. More...
     

    Public Member Functions

     ParseV2 (const char *file_name)
     Constructor. More...
     
     ~ParseV2 ()
     Destructor.
     
    LineListIt begin () const
     Get an iterator pointing to the start of our LineList.
     
    void clear ()
     Dump our line list. More...
     
    LineListIt end () const
     Get an iterator pointing just past the end of our LineList.
     

    Detailed Description

    Parses SSQLS v2 documents and holds the parse result.

    Construct an object of this type from a file name, and you will get either a parse result or a thrown exception.

    Member Typedef Documentation

    ◆ LineList

    typedef std::vector<Line*> ParseV2::LineList

    A list of pointers to Line objects.

    These are used for holding the results of the file parsing step

    ◆ LineListIt

    typedef LineList::const_iterator ParseV2::LineListIt

    Iterator into a LineList.

    It's const because once the parse is completed, we switch into LineList traversal mode, which doesn't modify the list.

    ◆ StringListIt

    typedef StringList::const_iterator ParseV2::StringListIt

    Iterator into a StringList.

    This is const because StringLists are never modified once created

    Constructor & Destructor Documentation

    ◆ ParseV2()

    ParseV2::ParseV2 ( const char *  file_name)

    Constructor.

    Given the name of an SSQLS v2 file, load it up and try to parse it, throwing one of our inner exception types if that fails.

    Parameters
    file_namepath to an SSQLS v2 file to parse; may be in a different directory, given a relative or absolute path to the file
    Exceptions
    FileException
    ParseException

    References ParseV2::Include::begin(), ParseV2::Include::end(), ParseV2::Line::parse(), and ParseV2::File::read_line().

    Member Function Documentation

    ◆ clear()

    void ParseV2::clear ( )
    inline

    Dump our line list.

    Doesn't delete the line objects. This is used by Include, because its creator will take over ownership of those objects.

    Referenced by ParseV2::Include::~Include().


    The documentation for this class was generated from the following files:
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1Line-members.html000644 000765 000024 00000007476 14042362131 025521 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Member List
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2::Line Member List

    This is the complete list of members for ParseV2::Line, including all inherited members.

    Line()ParseV2::Lineinlineprotected
    parse(const StringList &tl, bool subdirective, const File &file)ParseV2::Linestatic
    print(std::ostream &os) const =0ParseV2::Linepure virtual
    ~Line()ParseV2::Lineinlinevirtual
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1Table__inherit__graph.png000644 000765 000024 00000006073 14042362131 027242 0ustar00tangentstaff000000 000000 ‰PNG  IHDR\RÙå³(sRGB®Îé õIDATxípUÇ H‘Þ„ä“a@i¢ ¨4D†b¡EAAtDš(‚0 EŠ ô¢ (%CïUŠ "JH(ùöwøîó½ä=’——¼¼ýÜ3³owo=÷Ï=÷ÞÝì?™,G‚…À®°`ÕäÔsð [‚x|¸7É”)¾Ý9RAýúõ½AJØÎ,¾:ØŠ¤3|E;á>صk—´mÛÖG¬ˆãR|B“>à郫ÏRÀ}B“>¾}ûvY¶l™«W¯–ØØØ4×òÏ?ÿ”U«Vy”{ùòe­óÖ­[~õêUḛ]oß¾í‘lÇŽòÛo¿y„¥çM@€ðÁ2aÂùé§ŸdùòåR±bEY²dIšëÛ¸qc9xð «ÜÙ³gKß¾}_xá©S§Ž¼òÊ+zí«Ó¯_¿.Ï>û¬pv—ŸþYN:售׎f4xذaòÉ'ŸÈË/¿,S¦LQ :wî,÷ß¿<þøã²aÃmÄSO=%ï½÷ž<÷ÜsráÂiÑ¢…,XP5j$ýõ—®ŠÞÿ})Q¢„T«VM£@?gÎß|ó´k×N~øákëÖ­2oÞ<ùã?dþüùrèÐ!— sçΕ¸ò&¾8~ü¸\¼xQ(¿C‡ZoñâÅeêÔ©šôÒ¥KÒ²eK)R¤ˆê}îܹÄEøu0ต ÈçŸ.Ó¦Mk ªV¾gÏ!ŽF 2D•À:t¨|ýõ×’3gN9pà€‚ºpáBMpŒ’æÍ›ë \€Chð?þ(mÚ´QË^³f†=zTX’Õ¬YSräÈ!Õ«W×ðbŊɃ>¨×Þ~Nœ8¡€ú¢E‹ä‹/¾wß}W>þøcM>yòd¹qㆬ]»VËíÕ«—·bRæsžÒ°^”—>úHA"oþüùeÖ¬Y²nÝ:‰0k3%#GŽ”Ê•+«e~øá‡ 4‹4hZ7.*wîÜ: Nž<)Mš4‘N:ÉîÝ»eãÆR»vm=”™5kVí¼>}ú(P%K–$X¬ç'žxB8’óñ$¦žGyDÊ–-«.‹°o¿ýV*T¨ íxàwˆláo¾ù¦|÷Ýwjå ½,Y²¨¥à.þþûoyòÉ'=ô+T¨Þ7mÚTf̘!¿ÿþ»<óÌ32sæLí„Ì™3 ؃È•+—v&å1ìq'íÛ·w•‰ >|¸,]ºô®®Ã•á.Œ8„6˜MþkôÁÞzë­»”|TÀ€{«båÊ•òÚk¯©ëÀGåÝÓ¾óÎ;råÊõùÔ!ËäˆÅöë×OZµj¥àn…ù!::Zç ÂvîÜ)_~ù¥lÚ´I{ì1‚T(—‘€œ>}ZöîÝ«×üàÌaV9®H/è„e÷ïß_J—.­uyI–â €ÇEx“Ö­[+8¸Ž3gÎ貋¡‰˜|8áÚµkɪaºkyì+ï‡W)ë.ß©X)p Æ7&NM|¹rå»&Ä$€…§…äRÒB[àAîqð îsãÃ,mfê ë”luááÿ±B]³–wm³“­(• ØmûŸ€'~ªæ«€Œˆèc-#¬ÍN`ÛìŒÐÝv.%:ú¤µ†Î"{öœ–˜Ï' ¿uÚð9s¶H\ÜMkGšÙ²ðþ¶7ÃÓÛ pkd=§‰¶ÿÞ¶FÅÉôé›2@°à7¶Ú÷Ï_8pÖzão›34½­Ÿ5k³eÙñ.Àx²ˆÅÛIlx|ü-Y¹r¯Ç“ÇØØxë‰âf;ámŸ¿KY³fŸõœ:spOŸ¾('O^Hª¶±ð36YÏϽ-¬÷™[Cß$zeâ9b’Ð ˆ½!¥JõµÞþdÓݯQ™0+V-GÞybª'Vg—-Gë#GÎYoo.j¦LÙ ‘‘ù­Wsåõ>*ªˆ-zŸ^‡øÏ.Ÿ[ûPS¼téBÖ[—;ïC—/ßm½è-l½µ 55“ÕÇ6><Ù–Ø$-çUjX˜÷÷©¡Ž»-gšg²´£Øp;mt¶%มaÚ²g[Ž; ý݃÷>·%àÞ›bPð ÷“¸xruŽ…;€'€³,L£4Má, ÓÎÿïÂäþµ%àlë­}-…m½³µ"àv®Ê–.ÅYÙäœea·suŽK rïÙpÇ¥ÙJl]û'³ëׯçUxÈáá Y³ y=Á’/­ÝÄóKd pejxõÕWmmD¡¢<<1û÷ï÷øÚÚ–>xªòæÍk¢“œapƒÄ&±Àb­’»ÄÄÄȯ¿þš$>o ©I ñÛÂaØ$ Ðá š8q¢Ò¥õ—ËpeMš4ÉÕFþv¶ãÇË/¿ü¢$c£F’·ß~[ù¨\ Ý.âââp@=z´RCq}äÈ·Tw.áÖ2Lnî‘[¶lQ¦8÷°@®ý¶p*ÃB`kC 3‚¦èرcÖ—Á1òÕW_)Kôy½{÷Vª;”†u F¨î êÂú ijРœ8qBÉLjƒ# ÖÂßxã M‡UÓÁä1åöìÙS¯·mÛ&Ÿ~ú©Ô­[W;‚°:uêOðqÁèƒ0: 'ƒu«…¹ .Ä2eÊ(½i ¥ìÞ½»œ={V)ó:vìH°K í£}¬GÐú+~[8`9PÙ±Œ3fŒÐÀ¦ýQ³fÍ”~ J;FÃqÅŠÊ#)cÇŽUö7h‘ Cà­‚³ þCòAZ¸h–hìú$HÅ Mz@ׄàÚpCHùòåÕýèM¢(ùp…œ‘Þ[B(†þ`—¢ø±%¯¿þºtíÚUuÆù+©öËï¿ÿ^Ù8±öÏ>ûLù¦FŒ¡½Ïþ•× ®*ü-$ŒtVG V qVÌš )X½zõÔ]`QË=ÃeC:I§B@†`½°ƒ"ì% øàö%_•*U®D,ßè ¥uÀÕU©R%åX4ÙpEè‡#K£§I“’sª\ D]X™»àcñ§(õÁÊi„ôA‘‹_¼x±Z<†7oÞÔQÃÈ‰ŠŠ²¾ß‰Ôô4~úôéÊÐ Ù˜“ÎÂ]añð"2Í”‚æ:ŠòÝI$óåËçÊÍH¢MF ¨„^Ïð>ýôÓb8Mš”œSeáÞ †Ú”‰WàLLî “Ë`÷›Úøñã•×&6\AÕªUu"d0ä»Ð¤âðÑî$¸.æ æw°™PñÏ€úâ¡…”¼/¾ø¢X[o—žÌ3¸8 ÉNF¥ŒF\ù•Š¿’* ÷F\Ãh&)€fHâ+Ƥ' n套^Òs5¤páÂê ]*–…Ÿ7ÐÐ’wB8 ÁÞiVŒ Üt|¸ ûpܸqJgÊ2z@ú‹ûËž=».÷˜ q#¸G:Âbot£Ãò¡7º@*/?ü°ƒ);¥gÏi4«@ž¥`a Mðyß}I?çÃB Ó¥¬ËÆaõé-°†2:zlæ€L&zw÷â® q¸ %9O&Y‘ÿ'iÿÙ ± *ð6áîþ{ÿ«r°ÄÌ+ÔgØ?¹f„ù›x:Æ- ñÉIú›RrüËâÀƒÜáàAœ…KÖÛä…‘-Þö gâ7>«”`wö¿°>ç¿ »ÓdÄÀƒ ø6岃ñ—cIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/doxygen.css000644 000765 000024 00000075304 14042362131 021605 0ustar00tangentstaff000000 000000 /* The standard CSS for doxygen 1.9.1 */ body, table, div, p, dl { font: 400 14px/22px Roboto,sans-serif; } p.reference, p.definition { font: 400 14px/22px Roboto,sans-serif; } /* @group Heading Levels */ h1.groupheader { font-size: 150%; } .title { font: 400 14px/28px Roboto,sans-serif; font-size: 150%; font-weight: bold; margin: 10px 2px; } h2.groupheader { border-bottom: 1px solid #879ECB; color: #354C7B; font-size: 150%; font-weight: normal; margin-top: 1.75em; padding-top: 8px; padding-bottom: 4px; width: 100%; } h3.groupheader { font-size: 100%; } h1, h2, h3, h4, h5, h6 { -webkit-transition: text-shadow 0.5s linear; -moz-transition: text-shadow 0.5s linear; -ms-transition: text-shadow 0.5s linear; -o-transition: text-shadow 0.5s linear; transition: text-shadow 0.5s linear; margin-right: 15px; } h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { text-shadow: 0 0 15px cyan; } dt { font-weight: bold; } ul.multicol { -moz-column-gap: 1em; -webkit-column-gap: 1em; column-gap: 1em; -moz-column-count: 3; -webkit-column-count: 3; column-count: 3; } p.startli, p.startdd { margin-top: 2px; } th p.starttd, th p.intertd, th p.endtd { font-size: 100%; font-weight: 700; } p.starttd { margin-top: 0px; } p.endli { margin-bottom: 0px; } p.enddd { margin-bottom: 4px; } p.endtd { margin-bottom: 2px; } p.interli { } p.interdd { } p.intertd { } /* @end */ caption { font-weight: bold; } span.legend { font-size: 70%; text-align: center; } h3.version { font-size: 90%; text-align: center; } div.navtab { border-right: 1px solid #A3B4D7; padding-right: 15px; text-align: right; line-height: 110%; } div.navtab table { border-spacing: 0; } td.navtab { padding-right: 6px; padding-left: 6px; } td.navtabHL { background-image: url('tab_a.png'); background-repeat:repeat-x; padding-right: 6px; padding-left: 6px; } td.navtabHL a, td.navtabHL a:visited { color: #fff; text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); } a.navtab { font-weight: bold; } div.qindex{ text-align: center; width: 100%; line-height: 140%; font-size: 130%; color: #A0A0A0; } dt.alphachar{ font-size: 180%; font-weight: bold; } .alphachar a{ color: black; } .alphachar a:hover, .alphachar a:visited{ text-decoration: none; } .classindex dl { padding: 25px; column-count:1 } .classindex dd { display:inline-block; margin-left: 50px; width: 90%; line-height: 1.15em; } .classindex dl.odd { background-color: #F8F9FC; } @media(min-width: 1120px) { .classindex dl { column-count:2 } } @media(min-width: 1320px) { .classindex dl { column-count:3 } } /* @group Link Styling */ a { color: #3D578C; font-weight: normal; text-decoration: none; } .contents a:visited { color: #4665A2; } a:hover { text-decoration: underline; } .contents a.qindexHL:visited { color: #FFFFFF; } a.el { font-weight: bold; } a.elRef { } a.code, a.code:visited, a.line, a.line:visited { color: #4665A2; } a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { color: #4665A2; } /* @end */ dl.el { margin-left: -1cm; } ul { overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ } #side-nav ul { overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ } #main-nav ul { overflow: visible; /* reset ul rule for the navigation bar drop down lists */ } .fragment { text-align: left; direction: ltr; overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ overflow-y: hidden; } pre.fragment { border: 1px solid #C4CFE5; background-color: #FBFCFD; padding: 4px 6px; margin: 4px 8px 4px 2px; overflow: auto; word-wrap: break-word; font-size: 9pt; line-height: 125%; font-family: monospace, fixed; font-size: 105%; } div.fragment { padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ margin: 4px 8px 4px 2px; background-color: #FBFCFD; border: 1px solid #C4CFE5; } div.line { font-family: monospace, fixed; font-size: 13px; min-height: 13px; line-height: 1.0; text-wrap: unrestricted; white-space: -moz-pre-wrap; /* Moz */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ white-space: pre-wrap; /* CSS3 */ word-wrap: break-word; /* IE 5.5+ */ text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition-property: background-color, box-shadow; -webkit-transition-duration: 0.5s; -moz-transition-property: background-color, box-shadow; -moz-transition-duration: 0.5s; -ms-transition-property: background-color, box-shadow; -ms-transition-duration: 0.5s; -o-transition-property: background-color, box-shadow; -o-transition-duration: 0.5s; transition-property: background-color, box-shadow; transition-duration: 0.5s; } div.line:after { content:"\000A"; white-space: pre; } div.line.glow { background-color: cyan; box-shadow: 0 0 10px cyan; } span.lineno { padding-right: 4px; text-align: right; border-right: 2px solid #0F0; background-color: #E8E8E8; white-space: pre; } span.lineno a { background-color: #D8D8D8; } span.lineno a:hover { background-color: #C8C8C8; } .lineno { -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } div.ah, span.ah { background-color: black; font-weight: bold; color: #FFFFFF; margin-bottom: 3px; margin-top: 3px; padding: 0.2em; border: solid thin #333; border-radius: 0.5em; -webkit-border-radius: .5em; -moz-border-radius: .5em; box-shadow: 2px 2px 3px #999; -webkit-box-shadow: 2px 2px 3px #999; -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); } div.classindex ul { list-style: none; padding-left: 0; } div.classindex span.ai { display: inline-block; } div.groupHeader { margin-left: 16px; margin-top: 12px; font-weight: bold; } div.groupText { margin-left: 16px; font-style: italic; } body { background-color: white; color: black; margin: 0; } div.contents { margin-top: 10px; margin-left: 12px; margin-right: 8px; } td.indexkey { background-color: #EBEFF6; font-weight: bold; border: 1px solid #C4CFE5; margin: 2px 0px 2px 0; padding: 2px 10px; white-space: nowrap; vertical-align: top; } td.indexvalue { background-color: #EBEFF6; border: 1px solid #C4CFE5; padding: 2px 10px; margin: 2px 0px; } tr.memlist { background-color: #EEF1F7; } p.formulaDsp { text-align: center; } img.formulaDsp { } img.formulaInl, img.inline { vertical-align: middle; } div.center { text-align: center; margin-top: 0px; margin-bottom: 0px; padding: 0px; } div.center img { border: 0px; } address.footer { text-align: right; padding-right: 12px; } img.footer { border: 0px; vertical-align: middle; } /* @group Code Colorization */ span.keyword { color: #008000 } span.keywordtype { color: #604020 } span.keywordflow { color: #e08000 } span.comment { color: #800000 } span.preprocessor { color: #806020 } span.stringliteral { color: #002080 } span.charliteral { color: #008080 } span.vhdldigit { color: #ff00ff } span.vhdlchar { color: #000000 } span.vhdlkeyword { color: #700070 } span.vhdllogic { color: #ff0000 } blockquote { background-color: #F7F8FB; border-left: 2px solid #9CAFD4; margin: 0 24px 0 4px; padding: 0 12px 0 16px; } blockquote.DocNodeRTL { border-left: 0; border-right: 2px solid #9CAFD4; margin: 0 4px 0 24px; padding: 0 16px 0 12px; } /* @end */ /* .search { color: #003399; font-weight: bold; } form.search { margin-bottom: 0px; margin-top: 0px; } input.search { font-size: 75%; color: #000080; font-weight: normal; background-color: #e8eef2; } */ td.tiny { font-size: 75%; } .dirtab { padding: 4px; border-collapse: collapse; border: 1px solid #A3B4D7; } th.dirtab { background: #EBEFF6; font-weight: bold; } hr { height: 0px; border: none; border-top: 1px solid #4A6AAA; } hr.footer { height: 1px; } /* @group Member Descriptions */ table.memberdecls { border-spacing: 0px; padding: 0px; } .memberdecls td, .fieldtable tr { -webkit-transition-property: background-color, box-shadow; -webkit-transition-duration: 0.5s; -moz-transition-property: background-color, box-shadow; -moz-transition-duration: 0.5s; -ms-transition-property: background-color, box-shadow; -ms-transition-duration: 0.5s; -o-transition-property: background-color, box-shadow; -o-transition-duration: 0.5s; transition-property: background-color, box-shadow; transition-duration: 0.5s; } .memberdecls td.glow, .fieldtable tr.glow { background-color: cyan; box-shadow: 0 0 15px cyan; } .mdescLeft, .mdescRight, .memItemLeft, .memItemRight, .memTemplItemLeft, .memTemplItemRight, .memTemplParams { background-color: #F9FAFC; border: none; margin: 4px; padding: 1px 0 0 8px; } .mdescLeft, .mdescRight { padding: 0px 8px 4px 8px; color: #555; } .memSeparator { border-bottom: 1px solid #DEE4F0; line-height: 1px; margin: 0px; padding: 0px; } .memItemLeft, .memTemplItemLeft { white-space: nowrap; } .memItemRight, .memTemplItemRight { width: 100%; } .memTemplParams { color: #4665A2; white-space: nowrap; font-size: 80%; } /* @end */ /* @group Member Details */ /* Styles for detailed member documentation */ .memtitle { padding: 8px; border-top: 1px solid #A8B8D9; border-left: 1px solid #A8B8D9; border-right: 1px solid #A8B8D9; border-top-right-radius: 4px; border-top-left-radius: 4px; margin-bottom: -1px; background-image: url('nav_f.png'); background-repeat: repeat-x; background-color: #E2E8F2; line-height: 1.25; font-weight: 300; float:left; } .permalink { font-size: 65%; display: inline-block; vertical-align: middle; } .memtemplate { font-size: 80%; color: #4665A2; font-weight: normal; margin-left: 9px; } .memnav { background-color: #EBEFF6; border: 1px solid #A3B4D7; text-align: center; margin: 2px; margin-right: 15px; padding: 2px; } .mempage { width: 100%; } .memitem { padding: 0; margin-bottom: 10px; margin-right: 5px; -webkit-transition: box-shadow 0.5s linear; -moz-transition: box-shadow 0.5s linear; -ms-transition: box-shadow 0.5s linear; -o-transition: box-shadow 0.5s linear; transition: box-shadow 0.5s linear; display: table !important; width: 100%; } .memitem.glow { box-shadow: 0 0 15px cyan; } .memname { font-weight: 400; margin-left: 6px; } .memname td { vertical-align: bottom; } .memproto, dl.reflist dt { border-top: 1px solid #A8B8D9; border-left: 1px solid #A8B8D9; border-right: 1px solid #A8B8D9; padding: 6px 0px 6px 0px; color: #253555; font-weight: bold; text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); background-color: #DFE5F1; /* opera specific markup */ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); border-top-right-radius: 4px; /* firefox specific markup */ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; -moz-border-radius-topright: 4px; /* webkit specific markup */ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -webkit-border-top-right-radius: 4px; } .overload { font-family: "courier new",courier,monospace; font-size: 65%; } .memdoc, dl.reflist dd { border-bottom: 1px solid #A8B8D9; border-left: 1px solid #A8B8D9; border-right: 1px solid #A8B8D9; padding: 6px 10px 2px 10px; background-color: #FBFCFD; border-top-width: 0; background-image:url('nav_g.png'); background-repeat:repeat-x; background-color: #FFFFFF; /* opera specific markup */ border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); /* firefox specific markup */ -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; /* webkit specific markup */ -webkit-border-bottom-left-radius: 4px; -webkit-border-bottom-right-radius: 4px; -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); } dl.reflist dt { padding: 5px; } dl.reflist dd { margin: 0px 0px 10px 0px; padding: 5px; } .paramkey { text-align: right; } .paramtype { white-space: nowrap; } .paramname { color: #602020; white-space: nowrap; } .paramname em { font-style: normal; } .paramname code { line-height: 14px; } .params, .retval, .exception, .tparams { margin-left: 0px; padding-left: 0px; } .params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { font-weight: bold; vertical-align: top; } .params .paramtype, .tparams .paramtype { font-style: italic; vertical-align: top; } .params .paramdir, .tparams .paramdir { font-family: "courier new",courier,monospace; vertical-align: top; } table.mlabels { border-spacing: 0px; } td.mlabels-left { width: 100%; padding: 0px; } td.mlabels-right { vertical-align: bottom; padding: 0px; white-space: nowrap; } span.mlabels { margin-left: 8px; } span.mlabel { background-color: #728DC1; border-top:1px solid #5373B4; border-left:1px solid #5373B4; border-right:1px solid #C4CFE5; border-bottom:1px solid #C4CFE5; text-shadow: none; color: white; margin-right: 4px; padding: 2px 3px; border-radius: 3px; font-size: 7pt; white-space: nowrap; vertical-align: middle; } /* @end */ /* these are for tree view inside a (index) page */ div.directory { margin: 10px 0px; border-top: 1px solid #9CAFD4; border-bottom: 1px solid #9CAFD4; width: 100%; } .directory table { border-collapse:collapse; } .directory td { margin: 0px; padding: 0px; vertical-align: top; } .directory td.entry { white-space: nowrap; padding-right: 6px; padding-top: 3px; } .directory td.entry a { outline:none; } .directory td.entry a img { border: none; } .directory td.desc { width: 100%; padding-left: 6px; padding-right: 6px; padding-top: 3px; border-left: 1px solid rgba(0,0,0,0.05); } .directory tr.even { padding-left: 6px; background-color: #F7F8FB; } .directory img { vertical-align: -30%; } .directory .levels { white-space: nowrap; width: 100%; text-align: right; font-size: 9pt; } .directory .levels span { cursor: pointer; padding-left: 2px; padding-right: 2px; color: #3D578C; } .arrow { color: #9CAFD4; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; cursor: pointer; font-size: 80%; display: inline-block; width: 16px; height: 22px; } .icon { font-family: Arial, Helvetica; font-weight: bold; font-size: 12px; height: 14px; width: 16px; display: inline-block; background-color: #728DC1; color: white; text-align: center; border-radius: 4px; margin-left: 2px; margin-right: 2px; } .icona { width: 24px; height: 22px; display: inline-block; } .iconfopen { width: 24px; height: 18px; margin-bottom: 4px; background-image:url('folderopen.png'); background-position: 0px -4px; background-repeat: repeat-y; vertical-align:top; display: inline-block; } .iconfclosed { width: 24px; height: 18px; margin-bottom: 4px; background-image:url('folderclosed.png'); background-position: 0px -4px; background-repeat: repeat-y; vertical-align:top; display: inline-block; } .icondoc { width: 24px; height: 18px; margin-bottom: 4px; background-image:url('doc.png'); background-position: 0px -4px; background-repeat: repeat-y; vertical-align:top; display: inline-block; } table.directory { font: 400 14px Roboto,sans-serif; } /* @end */ div.dynheader { margin-top: 8px; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } address { font-style: normal; color: #2A3D61; } table.doxtable caption { caption-side: top; } table.doxtable { border-collapse:collapse; margin-top: 4px; margin-bottom: 4px; } table.doxtable td, table.doxtable th { border: 1px solid #2D4068; padding: 3px 7px 2px; } table.doxtable th { background-color: #374F7F; color: #FFFFFF; font-size: 110%; padding-bottom: 4px; padding-top: 5px; } table.fieldtable { /*width: 100%;*/ margin-bottom: 10px; border: 1px solid #A8B8D9; border-spacing: 0px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); } .fieldtable td, .fieldtable th { padding: 3px 7px 2px; } .fieldtable td.fieldtype, .fieldtable td.fieldname { white-space: nowrap; border-right: 1px solid #A8B8D9; border-bottom: 1px solid #A8B8D9; vertical-align: top; } .fieldtable td.fieldname { padding-top: 3px; } .fieldtable td.fielddoc { border-bottom: 1px solid #A8B8D9; /*width: 100%;*/ } .fieldtable td.fielddoc p:first-child { margin-top: 0px; } .fieldtable td.fielddoc p:last-child { margin-bottom: 2px; } .fieldtable tr:last-child td { border-bottom: none; } .fieldtable th { background-image:url('nav_f.png'); background-repeat:repeat-x; background-color: #E2E8F2; font-size: 90%; color: #253555; padding-bottom: 4px; padding-top: 5px; text-align:left; font-weight: 400; -moz-border-radius-topleft: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-left-radius: 4px; -webkit-border-top-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom: 1px solid #A8B8D9; } .tabsearch { top: 0px; left: 10px; height: 36px; background-image: url('tab_b.png'); z-index: 101; overflow: hidden; font-size: 13px; } .navpath ul { font-size: 11px; background-image:url('tab_b.png'); background-repeat:repeat-x; background-position: 0 -5px; height:30px; line-height:30px; color:#8AA0CC; border:solid 1px #C2CDE4; overflow:hidden; margin:0px; padding:0px; } .navpath li { list-style-type:none; float:left; padding-left:10px; padding-right:15px; background-image:url('bc_s.png'); background-repeat:no-repeat; background-position:right; color:#364D7C; } .navpath li.navelem a { height:32px; display:block; text-decoration: none; outline: none; color: #283A5D; font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); text-decoration: none; } .navpath li.navelem a:hover { color:#6884BD; } .navpath li.footer { list-style-type:none; float:right; padding-left:10px; padding-right:15px; background-image:none; background-repeat:no-repeat; background-position:right; color:#364D7C; font-size: 8pt; } div.summary { float: right; font-size: 8pt; padding-right: 5px; width: 50%; text-align: right; } div.summary a { white-space: nowrap; } table.classindex { margin: 10px; white-space: nowrap; margin-left: 3%; margin-right: 3%; width: 94%; border: 0; border-spacing: 0; padding: 0; } div.ingroups { font-size: 8pt; width: 50%; text-align: left; } div.ingroups a { white-space: nowrap; } div.header { background-image:url('nav_h.png'); background-repeat:repeat-x; background-color: #F9FAFC; margin: 0px; border-bottom: 1px solid #C4CFE5; } div.headertitle { padding: 5px 5px 5px 10px; } .PageDocRTL-title div.headertitle { text-align: right; direction: rtl; } dl { padding: 0 0 0 0; } /* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ dl.section { margin-left: 0px; padding-left: 0px; } dl.section.DocNodeRTL { margin-right: 0px; padding-right: 0px; } dl.note { margin-left: -7px; padding-left: 3px; border-left: 4px solid; border-color: #D0C000; } dl.note.DocNodeRTL { margin-left: 0; padding-left: 0; border-left: 0; margin-right: -7px; padding-right: 3px; border-right: 4px solid; border-color: #D0C000; } dl.warning, dl.attention { margin-left: -7px; padding-left: 3px; border-left: 4px solid; border-color: #FF0000; } dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { margin-left: 0; padding-left: 0; border-left: 0; margin-right: -7px; padding-right: 3px; border-right: 4px solid; border-color: #FF0000; } dl.pre, dl.post, dl.invariant { margin-left: -7px; padding-left: 3px; border-left: 4px solid; border-color: #00D000; } dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { margin-left: 0; padding-left: 0; border-left: 0; margin-right: -7px; padding-right: 3px; border-right: 4px solid; border-color: #00D000; } dl.deprecated { margin-left: -7px; padding-left: 3px; border-left: 4px solid; border-color: #505050; } dl.deprecated.DocNodeRTL { margin-left: 0; padding-left: 0; border-left: 0; margin-right: -7px; padding-right: 3px; border-right: 4px solid; border-color: #505050; } dl.todo { margin-left: -7px; padding-left: 3px; border-left: 4px solid; border-color: #00C0E0; } dl.todo.DocNodeRTL { margin-left: 0; padding-left: 0; border-left: 0; margin-right: -7px; padding-right: 3px; border-right: 4px solid; border-color: #00C0E0; } dl.test { margin-left: -7px; padding-left: 3px; border-left: 4px solid; border-color: #3030E0; } dl.test.DocNodeRTL { margin-left: 0; padding-left: 0; border-left: 0; margin-right: -7px; padding-right: 3px; border-right: 4px solid; border-color: #3030E0; } dl.bug { margin-left: -7px; padding-left: 3px; border-left: 4px solid; border-color: #C08050; } dl.bug.DocNodeRTL { margin-left: 0; padding-left: 0; border-left: 0; margin-right: -7px; padding-right: 3px; border-right: 4px solid; border-color: #C08050; } dl.section dd { margin-bottom: 6px; } #projectlogo { text-align: center; vertical-align: bottom; border-collapse: separate; } #projectlogo img { border: 0px none; } #projectalign { vertical-align: middle; } #projectname { font: 300% Tahoma, Arial,sans-serif; margin: 0px; padding: 2px 0px; } #projectbrief { font: 120% Tahoma, Arial,sans-serif; margin: 0px; padding: 0px; } #projectnumber { font: 50% Tahoma, Arial,sans-serif; margin: 0px; padding: 0px; } #titlearea { padding: 0px; margin: 0px; width: 100%; border-bottom: 1px solid #5373B4; } .image { text-align: center; } .dotgraph { text-align: center; } .mscgraph { text-align: center; } .plantumlgraph { text-align: center; } .diagraph { text-align: center; } .caption { font-weight: bold; } div.zoom { border: 1px solid #90A5CE; } dl.citelist { margin-bottom:50px; } dl.citelist dt { color:#334975; float:left; font-weight:bold; margin-right:10px; padding:5px; text-align:right; width:52px; } dl.citelist dd { margin:2px 0 2px 72px; padding:5px 0; } div.toc { padding: 14px 25px; background-color: #F4F6FA; border: 1px solid #D8DFEE; border-radius: 7px 7px 7px 7px; float: right; height: auto; margin: 0 8px 10px 10px; width: 200px; } .PageDocRTL-title div.toc { float: left !important; text-align: right; } div.toc li { background: url("bdwn.png") no-repeat scroll 0 5px transparent; font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; margin-top: 5px; padding-left: 10px; padding-top: 2px; } .PageDocRTL-title div.toc li { background-position-x: right !important; padding-left: 0 !important; padding-right: 10px; } div.toc h3 { font: bold 12px/1.2 Arial,FreeSans,sans-serif; color: #4665A2; border-bottom: 0 none; margin: 0; } div.toc ul { list-style: none outside none; border: medium none; padding: 0px; } div.toc li.level1 { margin-left: 0px; } div.toc li.level2 { margin-left: 15px; } div.toc li.level3 { margin-left: 30px; } div.toc li.level4 { margin-left: 45px; } span.emoji { /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; */ } .PageDocRTL-title div.toc li.level1 { margin-left: 0 !important; margin-right: 0; } .PageDocRTL-title div.toc li.level2 { margin-left: 0 !important; margin-right: 15px; } .PageDocRTL-title div.toc li.level3 { margin-left: 0 !important; margin-right: 30px; } .PageDocRTL-title div.toc li.level4 { margin-left: 0 !important; margin-right: 45px; } .inherit_header { font-weight: bold; color: gray; cursor: pointer; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .inherit_header td { padding: 6px 0px 2px 5px; } .inherit { display: none; } tr.heading h2 { margin-top: 12px; margin-bottom: 4px; } /* tooltip related style info */ .ttc { position: absolute; display: none; } #powerTip { cursor: default; white-space: nowrap; background-color: white; border: 1px solid gray; border-radius: 4px 4px 4px 4px; box-shadow: 1px 1px 7px gray; display: none; font-size: smaller; max-width: 80%; opacity: 0.9; padding: 1ex 1em 1em; position: absolute; z-index: 2147483647; } #powerTip div.ttdoc { color: grey; font-style: italic; } #powerTip div.ttname a { font-weight: bold; } #powerTip div.ttname { font-weight: bold; } #powerTip div.ttdeci { color: #006318; } #powerTip div { margin: 0px; padding: 0px; font: 12px/16px Roboto,sans-serif; } #powerTip:before, #powerTip:after { content: ""; position: absolute; margin: 0px; } #powerTip.n:after, #powerTip.n:before, #powerTip.s:after, #powerTip.s:before, #powerTip.w:after, #powerTip.w:before, #powerTip.e:after, #powerTip.e:before, #powerTip.ne:after, #powerTip.ne:before, #powerTip.se:after, #powerTip.se:before, #powerTip.nw:after, #powerTip.nw:before, #powerTip.sw:after, #powerTip.sw:before { border: solid transparent; content: " "; height: 0; width: 0; position: absolute; } #powerTip.n:after, #powerTip.s:after, #powerTip.w:after, #powerTip.e:after, #powerTip.nw:after, #powerTip.ne:after, #powerTip.sw:after, #powerTip.se:after { border-color: rgba(255, 255, 255, 0); } #powerTip.n:before, #powerTip.s:before, #powerTip.w:before, #powerTip.e:before, #powerTip.nw:before, #powerTip.ne:before, #powerTip.sw:before, #powerTip.se:before { border-color: rgba(128, 128, 128, 0); } #powerTip.n:after, #powerTip.n:before, #powerTip.ne:after, #powerTip.ne:before, #powerTip.nw:after, #powerTip.nw:before { top: 100%; } #powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { border-top-color: #FFFFFF; border-width: 10px; margin: 0px -10px; } #powerTip.n:before { border-top-color: #808080; border-width: 11px; margin: 0px -11px; } #powerTip.n:after, #powerTip.n:before { left: 50%; } #powerTip.nw:after, #powerTip.nw:before { right: 14px; } #powerTip.ne:after, #powerTip.ne:before { left: 14px; } #powerTip.s:after, #powerTip.s:before, #powerTip.se:after, #powerTip.se:before, #powerTip.sw:after, #powerTip.sw:before { bottom: 100%; } #powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { border-bottom-color: #FFFFFF; border-width: 10px; margin: 0px -10px; } #powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { border-bottom-color: #808080; border-width: 11px; margin: 0px -11px; } #powerTip.s:after, #powerTip.s:before { left: 50%; } #powerTip.sw:after, #powerTip.sw:before { right: 14px; } #powerTip.se:after, #powerTip.se:before { left: 14px; } #powerTip.e:after, #powerTip.e:before { left: 100%; } #powerTip.e:after { border-left-color: #FFFFFF; border-width: 10px; top: 50%; margin-top: -10px; } #powerTip.e:before { border-left-color: #808080; border-width: 11px; top: 50%; margin-top: -11px; } #powerTip.w:after, #powerTip.w:before { right: 100%; } #powerTip.w:after { border-right-color: #FFFFFF; border-width: 10px; top: 50%; margin-top: -10px; } #powerTip.w:before { border-right-color: #808080; border-width: 11px; top: 50%; margin-top: -11px; } @media print { #top { display: none; } #side-nav { display: none; } #nav-path { display: none; } body { overflow:visible; } h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } .summary { display: none; } .memitem { page-break-inside: avoid; } #doc-content { margin-left:0 !important; height:auto !important; width:auto !important; overflow:inherit; display:inline; } } /* @group Markdown */ table.markdownTable { border-collapse:collapse; margin-top: 4px; margin-bottom: 4px; } table.markdownTable td, table.markdownTable th { border: 1px solid #2D4068; padding: 3px 7px 2px; } table.markdownTable tr { } th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { background-color: #374F7F; color: #FFFFFF; font-size: 110%; padding-bottom: 4px; padding-top: 5px; } th.markdownTableHeadLeft, td.markdownTableBodyLeft { text-align: left } th.markdownTableHeadRight, td.markdownTableBodyRight { text-align: right } th.markdownTableHeadCenter, td.markdownTableBodyCenter { text-align: center } .DocNodeRTL { text-align: right; direction: rtl; } .DocNodeLTR { text-align: left; direction: ltr; } table.DocNodeRTL { width: auto; margin-right: 0; margin-left: auto; } table.DocNodeLTR { width: auto; margin-right: auto; margin-left: 0; } tt, code, kbd, samp { display: inline-block; direction:ltr; } /* @end */ u { text-decoration: underline; } mysql++-3.3.0/doc/html/refman/ssx/index.html000644 000765 000024 00000004300 14042362131 021377 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Main Page
    MySQL++ SSQLS v2 Translator  3.3.0
    MySQL++ SSQLS v2 Translator Documentation
    mysql++-3.3.0/doc/html/refman/ssx/functions.html000644 000765 000024 00000027447 14042362131 022321 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Class Members
    MySQL++ SSQLS v2 Translator  3.3.0
    Here is a list of all documented class members with links to the class documentation for each member:

    - a -

    - b -

    - c -

    - e -

    - f -

    - h -

    - i -

    - l -

    - n -

    - o -

    - p -

    - r -

    - s -

    - t -

    - v -

    - ~ -

    mysql++-3.3.0/doc/html/refman/ssx/sync_off.png000644 000765 000024 00000001525 14042362131 021724 0ustar00tangentstaff000000 000000 ‰PNG  IHDRàw=øIDATxíÝKhTWÀñÿä1I&3™8M¦Iš™†I3Ú©b$cÌ I1V1±-(Tö±±Ð.* t!‚K[¥Ä¥ˆ„¨´f£`l(øl©"Y”¤6ÆgÌTú}·sgîܹ ±d{8?æÌ¹÷;çÜuíÚ`:!±F¬¢BäŠ?ŰÄm'yÊÅ>ÑlU¯½üý‰è_‹?€Œê ]€Y(ŠNñ±8fý1°Öqún-eâ¨øtºmâÈ Ó0}b›ù%·©µ×Œ®=Ÿ0´³?Š1sŸ‹0€¯8À‘;_ ‹W|%\ Zð— >舽ln¨p©.aÇ{ )t;Ú b nŸš¯›65°¢¡2çÅÔ?Žž>Oдàuönm¤¢Ì`×­Z¬WjC~>‘Ö¾0+á {{©fÝ×Mæ·æÅ•ìÙ¼˜` Ý›%uA6´½ÅÆö¨Á,]k¢ÄW¼™u±›]‹ˆ7§¯iòh€ ¶¶¬ÏÖu1 ló —Ҷ̺–:ÞÍ\ÄcãÏxøhR²Êè‡Qt$¿ß§¨ ª fdºü<4BÿÙ[•f¸d7=.Mé9/—éªÃëù/ÿO Üaàò}€,‘j?Ÿõ.5Úšm?œÿŸ®ŽXÿ2¬#¸d píæ(£?cÛú¼!½›a1¥Þ—ŽòØ©ܾ7dÔK:‚ùÒ‰ì)Ê3‚Ü™àÌà]€,±H€µ+køöäu<|`·LhC7¹ÔeÍ Ÿ×Ÿ˜tÜ‹ óH$^2%l.êaeÐäýE”ÌÉ|ÅÜìî‰Ýsä }¸ýDû^hzé~ðR›¦Ã¡¿]|#ü¯@×—Ö‡[k¹–<|š(Ç*€Ý¹dÇtMé:Ýñø«Ø,êÅû¢]”' øXÓ_nò¡Æ|Øý /c§fžâOIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/sync_on.png000644 000765 000024 00000001515 14042362131 021565 0ustar00tangentstaff000000 000000 ‰PNG  IHDRàw=øIDATxíÝ_HTYÀñï8ã¤ó§i§4-g6ÆËÕ&kQ)¨Ô!Š0ÒURKÚ…„ê¡/»PEÁ>ìK-+KÁ²Ñ.Y”¾dEPaA‰ø°¥¶›ZSÓïÜ;3wºŠ–¯—߯gfîïœsçœWKÇñ.€ÉøD­¨a‘'¬âq_ôˆk¢ÀŒ ÀDŽøQ´ÄïC¨¶åñÏÿgÅ ñ 0„Y‚:qZ¦Á)~õâ€èLý0HVñ× žz-¿‰C“%¨g¦˜6€é8%Úõ¬ëwêÙUÏ¿˜ª³Ä }? ?€·3ÀÀž©Š À”K• @hà a±ðaÇæUe‹ sù~ë2²ì“&Ú&B*AÄljæºììi*˨,Ëçí»÷oÆ£T”,d[˜¼3-*ÁÀ…>å‡Ë çLÉŸçfk˜Ò éw#*AEjKUy>ûšËÉõ&{µ¢8—m5Ki¬ jjƒD*¿NŽÖigwÃ7Dª’mz骹úKÛ¾±ˆ¶M!æ¤ÍkÐ?šoý¬_åÓlXí#Ò~–¸¬ê×ÒÑXŠÓ‘ùRÙ*Eû‚ՂדðEÜ;6«e"Q(²Ù=–¿Ezæ5Kؼָ_ 1òzBªJë ±XŒì96åªjL^7{ùãJÑ÷1½i@%8'7M©_\Qœ#ÓUŒËñýÿyõ Wo Éx8¼s¥v¯ªì|×SnÜ q_m Ýé î>bèÕí[JX,½4[Tú{R£ë¼ôˆ¾þa€tÝjjzzÅ'ÅìȶiIžŽòwÏs ¡€—ÕKøõâC^ŽŒ˜Y­¨µÉ%6¨´êˆº]vÛðhâ½iWv–hôëê°Ò¨¾'æÌ‚·ñ|[ßìúÅ^€YrD=<ýDû]äÇ÷s€Ïõ‹8™ºCì? À ¨—t4õᩎ¡Jã‡W‹É± îr¼cjMɘìx| šE©øNÔ‰œøA¢þ«–€Z¼ñ‡jó î#™§¢¢4gIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1ImplementationExtensionOption.html000644 000765 000024 00000040677 14042362131 031255 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: ParseV2::ImplementationExtensionOption Class Reference
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2::ImplementationExtensionOption Class Reference

    'option implementation_extension' directive line More...

    #include <parsev2.h>

    Inheritance diagram for ParseV2::ImplementationExtensionOption:
    Collaboration diagram for ParseV2::ImplementationExtensionOption:

    Public Member Functions

     ImplementationExtensionOption (const std::string &value)
     Constructor.
     
    const char * extension () const
     Return the extension used for C++ implementation files we emit.
     
    void print (std::ostream &os) const
     Print the option description out to a stream in SSQLS v2 form.
     
    - Public Member Functions inherited from ParseV2::Option
    virtual ~Option ()
     Virtual dtor, since this is a base class.
     
    - Public Member Functions inherited from ParseV2::Line
    virtual ~Line ()
     Virtual dtor, since this is a base class.
     

    Additional Inherited Members

    - Static Public Member Functions inherited from ParseV2::Option
    static Optionparse (const StringList &tl, bool subdirective, const File &file)
     Attempt to create an Option object from information in the passed StringList. More...
     
    - Static Public Member Functions inherited from ParseV2::Line
    static Lineparse (const StringList &tl, bool subdirective, const File &file)
     Virtual ctor, creating one of our subclass objects based on what we're passed. More...
     
    - Protected Member Functions inherited from ParseV2::Option
     Option (const std::string &value)
     Protected ctor, so we cannot be directly instantiated. More...
     
    const char * value () const
     Return the option's value in string form, unmodified from the original parse. More...
     
    - Protected Member Functions inherited from ParseV2::Line
     Line ()
     Protected ctor, to prevent instantiation.
     
    - Static Protected Member Functions inherited from ParseV2::Option
    static bool parse_bool (const std::string &value)
     Convert a string expressing a boolean value to a bool. More...
     

    Detailed Description

    'option implementation_extension' directive line


    The documentation for this class was generated from the following files:
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1FileException__coll__graph.png000644 000765 000024 00000007524 14042362131 030242 0ustar00tangentstaff000000 000000 ‰PNG  IHDR€RœÈÜïsRGB®ÎéIDATxíEÇ›à E1‹9`*•S0ÇR1k™Å,æ*Ìb*s)&@( s0Y1a:AAN`¾þõ}óØ÷nßy{¼wxo¶«övwvv¦§»§»gßÞþ9%I)T ÌkêÈÓqWI 5€À-!5€À  iÒñ7N,Xô¶´~=H U«V²Í6Û$ê)±,^¼XvÝuWYyå•u”V.®þüóO™8qbâNÒXd¥uCj¥¥ÏÄ£I ±ÈJë†Ä9ÀaøÃ‡—ÝvÛ­ yÈÛo¿-K–,ÉÖV[m%믿~VY¡O&L˜ ë¬³Ž¬»îº…n:Q{ Òœ|òÉ2kÖ¬DÍWùˆ#Ž—^zI† –Ù¦OŸž¯úr•£ôÓO?ÝÚ5j”üôÓOËÕ^AnæQp9r¤[¸pa·ì¾ûîîÜsÏuíÚµsgu–;çœsÜÚk¯íN9å÷Ë/¿8aN³Vk£o߾nrcÆŒq{î¹§kÓ¦»à‚ ìÚ´iÓÜ^{íå:vìèzöìimqAg§ãÚ;ìàÎ>ûlkûÈ#´6UÈ®Gnß}÷u:ÃÜ 7Ü`m}ûí·îÀ´ãºk®¹ÆŽW]uU§Š°ãèŸ3Ï<ÓÝxãVtÝu×¹+¯¼Ò-Z´ÈvÚinÍ5×tûì³ûî»ïÜÒ¥K]ïÞ½'øA>Po[l±…kÞ¼¹ñtÅW¸7ß|ÓUVVÚ¸h“ëï¿ÿ¾ÝÉ%—˜:uêä6Ûl37~üx+Ï÷G—æ&Ã|×ó”Ï-Šøþûïåï¿ÿ–¡C‡Ê³Ï>kÏ pÛœó ¡iÓ¦òî»ïš?÷Üs¢Â’[n¹EÔ@dôèÑòᇊ Wî¾ûnÙ`ƒ lf2[¦NšeôŸ}ö™°öýôÓOå·ß~“×_ÝÚùå—å¼óγûzè!™9s¦¨¢eçw¶û×[o=Q¡fÚºì²ËäŒ3ÎÈlýõ—¨ÊwÜ!ƒ–ûï¿_Ô å½÷Þ“¯¾úJ¾üòKãù¾ûîUŒÕyå•WDÐ65 ‰ãö/—_~¹üøãòûᅴƎ+#FŒã?^®½öZãëçŸ6Y 'äóè£fø-èAËÈ[\ÀlWEZo¼±ûè£ìx§vr|ðëÓ§SÛ,nÙ²¥Í¬‹/¾Øm¾ùæîž{îq*«ß¥K§žì¸ÿþcïÔÜŒ3¬¬_¿~îÔSOµ¾6ÝtS+ãžã駟Μçàð@ªäÌæ=³T…m}[*,Õ†_2 M:` `À€Qúøw‰þjY)Ï?_9MRåS?H˜0aª)Þ Œ0iRÍ?ùº¥¶Ò # .ûQFßéÐßôÇ–šnk5žà €EÏ!ã-þ{ UV.–GûÓ öÁ@yyE¬‚çÏ_(Ÿ>-öZ)gýûÒŸ‰UÓieåyá…ð¼@P‚XöµoßKߨifïøg`þÝ‚ Éôé}«G Ì ÊPääɳdʔ٦Sâ~óæeÒ£ÇvvÞ¹s5ì××ìBéþ™—ø·€†.‹NZëÛ7U¿"ŽY¡ïÝ5“½÷^ö¦QC_RþƒË’ ¨Ôëm7Ò\ ÔU\óø‚6…û[h•am5Ï0®m¸Â@È´àþ !SвâýØSð’tŸ@ Š÷ÃN ÀK"Ð}j*Þ;hH—¾è­?]nÞBÞBV¼{Ð@þèM!À=9@úk`€ŠO‡¼LÁ‡€ô×ÀeÆÜQº L—Á}î€Ó¾’kᜧ! áX{¾‘ò O#FŒàý¨`¶²²v®¬¬m0ãE·|ç1Bs³þ3H @@ãÐϮ糗´¼Kì¾ð¶Ë.»dFt˜‘BÀ©¬|†ž@à•ÔF|ƒÌO|É\ŸBØfy‚çƒú`ùÍ£{à…ÊËËÍ;)ФÐ+úºòvÞF:vìh€˜aÃG”GPFO8áCFÁðÀU„ðL Æ b !-)ÕÉÈÀ,Œ€PF›¢*À1qÀ%@%™Y¸9fñO¡p™°q^¹³ àAš¢¼ä#`fIM„ðø>I„=˜GΓKÀÙ0&îã˜|Á{&ê:€²Ë7>ÚõDEDñ§™=rÅSy° Îñ P´/úçZRª“ˆëD”ôãKS J  Fæ2ÄÌÂE¢ K´“82[@Ç$^"0’<W‹+g&Ùæ‰'Z¸JrŠ(ž qaAx¼ÆAr‰¡¢|êbDЬjý{Þ¾c³ oäIqäåw-_YÖgâP™çòüà+\‰–w]Qˆ³€+¶hÑ"SŒÕ#hBG!—“™jyÀl$ `˜u%”„›ŽºèÜñ1ãYµ°|¦¿èó <Æ £„Üà‹SÂc±rЬ ÿ™8ܶ§8ås-šøº Ê'W¾lEì‰ËÑØ\ðb¹”o|ÔÍ­OGqr‹«—¤¬`9@’NÓºUËTÖö+šRXAÀ½/¯§)ë©BŠ ¹ ÍØ3¤KŒ ÞŽQ½7ÞÜ7‚²V ÙSÞë$paãê$®¼)ÍJP©I†”@i•`Ýÿ§³ ¬+l­üIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1File-members.html000644 000765 000024 00000011066 14042362131 025477 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Member List
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2::File Member List

    This is the complete list of members for ParseV2::File, including all inherited members.

    error(const std::string &msg) constParseV2::File
    error(const std::ostringstream &msg) constParseV2::Fileinline
    File(const char *file_name)ParseV2::File
    name() constParseV2::Fileinline
    parse_error(const std::string &msg) constParseV2::File
    parse_error(const std::ostringstream &msg) constParseV2::Fileinline
    read_line(std::string &line, bool &subdirective)ParseV2::File
    mysql++-3.3.0/doc/html/refman/ssx/annotated.html000644 000765 000024 00000016417 14042362131 022261 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Class List
    MySQL++ SSQLS v2 Translator  3.3.0
    Class List
    Here are the classes, structs, unions and interfaces with brief descriptions:
    [detail level 123]
     CParseV2Parses SSQLS v2 documents and holds the parse result
     CAccessorStyleOption'option accessor_style' directive line
     CExceptionOnSchemaMismatchOption'option exception_on_schema_mismatch' directive line
     CField'field' directive line
     CTypeA smart enum for converting SQL type strings to one of a relatively few types we directly support
     CFileHolds information about an SSQLS v2 file we're parsing
     CFileExceptionException object thrown to indicate a file I/O error
     CHeaderExtensionOption'option header_extension' directive line
     CImplementationExtensionOption'option implementation_extension' directive line
     CInclude'include' directive line
     CLineBase class for parsed SSQLS v2 declaration lines
     COptionBase class for known SSQLS v2 'option' directives
     CParseExceptionException object thrown by File::error() to report an SSQLS v2 parsing error
     CTable'table' directive line
    mysql++-3.3.0/doc/html/refman/ssx/doc.png000644 000765 000024 00000001352 14042362131 020661 0ustar00tangentstaff000000 000000 ‰PNG  IHDRÚ}\ˆ±IDATxíMOS[…Ÿžsúa?-XZ(PD4‚ AWbu`b 77wäHFÆCËÔÂÿà/`vo„ˆAPòq‹P @ ­ûÝè980 îà¤+»§Ýy×^ïZï9SW¹\83g‰3'°Nâçl¹¸_b¯p ïåûÆVÜÖ¡€Ÿ×"¬Ö†X€d]Ðà3“ÉÃÄÌ™xŸ ßMàœ[<çSPkvc—hÈ'…™˜^Åm™hØ7 `Û™¦ èÀåráq›‘œ¾!daeKŸþÆÕ˜:Ì*³_דâèi?I–eP*B7Ÿ¿åô!¹Ýgr6Ër6oKbëþãðôrI”ËTˆüªŒ¨xóö=›ù¢&‰(e+ßóÄkýÇ`ëÁÜb.“¸ÐW×w0¥°jÑzN™¬|©WEãµ¢a¯6[öX†AkÓù*/œ¨‰€ÉY­ ÿV’§–u²jÂ>1W *½·°PGŽzÿ¨/Eg{ ŸÇâaoŠÁVú:è¿™¤1$ôR§W,–ªà¨@ŠË56¾ÀÔÜ-¾,mê¸Î/æè¹– òr5¥T*S(Vf8ö9u’ Õ£w›ùóa=Í<{Ò¡UŒ÷r¯+ÉådDÏF$è°…£é¿`zþ»ÎúöN‘µÜ®0Q3£~_^Ëóâ¯N=ˆvpTà±LžT}ˆîkq†Òm<¼ÎÓ?Zh¿X£ï_þÝ¥[)ƒ `gêÃa_Ô*äÔ2`'=õ´Fÿ2EâÁPú ÷»›l=8‹Wv°%THqÉ¿<"¤ïG¾ÆxH{#ÆÖ«aÔJÕÞ‡—m‹„ çñKsÿàñVŠØ¡°·MâÒ^ TÁ– Ý›r¥ß½ømüÿ_™?ªWİ÷#uIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/hierarchy.html000644 000765 000024 00000017377 14042362131 022270 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Class Hierarchy
    MySQL++ SSQLS v2 Translator  3.3.0
    Class Hierarchy

    Go to the graphical class hierarchy

    This inheritance list is sorted roughly, but not completely, alphabetically:
    [detail level 123]
     Cmysqlpp::Exception
     CParseV2::FileExceptionException object thrown to indicate a file I/O error
     CParseV2::ParseExceptionException object thrown by File::error() to report an SSQLS v2 parsing error
     CParseV2::FileHolds information about an SSQLS v2 file we're parsing
     CParseV2::LineBase class for parsed SSQLS v2 declaration lines
     CParseV2::Field'field' directive line
     CParseV2::Include'include' directive line
     CParseV2::OptionBase class for known SSQLS v2 'option' directives
     CParseV2::AccessorStyleOption'option accessor_style' directive line
     CParseV2::ExceptionOnSchemaMismatchOption'option exception_on_schema_mismatch' directive line
     CParseV2::HeaderExtensionOption'option header_extension' directive line
     CParseV2::ImplementationExtensionOption'option implementation_extension' directive line
     CParseV2::Table'table' directive line
     CParseV2Parses SSQLS v2 documents and holds the parse result
     CParseV2::Field::TypeA smart enum for converting SQL type strings to one of a relatively few types we directly support
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1Option.html000644 000765 000024 00000047551 14042362131 024450 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: ParseV2::Option Class Reference
    MySQL++ SSQLS v2 Translator  3.3.0

    Base class for known SSQLS v2 'option' directives. More...

    #include <parsev2.h>

    Inheritance diagram for ParseV2::Option:
    Collaboration diagram for ParseV2::Option:

    Public Member Functions

    virtual ~Option ()
     Virtual dtor, since this is a base class.
     
    - Public Member Functions inherited from ParseV2::Line
    virtual ~Line ()
     Virtual dtor, since this is a base class.
     
    virtual void print (std::ostream &os) const =0
     Print line's contents out to a stream in SSQLS v2 form.
     

    Static Public Member Functions

    static Optionparse (const StringList &tl, bool subdirective, const File &file)
     Attempt to create an Option object from information in the passed StringList. More...
     
    - Static Public Member Functions inherited from ParseV2::Line
    static Lineparse (const StringList &tl, bool subdirective, const File &file)
     Virtual ctor, creating one of our subclass objects based on what we're passed. More...
     

    Protected Member Functions

     Option (const std::string &value)
     Protected ctor, so we cannot be directly instantiated. More...
     
    const char * value () const
     Return the option's value in string form, unmodified from the original parse. More...
     
    - Protected Member Functions inherited from ParseV2::Line
     Line ()
     Protected ctor, to prevent instantiation.
     

    Static Protected Member Functions

    static bool parse_bool (const std::string &value)
     Convert a string expressing a boolean value to a bool. More...
     

    Detailed Description

    Base class for known SSQLS v2 'option' directives.

    There are subclasses for all known SSQLS v2 options, having the same name, but with different capitalization and an "Option" suffix.

    Constructor & Destructor Documentation

    ◆ Option()

    ParseV2::Option::Option ( const std::string &  value)
    inlineprotected

    Protected ctor, so we cannot be directly instantiated.

    Parameters
    valuethe option's value

    Member Function Documentation

    ◆ parse()

    ParseV2::Option * ParseV2::Option::parse ( const StringList tl,
    bool  subdirective,
    const File file 
    )
    static

    Attempt to create an Option object from information in the passed StringList.

    This is a kind of pre-processor for the Option subclass's ctors, creating an object of one of those subclasses only if the given StringList makes sense, passing those values as ctor parameters.

    References ParseV2::File::parse_error().

    Referenced by ParseV2::Line::parse().

    ◆ parse_bool()

    bool ParseV2::Option::parse_bool ( const std::string &  value)
    staticprotected

    Convert a string expressing a boolean value to a bool.

    If we cannot recognize the value, we return true because SSQLS v2 options all default to false. The assumption is is that if the option directive is present, the value is most likely truthy.

    As a consequence, the only thing this function recognizes is "0", "false", "no", and "off", with any mix of upper and lower case. All else is considered true.

    ◆ value()

    const char* ParseV2::Option::value ( ) const
    inlineprotected

    Return the option's value in string form, unmodified from the original parse.

    Subclasses typically either expose this function in their public interface with a different, more appropriate name, or they define a wholly different method returning a reduced or more type-safe version of this value.

    Referenced by ParseV2::HeaderExtensionOption::extension(), and ParseV2::ImplementationExtensionOption::extension().


    The documentation for this class was generated from the following files:
    mysql++-3.3.0/doc/html/refman/ssx/bc_s.png000644 000765 000024 00000001244 14042362131 021022 0ustar00tangentstaff000000 000000 ‰PNG  IHDR€_ kIDATxíËkQÆÏ¹É̤I&“¦mš&156*nÄ…”ܸR,4 +Hµ(U­b”ª1‚ŠˆJ.º(E·mßúhëJmKS'C›(‚èäÑ…¤ï &äÖþ ‡ïrÎåü3gö(z÷ýÒ&_9ó}’ÕŸ@‰mÚu ` Øh`ñ÷Ô¯  „ú&·ññ×Ù~“½—Üò‡ÎÝÑM4¸%‰3²§?Êêh)€ÿù™\ÄYi>Jb @gûßiÞˆú²Ñkg§ãê\è½­šEUæv+?E€î"pæÖÛB\ƒY&ðØó$vM+ê’Dn¼)}òþ:§Xoâ ƒ3ŠÚ¯'¯¿.‚fÁ0ìuŠ9òLýj€f6¸%«3Gf”Ô#Ôsm(,ùÃk*Ê’³Jª…¯¼JË¢o䆔¼u_~ °r]%%mnu]z°r5[ÍÆ°«Úò•Xeµ’†Iù<ÈèÐÅg@IÔÚÞàµë3‚:/<JÇ’ÐQ) ñ¹…tÚß÷(Mû\63éCgl!ýí;ÿ¸4Ùhâñ=÷Zë29­w’ÝÒ´·ˆV;ÊL3ƒj&7©·º½÷a!I†)ëë$-öÇÓú³›‹7tIV¾VàñÔübf¨8¡ÈƒB<﫵imnÿœÈ‡„ lߣù‡ÛD —#É5“­'Æ4?쬲øM’™›°»g¬‚|5Åçµ½GNdÓÐr|ô”Ã&„ì"7+'³@ 5‡G➑Džâɬ^;õã–.3Òr"ý_R³¿Â@²oI¾å$IEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/nav_g.png000644 000765 000024 00000000137 14042362131 021206 0ustar00tangentstaff000000 000000 ‰PNG  IHDRô1&IDATxíÝ1 ÁOHf„á_ ->~¸åM iËMèÀƒS½ü‚<IEND®B`‚doc/html/refman/ssx/classParseV2_1_1ExceptionOnSchemaMismatchOption__inherit__graph.png000644 000765 000024 00000016444 14042362131 034372 0ustar00tangentstaff000000 000000 mysql++-3.3.0‰PNG  IHDR¢“ ÔÂsRGB®ÎéÞIDATxí ¼MUÇÿÈ{ÜL éáÝ ¦‡G%*½©4$5FŒ†ÞOy”š¢ÊLOdŒÆ«P’„ä‘"ïä!y“Ò½ÜìYß?kϹ§s¯{Î>×=çÞõÿ|Î=û¬½^û¿~ëÿXkÝý/àG޹Ëus·}׺ãÀ18 :$$b\'NI/^\RSS“¡« ×ÇË/¿\fÍš•pý ïPR1==]>,… ï¿ûV¯^-·ÜrK9ç–S͉3ùº'ˆùzøçág,òuOò —,Y"~ø¡~f̘!?ýôSÜöÛo¿•éÓ§g¨÷àÁƒÚæÏ?ÿ¬é?þø£ðÉŠÈK_=š!Û²eËdÇŽÒòË<ħŸ~Z  sçΕ©S§JíÚµåƒ>ˆû86kÖLÖ®]ë×;zôhéÚµ«®-Z^jûöíõ:³ÉÀ @Ó¦M±°`ÁÙ²e‹_w~ºÈ3@dÐÂsÏ='ýû÷—víÚÉСC :u’Š+ÊÅ_,sæÌÑñmÒ¤‰<þøãrà 7ÈÞ½{¥U«Vò›ßüF®¿þzùî»ï„ϧžzJ*Uª$uëÖ@R¦L½?fÌ#o¿ý¶´mÛV>ýôSÑâÅ‹åwÞ‘]»vɸqãdݺu : Œ;Vzôèá— ¿Ø¸q£ìÛ·O¨ÿÎ;ïÔvÏ8ã yã74ë¤uëÖR¾|yí÷îݻëHÚßy ˆ¨çñãÇËÀeذarÍ5רTüòË/…{ nÏž=u° éÕ«— >\~õ«_Éš5klï½÷žæPHÕ–-[êU èfÏž-mÚ´QI8sæLMß°aƒ¬X±B6l(%K–”úõëkz… ¤fÍšzéϦM›ˆ€q„ 2hÐ éÞ½»ôë×O³2DŽ9"ü±ÖûÐCEª&)Ó’b1»œEÚ1˜E‹•>}ú(x({úé§Ë[o½¥ »VŠ(P@^xá9ÿüóU’õîÝ[ ƒ‹üÛßþ¦ÒUŸ’’¢RsóæÍrã7JÇŽeåÊ•òÙgŸÉe—]¦Ò–vXçÔ;wVU®\™dyæ™gô»Q£FÂçD6$™i§^½zR½zuUý¤Mœ8QjÕª¥ÏqÎ9çfA^¡<%~øa™-9|ø\)W.Ť­­¿«U+gŽŽ•Ž¡Ö|]$œGŒ÷W­ZÖœ’>öÿ.3g®–³Ï.cötkÄ»™|UŸ³óÕp'îÃ: ›‚ ¨­°š|_Ü1 Ø]Iüÿú ø'¡¸âI`²kâÄp@<1²ÌÁêÙQ08 㟪åÐë˷ÅóíÐ'Öƒ; &ÖxäÛÞ8 æÛ¡O¬w@L¬ñÈ·½q@Ì·CŸXî€p<ÜòM@/î€쪸囀L4ŃóÐÕ8 Ɖ®Šàp@ ÈClD>Ž‚qÀ1ÿt‹Ï¾ ÈDSÜ18] qà€b@&ºƒ±x¼¸b@>ºƒ±è€ºZâÃ'òÑí¬dàñâˆùèvV2Ð1> tµÄ‡ õ¦‡&VžèŸÇËùZŠ­döšÓÌ›c“ëåK6°dÎs([-$Ö›âW\¡A³Õ}—)& =Á€è´cIW(îpÎJÜYê*Œ…ˆ±pÍ•‰;’"àOèSÿý÷2wî\?‰@Ú5kÖôÇë‚8Ë„Ô½à‚ ü*7mÚ$Û·o—K.¹DÓöîÝ+Ä\&Òý‰ˆxÎ'´mýúõ¥V­Z'*¢÷ ß»dÉiܸq¶ò'k¦¤“ˆ„ˆò€‘Èð]»v•&MšèK2ã9_}õ•üæå›–ˆ?zôhùïÿ+uëÖ‚’<¼G6Ë/¾‰PߢE ¹ÿþûeóæÍ *~wîÜùyCêÕ«'DµgâM›6-ôVÞ¼&px¢ÐÌ™3=ã5gÙÅ‹{Æëó󤥥y&°··téRoË–-^Ó¦M½²eËz&½·{÷nÏ÷š5kæµjÕÊëÙ³§·hÑ"ÏHÏ÷xà­gÿþýÞ­·Þê•+WNóîÚµË;|ø°wúé§{Ÿ|ò‰æ1Ç=ëÙ[¸p¡gé=öØc~º D®í˜èòzݺuóLÄzïõ×_÷ŒTõ  5?hï׿þµ7oÞ<ïî»ïö:vìèy晞Ÿg&šwï½÷7CŸÁ€Þ»ù曵쀼3Î8ëP¡‚÷ꫯjš™^‡¼ /¼Ð«X±¢7tèPMÏêuÀ—¢µI'D£?~¼y_õ;rß}÷É©§ž*uêÔ‘þýû›× Ÿ#k×®•ßþö·2xð`1€’É“'‹<1&Ï>û¬´k×N  dΜ9‚„2dˆY<¢ËF衇4Ê=’wìØ±*¦L™¢AÄQ«HÀ^½ziúĉ5Ý ®¶aÍ‚Ó&jõÊ+¯ÔPiZÀü¡¿çŸ¾|ùå—æåïëU¢º5j$/¿ü²ôíÛW_?bÄó*äTA:#ÍD’ÿûßòÊ+¯HŸ>}ÔtØ·oŸL˜0A $Ý»w—~ýúÙf’ê;)ˆÝdf¾ 6LRRRÄH¸¿ÿýï:èFr(ŒDÔÁ0ÒGþñ`©R¥Š–ÁãS½zuLåË——Y³f)©jÛ¶­Œ7NU¤‘nú›ô%Jh{FêéD8p  Qì 64‘©ÒLšòÇH]?âê_ÿúWíƒ>(¾T©RZý¶4}útêµ×^+-[¶Ôº?üðC½}ã7 ªœ¶V°E’ê;霸kÔªJ¹pNc/b7¶iÓFÆÞ7*Öw(+ŽàÃæCÚ0x¿ÿýïýEÞGyD‹6hÐ@Ã| yþùç5h©Í›7W -[¶LnÛ ÿø£FʼgÏY½zµïdáð@HoîE"£J¥L™2þ-lW@“A¿ 'lÔ­^'ÛŸ¤”ˆ™1ù£>RÕP½‘åꫯ>ï¿ÿ¾JÏÙ³g‹±!U̪U«ª„µmüùÏV©gl09묳4ù_ÿú—~Oš4)·nÝ*«V­Ò{¨ÝmÛ¶©”Ú°aƒ¯âéæÁyç'BCô©uëÖzÍÌKHBò¡¢igÁ‚Ú{?é¿È`õ²ã¬|þùçjØGê·‘vj°;Í3êK4¯Zµj~ö_|Ñ36šg@à;Í3ë-_¾\¯ôòŒtò á,˜Ðž±Íü: XÔ™ Ý~ =£þ}ǨK綾^Ò2ï¾û®:'8QÔS‚c]uÕUž¸ögiÅŠšnlQïòË/÷ŒäôjÔ¨¡i:uòŒí«N“QçšfÌÏØÉzm–›<³<¤×YýIDg©‘0” ž¨³xÊ ôÝwßeðVmY¼b³”búß_ýµ‡wœd–b<ãDy´JqÆŒ L£jý[FzôÛ‹o¿ýöuØ{ÙýND &¥˜•Â~´jìÛ4¾d ýé_£–sŠ ,¨ŽQfõãH…öžµýBÓ±wó"å9 &Û á•ã…çwr@Ìe°¦èÈý_³Ã@‚pÀÐ8))ÍzÞ>³Û³2`M'·x‚ŒM¬ÚlÏÏïäŽH€ÖøŸæJ•:Ë™gž&óç¯P“+š§´OöpΞ½NJ–,*;w0¡q÷žìæóT{ˆ†óXñ4­aÜ80<+Ýÿ¬ÄÊ<ˆÏ˜±Ú÷„ë7ß\kU®œá€“ˆ1Â`ÆŒUæ¨ØÿOf8pÈ Øcm®˜bŒ9r¾9˜ê—>r$ÝlXäÿvÑqÀ1:~iîƒSÍé— J9rÔœ]\œ!ÍýÈ>³Ï+?ç”)+ÌYÄÿ«e{#-ígY¼x£ýé¾£à€b̲YGŒ˜gÔò1oÙ¦ñýÓOi柫†&¹ëlrÀ1›Œ²Ù:,K—nVG¥H‘Sô§…kÞ;ujrí°ØçÊíï„ÚâËmfd·ýÔÔ#æXÿÏš½wïIº³Ò¶í±ÿu.^¼po:»uæó|‰µÅ—,ƒQ¬Xaáa+r’R,YºŸýtª9à°¸7ÆdàñâˆùèÞˆña «%>p1>|tµä€bPš%‹/ MqÄ€<äplå ø´9WÜ1çxëjŽ‚ˆQ0ËeÍ98 æo]ÍQpÀ1 f¹¬9ÇĜ㭫9 8 FÁ¬HY]¼æH\‰>Í1zže(á–o2°#æˆ1³ÎŒ'rÓ©æ€ <^Ü1 jÈ@Äø0ÐÕ8‰N5dàñâˆùèTs@: Ƈ®–øpÀIÄøðÑÕˆAèÆäà±âˆÙèlÄ€ <^Ü1>|tµå@h´"b›úÜ' *TÂ+X°˜ãY<c6ÔÛqü­ÍgÅQî¸ãùË_þß®¼ã@¦ B¬¢Ô®]ÛÏãT³Ï w‘›p@ÌMî»¶}8 ú¬p¹É 6bv:òã? A±-™øÁæµlgÚŸqû&7‘8Ë—/ï×¹nÝ:óæ­b~{ûöíÓó~†;vì01P¾Ép§H‘"bb5gH‹÷¢ÜÓß?üáQWM$ûeË–‰ å«<¨S§N†èõ‘*$Pã²iÓ&¹à‚ ¤bÅŠ‘²iš ׫õ–)S&Ó<'ûFÔ‘èé½zõÒ‡^¹r¥¼þúëBÄø£GƵïDk·‘â©F÷èÑC6nܨÑéÛ´i#&P·<öØc~øH BýàÁƒå‹/¾ð?¡)R™ iÿüç?Mt¯LH´Cb‚œG]ÕÎ;åÞ{ï•·ß~Û¼•ö™7ožÜÿýòñÇgZ ïر£|úé§bbTË /¼ C‡Í4ÿ˜1c„‰žHµD¤ó%K–”;ï¼SŸÃ¸–fÍš‰‰ô.&¼˜Hï²gϹøâ‹åÑGUæ,Z´H6lØ wÝu—˜ÀÙæõ¾£%55U:tè ×^{­Îb˜Ç½Æ‹‰È®é>ø æC ÊØz®lÿŠ+®PàV¯^]LäwéÒ¥‹<üðÃÚÇsÏ=Wî¹ç½¶Ö¯_/xo´k‚zËOû¬‰"µSëKKK“›nºIûLëeÂ$øh™Œ/¾ø¢<ðÀr÷Ýwë3cÒdúÔ³gO$~þùç…Àæsç΂Kþç?ÿÑg @¦¯ÑRL@DL™2ż/zªJÇ×^{Mgd6¡V°ßø@Ì"¤ å‰Ôx·oß.ƒ R)‡ÚDê¡Ò°9­Ú¸úê«UíR'€ã7ð©ûñÇW°·mÛVÓ¯»î:mеP ÊR¥JI•*Uüµª¨>¤-ª ¦2@W^y¥‚)†IYÿà¿ì²ËÌ‹ÜÒ>!aè €|êlÕª•Ô¨QCù0gνW®\9•ü¬§aÓ4>HZÒ|êýÓŸþ¤|DrRì˜.h+¤¼*¼ç™‘úôbÒÐK.¹D¥óòåËu ¶mÛ¦à#¿ò2qhÊ¡e˜8)))òꫯê80qÑh®h)&ÕŒ8F*…†½V¡B•V¡Æ2ù!˜H9$äûï¿/#GŽTÉ“žž®³I £TÀ1b„ª:$Œ]Ĩ7$ä3Ï<£ÒG dòÆ¡2©P¡BÚ'˜kìßâÅ‹ûÙê "õu à,‘Ð…f Á|TPh[´Ï=ø‡¹ª¶dA‚Ôƒl9[)‡„…˜+L*€³ƒ 8¡%JømÛñ±uhø &#Z©OŸ T/À %fÏõ×_¯Z…±…b’ˆ‘bvðà¨\Ô&¶Œ %Ä<â»uëÖ:‹8©‚:Âcàñt!ê@2]sÍ5~UÌ~ìRlNj ›Œ‡0 R Øõ4lØPLÇ×YO@†TêÔ©“y1{áLû‡ÝDÝx¡HtìSˆv,!I0OPsL4L lµÌŽô·ö%N†ç4‘é5lØ0å9÷)‘Ÿ¶¬yƒMl¯5CÈ´’ Ó }ެ.™$ óŒáãž¡@&?b’ˆVí„Ö 3 ƒGGÎ;ï<l¬2Ðæ'êùÖ[oÕoÔ @µP;ÒìׯŸ¯–IÇÎÂ>yã74µ€ÆÒŒìÖ­›`GA˜|,Y;“:Ê€P#é?ŽC ±|©“&MRÐs•Žšç9#Žã‘Ö¾}{u2˜L.ÀÁ¤ 'ò"Õ˜ÐH5L &+ªŸ~…ùùà¼`'ãœvÚi «¾™ôLdìq$õcŽ„u0.ðš¾2 YvBdF¶mž;›þ|´ã©¿™ÕEz†ð€ï7È^3 fÐ)õNØ!¨«P1ÏìC¢2’¹I  ±*¾„÷“ÐìмHÀPµMyò¢56ƒx""?|"hÝY•C=cb‡‡·Ád åwfõÐwÔ3"»Ä¤ebáUÃ'¤¢5"ÕÁDåLð8Å?¼…µch I·ö ×–ë•*U²?sõ`…Sfý‹ôŒá ¤.êÄË.‘é aFdÆÃ쀶è{¤þgÕ „àŸh)úѶù­n—ph‚YˆÍvöÙgk‹ØIÑ¤ÌæœPB!IðÎà õŠ-…C€´ÂlÉ®”[²d‰ª]@–—)wu`ŒœÅãÆ\³f_ö¶ö*þ믿öïÅãç‹å)K8'|,±L‚ÝN¬âU²SPé;ö(&PfÄ:ê„ ô6Îj:¯SRJD5Ç"7†:ĵU}H –- ”PÍ,ϰT„$¿ùæ›Õ³E 2QXªÁƒÅ#%Žmà`=vCx–H»3¡m%ËuÒ‘åމ]ž,L Èæ¥nêaÝ”û€+”pª˜P¨‡Š Ƭ'êbBYßäôß’m×þN¦ï¤"{½§%\ý1¨n²ÙÄg•z"Êj‡ @HR¤"`ÀùÈìÈÀ°&ës?{BÅ#!¹t·ʶEÖ‘ØöÀÂ'Ÿ|¢¿¹—W()»ªÄA²°c*ÕìàNNÓ°w h°ï²"êÍl‡ˆ“*ìqc¢Ê±Í8n…jçR.”ì‚2¶%ûëØœv§„ãZ¨c€‡ÄÄ«Æ^„˜l rB)ôPmË–-ýT=W$²íFº—ÈiqßYI´‡eÕ)„ÚŒ´PY#í!¥¨ÏÖ“ÝÝ Ú@âáùbã!)!€ˆ‡Ì_.«â¹‡' Hm^Ò v[0-"M¼c9ÿïIÙYI46`Ʋ°i‡(|ð³»[O²Ú±ØÜ–¡k”6ok‡†¦å…뤶“}8T€tpdŽ˜9&äP»¡^sîõ$÷[v@Ìý1p=€fMÊ'³,ÀIV÷q<Èq ˜]/wæbm¯ÙMMÇ\âÀ:§šs‰ó®ÙŒp@ÌÈ÷+—8à€˜KŒwÍfäÀÿ©oHÚà ýèIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/nav_f.png000644 000765 000024 00000000231 14042362131 021200 0ustar00tangentstaff000000 000000 ‰PNG  IHDR8³»`IDATxíÝK€ EÑ–·[†øBÑmkâÄÂH—prÓ¼.‚Žó‚ꎤR6Z VI±E‚5j³„lóš›iI˜¬ÞêçJ0ŒÑÑ/Žû›™uøñóÞ¿6sH ÝõyIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/tabs.css000644 000765 000024 00000021740 14042362131 021054 0ustar00tangentstaff000000 000000 .sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}mysql++-3.3.0/doc/html/refman/ssx/closed.png000644 000765 000024 00000000204 14042362131 021360 0ustar00tangentstaff000000 000000 ‰PNG  IHDR à‘KIDATxíÝm @!†ÑGk™É7À-`&séts¦Àñþòð@åk}ª2€… P%Á_Ëþ¿N² .:0Dk¥‹Â›x" Ö›)¡xÒ5õIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/inherit_graph_4.png000644 000765 000024 00000106517 14042362131 023173 0ustar00tangentstaff000000 000000 ‰PNG  IHDR4ë~| ÐsRGB®Îé@IDATxì¼ÕóÿÇ?I…’Ñ–MÊÊ–²²Gddï¬d‡ŸíoËÞ„l"#£"”‘ŒÐ"4(JIi~ÿ¯çûú|ûÞsϹ«sï=çÞÏûñ8÷;>ûý=÷|^ß÷¬EÑs.Pà@à@à@à@à@à@à@s –M”ÇóSpËä; É÷'æ888888$4á;888888ÿX6ÿ—VP8ð×_¹wÞy§:-©F¬¥^½zn¿ýö«k ‹ ÈM£àÜ|.5vV#FŒp[mµU]¾.|õÕWwÓ¦MË×é‡yTšjð«ãÆçpÀ ŸÜçÁÝwß]¿‚aMyÆhòì…éå@4Eyîä É³¦888888P”ÐåI¸888888g€&ÏX˜nà@à@à@à@à@à@Q„84Eyîä=ôP7{öìxÖ+¬°‚ëÒ¥‹;è ƒÜÊ+¯߯ȓE‹Ùx;í´“»à‚ õé§Ÿº+®¸Â]xá…®C‡nÆŒî½÷ÞscÆŒq-Z´px cÎ%ÑÈ‘#ÝÅ_œ¶Z×®]ÝÂ… ÝW_}åî¼óδuüÍ &¸ÓN;Í=üðîqãÆþv|¼êª«ÜrË-góo†“ÀÀÀç@Ðäø Ó+™â# ߦ›nj6ã3Ï<Óíµ×^%7ÎRÚµk»e–YÆÝ|óÍp“¤ÇÜ 4ȵmÛÖM™2Åm·Ývî„NpýúõsGu”Ûzë­ Œ$Û¤;'ÎË[o½eà§iÓ¦.ùiР›7ož›;wnº¦…îÍœ9Óú™3gN¡ûþâ»ï¾s£Gö—á888š¼xLa’%q`·ÝvsW_}u\íºë®s—^z©ûá‡ÜFmd÷ÿùç÷ù矻õ×_¿dbÒ¤I&É!æÍO?ýdÀƒù$´iÓÆÕ¯_?îI›>G@ `:æ˜cÜ+¯¼âì:uêd÷/^ì^|ñE·ï¾ûºUW]ÕÝxãnúôéÖ¾I“&&©aîo¼ñ†EÚ¥O>€2ˆñJuêÔ±kþ\yå•n³Í6‹¯ý ë;üðÃý¥ýõW÷óÏ?ÛŠ“VýñÇî—_~q­[·.Ô>\ä  É—'æY&l¼ñÆVŸÜ =(Ìš5Ëm¿ýönèСvÝuW9C† 1 0"ŒÿŸþé ¤@#ÔDp€ûþûïݲË.ëˆ ˆÙvÛmÝ>ûìc å¹çž‹Í|à~ÿýwwôÑGÛÛ»=z¸Ýwß=¾æä¢‹.2Uê*>={ö,TÎEŸ>}ÜÓO?íú÷ïoý³ÁÒŽu' é:/ÀRª@åçüK~·ÊßSh8Pý9€Dix6(Hh²ÁÅÐG•s) `Br‚4pR«V-רQ#Sñ A‚á,j€Ž§ƒ>ØwÞyv¹îºëº×_ÝÔC‘O>ùÄîcLË9ÒìO5{챇@c"‰<ð–Ž* ƒÁnReDgØÒDžyæwî¹çší÷1dNê¥TB%…ÄÅÓ‚ üi|¤ß-·ÜÒ$A¬w‹-¶p+®¸¢ÙÎ$“H0ÀÔi€9ꦛnŠû 'åãFÞHêÏ$ÖÙ¢h²ÅÉÐO•r¢¤ Mr2HOÎ9ç÷öÛo›!-ö'€ž$%mR,¨›n»í6“ô ­yê©§b`ÁÐ×ƹÿþû¯]î°Ã@Äf@Hª›|}ÔW‡rH¬Êòö6¾¼¤#ª³ä|ÓÕGò‚ç×þûﯲÊ*ðâ:áí!æêióÍ7÷§á8887*§¼yTa¢åå@ß¾}ÝÀM:ƒ‘,j$7™À] `ä‹/¾0„ Ë»8£Ò¢>”06Üpø;Ô@¨Pùl°Áf_ã ß|óM³µ9ýôÓMRTV0ãû)éÈ\QUùyr¼ë®».îIÂ^ISRâƒát ÀÀÀ|ã@4ùöÄÂ|ËÌܨQ1­±Æfƒcßtª:'> ªìg6Ùd³A…ЪU+S  PãàAuì±Çš¡m½zõây¡v“éÁŒ}¡ý‚:êÃ?4Õê©üѪàÊ xò„ä ›œ²j%ì‚^xá“6a'C¼lˆ’D=\ÞgòäÉî†n0 —¬ÎòÐäÃS s,–ÅI[hxä‘G:Ô(ظ ‘ÀåO¥^½z™7í<ž0žýòË/-èñ]pg&ØîÙ¨žðœ¢?<©Feñd’íQ9¡z¢_¤5Iúè£Ì@ƒtÆI* Gy$n("ä×éq¥ÿN’ë ßž{îi<±®¹æ‡+;1p’í‰ÕC @¤Lx^ÝqÇn—]v)T'uœp888“}A Àœá€T8‘þQ¢qãÆe}N2ÜFâ~eäÉÀ6¾NžHz |D’œ$oÛ9e_ýu$Ëüˆó\&±H†Ì‘$FÅNSÒ[ܽ‹­—®PžZ‘@Sº¢yŠäþ^êµ r¹d#IKÝÏÒVäA»HFáEº>|¸ÍO"­Œï“¼õ"Iþ"©t#I<‹´)î†$…ÖŸ`W-¯ÊþþûïH†þ‘ÔÏ‘¤Á‘Ô»‘^N"Å’Š×ß’×qAÊɉ'žIZ›r7ó¥^|"yHFr€ˆ$IŽ$µïOæ…Kø“Ý`|S1µìùÆ7*ðD/P‘TðYaÉkiN­0©Àìq{$4žH;àƒâù{þˆÑ0R–uÖYÇߊ”a”‹çPªqq\)GN0hF*CP¿âˆx7¬'Õ«¸6¡,;ð Q‰í{,THï¼ä.;#ßKeD»ö3@µJÔk ­DÐL$ª<7ÂDð<‰uÖYgÅËã^2lC\rBL,¯†N)*r‰zœqø-ºB)VN=õT‡G&˜÷ÜsO‘úén¼öÚköÛ(`cÅxqË*ï(+°(t8%T¤„&KS ݤp Hh 3¤¬¬›T©Ÿ'iGr»œý-;ʸ;RèBÞøûÆÊø1RH€¸ ÿOüq$·ø'¼‘Ë,¢<)¥”½–ÍEöWq}¤DŠÅ)´Ý“•Iädcf×ÔÕÆ½úê«vMߊ­·—`”*ùS J“(@GR…Æuý‰b@Eô+•®¿‘¬*DC$ ßó'H$e›Ñ>•BÊà?â˜J™ø„ÔEjàÉ”âNÅÍ´Àgxƒ$ Õj«­Vd-3ÑJ+­ñ<åy 4FRïÚÜyfðÆç܃WŠf^¨¯LÏËóþòË/÷ÝØ‘ï„M¤PÑo¿ýf÷ää`ã!¥–Ý^,­æYÉsÓž!ßÖDäw&êÐ?ã)h¨I®“ß§B“Êp‘M Ë0F¸8P%€¦JؾTƒ@S˜}Ù4ô¨Ñ‘$g¶²¹(ˆ£m:¨³ô6I `+i©ÝGÅ!û¨èÉ'Ÿ4°" d¤ØCvO¡"y³Y}T¯²ÿ²6ô³ÖZkEŠTmelL’æE'Ÿ|²]ó‡ÍÀ¢XOvO±’"…ˆËÙ€Ù8e·e÷h‹êÃý%U ²a³þäñ)º¶ÍÅ×åÈx’¤F %`s—MZ4~üx«"ïC»'#üHvkÑa‡f0óFMÂ<I€Ä:†û2î7Þ)F••ê2ñ àˆêHiO"E·5 9DJó‘1YOÌ)â·, }1?æ ¯8ò¿ã PA¥$ )îy)Õ‰=¿$0òýùïÅý÷ßo·à§ÚžŠ“eà†¹07ÆTI²IâdíŠãƒbw˜/mé ÅzKKД–S¡^Þq š¼{dö£lh–<·òEwŽèЀ›6¤P4<(a³áÍ ã7.½[[Þ¦Êün›¹HF[mµU¤ÔÖ—Ò~˜ô‡¾¤Z0»©VãMH* “À €#ŒT)‹êâ5ÙFöí·ßÚ-6I¡ûâèŠ+®ˆÆ ¾–1¾m¼É¾Ø*ÀÊÙ˜Ø176W«GÊo’)ê) ‹`m@·Ür‹…d0‰6%ÔEjðì³ÏÚ9Ò-À†<ú¬O6ÝL| µlÙ2R'[7ל3æ ¡Eø6)“WÚ»ˆdþðÀ”$$6GR®ØÇ—KUeÀ‹ë$ )îyIM·ñýø#<â;Äz!Â9DH¸(Ly®|_¼dÎ?chJâßOøpë­·ŸxÖ\§³=ôóJ=@“Ê‘p]m8Mþ=Ê ¡)üÌÊ hØ|ðAjÂÛ7oø*¤¨`Å:–F >ñ€†MÉ›RÔ9”³Qñ °á°!ó¿Æ Å=–P¡p­@”P7±Y§c˃Ð$&ŠvZœöƒÔ £W¤̇MÞƒ-$EŒTy1Ôr矾©u’j`(c½I°üšH EÀŽ”îÃæ¨ˆÝÖ›¹—¢dⓟR$O^½?á€Е$凋ä%i’ÖÅZŽ=öظJÐ(„ƒI5P¡>C¡ÜkVך’ž—ìí{8Áðš>½ä @?<ùßZœ2š’ø ÁÙê'ÿÝñ÷J:fЗª™ È€ŽJÙ¢ Ëà5ØÀg‹ŸÉ~²•‡%ÙgM<'ÏV¦Ðˆ‘t·ãŠŸJɶÚps2Ú5ѺIû!Ðg¿Ru:À³FOçCÜj£÷·íHâV¨¸ÈØ;f|,àm†²Ä”"TÁ•J+’‰OÚ˜­_I¶ìÈ ç!K;®·Þz–× Ö$Àé$³üqÜ#0'ãUœ¤³íÚµãvL¤[ñÉh¥ò±Ä¹ÄŠJë‚2E''D sÓá$¥±Èå¾<éä@JÈ'Âõu’Gÿ<Šã†ÎžHþ 1nUP4UÁõ0f‰Hz”X¹˜ uë®íVX¡µ~,6ÐÑ“J9«˜Ú¡¨¼H·Á–·¯Ð®(ˆ\M.26Sb#á•B^²Lä£]“ÏŒ˜Jr¶€>ÆÑ®}Œ$64©mŠD»ÆÃŠpA6yO¼lRCKè*{ _Tâñ±Ç³øMäJóD~4æB4oÿC¬(<ô ­JÒ`e¬Kª"›—Ô!æA$›‹â-U•“a²ïÖ‘ßXQ(J%fÀCêKÈz 'X¼Må1› j›×ç’hppREÙ1ùG’'{ ¶é£†³R®H­fã&ësÎsìÒ¥‹¿$6`†|kIJF'O÷¼:vìh I†ßæ•™l Äšò$©š?u’|Ù9|ËäQ%I¡Õ)ŽɸVqçUuR’8(”äþúkNôðÃD;Þ$ñö9Q§N7ÙõìÙK< òmMa¾ùÃòªœ’^N©«U F³‰A]‚'Š7ÆsÆ«œÆŽ7SRU³ÁëõʾûîkÆš¨|äníi‡š {mj¦^òJ{’}”#Íß¶#ÞNÔGC¬ÿñ†»’¶Äj`3ƒ] *&Ôj©^MØê`ËJv*¨!P¯á•D8‡9¡BAÝ…jÛ-ìˆðòÁà—Ø8¨ç°_¡.ê”G}Ô¼´PaW‚‘,ê8T=™øŸQaçòÍ7ßD¨o$)Š$e1 rÂ~ņ¼(ÑÎ;ïaK„í Ï »TSØ1AO£ö¡Â3 Cn>¨øá»TL±9€·ú$ñŒ0$ösÀ“bÿã »(ʽÀ0°lyâ¹ú:%=/ÀžE~\Žð Û¨$ñ=„yo$<Ýp釰áñ^XSæã½œŠãvMxNyªj@S‹‰ˆò’’Æ(PÕç®oßÝØ±¿»¶m›»nݶ“øvKW¿þ’üJy¹¸0é¼äùºôæjyò¹½­[ÚRxhsr’¼X.oÛ‘:õååc¶IÛ êQ&錱½‘±jjó*½ÆCR"SïHBSh.=¦ÂIµ§¡IX±3Bí“L’Ükòèq؃ JóTŸäÑdaÐÀÏŠ4¾ÿp¬ÀhWª3ø•Ì" WäÊ< ñ†Ô9VYúÎ& É-X^.„º5ŽsæÌWæé/ ÈŒ5I!Me”x ™V¨[ãø88¿*ÇŒŽe_Tá`.‘%ô%9XtæÐåI¸“c7nªD¥C¥ZúÌ-X°Èí·ßSî¡æ96Ó0ÀÀÀÒq€|O•I䇪îMuÂyº>Ú»·ßþÖ=òȇr/+]úê²Kèì?|·Ê*+äéªÂ´*ŠÐTgC¿åâÀôéÿ¸§žæžxâ#®ÍT ˆÝÓOŸâ:t(lÀV®ÎC£ÀÀÀÀjËhªí£Í¯…}÷Ýd§Ø1îå—G(T׵붮{÷]óæE-îókea¶•Áh*ƒËaŒ´ bÀÀ£¥sˆûä“qr5\ËŒ|>xkEE-}ôÑ´‡›UÈÅE±È±K;… –q3fÔ“›ïP–?¥VÚÄ=ûìinç—äo)K¡nà@.q€¸"©9yÊ2¿¿ÿ®+³œb™ÔS\ºŠ'éÿOÙŽÍ+K7¡nà@^p·m)ÌÊ\Cš¬°1tRL:ËŒ|Ÿxâc7þB%ÛkçN:iתUA’´ÒôêT7Ì;ß 2ƽóηú|§|M»¦MWs»îº‘ëØqc%<\?‰¬n=¬§B8M…°5tšäÀèÑ¿)xÔ ³iÐ`yw íÝ1Ç켕’L ç5гfý+uë·nÀ€¯fF à/Ò[js·ûî­]çΛšúµF1$,6p €& L ]¤çÀСcݽ÷R&ßïÝúë¯éN=uW‡}LݺµÓ7wª11¢[ó¿AhzÔ¬ûìÓV@f=+œi¹³",-p B8M…°µævJü˜×^éî¹ç}÷Í7•Ò~=wÚi»šLÍåJXyMåÀܹ LóÊ+#ìP. Z¦FÚ{ï6n=Z»W,œ§¨¦ò)¬;p €&\ }¸ÿ] ÃÞOM"3iÒ {ë<ýôŽ®M›¦;5ŽŸ|2Þ=÷ܧ’Æ|åæÍ[(IÌút{íÕ&€˜÷m ®,@SYœ®¦ãíš$‘x,ýóÏ<‹ä‹j©E‹?¦š>ò°¬ ˜4é/óÞÈüúëtùfrÝng@fµÕŠf]ÎÐM¸88PN·ír2®¦7›<ù/Åìúöf61Ç»£;ñÄöÁ ¦1jØúQ±¾óÎ(ý|b*¥† ë»Cig@fà תaÜË ¨Z MÕò?ïFÿñÇiîî»ßs/¼ð¹kÔh%wòÉÜQGmïB¶ë¼{”aÂKÁRtbNþöÛL×¾ýöйóf €·ÌRôš”—Д—s5¬Ý¨Q“Ý]w½k6묳ºÃ>†82áÇ»†}jør1tG½Ú¿ÿ—ñõÜGlëN6k¶Z çLX~à@Õs šª9=ƒO?ýÉÝyç;îý÷¿w­[7qgµ›Ûwß¶æršÓ“ È"þAž{ƒän=Æm²Icwüñ;»ƒÚÊòŽeq˜ÐUà@àÀRp ØÐ,óªsS~Àï¸ã7|ønÛm[)ö)¹´:¯9¬-p Éìc^}õK×§Ï{îûï'»]vÙPF¿§™z)Y/œä‚„&7žCÎÌâ­·¾u·ß>Ð}ýõ¯/£GÝÝ6Û¬“3ó  ¨hd^zé wÛmÝ/¿üéöß S±"™ 88»€&wŸM¥ÍŒ¬×¯½ö•Id~øaŠÛsÏÖîì³÷1d*í „r…úë®{ÍM˜ð§¼•¶v=zìæZ¶\=W¦æ88P ‚Ê©æT÷¢E‹Û›èw¾ë~úé·ß~›ËNàhWÑî¦|ðÄ÷»Twö†õýÇå–[ÎÍ;7§ùDòÊ+_uÆ·¸1Oè4hPíù]“8dÈ÷ðÃç,  ù¿ÿõ·ÿ‡víÖQ®¥sÝ[4ÏÙù†‰dæ@4™ySíJÈèûÌ3ÃÌÈqÚ´¿]×®Ûº3Ïìäš6]µJÖÚ¥K·æškVÉØaÐÊá’™\4¯¼ò¥ëÝûeW»ö2ÊŒëÒeóÊaJ%p p B8M…°5·:%—ÌSO}¢€xï»éÓg»#ÜÞ€ÌÚkéHn=©0›ÊàAñÎ;¯ŸEø%(äe—uq+­´\e ƨ@@SÌ­ê®Iù䓟XæëY³æºnݶsgœÑIR‘•«zjaüÀ*áÀСcKé)W§NmÙi! ªd"aÐÀÀ¬s 𬳴ê;œ;w{≠È0òè£w0·SR ¨©¸é¦7Í“Àÿ÷‡»•WR™šú]뮞€¦=W€Ì“O~l62sæÌwÝ»ïèN;m×0²=ã°”²s€ÿ…3ÏìkÑ®o¼ñP˹Tö^B‹ÀÀ\ç@È¢–ëO¨óCµôàƒCÜvÛ]íx =ì°vîÓO/7Û€† W,E¹_åÐCu{íµWü9øàƒÝc=æfÍšUi“_´h‘‚¬í¯·ûÿ+2æ§Ÿ~js^|ñEIöu«®ºªì—ž7Ùt÷ÝwßYï¾û®r}ïÞxã 놾ÿý÷_ߥ›7ožË$‘a=¸>#ñ! !ëHsûâ‹/l>Åõ1{öì¸ÙÌ™3 õC¤è1cƸ±cÇÆu’'HÁàóÏ?ÿœ¼ÓçŸ}ö“;ðÀ»Ü:ë4r/¿|V39ý´Âä²Ãâ_³3Fè%K Ž î×DöÅké˜cv0¯¥ÕW¯j¥²² ‰ ôÇ 騱£TmŸÊØse4W_}µ»è¢‹¬j”õ×_ߤ:ur”í·ß~îÏ?ÿ´¶Mš4‘ï;n£6²Íý€0‚DeõÕWw¯¼òŠÖXcèÖ[oµsþ\ýõÑzë­gײŠVYe•襗^Š~ùå—H@ÎÆ×¦7Îx_$Õ±q1êÙ³gÜWI'RÅEJ}PRµ¬•+K¼ýÈ5[ÏvqÖú-mGðŒç>á;P¶ïÀóÏ?_Ú³Œõx ”£X¸pQôÌ3ãm¶ù_Ô¢EÏèâ‹_Ðf<3Gg[úi•ÐÔ©S'ª_¿¾}8’˜D’\ØÀ’ÒDãÇF½þúë‘TC¶© 6xIAìœ?^x¡m´lú#GŽ40 ‘ ‹µ»ôÒK#©rìÓ§O»çÁ’$"výöÛo b“—Ô%îÛŸ0ö‘GÕªU+’tÄß.ö˜Ð0WOwÞygÄÚ!Àޤ'¾È€™ ¥#©°J h”SËæè;ñkÐÜtÓM¶NÙżðl¶Ùf¾z‰ÇÊ4ƒ€™=žŠÁg‰Ìrhøî (Ù4Aå$Næé[*‰/Ü­·”MÈtwøáÛXöëšnÔ¨ÝTEéž×?þèð„ÂÆdƒ 605Qj=mÄñ-SÙHzb¶8f—ãqï»ï>å·z<®(ÔÛ½ ZwÝuMõ‚š'©nò P_I dj'νzÊ——å( K\Õª'æé×ê 7n,ÃðcýeÆ£÷¸¢ÔUI¯­Í7_þßÛÌxUšïp©Å¾£,?üpŒÔLK¥·…»í¶®N 2‹½‡®òÐTÂSš1cŽŒ:ÿ)UòÇW_ýÒÝrË[–ýúÐCÛ¹~ýNuÍš­V ³Ìï!.»ì2³SÁžûŽ×^{Íl[2­ AìQ¾üòKó˜ÂÈø‘G±&’”ÈÅ÷(;Ǧ 7Ü0»îºË¼žPØ×xzóÍ7ͶåüóÏWâÃÿ)*m_T®cºÍo+©¢ÌðØw:|øp³ÁF&IÔ•ô)¾å±‚WxayJºkcÛ`øYê;«‚2ʹDwÜ#²ojÀL.=˜0—ÀJæ@ðrª`†©÷°ÃîqW^ùJ±#½ýö·z‹ÿ?ùöumÛ6×f|±$4]˜)–kK ‘X`¼ x`ÖŠfòü!ab=Ì+j“M6‘koC·Â +˜«ó¦›nj`o(<¨z ÂðÖR jqO•`Ð7Ò¼²ð¸zÿý÷íƒ êׯŸI…|_ô-Yêãè^}õUkKßýâ1•t'§3Œ¡%Î5+Ù Ù¹Ãhúxæ™g¢r7Üpƒ/2ca¤8½{÷67nÚb `Ë5j²øÿ Ûe— Üí·$3¹ò`Â<ª‚¥Óp…Zåá€âÄDûïGԤɹÑÚkŸ#;„ EºAï¿×^·FŸxâ£Ñ˜1¥7”-ÒYžÜ( †«’¨d\¡$.Ư’F˜mŒ6áÛIO¬ GmÖq{lo°AÁ¾cá6mÚDòô±rljÃÅìGô?iõ|YÜN¤z²öØÝ$i­µÖŠÛÒÞÎ9ç«†Ý só„13†Å¼”¬¾7 Æè9iÐ+°dÆÎÔ•—S$ï-«Ï:vÞyg}ÆPdëöë`‰Ƭ^Ë–-#y5Å|‘ºL6ZÛÄs`‰V\qÅèž{î‰Û²ŽÝwß=’û»••æOEÚÐüøã4Ùó\é…AvC K3 ¯lh*œÅa€jÈ~[²aCS Þ¨³@Yæ€<,”zàa¹ ÿ ›‡Å ¨¶ŒÛj«–ƒ¡†ÿQ1dÞ+ïx½ÉoêzõÚ˵n]àæ›å©ä\w¸ ËÕÏicÏÚü& ÁõU ñ[þúë/s‹N7õq±Fµ"/¦BU(#v GloJ ˆW¨q%_`Kƒd*ik“:$7Ä´Áö'•n±V$T©| .qh(§ÿtå©ý%¯‰ÉƒÛ7Ï"›$ãxÙËÜ)µÛJx…êf³ûr÷%Ãt'2‹ $O¹r÷Ô$ VGŠŒÝáÒP°¡YîÓ¶G§ewñCñPˆyôÑ¡nàÀotF»vÚ@¶çè´(¦§PTZ:$i‰«c@Ë'QßtDYÒˆ8]\¹çãÝ7ÔeéÀ m°±AÍ–‰ˆë“´ÊT¯²îc“Öµë}`u]ß¾'Û±²Æ®ˆq0fO>XvéÒE3²˜J1fº>êÀb%‘²#©¶ð²Ñl±Å Þy¹ÙP½÷Þ{¯‰Hب>™sI$ɧ»øâ‹ÓVCE‹ª¶²‰»ÂØÐ¨—áýÒn¬tFPN î?ûì3£uëÖ–ÖÛ:þçJC|/®ºê*³ ÄvARÀ(Dƒ½´×Ça‡fñ­x>5…JÇÕšÂ,­ó’K^”]ˆÌønk׮宸âe}›¯ŠÛcFêl\•IRoZIR_$ ‰* )'­ÇvÛmçN8á³Ã8~ë­·6If²MºsÒiÖs<å’©iÓ5©ð{8`?çmíðLЗwØ™P#ûã?ÞœXc¯^½Ì6ÍWRÿ€Lìôð’Tü(“’TS1¨Jjjàt„ %Ö«Vª¡:®J—tà Ì›™LŸ7ÞøºJçXÕƒ—dž¦ªçÆ/²iC#)AÔ¶mïh„?Ê7¡ nUâ ¥Ú‡]{íµf×äc1m‚'<Øâ %—!Ub$)ƒ?Äþ˱p”²".éïRï[H ;R”c³ÏJÆ6¢û.I`Ìv »,‚J2&¤´6Oì´ Is"‚Q°b,©í|àÀV×ÛyÙÍÄÙGØ£%TôR@(®¥ Úì»’÷|!!e„o|ð÷8b'†M±ªd oGî3/…gˆçÄœ©Ÿ=a/Ïååh<ö÷±_#0(1Ÿ¤¶Ž”&%ò¼d,©±#½"öfŠnã=ôÐCÖUqýÀGgú™~lj4^CŒKàMæ˜ä6‚Øß ,[™f¾ŽÌ$ö|MÒ¯¿þjsç{E¹·é#¶ö‡’%«ÛóæûÆ÷Ê?ûBJ¸¨ÊŠ M¬W£ËR|ÿýƒ3‚n0ÞqÇëâ/cYú¯uÿ}fôÈ#¯Ø?uY"W‡µ×Ä5d ÐÌŸ¿Pï‹6ÝôÒHI's–•Ù4DnæGž RH3^—úÏîÍÚoÜ{ï½-à$Q­ÙT¤ 2ãnŒÅ% ‰#h=:RÊëCjÕv¥äˆùÙ½{w,~sf ؉B I I×g•ZWA?/¶{à “O>Ù¢Ws^ a­õû@’C‡µk¢~C€>Öƒ;õ¤R1*| M‚oJ]VÈ£%µµû”ÎˆÖ ¸¡øLÀ ÀÇÆ£Á<‰vMÄnÚ@JNk|„÷´¥¥±ßu©ììG…T„(üC$‰‹×Àо1Ô÷ F #aß ú€±6Ƈ/…ž°¾Y‹Ô„Ö|ãã˨ðä“O/à‰Ÿ?à¢-ß1xGNÌ•>¸æ{È÷ ‚ODJg|>t_fJñ‡>³aM)˜]š*Dôõ ¥¤cãÆçD/¼ðYiºÍJR'<üðÑ£ü8f¥Ób:a¼±c×›ÔבòNEDnÝ{ïÛô|±ñ¨E‹óí#šb˜XMвhø>{ìCöýùê«_sš3å4Å¥õàÍš3 0ÂÆ ±©²ñd#­‡lclÃ|@ƒôÖÏf#U‘]§þIMë¡ ‘Ô*¨›LóálT ’ü Ñ–Mpƒg"©>X3›&ó@ÂÁµ²ÚÛ5ócÝð£ÿþ&­ŠÆÊœ@ðF6:&…@ (cFú⣗lx@HÂ#P¹ÒLêÁ5ç²W3i›;óAB[Ò—p­ð &QáéF:"z8©T âú¡œäô…çáž{îi)S’`¡¸ô'¬@0DJ…‡"R#ˆï)|ɔք¶€]¼;åhaãêÖО™€l@FjŸðþl–…Xc6M0 '—– øÊ~¿2usýõo(øÚ–æýT¦†e¬üòË#“å5é¾ÿ’WÈæò¼Ú©Œ=d®>kÖ¿nܸßõ™Zè8aŸҩ/²˜ Mš¬ª8(kHÏÞR†œÛÈdMÅ4¯µß’¹ãP8ð0¦?å”Ç”í{œÙÌ´i³”Éër”³$?õI-1HÇS 2qE ܵ±;mhfTŠw›§ƒ>Øis´KŒ¿•þC^”7:InâÄ£ØS„”(ÙØŠà¹F²Q'dcvèÐA±¯šYlm€æy‚ 1•’„-rzYü"ây£r<¼×†Í©¤4£A+(áÉd14²µ+ Ã]©¿¬;’¹B_pÁ2Œãá ÆËf¯C²UHùל¤VvÎú‰û¤ÜjvîÁ6áA*ñ „°[Ħ‚ÚÁb?q~Úi§™ñ.1°HPÊ3”d‡¢"DRY¶ø~¦~ð(TÚ3ìåy ä¹+¯¼Ò‚b¼üØc™ÍFå|_ ¥+q<7o£CŒ,+ã»@{ˆõ ˆ9’ð ÜØ=’C*K9û(ì¥ ¾SðÏ;QÀWø‘À#gÖN<,ìÁ¸® €f)¹Ž·Òi§=¡^ÒKˆ¢:u–QväHŸÅV€WF‹«ëË·–¾ k(ôþl·æš+/i”Å3%éÓ?Ø«ú¡ú]?Šÿý”r0qâ ,cÇ.Jiý-¿|]‹‚¼ÞzkHãpiÕª‘¼ŒŠFÉýàƒ‚âª2,B£rs#×ò$33»¡CÇ*-ÅÉÚ´ 6¤òô•ëmŠKë¡7]§F¶Ù`H›.Œ@Ò#oiÒz°áA˜b3•„Å"f'7`Œ˜ñ@p^Ö´·ì1Iea*áGçÎc"û˜"m<¨!EÞ@dž÷$I¡ ‹ÉpD؆ˆž‰"S½'€D4r(&ÁÇ%=²Í_*; T™êY( †R †=eêÐH%ÑA‰¤#à$ù4URúŸ'1ó‚J“Öį—ú€ºä3cã{ ñ!ê:@• ¥~ +¬ä?Eô©ŠP{k%O#?‡ûûïz ßPÞLKòÆ ’­Wo‘Þ.h3_¨Ï¢ÿŽ õ¥X¤…þ$ …³Ï°aK禈õ;¡ë“4rä/Bá¯(¾ÊOz %GúâÔøùç?íKÈ—1•æÎ] t=­¤É ÷ð(ˆùP°ì¹çf&yáºiÓUS»+öš/ýsÏ=WlPX}8Ü K»*¥”'Í£òùIR€Sk´7 oÀH*Îì¼óζa°ag"@ÌÒ¤õ b´Ô(Eò”e;­Gê2ˆ¶4#¸³$Ä«â\v#öö0@b"“Ò =@Šã ‰—l…ü¥“1k|Nþ2ˆ6HÒ‘Ù’±o ØHûµlÙÒŽé~G)¬ ¡!5 )T’„»;1™’’«LýHU¤(ó‡™Dȧ]€[ٿس))ýI¦¾+âÒšdj›\ ä uþב yéM²neœ4²n61#b¬@™9°`Am©qê+(Û?r³¸€—zõ pæ–K_‚ûãàÁƒíÆšñã§IµÔ_oq߯j,/ò#ʰRáï'šÛxRU„äeÒ¤v–]¶¶þÑhéÐa#wÒI»Ø9Àeå•Ë÷¦íÇ÷GR„ï—çF8¦r௿æ(ÝÄCz;jAóÚ´i–Z¥F]óÖä„7yy¥8y½˜ZëR™A<Þà‘°ø´¨Pm b£E¢ƒ4uª§äÿ#uPá :"®SÛ¶mã!RÓzø6yúGu%;%Ó=Û$¤ù0gOüvÉÓÉ_Ú€ú«{÷î°FÀKE´6—grK…õÔ2Ê:o®ä$—%}‡ìh ãSU‘X–z¨×<1'Ô+ðAѸ͵É>ɪ F"NŒ'$3lú€+@’1úEÕ’*uñmü‘r\«‡uÉ`ÙÉæDjÓMª?;î8_=ãðÊï;}¡úBB‚dµ®ï¸ËÃÖ:‰Ä²j×î*û>VÕ<Ê;nyŒ‚ñ ÑœqHŒWµÁÚï²6*K]¡ÍÙ7‘€c!cá’úg‹qx$atë¶‹K’š6åþûïÓ¦0ïâÒš¤¶Ó>ÓÓ/7’:0’ÊÏ®1äfðHR/óxc­]tQ\¿¤ø“ £à"©?Œ˜KÐr‘ˆžwݵ³»è¢Çd[ð¹=+ì J¢:ujK¾ƒÞžvÓÛ^ÅØî”4‡P8‰¨K?þ½¡¯àž~ú·ÖZ…Õ©™ÚåÒýŠL}€Tƒ p| ÞÖ‘¤{ÇŽ·n¤ IûÚQ†T†c:{êä*a+ƒmIÒžÃÏí6%¨gˆxB…-R ÚzZ_ŽúŠ~=_ý}ŽŠ¿bjŒŒ1xFRVBН‘ !ùÂŽ¥¬ÄsÂp—d¸HwÒ³nì\’ö8¥‡(ÉÌv©ß“Ò´÷u0tæ#Ï4»…µÂ·Òê-°ÇÒFh.¢r*Íà¡NÕq@Iøä•0F_Àã”FaX™&FÅû(€™2±-T®¼øâç2v|N^ëI¼~ŒDêÙQoVÂÔ+m¿Yø±ÉD¨:¼GJjÊ’FÄ©å¹|Í™Ì0g¼³ød"Ô7^EŸ¬àᓎ0ö]šœ\€Œd:–tc”tç• ÂRÛ”&ýIj®³•Ö$ ´é×^s^™T6¸Y™3 c¥å€¦eËUôFñ™rzlbžDþ­a™eð¬ÊŒQ3åõtJ;™p3p`)90þ"Ù;¼$»ˆ§$ÙYÆŽ'0³”< Í s×ãtҗµÂUuà@4yö1ÌmÓf šÏeh·Ÿ\Z/‘¥þMò‚è)ï´#dl¶£ ¶’¨oÉ. ‡”•Y4ÄÀMËG$ÄðêÌ3Ï´,¡Þç¿ìS+[ ãP½Ü|óÍ13i(‡ £BdËÐði3 Ô(ì¾Å!À%¹ãZˆ®²8yõNj= ˈ/K´öÚ dØ@q6‰§E¼ŒƒT~ýuº\KŸ±8IgœÑQ¶÷ŒÃ TÅ|˜åãÒ¢×"éðDl©¤- 6?z&í)Øä)d²>pR Àj!b½`0±—àp©«¸[+÷’¾ó Š68³ðÛÂÞ†~•°ÓÉSÌö'€E’pƒg ìr<#V ®í—_~¹¹Hûú¸¢ó¢N„d"3ãªLìr={Ö1±ÜDƒ۷ÀGŸ´a½Ì7q\±!ø11†Í¼$Ó÷ûäžfߢHu§*Û¶h·ÃtÙbÉà‰K!ù4< Äy?pÓÓÞY6زd‹õy9|^:ÒÚ’«é hý–”-V_¤B‰ÀÈ2*TmmÉ…»Z:Ò—3ÎâŠ+yŠX›@P¡L¬¾-ãèËZ$ã­//î˜tÛ.®^( ÈÈ~+º÷Þ÷£u×½0Úu×õÝÏíœLåå[yܶË;VU´“tÂ’5’×WiOü–iw±ÜLv[R»'àa¿Ãüv PXBD½ñçÄ:ê·/:ãûL¬tTRÆ[¬˜?ÐÜP”s>üGe¾IVO%ó{[/ snŽÙšPM4Ć!9$Gbä@$*”çT¤ o–À‘{I@óì³ÏÚï0/µdŽ–ºÊêI'hT :Ë$Ío%¿™W^ye$ Š%:ä·Rä]ûM–«±]\È0 Ð8ЬlçåMÜHÌšL/®¼ K gÐTfâK[X5ü“-@“5£`"D%ញ>¨à<&æÃ¸ŠÄUø»#â#ú¢v©…¡úÁH‹hŽW_}µ¹ßQÑ"¢=Äu‘$ño§/|è”,y—ž±…rº¶Ä[ˆD!Džˆ‰A‘w‚{žˆ ‰ªÈë\õE¶(—¾]*¡·ËJÌ„eôý¡Ë=BÅ­Á*„?Õ€Øpá½tÀwêxeT^(uÓAåY ž-ªˆÄ–ê&~{3Q„‰5‚}#ö7D¨%¶ ÷ ÔLüÖ¢žÚe—]LuE²MÜŠùýE½apüù矛]΀L}…:‰½ •H€}'.ÏÄn!q#áùQç@>q#ê-öö(ˆä’™RK0{KÒôÀ'¾Dõåóh•&ñ%íP Yôcbɤ&¾¤œ}òó³‹ð'-²høò Oå#dmzErð…-Í—€Cr1ôžèùÒz›=„°æ‹ àËyô«€¬×ù²¨ ¾¤$Ãc4L×®]í‹“äº\@ ÿ4Él±qñ¥ôÄZYe%þé7õ Yš5”u¬P?p —8@¦Ûn¨¼C×éÿx‚{øáãòÙA¬žKÓ sY ð;Á¬$/fƒ8IÚÓ¤vM˜~^yqå7àB¾(OÞž†klÞ¦„=„VˆÜK;v´sŠPk{‚¤üá·?SâF”)q#ûZéûìr¨ã)ißãí…¼ýŒ¯“<.MâËd?á¼(Š·‚-Z?ã,Þ‘¬¤#¾„ eÿ#—O*%=y”Kž$=Kzê©§bky¤5úz"Z&FXÁ¤ø²ñÆÀ—A@N’0b^šl±É¾2óéÉ‚ñ೜·ß.ò‰l:Ï=÷™^>Þ4OºsÎÙCÉ;èÿ0¡çÓs,í\yQ<òÈ# HM“1àý)EƒóCrÁË$ ‘Ô“?ò’»(枦HèyiÅO""§§ÀÉ= >\àúaˋĽLc˜$‘{)58!†ÐüžóRí©2_ú1Ã1=²&¡Iß}ÁÝä— w¬Ä‹#m#XX6Q£Ò"Ì5ÊñlòÙHé‰ê+¼š°´ßvÛmãáÈË›nwXwêÔ).ËæI¦–Ò®!›s }”—¸V0µm@IDAT\ ý,®wßýNoÎÿgÑ~wÛmSm—ÊÓ±S3Å1-ÏËPÓðÒÈËYqÒ–Éï>/‘x½bB€W’˜¤WTiØä…b$ߨ`| ¯Fâ>/иG“¸‘D‰²ç´{HÌñF-É[èŒ3ΰ—hÔjdµF0ºøâ‹Ýcr G2äÇ™3’'$:€µdâK/ Bä%LÔO&¾¤ò@K“ø’ö2s kšÌC8“¬÷%Lm»´Ùb‘È(‘™¹§JJÊ›šÉ€U„ Ým’’"Çäýt稢J“ñ6]Ûp/p ²8Àp¯^ÏI2:L?Ô]‡¦zèб²MxÃTKûìÓVoÀÇYôê´•Ãͼç/jþe I ™®yqôö3Éòäb<>ú¨Å CÂm ¿ÍH²i“´Iá<õÚ÷Åï1¦¨£ € ¤ÞØÙ`vÀ|°Ï¡ ÷p±f b”ùXb~ ¾ßäXÒlÉ”í‰1Éø àI6š¸U#'{ý±o°>\¹ÉñåÇÄÖ „„ Íke_|Aɹ$Ç ç¥à€~¸ Qy¼œJÊKÆP=XËÆ©/s¤/œ¹RKzbMš¦2ëŽç‘l±d$Õ#ºŽû夤l±Éì°ÔOz9yë{æ›üi–¬©xrA%ePųK_à¸\edmKó'x9•†K¡Ny9@Æõ“O~4jÚôÜ8{û˜1¿ênذñrÛícåGy_ôå—?*¯©ÕÝËiiŸ«ì-”ÞBå%ò¯VHö”‘Ô>qw„Ìð¡6¸)Ç’HÒþ¸¼,'dÑ:th$)K„GV* 8™ÇõX[*áúûx:ÂÛKóz]~¤ë;ßfÃm»Ò²mcŽØ‹sÐ3Þ?ˆÚ’Æ`ZTLÔ¯ŽÙbýYFÍAéˆ_KKèŒñ €âÛ’ˆLÜ£Gÿ¦7íI2Ê›¨,Ý{‡|9%1­†–cÐKÆë?£7΂¯b<ì°v²9\©6ÆÊ‹q TJã,‘d¯^{ËÓpÊ­¢ËæMœ¬Ì¨Â—&©aÑžÃ\ä*3ÔPGqD.N/oæ„T ïã¼É¶Í†Ì:ŠXO&¢~ªA–¯KYÒˆØßϧcE­aΜù\Hu€ªà‹/&HÜ9-ÞœêÕ«#Qlú,ŸøæZñ˜={žŒ<ïWdÕ_âï £ˆŸ}ö3û^) žkß~CÙ%œé¶ÛnÝŠŸT!p ‡9_æÖÃ)½X ·æf#̘1Gq Fÿ'yùUî“äj*H†¶ì²µGdØNR‹«%/Ãyà€q`úô$…¹GÆ¿KjXø;ãY4wî|…»?G’‡þV="Éš0áŒò™fç$Û7î7å7j]cùRÓNâË@¹ÃhrçY”j&S§ÎRž‘Ϥj:Y^%wZÜb.Œb·vn¦Û”–Y¦–¼ÁÖ.Õ8¡RÍáÀo¿Í”Ñ{±œ‘ö{'ø>M›6[’ѦÊéþcãÉ ¨“÷ì矋‚€ Aý\7^ŵl¹º ;×p›o¾¦òÿ-Å¡Jà@à@9M™Y]­±ÆÊ²¾o« ůÉS`+rþüôoÔ©óAjÓªU£ÔÛáºsàçŸÿ”{ë]Šë1;#˜ñì™9sŽÂ!Œ0{/›Ç·ÞúÖ<¦ž~ú·ÖZ ²ÙuƾRA‹—¸pè%AË:ë42вÛn›Àp¾º"Ü®.×ã%?£ãeCsùåd/T–ü'VÜ¡ç,s`¥•ê*…Ä7dȃî‰'¾›à§Š­°L‰oÙ/½4Bo°ܬ»îŠàÚHàh¹,Ï2t—ëÀPüàƒïV¼¹%~wX ÁZï¾û½¬âÜ\{íkŠU2ÉX†$›€&Û %ןk˜_à@Må@4yüä×ZkewË-]$°“ˆP|œ¯ä-°)ðNI]š¼]»v-•«dž"lŽ4`£DVmõÕWŠAŽ:¥'ß@Sû ×ùÉ ?ü^¥™'`"¤'¾O>&€xìØßm¬r´­Ÿ¾Aî*i¥Ò#ø`gslQÊjp hñ¡}ò˜”´4i‚z¨È#iÌ“’!UÒR†e¤­Jð´@•ËŒ€¦¤È•;ÍÜmÖ¬z2Ä]Q›þb}골ÐG¡p²>y‚û%iÝu)ˆ`w3æMwÈÑ6ØÕUE]sÍAJ¼¶‚5à`DÌ0~üT;rŽkî¤I3LÜÎf†c`#Pv8o¤Ϋi³+H.—œOiÏɷ哎–¶M¨·ô˜9³ž¤! esUôÙÕ®½XßH‘X)¼Âb;Ö©ÃqÉ禛zÛw¼43áù®¶ZaCô¯¿þU@æus À@%ƒj×®e`Ä.Rþd-åþþû¬Ä÷µ–õÖ[C× @ ß׿ÍjÞòRF+ߥâ\YÚ•òµ­j.ð[Z*‡F)ß-ÏÆÒv\“ÚOZ_Þ!«Ø’ki@4ïiÙe €ÎòË'ÎàÃFQ^zðÁ-ŸIj{Þ|¯¹¦¿\¶6U”'²ÒJË)Íõ©ÕÓ^Ï›·0~ËM‚Îÿüs¶µ©[wY½Ù6üO²Sì`ëSµ™Œ³„(T9X¼x7yr}}/–V–]v‘ r³3?ÿüÓÄ’ž„Ô%*®ë¯]™çGeÜÄ£ØqÇõd'¶SìAäíZ´@ »IW Œq $‰•ZláOà@à@Îq  É¹æÉ„°c9ï¼g2Ζ‚Ø3&%'‚¡C/1à‘±q9 Þÿ{…ï¯äwÛ¨6Û¬‰{ë­óËÙÛ’f³fý+iND‡7œ³évPgA+®¸Ü@§@šS Ù)=+@C~•Y³fÙuøS}8 È×G @³`Ár Ê÷†B»Ôÿ@-]âʨM7 ¥ú|#ÂJ*ž+­øùçÌ]»ncÁÈ.¸àÙ´sBj³`A½Ê’ µìMÔ‹Ý—ÜÏÎYÇŽ˵{c׿ÿHwÝu¯+Jsã¬tŒñæ›7·Oj‡¸•¨°:`'½*¬ ¦ëm»@²•ÚO¸ÎÔ®½²$…o+vÍw¦JÌ/X_f\b¤ïÎMRyÄRÊX-$8$4 fdã´oßO,©_iújÐ`y7bÄ•Š˜\·4Õ—ªj'⌠ª Jg¯óá‡#Ý×_?&­_«bJaÌ äÀÕW?åî¹g˜$ƒïLÅ«§›Æ—_^¥XK%«-Óµ ÷j&‚„&ËÏý¨£¶7IÍÅ¿PlÏHeðNª 0ÃD¯ªÀ ãc<Ìø|vÝu#nIåô—TNvv#ü©6Øm·VîŠ+º»7ßüX» ,‡ØçŸÿ¤HºSíÿƒï#ß Ò*¤# } IÇ™p/p p  ÉÄ™¥¸ì±;ʃ$r—^úbÆ^°Ø~û '#ƒBAÞs ŠºM7]Ûuî\`Ì‚0ß?ÅÞNä;ö7Ý_l Ûƒl²Êêº÷ X*@³TìËÜø¸ãv²7ÑÞ½_.R ñ{Ë– Ý~ûÝ!·ÒMÝÙgïòãáRÑ#GŽt_|q¡‚fÍš¹®]»º:˜÷K¡Â ºÀÅø ƒr;í´“»à‚ B†ø+®¸Â]xá…6§3f¸÷Þ{O^pc$ja]+¬Pà6_¨aš‹¿ÿþÛõîÝ[q_>²öë®»®#¾ÉÕW_]ª,ëtÉøõë×· ÷aõÕWîÎ; Rf¤²Âo‘¹»M›¦öéÖ­ÀMà1c~“úq¢#~¶(½>™0@à@à@µâ@Aˆjµ¤ÜỶ'¶wW]u@‘ ñ£þòË=Ü“OžäH ¸ï¾·kS¾Ï}òÉø"uÃ% þÎ[o½åÖXc ½ùoª¼TÊxôGשS'å·ºkIÅ >#®Ã7ß|³@ka•Éã?î äÚ¶m«|?S$eØÎpÂ ŠæÜÏuÔQnë­·–OªqxÑ ÿöÛonçw¶8=dg¬Î;[Œ@Í·ß~[´Qš;ðêù矷’yóæ¹¹s禩Uµ·ø›lÒXÿÛX&ø7ß}Þ3ÀÒ²å‘Ó¥ñÓOŒºu»ßêuî|Kôæ›ß¤­W]nfÐÀ‹#Ž8B<[;ÜH¶ÙfÛLW^yåH±¢ë¯¿ÞX&••Ý?ôÐC#p‹ž|òIÛÐ¥ ŠV\qE»§ pÑ÷ßJÀÁÆolmèGQ`#ž´¾G«®ºjtòÉ'Û5 du_yå»'µTtÈ!‡Ä倕å—_>’ÚÌîѶQ£Fq9ý~úéNêÕ«W¨ï¸’N.½ôR°Ñ­[7›£¢ñFuëÖµûǼU—tÆ®%MŠn¼ñÆè¼ó΋$!²2ÚJMQƸ/»ì²x©ò¢Ýwß=b€"ÀÉ<——tMI åÙæ@P9é—º2èŒ3:Êþc_wüñ;+|ý´C¶k·ŽëÛ÷d ~×´éªRU<" ›”Pò 32NÛ¨Þ”äŽñÚ^u—\r‰øó’¨‘‹p-'$#Ó±2<ý^îà3¥Â¸V1x®SÀ¿bN}óÍ7Rù½ì8à³GÁ‡º’¤˜mŠOÇн{wy¡-o}üO@ÉÆÑ?¡Ù¤~øá6¶W!¡Úiذ¡Û{ï½m¬_|1V÷pãî»ï6•@ˆ•£B:ûì³íœ?=zôMÕîʱõ³C=Äx鵄º b­}úô±¾yäǧÿþò.úÝ‚9>ñÄ %ÐËêú?W]u•ûî»ïäu4NjÏ鯷k®¹ÆÔe¾6KØï¯}ûöîþûï÷Eá888{È6B ýÏ%ƒ,¾B¢tôè)Ñ™göš6=/Ú~ûk"ŸÑÛ{éÛ'ºÊÉÓòJhÈÐÕ>HM,¢©S§ÚQ©Œ?>5jTôúë¯GÇsŒI&Ožy ê"O2Þ–[n¹H ÇÊ‘¢ðA5¥ÿV“† nâ#Ð`÷¼G›½]¿ýöÛ‘W7qƾëøÈØGy¤I€9¾ŸéÄÏó…^H[¾1·#F˜„¦uëÖ…êµjÕʤ1ÜD²Ô·o_+OJhÀxIŽoŒ”éD9¼ñ$Câ¨Aƒþ²ÄcДȢP!p p Ë^N•Œ11.-m°ÁZ2víæzöÜSo÷ï™ø­·¾íN;mW×­Ûö’Ô)mWÕªÞgŸ}æd3“vMH-¤RRrÍInƒ 6p²a)R/ÙV¸rSýén»í6“ö ­yê©§$+Ï´C_Oä%’­‹]b¬‹çÑsÏ=g$"G}´¯jÇwÞyÇIíäš4iâ8Ç€¹$¢OIS:¢h½õÖ³£Œý©±œž¿,rdmðG¶G…ÊH¬(@ßàØ’*/‰ò÷Â1p p p —8TN¹ô42Ì…`t7Ýt˜6ì2×¥K['£b©#þ'÷ÛwÝßl®šÖ¸Û²15³¤4ƒ=‹åà€6€Ia,‘"j¬Æ ÒDÜ~ûí¦rAíB9ÞFxWyÂs õÕÓO?mjÛm·õE *÷¦ÛgŸ}@ñts—. ˜¡±ìyLÝ$›'iQÜ'x)áN_2¨¶2I€â:2äu_~ù¥¹ˆÇ7SNðÐôȸ:.A%'›¡BíPá È@“/OJó\k­îÊ+pŸ~Ú[.ÀÛ+´üû®]»ÿÀñ°óh92U¤Heä!dìB y¥Ø,Ø®`?³É&›˜ qbzàŽ;8±[~øáwì±ÇZ|©¼â¾È`ƒBæóTé }ŒvÛm7÷á‡Zöé÷ß?¶}Á•ð䉨5ØAØý`K#Ã]'/#eÈž¬$¦CÍuð!CgßÌ€€ Ià ‚àR«T`´ï¾û÷2$TÒ­@yÉ,«°Bw•ÈY³æFwÜñNÔºõeQ«V½ä¥ò’ÜkgTâ –n¨²ÚÐHšb¶#2êÍ80uðîÁkÛ¦3Wj©ŸÌ£Iÿ¤‘T9q{\»±Áë /¡6mÚDÊm娲`B>Ôóeq:‘êÉÚ{—p_†}o›<žsÎ9V×lܼ=y/'›7^Wɶm´Q$ Œ¯b64RQEØ¿P>p÷„}÷¹wþùç›eØ)0 •Á+ì’À|³¨yóæÑ­·Þ_SVû`C³.œTBrJýÚç;ýûï©<†)Û ©Nf)ŠíVîÌ3w“}G£œ^ É:<ˆ²IØzàÁ£Íßl[PÓ(V‹“kwÚa¨O„_Ê×YgBu(ˈ#¶72²-T^Šcj¯õ×_ß‚ &ÇDå…Ä+æ‰:LÀ,YÅÔi<&­Iè7Ƥ7ðév2Ù"?‡ª:ìŽJKóæñì&[ž§¶m›•¶Y¨888à*ÿ×90=ëXn¹:æ~Ì1;º_üÜ ˆwÙå¹·qgÕIqé7”¬O® :tHÒÌF]ÜfM}6ßtDYÒˆ8]о'i‰ãS7OIÒ6ÅFÆ §­PÁ7}^'r:}õÕ¯î³Ï~”ù43ÈîÝ{?E[€¦‚Aè>p Zq šjô8 !øáÛ¸Ãk§8-_Ëþã=Ù\Ü";Œlv É0«Ñ³öKÁ“ Cà\§E‹È×ô»9ò—ÿÀËO–”’ƒ°y×)µ‚%ÀØtîܺBÆ V>H^™‹4qâ,·Â ›¸[n$ƒêiR‡M‘ññÂBµý¼;©Ô²e4©< ×Ås šâù“÷¥:l( Í†Ž Æ›ãÄ­¿þš²±é¤ÌÏ[Ú“÷‹ È9üóÏ©ù6vÏ>;¢ÐÜ/)ù< •û ²Ñ ( ‚ÛvY¸•Çu·Ü²…{ôÑÚ¾—ìKš¹óÎë'Ô5 “ÿ¡b›¤wiÎã冩W16ܰ¡ÜÈ_”¡úaÊ0ÞÒfƒj©4T¿~]}/‡º¾RVñInöìy¥iêÔp/§ú˜4i†»÷ÞAî™g†K5P׌Š;n'·Ê*+TG*ÊË©ÒÊÈT/§>£Ø9¯›ý À&šÉwF¼%ìÁ&OžGlnØpEýk(/´FvD%Å5ÇF  úöá88P39MÍ|îñª§OÿÇ=üð‡î±Ç†*!âBìÛÎ|r„[%®SQ'šSO=Uª¯+jˆÐoüúëJr÷®+à°XŸEúDv^§FºÜ[,7ï‚{\—•òGÁT·í÷ßÿ^ C_—M ®ÙËÄ€Å÷_»v-}¶Vì# q‘ûå—é 0ø‡›0áÿ´#ç¿þ:])( $‹rŒˆQS—€’¼–V2äçP™Ç;î¸Ã€Væ˜a¬ÀÊàAE‰´^™Mer;‡Çš3g¾r}¢ŒÊƒÝ´i+õ–Ž á䓪(bÃó™­+jŒÐoz,^\K©V•Z¨ öŒâ ªb-§Ð4i©vípStK’7OñeþN[7y“çK œTzë­oMb3vìT'`S0pݺË*rónR‰vNmRäzÊ”™ÿ?cÐ3aBÁù_x~fš6]-v ƒÀPUYâ‰")l@UÎ-Œ8P^ŒØ]DX¯L €¦2¹cáFûòË_(–Íûr«ý]aû7°é¤ÜB…ÎåÁRÂKàõzõz^A?Éd2uqï½Ç¸ý÷ß"Sq©ï¿öÚH›HTrГt¦›‡,u'i*Μ97;Ò¤<` ÄÚ!ÔUê« Oò5WE€fÞ¼yqÊ‹Š/ô8P åLß¾}+Ð/§Êxºy4¶ ‡ÚÎ>޲|Qp§Ûj«–J²ØÑí¹gk‹’GK SÍÀÜûÿïÿSî«Rhd¨Uôöj«­h!Š–”ýN—.›»}÷m+=ÂÝxã¦JÊF š –7ãw àS Õ**+€NR•5räϦ⽪_¿Þ`§ÀV§ìœ7i²ªE3Ní;\T ©:ÞçüÈ{챩ãóùç Øœxâ£JÚØHv/»à©[·vί!L°d\xáÞ5+¹Ë//HŒY\ ï‰'î,›Òy,×—/X‘®‰Ï /|^á);êÕ[Ö­·ÞöñsðG$7#§Úí :VoœŸ(MÇ\«Z§NíUÖ»æÍÊe½Žï2*‰AåTIŒ®ÃŒ7ÕòE±éà u í•zG·òÊËU‡åÕø5¼òÊ—Š(Ý×ìY¼J&•)™#®2©NjYM¸ž1cN¬ÊJ=äQó|[sÍ’îx{,=«­V?fUP9Ŭ'ÕˆU¥r €¦}‰*k)S§Îr=ô{â‰Íý¶[·íÜI'íâÃÊoYú¸ã¶4©®ÕH%°9Yc•-•Æ^{m–ß‹Íòì‰çôë¯xbØêüôžYÞY¨¸ðÚ‚VZi¹ÿTY«+wÕ`½Ì 64Y~¡»ªå@4UËÿ0z98ðÏ?óL ¸áí´K—¶¦ŽªiÉ0ËÁºœnòå—¿¸#ޏW9¢ʯĤ︣›{ûíoÜ›o~c*<’'êÐáÆH‘ˆ#y•d­ÿÐQåq@…Hé1¢æÍÏ‹7>7zé¥/Š .)Ctî¹ÏDÍší°Ãµ‘¼•ŠÔ 72s@’•H%3WH)8p þæÑ×_—DD[n¹e´Ùf›Å÷¢/¾ø"ÒyŧéÓ§GS¦L±{}ôQD[H]ôÞ{ïEß~ûm|Ï·‘d%¢®À…¿eGæÞ¨Q£HÒ”øþ Aƒl~ýúõ³{’ÈD’°XŸÌã´ÓN‹VYe ÿþûo4þ|«Ë\$©°¹qŸu*0›•%ÿHí¹çžÉ[Ñ/¿ü)žOÄ\SiöìÙÑàÁƒ£I“&¥Ù¼$AŠÆŒce2PÞxã¸^¦µOœ81š5k–'éL䟋ï'îà¿ÖóÓO?E3f̈‹8§Ÿ©S§F’FE»ï¾{¡9f[Á*ONè°b9À3Ûc›£M7½,’ HÆÁd+bÏ»I“ó¢NnÒü·놂%È ¡7ë%bmÛ ?øàƒ¨aÆQ½zõìÓ A6Ô“t$’t%Úxã 0°yÝvÛmQýúõ£•W^Ùîí³Ï>1¨yòÉ'£VX!ªCØhŒ=öØ#ú믿èÊ6Bî±qz:ýôÓ­àd¹å–‹<¸¡ÎK/½dýŒQ|W]uÕˆ6лï¾ke€ÒI¢cŽ9ÆÚ1G©¢¢n¸ÁúãÔS‘$EñÚ¶ß~ûà)šµûöÖ–u´k×ÎÎ= )ní믿~´÷Þ{ß#%šþù'Ú`ƒ Œï¬ ÞЇÔu‘¢¥G)æ°ÝvÛÙÜ‹[*F?<_ÖK»xÀÚB:wîlϋ綬B€û²óÎ;/’*Íꆆ’¼F<Ž—]v™• 6Ìú<à€âþ®™Àš5JùM CÂeõàÀï¿ÏŒ”Ã'Úd“K£V­zE^ø|4~üÔ걸²Š9sæ• Œó[t ˜„îÀïŠFŽü¥†p©|Ë,/ éÓ§ŠW^y%’M6,hÇw´7~$løŠBvØaV aìÖ­›Ip2¬¸âŠÑ­·Þjå€!67ÞÊy; œ}öÙ&‰øþûï£5×\3êÙ³§Õ]°`]ŸtÒIvÍfJù 'œ`שØÄ¥rÒoÁ&qÑW\!©ÞËv=vìØ¨W¯^&Éð€fuÖ±õ°&ÿa¾^BsË-·Ø¦-Õ–IŠ|ðA[ß§Ÿ~j’ €Â=÷Üc I ü /¼`ãÉVƤE€,$B=ûì³¶¤8€Ê /¼0jÒ¤‰Ô$ á™JmI]iíyäk§èí‘4ð˜ïR Àn(Z£bþT  64úª8àsÑEûHçÝ[qNº(ÌûÙ\ïºwØ}òÉøŠ8ôœ5,¿|]·ûî›–ª¿õ×_ÓlC^ý³©Ù{ïÛiúIÅvù«TíC¥ÒqàüóÏ—­ÚaN›¦{ôÑG•ªäýŸ]d‰ÐŠ=6K,|ÙI¢"þOŽ;ÆÎC¿“šÊI‚"ïÄ&f´*©€ÓF-cð9N’3T–:ÈúÖ&k÷%ÑQøÛÖ—ÀŒÇ°zñ É9à÷´¶ ”ah+5˜ÙØøÉ`TÌÜ¡õÖ[OÁo”XK»æÏºë®+­ö…>ÉTÏ<󌭃5`ðºÅ[8³3Ò¦ïÁ/IŠÍ ›lÁ¤z²þ_ýu+#—†Õ\pA<®@Ž+níT<øàƒ•¢ã<'·Ãn(õã ᩆ"c_o9Ž"m;ÜK3öñÇo֒ʹC9DÞrã¬y«V­,ð)k!¥FïÞ½­ŒXOIbŒ}÷ÝWÉ^ "ÀwÜq–¢DjǸ†½RïÛ¶mWÈÁ“X/Juœ›b÷î;YÜòø<ðÀ`ý ôq­[7±d˜UÃ-8PõàÀ–[¶p¯¼r–yC]sÍkbÏ<³“E›&°] ¥ãÀgŸ}æd3“¶¼‹¤>°UÒË©“¬pX~ù‚^RÓ8€ †º’´Ø&¾ÓN; øù短Yª±*F¯ž(#!!À-Z´° Зë%^é5z9I2lã•zJ‰oûâlº’&ª‡Q°'æ(ÛBžPlÂlàŒ}Î9çcÎð ÀddM¾¯Í7ßÜŸÊݾ䵧ã?`P˜‰0þÅ@Ðuä‘G¦­Vš±1 ÷ijd= ñî»ï¶ÔƒNj'jGOnê´IÂxY66ñ­Ô1$‹Ërõ$ü²äê“©¦ó⇆ø%|¾þúW›!îüóû96=‚ôsÌ®2rèTSöæÜ²xÎä{ðÁ!î¶ÛºçžûLo¨»6ʹ¹V‡ ÉÀÔÀ‰ìRl³Æ½БÎ[ˆõJ]b^RxNáéÏC=äxûGÚ€”û#a‘"f›"  I mÙ°“ÒÙ‡8©A¬Œ 6Û8D½úê«q×RÃ9ÙY.!Ù¶˜tfçw¶M°ld[ä¾ù書]Òsª4k–ò€?W²aÑïÞùJ|‘Ö¥;ÉãdèʸÛÉøÛ!ºöÚkõ„¸R*¤W2,ïÉÆG!FËï¨øõòòoÆùÆá0ߌ ÏNŸ>G¹áÃ/Wm$öF,}•\Ÿq£F-‘gì 休ìÃ/vmÛ6Ó›éýîÌ3ûêG½l.Ëy±Ø˜$oà¨A8¾öÚk¶Ù£>IG–c=ÖTTl¸¨lÚ°ñ#á͵nÉò†Q¯}Ì:Ù€éñÇ/¢n’ŒÃ­›x2ÙgÄyðX¨`P@l¨=zôpãÇ—^Mß²QQÊŒ”9þOÛ¼Q!º(°)#i`<¤Plܲý±ñh ŒÉÉÉFÄîó§´küw"ƒfã¼ò¯¢»÷Þ{ ž ¥‘±nÌKxŽZõ`yÇf £F2IÒ'¾H‹à½ ˆ M•1PG"Íã»!Ãp+?ôÐC ÕË» }‰äæÎ)_޹{ãöQ逸¸–æÄ$Ã$–šï¼3JÞW™¡xMwó.«Q0EÚd"I2> kT̸WÒ 3Ö¦ÉÆÆ¼œpñNÒUW]eÞHÞ+J›SƒZî3&\‹S]x1¨pˆ¶Ùf›d·æFíÛ¥1…Êë儇„¡ñAϯ*+cžË26Þ@¬ Ã_æ*IF${›³ŸÞ]{/§âÖŽÇRÒHÖ?ßWòˆñ/Æ·xuïÞÝæ†5FΒƘÁ5ž`<#ÿlŠ»yóæ±7)`^$ šõ‹7FÂŒ/0üÅø’D(~F¸ŠKµhõàϘ~ oŒK¹'<§d·ã/K`£‚ÚuR,Ö†­IºµUæÚ‘*!Mñü_š±øá'@g†ÃH©Ò‘P‰©‘ ¡6ôvUéê–õ^UE €¦¬O*Ô¯TüòËŸòâêúõ.ÿByDléŽ?~g3&®Ô‰„Á*„ƒÿ`ц—UÒË{ï=F*Ç–2N®vZQ€&W׿U38PU€&=t«<«Ì4oÞÐ]qÅþÊð|¥ûßÿtäR 7›»¤ÿþR:þÅy°Š0ÅLÀ8øý÷{é ±±y½‘,Pà@à@à@y8My¸ÚT:pû&ΠA½dx†[}õͰ#â[nyÛ’cVú¤Â€YájÄÇ?Q^{º«®zUÄOš4.+‡Nj  ©1ºú,t‡Ö³àmxGqĶòêÚµûŸe>®D™¥÷¨>©+!s÷ÓOŸâPC£è?fW……U,5°9÷Üs Í‹¬Ý'Ÿ|²yV•¶slT¼·™§ñ¨ T½8Mõzž5j5¯¢È›{+úè•–í›h´ÔÇíºëMzãÿH.šój?ªÃbÉFM”á3æ(Šë­N©ªÃ²Â–‚ÄÊ!ŽÌ}÷Ýç”ÆÁ" ËëF1ž3£Wb®”†pß~þùç­jÈ<]¦T³:ÐT³Z—S·nm™­sãlE=_?r-ÜÕW÷—ÇÆ ÿ‚ûá‡)5‘-y»æV­)†Ç9òDYÍl¥>ÿ|BÞ®%L|é9p¥¢ÜâEl¢ûh»ùÈuçÄ›!Î uñnò$×r‹ 8"²0±w’qgðv"М\¶Sž>%¤œø8ôKû@9ÊÊC…À<äÀÌ™s•evˆb-\g‰8àN%ÁÍŸ¿0WS3§üï¿ ¢ãŽ{8ZwÝ^Ñ{ï}W-™PÖ84Õ’ Å,J*"‹‘"õRÚZ>Ù&Ù£IIqåz²8<ÚrãØ)Äcᚘ+ÊeÉ!++ótÚ‰Wó›U‡&¤>ÈQ Y§õñÇlj㲱~¢œ÷豞ÞÔ)Jí?©¼2Ë*×ÌÚ®sç%ùh²1V裀Ø6 /DΧ‡:N¹hžU°‡Ͷ›röl‘®CyÂbÆ %Áv&‘»Rà:;Sæé§Ÿv‡~¸E/&‰£²X›­ ÑxS”^R;x©XÐ$@$x$ É>i×±cG‹OC¢“ç)Ž2j[tc¢Ê-@“[Ï£FÏF-•Ðð• ãAíÚ+êj3éÑëXо ¨wLxwòÕd‹–Y¦–¼Øº*èÞòÊÚÝWËmVé7·lúɪò9˜RgF@@Èkݺµe礉‡2dÈK¿À½t”.ótÏž=-á&à¢æ@æï|Éù¤>|¸ëÓ§OÚò|¸yÞyÅ5r={>k›R×®Á¥;ž[EÌqƒ 6pª¹€¦æ>û¼_ù7ß|c2>DHò¾}ûZ ,•7kÖ¬RÖHì @ A»’€—P Á¿}÷ïßßzè¡níµ×–da‘›8q¢»ä’Kܵ×^[ì<ñ¶¨_¿¾ÕÁMuÚ´iÚ|£Lú|1¯L¸Œå;õì¹§ÔNÁÒú™Ä&¨Ÿþ¿½3—²,ßø‹€ˆ‚€ b®@b` ¢d ¢¡]Jh¦)B–ˆ-nån©q „[B¦ä’!(‹À!Åp)µLÑ"QÔ4Àïÿü{çúf˜3g?g†¹Ÿëæ[Þõ~?Îwϳ½¥¾¢5?ä]RވД÷ú—üìÙpÒeýúõ‚¹øáè—!kÖ¬ ¨¢¹C0Ù}—,¤´±bÅ w„”=êé=zd9²_ ›áí³Ï>™pÐÝwßݳ‘¢…AÛÑ´iSï»ü믿Fíç—^zi>|x@£‚ÿǸqãÂM7ÝäãDÃÂXN‰Üg-Z´]tQœž·E(*Ú©´@Ž^|ñE×úìºë®é[¾·ÍêÕ«}?šÞ½{çÕæPaëÖ­ž1•o’‡Åyd5V¤'„s7k¶“›Ÿ¶lÙj¤‹t¤–õ…€Â¶ë YµÛ( Íà…ŽY²d‰vé%Ÿ¤/G®¾úêpôÑG;É0`€‡s²ù]‡ÂñÇï×É ¹@Ðþ ]!|´[·n6Šé´Ðç¢E‹üœpNŒd‡œëÖ­ó,¦&ˆ }oÚ´É)OÛ&Là0,\¸ÐçÁø ™TÑ ¡"ü´M›6Y›î¡  Ç zõêåÄ'·M6òãD†öºtéâÚ¯ÜrÅ|>qâ0‹|:δ^÷„o\XÌCÕØ„€¨¤¡©PÕdÃ!À rB5Ñ’lÞ¼9c’™&BW£Êúûßÿ>`¢;õÔSí¥?9ñ‘Bb[¶léíзmšè䋆+2i¥ëËñ¸qCÌ<×Âṟçá][ÏR×ËøòƒLµ_‰ØQàïjcˆMc ®>ë L-£FÊ´‡)ˆD\ýú}Æ QAÂKŸ¤ZhD¢É‰J­[·Ó¦Mó—ù–-[Ü”4cÆ ×Ò AÁÉSÕ5×\ã„gĈMì´óæÍsBC¶mÀÑ3‰¿Òæ&¯ð¿0EAŒ Eémp*ŽB Û8žVø AA‹„yêÁt-„ÓX”ï}ï{NÈ e”eÌiÁßhùòåÁv.öùBŽ høüàgQ*%9ýô¦©ji¤t–¥½ÛÖîd3ã}d,Æy¬\¹2ë.Æ1jLB º6ßÐ"BÓЈ«¿:E€ÿ4øÍT$hIÈŠS.þ0ø‡¤â€fÁwB‹ýÌ3Ït3pà@Ï;A¦R$úÃø‰ýƒi& ÷0YU@ÓÁfvQ0]¡uÁÔE/|;wîo×è’†ˆ_ùDy`.K D+îHÌuÈI®v&ÎmêÔ©®ÉŠõ™D©eäÈÃCûö­lo1¢9ÕwínÛ6Û·¨æ5kÖ¬ÀG"„@íMí1T EŠ›ÒANІ`ŽB ME²aÃ×â8 ‡aÈЪU«ìe8Ýý[ EÏ<óŒ'ö"¹;ƒcžŠÒ§O'M¼ ¨‹ö$m®aj´A´iª¶d†~!k2"šðÑa—à´@à ;QH ÑJKdŒyñ¡ÎÖñ++=¶Úîs±oÉØ6š3öµ¦mÚP›æTW"G@„¦ÈHëD8­Ä÷<î»ï>×¼äkÂ2fÌ B›‚o Z›¶mÛºÃ-ä€ÐPœ1ï°GÌܹs³šBKƒ¿N®¹ MÇ-yEúu´&8ýÆOt,ž4iR˜3gŽ·‡©Ÿ|X óB+Ã81«áÓƒ`>‹Éa<Œ‹ñâ“|lzöìéó^»v­k¼ÀñeUÊrÈ!Œ@žg„´­×u†ï¥<]BØn‰( Ì?%1?”*ÅÌBI÷îÝ –7ObD%1¿™Ä4‰9Ä&F(’ .¸ 1íMbZ•¬ú—\rIbN¼‰½Èýc‘C‰…S{óñköÿ‰°§Ä|lóWɪo©Ù½/Óe]·h%¯릿MsäeÛµk—Œ;Öyä/¿xñâ¬vŒ0%F>2×Ìl•Xع÷ɸp%Fà3?%FÞ|.f6Ëôm>4‰9R{ýôü-¬=1b“)gQSIW¦³J,‚,ùå/YI©Æ¹½uë¶äâ‹ïM:ušX¾šä½÷>ZÓÆzB >hB£öÇU"B¥1Ÿ¤eëbPl0Ç ý´jÕ*oó”ŴĦw8 §g[œfÉ]³ß~û¥o5Ú1š#Æ‹ Z&"¨p~& < f$œ¡qš®Hh‡¹ñMêx4IÕ‘öíÛ{¦µb•yóžö|{ì±[øùÏO±5.œF¿Xç¡q !°="4Ûc¢+„@}šFšNÙu[ „†EÙ°á-€Zºôùð­o 6‚slQGA•݃¤ " š§jB@”&;¶±È¢³-¼ÿ„0cÆËt¥eŠ.ì«Tš3Õ¨…@y! BS^ë­Ù !ð?F>Ò2;O²¨¯aäÈ\k³qã;ÂGE@„¦DNÃB ötéÒ.ÜvÛ7ö;v°›o|cfèÞ½“ùØ ³ä|‡5Ö°Ô¯•  °íJÒm! Êõë_³=º¶Ë׆ØË28 _þrïд©,öåýdhöņ€M±­ˆÆ#„@Q"ð o„ë¯ØöðZmI Û†³Ïd_ö³$Í‹r¼”(7DhÊmÅ5_! j…À+¯¼¦N]d¹lþÏÉ̘1Ãi§ {î™UºV¨²ÕF@„¦Ú©‚B Øî3—Ú¦£KÃæÍﻊ(©ž=; ! šF]] !°ã ðÁ[=Ä{Ú´Gm§ò×B¿~û›Æf` ¼Y3ùÙì8+­™;"4žBŸ%ƒûCÍœ¹$ÌŸ¿.´oß*œzjÿpÊ)ýÍç¦MÉÌA¥Š€M©®œÆ-„@Ñ"ðê«›Âí·/ ¿þõŠðæ›ï†Áƒ»;¹2¤‡ízÞ¤hÇ­ RF@„¦”WOcB ¨زe[xè¡§Âw,hoØ󤓎ðϾû¶/ê±kpB Ô¡)µÓx…€(I^~yc¸óΖ ûñ°aÃ[îksòÉ}þpXØu×KrN´(&DhŠi54! vx>ü0 ‹¯³g¯4_›§Ýqxøð^á„·=¤–Ij‡4ÁúB@„¦¾U»B@JØ´é½pÿýkÂÝw?V­zÉsÙŒÑ'ðéÝ»k%µu[4"4i4t,„€h$0IÍ™ó„þò—7B×®í=· 䆽¤$B@F@„¦0>º+„@#pÛm·…1cÆ48Í›ïeYˆ»ìrPØ¶í­°qãÝ >u(Š &„k¯½6kˆÚm; ! ²hÞ¼¹…_ÿ:ûbž½óΖЪըìQ] âFà?øAÞŠÐä…E…€!дiÓð•¯|Ep!P$\wÝuyG¢¼ÜyaÑE! „€B ”¡)¥ÕÒX…€B@¼ˆÐä…E…€B@RB@„¦”VKcB@! ò" B“]B@T5kÖ„áÇg}Î:묰páÂðá‡V¿ÁÖØ¶m›å°ùr¸òÊ+·kaåÊ•>¾Å‹û½7ß|ÓûÝ~ò“Ÿx4×{ï½·]|î¿ÿ~ogË–-ùn×øÚí·ßÆWãúõQŒþûßÿV©étÙ3f„ñãÇW©^¡Bùž«øœqÆ…ªú½ô˜*-\ä7à9jL¡iLôÕ·;ÿüç?m3ʇÂ^{ízöì>øàð׿þ5 2$üâ¿h°¹™µÓN;…«®ºÊòØlËê÷Ö[o ‹- ‡vXxíµ×lO©~—âìÙ³mGðSç>õ©°uëÖ¬:ùN^|ñEŸk]µgŸ}6,[¶,_—võüío[¥þÓe?øàƒðŸÿü§Jõ ŠÏUëÖ­C—.]²>;v,TÕï¥ÇTiá€W•ôÕ°‹J«)l»RˆT@!P=¾ûÝï†C=Ô+%Iâ$_ëçž{n¦¡W^y%@ ?üpÛœrW¿Î áÕW_ ݺu Ï?ÿ|à_X«W¯¼ {õêvÛm·L;gžyÆI$2ƒ|ík_ ÷Þ{¯íµØ × ÷Üsmˆù…Ю]»ð³Ÿý,üûßÿöúûì³OX°`A:thøÃþ¾ô¥/y›´¿Ë.»PÝû‡(‘›'-Œ rô±},üío ï¼óŽÏŸþ[7õ˜#ƒ½÷Þ;¬_¿>lÚ´)ôéÓ'ì¼sÅtþýï/¿ü²Ï}÷Ýw÷®«ÓgëÛo¿ž~úéÀ\÷Ýwßx9°íÛ·ï¿ÿ~xê©§Âþûïïe(À|Xà 6ø¼Zµjåõò­_nY´'tR¦ð êò|€çÒµkW&苵Œ}Å.¿üòpàÆÓÌ7x¾õÖ[>æ¸6í;ÖÏ-ˆ·e$ÀûdÞGu”_ãø3ŸùLrôÑGgÎû÷ïŸÐ>}sÿ³Ÿýlb/\?fö‚õv¿ÿýï'½{÷öcæ`ÄÌËØ‹:1²–üô§?¯ã ñIDATõ{̳ª}R,8&´C½aÆ%F¦¼-#>Ö-ZxÜ¿ùæ›ýži7¼¼¹Ä`ÁõË-ûï|'1—·c/òdРA í€#ß– ÎïŹŒ1"Ó?¸?÷Üs~?>WñÜ/¦þY²d‰·7iÒ$¿ºtéR?g¼¹c*„)• aQèY¤ý!üã½_#Þþÿ‡¹˜ÙÕï ëmÄ,3WÖ‚ÿU•#<2±LÁÛ‡=I„€B 5%47ÜpCòàƒúËrÀ‹’?äD€Z$%¼ì׫¿(#¡9äC¼îæÍ›p 801ÓQòü#±_»‰iz¼-H‚i7¼-û%ž˜V%Ùo¿ý2/‡³Ï>;éСCb¿ˆ½—xžûMÙÎ;‡ãŽ;Îoyæ™n‰ç˜Ø¢üèG?²ýªZ†8 œ~úén‹÷â÷¬Y³Ü…‰ó„inü”¢T¥Ï9s温‹u0rãx óæÍ‹Í„¯ýënþ3MZ°·—ËÜLTeýRÅ3‡ŒSŸN¿Æœ÷Øc7óÅBFCÛ¶mƒA791Ö´`BÊýÄû—^z©mbÚ=˜–ÌÍcìC†y0Wª‚iEXTô,¦ûxòÉ'Ϧ‘iÎï·¿ýí`dÜMŒ”ýøÇ?îÏæ±sÎ9Ç«cb­­È‡¦¶ª¾B Ç<ãC“sË„ÙJ?ðöK:˜%·HV]^Ø7nôø.¼ðB÷»`o)ü1|pô‚Ó(¾ ˆý’u»îºË_„¯¿þº“œX–ï‡~Ø_àŽq`®©DÓxÑßÃÌg~n¿¼C<Ž/vn˜æÂÉšJýƒß ¾»(¼ðc\«JŸ´ƒ@ðÒVQCˆVEŽÑ8yW¶~±øÍZ±Þø ¥…±C8£äŽ!סÛL“y}h¨oZ@ŸŸ™Â1Ç“å#Ûç»*˜æŽ#bQѳhæÅLø!øÍD$"q®éö£Vî\cÝê|oOߪS[e…€B Z°±/Lþ¸£Á¸@2¨ÁÉ’—0ÄMb&€ƒ'îÙDtU4 f& föqÕ·oßx+Ì;×µ)fŠr HmÈ æÓd:Ë9Ài5Šù|ä}3GóÃÉÌ9-–Þ[«*}òBES€ƒrÄ ‡éË.»,!‹$e.æ9¨îúÑc4“V0ߪL‹ï¾ûn@“fþQ™kU™K¦pÎD§aÖžðiž›|RLÓ„1ÝFEÏbºL$˜é¹ò\"8»#µï7kñM-ÀSU! „@uà×:ZÔí¨Ù13 ås‰¹Lˆ>!„h¢¢PÛÎ s CDÕð _ëQÐJYbþ'Ûi(h›‘Mæ{á¦)ræ …@å†,éËE½ÜOŒ ùæ7¿éc‹•ÒQN×_½×KG9áŒààI›1âÊüƒü‡àèlùoü«8»ý…˜YÃ9Æi˜H¬8>ð2ÿ"nei«Ò'åoºé&wÎŽm…Ó5báÒî¤ê'ö½¸ÝQ;ž[èµ'ÝBëGùtYó¥òˆ6®¿ñÆîPKÿ¦‰ñ±Ð‚ã\¸ff£Ä|Y8ô>ã¸s¿‰$ ënï剆"ZÍHŽŸ§ÇTS ¢гH½å„£2Îèq®æ'•˜6ÒÇ& ðcþ!Ò,=öÌ97¡Ž5&B@p¬´—z$GK7¶ó‡E3¹)„äkü’¾é²Sž_ÞÜOûžÄ{8S†Ü&Ñ%·b9¿ï¾ûܱfr­¤}*ò3>(˜SŒTå+R¥k8^ƒýåâXY˜üpâEÛQÙú¥Ë¦Ûåu‹¦‡µFۆ鱡$wL5Ŵг˜ž ~\<ã¬/Žßµ1§¥ÛåØQ°Ô-W¼/B‘зB ú"49Ý”ÕišÐ;ù*«…)¡ÉVDhäCSB‹¨¡ ! J|€Øn¡¾CK¿æˆÐÔ;ÕB@j"€Ã*¹tâ U©Nžòã`f lÇS6ýÄŒRUIoÐ[«ZWåJšÒX'R!P–°¯yNˆ”!¯aéäY!·ĆHšª~3qƒIË^[ç~QUƒÊÔ/J¬W¿øªu! „€¨d'ƹÔ"²Ó±C8™ƒÉÊLè2¿8ÝÒŽ5y_H\ˆÔ÷¦‘µ˜žªÖ!"4u¦šB@ºC€H¨[n¹Å·FÈͲKþñãÇ{¾ÌI¤×ghÌPd&× )ü1/‘…L´¶ß‘SÆB©Ëœ·iÓÆw­&÷I÷,,Þý}Ø2áðº¥Ç{¬ÂŒ½u7{µT]drª.b*/„€ ‚iú1á;“Ol'k¿’m9YÜœd›?>¶±¥“"ªˆZƒÔ¤å’K.q û&‘€púôéžìÐv&Ï#™Ìζi¤§®’ f:ÐA BS'0ª! „€¨kØÁ8Ÿ=‰9N>ñ‰OÛÅÛÏÙü‘lÊBR›Fj_÷š†ÃZ= ! „@5À¬„T´3{ !$nC 0iÁðÀónhÉæœ$Ï#Ú‰,!/QfÏžl‡ðÌ“ñ:&'B¶ómÙ·o_ÏmËòýÐC¥Ou\DˆÐÑbh(B@!P1]»v | áÙ›|²÷Þ{ç»ì—耜·€.–"4%±L¤B@B€¬À8KÊšò]{Í\!°Ã €Œ¤¼P”Sy¯¿f/„€B`‡@@„f‡XFMB! „@y# BSÞë¯Ù ! „€Ø!ͱŒš„õ…ÉÙFU_Í«]! ª‰yƒòmX* M5Tq! Ênݺ…N8¡|&¬™ @`ðàÁY ã›$&ñDßB@! „€(E¤¡)ÅUÓ˜…€B@,Dh²àЉB@!PŠˆÐ”âªiÌB@! „@"4YpèD! „€(Eþ Å?IºäªIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1FileException-members.html000644 000765 000024 00000005704 14042362131 027360 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Member List
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2::FileException Member List

    This is the complete list of members for ParseV2::FileException, including all inherited members.

    FileException(const std::string &what)ParseV2::FileExceptioninline
    mysql++-3.3.0/doc/html/refman/ssx/doxygen.png000644 000765 000024 00000007303 14042362131 021573 0ustar00tangentstaff000000 000000 ‰PNG  IHDRh ;ˆØŠIDATxí]y\•Õº~45%TL Q”PE"q–Û11±]8a„w*©¨(*â" ˆzÀè`8 ¨‰¢mÅ,’òà„p$%”œBó(8k†Ü÷ýÜû6lòö»§k÷Ç÷[ÏÞß·Ö;?k½ëßÕÕÕPxÑêÏ't´ÏùÈ€zÀÇÅ3_€Q4€g@œmÿ ¾ò‰âci‰ôçÿ{ ðÇð¬ù~½Á€4:õHcÂü ðŸÁ³„ª'ÕPÆæ P7^h،♠zb„cóP¨„ 3‚† Ò}çÿO²qÁºNkÝTÛ(É?d Ç~z<’«4Óǡ؞Þv­zµÙ¦õ¬ZâdÛ,Ë6Ók±]Fz< ¾ZçƒsÕ?ìƒsUø2SÉåwê1”c`[ì—}%ѽ.Ô¼6‚BLZ˜û!F8[ ¹…×TéÛ— »Þ#gó]å:vžu?‡vèbÙR˜?wùŽŸ¾ÊÐgbÑÉÌÕ$kF~Ê;عÆ•¢ïX®?ÉèlÆÙôõà»Nʪ¼­,ìHC§gAz•ÆlÓº­gÑú ]œjÎñåM…3ÓÚæoÒ³'=‘$Ò÷f}G•ŸS_‡öèco.Êȹ :ó£ Ãds®Ù:1=¼{ƒå9?÷ý…zqÛvîÓi‰D’p¿Ë šmÙíoÛâýaÖüEqÒµwÌ}¿~{òj€ç{ôºŸFNëí[ëOq·ÇOSúXO]°>‚‚muæÄ¾e¤“5Ë{¨JÕ¯£(›´«bÂçû’ÍlÓÅ}žïú`éUÞy„ac§Á†ÔCºŠóAkl‘±y¥†ô¢ùôs÷Aø¬7ÄõôoJ±äÄ ù.¥Be. Z¬Ð×ÇÈöå¹­ù'Ù-PëìŠyF.ž‚žÝÚ€lp&.êˆð•jò7’re’z19»ã§HGíø%œüq°ïüz׈c¬_k_")ŸHJnÐÑ~ˆÐÖ˜á´äÕ5 µÁq€ÿ5#¸·îà¶+9T‘‚ ðŽ÷Rܸrz“Ï´Ì =Ï…{ðáO£Èf ¡Íwg|Ž’Ü/¢Þ$÷¯¢ëðúÀ;¿à¨Ö™âÒÆ­]¯ÜW"Þ/< ‡÷DÏà°½üB}çyIEc^—ƒ=[V“Ýh²ëMä$l];Kû®¸ýr¦È*Åò ÿtÒõ$]•MŸ÷´;×I€1èó!‚œõ¸M õ¨(fÌæ<ÁÎÎò5~z¿ù¶ž mÌêÕ >–âÚ©âëˆIÎÞçz;ãu[i·eç^ÆÜÙÓ³NÞëF6B\}7†»+üŽÓ,Ã'a ½˜-yHY¿,‘^—ñfú~ß?Hcø¸…¸ñó{Z+4\såƒû·¯Ù·nߣð«íFÆ¡sغëû§D¾?ò<–Ævkx0ÅM±ælذÁIÓxÿd”žÜÉ÷EE»AªM«g*È£YEí7Û™^[uíý®v[wGå†=Ed¼n×¶ÆæÖÅl¡'¨pGÚk+‹æ¢À¬¨C8ªâš2 dz3H£ß ¡¨BÒûSÃÅù[wŘ ~xpçútÁæmö¤Å£¥iQæ­‰AB1ÉfÙ‰›4u¹ïìIÒ]Ë6äò%ÿ†† 1t.’NJph¬zÌ ÎR1Ž"3-"¸‡‹&ìó°1âüžìó[:‡ï„¼‘……N m–“W0®_èÜœ ×õ6ùò&»)Æìꦬýæ}¬ñ~»{múù]z½£M•ºP~^Îá:eQTÙ_*7ÕÄ9É8—·Ëï 3°¶47E•î¿u÷“SÉ»U¯ _ NíºôW¬e¸ÄNÓ|»;™¿;ŒæÅd"ȉôøòÞµõï¾®½"èÄ´ÖMM+bYµ‘_ÉæEÝüÎ]P»¹XKÐI½Þ¥oE<_¹(„EP±Œ|mÇÁ¡‘Ý,ŠÓ©ººZ±Îߺ§×kÝ,kÍMš`Äø…jzeU»æ ™Át3ÓÀ½˜6—ÒöùË·r¨¹Ñ}““wö:Χùë¼ ¿|‚TܵÉQˆKßç_ÁâÀ™œ”pÑÐóໃ¼Ydâ0!®àa –øöçW$ÃÁ‘Á$/\¬$ð 2ÞímÞLH‹Ÿ èd£HVÜ,:ò½»RÍZšJ­a„z*>‹_…NT(ù‚^SVF­U¹8ñEþôñ܈óùnd;«®8™\C]ø=Èêm¬Æ:‚´ÆbãDd=Áãßžˆ‹UU5O‹|]þð®Pèêv‰á\]2ßìÿ"yÈ[ïyʧz£g{Y«{„Ùø5©ÿ;w{N3é­nâĨw§Á¢ÍK¢Ý­ûÏ29Id¿’ì y)ìPÞò8ŒÅ©¯‰±@mPÔñwjl,6 áhWÕ˜d öà uõmÁp®.™á£Ç…twöR x­BδYcŒxg*vo  yò‘•“[¬?ÜVœ˜0ÒN¡O난~Žó’¯·h#´Hkýœ±8kÓß^Àq@]àÓ“ø,56´¯÷Í-κU»n…[>]@nîøÏœp›[œ6# €4tën¯:ŽÒþ}…—8äT9_žY$/´G’K™©ù†•(óÑ’Mø©`ŸÉdѺ;ùO‹B Ó&P{qöhJÉ+Úé–§¦l2«MïöÝ_1ÑÓ«’t¸½±l€ëØya ¦ô©«®½ÆL^¬žêñš¸ùy.¾Û½Š[ u/]½‹iS}øN>²e1™q‡jfÚ&¢©iT\=kÏ›ÀXô-.84V5ðu!TE˜ þ.ŒOH´¶4—zwTr.ï‰¦Ë xõµ·œÖ„HÆù£žÈHùg Ñhñ’T$ßyq¸zþ¨p¿´ë< q•ró÷š‰wÿÍÑð–I]´–æI²é²˜sÂ"×:Õ–bÕ¦“ÈÙL6¢9VÊÓWž§<æ;”3?ý©Mê3AV#µ±ËÞ¯‘ž K£UrÝ9!›qát¦H£Ù+6ÇV…/TS^pÃùqgLP'Ú5E ‚–ÀÞºîÄ Ën"2|Ÿ;®W»Îý"Ö¬TwÖâµtúŽO'› á+W Ã+¦âZÌ–<ÕÆ&nOÝ,IŠ£06.ÁZ.Çñúøh*INÚ’Oe½ÉgBXÐÔZóäøä9èü“hÒíDSš¥¡Ê µA¯/Ôc¸ö“`A§¯"zå|‘ €ÅŸ¨ú;HÍ#‚Î|%ÄOˆƒ«OàÌÉÐÜD ž mÜðâc–ƤÉÂqm¶uË&~÷núÒË £ÇÏ€ZÕj =«_n[‡‡÷nN§ÏÝ$_¾bE˜‚€Õ)ù8¾?6‘lú“ÍÙæÖ}#bW( œ³d-®•p&¡ý’œÖa”"9öõņÐ$’Ú›AÜ!ä;ÐÑõè{~á¹8‘ÛÞ£1ÛÓÉ0ž`²#´kÒuäNÅÖ Q¹bhæ ”8ûÓMáŽa›•¿”w±h²¢®qŠæ°(bK ‚’Z¾Ò%ÐÆémáãÖË(Éý‚ÛJ)@> þ›7% ï{y Á“¾ÆÒîohfòô>{pÿ.­_Î%±ÉèägëlZØ\B2B #™¸ÚüÒºp‚hÝšü®[¥Ü<‹#SpñÌA7’ãØHƒt4:Ÿ|g¨tÓL¶*($Æ©»ì…®ù’ó÷$;b›ÔÙ`=¶£¦M„MÌÄ5ò«·Ç¾“H·ÌH.¼žHeAîº5}r­dõ¨±)ÀT};€Q5iÖ2…O0ü…0óñÃ;óæ,Š´²µ냔}g‘£]‹7å9ˆà©_{üèîêžC>úhê{Ž .ÈìðIIð€?[Kswz6Òuíý¬;µ€ç§OåâJÉa˶zv°éd† ¤µâ‚l´é舊«Åüy¾c÷ÁèÖÍ'ràúÅ™TWÕôÓ°¡L €|ʽŒ¼ì­høBã ÝTëî'ò]Kø£ìâÏ(=¹Kx €¿ LÌ,Pý¤Êµu‡¹…׈ §Å¾÷à1Ý«Äý;¿pGDäxZYÛ kfæ6¸ùóæ7®œ®þ6·ÕoÚ¾ÔH~ò®Þ¸â 8Uø“p<ºw3¡a£ÏÑ’‘3èÏ"€bˆ-ÎܺÏ_ªÅ]+ËM©zü°s“f-êçhÇãÑýÊãôÿ5}ZQNb{Ó?å%ÿ\SUõعIÓæ}~}p[œoÔÄ„êÐMMZáNÅå@>Œ„²á6(?¡Åé âK½+ü?À%ÝÝ·/Ç1‚9áUø?B)”ÕèâÞlÈÒêÏ @=àùÄÞžk­®ÅIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1Field.html000644 000765 000024 00000040774 14042362131 024223 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: ParseV2::Field Class Reference
    MySQL++ SSQLS v2 Translator  3.3.0

    'field' directive line More...

    #include <parsev2.h>

    Inheritance diagram for ParseV2::Field:
    Collaboration diagram for ParseV2::Field:

    Classes

    class  Type
     A smart enum for converting SQL type strings to one of a relatively few types we directly support. More...
     

    Public Member Functions

     Field (const std::string &name, const std::string &type, bool is_unsigned=false, bool is_null=false, bool is_autoinc=false, bool is_key=false, const std::string &alias=0)
     Holds information about a SQL field declared in the SSQLS v2 language. More...
     
    void print (std::ostream &os) const
     Print field description out to a stream in SSQLS v2 form.
     
    - Public Member Functions inherited from ParseV2::Line
    virtual ~Line ()
     Virtual dtor, since this is a base class.
     

    Static Public Member Functions

    static Fieldparse (const StringList &tl, bool subdirective, const File &file)
     Attempt to create a Field object from information in the passed StringList. More...
     
    - Static Public Member Functions inherited from ParseV2::Line
    static Lineparse (const StringList &tl, bool subdirective, const File &file)
     Virtual ctor, creating one of our subclass objects based on what we're passed. More...
     

    Additional Inherited Members

    - Protected Member Functions inherited from ParseV2::Line
     Line ()
     Protected ctor, to prevent instantiation.
     

    Detailed Description

    'field' directive line

    Constructor & Destructor Documentation

    ◆ Field()

    ParseV2::Field::Field ( const std::string &  name,
    const std::string &  type,
    bool  is_unsigned = false,
    bool  is_null = false,
    bool  is_autoinc = false,
    bool  is_key = false,
    const std::string &  alias = 0 
    )
    inline

    Holds information about a SQL field declared in the SSQLS v2 language.

    Parameters
    typethe field's SQL type
    is_unsignedtrue if type is an integer and is unsigned
    is_nulltrue if field's value is nullable
    is_autoinctrue if DB automatically assigns an auto-incrementing value to this field in INSERT if it isn't specified
    is_keytrue if field is part of the primary key
    namethe field's SQL name
    aliasthe field's C++ name, defaulting to the SQL name

    Member Function Documentation

    ◆ parse()

    ParseV2::Field * ParseV2::Field::parse ( const StringList tl,
    bool  subdirective,
    const File file 
    )
    static

    Attempt to create a Field object from information in the passed StringList.

    A kind of pre-processor for the Field ctor, creating one of those objects only if the given StringList makes sense, using the values we find in that StringList as parameters to the ctor.

    References ParseV2::File::parse_error().

    Referenced by ParseV2::Line::parse().


    The documentation for this class was generated from the following files:
    mysql++-3.3.0/doc/html/refman/ssx/functions_enum.html000644 000765 000024 00000004331 14042362131 023330 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Class Members - Enumerations
    MySQL++ SSQLS v2 Translator  3.3.0
    mysql++-3.3.0/doc/html/refman/ssx/tab_s.png000644 000765 000024 00000000270 14042362131 021202 0ustar00tangentstaff000000 000000 ‰PNG  IHDR$ÇÇ[IDATxíÝ ‚@@Ñ£?Q…¤"š¢%¦I‘—Šf–6[´HÃäQƒ<Þâõþ]ždr Í’s?ˆO=Ñññw'ÌF‡Ž íðö-~rÃ[œèŠ­ì¬mƒÖ¬ƒݯнŠÕF)Yº% §`nÌ,9B ™’©!ÑŒ\ý<Å#üîî•IEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/inherit_graph_1.png000644 000765 000024 00000004622 14042362131 023162 0ustar00tangentstaff000000 000000 ‰PNG  IHDRœ$|!SUsRGB®Îé LIDATxí\g¨I®gÎ9G ˜fEPÐ?"Š̨˜sÆœˆ9" "æ æŒ1ç0aV̱¯¾òºowvvv÷¹·÷<ºaÞtWWwW×|S]U³¼8Å…l±ˆŽ&ŠÍ:v«_°€³Hˆ©,àbªn»˜œÅ@L5Ĺډ'húôéN²m[ D¬E‹QÆŒýÆX¸кuëü˜lÃj  ¼xñB0ôéÓ§€aNs¬]»VWíÝj " =z”jÔ¨á:&À¹rY¢Õ@”4`%EÚiÂÓ€\xz²\QÒ€\”i§ OAƒ†ð†ÿâjÖ¬½ÿÞ I•*Õ¯_Ÿ7nLéÒ¥3ô³òãÇYÎê Aƒü–:yò$=š† Bµjբׯ_Ó¾}ûèÆ”?~jÔ¨AæPeΜ9´}ûvW¶ùóçÓþýûéüùó4{ölWM¼wïuëÖ–,YB¹råÒds;v,¥H‘Bä5DGåÖ­[Ô«W/õŸf¥J•hܸqÿH-*nÏž=ôæÍ*Y²¤\PVÏž=©nݺ1Ûfâĉ)Q¢D4mÚ4ø|˲eËèÀT¶lYzòä U­Z•:vìH«W¯¦Ö­[SÅŠéû÷ï¾C\ë/^¤ãÇSž-¨pÕ«WWì>ènõìÙ3ŧ€š7ožjÕª•è0S¦LT¬Û¡CÃë%»aò¨Äp̶mÛäš1c†*V¬˜Ê—/ŸÂ:sæL‚ÍÔ©SUÚ´iˆZùà(Þ½{'€`_LÞj¼%*TP}úô‘-V«VM•/_^ˆ7¿Aƒò€°J×®]Å‚á EX2gÎl¬”}þ@V(üÒ¥KBݰaƒš0a‚á`ßOmÚ´IÚæ{­ZµJú}ç%§Þ3Çþœ¬Ïþ¥zúô©š5k–´µ…ÏàÁƒÕÝ¿O§|ZP'àØ§TìbÈœàáÏLŠ}±À{^¹r¥èxéÒ¥ÒÖVÞKv½ž×=&€ÃfR§N-ŽØ*UªÈñ ÁpÌܾ}[]¾|YmݺUµmÛV6øøñc¥•‹¨ ”Ï>Šš4i’ôà á‚Ò¡(X§¸æÎ+4 fÎrK{×®]¢L§=zôÐS›;ÖnÙ²¥XÐ~ýúºW€ãàBµhÑÂïZ³f Ó€ %§Þ3À‹½Á:ë’;wncá4-ÔÝ 8èÏdÁ‚2´N:Š9©p¥J•ò›²`Á‚ ò‡’ÝoP†à¢¥2$¢?~<ªåÎ;„H–­)R„؇ à)]º´¡1 ˆýbëCÆ £¼yóÒŠ+ˆ­˜ð,\¸è'ž}-iòQB… "|šã‡@l5¨M›6šUîrøX%~°„zíÚµýú½…-ƒ ±ÿ$ýÁäd×ÁŒç£’Ê”)#²jb¹råt5Þw¶ê´­_¿^öŠ ÉWn˜ßÜìF»!e÷FT¢ÔPër@Aì'>겕£z0`a+&!€§S|D~d€ ýˆLÙ™7s"òäcP €³µ5};vì zõêµ’ˆlf’•påÄ4[gó2vêÔ)Ü~»@ôâÅ‹‰ýab÷ÃÌÉÞÔ-Ÿ={VRD‘Èn&ˆ ÀÁ2Áª!uÀDZ$"²Ÿå**òS½{÷&Ž$©D‰òP'Ã[‰Ô òaÈw]»vÚµk'Ö5yòäf.X´W¯^‰¢ÖMç¾øˆ!h$w†ü¬0 R%·.ÈÝñq¯›aÝÕ“H)a€€£hyÑôBìÀ‹.Ø%’S>ÍçvG.”k9r¤œ0H¥è‚' ^nvYäEŒDv=WDwç1Ÿ(5C† ißyÙb©lÙ²‰ ßlÔ¨Q’ª`ë#) ¬àÏè‚Ô ]â_Á7á#GqþKºáÿ°RÄOÃ8ðé>=wDiˆzá“øDµç¼úöí+l]ºtÙôg”Š9X0`€B4Žâ%'R:¾{æDµ‘òÕ¬YÓDÎ(Õ)Ÿ–zâD¯nš;¢O¬…ô’.ðáØíPˆRч="]¤‹—ìšÇëîåÃE%-⵸îÓyí#„㬀[žô]¸pA9sFòE „‰œÐöƒà(šûÇ~Sp 6ÝAú™ø2E"»ï8Ô½µ ßÏÂ93qŽ5|:\Á ø¸ôùn< ‰œø2ͯ8‚ñù.|^·â%ŸWŸÛ\áÒb¸p²|ÑÑü_|ßå„6qÊoRRþ‹b÷_h=k²H싹®Ä>´+=ĘD©±Øˆ]ãÏЀÜŸñœþ7RZÀýo埱‘ >ÿDæÏØ•2Ái_”‚• ‡o…øîi‹Õ@|5€¯JÀ[Ú+‰ºøNlÇY D¨ûïº"T˜eÿM ©¿9Ÿn5à© 8OõØÎhkÀ.Úµóyjà/é¨zCÜV³IEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1HeaderExtensionOption-members.html000644 000765 000024 00000013721 14042362131 031076 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Member List
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2::HeaderExtensionOption Member List

    This is the complete list of members for ParseV2::HeaderExtensionOption, including all inherited members.

    extension() constParseV2::HeaderExtensionOptioninline
    HeaderExtensionOption(const std::string &value)ParseV2::HeaderExtensionOptioninline
    Line()ParseV2::Lineinlineprotected
    Option(const std::string &value)ParseV2::Optioninlineprotected
    parse(const StringList &tl, bool subdirective, const File &file)ParseV2::Optionstatic
    parse_bool(const std::string &value)ParseV2::Optionprotectedstatic
    print(std::ostream &os) constParseV2::HeaderExtensionOptionvirtual
    value() constParseV2::Optioninlineprotected
    ~Line()ParseV2::Lineinlinevirtual
    ~Option()ParseV2::Optioninlinevirtual
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1ParseException-members.html000644 000765 000024 00000007651 14042362131 027556 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Member List
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2::ParseException Member List

    This is the complete list of members for ParseV2::ParseException, including all inherited members.

    file_name() constParseV2::ParseExceptioninline
    line() constParseV2::ParseExceptioninline
    ParseException(const std::string &what, const std::string &file_name, size_t line)ParseV2::ParseExceptioninline
    ~ParseException()ParseV2::ParseExceptioninline
    mysql++-3.3.0/doc/html/refman/ssx/files.html000644 000765 000024 00000005373 14042362131 021405 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: File List
    MySQL++ SSQLS v2 Translator  3.3.0
    File List
    Here is a list of all documented files with brief descriptions:
     genv2.h
     parsev2.h
    mysql++-3.3.0/doc/html/refman/ssx/tab_a.png000644 000765 000024 00000000216 14042362131 021160 0ustar00tangentstaff000000 000000 ‰PNG  IHDR$ÇÇ[UIDATxíK €0C'o¤(Šˆ[Žà%Üxÿ#Ù©­ç ùÁöó¦W¦e# 3t I 3+¼øEã~\D½9¯Ûàè’wM·¿öÿ}Yõ_êA4Yžã}IEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/inherit_graph_0.png000644 000765 000024 00000002752 14042362131 023163 0ustar00tangentstaff000000 000000 ‰PNG  IHDRS$õ•ysRGB®Îé¤IDAThíXYHQ>.e)¦¶h”¦–˜&T`.¤"h ™éƒ¸<¨ )™R äKE‚¤oâCø†¢¢Af%JY‚-’(…%Xf &jAn§sNÌ0ÿ–?c¾Ì…ûϽçœ{gî7ßYþqBj`4]pÖecAÀSG"``ꈀŽ[¹šïõâÅ ¸}û¶¹Ø˜›!™™ çÎ3‘Z¸ùÄÄÜ¿ßÄȘ˜"ðàÁ1ÒÌ‚™ŠESS“24®f„„„˜IþL-˜iÕÊÚ…€¦]0Ùgd€iNvY`Ú“}F6}ËÿX¥§§Ã‚ºÄÝÝΜ9çÏŸ‡mÛ¶©òõ¬¬¬Èýâââ ¬¬ÌäVPYY W®\„„øþý;<~üÞ¿šš üÌÿÚtaæ£G`vv"""¤oÙ²Š‹‹!99ù_ŸÏîõ...àìì ÕÕÕÀÀjÛÝ»wáéÓ§päÈøúõ+œ8qòòòàÞ½{••LJååeíÇÆüÕHÛ¨$â¯HZÑšc///¬¨¨0±»qã†ìCõ˜*§{{{ñǪìׯ_øéÓ'™S«êñùóçH¬We>bcc!,, FGGÅž]322RXÆ{úûûÃË—/EwêÔ)ðññmL/¾}ûÙÙÙbÃ.Ï®¾wï^™Ÿ¹RÖDWWW|تn#…ÿ%fnäÿç½ 0uDÛÓSGtÜÊ`¦Ž`ÚÌæüÇhÖ˜šš²ª°`&&ã/çF³@JJ (ŸµVN\ßjÆØq,˜éøVÆJL9`€i€©#:nõÉz1:Ó‘¹sIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1Line__inherit__graph.png000644 000765 000024 00000057016 14042362131 027105 0ustar00tangentstaff000000 000000 ‰PNG  IHDR§°«K¡sRGB®Îé@IDATxí œ•ÓûÀ•=Ê‘$•]i•J$Rñ#[([$KH‹%”l)B–$’%E–ThÓ&ÉÒ¢B¤]iUÎÿù>ó?·wn÷Î̹÷ν3çù|î¼ÛYŸ÷óœgßà )„")4?Å€'NþCððððH9 xâ”r¯ÄÈcÀcÀcÀc ˜GAáÁÀìÙ³Í)§œRx&œÀ™þùçŸæÐCM`¾iÂÏ9¢÷ÿÍ7ߘöíÛl`ü/÷88ñÄ ÄɃǀÇ@â0à‰Sâpë[öðððÈ%ýôSS¥Jsà 7˜¦M›ÊFÆû¿ÿýÏ|ñÅ¡ßÔ©SÍ/¿üb vÑàñÇ×òáÏ/¹ä’ð[þÚcÀc 0à9§|@zªw¹ÿþû›‡~X‡¹}ûvÃ5œF™2e”`Ìš5Ëœ|òÉæõ×_7[·n57Ýt“r<'œp‚9òÈ#Mß¾}ͦM›L¯^½ÌUW]e~øáµ\¶l™iݺµyê©§ô~½zõÌæÍ›µ.Üçp-Ã~ýú™æÍ››qãÆ™o¼Ñ@4î½÷^5…¿øâ‹Í9çœcž{î9ã` 6Ax÷Ýwͯ¿þª·FŒaî»ï>%°Û:„Š2?Æ?vìXÓ¤I³sçÎÐ3â1à1ðÄ)ÿpŸ²=C$Þÿ}]¨Y´!N5jÔ0wÜq‡AÌ÷æ›oêù‹/¾h.»ì2óñÇ›Ûn»MÏ!ZsçÎUSëë®»N‰á¼óÎS‚axå•W”È!ÒCŒáyûí·õX¢D óÉ'Ÿ˜}öÙGñÃ8 b@ÕªUM¹råô¼V­Zfï½÷6ëׯ7kÖ¬Qâ§äÏ•W^iV¯^m~ûí7³cÇ%>Ò-[¶ÆäÚ£üÈ‘# ÄöÚk¯™"E —0¡U«VЇ;ôˆ7ßÿñÇ17ë‰SÌ(+øàz ú&Äd,Ú½{÷6cÆŒQŽŸ)G@J—.mž|òI-ƒ8îæ›o6—_~¹™9s¦rCˆÜÎ>ûl½®X±¢¶‡È"QjÓ¦¸bÈÇ|ýõ×›¥K—š>ø@ï_}õÕzäσ>¨çË—/7Å‹驸ÉxLš4I9³Å‹ë­Ã?Ü ïr0~üxÓ®];súé§«jðàÁîQ¡8þþûïfÆŒ:ÿB1a?ɤb€ÍcP¯Kçž8Å‚­BRC¸¡p€Bá9í´ÓB:è S´hQ½¦\ÊÀU4øÙgŸ™ÿýW¹8—SO=U9 ÓÎC=¤}•*UÊÔ©SGÛ@_1ƒ£‚`ñ,+Øo¿ýÌ]wÝ•©ˆ3ê€{ÚsÏ=Íßÿ­Ïáôà!˜Î´ 4ÐsÚÙc=ôÜÿñðÈ_ .Fþâ:í{‡Ð<öØcæöÛo×Ývx¶¸Œî¼óN5¨ÀÚ¢uì±ÇšÆ«"¸%K–(.Ž8âƒx\”êÉ‚¾‚„éûï¿7pJD/;8÷ÜsµÜ-·Üb:wîl>ÿüsƒžÉA³fÍT´ˆøcøœ\9ôðH.Gc;餓̫¯¾j8¦; k{öÙg³Ô9¡_„ Ðï!~ r´ñÀËú̺uëš}÷Ý7Ô$ÖšÄ2DÔ wË; ~W¡‚N¦OŸ®úK iR0Ú=z´úÚ!ZÎ NÑò-³AŒXÐN˜0Áüøãj@„3$ŠVÇÝÇÂ5+ÿ@W.§G§sâ+xÎ)VŒòò,&N˜¸lø¢vÌ1Çähñ§xD4a¢¯£Ž:*߯ï¹Æ»½ûï¿_`ÐãA@ªW¯®‹j<ûá;‚36lX¨Y|Øàñ±{ä‘G”ûÅQ-"Þ¬€QrЈ&«òÉ~6hÐ Ó²eKåÚ1øAú×_é0ÐçFsi@´þÌ3ÏD.Dµk×Vw ‡~hÎ<óL5<ŠZI¸>³ó̪x?óÄ)Þõíy @ `rŽï¢O|gÍ9`Àñ"6}þùçuæø£¡7Ä2Ž™s¬$kÖ¬iæÌ™£e0ÝG4Œu§ãä¿><„=œ¯ñ=cc„ƒC”Œ»ÂÓO?­åðwC¼ë™«L9ôŸp?ÿü³»­ ;\Ü\ Àb~/Òø¾þúk5žATÜ©S'­ébb7n {Гb˜ƒF>1Ï‹.ºÈtëÖMñ†„¥cÇŽêÚ@Y3ºU‹Ù-Zè¹ûiŒ8¶ŸuÖYê·‡E+nC‡Uß¾mÛ¶©[V°lÆàš.\˜©O$#Î?1!MàÝÁ]¸“0wÞ-iVŽînœ¹>"ÖóP80 »5+†…c² œ¥,lVþ)ØCòš–³Sò,;gh+îVC+ŽÏV&=ŠXÊ ÷l…‹±ÙCÏÅ"ÓŠNÑV¨PÁ G`Ŕߊ;‚°w+fûV–ÜJ$+~lZODPV,'­XVZYÜu<"º²o½õ–žÓðÏ?ÿXÑgZ1ù×ëž={jy!BV˜ÞãˆíäÉ“­,¤Vô—z_,6µßyóæÙQ£FY me#Ý‹6>!Vˆ²îÂò ѳ‘î‰U«KT}.:Mí_(ê+þ€V•âF¸E ã'w£ˆ-­èY­ˆQ­éBà­X¤Ú—_~Yÿ‡£Qˆ½½®¶åþfEra…€[á&­L+Ó ¡±B m°O!HV¸SÅ‹a+œ²=¯_%+ܨâj…¨YÝë…йn"yïâñYv7=ç”k²î+z  ÈB¯Ü~a>ú¨ú !ºegÏ3vÖ˜ëãÀ °»Æ #ÜK—.]Ô qVÐ÷ .Ãùž‘¼‘è ½ /aá…j{¸+ CBü„x®€;ÀÉ“6xà½'…#8z2ÜÞxã µÂdìèvÐ×Ð.zCœÌÃ!Æ#ºÓàøWÃ9 aÓbêH÷p"‡{ä9ãÑ@ Ž? Vªà†È)„ ›8q¢r•à}"NÊ Åqwñt ‡èåÐ9 Y8X\*,aáyGŒ5ا«‡®]œ)FCè +QΉñÁ& ‰H)X¯âŸ¡A߿ĢZXþ`UŠo z#ŽàÚA4B,!,A }ôÄE1)€Kb¼HÀÆÀÍçÁy8ç{¾á~"UË=Oœâ‚ÆôhY=SN þezö)²å{L«VåŸäé×ÍiéZΧh7ºãG‘ß¿]ÌášxŸA€˜½&a¡ˆ·ˆçç¬|Ï0ÀØÐXν€69GÇnààüÝbÅ ®ˆ¾ù‰(Qõ.†;ÁâX‘èƒ"Ý‹6>ôHü0` .‹~ø=Ú§MÕ„9S&øþÁ‘ˆÀ˜‚¡³àtظÁµÜzë­J¨¹vmŒ¸z€'g0‚aÜÄÐ9Êùå—Ú ct(7èÓåÄ®•9'|„ˆdb; úÚ±ã?Ù!k† ùJ"{¯’]í"ú@¡½+$PLÃ1Ž.ŠÁfYt×±éaŸ Àëê° YñœBÐ÷ b5ç{†8 ã ˆ÷ Ö®]kêׯê‘¡¯0€ À`0ÀÂÌX8€àa`€è‘EÝ¥Qa¬Œ9ü~uÎ7.8>Ä® ®ƒÆ~‘ŽåXRŸ¹'œÃb\€1áºàª dcg^æ ñ‡»t@;ÑpxÆg¨H”w× gÚ§OW]ñFLIã²\Ÿl¸4lØPç Cüè¸áPCrœSð~\ÎeWâÁc@¤ëlŸ>ÛêÕ{Ø‹/h?ùä;»cÇN™ŽœDd…”í"Ò"²`«"=¼1÷ÞmÌ‘îÑ6Fà$+wôŒ0>Ä!]/‚Ïƒç‘ÆÈs SÀ9$AÀ Btoj”!›…У`Ÿ¡›r‚! óË-0¾ÜDxÎ).$>}™þI")*Ö;õÅÉòJQ>ï¾°äã0}×…ˆôÐ 9„x KHD§éž8¥Ã[ŠÓûm­¤wÞùZ¬«*K`Õ‹EÖŸýî.NÝûf<<bÀ@Њ0†jYÄ!fY!zâ”ÈOV×3g.ë§/%®ÞÓ¶m-3~|ñsÈ0'MÖ|?±`À§X°•FeÿûÏŠ9ë!J$ãVÉ<ÛPEw%KzÑ]½Æ„Ý^9|ÞöÜóH‰Þ~´ˆ„KKâ ³œÖ÷å rë裒°oeóæíOkš4h¢©P¡Œ¥Æ/`³ôÓI&–-[#Üö’ ëóõ×KÄÔ¹‚ø¼TìâØé] ’ù. S_ž8·½zõ?ªO:tª„9ÆÜrKc±Ö)W@fç§‘l ,YB:‡¹ú[³æ +TUÒñâ{t¬(Ô3Âà${L¾¿Â…OœÒü}³«}î¹/$‹ë\q =?ü$b`éÒÕ$ƒ ­ZµQœZOçÕš"ö«˜ÄQø®<20à‰Sš~ óçÿ!žããÌ´i‹%¤KsÍ5u%ö]Fž¥4’v>``Æ­Ät¶yë­+oƒD&¨á R>¼ßåîðÄiwœ¤ô3~Q¢ôÚ›o>KRžŸéý“Rú¥æàp¾>|†ê’Î:«ª„§9CÂÕ›šƒõ£*”ðÄ)M^û_ü(q¸ÆtK·Ür¶Fs(VÌÇíM“×—Ã\·n³@*)$¦J”𽕠µjuŠÄv+•ãóƒðbÀ§ 6R𜠬O?=V" Q¢„ ¡ÁS~HyÃÀ¢E+Õzsôè9ªGºúêºÞX&o(õµ“€Oœ’€äX»ÀG =œÒ¾û–4·ßÞT-¥bmÇ—/ܘ8ñg!J$}ÂrIQWu“^/Y¸¿‰tš½'N)ô¶vîüOÂÙÏÒxMQѹs5 O¡!ú¡¤>úè[Ó¯_Fšœ¯[¶7Õ«á9¥âº04MÖ›ojvìøO"„wñÜRaxé…xŽž8%àå³x À$üøãË™Áƒ¯ñË è)oM.Y²ÄüôÓO¡FN9åsðÁ‡®ãqÂN̘1¦nݺ⳵o¨ÉqãÆ y¢)[¶¬,¶;̆ d±Í:`-z´bÅŠ™cŽ9&ÔNv'¿ÿþ»Y¿~½ˆO³7X³fY°`©]»vvÍ&ýù‚+$TÕ Ó¦Íi¦K—fÞ;éoÀw˜l øø7qÄ8~JÇϔèË‚ü½: Ò>% Ó1b„¹ûî»ÍW_}e&Nœhš7on°ò‹'ÍcaÆ…š…œwÞyæ¿ÿþS‹Âã?^òNÝ ù·ÑïCåÂOžþy3dÈðÛY^öÙgâÌüL–eÜÃùó盇zÈ]¦ÌqÒ¤¦uëç-ä}ë Sʼ?DbÀ§8`îàý÷¿î ·Ÿþjç]¯¢¼84ŸÐ&N:é$óðÛ>}ú˜§žzJŒ5žÓþ `Ž=öXáüŽ7bÖ¡Csúé§›/¿üR|iîgáÃÅü½¦™3gN¨ õªT©"¦ñ/齫®ºJˆöp=çÏ;ï¼cš4ib8à1¾ß|óÍ7æÝwß5'Ÿ|²èSžÖrçœsŽY´h‘r2²p€»ãŽ; Y65j¤ÜÑöíÛÍu×]g:è Ó¸qc³páÂP5â\º¦Í_ýÕ,_¾\ëW¬XQWû…ž3×ðy„&ñä“O¾3·Þú†rß-[ž”Äž}Wù‹/ÖË#þIȆ9/aaúõ»,írß,[¶LêûfÓ¦M²V¢x ¢1yòdÝ¥C®¹æ%p..Á'Ÿ|bà6^}õUaöWbtÓM7‰níu³eË%˜V_vÙeæÞ{ï5þù§“·ß~ÛtëÖMR}—0ýõ—Šûè.ç–[nÑ7R«V-³÷Þ{+w1 ˆ ¢:|‹Ú´ic>ýôS%vŒî BÇñ¶nÝj~ùå—P3>æðä“OšC9DÞábŽÝIÇ‚˜1Ò<Ž;.¹N­D ïÔi˜l :ÆÍÿ-„9™7ožpõ5‚·ü¹Ç@B0Àf¶aÆ1µí‰SLèÚUxܸùæ±Ç>1{îYLDS­…kª²ëa±H¿òÊ+J„Î?ÿ|síµ×J”êýÍ”)Stáÿî»ïÌßÿm6oÞ¬³Bô†Bƒ>§K—.’äð"ÙÝߪå÷Úk/³xñb- W5mÚ4%lp7ï½÷žr4p,^x¡–Ë™>}ºöËâÿ¿ÿýOï?øàƒzäÏ<:w'ˆ !x*TPÎç·ß~Ó¾®¼òJ%€={öÔq|ýõ×®JÄãøñã•“ƒˆÁuÁÕAð"Í#™ÄiäÈÙ¦cÇ¡fܸ. Ò qbã¹FD’¿é1 ðÿ;aÂOœò€ÃU%NŸ>ŸÈNü_sÏ=癦M«å¨^ª:ûì³•Ó ŽnnBuæ™gfÒó8ƒ Äi°7ß|SÑŽ˜ölްçž{*1£=>·3‡h 2\»v­r:¥Je¤i€û‚+ëÛ·¯&½:8ŒlÏ÷Ùg-ƒ‘¢Õ¥K—JاÓôã€#ŠŒ׊+BF ûí·Ÿ‡ÐE›G´öâyQ^¯^ 'ygÂS<ÇëÛòH¼Î)€Õ™3—ˆ8k”p Ûw3NgÍZ*‹*JéÂ94TSÞt'L»Mòÿo`QATÇ" ×ÄâD¯½öšôE_|ñ…4 žC4×¹sgÁÑç*:£^Ë–-UÜöâ‹/@›œ£ß 'L>Úú矔j…lþ4mÚTÅ{;wîT=Yиnn.ý¢Ë"EŠH¨ŸsÌÈ‘#u,ü±öwmÙ !Ï'LøY6=ï Ñ¿!-t–yž°oÀc FË …±†( ‹©^½ºyüñÇu®®œÒèÑ£eg_Í\~ùåæ®»îRãŒ(Ž<òHÕ¡;“J©xñâ¦AƒzïçŸVNª~ýúJ( N¬‡Á‚3ˆhÑ¢…–ö‡1ñ»øâ‹•˜uÔQêY5˜ ϸGÿj0FÇU¡gÂãˆ#Ž0ß~û­–…;Œ6hcˆÇ}6@? ÚÁ;iÇ¡¾´Æ€J.¯oÞ¼ßEo2 Ä1U«v¸píU´2mÚ"~ŵÓ*í ñW\¡ rn¾PD^¨òåË›ÿýW œØËµG™üÑT®\YÜ}üŠð[‚@å ²‹æ3ÅØ° pUÌ5±ÌsyÄŒs?þø§¹ä’fàÀ+“–&]ÓG}”¥Î‰÷ˆ«ƒ£>Ú$B÷† \2"ˆiÿøã-soåÊ•!¬+~ ¯{Άˆ R"I@HbŒu&ˆN†ÿ¥råÊi³p†ÄœzꩺÁ‹TgÖ¬YÚnNÚŒT?¯÷œÎØsÚ^¡çœ~ùe•úEyK—®–ó {7}zщÔM+”ӗŸU9¸·XÃí„&êRÎ «» °øçabÑÏ ÷ÐY¹¹rí Yóà{kÛöE1°¹8i„ÉÍ1»# ॗ^ª Q+~q·°1‰'°0Ã!ۅпõÖ[*ª…ãÅÑ-F+Ñ€ñ¶mÛVmn÷Ãz4ðòË/ˆb 6 ¡‡ÐÄ`œ¾qã`3ôá‡*1Æ¢5+€³Gl½nÝ:µL=묳v½»úH=¦Nê.Óç(rÿB ü±ÞžpB7{øá·ÛÃëœéwúéYùGI[܈]NÚŽ?ÝÞµkWûÈ#Ä<ì+þ¶§ö }ë­1×Ík1f±b´’e3bíh…p‡ÊlÛ¶Í–,YÒŠÞΊáˆñ«1¨mÖ¬™ÎÆŠ%¦gn+"V+—VÜlÕªU­lV¬¸!h;bîoeA¶²“·båi…3·bÖoÅrÓ ¡eDÏi…µ3f̰b”ceá×ûcÇŽµâ“¦çâ;g…€éù=÷Üc…hYÆ[©R%½ü3wî\+zT+²+S+Ö™V"¤h êø}ôQ­i|Ô S+"o+"a+®V"–Ø2eÊ踟m»zõj++~vVôœzþÄ‚Uq$ºWÅ—¸*h_Bøíí·ßªkQ+ÑT¬:}Ž„cµŒS|-¸.PÏ]E!’V¸L}' 6ÔqñnÁí%—\¢co¼ æDš§lô›NÌÊÆÓŠÛˆÖ§²9Ñz¢‹¶¥Eï aÖ{YýWüb…BË9­[·YvjýDA¾Evk™•ýl-Ö®Ý$ŠòÙqÝeÈË‘ÝQ†Iv<füäôùì³ï5 Çm· “ñ'V„ÏñÖ¶–/_¯F6:4îdw_®TÁ 1À`ø‚e&Æ%Ì ḊîëMŒ]ððÖš¸ ›ÄªSˆ·N î â¨Q£ÔlW¸s84Ç1`ʼn+V£œ ñÓºŒÃ¥%¡'b”EWû¤â¿öíÛ‡~ˆ“p§ }ã¼]§NSAܸÆí@ˆžê)ïF"G¸æ7·gM?p1èiñ¯CŽ:Í™3gšÒ¥K›^xÁQ×0^¸]0|é tƃÀØàÀœ“¸hƒËáÅÀ1–®7Þx£AŸ ^àºpáàƒˆÿúSðŽ84ÆOçTižpb”ÃOK]tÉ8Ó£&`Î’9à‚¿b¬Übp®YJℯeËfõêD3‚6oÞ&VgoBÅ>ÿüùg»Cü‚²f׳êkË–íæ»ï~×(øXµo?XD,}MÅŠw‹ÑÆ Y¦ ›¿Yĕřt[VMùgùŒSÓ¦OˆÈéu#Ã@$Ÿ‡µ{,! ¯‰u&â]DDˆt{÷î­.¸°È²,È87£‹DwóÍ7«4‹5„ŽÅk®‰ÌáDNXn²àam‰èÎYuB qo`Æ1¼GÚDÊ•ÁÚ“E@ç1r?"},¸,¼èЄK’ÿÿÕºhCD)ø+F1ñÏÃà‡P_ćd貂z&ˆ)>x”Ç_…À(BÆ8Á . è;ÃwDε‰C8xÂà‡:t\èš i(Îè.÷СCC®~DðˆN!zY½ ”£p`ºpçèÿ™#Þå=`tôÔÅñO±8¶•Mm—ô-[ö7Ë–­–]ÞNÑ—“_qùvÊo‡ì>ªƒÅB­¼|ˆ'™¢EóF¿çÌùU>Ôw•³AS¦,ÊOpm þú-Z´RÎWÈ®e“|¤eu|Uª¢ããX±âÁò!ÍÔî÷ß+º´Ö™îù‹ÄbçÝœkEl,;ì¶²àdøeå¤^~•!8¯3³Ž7 ֚οŒç8V-šñ=R.Nƒ0YDaáEÄÅŽ8ãŒ3”°Ái±ÀãûÙëPO)÷æ|äôa„?p4plá€n¢Ê¢Ï9á­œ¯e·# ‘ÆÔWÂ!®Zµ*¼ Õû@@DÜ§Ï v Ø—óÍq™98|G=,HWÏÕS…Äãƒ@÷êÕË@PàN‰øâôÃZv}³Q\Œ=Ò{ÀïB€«pý-h>Z)Ž2'ü[ –J–¬$ÿçË‹Y)¿ÕbU¶J^à:Ù­ñÛ(;+;º tí&ˆšíþѳõè1‚fëÖ!eå¦MÛÔ*°T©âšVÛ!ТEI,¹¿´,DÇý48V Rùòª©sNFÅBÀÏCja€÷ŒñC¯^­Ò‚0e…= »gæÃ×vÚìØáD9¢—‚( ‚Æ}Ñý„ºÁÂÑ",8 €ŽˆÏ!%ìÜá©Á±ˆÏYxƒ€Øvà|èŽî nƒÿ[dú„0Dî”cqÆ¢L}¸“`_¸-`´ñÁ¨¢PD~ÑG÷Ûn»MçŒ8nãÆÊuÃÒøðºˆ#á–ˆj7 籤<}a˜·7$zÁvÀm¤yfGøƒ>p·p`à;‰8aÎۉǾ‡Ø0ÀÇŽÅÑA.Dá#ù@æÊG»s7± D©iÓ'EÞ¼^v%{‡)5Ú´9U‰ÐAeD>ˆm¾tªc€ìµíÚ½,;Þ Ò†09²H¸eaåÇÁB wCÑ‹:–› ¼Ë9b9Êb\¡A/äÄI”癢à ݉çÁÉ!æcqD¼„5–}Iâ@Âi9‘˜kÑ#"=¸¸#86ú"à1ú/8Äf,Ú‘Æ—E›p ˆ9‘JPhÑùîѾsˆÖбA8ÐgEð„_ëæàèŒàhˆɸ"u ŽŒîc‡ëdí†ÀA˜ œ\ð̼ƒàÞO¤yâ ¨ñ#dã… s>ÑÆ­­œÜÏäçÄË‹õÄ)'¨Ë\æz‰9òy"?_©iûö V>s)Xôòá6’¨¡(6có‡oË_§Þ{o–,¸Š2úJ‘çWI‰çÄÏ)»²˜¢sA …2Ñ—[ü\]b-ÂÕEDpp0ˆ›å'`¬€ø‹98z*ôHè™ð¥‚Ø:€{€`„s:Ìb ×–@Ä(_A¸¢à8²«‡éc…h8 n²j3Ú<³ªÃfÂùRŸ_"À§8aµD‰Íb TGØê3…MÿÃÌû›™={©5@¨J–,®º'ÎgÏ^§^}3©Œ_]£ŸˆiÇŽ½SvÄ™ÀT{* ±Š~gNÎØ0X@ Á‚Ž. kAŒˆÍ0Ôp°TL³á \`cwŸ#Ü$º #°ÊÃA6§Üø ©:"¾Â1óÓÈ[±»w?ÌäåÁr$°°Áþ#d”Ö¡<6~ñ„=ö°"ƒ-¢iÙ[·>UÞ‰…ÓíbàÐGˆÑƒfРkL×®ÍåC­*þ©!Ö‰çü}[™10bÄ,17î'¦»'i¢@O˜2ã'–+ürÆL‚]"M¯K?áe1ØÀ¬@¿´ÖÃd{РAáUt2ôaŒ‹±£ß"=I4€ ‘® }Œ3V¾°Ü™8a!C*k¬c@8V#âá¬J¹x"äTÁ—xkäÔFÌWñ¥ÀÚ‡²ÑSVÌRƒ€Œ˜xSÉ ê×?F£™¿ùæõb5tN²ºöý$kÖü# Í«²(})>;Ň)q»ù$O-_»C¹̦̹3yF_Ãfxíµ×Ô cLغb$¯¦Ù„@Â`'ÙvíÚ©¥k~K܃Âù`1È5–p‘2,CT°ð£]’p²F¡¯ÇŸ â„aëá”X§Æô…ákkašÐɰ¾±éFÄXá á±"˜Kxh}PÿÄLœÀ,*/ óNŒ(ø00¤˜={¶~X½àµ ÀÞÛ‰Bª‚1cƨ‰#V*˜¢°È| ¼,Ò4°[!•V:|xÄsâPa¾IZL¥1UuéÀ!f°ú%(í"€µ –<˜\Bd1-7V8|8˜fzðÈC‡NsêÇÄ!²œ8CÞ!¦º‡fWÅ?Ï!°ôÃ’ G‚…`]@ôÇBÏÿsxD ,í–`ÕÇÚÁÿ8Z®Y·"EºÀú Ý gWÖ8Ö ˆ ÆÀ9þF8$ñóy¬ƒÐ°aC­Ë=$6èæX !‚Ο «7Ö,ÖBˆ!àYÏpvfôH˜'Ä «C8¸‚ ¹"NX·€Ç.'1v18Úžor2¨ÂYñ!@„`ÁÙÍð21s$háo¼¡x%$a5 6Ôc·¬öÐCUE!|%Ýb•‡ƒI'À8œÜËv^ÜáŠK}  NNÔ Í| Š|ôpeGÒ(ð¡CTŸ+ïÚðG‡|Ùš5{J#wR½K—fjãžûcÞ1€uViøaVÎæ5Ü:ðˆ®g¸%Ätp9üO³>àç1‰éóx¬!$6ªè D×_½6‹ù8’Í8ëÔqj×7fïAk:üš0³Ç âD Œ ‚z)îó¢ÅZ ¥ÚÇjy€· ‹sEœØ…€<¸ Š#» <º13„¥…ú;2Xv>¼h>òX^$„„Ý€cѱ©g‡C›!çÌ1¤m ¶©Ð…0AaÊË`¯¡rI¤#/¶›qá³€“»ÆçEˆ¼½Ý˜"µáïN MÞ­·¾)œüÙ²¿U,Ð<·”¨¯É â<¢#DŠ~Âÿ2[m6Ê#ÖÀ‰Y§Â-Ùˆtª‹=ê„ÜŒ‹º‘A$„G]  mÀõ)Œ‹È}§»b“̆8@ì\” žCøÜ\Â#FDª_îåŠ8\¸~ÈrÙÀn#WÅ)Ž]/Ê{|<ÔàAÍ"âá^0¶`7ãØuˆñ·PòÒá°!Ö« ;)t^Á¾\Ÿ±W4;1æBÊxøÁ¦»;–v}ÙôÅÀ”) £þŸ¶‰~`”è#ú‰˜‡Ýü}r^3jyÿ >@ôqBÜ.:£ÖÔD‚À/‰ÿcôIÙ’Ç{LÅúHNX ûÉ*ò+Ç‘õGX¤C¤¿ØpCLYë°áF:!uæãô8CÔ ”Cj„©°YðåŠ8‘èΑbî ŠÈ,¦Á—L9¸tT|@DÏ岓A‡,ý; d·>°ßè¯ø@°+B‰Â¢å=r\‘"ÀŽè~z3‹?pzptˆ(Ù­ÁÙQ×CáÀÀ}÷½'žõ…[þ#Ó„ =Õ¯ßXÑ{>,›©ÂÍw•ÍY#ÙÍTÎ_Äljù± †ABÉ·&‘‚õÄE¤Èj4´ë"]]Í1‘.—ÑêÄv¨'PK3,Û¥"Çælž1€@_DØ$€µâI4wÖ«Î;«¿¸P8€C\)‡‘ú¨ppx ¿_P®såçä^D ° %ä±%bm±c€ˆ¸ò”A´GH Ž„dç%"–ƒh°ÍNáÈ5D‰îDzÜ#Æ;£W_}•Ke“QnbAX ŠäwQ=ÏùØø9ˆsνlÆF¿XóÀzÝ" ²ø¿ÿþ'b‚ÌŽ|ñhÛ·‘7 ðÝvê4Lt ßé7ûÈ#J–Ø…{Þ&zÔÉb=:AvìÇK8˜ÛdÑÈì™·}íœ` ¸ðïÀýÿsýÓO?ém¢š‡G¤@WãÀ•ã© €¤¯ðHôÅ&1¦ëÁ¨ .†&õÑOa¤ %B'ÆÆN'Y¤0ØŒ£6ÀMÆ9²òŒ 9„+¸ÙÆ<"ÉzäDyÁ¹¸À¸®í‚vŒ{ø"8dº°¸eDÙèrx¡NŽËs8^":^`*»%ÄzNƜ՘ ®P-bVL x~(ÍçÏ_.JÍ ²›:Z>öNY5çŸ%¤FéÐá5±ÒüY8îíÚ{É’Å„X5QÂÔ°áqbÂ{N"Jñ_”ä×”öÝÁñAðÂ9Ò~bYLyÀõ"v‘ôÎI‘`8“H„‰6"éˆØ]w9é+ÑeØ­¸Kv}íÜYLLKW‰Œy´¢Ÿ^!\×Ù ×ÅŽ °ʗψžì®ý11@êòaÍšµ4D˜ÑÎV6se'ÜÉTª´+LOþŽ6öÞIÁ²dÉjù­ÓéUz̸^!¢«ØÛó5r6à…‰0åSâøœ—ʾî. üûoq‰ð“p}? {¾K¡Šn"Å‹•GGoùó|Ä\Ò%—¶{â¾¢–.Yr‹è¹NÓ÷õ"Æc¡Ë …W€“š81C>ÎbQ©þe4ôQxYX l܈ÑKM¾‰ØÕóu`ŠäÜi²ëVŒgp_wßM8›-¢‡x:ÆÚ»Šc%çáùå—•òËà†àˆ ¤»PYñ "ºJÅz]»¾'Ê̵ªLvÒýôÓ+Š%Î1‘_¬»[2£~xiÍåÄC&^G¸9d¿`u' ÀÉœ}v_}ˆõ+VT­ïœèeÓ¦­â,>-WÄiüø$ïÎûb¥Šîr›¶»nÝfQpG&ŒM#:AçD´¯X±ŒüV¨nÝ*"ެ­ßJnr€ášáBç¸ùû£Ç@"0€ù|¬É g±† ÆÚFZ–/]º¹p+Š!~VkE¿°!ðÛ(‡»¬œN0˜ —:cÇÎ×Å ™?‹P´hµ<ž‰SB¿téÁ —,ºˆdømÚ´]‰ §•A¸ÊŠô.3zm<ì^åÑBê‡-t—%KV"q¼ó¿E »YŽü6Êù&½æÞÿmùÿgÿÈ÷áÌ QÏ8ÿ¯¾Z(ï}¤D X£ÅÕÙwß’Cèåä]ﮂÁuÔAJ|2Äp»Äqì7*—þXð1‰8üéîš!„ãÚk_‘ÅÇŠžhͯá@ ¾uëv]ø=t?‰qd´¼HŒÜ™Ã)9[|FéBE¾§yózíH6g,V).R|gœgˆtXìPÔW®|Hˆ`±«>òH¬%‹hü2ˆæá!qÀ¯…¸kË—o?¿÷%Ûê y×›‘`¯$šdƒ±`Á åBtÊèõ.q\q¶Üݺ5؆?÷(,(´Ä‰ŒÙ0*\|ùèˆî½÷<(¼ëùŽÿ‰ßÕ8 ©´¯¾=3ÖêËÿùçßJ¬Ð9@¸øAÄV¬X/–Š¥¡b;UbúÀµ§›§êÕïTqܶmpÜ» b‚]à"qÝuõŧ/Ã!3øÌŸ{ x dÆ@¡Ö95hp¬8î^#ÑÕ ·”ÙRË¡©D‰bâŒ[×]æúX¬Xõ“Éu*vØþÒdq"¬’驳2{ûíO%´N¦Gþ"AX¿>à s¯½Š+׊7hµI·8Y.Y²2A#ðÍz , jâÄ«lÔ¨ªÄç»Zb_ Ù@‘½ö†НRz¡ suÒŸ|òÁfêÔ¬u%ësοÙ|úiG [ƒ N×sæüª/ˆøvìØ)ávŠ©¨ïÇ3BsåßH}ÏéôZu„Ó¦M«IN§+%§ÔÐL ½Í‹/~)‘.¶È³Fëoß ÿš%–a0$ ±¼‚”ã52òÐ`4@x)K—.Õ/„±ˆÏHøg)çÊE:’님‡í%lqÑrD{Þ¸qc(àfNêÄRq*¿óΫª¶bÅß!‚uÀ¥B÷ý‰Ç€Ç@t ¤Fœ èãKÚ“sÏ­.A=Ûªab¸pÇM5¸':„úõ{«²=OAˆ !PäÊ!})AňÎÜ¢E‹LíÞwß}š”„oÈ$©Á:]bµHý½™QD¥'Ð0 ߸&˜fVàRn»¤˜Y•÷3Œš4©&¸=WbO6Œwó¾=‚‰±&óÀÀ{ï}mË—¿ÓV¨ÐÅŠ_IèÉêÕm¯^ÚªUï³÷Þû®ýý÷µ¡g©z"!ù­D4Îrx’~@æ[>TFR—XÉee%S§• “V¢2[Qø[‰m%J²ÎÃJ0_+‘š­Ä´<ÓÖ¯_ßJØ*+±µ zi%¸¯•˜„ZV‚UZ  k%¿–••ZFeZ e%E"e%ÝJè¾ÄÓ~$=‚>ãòµ’'ÌJŠ+Ü—â©åùCÓN:ÕJjÛ¡C+‘î­$+Ä×JZ,t´!µ®d@¶’ÇËJ4k+Qòõž¤Ë¶¥ÚJDj+a¶¬$ÎÔûYýaîÌуǀÇ@ü0à9§°=GëÖ§J®©Næå—¯QŶ{Œ“c÷î-„Ãè&¢§½d'ü„pVÃÕ[ß•I×#•ßÿ}ÜÞ±cG ÖKváH髉ÒNÒj W¯^b}xµf&—œÑáápÈCƒï™? x ‡F¤zóvb,"’ƒS"Ù@ôgî“üÑ¥Hà>Q ¹†S"—‹tÏ3b8’# snRµÀ!ö«W¯žF¸'‡–r¤Ü&m ‘žg¬÷å—_ÖèõdgFìH~1¢J““Œ£DÄ÷à1à1| xâç't¤,€U#æéÁ»ÿž{ΓŸ‡êH8wË-o¨w„¦Òâ‘×…C0=¯i¤xá@t1”¾š ÂÿÉ'ŸTR©R%%b,èüpú…À ¯ptX´…”$P#[²Ë`LªˆiN Žäë‚ø@\\`:u4z=QÃT.vûöí•uêÔI‰`0å¶«7nÜ8mŸ¤ndU¥mÒqˆÒ7„̃ǀÇ@ò1à "r‰s`o¿½©Zó ø@Åm“&MÒ“pL«Ê•+‡8'ê\qÅÊ‘e”Ì¢À AƒôHZjÄyH±=þ|½ÌˆÀ°\¹’É9ñ ÄÑ"É-!~€‹ãÅ˜Èºì ˜ މrˆ÷ègúôé:~WÖ=<òž8Å ÿ¤ênß¾¾Šûš5«.é»_—ôÎE÷±8N=$¦ÄgAýM°—Hé«Éî,H ýT­ZµÔ,œÔödCc%L7Üpƒ#×.ĉœ6N\Ç}ôCˆÙí¹œ¢¿îÝ»kU"A1tжoºé&MIbK œ›âEtfè»—rÛ•!³qÆ •ÛBŸE:n"=„Cp®áÏüµÇ€Ç@â0P¨Ã%­$ªûOcê 0^D[¥4ªuãÆÇ'²ËÝÚÆè ¯±õ‹…§¯_°ÅŠOüö*áãŒðEŠ7 †£}DxA¢‡!ñÇ+Ñ3 ‰Ù¹”ÛÁ±à[…,ØFðyNΩ gÞi8¾ÿ~¹¤åÆ!÷á НÜ~±ݓf}B¯sJÐëÇ·M›Sõ÷ñÇßš¾}?1½{¬DªE‹š™¸ !.Í3£/Šዲ+ƒH/Q‡•UÄõ x1 ?rº¤à˜ÐŸÅH»1wî¯Bˆ~Óȳg/q½úÍNÊ…Ç*Wî€xtçÛð(ððÄ) ¯¸y󚢇©);æŸÄ´yœ˜'¢DªU«S2¥ÎHÂP |ˆþàô’ §ŸÞW·±Ÿ&š$¡aŽ9æÐà¥?÷ðˆ‚¯sŠ‚˜DÜ&;é¨Q·š§žºT 房—øMÊ2*z"ÆQÛÄç ŸªdÃ]w5–FÖ™e‰yHÂÀÏ>û^Ój8n*Ùcõýy ¤¼Î)ßB ø\ iJík¯­§¾ñR]"¤Ÿ%–hyÏzê3áfÿr;¬³Äû#û-Yo]æÛàõV!4[Åhb£øAE«Ì„‹Xïùç'Èï 5ŒqÄfĈ[2ùÁýñÇz%R|,2"/[¶Z~k4BIÁ‚p••ßAšôòè£Ë$-1–—Düðà1 Õ«W7ß}÷]´Ç¹¾ï‰S®QÿŠD¯~á… âÃ3CuT;ž-;èÜeàÿè f‹Ï<3V8qÂÍìÈ4ADt¸‡ ëD"Óùå=b˜sú¦gŸý\B$MÂgÕÉ÷§Ÿzk–åLE¹X»v“¦s‡X‘ÖâåÎáÊ \|diæè8¯Ã? n7„ŠÂŒŸ£p àpOVŽñOœâÑ8´Gâ:ÄCDž8óÌÊæÖ[gÚmÇ¡ ßDƒM4}ú|²¨ < be7kÖý¡ëXNxŸÁ|ýõ3~|—XªF- qÊ Xp\p[k$¦àJ=®ZµQCkuT†x£#\œ£ûÊ)xâ”SLÎrž8Î÷®V_o¼1MÄC_JàÓrÃïlS»v¥BŠÄN{ĈY¦K—w"¨½÷.aî¿ÿB‰nQ;±ƒˆSëè´ÐgÁiAÀà¶2D†½]+q÷Ÿ4W×…¸±!×D< ‚'NAløóp $’8ySòpl§Ðu©R{šˆ±D=ÑUÌ’|@晴"Eþ©pgØzÚ …hôûï¿—ÄJ’Éœ‰°Ø#bC—Ä;Iu@Y¹òÁú +áž–/_/Dk—ŽkΜe!±!„8¨ÛÚº5ùfùácö×…^¬—fï}̘ï%kïçºXÞtÓY’†â ï+Çw8}úbè,íJ”(¦F*蜦LY¨›…뮫—c½Q‡–”¦V®Üðÿb ®ëw^‘äMY꜖,Yb~úé§ÐøÍ1;T(ƈê˜1cLݺueƒ¶+#5a¯ˆ«ˆ³8Q@ˆ•HH«¬€pWÄ~”|cZŒz´C¼Eœ»s Ć<ÿüósT}ìØ±™$XÂpçñàóxœÇ;t"9§Ü¿‰x`Ê·3š5;A¢zߦ¾RãÆÍ—há©9ú† ™=cnØWP ¼wÔ¨NM¢¤,T{è½Ûnk*¢Õ«ôþÂ…Iª^j.t¶-(è;øàýd~GK\ÈÓ4sïþû¯Ëvj#FŒÐ ÊdSž8q¢þu1³­œÃH 0Ì6lX¨¹Ãˆ‰H(«GyÄ/‘XŽ’`SÃI… †5™hûHC;’hÓÝÊÕQlæ¸Ù› LLÎ3÷#ne$ Rÿu×]éQÌ÷ò#t̃tdGâ!1°`Á {ÛmÃìqÇuµ={Ž” ½ëÒx6©3ôÅ‹WZ13·Ý»¿¿Û D£8¯Q£‡2ä+»cÇÎÝÊ”5²ãÇÏr:?þ¸•@¾¡2™ÞJÌC½îß¿¿•0S’Aºª•<]z¬ÆwÜq‡îE3$sN6b lgÏž­e$Ò‡Ö“XV¢Öë½§žzÊJ°^=çD£×LÏ3Ñ-ZÔ ×¤Ï„ˆi6c.š6mjÅ¥ÂþüóÏ¡¬Ðb]fiß™”e=”Ì×›5«rxgÊEšY£Éš,ÜŽ½æšk¬¤|Ñ&%’¾­]»¶Î‰ìÐ _û“Ì)qª_¿¾ÊJ¶a{ÖYgÙ‹/¾Ø²8J)܉Ο,Å\p¦O!ŸV—.] éV„ÓÐòÄG$o@d{Òªwb„Xjê”ÆkÂH’TðE—D¿$ty¼|ðA}ÎáHBç 4ñåéz͘>ÿüs='õ É3]g!~ªÃŠ4á(åÿ¬¶ƒÎK¢Î1VŽBœ$úGEÍg&Ä[ň † SîÏ wºå–[ "Bá5çzBr AÓÔ0áã£=r£]uÕUÚt•*UÔïˆÄœˆ;…+ÕÔ1§žzª|£Ïk™`&hn¡ e‚& ã– †yñŵ|~üñ:§üÀzûÄÚê†j^©¶mkIN£1’޼·:tjD3é¥Ð4]¯Þ1¢¬¿Ã\vY-Éü¢éÑc¤Ù´)oú‹tC‹1Ù”1 1¦2!• €Ü\8j gš–3˜ ­ ?‹tÇŽ #‹1Y‘!fü.»ì2ÍFeò€±’ëKDV¡t,„ê‚P‰Èзºê0ì¤^½z¦mÛ¶úcv@ßÂ%h¿.‹s´y—ÌEí§,„™3$µ$»3c‡ ˆ¸M›wsv}AH!ÆîW¢D }äRÌD `i|T FÜwœÁÇСCÍŠ+ Ä<˜A:2A{âä¾”vD™ÑE'ë¢ùÄÿÓˆèO<þøùÚXÀf›Ó¹ì²3„‹êª›€† `Aj ,ŸFq‰(E_£Ä……?’×^{MRÊô5ï¾û®`Ѐ‘DçΕ«Ù¾=#N! =¹³ØÑ»„•´É9†W_}u°y%|´Ex)ˆ`v "9µäÃøÂeqŽ6 *1ÆÚ¢Ì8à`È%1èÚµ«!_ÖŒ‘"üaØÕ#“ˆ5/„ i|ú ¸Qæ G‹ ƒtÈíÅzîmàãgT”èÕ“P:õë÷–žjj]£Æ®´èI›ñóüå,QÊ0C$úh¹›skÒ”„Ž¢ùÛ‘ø‘òä“Ow‡b*²‰ŽÈÕãºûî» ¦Õ,òwÝu—š¡#¢BìE‚HDpdZà&°tc¡å> ÆâZ±V¾ëúz͸!2"c…7yòd5ÛnÑ¢…ÝV¨L¤b "ª# %,£FRidY†ƒ#;3bEÇùˆ!ƒŠåhn±æèÑ£3ù%2DgAxì±Ç”û„“Bü1…8CÜqŠA„f™_° wNûpNüD÷dÄèÈNÊÌ™3G‹€[1.Q¨èšÄ%åÒˆæÿî=¹v“yô~NÉÄvŠô…Ùù°aÓ4DR¹r¥…HÕ×X~)2¼3 D{=ô¡ê¤^~ùYlÓOñÈKl=¸åË—K8¥ò!q"° PF ”Sq <ÏYPñ[bñO6„gqÎjË–-Óù}¤àtà˜à¾‚÷s;Úc ?áã‹Ö.\#"<ôp‘M^3A#fô±õ¢aßßÏ5F:fÌ<‰:=Qu"©+:“ZqMÛ‘ëÁ Š~8WD<ï‰>ä¬T¢1_­Z5µ¸ƒ!¶ 'Eø ¢28† Ä̃ 9±.¡†(K²À *(ÃäÜÑÄ]4vwϳǀ'NÙã¨Ð”HFºmIú¬¤øGv IæÔÊÉûQ>‡Gqve9òÏŽØ%PVN%Ä]c! ¿Ï¢Dˆ”ש¨§žºT#›ÔÎÔ®])†UàÇUjtbæ…CPåžAÀHýî!~ð:§øá2í[JFºm„y.»OˆS00ÀoDÌòѰE†$uôݯ_?•éc¾ë|EPX„ûǤwïÞúƒ˜…škˆiÐzÁYXá4Idk¸±nݺi;îÄâEpRœ&‰ŸpÌ1‡ŠÎâ wôÍ7Ëòs(…¶o¢ŸGʧTh’÷Ä)žÊ]a™;$)#D¿³<"ÉàÈhJ ¼â]~!J„ú‡è  Æû i pH„Ë!· ‘–M© Èü‰h…4yrÆAR8‡I2zäø‘à‰'žPñ iºLž\3>úâžË“CÄHƒð1öÖ­[ë+­üRm¼ðÂU’ýõÉgôC~Å÷í1/ðÄ)_ОººtÛ,âp2äµ±`“GEtBÜ "888Dl˜ã ÎŽ BLYM=’ÃÑm¹ÄqèŒhŸ¾!‚N‡…T:u¨jH½îÙ¯äÜ‘´áø :nœøµ\~ùå’_é,ý㢑š® Žt¤€Hç7Ô©SE8Ðö’Yv¸X–ÍÊ—á€7,Ѱ6ó?ƒðo€t&A?¯x~¤Þ "žØ,m±°;‘œ›b/8(¬™àj BœÑ-iº©;pà@ÏAÐð A?Ä‘¡À)˜:¤¥v„ÂÆà¤àf\Êj×_vG85¸:ÚÇ;ßA˜‘Ž99 ìÑ¢EÕ_…{={ö4û{œ¯ÇOŽŠ&pîRVcf —tÅW„ºÀ0¢$N˜™wïÞ]³‡â(é" ¼‰Ó$€ ñcÜØ¯½öZÃóp#ÜbBÄ…pnˆ©êÖ­«Î’Ô§sãȳ5jhO—q4ØG~žï¿)ƒÞ¤„ªiÓ'D÷÷{~Ç÷í1p ø4í Gqjt‘ h¥ÓáäfTø!ƒ#B/ÉdñâÅ*ƒ&}€ƒx§¬víF;b¡‡¥º.¬úðKøè#ŽC=4bU83D~‘æ^á /T"È1Ù0nÜ|á0ß–HuÄI´‰¼¿ÇLö;ðý%þ«N<Ž Lˆâ L@´î#H˜(‹ÈŒ00pBÉ€²eˆ¬ùPÖ:® Â01.ÌÝ£Í+ãÎiMšT“ô w©˜¯yó~æÇÿÌiU_Îc m0œÕ"mÐáê18äýÄÜ¿ƒpoõ4³nÏž#Å:r{z ÞÒc ðÄ)HòE<R—\ršxt‘åM9|øÌTª—Ç@LðÄ)&tù©‡ØËôí{±Dè¸NÂ=ÍKÄÇEì—‘B<õFëGä13 xƒˆœá)íKÅ#nÚ#!Î ˜,©D”èÛ÷SÕµuêÔX¬k¤Úýx<²Å€'NÙ¢ÈðHO Œ;ßôï?ÎlذEâ6‘´ã'{˾ô|•…rÔž8Ê×î']˜0ðÕW %úúx³té*%RmÚœ*&óÅ  ü\Óž8¥áKóCöÈ ˆ0Ñ¿ÿxóõ×KÌe—!Ñ&êJ0ÝrÓ”¯ã1p xâ”pû<R ¿þºÆ¼úê5ž ¸lûöõÍgTL­AúÑz xâTè?€ÂŠ-[¶ úZÒ˜L’8†{Jh©Ú¢—:ER’—(¬(ñóN! xâ”B/ÃÅc ¿00yòóÆÓÌ„ ?I¬Áê¦mÛZž›Ê¯—áûU xâä?Ö­Û,v¿–„‘Ó%kñNå¦Zµ:E‚úî*ãO<’Oœ’e߇Ç@b`öìeføð’!x®Dk/¯"¿óϯéÅ~iø.ÓqÈž8¥ã[ócöH"¶oßiÆŸoÞÿ3iÒÓ Á±nêÜs«'q¾«Â†Oœ Û÷ó-3fŒ&†Œ÷d‹)!>RUÄ€â8I›’‘_+Þ}øö 'î¿ÿ~óÀ„&ïÓ´‡PáO< &MšdyäC’F©Ž‰><Ó0}à×Lèð©€OœRá-ø1x x x x d€'N™Ðá/<<<<R^ç” oÁÁc 0°dÉCÚ§œ‚?ÓÁî2nÇiÓ¦™Ã;ÌT¨P!ÔæìÙ³Í^{íeŽ;î8½·råÊlûþ믿 c®U«V¨XO¾üòKsæ™gš%R+ ÆÜ¹sÍ!‡¢xŠeNcÇŽ5;wîÌT¥zõêæˆ#ŽÈt/Þ¹o,ãðœS,Øòe= FŒaî¾ûnóÕW_™‰'šæÍ››îÝ»Ç}†ï¼óŽéÚµk¨]k­¹à‚ ÌüùóͧŸ~jªT©bn¸áÓ´iS §ôN¨\øÉ”)SÌwÞ~;¦ë«®ºÊ¬^½:¦:¹-üòË/›F­ÎÝu×éóéÓ§›ß~û-jÙhZµje>øàóÅ_„~üñGÄâÙ'b¥(7s;Þ(ÍE¾-І!V¬õ²œÕã?n¯¼òÊP±ð³p€^KrJ+Š=üðí½'U¶}ûöö´ÓN³²ÚÁƒÛªU«Ú#<Ò2DËÁ±µk×¶åÊ•³·Þz«ý÷ß­pIvï½÷¶›6mÒ2“'O¶¥K—¶[·nµÂÅØ>úHï `+V¬¨ç÷ÜsB¥çB´ìÂ… -ýS¨S§Ž½é¦›t|×_½½ñÆ­p}öꫯ¶ÿý÷Ÿ^wèÐAÇÆx,X õ„£°¿ÿþ»]¿~½½ä’K¬p+Vˆ²®Ì.^¼Ø6jÔȶlÙRëõîÝÛž}öÙV¸>Û¿­i~o½õ–½öÚk­pž:žW^yÅþðöL™2ö ƒÒùEÂçñÇoK•*eÅ„ÚÊ&ÁŠù¿Ý¾}»e>x å¹l´_æ{ûí·ÛC=ÔžuÖYvݺuz¼ QÓs÷góæÍú>ùä+\•=ï¼ól¿~ý2'Ò<˜³fÍtþàü3gδõë×·eË–Õwʽ܎—º‘àÝwßµ­[·ÎôÈsN‘i¶¿ë1P(0°lÙ2q®}ß :ÔàgÒ¤I÷wÜa:vìh¾ûî;#ÄÄÀµÈ‚n„én_N#ÄG¢GŒ–PGoªÙ:áÄd14£F‡ÝITösÒI'©HOˆ¶ýöÛo! *Z“Tbù5ÓûŒ£^½zz.DOÒy”ÓsÄx²ë¹û#ÄÊlٲŌ9RÇþÏ?ÿDv\ÿòË/fÑ¢EzD¤H›Ï<󌫪Ǘ^zÉáTnƒ¶o»í6³mÛ6½†ƒÃßnî§oß¾Z/Òü„Pè|Ÿþysï½÷šÇ{ÌsÌ1í½½S§‘ðI›ˆàºté"¹¶–Ú?ž”&_KŒÃ ’Öä2Ó­[7íWˆ«¢£8]³frœnBwÝu—öEüd…×~;uê$)Rú8)!Þ™ÆiÌÿ¸‹.ºH¿‰×_Ýüù矦W¯^Fˆ¾™1c†~ Œ%/ãuãÎîè‰SvòÏ= 0XÄ! ŒóÏ?ß 4HgûÙgŸá@Ì“O>iÐõ Î=÷\Á¡›BwóÍ7+ݵ.žˆ—Xì¹.ÈL:Uë ‡¦}Ð&âD®ý÷ß_Û§oˆ`=ô>‹¡p zþàƒFÔÅÈÎÞW¤ú_æ±Ç«‹1Y¨!p,ÒÁ |øá‡F¸%hG}thœûŽËœsÎ9ª£ˆ <Ä!ÚüZ´h¡ca^ˆçŠ-ªx@¯¶çž{šHødîÅ‹ÏDx§paJ´±B„Áÿ{ì¡„œ w—IȼkÖ¬úÑ7bRáÜT !FÇÆ{a<;vìˆ:£Ž:J ¸§/æR©R%óÄO(fÓáu›ñººÙ½ADvòÏ= 0DleØ!7»}ˆ \ ‹”g0ÁbùñÇk]8‹‡~X`¸8~§žzª.¿üróÐCie…\c€“ÑŽDž(åºÊöÈø€"EŠƒíV^D”zODefÕªU™ž³èV«VÍüý÷ßf¿ýö3"2Óç"¢4ÅŠÓ6÷Ùg%Ì  Hó[±b…ÄÜGËPü!+|Ëqþ믿†pÃ5„‚DëbÉ¢dÉ’JÔ8!Ú<‚}pîæ"âMs ':NÝ?þøc¨¹ÜŒ7T9›Ï9eƒ ÿØc °aQŽèL̰aÔSBq¾àÂIüïÿÓ9pVìØá\7n¬"1ÄOX×,žˆçàp×Ä} àp… Ó÷ßo–/_N)оJÏcùƒ˜À`€±ã8&ÛÊ•+‡8§`™ðs¸Šhó /ë®!fYáÓ>WŽ ñ'xpipwX:f´üAÌD¨ý"2VèýQ.Öy°QáÙH ®u›ñººÙ=甆üsЏŸH€( Žéä“OÖE­aÆFŒ'TÜåêP. Nƒ#ºÎËÁìØƒ ú—víÚe"Nè„9qž(ÝUŒÑ`!D„ ‘àú׋(\D•è 6lØ`Æ*ÍslÆ‚"ʲ×f¤ù!¦ ‚+‹® BÜ Aƒˆø„#Õõ¹úXß1'â<'fuÏ9Ҿ냣ã ]™ž={šgŸ}Öˆ¡†C¾øâ‹ªûsã‰4ð´/† •¾†šýÃ…¢“‚kboxûY]ûÀ¯YaÇ?óHS °¸#â˜[«6ݵñp‰åÙnM±¸Šå]&±»s8&8Dnùìô1N€Óó`‘›X$fâÚ"• Þ‹e~è©Ð÷Ð$|ÒœN¸ßbGðêDyÁþórO,ó€3ëJÝ€Dê?¯ãu±õ8:ðœ“Ä?z x dÂ@P‰0Qey8 ä*Íß'ó:8‡HýB@c…X懂ƒàX>i+”/_>Òí<ß Ž'–y8]c´$b¼ž8Eö¿ï1à1¶`\ˆ£M³htfp(ýƒ9‘Y´:ÜGöÍ7ßhù¬Êùg¹Ç@þðܹ¯¯é1à1à1-œ™vVûôé£D;Àø1 fÚøLELË1“GEè ‰Ã€çœ‡[߲ǀÇ@Šbshò]Á9­á0Â0`€y`Ì¥"„gÖµkתé<Æ8 ~ ÀA+D,1xá… œFß~û­ÁÔ3zL¾=äž8åW¾¤Ç€Ç@ÁÀœ9sÔ+H˜˜–‰˜±ãØJ´Ô¼yóÔ°„È 8,cAˆÈÐùû`OŒÀ™»H ®Œ?æ ž8å O¾”Ç€Ç@€DNW"DØ%ˆðI„SB4@¨x6kÖ,K‡S2€ƒOÐIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/inherit_graph_2.png000644 000765 000024 00000003434 14042362131 023163 0ustar00tangentstaff000000 000000 ‰PNG  IHDRp$Qÿ¾ªsRGB®ÎéÖIDAThíYi¨N]~îuÉ™g™3üB(2ϳ’”)c ¡ ™BD$?Éì~˜BÆ!™2eΘyÞßzÖ×Ù÷žsî=×÷ú¾÷|Uç}÷^{í½×Yk¯iŸ4#€"+ôÈr3®ˆñƒ+0V`Ä%qö32óæÌ,]º43:ƌƒ-Z$pâq¡>ÄöíÛˆâÎ/;wâÁƒF<èPlÛ¶ÍiÆÿ) üùóûrá±@_ª™²ˆ˜²ª ÇX¬ÀprJYªX)«špŒ&1á¦ÿMÕ§O|øðÁN)P ºt邞={¢P¡Bÿ'?þÔýš7oŽ)S¦$luîÜ9Ìš5 S§NE«V­ðæÍ>|·nÝBÅŠÑ£Gçì`åʕؿ¿/ÙêÕ«qäÈ\¾|+V¬Àˆ#ЦMôë×Ï—>YȤXàÁƒñöí[Ô©SGŸ|ùò5K‡’Åg¶ëäÊ• éééX²d ¨L7lذGEýúõñôéS4iÒÇÇÖ­[1hÐ 4lØ?~üpOñm_½z§OŸF¹råÝèëׯ±nÝ:›¼8ƒ\›BevâÄ uµt·NÊÏÒ‚‡ÅzÉnnŽÿÃòœã… ™óÒß)#Š)â)#ÜëŠE™%J‰†é°dkšÚ‹uh9 ¼Q¬ÂRC\•‘øiÄ É:Ô_:~éÒ%#BÑÔŸóHçŒÙ¤!®Tç;%Š3VªT);—óG2M%9r¤òæÐKVkÄZµË2B²kgÈó?iÒ$Ó¨Q#ÅóÝX²Âò¬Ä?Ae„§àû와vê Ö}IBÌ“'OhÜÒŸÞ[ÆZï™úõ%3Wi¬y3#ã~t$à±Àè°sJ Ä Œø9ˆ+0âˆ8ûõ¦« &¶ÕºIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1ExceptionOnSchemaMismatchOption__coll__graph.png000644 000765 000024 00000016444 14042362131 033740 0ustar00tangentstaff000000 000000 ‰PNG  IHDR¢“ ÔÂsRGB®ÎéÞIDATxí ¼MUÇÿÈ{ÜL éáÝ ¦‡G%*½©4$5FŒ†ÞOy”š¢ÊLOdŒÆ«P’„ä‘"ïä!y“Ò½ÜìYß?kϹ§s¯{Î>×=çÞõÿ|Î=û¬½^û¿~ëÿXkÝý/àG޹Ëus·}׺ãÀ18 :$$b\'NI/^\RSS“¡« ×ÇË/¿\fÍš•pý ïPR1==]>,… ï¿ûV¯^-·ÜrK9ç–S͉3ùº'ˆùzøçág,òuOò —,Y"~ø¡~f̘!?ýôSÜöÛo¿•éÓ§g¨÷àÁƒÚæÏ?ÿ¬é?þø£ðÉŠÈK_=š!Û²eËdÇŽÒòË<ħŸ~Z  sçΕ©S§JíÚµåƒ>ˆû86kÖLÖ®]ë×;zôhéÚµ«®-Z^jûöíõ:³ÉÀ @Ó¦M±°`ÁÙ²e‹_w~ºÈ3@dÐÂsÏ='ýû÷—víÚÉСC :u’Š+ÊÅ_,sæÌÑñmÒ¤‰<þøãrà 7ÈÞ½{¥U«Vò›ßüF®¿þzùî»ï„ϧžzJ*Uª$uëÖ@R¦L½?fÌ#o¿ý¶´mÛV>ýôSÑâÅ‹åwÞ‘]»vɸqãdݺu : Œ;Vzôèá— ¿Ø¸q£ìÛ·O¨ÿÎ;ïÔvÏ8ã yã74ë¤uëÖR¾|yí÷îݻëHÚßy ˆ¨çñãÇËÀeذarÍ5רTüòË/…{ nÏž=u° éÕ«— >\~õ«_Éš5klï½÷žæPHÕ–-[êU èfÏž-mÚ´QI8sæLMß°aƒ¬X±B6l(%K–”úõëkz… ¤fÍšzéϦM›ˆ€q„ 2hÐ éÞ½»ôë×O³2DŽ9"ü±ÖûÐCEª&)Ó’b1»œEÚ1˜E‹•>}ú(x({úé§Ë[o½¥ »VŠ(P@^xá9ÿüóU’õîÝ[ ƒ‹üÛßþ¦ÒUŸ’’¢RsóæÍrã7JÇŽeåÊ•òÙgŸÉe—]¦Ò–vXçÔ;wVU®\™dyæ™gô»Q£FÂçD6$™i§^½zR½zuUý¤Mœ8QjÕª¥ÏqÎ9çfA^¡<%~øa™-9|ø\)W.Ť­­¿«U+gŽŽ•Ž¡Ö|]$œGŒ÷W­ZÖœ’>öÿ.3g®–³Ï.cötkÄ»™|UŸ³óÕp'îÃ: ›‚ ¨­°š|_Ü1 Ø]Iüÿú ø'¡¸âI`²kâÄp@<1²ÌÁêÙQ08 㟪åÐë˷ÅóíÐ'Öƒ; &ÖxäÛÞ8 æÛ¡O¬w@L¬ñÈ·½q@Ì·CŸXî€p<ÜòM@/î€쪸囀L4ŃóÐÕ8 Ɖ®Šàp@ ÈClD>Ž‚qÀ1ÿt‹Ï¾ ÈDSÜ18] qà€b@&ºƒ±x¼¸b@>ºƒ±è€ºZâÃ'òÑí¬dàñâˆùèvV2Ð1> tµÄ‡ õ¦‡&VžèŸÇËùZŠ­döšÓÌ›c“ëåK6°dÎs([-$Ö›âW\¡A³Õ}—)& =Á€è´cIW(îpÎJÜYê*Œ…ˆ±pÍ•‰;’"àOèSÿý÷2wî\?‰@Ú5kÖôÇë‚8Ë„Ô½à‚ ü*7mÚ$Û·o—K.¹DÓöîÝ+Ä\&Òý‰ˆxÎ'´mýúõ¥V­Z'*¢÷ ß»dÉiܸq¶ò'k¦¤“ˆ„ˆò€‘Èð]»v•&MšèK2ã9_}õ•üæå›–ˆ?zôhùïÿ+uëÖ‚’<¼G6Ë/¾‰PߢE ¹ÿþûeóæÍ *~wîÜùyCêÕ«'DµgâM›6-ôVÞ¼&px¢ÐÌ™3=ã5gÙÅ‹{Æëó󤥥y&°··téRoË–-^Ó¦M½²eËz&½·{÷nÏ÷š5kæµjÕÊëÙ³§·hÑ"ÏHÏ÷xà­gÿþýÞ­·Þê•+WNóîÚµË;|ø°wúé§{Ÿ|ò‰æ1Ç=ëÙ[¸p¡gé=öØc~º D®í˜èòzݺuóLÄzïõ×_÷ŒTõ  5?hï׿þµ7oÞ<ïî»ïö:vìèy晞Ÿg&šwï½÷7CŸÁ€Þ»ù曵쀼3Î8ëP¡‚÷ꫯjš™^‡¼ /¼Ð«X±¢7tèPMÏêuÀ—¢µI'D£?~¼y_õ;rß}÷É©§ž*uêÔ‘þýû›× Ÿ#k×®•ßþö·2xð`1€’É“'‹<1&Ï>û¬´k×N  dΜ9‚„2dˆY<¢ËF衇4Ê=’wìØ±*¦L™¢AÄQ«HÀ^½ziúĉ5Ý ®¶aÍ‚Ó&jõÊ+¯ÔPiZÀü¡¿çŸ¾|ùå—æåïëU¢º5j$/¿ü²ôíÛW_?bÄó*äTA:#ÍD’ÿûßòÊ+¯HŸ>}ÔtØ·oŸL˜0A $Ý»w—~ýúÙf’ê;)ˆÝdf¾ 6LRRRÄH¸¿ÿýï:èFr(ŒDÔÁ0ÒGþñ`©R¥Š–ÁãS½zuLåË——Y³f)©jÛ¶­Œ7NU¤‘nú›ô%Jh{FêéD8p  Qì 64‘©ÒLšòÇH]?âê_ÿúWíƒ>(¾T©RZý¶4}útêµ×^+-[¶Ôº?üðC½}ã7 ªœ¶V°E’ê;霸kÔªJ¹pNc/b7¶iÓFÆÞ7*Öw(+ŽàÃæCÚ0x¿ÿýïýEÞGyD‹6hÐ@Ã| yþùç5h©Í›7W -[¶LnÛ ÿø£FʼgÏY½zµïdáð@HoîE"£J¥L™2þ-lW@“A¿ 'lÔ­^'ÛŸ¤”ˆ™1ù£>RÕP½‘åꫯ>ï¿ÿ¾JÏÙ³g‹±!U̪U«ª„µmüùÏV©gl09묳4ù_ÿú—~Oš4)·nÝ*«V­Ò{¨ÝmÛ¶©”Ú°aƒ¯âéæÁyç'BCô©uëÖzÍÌKHBò¡¢igÁ‚Ú{?é¿È`õ²ã¬|þùçjØGê·‘vj°;Í3êK4¯Zµj~ö_|Ñ36šg@à;Í3ë-_¾\¯ôòŒtò á,˜Ðž±Íü: XÔ™ Ý~ =£þ}ǨK綾^Ò2ï¾û®:'8QÔS‚c]uÕUž¸ögiÅŠšnlQïòË/÷ŒäôjÔ¨¡i:uòŒí«N“QçšfÌÏØÉzm–›<³<¤×YýIDg©‘0” ž¨³xÊ ôÝwßeðVmY¼b³”búß_ýµ‡wœd–b<ãDy´JqÆŒ L£jý[FzôÛ‹o¿ýöuØ{ÙýND &¥˜•Â~´jìÛ4¾d ýé_£–sŠ ,¨ŽQfõãH…öžµýBÓ±wó"å9 &Û á•ã…çwr@Ìe°¦èÈý_³Ã@‚pÀÐ8))ÍzÞ>³Û³2`M'·x‚ŒM¬ÚlÏÏïäŽH€ÖøŸæJ•:Ë™gž&óç¯P“+š§´OöpΞ½NJ–,*;w0¡q÷žìæóT{ˆ†óXñ4­aÜ80<+Ýÿ¬ÄÊ<ˆÏ˜±Ú÷„ë7ß\kU®œá€“ˆ1Â`ÆŒUæ¨ØÿOf8pÈ Øcm®˜bŒ9r¾9˜ê—>r$ÝlXäÿvÑqÀ1:~iîƒSÍé— J9rÔœ]\œ!ÍýÈ>³Ï+?ç”)+ÌYÄÿ«e{#-ígY¼x£ýé¾£à€b̲YGŒ˜gÔò1oÙ¦ñýÓOi柫†&¹ëlrÀ1›Œ²Ù:,K—nVG¥H‘Sô§…kÞ;ujrí°ØçÊíï„ÚâËmfd·ýÔÔ#æXÿÏš½wïIº³Ò¶í±ÿu.^¼po:»uæó|‰µÅ—,ƒQ¬Xaáa+r’R,YºŸýtª9à°¸7ÆdàñâˆùèÞˆña «%>p1>|tµä€bPš%‹/ MqÄ€<äplå ø´9WÜ1çxëjŽ‚ˆQ0ËeÍ98 æo]ÍQpÀ1 f¹¬9ÇĜ㭫9 8 FÁ¬HY]¼æH\‰>Í1zže(á–o2°#æˆ1³ÎŒ'rÓ©æ€ <^Ü1 jÈ@Äø0ÐÕ8‰N5dàñâˆùèTs@: Ƈ®–øpÀIÄøðÑÕˆAèÆäà±âˆÙèlÄ€ <^Ü1>|tµå@h´"b›úÜ' *TÂ+X°˜ãY<c6ÔÛqü­ÍgÅQî¸ãùË_þß®¼ã@¦ B¬¢Ô®]ÛÏãT³Ï w‘›p@ÌMî»¶}8 ú¬p¹É 6bv:òã? A±-™øÁæµlgÚŸqû&7‘8Ë—/ï×¹nÝ:óæ­b~{ûöíÓó~†;vì01P¾Ép§H‘"bb5gH‹÷¢ÜÓß?üáQWM$ûeË–‰ å«<¨S§N†èõ‘*$Pã²iÓ&¹à‚ ¤bÅŠ‘²iš ׫õ–)S&Ó<'ûFÔ‘èé½zõÒ‡^¹r¥¼þúëBÄø£GƵïDk·‘â©F÷èÑC6nܨÑéÛ´i#&P·<öØc~øH BýàÁƒå‹/¾ð?¡)R™ iÿüç?Mt¯LH´Cb‚œG]ÕÎ;åÞ{ï•·ß~Û¼•ö™7ožÜÿýòñÇgZ ïر£|úé§bbTË /¼ C‡Í4ÿ˜1c„‰žHµD¤ó%K–”;ï¼SŸÃ¸–fÍš‰‰ô.&¼˜Hï²gϹøâ‹åÑGUæ,Z´H6lØ wÝu—˜ÀÙæõ¾£%55U:tè ×^{­Îb˜Ç½Æ‹‰È®é>ø æC ÊØz®lÿŠ+®PàV¯^]LäwéÒ¥‹<üðÃÚÇsÏ=Wî¹ç½¶Ö¯_/xo´k‚zËOû¬‰"µSëKKK“›nºIûLëeÂ$øh™Œ/¾ø¢<ðÀr÷Ýwë3cÒdúÔ³gO$~þùç…Àæsç΂Kþç?ÿÑg @¦¯ÑRL@DL™2ż/zªJÇ×^{Mgd6¡V°ßø@Ì"¤ å‰Ôx·oß.ƒ R)‡ÚDê¡Ò°9­Ú¸úê«UíR'€ã7ð©ûñÇW°·mÛVÓ¯»î:mеP ÊR¥JI•*Uüµª¨>¤-ª ¦2@W^y¥‚)†IYÿà¿ì²ËÌ‹ÜÒ>!aè €|êlÕª•Ô¨QCù0gνW®\9•ü¬§aÓ4>HZÒ|êýÓŸþ¤|DrRì˜.h+¤¼*¼ç™‘úôbÒÐK.¹D¥óòåËu ¶mÛ¦à#¿ò2qhÊ¡e˜8)))òꫯê80qÑh®h)&ÕŒ8F*…†½V¡B•V¡Æ2ù!˜H9$äûï¿/#GŽTÉ“žž®³I £TÀ1b„ª:$Œ]Ĩ7$ä3Ï<£ÒG dòÆ¡2©P¡BÚ'˜kìßâÅ‹ûÙê "õu à,‘Ð…f Á|TPh[´Ï=ø‡¹ª¶dA‚Ôƒl9[)‡„…˜+L*€³ƒ 8¡%JømÛñ±uhø &#Z©OŸ T/À %fÏõ×_¯Z…±…b’ˆ‘bvðà¨\Ô&¶Œ %Ä<â»uëÖ:‹8©‚:Âcàñt!ê@2]sÍ5~UÌ~ìRlNj ›Œ‡0 R Øõ4lØPLÇ×YO@†TêÔ©“y1{áLû‡ÝDÝx¡HtìSˆv,!I0OPsL4L lµÌŽô·ö%N†ç4‘é5lØ0å9÷)‘Ÿ¶¬yƒMl¯5CÈ´’ Ó }ެ.™$ óŒáãž¡@&?b’ˆVí„Ö 3 ƒGGÎ;ï<l¬2Ðæ'êùÖ[oÕoÔ @µP;ÒìׯŸ¯–IÇÎÂ>yã74µ€ÆÒŒìÖ­›`GA˜|,Y;“:Ê€P#é?ŽC ±|©“&MRÐs•Žšç9#Žã‘Ö¾}{u2˜L.ÀÁ¤ 'ò"Õ˜ÐH5L &+ªŸ~…ùùà¼`'ãœvÚi «¾™ôLdìq$õcŽ„u0.ðš¾2 YvBdF¶mž;›þ|´ã©¿™ÕEz†ð€ï7È^3 fÐ)õNØ!¨«P1ÏìC¢2’¹I  ±*¾„÷“ÐìмHÀPµMyò¢56ƒx""?|"hÝY•C=cb‡‡·Ád åwfõÐwÔ3"»Ä¤ebáUÃ'¤¢5"ÕÁDåLð8Å?¼…µch I·ö ×–ë•*U²?sõ`…Sfý‹ôŒá ¤.êÄË.‘é aFdÆÃ쀶è{¤þgÕ „àŸh)úѶù­n—ph‚YˆÍvöÙgk‹ØIÑ¤ÌæœPB!IðÎà õŠ-…C€´ÂlÉ®”[²d‰ª]@–—)wu`ŒœÅãÆ\³f_ö¶ö*þ믿öïÅãç‹å)K8'|,±L‚ÝN¬âU²SPé;ö(&PfÄ:ê„ ô6Îj:¯SRJD5Ç"7†:ĵU}H –- ”PÍ,ϰT„$¿ùæ›Õ³E 2QXªÁƒÅ#%Žmà`=vCx–H»3¡m%ËuÒ‘åމ]ž,L Èæ¥nêaÝ”û€+”pª˜P¨‡Š Ƭ'êbBYßäôß’m×þN¦ï¤"{½§%\ý1¨n²ÙÄg•z"Êj‡ @HR¤"`ÀùÈìÈÀ°&ës?{BÅ#!¹t·ʶEÖ‘ØöÀÂ'Ÿ|¢¿¹—W()»ªÄA²°c*ÕìàNNÓ°w h°ï²"êÍl‡ˆ“*ìqc¢Ê±Í8n…jçR.”ì‚2¶%ûëØœv§„ãZ¨c€‡ÄÄ«Æ^„˜l rB)ôPmË–-ýT=W$²íFº—ÈiqßYI´‡eÕ)„ÚŒ´PY#í!¥¨ÏÖ“ÝÝ Ú@âáùbã!)!€ˆ‡Ì_.«â¹‡' Hm^Ò v[0-"M¼c9ÿïIÙYI46`Ʋ°i‡(|ð³»[O²Ú±ØÜ–¡k”6ok‡†¦å…뤶“}8T€tpdŽ˜9&äP»¡^sîõ$÷[v@Ìý1p=€fMÊ'³,ÀIV÷q<Èq ˜]/wæbm¯ÙMMÇ\âÀ:§šs‰ó®ÙŒp@ÌÈ÷+—8à€˜KŒwÍfäÀÿ©oHÚà ýèIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1Option-members.html000644 000765 000024 00000012224 14042362131 026065 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Member List
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2::Option Member List

    This is the complete list of members for ParseV2::Option, including all inherited members.

    Line()ParseV2::Lineinlineprotected
    Option(const std::string &value)ParseV2::Optioninlineprotected
    parse(const StringList &tl, bool subdirective, const File &file)ParseV2::Optionstatic
    parse_bool(const std::string &value)ParseV2::Optionprotectedstatic
    print(std::ostream &os) const =0ParseV2::Linepure virtual
    value() constParseV2::Optioninlineprotected
    ~Line()ParseV2::Lineinlinevirtual
    ~Option()ParseV2::Optioninlinevirtual
    mysql++-3.3.0/doc/html/refman/ssx/functions_func.html000644 000765 000024 00000022135 14042362131 023321 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Class Members - Functions
    MySQL++ SSQLS v2 Translator  3.3.0
     

    - a -

    - b -

    - c -

    - e -

    - f -

    - h -

    - i -

    - l -

    - n -

    - o -

    - p -

    - r -

    - t -

    - v -

    - ~ -

    mysql++-3.3.0/doc/html/refman/ssx/graph_legend.png000644 000765 000024 00000042636 14042362131 022545 0ustar00tangentstaff000000 000000 ‰PNG  IHDRþšH}*ÝsRGB®Îé@IDATxí]xTE×>¤¡÷Þ‹ô.‚QPi*Uª~ØåÃOETDT@À‘® é=té%ô’RïÞ wÙlv“Ífûžá {ïÜ©ïÜ;gæ´É¢q ‚€ ‚€ à „úùB/¥‚€ ‚€ Œ€~yA@B Àb_oß&š<Ùâc¯|0t(Q¡B^Ù5é” K–,¡Ã‡û4U«V¥nݺù4–wü½z-X@äÇI|áoÙ2¢_ôé—A:/Þ‹ÀñãÇ©k×®<ûùô_÷îÝéàÁƒÞ;ÐVôÌòŽ?_>¢±c‰°ð…P½zòBÇú*}ŸD R¥J<­ó¼îÃaéÒ¥>Üûä®[Þñû<4€ ‚€ à}á÷¾1• ‚€ °Ìê·˜%ùAxx89r$UªråÊQåÊ•SÅ»2âÖ­[tâÄ zâ‰'\Ù ©[·F`Æ ôàÁƒTmlÛ¶­Ò HõÀ†ÔѸqc J37äð—/_N•¦~ýúT°`ÁTña=6þ«W¯ÒæÍ›UM_|ñ 8rçÎMY²dq áoРíܹ“üýýÓííÑ£Giüøñô矦›V‚€ à«`N½wïmß¾îܹC:tPP´nÝÚn„¿wïÞjî.^¼xš0ÿûï¿tàÀºxñ"­X±‚¬Òcs)„?MèÒÏ}fCÏžš6w®ÙG¦‘Ú¹sçTô… 4~Y4ÖÕÆ§ 6L[³fzöÇhcÆŒÑNŸ>­=óÌ3ÚóÏ?¯*THãUÏ™‹ µhÑB+P €Ö£G->>^C\ûöíU:ä¹~ýº6dÈxTe$%%i|ðV¢D ­^½zÚŽ;TYü²hO=õ”V¶lY­sçÎ*­z`é¿%K4­KKO%^F€ ©ÆÊ}VõáÓO?Õúöí«ÒZšc›4i¢æn&àÚ€´Aƒ©yºOŸ>òüøãy­fÍšZ™2e´ßÿ]•‡¹ó³qˆ‹‹ÓæÏŸ¯ñ&Ò8Z]oÛ¶MåOõ€#xéñÔÜ#‹qh/(,>÷Ëì.ã礕+WR±bŨÿþjµ†$BDD]ºt‰bcciõêÕÄ™ a9gκrå }÷ÝwTµëÁâaO¡¡¡ôÕW_o‚)JÑ¢Eiúôéôù矫Õ'òíÝ»—/^¬V„/¼ðá_:úä“O¨pá»U”%AA ãXšcOžîÏœ9Cà cžÿõ×_éË/¿¤÷Þ{/U嘛ÿ÷¿ÿQéÒ¥éûï¿§5j¤J“V¬^yåª[·.Íž=[Ñ–´Ò˳dìNøQlÞ¼yiâĉÄ+;‹8c ÁòáU#U¬X‘ 3V<¯Õ¢/Øù`Ñ·jÕŠ¦L™¢ˆ<^”œ9s*‘êáU$•,Y’xUH¹rå"ÈóÏŸ?OëÖ­#æ.¨âÕW_µØy ‚€ `Ks,r€ýŽys=æn8ÇŽ—.›Çæ÷/², ˜#¬*Â&9 T¥J·jÕ*%^`®®å†˜y2zôhµÈ`î2-Z´H- ˜[a&¥D#àŸ?~³²÷Ûðø0„„„è— vé Ø Þ îÐñþøã•"^0Ó€äüx‘ð÷ÑGQŽ9Ôj“Å*¹^¦i^¹A@Hss,ægÈÛà(|¿˜„v옊Â.ÜR€R õT–)‘ëЄ hÔ¨Q´k×.bù‹¡ÖPÊ'¬c@o¿ý6Á#8¨Z¨`9!=DA@2ŽüLçXð§WÚ¦M›Ô¦.,,LmÈÀ’G‡bß—_~™Þ|óMzì±Ç”¨W §W®þüìÙ³jsXªT)%Ö6mš¢úsù5€C?ˆ¸úõëGóæÍSrz ´¥€ Ô÷PÀ'ú+ŸC‡•;ÖçúmÜáC‡ßúäµe­~~v¡ëìPuvEÇktþõGŽœÖ†!C Iè´ê¤"A@œ‰\¤>|Ø™U¦¨ë?å&P,}rò£ñμϘŠûpµLø]€JLL»p|OÙe=ú)[» R¥ ‚€ÝHŒ&ZÌVYZÑ‹·ˆsÛ½ )Ð*BÝJÆ¿zõÊš5@ý­\)쫆P ‚€ à \dWºþAüǺpñ—âÊ!s+Â?oÞvŠŽŽeg?qì`a›+q‘ºA@ì‰ÀÉéDñQD ¼ó?ùƒ=K–²2ˆ€Ûþ»wïSXØyCó»Ì:DîåBAÀCˆc±›;5þst\}t/WNEÀmÿäƒ 5'.…†îs*R™ ‚€¸°˜ð |T°Ÿ?Ñù…îåÊ©<¢´N­6uesælW,~ý ýæÎÝ¡ßʯ ‚€§"pŠYû`ñë!á>Ñ©úü:· üW®D°»€k©º~ñâm>‰YDA@<˜‹DÉG³§è@ÔY¢hþ“àtÜ‚ð/[¶—üüå«£€s/Þ£ßʯ ‚€§!pnQ ¤æìOëW´×-ìø‹Kû0‡Ë—'yØÒ A@|©7u)0x™wxœ‰€sŽåM¯GãÇw¥={ΨdgÏÞP|Ê•+¤îëÖ-M‰‰IäïoaŘ^áò\AÀu4˜Btã¡yv$»€‡Ÿ\•“ÛS ß'0GÀ²÷x×5Ü{kv‹¿1¼“'ÿEÄÓÛo·7Ž–kA@OGàè'D‰ˆjò¯W!à^žû\…‚Ô+‚€ ø Â?÷•‘–~ ‚€ àrXÞoIÑÏåmó¸áÏ’% áO‚ ‚€·!ÀŠ|ñKp)nGø5¶áßA@A@°?¢JiL¥DA@sTȱ²±33ã„ð;m©K_F ¨ /÷Þmúîv¬~·AF"‚€ àÖ¯_Oqqq.©Û*u;ÂÅ>œÌ'AAÀ7øã?ØŸ Ûû[ 4`Çn‰žJtz¸……b_R’h}¦7pò\o@`Ó¦M4dÈ]9tèÅÇÇÓèÑ£iøðáT®\9zì±Çhß¾}4tèP £Ž;òœ9s†FE§OŸ6ÄÉ…eÜŽð[nª<A@𰛟5kÕ®]›úõëG•+?táû°sGŽQ„ÿÒ¥K´k×.Z·nÕ«W¦OŸNŸþ¹â Ï™3ÇE ~ýúÔ©S'•ÞðP.R! „?$!‚€ àNÍ ‡·§Ò¥KÓo¿ýFŸ~ú):uŠFŒa±ºÁƒ«×®]ù˜öpÊ™3§òõ’7o^Cž\¹rÑ·ß~«ž·oß^q ªU«F¡¡¡†4rñ!ü°+A@G"{–ÿµ_ïîÝ»SëÖ­ÓÕé Q- H×Ç ÒvéÒ…Pö¹sçhûöíŽìÇ–ív„_<÷yì»$ A ]Âõ§ï¿ÿž~ùåµó÷Ýwéüùóéæ3Mã°cÇêÕ«U©RE•·sçNúâ‹/Œ“ÈõCÜŽð‹ç>y7A@ð^°¹{æ™gšûØ‘ƒ€wèÐÁªëîÜ!ïK_G¥>}údügÏžUº5jÔÐ˯ r,¯ r+‚€ à ,Ë›@`å[ ‚º¦}0×Ö–ã£éB­GÚG’n ‚€ 8Œ}´éu¢{üH°·#ü"ã·rä$™ ž†€øêw‹s;Â/2~·x/¤‚€ ØñÕoLm(Ñí”ûlèƒdA@+Âo%P’LA@ð„ð{Ã(JA@+p;Â/Ê}VŽœ$A@l@Àí¿(÷Ù0Š’EO@€}õÓ‰ï=¡¥^ÝF·Óê÷j´¥s‚€ ø2쫟ø2nÑw·Ûñ»*ÒA@AÀKp;Â/2~/}Ó¤[‚€ PÆ\‰€Û~‘ñ»òuºA@p$Ž? ®DÀí¿+ÁºA@oGÀí”ûÀêÇ)KA@¼ ñÕïêv„¬þ¤¤$·G!‚€ `GÄW¿Á´½(·ÛZ‹rŸíƒ)9A@ôp;Ÿ^ƒå¹ ‚€ ØŽ€Û~Ñê·}0%§ ‚€ Y˜Ðl+pùßÿþ7½<}~öl%&jT¡B CëI¯ð>ø€3߆•+WÒîݻӫNž§@½zõ¨S§Ni¤°þÑĉéÞ½{Ögð”Ù³g§·ß~Û.=½rå ÅÆÆÚ¥,_/$kÖ¬T¬X±Lð}ûvZ³fM¦ËñÆZµjEÍš5ËtצNJ×®]Ët9Ž( þü4|øpã¢CS(÷}øá‡ôùçŸ~]Ê—Ïꪪ õ~õÕWt÷î]š‘JäÍ›7'£½¯Mý^²d :Ômç|×yóæ¥W^yÅп„ŠucÇŽu)á7´Ì…ø@®^½j—`µL%ØŽÀ?þh{f“œ¯¿þºŒ‡ &·oß6‰±ý¶@TºtiÛ œ¢££ ×™¹Gsþ”(‚ðÿïÿKiãÝ /¼à¶óÊ©S§RõÊídü©Z(‚€ ‚€ `7„ðÛ J)HA@pR°ú­i.£¶mÛfH y^•*U ÷¦S!TªT)Å£C‡dWñññIÕªUKñ7P–Ø·oŸ!¾aÆÖ¹7…Œâ銾c¼1>PÚ’ñHèXzom#_xß¡;sàÀjÑ¢…¦cÇŽ)o•+W6ÄYº€æ”'žxÂRˆ×¿©}:Sïòü¡ôÈ2Úü ïøñÑuïÞ]ÿ­[·Ò˜1c¨eË–½í-^¼˜~ùå—TíúòË/éï¿ÿ¦3gΤ &Æ ñq <˜víÚE¨«sçÎôÆo'ñøëŒâiÚaÈ¿¡Q𑀉÷ÕW_µ: ”=¡´%ãñ²´ÞÛG©R^¥7V¾€ï?ÿüCýúõKÌôéÓiÖ¬Y)â,Ý=z”>þøcK]oë7å²UC›7oVC† ¡)S¦¨kôÉ^DÏZeéô¾­ô¾#{µÙÞå<ûì³)4ÿam1räÈLUóÒK/Ù”?ĵ`%øÉ'ŸÐ§Ÿ~JÐhܱcaߨQ#ºsçŽj”I~ûí7u½aÃ*W®•)S†–.]ªâôÿnܸ¡4¶ãââ1ÂŽ¾uëÖtòäI•…ÿ²‰!ê6l­]»VÅcÙ¡C*\¸0µk׎P›o¾IÅ‹§ZµjÑþýûUÚÝDÅŠiæÌ™*Îþ³„'´­Ñ`‡UùÀÇ»o|¨Ø)½ûî»ôÑGÌ1©b…ŽþÃ|#!!ÌáÚ³gOZ¸p¡Â5""‚ºuëFEŠQ+G¬B¾ùæ¥EÝåË— pY,â° +Q¢ 4ÈÞ›ÆXoXjèï-´¥¿ûî;ÕßP:uÖˆÃ;WµjUš6mšUc…B,áëMï»áå0¹À„o ||× B—.]R› |x/õ€/,=ð¾ÿý÷*ÚÜû>oÞ<5_!Æí©§žRi›6mªêÀ;‹o › ÔÛ·o_¥émîÛ°ÔÆÌ|Sª1.üsîøñãÕæÈ®]»ªkôÉtn@ÿa‡1‚'¬À0_ÃìPÿêׯ¯æ`ùâ‹/ª¹ËR÷0Ïc®Â._ú·ekÓ9OÏ3aÂZ´h‘â ëqžô;{öl5WÓ9s樦§5Ÿã½ïß¿?›¾'ÚÔM›?ˆ8vó0cáªY³¦bÁé =¯¾@,X ¸ï¿ÿ~Іb’ §õë×VóGŽ!Ømë«Cä…^ L Pùar‡I;Ñ¢E‹v [¶l¡U«V©rúôéCß~û­"~ø QÞ_|¡ì•ÿý÷ßmpõ%<1ágLv`ÅíÙ³‡6nÜH=zô àñÉk¯½F½{÷¦§Ÿ~ZáÛ¾}{ U ƒÿû¿ÿ3‹+p¨Q£†2ñÁBânhýÂô X¸a2EÙÀX–ÆcôèÑê]Àã·¸3ì8õ÷ïêüùó8þù§"ð âØÁê«QìðráeÈ+T¬<Á–Ú»w¯š*T¨@Øa½Ømcg sÈR°sÅî w iá‰Õ0úŽ+<¼àp.„I ˆ5ú‡Ý½N¼á0»#Œ‹9\±Pƒs"äýý÷ßÕnRÈ,>Lì~@´ô`i<Àʃy ä@V ÚÛÆ"ªºuëêpØwX¬¢¿XpaQ†IL_ø`ñ„#&±ôÆ …ZÂ×[Þ÷€€³vÓþþþ Sìx°Ø„í9vŸØ¬[·NM‚À]Qýõ×_ôä“ORÛ¶m ¦THwÝÜûn,3Ø4hÐÀÀ©‡œÌæ¾ a®™ù¦Ì4Ë-¢,õÄf±Às0ÄÜlÌÄ\ÌYÆ„ÜW` ¢öüóÏ«ñÁ 1ÛgS¬Q‡þÁÁ‘@ wîÜ©ˆ'mCÔíNκ̽ûxï³e˦ÞuÐG´ó7ææs| ˜“¡ï:gk°‰ðC)¬eüa¢‘1 ƶÁ æzÀŽÈœÃ„sçΩEÒa@±ÂGÀïË/¿¬&ƒŸ~úIí¦ Å‹ƒÊÇ‹€z0áÂY8x!1q ,K¸êåŒò`7jÔ(µË2v‚IMæÆ˜ƒã€]XP˜°¼yôÙÒ7…2Ý1˜ëډƘ sNu¥EŒ³1ñÅÆåBO â|?i…ô°6Í QÊÆ qãºMÓ:ûïþùóç Õêï=6˜; Jçô ›'só¹ñ{„oym 6~K@@–V_zÀê&ؤ˜±Š3 X1bµŽ2QìjâÁæ€V0vóØaB®Bå?|| <àB€å1VL˜”±£†R )°›5žtŒëpçk¬®A\€ú™¼¾ Â L±Ê…¼ ì7pVΞ=«VâæpEìêñB¾÷Þ{j‡Žó™gžQ¢ˆjPD0¦Áx<°Ð‘ƒ8xC)ÈÛÇÃ{,B?Æb,.Á‚Æ¢«w8¤5VÆeãëMï;ˆˆ¾O¼_Y|eIÛÄï>¾}`ˆ qàRab—ó 8€ææÌKàSÌEÖsßFZy3ûM¥U¶+že´ÿÆmÄØoŒ—±Å6Šà¸bÜñ½€»ƒù;£AÇZχ ĹøVà~å‚°BÃ]Þqè› @zVˆºЇÂ"pÌÍ瘛A°Èů>¯d´6çà ÃÒ*»pL‚`é+s¤qÁÊ“¡ŒËB ä> ``-_¾œ ‹Ç¤ ‹°›QѨ /&(•¡ (ÀÀ=+v x À^Ø0§€ØÁ]BZx¢:F]ºtQ+XàˆÕ ÄXáBý‚ö½®å‰Äx1Lq;¢Èñ!Rëåaœ°JÆËÅ'ìܱšGz;ÍGíÚµÕb¬XÔׂÅ`‰cqæ­ã¡Àø&Hhªcñ„îØpÀ;#ì>€XÓi>zsøzÓû| »ÇD¼Àýwß$6 ¦ïÄ]Àâ`®¾g¼g˜èaV‰]¾usóæ"ÈðAðN[3Y¢^s߆iûp´Ð·±å›2Wž«ãÐkû¯·WχMˆ6€Ø€S‹M™þßt²°qó^½z©‚©É·^®ñ/Ê0žóÀâG›ãŠòìe‚h\¯=®1`c†w›QpñnƒÞáÝ'¿íâÚÜ|ŽÅÔ¯¿þªžcÇÛ¦À`ï²5Þ¹îm¹àÁÖxG*+³Ø4^•¥Š7`âceñžWFêC@ùüÂi ŒÆ2W‰|Š|¼{՘͒"ÎÒ Æ/®¥ÇVÇó¤¦ñàXÞš„ÌâÔx¢K‘”_":*س2žÂÁ8‘)®HgŒïˆ4Þ™gÑx%š*.E“fáÚÁúê©=ƃ'l ýÎlàÉFcÙdf‹±*?ú­·Xëï¾5ce©G½ï<ùh,gµT­ÕñóÇ[•ø˜{ç,eæžOã4¨“ÂÆQêÚô}G$æ[‚µí´÷7Åœ6 cžÙÀ„Å0OÚR–µý×ËæÅ®¢úû¯Ç[úÕçmKÏÍÅGxŽ÷#£ï /$2š-UzÞtj¬g’*ÞRæI}~4Nîu5Ó÷ÖÒ|Î"­Ts¼qYÆ×¼°Òx±mµ,Ã;þôV–d6XùYLåliå1–™éåcEhÌZÒ󃽨Ëô8Oü×Ã4`ŨìÐÍ­œMq5•ËAÏ4è¢ÓxK÷Æl5¬FÀ­ñæñ°„ú­°Öñ¶f¬,•éMï;ð1÷ÎYê;8':žÆiô÷Ì8צï;âô9× Ö¶Sc½lsù2úMée¹ò×\?ÒkñûŸ^ZÌÙøËH0þŽãyÒ¸ÍåË—7¾U×x§ÌÍçæÄå©2§á9h¥Ñ y$‚€ à@M·ÒpÙÖŠ['bè^x,e ñ§¬9øCüÔo@pJõ¸,ZÊ{Ûjt^.!üÎÃZjAÀë0¶>òäÎ.íqŒüƒüÈ?k27BK"Ò’4JŒç ö›ƒgü÷ ¦ N¶6ñ”þzÖ2ÅŨ² +ÀE±†ð5«„\Ü\©^AÀFÊ·ÉG‰±I™¨þâ£)!&‰´^hD Ø„”ÿür'Pl@¤µ¸&[Š?Kÿ š©®iŽkk=t(ŽMP46©ØKåËWg;øïèöí(¶qaÍáì„%ͳø7ž&MêÁšÉ Óm0+k¸í9Íé6>ƒ 6Fn¤"E(»_vÊæ—ÍðëG™[_Â\Ë^ÞÈÜ]ÎêÏV‰ýXØ«ßi•K8Q±G`¥%eKo²2[Æ—¨víâ™-ÆeùaÖe¬×akC`N ‹kÙï¬'ÌP09Kâ¹.ù´¡B…@[›à–ù`}€~Y e[å¡ðmÇß4@'œ€ºŠÒÉ-´¸ë¯<Ï[>¬Î4¿3ïaB3Wã Tõ€{d_ +WF±Me"û°ü2›œ9ƒÙÌòÄ:Ég4ÜâC’Êð®ÄßVg>€jxømvíýä³—=%Ʊù¤?û“o·Àð"J‚YªV-Æg®lfñ¦ù N¶lì`æiv´ÔÑl~oмsú’Û7|£8Õy½•lœ‹r• ¢Ø{Ití@4ñÔÆ qj=¡ÕèY˜ï=zîúW¶¬fÞÞ’%ó±×¹·Øóß3|€BV¶E4ÈAAÌv®Å²ÿhöNõ ³¿Þç f6ýüó6vCyÓLi¾DkF­¡vÕÛQö Gþt²eÍF#[¢¯bæ÷1öažõ¡óx>±n:Ÿbv–]5KH‰Ä“?ü°=W~N‡_d¢kHðüóS2DÊ…lZê×/cÖ†>889ŸÏóiOÒ{òEüý$:·!‚v~}Él7 ÕÈAÕº¤œ%RŠ3 ç‡áZ!Ômy5*Á oÂêOgOºÎÇ@ÎbàwÔN"GŽ ö‘<’ý(Q9oÞŒâƒN²{ÜãêJÍšUâ¿Êìö¶"Ÿ¶fþÔ©tªõøÇñ˜3€ì^@÷cïúLXôlÔS-*ªhx&ɰK.šÌ~̱ã7,‹/Ï.?Û°Ûê ‡‡Õ?÷¥kìROŸ¾Îneg¾Mãþ—-[PØüÆ€]c±´zõ>Òx3ë4Ýa·ÉQ)L úS¦¼ÂçnÔ0Êåy—÷.ÆÒ¹¿#(|{Ý8zŸ‰w*Û*/Uéœì\ÌÚ];­òZ›ÞÒ‰ŒßšA‚²ß7߬忿X×ÊŸNš`1Û™37Ô‹mÛNò1ÀyÙG{òB Q£òÌAð.ÍX‹@<|ðî²wéÛußÒý¸û”5 + l>ÞkÿMÝ0•~Øô5,ÛF==ŠZUi•^Q>õ|Ÿ;qÂÌ!þ¬ì—È'ž½ÅørØ¿ÿMZ7‰ühx«áÔóñžŠ#àÝ´k“Oó)r+Y7Ž 1Bø“Ñ8þxò%+¦%¤ÒÃáß¼ù]vñ›Ï:Ÿ½Æf»ûÐÐ}|‚aUM6ãÓ#¹þ^¶l*õ‹bù/Y2” çä)!â\¬²ÂÊ[Î: !Oé—ƒÛ)„ßÁ§( ;wžæIé„Z @! â€&M**®@… …R¤÷¦›B? ‚9 ÒˆV#Ìvkݱu4é¯Iv>Œ5DCžB…s6›Ö"±«ÿŽOžKˆ}$³dVa>î÷ùY³(˜Ïžðõpýú=>ípïVoPLLœaó'C±qãqš9s:Î'”6á›RæEýúÍâcËŸv{¢Ÿø@£K{"•ö}ø¶{ÊÔ®Õø²T¨fÃøËEºáO"&€‚à#ý€J»œ€æÍ+«…€¥ÔMryÑǯ§Éë&ÓÂÝ ©sÎ4¢õªU¢–ËÛåŠ,íӇά[§ª`þ‚|üôs||rHÑ¢®hŽ[Ö¹hÑ.65[¡ôo’-mYé¶ ½ñ†o²ù±Z²$L|("òJŽQzz¸´3’þúÏþ²S)6µ+Ñ$ÉNߦQÂolÊtîÜMŠزå$ÿgsy bÆ+( UívÅÞ¹‡~Üò#M^?™*®¤ô:ÖìèSÖÇW¬ Èú¡È×yölŠºz•¶²b_Ÿµk)ð¡Ö¿Û œ-þ—_žNË—§ÿ½Â2ýùjç¿kׇ>Çæ¿téËî·Ð/¿ìVÄW_}ÒcM“؉_`jy|ÔÕ8þجNŒÑ2ù™ áÏ$€Ë…%èèb.ðñ¶Å'\ºuKû„¡„¤Z¶XéÜŽ¾­Dý›ö§Y}€µíëÑ£©ÙûïSöÔ»¶î½÷(†Ý@?;}ºÃÞ=O(n´Û´ùŠÝ¤>GíÛ×TM†‚ÚºuÿРA-<¡ viã®]gÔî~ûöSìh§õïßT)Û¥p'y1Ž.le |fßÇ܉§ÎóÜÓý­!qdUBø‰®=ˆw-è@QgÏÞP+{èÀ|°bEï—‡o?½¾Y÷ m8¾ú6îKÃZ3( Úkw. ²ÿ:QõîÝ©Nß¾îÜT‡¶­W¯|NyöÒ×É¡õ¸cᘠ–-ÛK³fmQhçwíÚÀ#-†Â¦^¦3kïR|L"•jš›½ååR¶ò¦ÇÞºã8xp›„ð{êàݹsŸ¶o?I›6ÁÀ ¶6Hxh6˜¬#P° gú'·f<Âï„+=€Ÿ¶ýD­k¥ü4.ߨš¬^‘žýæwè@/ÌŸ¯”ý¼¢SèÄ·ß®SïýâÅC|Â*F‡ÊŒ³goãsB¶+%¼Z¨E¿þÜ.¼AEë‡P¾ŠÉ>ï=±Øf!ü8hf›|áÂ-ƒXl?8'bèÀñ·…¨Ø(ñ‡@þù•À‹õ^T¦ÞÖWÓþœf9ÿ†±cé•5k|Ê™¹#F, µkßä“ë¼wqk<ÞÐÊŸ1c­_ÿ»¯Oß—+WÐ8‰[^'ñá>WöF) üROæ¡b Ì[¸eã½»QBø½u|¡ ‹ÂÂΥШW¯ x‚ ¼®8¸‚¾]ÿ-ý{õ_z£å4°Ù@Ê›=¯·¯êׯqãèî¹sôüO?yu?õÎ]¾|—½É}ÍD°¯Ç*®é}Iïž ÿøã ²¿¿q#’e÷OªÃrp2¨;‡øè$:õçm%«¿©vò¥šæ¢j/¢Àï™sÜy ¬h›~+@òø$ îÞ}F-°c‚«S^ŽL!+õ–pðâA¥º?”º7ì®Ä• Wö–î¥èGRB-êÒ…*¶kG NñÌÛnpZæóϧÎÉ4è)oëž¡?á•ÿÓO[©|ù‚Ê»Þ3ÏT7 4¢áN‹üâ^÷Ñ@Ñ¢¹=¾×"¯Ñ´ÓÔ_½ÒõèÍ6oz¥[àÈË—iþçþïÿ¨Xýú?n–:ðÞ{¿ñyç÷xÜÏRŽ?~üªÒÎÇ.¿C‡šÊþ¾J÷ô×}=žnþsŸJ·ðüy£_Û/„ßvì¼''l€¡$Ñ åÍ›u’5iRܽ˜ÖHÄ&Īƒ‚¾ùëJÔ W£^àÞ,Ó´údúìÜÆ´vÌêÍòþà¼Þ'ÞXºt¯:+cõê7 ¾ä½%ÀdwíÚ£Š·º}ú4¡^½ž |ùÜËTUãS{¯îcY=v¾õáìúê= ©ãk½e,|¬Bø}lÀ­êîÑ£—y¼ؽû¬:‰§ ‚+ÿ8ëÜÃú×+1À®3»ÔaACŸJEry‡˜cë„ tõÀzqÁb§ëž8¦Øù8¨Ë3Ãøè$³ x±‰”Û5‹ýìÙ³³;æû´aÃ8p =ñÄT…ϰ SÄþ‡~àó^á÷äêÙ³§;@é mʼni«`}mÕªCÚ»ï.Ñš6ýL«QãCmÈ9ÚÂ…»´‹ïX]Ž;$d·ÀÚ—k¾ÔŠÿ§¸ÖüËæÚ²ý˴ĤDwhšMmˆ¾~]›Z«–vaÛ6›ò»[¦W_¥Þ3wkWFÛÃb4iÕ« }ñÅŸÚÕ«-Â!éï߈׎/¿©­sF›Ýü€vóßû†z.\¨õèÑC«_¿¾V­Z5í»ï¾Ó{ì1­|ùòÚÖ­[ éL/† ¦­Y³FEón]3fŒº=z´V¬X1­fÍšÚ¾}ûTÜ’%K´J•*i*TÐf̘¡âbccµþýûk%J”Ðúõë§eÍšUÅ—.]Z[±b…ºÖÿûâ‹/Ë«Œm/mÞ¼yZBB‚öú믫z5j¤mÞ¼Y%ýé§ŸTÛK•*¥ýüóÏãôr}àw™~eGvÄDÄ‹€&M>ÕÞyg±Z`‘à Ýk‹ö,Òo¤•}·¬ÆÞµÈ‘žÐôTmÑñÇ"À“ôikíÛOÒøØ]ìÆýûqÚœ9Û´fÍÆk-[~¡¾v²å}¹¸óž¶´Ç1íçµõïœÕN¬¸¥ÅÜŽOѶ©S§j9räPDÄ4((H]ÿç?ÿQ„6Eb£›Î;k‹/V1óçÏ×x®0ïÒµ;wîh'NÔúöí«ÅÇÇkÌž×þüóOméÒ¥ZÞ¼yµcÇŽi‹-R‹ƒ]»viƒÖ‚ƒƒU>ÞFk·oß6ªéÑ¥Nø—-[¦1G@»råŠ6sæL­U«VZtt´¢:uJÛ²e‹Zh˜‹{TšO\- 𾄴Ñ}(^<uïÞPý¡•ÇŽ]Q"^ (G+p%¬‹ê×/ë–§„ùgñ§nõ»©¿]gw©ãÇ­§Üo5œÊä/ã¾`Ò²’S~ýè!Cè¥_õHy?ôJ~øa#­^=ÚãôI.]ºË¦x[X†¿‹5*GŸÞ•ÙÓåMFÉõ·ß.I…jä ,i˜Ö7k֌݂7¡óçϳ‹ð³ê:""‚˜xg¨¼£§‹//ˆ|˜Ò0nfEÍìlZ|Z•U¼xqÚ±c{#ÝN¼0 † *V>ïÖùL’d1CLL +[V^….@þüùië¹@4€l|”uÅŠiìÞ½Ûl\†:ä‰Óv/ètÁé<öXQ0 9Í™ó=ú }øá³¬k–…Æ_ÉN„ÞW§©M›¶Ž¹äô¶YSáãe§EÑÁ±)Ð?êRŸ^˜öm=µÕšìn‘¦Ñðáä Nòs‹e 0Ù8ðgúT¤ˆç˜‹a±òúë³éé§¿TÇk¯Yó&Ÿ–×ßùD_#º~(šöN»B;¾ºhùâç¤ÂµÒ&úÈX®\9•ßÏÏ- ò™-+­HÞ¡«ÇPÂcñ€"ÚC‡%ÞÉSxx8o²²)q„úc±±€x·®>2æâS)1wäÌ™“ *Dÿý·¡:Þ—+‚Y¿BCCùÌ‚®t÷î]Þl4SÑÈ¿råJÖ©hIÌÅ`ý¤àr§ŠKb_ Bø}i´ÜWhÿ7jTžÆŒiG+VŒ ýûÇ)“%˜:—XæÉ'©Í¡ùówvJîJæ-I^˜@ç'œWçôŸÝ_-æïšO81ЭOvx’;Â;~˜úyJ€·:ý¾}›(WÓîÞî„„$Z¼xµm Ä…¼#®@{÷ŽU'–(aygêˆ~Zu›þ~ïÍiyˆ¶Ž'VU¡*]’OttD}–ÊÌ;7sýŽ©ÇÐÀG`V>Ÿ10›X&Ïx-V¼ûž`–;½ñÆ4’•Qׯ_Oq|”ô ÉÏòzõ "¾iӦѽ{÷Ô=ë°òÄ:êÿ­e7Ö¬@ü±âP ïeösÑ­[7zóÍ7ÙgÉ6ÅØ»woª8p$|)«ß—FÛÅ} âI²ºúCSXÉI‰àHèË/ÿT6Úp ÑNÌ“ÇyfC– Áñ¿CZ ¡Á-Ӫë”àíßÞ&˜l>òeÏøNÈR]öŒÏÆ,ÑN|to(O„°ïyhúdÏ:ì]Ö'Ÿ¬ `=mï¢íZ\èþüsòa9Õ«§wÞé@O=åºcd¡nC•d׸Fç#œíÚ_Ó°‹¶X!9¯³õÂ,*ÀGIW®\™XÖ΋ÿ1Š0ƒ ¿õÖ[jß»woªZµ*=xð€M…›ó&¡•)S†~å++â)¶=먪Æò¹ Þ(!€9Z¿üò‹ºÆh¸ÝùÔJÖPùÁ=GÜ”‡_˜b×o‡ç¾²ðª(yIåK½–¾º%°ÙÆ"fƒ8‚‘èú?^ÞmôŽ^>J×N¤¥û—R÷Én«qÝÄŸÖ`îá]ÒÉU«¨³A³<”•¦•ÞUÏØR„Æ[ÎÄá-ÊÛ=OjÃù3gnb[ò£ì>¸®2ÇsÖa90© ß~ŠÖ ¡…KØ­yVñ;¥³òõô`É?÷Üs,êHT&x¸×Xéà@Þ¯s<[»xS ½‚’%K²oƒ”LiÖúWâÖòWÄ^/_ÿæ°ëŠŠb‘@Ut  `,²0§—ãå¿bÇïåì±ÝÛwïÞój€…À‘#™­WÖpô0vZií<œÑñQ7hꆩ4uãTª[ª®:°MÕ6Ψ:Cu„ò.,/Ëk›øa†ò9+1ìÛ;ušL‹ V‡I9«^kêIJ‚<8ù°œ+WîªÃr^~ù –?;Þó#Üâ†o»G¶EÐÝ3¨XÜÔ|li·ðv9«q` |>äqã(¹vO„ð»ç¸H«L`ó(u®€îVøÚµ{JŽþJ•ÊošÅi÷q‰q´`×%€[à­FÐ+O¼â6ncYjN›6ôË>+´më4\¬©(&&ŽOܛIJýêô9kò8#ÍÝ»÷iÞ¼Š¥_²d>µ»‡˜ÊÏÏ2›ÛžíÚ5ù’r«{Ë+Z'„²ˆ`ÖžûrYBø}yô=¹ïÐþÆ"¢üÄM›VRç ¸¢Ol¤¯×~MÛOo§AÍ)]€¢¹]ØÊÕƒi)+HõdÅ©Ün$Ï2d®Òíøê«n®®Tuž8qU¹Òýý÷¼ ©Á*-–*Ž QWã(¤HÖTÅÇE&ºÅÎ>UÃ$ÂÂï £(} :yòšA?`ÇŽS¬$Tà¡X ²:‚ g†Ó7N«sæíœGkvT§ºÚ-ð~¶‰> Q/ÿþ;ù³)•«Žž…Ïú+Fª…›+Û³~ý?4cÆ&‚ž ¬ z÷nâÃrâ¢éâŽHºˆo˜_±c~j8ÜóÜ^»r¬¤îL# „?ÓJn‡ôöï¿`ЀRÒ-jÖ,á4ý€ˆ˜š¹e&}ÿ÷÷T*)Õz”:À/-Ï)Dtû;ÏÆNNZö™kI¿è}ûγiç´jÕ(VâreDt4ËÙÅöö[‘õÕ'Y× kŒ§T(K¿7駈J¢Õ#OÑ­ã1JA¯dãÜJ ?g1×/ÀÒo½¤ð2„ð{Ù€JwÌ ýptÑ”´`.ˆ±([ÖñöÎI|¶éoû~Sz—ï^V½úä«”3è‘æ³™¦Û=*žµžç² u6©ªÌ¦M®wîܧ6m¾¢ ºªÃjœÝ†óço1±ß¬lð[´¨¢NÇ«W¯´C›{/‘n½OÅê‡_ sôÚ!)Ü“ÂïÉ£'m· ›7£X,|Ú PØÂ yó*Ô´iE‡°x[ºçÜúú¯¯iõ‘ÕÔ¯I?Ör•-PÖ8‰C¯o²YÕ/ìá ,hû;3Àz¸[·„öí·Û;³jöwRü={Ϊsïûömj7ï€wN=PÚ÷8¯¾Õø²”­€sEKNR*ót„ð{úJû3ÀéÓ7˜p\°žu±<;ÆnúÒÝK4eÚ±y5«ÔL‰ž¬ødæ;dE ‡.¤½3gR/¶Ç`3,g… VØü‹ rЏåÁƒxZ²$L)ìÁüÖ;×µ‹NÌíŽ-½©dõþY³¨³êK±s9 N©G°!ü¶ &y¼Øm8¬kÇ/²ñ±@­Zp*b_Víý¸ûôóŽŸ•2`HPˆòÇ@~ŽÝ5®bŸþþìà¤m]±uô×­û‡½Ü-VNzòåËak1VåƒWÈY³¶ð-;ÙS[YfçãÀ™ŠVåµ6ÑÁŸ®ñ¢ÉJ4ÉÅ–Éæ¬Í+é" „ß…àKÕ€vŒ;vœ6ˆpÎ@ãÆÔBfƒåË´[/4ÒèÏ#*=€.ÿCCž¢LóçpŒ‚v•:‡íúgéÕ˜õïÈ~›ø˜]¶‹M)Z:ª®°°sÊ»87]»ÖWwlõñW¸—vGRbœFåžÎã¨&K¹‚€³ÂïlÄ¥>ÏFàÖ­( œd±ü'p’Å•YG ²Ýôþ¹òÒX²w ½Tÿ%¥ XµhU»ƒw›]™.â£R»-YBù+U²{ù(0..‘ž}ö>™±‘:¤ÉÞ•ÄÇ'Òï¿ïg‚¿™Ý¿Æ¨Ý}óñ«ט8kÕ_?­Ž®­Ó¿e¥< ‚€— „ßKRºá"àn6ÙZà¸â à(Y]?ç°ÛB|Œ»r3ê&MÛ4M¹®Y¢&~z4µ©Ö†²ð?{…c|zÚŽo¾¡WV¯¦@>#ÝÞaÔ¨…|ÚZ’:jמec6wîv‚?€ªU‹)‚ߪ•í‹£;ìwõ°SY=\ä‚•/Að2„ð{Ù€Jw\Œôôƒ†àK Y? /*S:¥lÖ€[àE»Ñäõ“ :#[¤ÞOô¦lö9Ðæ¯wÞ¡¸ÈHê0eŠ]„<¶½¾½”$¹¤Ê\³æˆ:,òû  YÝîˆ ±”«xZ”2 XúPÒ“ x9Bø½|€¥{.Dú»wŸ¥M›`:xœ`?sA݇@Fˆ•q76ØD“ÖM¢­'·Ò€fè–oP±Ü™óþ–ȧžÍëØ‘jóQ©µØµ¯=#_~y:-_>\´˜™2aˆü~üq3A_ ÿ'©gÏ'¬:É/1–Ïe‹díûdoy ðÝWT#¿!ò™Éë±á÷Ø¡“†{·oG«ƒ†’Ï8NM'ûHv$T°`Æœùœ¹y†&¯›LswÎ¥vÕÛ)1@½ÒõlÆ%‚Bÿì³Ô•Mý V«fs9ÈxïÞjÛv"}ôQ'åóÞÖÂ""bhþü4{öV*^<¯bç·kWÓjÎIØÔ+tdáu*ðXv‚©<æå­à<óE[û-ù" „ßàJÑ‚@š€ýh CQ°pá܆ƒ†š4©`µ~@dl$Íܱr%mþäê½v-“±…ˆqg{õšA•*Q„ß8ÞÚëS§®+vþòåûyQ]–S­še®Š˜Šuº®ˆ¦|³Q`‘Õ[‹½¤óz„ð{ýK=°²Á7Ö€Â8ø«_¿Lº»\ º?T™^¼s‘†·N¯=ùå ΘC™ cÇRäåËÔ‰üؾývmÜø/;Κn›MËÿûïcÊ»äø}ú4Qùó›×¨¼§Ž® ¿p­ªÝ¿°iqr/©Ÿ‰\Làví:ýÐbàëܤ† Ë©E@³f•Ôn:­Vî»°&®H«¯¢¾Mú*·Àå Xçž7)>ž<÷UíÒ…ê¾öZZÕ¤z†…ˈ ØIÏ›d­èC¿£%LIDATg),Z´K9Ü æÝ}s6ÿ«M&Úw\Ž«Ý7óŠò–‡ký¼úÒÍs‹üT£!‚€Y„ð›…E"7C²ný!üBqŠ‚X€#péÒ)¶eÿ=U«#“"iOôÚ½—ZåjEu³×M•Æ\Dvî´s'ÅÕ©CI¹s›K’*îÁvî|@µkQž<Ö±ÖïÞMbå¿(*Q"ªWÏÊâŽÔľ}ûö|´ò㪾[ÿÆP8i Y}þ*ö±hHÕ‰¼!üÞ=¾Ò;oE7nL>h΄Ξ å“îÊR~>r×\H ºíw› %Yoöf®{ÇEGû‘?Óúàà$³EGEEÑo¿ýF…H» „ß.0J!‚€‹(R¤4}ÿýD*PÀñG ;³«‘ì[ W¯^áÌj¥.AÀ›µŽçÍHß/@@ÓxA/¤ ‚€ à „ð;e©CA@p„ð»É@H3G#pîÜ9özn±šãÇÓÍ›7->·ô &&†ý·{÷n:ÍÇú¾øâ‹lUp–Vóé~kÙãßN6œ1c†â˜æ»qã}öÙgtõêUU¶Á"M|ÙñûÌPKGdâÙAÏž={ØþÿIúøã±¾uë–z‚üé§Ÿò1·U•_€ÄÄDš4i 6Œ ¤.\ ˜Ù{û%JâZ¶lÉŽ…*ÑСC)$$Äl¾¹sçRÞ¼yiܸqt÷î]A@pBø]ºT)¸Â… ³ü¶T£F >ü¦8]¿~]5 Ä»lÙ²Ô¸qcºvíšÚµ³ƒ KJþsA].§::uâ3’逃Nˆþ¡C‡Ø6?u¾½{÷*®X4Hç# „ßù˜K‚€ËЉ5âÏtt9XÇaA@ÑÑÑê¯U«V|Än9•&Ož<ê×Üæò•)S†nß¾Í^ý’óeÏžÝ\V‰# „ßÁKñ‚€'#€]ývßÛ¹sg%Ëß·o%$$¤Ù%<7—: 6äÓ·ª…t$‚€óÂï|Ì¥FAÀíÈ’%Kª6!òø6mÚPß¾}©[·nŠù?‚¹<`á?^=3—¯ ü³xñbêÚµ«R 4WFª†H„ Ø,Ìâ'Øv…T œdöS¦Lq˜Ë^(óÝzÒ H 9?‚¹|P„2a¡BéŸ .{ÓC[ž F TÌù2Œ™d|r˜§×{ãtæòA§À¢Ÿ^=ò\lC@Xý¶á&¹A@D@¿G›4ZA@° !ü¶á&¹A@D@dü9lÒhA %°›_ºt©r “ò‰gßA¹ïÞ½{žÝ i½ àfáw³‘æ¶ x+V¬°%«ÛçyçwܾÒ@AÀ“s>O-i« ‚€ 9BEÆŸ9%· ‚€ àQá÷¨á’Æ ‚€ ™Càÿ—¹RÂ&IEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1Include-members.html000644 000765 000024 00000011302 14042362131 026174 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Member List
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2::Include Member List

    This is the complete list of members for ParseV2::Include, including all inherited members.

    begin() constParseV2::Includeinline
    end() constParseV2::Includeinline
    Include(const char *file_name)ParseV2::Includeinline
    Line()ParseV2::Lineinlineprotected
    parse(const StringList &tl, bool subdirective, const File &file)ParseV2::Includestatic
    ~Include()ParseV2::Includeinline
    ~Line()ParseV2::Lineinlinevirtual
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1AccessorStyleOption-members.html000644 000765 000024 00000013203 14042362131 030567 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Member List
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2::AccessorStyleOption Member List

    This is the complete list of members for ParseV2::AccessorStyleOption, including all inherited members.

    AccessorStyleOption(const std::string &value, const File &file)ParseV2::AccessorStyleOptioninline
    Line()ParseV2::Lineinlineprotected
    Option(const std::string &value)ParseV2::Optioninlineprotected
    parse(const StringList &tl, bool subdirective, const File &file)ParseV2::Optionstatic
    parse_bool(const std::string &value)ParseV2::Optionprotectedstatic
    print(std::ostream &os) constParseV2::AccessorStyleOptionvirtual
    value() constParseV2::Optioninlineprotected
    ~Line()ParseV2::Lineinlinevirtual
    ~Option()ParseV2::Optioninlinevirtual
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1Field_1_1Type.html000644 000765 000024 00000035744 14042362131 025526 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: ParseV2::Field::Type Class Reference
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2::Field::Type Class Reference

    A smart enum for converting SQL type strings to one of a relatively few types we directly support. More...

    #include <parsev2.h>

    Public Types

    enum  Value {
      ft_tinyint , ft_smallint , ft_mediumint , ft_bigint ,
      ft_float , ft_double , ft_string , ft_blob ,
      ft_date , ft_datetime , ft_time , ft_set
    }
     Known SQL field types. More...
     

    Public Member Functions

     Type (const std::string &s)
     Constructor. More...
     
     Type (Value v)
     Copy constructor.
     
    void print (std::ostream &os) const
     Print type description out to a stream in SSQLS v2 form.
     
     operator Value () const
     Enum value accessor.
     
    bool operator== (const Type &rhs) const
     Equality operator.
     

    Detailed Description

    A smart enum for converting SQL type strings to one of a relatively few types we directly support.

    This object defaults to a value of ft_string if the type cannot be discerned.

    This class is public only to allow it to be tested, in test/ssqls2.cpp. It shouldn't actually be used outside ssqlsxlat.

    Member Enumeration Documentation

    ◆ Value

    Known SQL field types.

    This list is shorter than what we support in MySQL++'s lib/sql_types.h and shorter still than the full list of types that SQL database engines support. Its length is limited by the diversity of data types in C++ and MySQL++. We map SQL types to one of these values as best we can.

    This list doesn't encode anything about nullness, signedness, etc. Those are considered attributes modifying the type, not creating independent data types. We store these flags in separate variables in the outer class.

    Enumerator
    ft_tinyint 

    TINYINT, INT1, BOOL.

    ft_smallint 

    SMALLINT, INT2.

    ft_mediumint 

    INT, MEDIUMINT, INT3, INT4.

    ft_bigint 

    BIGINT, INT8.

    ft_float 

    FLOAT, FLOAT4, FLOAT8.

    ft_double 

    DOUBLE, DECIMAL, FIXED, NUMERIC.

    ft_string 

    *CHAR, ENUM, *TEXT

    ft_blob 

    *BLOB, VARBINARY

    ft_date 

    DATE.

    ft_datetime 

    DATETIME, TIMESTAMP.

    ft_time 

    TIME.

    ft_set 

    SET.

    Constructor & Destructor Documentation

    ◆ Type()

    ParseV2::Field::Type::Type ( const std::string &  s)

    Constructor.

    Given a SQL type string, try to figure out which of the relatively small set of known values to use. Defaults to ft_string if we can't find a more appropriate type, as all SQL values can be dealt with as strings.

    References ft_bigint, ft_blob, ft_date, ft_datetime, ft_double, ft_float, ft_mediumint, ft_set, ft_smallint, ft_time, and ft_tinyint.


    The documentation for this class was generated from the following files:
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1Table-members.html000644 000765 000024 00000010230 14042362131 025637 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Member List
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2::Table Member List

    This is the complete list of members for ParseV2::Table, including all inherited members.

    Line()ParseV2::Lineinlineprotected
    parse(const StringList &tl, bool subdirective, const File &file)ParseV2::Tablestatic
    print(std::ostream &os) constParseV2::Tablevirtual
    Table(const std::string &name, const std::string &alias, const std::string &filebase)ParseV2::Table
    ~Line()ParseV2::Lineinlinevirtual
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1ParseException__coll__graph.png000644 000765 000024 00000012752 14042362131 030434 0ustar00tangentstaff000000 000000 ‰PNG  IHDR·p\ƒá“bKGDÿÿÿ ½§“ŸIDATxœíyTTçùÇ¿Ã:#2 Œ, (‹ŠÍÉiE BC‘`DD DR­¤.±ÑcTjMz@&ÕZc,‚P±›("(P.”}‡aæùýÁáÖaÑ0€—÷sÎ=ú.÷yŸ÷Þ/ï}Þ÷.# "ƒÁ?Nk · †¦`âfð&noaâfðM~ðà¦L3x„X,†µµµFlkl䮪ª‚\.×”yhhh@CCƒÆìklä+++˜™™i² ÆKŒ¦¯î,æfð&noaâfð&noÑè„òe¡¾¾;wîÄ'Ÿ|‘H¤±vöìÙƒêêjµe»ví‚D"ÑXÛ¡ºº{öìÁ_þòèëë«/ƒ¹455áÀ_ºüꫯ‘‘§OŸö؆ëù5GGG\¹r —Ë‘™™ ¥R9,¾ 6#näV(hooçFP¹\…BƒÛP*•¨¬¬„……E2"BCCŒŒŒúµÓÖÖ†ÖÖVˆÅâç*ë‹   üîw¿{®}žE©T¢´´VVVjËëêê ‹¡¥ÕsÜRçsmm-ÚÚÚ–––¸víšÊ>D„ÂÂB˜™™©½ªutt ±±qد:ê#w^^„B!ÂÃÃ1~üxH¥RlݺÛ·o‡±±1ŒŒŒ°~ýzÀ’%K°zõjn_…BñãÇ#66[[[888ÀÒÒ)))\ÝsçÎÁÔÔpqqA@@BCCU|ùñÇ1eÊüñ„••LLL€–––>Ë <<óçÏçluO÷Gxx8,,,PQQ s¤·´´Dyy9 >>¦¦¦˜>}:¬­­±oß>nß[·naÆŒ˜0a¤R)vìØ"êÓç×^{ ðññÁW_}…'Ož@"‘ ©© pᘛ›cΜ9H$øÃþ€ŽŽäååA,ãСC055…T*…«««Foȼ¤!®\¹Bª›››K(00ªªªèøñã€-ZDtéÒ%@UUUC&&&ÔÖÖFDDß}÷‰Åbjii¡ÜÜ\266¦ºº:jkk£O?ý”œ‰ˆ¨´´”„B!8p€ÚÚÚ(!!ttthóæÍT\\LH&“QJJ  µk×’\.§’’²µµ¥°°°>ˈˆ)""‚ëW÷´½½=y{{ÓŸþô'•-&&†ˆˆ Í™3‡/^L%%%$‘HèäÉ“DDTXXH"‘ˆ¢¢¢8Û€òòò¨±±‘ÆOü1=}ú” ÈÖÖ–Ž9үϔ˜˜¨r©¸¸˜D"?žˆˆÛïÀ\=jjj¢ôôt277§'N<—Fîß¿O÷ïß®}žƒ˜%îÇQmm- ‹/rutuu)55•ZZZH,s'dõêÕLDD="=== §ÒÒRR*•ÔÚÚJDDû÷ï' •v]]]{wUUW/<<œfÏžÝgÙ@°··'ggg VÙ:ÄÕÉÉÉ¡1cƃƒ-]º”ˈˆ ©S§ªØ‹¥ÂÂBúæ›oH*•’L&£¦¦&jjj¢mÛ¶Ñ‚ úõ¹7qGDDJ{Û¶m#777®^~~>WööÛoÓöíÛtºÐ´¸GTÌÝ#ëètº5eÊ®L  ££B¡~~~8sæ æÏŸ¸¸8DGG&OžŒãÇcÿþýزe †·ß~ùùùpvvViÏÎÎN­FFF7n—¶²²âV9ú*ï¾ûnŸ1÷Ô©Sáãヨ¨(®_ŸŸéÓ§«Ôõõõ<~üMMM˜9s¦JùŒ3^Øçüü|Ì™3G%ÏÆÆ† ÿ¨nhh ”››ËÕÑÕÕ¥ääd.½eË@999\žB¡ yóæ‘žžÍš5‹ìííéèÑ£\ùŸÿügÒÓӣɓ'“­­-Í›7OmÌm``@¿þõ¯iâĉ$‰hùòå¤P(ú,#êŒI§OŸÎµ×=mooOÔn7oÞ¤ßÿþ÷äààÀ‡¯¿þšD"eeeÑÁƒIWW—ÌÍÍiÚ´iÏÙ>yò$µµ5éêêÒÊ•+I.—÷ëóÆI$Ñ7ß|£suÆæ:::dooOb±˜Ö¬YCííí=ÎѲeËhóæÍ:ß]ŒŠ å‹ðùçŸÓ/ùËùJ¥’²²²èöíÛ¤T*{”×ÖÖRvv6uttP```’’’BFFFDÔ¹BQ[[; ²¡¢¹¹™žï¬i˜¸5Ì·ßföXúkoïÀ¥Kìãüš†‰[ƒ44´àòå,(ª_pÒÒbc3†É«Ñ·¹páÿÔ~š¬£ƒpõjd²§ÃàÕè‰[ƒœ9“ A7#/\¸;tÎŒB˜¸5Dee#~ü1ê–R* gΤ±W£ &n qöì­>Ÿ!!"¤§ç£¬¬n½]0qkˆØØ ttôý)`"àìÙ;CäÑèã¥{Aøe ¢¢uu-°°øßg’;:”Ë3FO¥nffþ{7zÐØ  Uλƒã(-ýëp»2Z`/3ø 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3ø u#::š°m7mmC § »|ÝÔÓëoâìܹ³·"cÄðàÁœ9sFmY¯âvssÓ”? Æ Ò›¸YÌÍà-LÜ ÞÂÄÍà-LÜ Þ2(¿ |âÄ Ô××si¸¸¸`Ê”)ƒa~@¤¤¤àÉ“' TëߤI“ð‹_üPWW‡œœˆD"888@__@mŒ„~ªóãYV®\‰±cÇ©?Ý©¯¯Ç‰'°fÍèêꛃ2r'&&âñãÇÐÖÖ†¶¶6ÊË˱iÓ&ìÛ·o0Ì¡PˆÈÈH”••©ä———#22zz?KüóŸÿDhh(‚ƒƒQUU5 6FB?»üÈÉÉAkkkm¸~zåÊ•¸}û6 ½½>„R©_º´ß~Ÿ7o/^Ì¥pèÐ!¼ÿþû3f —ßÐÐCCC‚6ÚÚÚzzz "Èd2˜˜˜¨m¯©© œŸÿüçJ¥HJJ²e˸zW¯^…D"““är9>ûì3ìÝ»³gφ\.ÇÚµkqá¬\¹ò¥èg ,€——×€|V¡ºº¦¦¦ÏÕ.( ´µµ©ô·±± …0nÜ8û 6lÀáÇñÁÀÄÄ•••سg¶lÙwww¤§§ã£>‚««+$I¯íÚØØ ¤¤mmm8}ú4êëë±~ýzDGGãØ±cX¼x1¶nÝ '''”––âéÓ§€êêjìÚµ ;wîÄë¯¿Žšš¬_¿–––˜;w.š››q÷î]ÄÄÄ   ¡¡¡HMMÅ›o¾ù“59h⎊ŠÂéÓ§ººº°µµÅæÍ›t^’vìØ+++Ô××£¨¨ººº(,,„±±1`õêÕxõÕWQRR‚––$$$ÀÃÜøRSSÑÞÞŽ%K–€ˆ ‹áîîŽäädxyyÁÎÎvvvHJJŠ+põêULš4 S§NíáïÝ»wsss,X°àää'''®N÷ôHé' úGÖ…¡¡!@KK Û¶mêU«°qãF899aþüù:¯d¦¦¦pwwçú¸{÷nhkk÷Ù® €ÎØZGGR©>>>HJJBPPP¯º¸|ù2Œñú믤R)ÜÝÝqíÚ5Ì;¡P̘1………½Ú{MÜ!!!*±è³¤¦¦"..ZZZjGD;;;€¥¥%BCC¹‘ÌÆÆÁÁÁpuuEii)ZZZðÞ{ï©ìkkkËýßÓÓÿùϰbÅ $%%ÁÓÓS¥nss38€´´4¼÷Þ{ðööVWŽô~þêW¿ê3æ¶²²‚‹‹ ~øá•ç„ÊËË1iÒ$•º®®®Ðo»022âòMMM{]µy¶½éÓ§«äYXX 99™KK$îÿzzz\ìþS4q÷Å£GðüGŽáNîòåËÕÖ­©©ÁÌ™3áîº:œ?û÷ïÇìÙ³all ±XŒèèhNuuu\l8zô(ÒÓÓ‘““ƒÝ»wseJ¥[·n…P(ÄñãÇUêËÖÏþxðà®]»GGG>|ûöíƒ@ €‘‘7Çè">>óæÍë³Ýšš477C.—sÂÿþ÷¿˜0aBŸ~áîÝ»*y¹¹¹077çÒÝ€ÁbHnâ”——ÃÐЋK¯]»†²²2µ¤‡bûöíhll„D"Áܹs¹z³fÍBcc#¾ÿþ{nöýÑGáòåËÜþR©?ûÙÏ×^{ fff\YVVòòò…BêêjTWW£®®@çÉúᇸúÝÓ#©Ÿ2™ ¥¥¥=¶öövÈår|òÉ'ð÷÷GXXrssñí·ßè\í)((@jj*çcLL LLLúm—ˆpþüy@qq1®_¿Î…m:::\œý,sçÎÅãÇqýúu«*iii\X¤I†dävvvFll,üýý! áèè///üíoÃÞ½{UêΙ3ÿú׿àëë {{{466bÕªUÐ××Çøñã±eËDDDàØ±c¨­­…‡‡–.]ªbÃÓÓ{÷îEpp°Jþ½{÷ÐÜÜŒßþö·*ùööö8vì®_¿Ž””.>ížIýŒŒŒDddd¾üòK$&&BKK AAAÐÕÕźuë°ÿ~899aòäÉX·nvíÚCCCbíÚµÐÖÖî³Ýììl…BdddpJ,Y²ðÆoàÓO?…B¡À+¯¼Âùãàà€5kÖàã?†¹¹9êêê0þ|xzz¢¢¢b@ÇõEP·a%&&K—.í±¤6”——cìØ±ÜZfMM LLLzļD„¢¢"´µµÁÞÞ¾Gykk+ `bbÒë:ípò2ôS.—C&“Á¢G™ºvïß¿­[·"!!•••‰Dܶ‹¦¦&ˆD"hkk÷°ÙÔÔ„ââbL˜0b±xÐú‘””„Ý»w«»:ž’‘»‹îR*•ª­'0qâÄ^ítͬG*/C?õõõÕ { í>ê=K_7`ÆŽ‹iÓ¦=Ÿ“?öàc@Œ3fÈÅùSaâf ;;;DDD ·Ï7ƒ·0q3x 7ƒ·0q3xK¯K»víB7Œ£¯MzˆÛÚÚš{:Á阚šªÜ}–w( žpšÅÜ ÞÂÄÍà-LÜ ÞÂÄÍà-ÿº›»®…ûšIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/tab_b.png000644 000765 000024 00000000251 14042362131 021160 0ustar00tangentstaff000000 000000 ‰PNG  IHDR$ÇÇ[pIDATxíÝMƒ EáÇ»ÐÔ¸¸u`âÀ´V0РÆ}:t]DÁ²s¿ä®‚¶ýËu¥ø|’xùî½À>ÿ1»& mÄ8ÜSÙÑxÜLÀUûšÞ²ÄiE–ŠåOs„¢’nxàÒêÓKN²~jIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/parsev2_8h_source.html000644 000765 000024 00000303376 14042362131 023650 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: parsev2.h Source File
    MySQL++ SSQLS v2 Translator  3.3.0
    parsev2.h
    1 /***********************************************************************
    2  ssx/parsev2.h - Declares the SSQLS v2 language parsing related classes.
    3 
    4  Copyright (c) 2009 by Warren Young and (c) 2009-2010 by Educational
    5  Technology Resources, Inc. Others may also hold copyrights on code
    6  in this file. See the CREDITS.txt file in the top directory of the
    7  distribution for details.
    8 
    9  This file is part of MySQL++.
    10 
    11  MySQL++ is free software; you can redistribute it and/or modify it
    12  under the terms of the GNU Lesser General Public License as published
    13  by the Free Software Foundation; either version 2.1 of the License, or
    14  (at your option) any later version.
    15 
    16  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
    17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
    19  License for more details.
    20 
    21  You should have received a copy of the GNU Lesser General Public
    22  License along with MySQL++; if not, write to the Free Software
    23  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
    24  USA
    25 ***********************************************************************/
    26 
    27 #if !defined(MYSQLPP_SSX_PARSEV2_H)
    28 #define MYSQLPP_SSX_PARSEV2_H
    29 
    30 #include <exceptions.h>
    31 
    32 #include <cassert>
    33 #include <fstream>
    34 #include <string>
    35 #include <vector>
    36 
    41 class ParseV2
    42 {
    43 public:
    45  typedef std::vector<std::string> StringList;
    46 
    50  typedef StringList::const_iterator StringListIt;
    51 
    57  class File
    58  {
    59  public:
    62  File(const char* file_name);
    63 
    65  void error(const std::string& msg) const;
    66 
    68  void error(const std::ostringstream& msg) const
    69  { error(msg.str()); }
    70 
    72  const char* name() const { return file_name_.c_str(); }
    73 
    76  void parse_error(const std::string& msg) const;
    77 
    79  void parse_error(const std::ostringstream& msg) const
    80  { error(msg.str()); }
    81 
    92  bool read_line(std::string& line, bool& subdirective);
    93 
    94  private:
    104  void add_directory_to_search_path(const char* filepath);
    105 
    108  void split_path(StringList& parts, const std::string& path) const;
    109 
    111  std::ifstream ifs_;
    112 
    116  std::string file_name_;
    117 
    121  size_t line_number_;
    122 
    131  static StringList search_path_;
    132  };
    133 
    136  class Line
    137  {
    138  public:
    140  virtual ~Line() { }
    141 
    152  static Line* parse(const StringList& tl, bool subdirective,
    153  const File& file);
    154 
    157  virtual void print(std::ostream& os) const = 0;
    158 
    159  protected:
    161  Line() { }
    162  };
    163 
    167  typedef std::vector<Line*> LineList;
    168 
    173  typedef LineList::const_iterator LineListIt;
    174 
    176  class Field : public Line
    177  {
    178  public:
    192  Field(const std::string& name, const std::string& type,
    193  bool is_unsigned = false, bool is_null = false,
    194  bool is_autoinc = false, bool is_key = false,
    195  const std::string& alias = 0) :
    196  name_(name),
    197  type_(type),
    198  is_autoinc_(is_autoinc),
    199  is_key_(is_key),
    200  is_null_(is_null),
    201  is_unsigned_(is_unsigned),
    202  alias_(alias)
    203  {
    204  }
    205 
    213  static Field* parse(const StringList& tl, bool subdirective,
    214  const File& file);
    215 
    218  void print(std::ostream& os) const;
    219 
    229  class Type
    230  {
    231  public:
    245  enum Value {
    257  ft_set
    258  };
    259 
    266  Type(const std::string& s);
    267 
    269  Type(Value v) :
    270  value_(v)
    271  {
    272  }
    273 
    276  void print(std::ostream& os) const;
    277 
    279  operator Value() const { return value_; }
    280 
    282  bool operator ==(const Type& rhs) const
    283  { return value_ == rhs.value_; }
    284 
    285  private:
    286  Value value_;
    287  };
    288 
    289  private:
    290  std::string name_;
    291  Type type_;
    292  bool is_autoinc_;
    293  bool is_key_;
    294  bool is_null_;
    295  bool is_unsigned_;
    296  std::string alias_;
    297  };
    298 
    300  class Include : public Line
    301  {
    302  public:
    308  Include(const char* file_name) :
    309  pp2_(new ParseV2(file_name))
    310  {
    311  }
    312 
    314  ~Include() { pp2_->clear(); delete pp2_; }
    315 
    317  // sub-parse's LineList
    318  LineListIt begin() const { return pp2_->begin(); }
    319 
    322  LineListIt end() const { return pp2_->end(); }
    323 
    331  static Include* parse(const StringList& tl, bool subdirective,
    332  const File& file);
    333 
    334  private:
    335  // Never called. Include directives don't appear in the parse
    336  // list; the included file's contents appear in its place
    337  // instead. Since this method only exists to test parsing
    338  // behavior, we can't be called.
    339  void print(std::ostream&) const { assert(0); }
    340 
    343  ParseV2* pp2_;
    344  };
    345 
    351  class Option : public Line
    352  {
    353  public:
    355  virtual ~Option() { }
    356 
    364  static Option* parse(const StringList& tl, bool subdirective,
    365  const File& file);
    366 
    367  protected:
    371  Option(const std::string& value) :
    372  value_(value)
    373  {
    374  }
    375 
    386  static bool parse_bool(const std::string& value);
    387 
    395  const char* value() const { return value_.c_str(); }
    396 
    397  private:
    398  // The option's raw value string
    399  std::string value_;
    400  };
    401 
    404  {
    405  public:
    407  AccessorStyleOption(const std::string& value, const File& file) :
    408  Option(value),
    409  type_(AccessorStyleOption::parse_type(value, file))
    410  {
    411  }
    412 
    415  void print(std::ostream& os) const;
    416 
    417  private:
    424  enum Type {
    425  unknown,
    426  camel_case_lower,
    427  camel_case_upper,
    428  stroustrup,
    429  overloaded
    430  };
    431 
    435  static Type parse_type(const std::string& style,
    436  const File& file);
    437 
    439  Type type_;
    440  };
    441 
    444  {
    445  public:
    448  Option(value),
    449  throw_(Option::parse_bool(value))
    450  {
    451  }
    452 
    455  operator bool() const { return throw_; }
    456 
    459  void print(std::ostream& os) const;
    460 
    461  private:
    462  bool throw_;
    463  };
    464 
    467  {
    468  public:
    470  HeaderExtensionOption(const std::string& value) :
    471  Option(value)
    472  {
    473  }
    474 
    476  const char* extension() const { return value(); }
    477 
    480  void print(std::ostream& os) const;
    481  };
    482 
    485  {
    486  public:
    488  ImplementationExtensionOption(const std::string& value) :
    489  Option(value)
    490  {
    491  }
    492 
    495  const char* extension() const { return value(); }
    496 
    499  void print(std::ostream& os) const;
    500  };
    501 
    503  class Table : public Line
    504  {
    505  public:
    512  Table(const std::string& name, const std::string& alias,
    513  const std::string& filebase);
    514 
    522  static Table* parse(const StringList& tl, bool subdirective,
    523  const File& file);
    524 
    527  void print(std::ostream& os) const;
    528 
    529  private:
    530  std::string name_, alias_, filebase_;
    531  };
    532 
    535  class FileException : public mysqlpp::Exception
    536  {
    537  public:
    542  FileException(const std::string& what) : Exception(what) { }
    543  };
    544 
    547  class ParseException : public mysqlpp::Exception
    548  {
    549  public:
    555  ParseException(const std::string& what,
    556  const std::string& file_name, size_t line) :
    557  Exception(what),
    558  file_name_(file_name),
    559  line_(line)
    560  {
    561  }
    562 
    564  ~ParseException() throw() { }
    565 
    567  const char* file_name() const { return file_name_.c_str(); }
    568 
    570  size_t line() const { return line_; }
    571 
    572  private:
    573  std::string file_name_;
    574  size_t line_;
    575  };
    576 
    588  ParseV2(const char* file_name);
    589 
    592  {
    593  for (LineListIt it = lines_.begin(); it != lines_.end(); ++it) {
    594  delete *it;
    595  }
    596  }
    597 
    599  LineListIt begin() const { return lines_.begin(); }
    600 
    605  void clear() { lines_.clear(); }
    606 
    608  LineListIt end() const { return lines_.end(); }
    609 
    610 private:
    612  void tokenize(StringList& tokens, const std::string& line) const;
    613 
    615  File file_;
    616 
    627  LineList lines_;
    628 };
    629 
    635 std::ostream& operator<<(std::ostream& os, const ParseV2::Line& line);
    636 
    637 #endif // !defined(MYSQLPP_SSX_PARSEV2_H)
    'option accessor_style' directive line
    Definition: parsev2.h:404
    AccessorStyleOption(const std::string &value, const File &file)
    Constructor.
    Definition: parsev2.h:407
    void print(std::ostream &os) const
    Print the option description out to a stream in SSQLS v2 form.
    Definition: parsev2.cpp:122
    'option exception_on_schema_mismatch' directive line
    Definition: parsev2.h:444
    void print(std::ostream &os) const
    Print the option description out to a stream in SSQLS v2 form.
    Definition: parsev2.cpp:162
    ExceptionOnSchemaMismatchOption(const std::string &value)
    Constructor.
    Definition: parsev2.h:447
    A smart enum for converting SQL type strings to one of a relatively few types we directly support.
    Definition: parsev2.h:230
    Type(Value v)
    Copy constructor.
    Definition: parsev2.h:269
    void print(std::ostream &os) const
    Print type description out to a stream in SSQLS v2 form.
    Definition: parsev2.cpp:305
    Type(const std::string &s)
    Constructor.
    Definition: parsev2.cpp:251
    Value
    Known SQL field types.
    Definition: parsev2.h:245
    @ ft_bigint
    BIGINT, INT8.
    Definition: parsev2.h:249
    @ ft_string
    *CHAR, ENUM, *TEXT
    Definition: parsev2.h:252
    @ ft_double
    DOUBLE, DECIMAL, FIXED, NUMERIC.
    Definition: parsev2.h:251
    @ ft_float
    FLOAT, FLOAT4, FLOAT8.
    Definition: parsev2.h:250
    @ ft_date
    DATE.
    Definition: parsev2.h:254
    @ ft_set
    SET.
    Definition: parsev2.h:257
    @ ft_time
    TIME.
    Definition: parsev2.h:256
    @ ft_tinyint
    TINYINT, INT1, BOOL.
    Definition: parsev2.h:246
    @ ft_datetime
    DATETIME, TIMESTAMP.
    Definition: parsev2.h:255
    @ ft_mediumint
    INT, MEDIUMINT, INT3, INT4.
    Definition: parsev2.h:248
    @ ft_smallint
    SMALLINT, INT2.
    Definition: parsev2.h:247
    @ ft_blob
    *BLOB, VARBINARY
    Definition: parsev2.h:253
    bool operator==(const Type &rhs) const
    Equality operator.
    Definition: parsev2.h:282
    'field' directive line
    Definition: parsev2.h:177
    void print(std::ostream &os) const
    Print field description out to a stream in SSQLS v2 form.
    Definition: parsev2.cpp:239
    Field(const std::string &name, const std::string &type, bool is_unsigned=false, bool is_null=false, bool is_autoinc=false, bool is_key=false, const std::string &alias=0)
    Holds information about a SQL field declared in the SSQLS v2 language.
    Definition: parsev2.h:192
    static Field * parse(const StringList &tl, bool subdirective, const File &file)
    Attempt to create a Field object from information in the passed StringList.
    Definition: parsev2.cpp:170
    Exception object thrown to indicate a file I/O error.
    Definition: parsev2.h:536
    FileException(const std::string &what)
    Constructor.
    Definition: parsev2.h:542
    Holds information about an SSQLS v2 file we're parsing.
    Definition: parsev2.h:58
    File(const char *file_name)
    Open a file for reading, using the search path to file the file if the direct path isn't readable.
    Definition: parsev2.cpp:325
    void parse_error(const std::string &msg) const
    Throw a ParseException containing the given message and our stored info about the file name and curre...
    Definition: parsev2.cpp:399
    void error(const std::string &msg) const
    Throw a FileException containing the given message.
    Definition: parsev2.cpp:392
    void parse_error(const std::ostringstream &msg) const
    Definition: parsev2.h:79
    bool read_line(std::string &line, bool &subdirective)
    Read a line in from a file.
    Definition: parsev2.cpp:406
    const char * name() const
    Return the file's name.
    Definition: parsev2.h:72
    void error(const std::ostringstream &msg) const
    Definition: parsev2.h:68
    'option header_extension' directive line
    Definition: parsev2.h:467
    HeaderExtensionOption(const std::string &value)
    Constructor.
    Definition: parsev2.h:470
    const char * extension() const
    Return the extension used for C++ headers we emit.
    Definition: parsev2.h:476
    void print(std::ostream &os) const
    Print the option description out to a stream in SSQLS v2 form.
    Definition: parsev2.cpp:452
    'option implementation_extension' directive line
    Definition: parsev2.h:485
    const char * extension() const
    Return the extension used for C++ implementation files we emit.
    Definition: parsev2.h:495
    ImplementationExtensionOption(const std::string &value)
    Constructor.
    Definition: parsev2.h:488
    void print(std::ostream &os) const
    Print the option description out to a stream in SSQLS v2 form.
    Definition: parsev2.cpp:459
    'include' directive line
    Definition: parsev2.h:301
    LineListIt end() const
    Get an iterator pointing to just past the end of the sub-parse's LineList.
    Definition: parsev2.h:322
    static Include * parse(const StringList &tl, bool subdirective, const File &file)
    Attempt to create an Include object from information in the passed StringList.
    Definition: parsev2.cpp:466
    ~Include()
    Destructor.
    Definition: parsev2.h:314
    Include(const char *file_name)
    Given the name of another SSQLS v2 file, load it up and parse it. Its contents will appear transparen...
    Definition: parsev2.h:308
    LineListIt begin() const
    Get an iterator pointing to the start of the.
    Definition: parsev2.h:318
    Base class for parsed SSQLS v2 declaration lines.
    Definition: parsev2.h:137
    virtual void print(std::ostream &os) const =0
    Print line's contents out to a stream in SSQLS v2 form.
    Line()
    Protected ctor, to prevent instantiation.
    Definition: parsev2.h:161
    static Line * parse(const StringList &tl, bool subdirective, const File &file)
    Virtual ctor, creating one of our subclass objects based on what we're passed.
    Definition: parsev2.cpp:485
    virtual ~Line()
    Virtual dtor, since this is a base class.
    Definition: parsev2.h:140
    Base class for known SSQLS v2 'option' directives.
    Definition: parsev2.h:352
    virtual ~Option()
    Virtual dtor, since this is a base class.
    Definition: parsev2.h:355
    static Option * parse(const StringList &tl, bool subdirective, const File &file)
    Attempt to create an Option object from information in the passed StringList.
    Definition: parsev2.cpp:536
    static bool parse_bool(const std::string &value)
    Convert a string expressing a boolean value to a bool.
    Definition: parsev2.cpp:575
    const char * value() const
    Return the option's value in string form, unmodified from the original parse.
    Definition: parsev2.h:395
    Option(const std::string &value)
    Protected ctor, so we cannot be directly instantiated.
    Definition: parsev2.h:371
    Exception object thrown by File::error() to report an SSQLS v2 parsing error.
    Definition: parsev2.h:548
    size_t line() const
    Get line number where error occurred.
    Definition: parsev2.h:570
    ParseException(const std::string &what, const std::string &file_name, size_t line)
    Constructor.
    Definition: parsev2.h:555
    ~ParseException()
    Destructor.
    Definition: parsev2.h:564
    const char * file_name() const
    Get name of file where error occurred.
    Definition: parsev2.h:567
    'table' directive line
    Definition: parsev2.h:504
    static Table * parse(const StringList &tl, bool subdirective, const File &file)
    Attempt to create a Table object from information in the passed StringList.
    Definition: parsev2.cpp:605
    void print(std::ostream &os) const
    Print the table description out to a stream in SSQLS v2 form.
    Definition: parsev2.cpp:645
    Table(const std::string &name, const std::string &alias, const std::string &filebase)
    Constructor.
    Definition: parsev2.cpp:595
    Parses SSQLS v2 documents and holds the parse result.
    Definition: parsev2.h:42
    void clear()
    Dump our line list.
    Definition: parsev2.h:605
    LineListIt begin() const
    Get an iterator pointing to the start of our LineList.
    Definition: parsev2.h:599
    ParseV2(const char *file_name)
    Constructor.
    Definition: parsev2.cpp:52
    LineList::const_iterator LineListIt
    Iterator into a LineList.
    Definition: parsev2.h:173
    ~ParseV2()
    Destructor.
    Definition: parsev2.h:591
    LineListIt end() const
    Get an iterator pointing just past the end of our LineList.
    Definition: parsev2.h:608
    std::vector< std::string > StringList
    List of tokens as returned by boost::algorithm::split.
    Definition: parsev2.h:45
    std::vector< Line * > LineList
    A list of pointers to Line objects.
    Definition: parsev2.h:167
    StringList::const_iterator StringListIt
    Iterator into a StringList.
    Definition: parsev2.h:50
    mysql++-3.3.0/doc/html/refman/ssx/inherit_graph_3.png000644 000765 000024 00000013272 14042362131 023165 0ustar00tangentstaff000000 000000 ‰PNG  IHDRpXcó;‡bKGDÿÿÿ ½§“oIDATxœí}PSWÞÇOB‚$Ñ@‚ШˆV¨N»ŽX†V¶«â cÅŠt¡ë죫]wjÛq´Ã£³Ú¨[_hËv:ણ‚ŽØêTV¶¸¾¬o V·]EBb@&¼„ļÜ{ž?NŸ»1 !` €¿Ïô{Ï=÷œ_äæÛ“sÎý}Ycà Øþ€‘ >Ÿ‚€Ïàø;`äpåʕݻwû; ` ˜9sæúõë=× à34ÍñãÇý0 \½zõÊ•+½Vƒ àc***üà{–.]êM5¡à3@Pð (ø |LʃÍÖ­[ÛÚÚȱP(\¼xñ´iÓ|ÛEeeå?þXPPàÔobbâ’%KB:N©T ‚W_}•Ïç{-!>>þÝwßݺuëŽ;ž>}ºeË–?ÿùÏ<ÏËÛBŸ|òIHHH>˜×´µµ‘G5 9#`°)++»}û6‡Ãáp8*•*==}ÕªU¾í‚Ïç6440%*•ª°°0((!ôÕW_ÅÆÆnÞ¼yÁ‚S§N}ôè‘çh¯]»Öí€Ùl¶X,J¥’¦i£Ñ¸gÏ‹Åâáv…BÑý,÷Fî”)SjjjBL„ÔQ`ðÇŽ󿉒ÉdŸ}ösZRRÂçó;::˜’¶¶6š¦î2›Íf³cLQTss³k³ƒ¢(rLQTTTÔöíÛ™«r¹<""Âf³uwws8œï¾ûcl2™’““·lÙâ}´N12 nà ·—””xhߊ¢4k¹SË‹ÅâøO'•JÏž=ëz/MÓ*•Êd29•ÛívÇà=•••••Õk5¡~&%%Åd2577#„ªªª&Mš” ‘HȦ̦¦¦   ÒÒÒèèèóçÏÅÇÇ'$$DGG_ºt‰´P[[ûòË/GEE‰ÅâÂÂBŒ1›ÍÎÉÉ)//gz©¨¨ÈÎÎæp8J¥R$Í;!ÄãñæÌ™óý÷ß#„äryzz:©ìxì–†††£ÑèX膇är¹T*miiA•••EGG?~ü!TYYž˜˜³k×®žZ¾víÚ„ >üðñcdž††fgg›ÍæW^y¥¥¥%33³¬¬Ì1Â3gÎH$’3f„„„¬[·Ž¢¨úúz¡P¸ÿþððp±XœššÚÙÙÙ—?ZÏx#Nà ÞP êëëëëë«««çÍ›7mÚ4riúôéG¥iZ«ÕŽ3F©T’!À¬Y³Îž=ûÓO?‰D¢ööv«Õº}ûö””ŒqWWWddäæÍ›»»»ãããɈàÖ­[¡û÷ïcŒÉo…Bá‰Ñh”Édûöíß={vçΤÜñX&“eddü¯ƒáÁƒ¡®®.f„ÒS2™lÑ¢EŽ·———cŒívûŒ3–,Y¢ÕjCBB>Œ1V«Õ<ïÈ‘#$‹U__ï¶e"¦¿ÿýï-‹V«/**Â#Çy<Þ·ß~‹1&5÷ìÙC®¾óÎ;F£ñƉäàÁƒžÿj^ŽP@PŸá½  @ ‰RSS•J%Ƙ¢¨»wïÒ4ÝÒÒRSSvøðaò½páÆøþýûr¹¼©©‰¦é§OŸbŒ:$‹ ƒÑh4ùùùsæÌ!%%%mÛ¶ c,—˸pá„ fÏžÝÙÙé9ÚéÓ§/w@§Ó¹ JOaÈd²”””ìß¿Ÿ´|ïÞ=>ŸŸ°lÙ2R²sçΉ'2]Ÿ8qB­V»m™Jkk+©)—Ëñ‹_`w‚²sçθ¸8¦Íüüü7Þxƒ\U©T¤pñâÅ›6mòüWóRP`•ðŸ~úéºuëœ Ùlö©S§Š‹‹Ùlvrrr@@siêÔ©¡ñãÇ8p`÷îÝüñ”)SŠŠŠ/^üðáC£ÑH*^~ùer››{èСüüüŠŠŠ¼¼<¦BWW×ÚµkÏœ9STT´fÍ‹å9Ú¼¼<§h] xã½÷Þs;ëkÖ¬ÀÀÀW_}U&“ýõ¯%7>|X ÄÄÄp¹Üßüæ7‹…ióàÁƒ¡ÒÒR¦dÇŽN_äädŒq~~>3Ïâxì6Z×9”žÂpg!„®_¿þþûï'$$i ¿ýío<¯®®c¼wï^.—+‘H&MšTYYÙÓ¼té’@ ˜7o^ll,ÇËÉɱÛíã>ø€Çã:tˆ‰c,—Ë9ŽL& …¿ûÝïl6¹JzÇ/_¾ü£>òüWór……!ë=à#ÊËËÉüâó4¢R©BBBÈFÒ¦¦¦ÈÈHÇ9Œñ½{÷ž>}šœœìXÞÝÝ]WW'•JÇŽû<½?'> Ãl6·´´ÄÅÅyhùòåËóçÏooo×h4£G‰DLÍöööÑ£Gs8ÏÌf´··ß¿ÿ¥—^‹Åý‹Š¤/è57Ì¡C Ç/RTT”ÓU‹5iÒ$×»È&ú Ì|ÇsR-3?åÜnê yíµ×ž30o€9~Œ3fp¢¯€ Àð#))éܹsþŽÂ (ø ÀgPLð¿èÀ¤ìˆâÉã_Ô¼õÖ”3Üosò 6¥×:Ÿ¨ÕOŸƒ¦&B½ì:F6 (#"%_}Áb±'ö‰ Pýøq‡F£×hôjµ^£yBŽ››;(ŠFñù11¡±±âñã%³g'j4w·mAy¡yFPHn…ôJpp°k®¶6ã—_Ö|ýõŠ¢ívšËåh4ú¾¶ÜÑabä ¥¥S£Ñ›ÍV„—+–É"fÏNŒˆJ¥Á±±âØØPÇÍ åå:„hǤÀˆáÑ£GÞl®yFP:::îܹ3`!ÏËäÉ“™ºBz}wiéÅ/¾¨±ZívûϹ¹ìvJ­îQP…ãñãN®³±ñɃ-&Ó3Â!‘“’bÆ'ŽÇÄ„²ÙÞ=–-[öºdeeõZ癲:îÎ;o¼ñÆô—óçÏ3‚â %”ÝN9ÕLJŠ>vì}2ÊpœéxøPg4ZB\n@h¨@" &zÁÇØ±¢€˜§úÌ¡ 3xðd2It´ˆË ðP| Êðàôé[~øînB¨×ÁÆ8&F6(¡ÀA,XÌãéù|É£GÝ7n4\¾ü@¥jÃØíØÕ-A£ÑOœ(õK¨À‹Ì”ŽŽÏÎI}b$Ù,°d²°™3'/]úB¨³Ó|ó¦úæÍÆÚÚF…¢¡½ÝÌf³¸\ŽÕjCˆåa¡Ž!'(Ä9é“O>ñ‰ ”••I¥RÇ<ȧ 2eÊþýûß|óÍA°Y yii ii äT£Ñ×Ö6Þ¼ÙxýzÃ;M ~ ÿ‚b·Ûm6ùÚ[,»Ý.<ßBÓ´N§“JŸŠcŒ;;;ƒƒƒ{ºËjµ>}úT(öZè–¼¼¼>ÓÑ4ÝÔÔ亇§½½](2i8݆¡×ëI²ßèèhÇDžcµZᤒEuuuùd¸D–o23§¡Ÿ·Æ÷’Ђ>¯Ö××ÉåòÈÈH±X¼qãÆM›6‰D¢ààà?üá¡¥K—®\¹’T¶Ûí‘‘‘$˶[‹¦o¾ù&<<\*•’äÃúÓŸ˜ŽÜZ¹-D}tiB#Øf !„— ‘ô.µà{óA?Ï9#I6ÊÜÜÜÖÖÖ „.\ØÒÒò÷¿ÿ!ÔÚÚZ^^jµZ1ÆUUUB¡Ðl6?xðÀÕ¢‰˜ÂíÙ³Çjµž>}šÃá|ôÑGL’N·VF=ùypi6Kãššš–––^«€é§ Œäz½!Dlb1Æ\.÷òåËf³Y(’ïÕÊ•+W¬X{°hÚ½{·T*eZNMMu'+£žüzbÄØ,a`8ÐÏ92BáN˜0²X,Š¢‚‚‚²²²Ž?žžž~òäI’ Ý­E“J¥JIIaÚt5qke䥿à e³þ¥Ÿû¯æ& øÿWO~ýë_WVVVWWóx<òf±hº~ýzKK˲eËV¯^m6›Åb1±D!466:5H¬ŒÈ1ceä¶°8Ú,‘ÈÃÂÂÈØP\\üèÑ#ÆfI£Ñh4¥RùùçŸ{FXXØÝ»w™Ó¶Yÿ2 /t¤¥¥mذáÝwß%_·M¿üå/ Emm-BH¡P\¹rÅ©·VFn =¸4½X6Kà_ÿx?‡B&AÈ—çÁƒä—Ë%¦Öã?þ!tïÞ=rÚ“EÓ¶mÛÇ?kÖ,§9W+£žü<¸4¹~äáh³„aôYP¼dß¾}o¾ù¦c MÓuuu7oÞ¤iÚ±\¯×ß½{—¢¨ÜÜ\ÇïÕ¥K—‚ƒƒ1ÆjµZ¯×{(ô-&“©¡¡Á©,Çh4š^Ã0 6›ÍévƒÁpýúõ¶¶¶ç úø~§l{{{]]ÝÞ½{™}„ž,šD"‘£ï™+®VF=ú„am³D Û`+ 0øø^PÔjõÿøÇµk×.\¸°O7Ž?>44”9uke4Dü†HŽ8m½ÿíoS ù;(à…2¶ 3¶¡Þ^ܺõí+^÷oÀÀ È{9è ŠÂõõmÿügcOé h[,6„B866Ôsk0€  NŸ¾õÁß1 –ˆ‹BÈjuŸ2&ð (à ’)êñ¿þ¥') )÷2ò3,K£yÈÀ s(Ã2‡ÂázMR=jÇb±#„؉ø`ÄÆ†ŽJ|¹¤Ò`’T¾F(ÃŒÐPÁ† sW¬Hõ + Wsçî06[, 6€Ïq3Bñc4€g¼1úb±X ¾òå—yn[ðÞè‹È£/GÏ@à…娱cï¼ósúÌ%88xòäɃà-NyíÈhå½÷^w´"åp<,ñó“’øIIÏìÇÃëtjµ^­&îÅæÉ MMí6…5ŠCdÅñ?+pݺ÷gΜ9@ú¸ºD>3B†/Žfé;v,ÍÍMéý/põ4Ðp;¢±Ù¨¦¦öøøÏ}Õ 0bAQYè^¸Ü€qãÄCR(À˜ÒÀg€ à3à'0€8:7 …ÂÅ‹O›6Í·]TVVþøãNý&&&.Y²!¤Óé”J%I@Áçóý-Yn–®À@ÊÊÊnß¾Íáp8ŽJ¥JOOï“éš7ðùü††¦D¥R!„¾úê«ØØØÍ›7/X°`êÔ©$ £%½(Šîg¸ÅÖ)S¦ÔÔÔ „ÁÍ¡gS@€÷ „Ž;湎L&ûì³Ï˜Ó’’>ŸßÑÑÁ”´µµ9eðÛÍf³ÙŒ1¦(ª¹¹ÙµYƒÁ@Q9¦(***jûöíÌU¹\a³Ùº»»9±y1™LÉÉÉ[¶lño´¤—’’a¸BQ“-ÐCË‹Åâ3cíâMÓ*•Êd29•ÛívƒÁàe`®ÏŒP€Á#%%Åd2577#„ªªª&Mš” ‘HÖ¯_"Æo¥¥¥ÑÑÑçÏŸwk5éêâÈf³srrÊËË™^***²³³9ŽR©‰DsçÎEñx¼9sæ|ÿý÷ÈkŸÉˆÖÃ?Îq³ôRŠÀ äÝ¥  €˜ TWWÏ›7oÚ´iäÒôéÓ=JÓ´V«3fŒR©$¿GfÍšuöìÙŸ~úÉÕjÒ­‹#ÆøÖ­[¡û÷ïcŒÉo…Bá‰Ñh”ÉdûöíÃ}&!Ú‘äféú € ýÄKA @$¥¦¦*•JŒ1EQwïÞ¥išäE ;|ø0ùŠã·V“n]IGIIIÛ¶mÃËårÆó€áÂ… &L˜={vgg§ß£In–®Ï¬ò˧Ÿ~ºnÝ:§B6›}êÔ©ââb6›œœðߤ-ĤѭÕdO.Ž¡ÜÜÜC‡åççWTTäåý÷ÅÈ®®®µkמ9s¦¨¨hÍš5½¾Ð88ÑŽ`7KÀÔÖÖÞ¸q#)) !äjŸD¬&³³³[[[KJJV¯^=wî\ÆÅ‘è‚N§ëîî&õsrr6nÜXUU¥P(Ž?N )ŠÊÈÈuuuáááC'Úžpt³¬®®f±Xaaad†P\\œ™™é¶å¦¦&âfÉãñPon–/^dN}ëf “²€hll‰D ¡“'O>|øÐé vk5Ù“‹#B(***==}åÊ•iiiŒ·Éµk×nß¾-—Ë­V«V«ÕjµÄúÖƒÏäàD;’Ý,{ý™nA}_6f°ÙliiiáááqqqË—/_µjUdd¤B¡@‘5Ëž¬&]]™6<ˆ*--eJvìØáô´'''c>“ƒíHr³t}@P€~â x¦¡¡Ùò Õj¶xôd5éäâ8hø1Ú!ëféú @> Ÿ¸æÂüÈåË—çÏŸßÞÞ>˜º>0‡#!âf ‚#¤¤¤sçÎù; | >Ÿ‚€Ï€­÷@ÿùË_þRQQáï(€! ÐO²²²üàg²²²˜°± Ÿs(ø | >ŸñÃçv~wW‹mIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/bdwn.png000644 000765 000024 00000000223 14042362131 021042 0ustar00tangentstaff000000 000000 ‰PNG  IHDR5åZIDATxíË € DŸP–1ñlžmÀ r±j².e è†D[ØÉ¾ÙÏÔ¼µ¦ã´Þ|陣6€Všë3´Å?Ls'(}¬>+ žKó÷¥¿ch`‚ ^׃ÞnIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1ImplementationExtensionOption__coll__graph.png000644 000765 000024 00000015655 14042362131 033563 0ustar00tangentstaff000000 000000 ‰PNG  IHDR´“'d3¼sRGB®ÎégIDATxí]˜SE½l£)½JˆÈ'ERU¤übE*¢¨ˆb¡"iÒ¤JGz¾”•ºRvùçÜežÙl²» Éc“½÷û’7oÞÔ3gîÜ)ÉK£´ˆ $„I=¤‚# „"Bè jN©LX°@P¯^=š7o^°TÇözܼy“Ò¤Ic{¾¾Î0h}âÄ Ú¼y3U¬XÑ×}z!!!„µ` ´˜AO×ÔUA!têjï ¯­:è›8uU0UzÓ¦M4þ|þ,^¼˜®\¹âóÖ†-Š<.]º/íE‹Ñ™3gØïßÿ%|’’5kÖXqLØ#GŽÐ®]»Ì­\HU„îÝ»7}óÍ7´zõjZ°`Ýwß}ô믿:Ar{·˜XuïÞ&L˜`%´oß>zúé§éêÕ«Ô¤IªU«µjՊ݉uªwÞy‡6lØ`¥ÇÁƒyòÏSn,R¡Qkªÿþ4xð`zå•WhÔ¨Q ưaèT©RT¦LúöÛoÙ¯[·nÔ¹sg*Z´(ÅÆÆ²;_¾|tÿý÷Ó–-[8Ì/¿üÂñJ”(A#FŒ`¿–-[Ò¤I“د)S¦PݺuiïÞ½tôèQ&éÔ©SéÔ©S4mÚ4÷ÄOÐþýûÉߊì䀖‡–±Ÿzê)jܸ1åΛÞ|óMyáÂjÖ¬åÉ“‡žyæ:}ú´S A~‹³Á *TPzÙ.Ѫèµj¥^i*­©•&*_£¢¢TÖ¬YÕÎ;•ÎÙ­5§zùå—UáÂ…Õ¬Y³ÔŠ+TéÒ¥Õ¹sçÔ!C”Ö°J“\åÌ™SiCMŸ>ãíÙ³GEFFªˆˆ¥—¹<åÊ•S'NT111JŽý4yÕ]wÝ¥8À÷½zõâðÇŽSz$a¿Ê•+«¹sç²Û| >\½öÚkj÷îÝ8ƒ£ÆŽ«V­Z¥2fÌÈñ ¤4ɹM›6U/¼ð‚‰êöªGuãÆ ·ÏéAЬC'Wï¬\¹’:DiÓ¦¥гÏ>K¡¡¡¤IAš´´}ûv‚–»|ù2'ùöÛoSƒ H“”4Ù¨k×®¬;tèÀá3dÈ@š”Ú{íÚµÔºukª]»6kßÇ{Œ5jÆ )<<œ?š„¬í1@ûCúöíËW|õéÓÇr'æ(T¨a4€`„€öŸ={6éDË–-£"EŠîH‰%tÏR¡;vìHmÚ´‰×ú«T©ÂþÕªU#ÎH®\¹Ø™7o^&ýøñãé­·Þ¢:uêPõêÕIkbîÔ¼ys*_¾<‡oÑ¢ÛëgÏž¥çž{ŽÒ§OÏþ={öd¢Ï™3‡ªV­Ê~Þ~i oE ãͺlÙ²\¦L™2Q§N¬0©Á‘êlhWº|ùr&âW_}Å…vÖÃl¼ Ú¤ 1cÆÐgŸ}F°—.]Ê6,V+Ú·oOè(K–,!mVp¼F‘6aèûï¿'²mÛ6¾Çê…3™1B ­èèhî8A]¿~íwØðp'%8ÍŒ‰iñâÅ y¥&IU„v·µ‹ ÛñãÇ©R¥Jšúß]DG_Ó¿d³ÃÈ!´@5IÂܸr%ÖÜò ¾E‹vë廤OÍY‘ÄáBhàJ~à£GÏê÷gDˆˆ¥E‹äG® €ñ‘‡ÚG@:'3mÚF­‘}Iÿü*¿6áññ ²±â&R¢D7þk-LÍ ]ìÆÁ R80PíŒHQ|n !ômÁç>rdäúóÏ“`É’Ýô÷ßgèÿ‹;èŸ/_ýÀÜî#˯š³^#ৈyóf&| ÇŽÕÁXªU«”Ÿr“d bC$ä¡mhFØÎÁršÍ¸n+ !ômÁ—¼È˜š‰aòbH(oB{‹œÄK‘¡mh19lùVBh°“Ã…Ðö,9Ù‡€hhû°–œl@@mÈ’…}¡íÃZr²!´ Kö! „¶kœ¸#úï—+6d™j³BÛÐôø¬~{„ 9IBhá@P! „ªæ”Ê¡mà@ÜI;±¡m€š„Ð6 wÒNlh BÛ²äa¢¡mÀZNÛÙò­,„Ð6`-§ílYmÈ’“}ˆ†¶k19lùVBh°“Ã…Ðö,9Ù‡@ÀýsÞ‡íøÒvû ò>§ðð·^tØûDî@Ì}ûöéx*qrö>Ë€ûç$:gΜtúôiïk-1“Dïÿ믿ŽÐbC'Ù´ BRkIY“D@$D 8:¹à.\¸P¿qêÏ’% =ôÐCzbæÛþE[¶l¡ºuëZźté­ZµŠüqý~•PúçŸùÔ`¶zõjýÖ¬ËT®\9ªQ£F²þóŠM›6qø¤òöç¾má„V“&MhΜ9LŸ~ú‰Š)¢ÿÖö˜ÏKX¯^=ý?ÐZéNœ8‘Þ{ï=:|ø0U®\™š7oN 4 =zXa\9>ýôSzê©§hݺutüøqêÖ­Õ®]›¢££]g¿7ÞxƒÖ¯_O/^$t`€^ô(9uê”Ò«I–9cÆŒêÀV8MõÅ_¨ëׯ«W_}Uéwƒ«ªU«ª+Vp˜G}Ti)MP¥I¢´vä|:tèÀÏÏŸ?¯š6mªrçÎÍaPˆ&«êÓ§»ñU§N5pà@Õ½{wÕ¥Kö×W…‡‡«#GŽ(M~¥‰Ëþ“&Mâp»wïVz)R8q‚ýÍÊ<`À5räHÕ²eKU¾|yU¸pa5{öl5fÌ•!CU @µaÃÕ¨Q#޶råJU¶lY•5kVÕ¶m[«t'SmÚ´Q<ð€Ê—/Ÿ5j”ÉÂíeœ;w®Ûç)õAPú›o¾Q¿üò‹êß¿¿J›6­Úµk—š1c†zøá‡Udd¤1bƒ†õЭêׯÏ~ðàAU¡B&á AƒTãÆ9 û…^à6:uªº÷Þ{Ù ’ƒ¸z$PÚ P 2ÄoêâYïÞ½ÙIjüøñêÁd?ǯ~ýú©_|‘ËŸ+W.µwï^…ü´9¢®\¹¢ªW¯®¦M›Æe*UªG­R¥ŠúüóÏÕÆ9ÜâÅ‹ÕðáÃU¶lÙ¸£6L•,YÒ1—î@%tÐÚÐ~uã“Öb”#GÒ KeÊ”!ݘ”={vý¾À ´lÙ2k=ç-4i©bÅŠT¬X1æ.¾ÐÐ!NžŒ{'‹ ²|ùrÎ÷˜X‰‰‰!×Y0GЦ†å­GÒ&ß›ÝÕ°°0®‡(ÈAMhWm…É“¶'IçúE>»l\¬Zà3kÖ,ÒfiÓ€0ùƒfÖ¶1/^œÖ¬Yc%ߢE î<›7o&LF!?üð_11ÍŸ??»ñ…IVA ¯M &®6ô;ÁãÞŽÑE›<ÔªU+ rã™6%HϨR¥Jì¯md¾âK›G<ªhÓD¿ðó OŠW`¬€AìZ“# [«Úþ¥ùóçSÁ‚IÛÒlN ¤‰óì³Ï’ž€1É  1܃, ˆŠ¥8hz#Ðþ0m@ ²víZý‚ÍEñ– wîÜɦ†ÿsçαFד8Òv=i[˜´mΚÚT¶4oÞ<Ò“PN䇹„¥Â¡C‡rYõ$^yåŽ@(?Ì™Ç{Œ—,aÞ`ùPÛ蜆ù2õ4÷Át ¸ÃI8Ã5ÚÛ9Ëu[¬õâL4¦žÈLGAú°kAzGÙ¿?ÛÈéÓ§wôö™ÄE'*Z´¨•æÇÌe騱#—Ó˜ÓÉÑlw½bBz"juRø{"8ËѾ}{Â5$h5tb-j4©#9ã{ÚÑn˜þGóÄ9LfÅ™ÌxŽÎ ó(5Jª$t 5´Yµ´r߉ò ¡ïêæ û\$y¤ºUŽäÁ"¡€›bBçÎîM©!C Ë­Ï\,K©EtY.ùÅŠKX|ë‰É–´IjÖ¨ýqR/¹-Ò+*IŸº ¤º¥´²ŠÉá牌¼@GŽDéQ%-]ºÇϹIòBh?s`úô¼}UŸYëçÜ$y!´Ÿ9ðóÏkõ¦HÜöôòåûô–tŒŸsLÝÉ ¡ýØþû÷ŸÖ;š­""Âô–ûë^¾G@í{L­§NݨO»Å6‚'ÌŽqãþ;Ôd‡ÏBû Ê„ Mš´Žbcã~×hžnÙrXLºlnåêc„Ð>Ô$·mÛQ}êš¹µ®aa¡úXçVë^¾E@í[<­Ô&OþCOã×[žÚqùrŒþ…Š˜Ž˜øÒ-g9|‰¦CZóçïÔËu¤Bõß/Dp›B»v§K—®ÒÝw§sˆ!N_ p[ß¾¨´iÀv¾r%n¹nòäõLâ~ýsÖ¡”.]¸ÅHuyˆ†öS“c‹Ûls§O®5u¨þ-¢hd?Ám%+6´…ÿ05‚ùgOþCÎó”…Оcæq ØÍv ÊãJ¦BèÒR ß „ö Ž’J A@mCCˆ mÈ·²BÛ€µØÐ6€,„¶dÉÉ>DCÛ‡µädBh@–,ìC@mÖ’“ ¡mY²°!´ X‡„ècw„ˆ¿Bûa¾~…þ¬ÿ±¿d!„ö ¬’èB@mòbrØò­,„Ð6`-&‡ ¡íYr²ÑÐ6`-&‡ ßÊBmÖbrزÚ>%'û mÖ’“ ¡mYøÛò­,„Ð6`-ümYmÈ’“hía‰~Y»9t ׸Ã>Á!$$­ Íè“´45$ Þ}÷]‹¿pÄûç$MhjÙ²%µnÝÚÆ.%Y Þ!°fÍ»ÒElhG4Ä𡾠¥Ž¡ÑwÀ#φNNmð&×;wZAóæÍK ´î}娵keÏžòäÉc%‰7›¦K—ÎÊïܹs”5kVë¹+ÇÙ³géäÉ“T¦LW“å·eË*[¶¬þшd…·+Ðþýû¹þÀÉÙ°aƒþÑÁï~AÜ¢E‹RΜ9=IÆã°Þ–דŒ<ÖÐÇŽ£~ýú1©wìØAß}÷uêÔ)@žÂUØeË–Ñ?ü`=ÒXêÑ£ýý÷ßôÇÐK/½DC† ¡.]ºº”qøðáî'ËÀ€táÂ…d…½Ý@sçÎ¥™3gºM¤øì³ÏøùîÝ»õ[¶N» ëîA¯^½hõêÕ´yófëå2xRåqɧ·åu“œKo54RÁë‰Û¶mË ÆÆÆR½zõèàÁƒú]ÖiäÈ‘tæÌzøá‡I/©ÐòåËiýúõtàÀzíµ×èÔ©S4qâDýº†«Ô¦Mzâ‰'èСC4hÐ ~V£F zë­·Øÿí·ßæpÐÊǤ۾}{voܸ‘>ÿüszôÑG¹”,Y’jÕªE]»v¥Ž;Æ«t‡Xav\µjUþ‹[Ì’zè!zÿý÷iÞ¼y´}ûvi0!ÿjÕªYiDGGs'Ú¶m•*UŠÞ{ï=ý§æWhðàÁ”!Cýú㿨aÆ´iÓ&®:]“&M\Ö8|ùå—¬õ1¡Þk:qîܹ)mÚ´ ðìß¿?EFFR®\¹èÚµk<‚]¿~†ÊXgË–Ìý÷ßO¨oéÒ¥iÉ’%T¨P!ú裬÷¤·hÑ"žFFZÀ«\>ø uïÞ*W®¬ßÚ5Žëò`4vn'Wõ€‚Û»w/}ûí·tøðaª]»6c‰rcÄõ¦¼V#$áðXC#=T~ÅŠ„e>4 ^&! š°qãÆ4jÔ(&´#HðÛo¿ÑÓO?Í xh¼?ü~þùg.Þ÷ßÏCcPÐ %J”àʯ]÷öÕ¥K—2i1ìúé§T¥JŽ‹r”/_žÝ0}Ìð ÁQ0º ìhØ… 2¿øâ ^ú9qâÁ=+‡ÇœÉä O(`ݬY36¥€/:„¶¨S§wä{ôèQ®ïW_}ÅÊ#› ä4Œ€P.;}útý^ò(jРA¼ò$·ÿüó~ÌOœòA›¢,0ý¼-¯)wRW¯ ­m¶`ÁÖÖ_ý5…„„ðPÛlÊ”)úÕeçøƒ@Ø»ùóçgàA TZC²gÏÖÐXºuë²94A\ÜCÐþ|@è4Ð6'Ÿ|’î»ï>vc-Ý›=n}AƒBkÁ^D™ .L  4CǨY³&Ȇih@ÚÊ”D|æ™g˜ÔЪÈÚ i&V?h=eΗ/‡GZÀ"<<Ü%ž¨{XX“ß”kݺu¬0@t`qüøqîœ8Còâ‹/2æ+VŒgž@c+VÌú ýêׯO™3gfÅ„ÊÔçÆnÛɹ0ƒî¹çš}úð3ŽŒ/”‚Ì”)S‚ Œ”ëüùóæ– s&ÆóÏ?ÏÏР¡¡¡œ&Â!.ñÝÕa >04’ž&Œ¹‚@ø|&-“‡sú1]MAb´“óØÓz´k׎Š)B0ï0Ò¡xS^7©«WÚU¢ÐF°—`J€Ð°C ¨&<†±¾}ûòp‰á XЈ<ðOô`‡ÃÖ‚p˜â1 ÁP »Ã/ˆnFØïhnŒ$žÊÖ­[y‚û矲¦„Mnö;4óË/¿ÌÖqµÇ„q¾ÂftW?ç°æ 1´43Lhí;!˜ÑÇÄÄp‡0ö£«r ü蜎£ƒ«pŽ~žÔv7lh`è O¤êl`(®ÆÌpÌÿvÜŽåñ¤˜çO(-Wr»å5g90²ñJC›È®®Žv™+2#Ž£}mÒ€Ýé8q0þwâê®Ü¦,®Êož¹»zR?ÇÕWx"-W‚¥<ˆcy<©GR›^þ(¯kdüJ¤i&yIKPf] юù»ø°é±Û‰ð"þAàÎŒíþ©Ëm§ Mä¨\%8a¶ÏaÇc’‹¬9'6ŤK’—/_&l‰øÑÐ`‹UØÙØr\EÀ"6#09uÞiÄä›&˜aC+1¬Â€èè˜$! w»n1Õ í°µ5rG2#:Vt@TW;ØöÅÒ¶•1‰„vÅz+$±FKqX^3‚u{tˆã’›óîž /W÷¡Ýc“à ÎDciv4Ö!¿ëZX?Ç9ˆ»F¬ßÁæ éÀüÀv?vùpöCäöI¡bÛOø`×ÚÚ»‡ØL‚¸Úi„ ýÉ'Ÿð¤a`z´Ò'ó°£ÍŒµfDg1fг¿Ü»FÀç;…®³ >_“8sØ 5Ll§ÙÑAxØã˜ôᜄˆx&¶ìzV¤À í¸ƒç\ W;ÎdFl]ã°“ˆï“ÃwXZÇI}˜¤$å!BhK,xR»Œ‰Å•g¾A@V9|ƒ£¤’RгtKô~2!Á `8  Xü…#Þ*GJédRAÀ[Ääð9‰—"B§Èf‘By‹€Ú[ä$^ŠDàÿ𒘙§4ÇIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/genv2_8h_source.html000644 000765 000024 00000017150 14042362131 023277 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: genv2.h Source File
    MySQL++ SSQLS v2 Translator  3.3.0
    genv2.h
    1 /***********************************************************************
    2  ssx/genv2.h - Mechanism for generating SSQLS v2 DSL code from
    3  an SSQLS v2 parse result. Implements ssqlsxlat -o flag.
    4 
    5  Copyright (c) 2009 by Warren Young. Others may also hold copyrights
    6  on code in this file. See the CREDITS.txt file in the top directory
    7  of the distribution for details.
    8 
    9  This file is part of MySQL++.
    10 
    11  MySQL++ is free software; you can redistribute it and/or modify it
    12  under the terms of the GNU Lesser General Public License as published
    13  by the Free Software Foundation; either version 2.1 of the License, or
    14  (at your option) any later version.
    15 
    16  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
    17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
    19  License for more details.
    20 
    21  You should have received a copy of the GNU Lesser General Public
    22  License along with MySQL++; if not, write to the Free Software
    23  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
    24  USA
    25 ***********************************************************************/
    26 
    27 #if !defined(MYSQLPP_SSX_GENV2_H)
    28 #define MYSQLPP_SSX_GENV2_H
    29 
    30 class ParseV2;
    31 extern bool generate_ssqls2(const char* file_name, const ParseV2* pparse);
    32 
    33 #endif // !defined(MYSQLPP_SSX_GENV2_H)
    Parses SSQLS v2 documents and holds the parse result.
    Definition: parsev2.h:42
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1FileException.html000644 000765 000024 00000014374 14042362131 025733 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: ParseV2::FileException Class Reference
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2::FileException Class Reference

    Exception object thrown to indicate a file I/O error. More...

    #include <parsev2.h>

    Inheritance diagram for ParseV2::FileException:
    Collaboration diagram for ParseV2::FileException:

    Public Member Functions

     FileException (const std::string &what)
     Constructor. More...
     

    Detailed Description

    Exception object thrown to indicate a file I/O error.

    Exception types

    Constructor & Destructor Documentation

    ◆ FileException()

    ParseV2::FileException::FileException ( const std::string &  what)
    inline

    Constructor.

    Parameters
    whatdescription of what went wrong reading the SSQLS v2 file

    The documentation for this class was generated from the following file:
    mysql++-3.3.0/doc/html/refman/ssx/graph_legend.html000644 000765 000024 00000014510 14042362131 022713 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Graph Legend
    MySQL++ SSQLS v2 Translator  3.3.0
    Graph Legend

    This page explains how to interpret the graphs that are generated by doxygen.

    Consider the following example:

    /*! Invisible class because of truncation */
    class Invisible { };
    /*! Truncated class, inheritance relation is hidden */
    class Truncated : public Invisible { };
    /* Class not documented with doxygen comments */
    class Undocumented { };
    /*! Class that is inherited using public inheritance */
    class PublicBase : public Truncated { };
    /*! A template class */
    template<class T> class Templ { };
    /*! Class that is inherited using protected inheritance */
    class ProtectedBase { };
    /*! Class that is inherited using private inheritance */
    class PrivateBase { };
    /*! Class that is used by the Inherited class */
    class Used { };
    /*! Super class that inherits a number of other classes */
    class Inherited : public PublicBase,
    protected ProtectedBase,
    private PrivateBase,
    public Undocumented,
    public Templ<int>
    {
    private:
    Used *m_usedClass;
    };

    This will result in the following graph:

    The boxes in the above graph have the following meaning:

    • A filled gray box represents the struct or class for which the graph is generated.
    • A box with a black border denotes a documented struct or class.
    • A box with a gray border denotes an undocumented struct or class.
    • 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.

    The arrows have the following meaning:

    • A dark blue arrow is used to visualize a public inheritance relation between two classes.
    • A dark green arrow is used for protected inheritance.
    • A dark red arrow is used for private inheritance.
    • A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
    • A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1ExceptionOnSchemaMismatchOption.html000644 000765 000024 00000041013 14042362131 031416 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: ParseV2::ExceptionOnSchemaMismatchOption Class Reference
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2::ExceptionOnSchemaMismatchOption Class Reference

    'option exception_on_schema_mismatch' directive line More...

    #include <parsev2.h>

    Inheritance diagram for ParseV2::ExceptionOnSchemaMismatchOption:
    Collaboration diagram for ParseV2::ExceptionOnSchemaMismatchOption:

    Public Member Functions

     ExceptionOnSchemaMismatchOption (const std::string &value)
     Constructor.
     
     operator bool () const
     Return true if our emitted C++ code is supposed to throw an exception on schema mismatches.
     
    void print (std::ostream &os) const
     Print the option description out to a stream in SSQLS v2 form.
     
    - Public Member Functions inherited from ParseV2::Option
    virtual ~Option ()
     Virtual dtor, since this is a base class.
     
    - Public Member Functions inherited from ParseV2::Line
    virtual ~Line ()
     Virtual dtor, since this is a base class.
     

    Additional Inherited Members

    - Static Public Member Functions inherited from ParseV2::Option
    static Optionparse (const StringList &tl, bool subdirective, const File &file)
     Attempt to create an Option object from information in the passed StringList. More...
     
    - Static Public Member Functions inherited from ParseV2::Line
    static Lineparse (const StringList &tl, bool subdirective, const File &file)
     Virtual ctor, creating one of our subclass objects based on what we're passed. More...
     
    - Protected Member Functions inherited from ParseV2::Option
     Option (const std::string &value)
     Protected ctor, so we cannot be directly instantiated. More...
     
    const char * value () const
     Return the option's value in string form, unmodified from the original parse. More...
     
    - Protected Member Functions inherited from ParseV2::Line
     Line ()
     Protected ctor, to prevent instantiation.
     
    - Static Protected Member Functions inherited from ParseV2::Option
    static bool parse_bool (const std::string &value)
     Convert a string expressing a boolean value to a bool. More...
     

    Detailed Description

    'option exception_on_schema_mismatch' directive line


    The documentation for this class was generated from the following files:
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1ParseException__inherit__graph.png000644 000765 000024 00000012752 14042362131 031145 0ustar00tangentstaff000000 000000 ‰PNG  IHDR·p\ƒá“bKGDÿÿÿ ½§“ŸIDATxœíyTTçùÇ¿Ã:#2 Œ, (‹ŠÍÉiE BC‘`DD DR­¤.±ÑcTjMz@&ÕZc,‚P±›("(P.”}‡aæùýÁáÖaÑ0€—÷sÎ=ú.÷yŸ÷Þ/ï}Þ÷.# "ƒÁ?Nk · †¦`âfð&noaâfðM~ðà¦L3x„X,†µµµFlkl䮪ª‚\.×”yhhh@CCƒÆìklä+++˜™™i² ÆKŒ¦¯î,æfð&noaâfð&noÑè„òe¡¾¾;wîÄ'Ÿ|‘H¤±vöìÙƒêêjµe»ví‚D"ÑXÛ¡ºº{öìÁ_þòèëë«/ƒ¹455áÀ_ºüꫯ‘‘§OŸö؆ëù5GGG\¹r —Ë‘™™ ¥R9,¾ 6#näV(hooçFP¹\…BƒÛP*•¨¬¬„……E2"BCCŒŒŒúµÓÖÖ†ÖÖVˆÅâç*ë‹   üîw¿{®}žE©T¢´´VVVjËëêê ‹¡¥ÕsÜRçsmm-ÚÚÚ–––¸víšÊ>D„ÂÂB˜™™©½ªutt ±±qد:ê#w^^„B!ÂÃÃ1~üxH¥RlݺÛ·o‡±±1ŒŒŒ°~ýzÀ’%K°zõjn_…BñãÇ#66[[[888ÀÒÒ)))\ÝsçÎÁÔÔpqqA@@BCCU|ùñÇ1eÊüñ„••LLL€–––>Ë <<óçÏçluO÷Gxx8,,,PQQ s¤·´´Dyy9 >>¦¦¦˜>}:¬­­±oß>nß[·naÆŒ˜0a¤R)vìØ"êÓç×^{ ðññÁW_}…'Ož@"‘ ©© pᘛ›cΜ9H$øÃþ€ŽŽäååA,ãСC055…T*…«««Foȼ¤!®\¹Bª›››K(00ªªªèøñã€-ZDtéÒ%@UUUC&&&ÔÖÖFDDß}÷‰Åbjii¡ÜÜ\266¦ºº:jkk£O?ý”œ‰ˆ¨´´”„B!8p€ÚÚÚ(!!ttthóæÍT\\LH&“QJJ  µk×’\.§’’²µµ¥°°°>ˈˆ)""‚ëW÷´½½=y{{ÓŸþô'•-&&†ˆˆ Í™3‡/^L%%%$‘HèäÉ“DDTXXH"‘ˆ¢¢¢8Û€òòò¨±±‘ÆOü1=}ú” ÈÖÖ–Ž9үϔ˜˜¨r©¸¸˜D"?žˆˆÛïÀ\=jjj¢ôôt277§'N<—Fîß¿O÷ïß®}žƒ˜%îÇQmm- ‹/rutuu)55•ZZZH,s'dõêÕLDD="=== §ÒÒRR*•ÔÚÚJDDû÷ï' •v]]]{wUUW/<<œfÏžÝgÙ@°··'ggg VÙ:ÄÕÉÉÉ¡1cƃƒ-]º”ˈˆ ©S§ªØ‹¥ÂÂBúæ›oH*•’L&£¦¦&jjj¢mÛ¶Ñ‚ úõ¹7qGDDJ{Û¶m#777®^~~>WööÛoÓöíÛtºÐ´¸GTÌÝ#ëètº5eÊ®L  ££B¡~~~8sæ æÏŸ¸¸8DGG&OžŒãÇcÿþýزe †·ß~ùùùpvvViÏÎÎN­FFF7n—¶²²âV9ú*ï¾ûnŸ1÷Ô©Sáãヨ¨(®_ŸŸéÓ§«Ôõõõ<~üMMM˜9s¦JùŒ3^Øçüü|Ì™3G%ÏÆÆ† ÿ¨nhh ”››ËÕÑÕÕ¥ääd.½eË@999\žB¡ yóæ‘žžÍš5‹ìííéèÑ£\ùŸÿügÒÓӣɓ'“­­-Í›7OmÌm``@¿þõ¯iâĉ$‰hùòå¤P(ú,#êŒI§OŸÎµ×=mooOÔn7oÞ¤ßÿþ÷äààÀ‡¯¿þšD"eeeÑÁƒIWW—ÌÍÍiÚ´iÏÙ>yò$µµ5éêêÒÊ•+I.—÷ëóÆI$Ñ7ß|£suÆæ:::dooOb±˜Ö¬YCííí=ÎѲeËhóæÍ:ß]ŒŠ å‹ðùçŸÓ/ùËùJ¥’²²²èöíÛ¤T*{”×ÖÖRvv6uttP```’’’BFFFDÔ¹BQ[[; ²¡¢¹¹™žï¬i˜¸5Ì·ßföXúkoïÀ¥Kìãüš†‰[ƒ44´àòå,(ª_pÒÒbc3†É«Ñ·¹páÿÔ~š¬£ƒpõjd²§ÃàÕè‰[ƒœ9“ A7#/\¸;tÎŒB˜¸5Dee#~ü1ê–R* gΤ±W£ &n qöì­>Ÿ!!"¤§ç£¬¬n½]0qkˆØØ ttôý)`"àìÙ;CäÑèã¥{Aøe ¢¢uu-°°øßg’;:”Ë3FO¥nffþ{7zÐØ  Uλƒã(-ýëp»2Z`/3ø 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3x 7ƒ·0q3ø u#::š°m7mmC § »|ÝÔÓëoâìܹ³·"cÄðàÁœ9sFmY¯âvssÓ”? Æ Ò›¸YÌÍà-LÜ ÞÂÄÍà-LÜ Þ2(¿ |âÄ Ô××si¸¸¸`Ê”)ƒa~@¤¤¤àÉ“' TëߤI“ð‹_üPWW‡œœˆD"888@__@mŒ„~ªóãYV®\‰±cÇ©?Ý©¯¯Ç‰'°fÍèêꛃ2r'&&âñãÇÐÖÖ†¶¶6ÊË˱iÓ&ìÛ·o0Ì¡PˆÈÈH”••©ä———#22zz?KüóŸÿDhh(‚ƒƒQUU5 6FB?»üÈÉÉAkkkm¸~zåÊ•¸}û6 ½½>„R©_º´ß~Ÿ7o/^Ì¥pèÐ!¼ÿþû3f —ßÐÐCCC‚6ÚÚÚzzz "Èd2˜˜˜¨m¯©© œŸÿüçJ¥HJJ²e˸zW¯^…D"““är9>ûì3ìÝ»³gφ\.ÇÚµkqá¬\¹ò¥èg ,€——×€|V¡ºº¦¦¦ÏÕ.( ´µµ©ô·±± …0nÜ8û 6lÀáÇñÁÀÄÄ•••سg¶lÙwww¤§§ã£>‚««+$I¯íÚØØ ¤¤mmm8}ú4êëë±~ýzDGGãØ±cX¼x1¶nÝ '''”––âéÓ§€êêjìÚµ ;wîÄë¯¿Žšš¬_¿–––˜;w.š››q÷î]ÄÄÄ   ¡¡¡HMMÅ›o¾ù“59h⎊ŠÂéÓ§ººº°µµÅæÍ›t^’vìØ+++Ô××£¨¨ººº(,,„±±1`õêÕxõÕWQRR‚––$$$ÀÃÜøRSSÑÞÞŽ%K–€ˆ ‹áîîŽäädxyyÁÎÎvvvHJJŠ+põêULš4 S§NíáïÝ»wsss,X°àää'''®N÷ôHé' úGÖ…¡¡!@KK Û¶mêU«°qãF899aþüù:¯d¦¦¦pwwçú¸{÷nhkk÷Ù® €ÎØZGGR©>>>HJJBPPP¯º¸|ù2Œñú믤R)ÜÝÝqíÚ5Ì;¡P̘1………½Ú{MÜ!!!*±è³¤¦¦"..ZZZjGD;;;€¥¥%BCC¹‘ÌÆÆÁÁÁpuuEii)ZZZðÞ{ï©ìkkkËýßÓÓÿùϰbÅ $%%ÁÓÓS¥nss38€´´4¼÷Þ{ðööVWŽô~þêW¿ê3æ¶²²‚‹‹ ~øá•ç„ÊËË1iÒ$•º®®®Ðo»022âòMMM{]µy¶½éÓ§«äYXX 99™KK$îÿzzz\ìþS4q÷Å£GðüGŽáNîòåËÕÖ­©©ÁÌ™3áîº:œ?û÷ïÇìÙ³all ±XŒèèhNuuu\l8zô(ÒÓÓ‘““ƒÝ»wseJ¥[·n…P(ÄñãÇUêËÖÏþxðà®]»GGG>|ûöíƒ@ €‘‘7Çè">>óæÍë³Ýšš477C.—sÂÿþ÷¿˜0aBŸ~áîÝ»*y¹¹¹077çÒÝ€ÁbHnâ”——ÃÐЋK¯]»†²²2µ¤‡bûöíhll„D"Áܹs¹z³fÍBcc#¾ÿþ{nöýÑGáòåËÜþR©?ûÙÏ×^{ fff\YVVòòò…BêêjTWW£®®@çÉúᇸúÝÓ#©Ÿ2™ ¥¥¥=¶öövÈår|òÉ'ð÷÷GXXrssñí·ßè\í)((@jj*çcLL LLLúm—ˆpþüy@qq1®_¿Î…m:::\œý,sçÎÅãÇqýúu«*iii\X¤I†dävvvFll,üýý! áèè///üíoÃÞ½{UêΙ3ÿú׿àëë {{{466bÕªUÐ××Çøñã±eËDDDàØ±c¨­­…‡‡–.]ªbÃÓÓ{÷îEpp°Jþ½{÷ÐÜÜŒßþö·*ùööö8vì®_¿Ž””.>ížIýŒŒŒDddd¾üòK$&&BKK AAAÐÕÕźuë°ÿ~899aòäÉX·nvíÚCCCbíÚµÐÖÖî³Ýììl…BdddpJ,Y²ðÆoàÓO?…B¡À+¯¼Âùãàà€5kÖàã?†¹¹9êêê0þ|xzz¢¢¢b@ÇõEP·a%&&K—.í±¤6”——cìØ±ÜZfMM LLLzļD„¢¢"´µµÁÞÞ¾Gykk+ `bbÒë:ípò2ôS.—C&“Á¢G™ºvïß¿­[·"!!•••‰Dܶ‹¦¦&ˆD"hkk÷°ÙÔÔ„ââbL˜0b±xÐú‘””„Ý»w«»:ž’‘»‹îR*•ª­'0qâÄ^ítͬG*/C?õõõÕ { í>ê=K_7`ÆŽ‹iÓ¦=Ÿ“?öàc@Œ3fÈÅùSaâf ;;;DDD ·Ï7ƒ·0q3x 7ƒ·0q3xK¯K»víB7Œ£¯MzˆÛÚÚš{:Á阚šªÜ}–w( žpšÅÜ ÞÂÄÍà-LÜ ÞÂÄÍà-ÿº›»®…ûšIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1Field__coll__graph.png000644 000765 000024 00000005764 14042362131 026533 0ustar00tangentstaff000000 000000 ‰PNG  IHDRZRÔûÃosRGB®Îé ®IDATxí]ulÏ>…ÅÝ­ÈÃÝ!Hq‡àA„@p ,ÁÝõ 8ÁÅïáîî¥@‹í;ßáÍe{¥²·½ì&{’eggfgÎ~sΙÙÙÞ?…l‰kÄ‹ëìö#`í#K°öЄ­—?"fÛ‡A ¨‡S¥ç»X4MÙ²eÃØG 1رcݸqí¸í¶–é56Ð^C½l £‡“×µ ½ÿ~Ú³gÁÁÁôë×/¯•qnàÍ›7tàÀÙŸ>}’>þü)ùoß¾%•ŽPQwrèê¬ã¥K—èùó纚q—4 tóæÍiçÎtòäIZ¹r%åÊ•‹žM?ÖgÅYÚ0ÐЈ—24aÂZ¸p!åÍ›—6mÚ$ÖÕ½{wÊš5+U¬X‘Ž?.ÊרQƒ† F5¢sçÎQµjÕ(C† Ô§O)Çj§M›6”)S&©óêÕ+J—.Õ¯_ŸÖ­['uðφ ¨C‡´|ùrª^½:Á³ÐïÔ©S´õë×;@×§ è÷ïß§÷ïßKû]»v•ÊkÅŠRëÚµkT©R%yèùãÇÝÝ1Lª…ž:?zôHãÎÔ¥ÇsÒ¤Iµùóçk›7oÖl-Q¢DÚÕ«Wµ-[¶h °Æ.©-]ºT«Y³¦´ÁÀKúÂ… ZãÆ5J»wïžV¢D -Vc ´fÍšI­[·ÖÚ¶m+÷mܸQ+X° ¤_¾|©%H@cÏÑ>þ¬}ùòEòy ´ÀÀ@CƒvìØ1=LòU:44TÞ p^Ð{ˆ¶`Á-Mš4ÚÙ³gµ¹sçjùòå“jìMÚøñã%¿xñâÚ¢E‹ô·»¤yy§á72ß?†ã¡:ƒ@I’$Ë;xð *TˆXIJ›6-­Y³†>L°LˆŸŸŸX]É’%)Ož<4mÚ4‚oݺ•ræÌIÛ·o§"EŠÈ=CêÖ­]¾|™Nœ8!žo„‡‡ÓСCźW­Z%}T©R…p@Tš–ëÈþA?eË–ýšxéСCĆB<”;wn:uêõèÑ#²f<–y4Ü èÀõîÝ›>ªV­J@ Bdâĉ*À>|8]¿~]ܾpáÂ~Š)¨ÿþR—=…Zµj%îíÒ¥‹äýú•š6mJ &$Ljpyo$Y²dr»¿¿¿¼¨½~ýš¾ÿNèæö,Ã]x£ÝõŠ˜ 0ÆGˆìF.Õj×®M8¶mÛ&Ã.N˜ô`Éñ *Q1ùâÅ‹„I²dÉ9cBÖƒŒ ™C˜”éÓÈpêˆj¥/ËŸ??ÕªUKæ¬nðÚªÝØ¡ÃG#g9 íÐá#˰l7øK%%GŽÁ_-™úÈ«ùû§4µŽÀ¿ÖID š:vìH;w¶¬á˜AqüΜvüz:Y.F›H#:Ø@AÍÀ=6Ð@3rKŒÿš´9àÅP’9sf/Gl ÈM@2+%·nÝ"ðf¨þ@<•:ujUìö º5¦ÆˆPR,°.€Îd,îäîÝ»~è ð„€”+¦c‹« Øe6xŽ˜ÐIhyœ9åbªˆs}ð1)–”ñ .ì_÷™æÌ™3Ô¾}{š>}: 4Hx˜œïW× 3‹ØkÔ*7 sƒ¨j.g0“¡¾³Œ3Æ9+Z×1¶h´ .ЗA@šfü¢Z¶l£>`À:zô¨?ÁB@üÄ„(BL:PÕ­[—;X<–9ûöí“kð3 ƒñîÝ;š2eŠºxñbªP¡‚°t=l×®]Bˆ°W¿»pYÕ¤I“(qâÄ‚ôm!E¹:Ë0@„!ðâ)‘€¡ pc¡µh¥„þ f/L2#GŽ ïܹ#ñO_¤®cÇŽ•‡fÆDúðáƒx,­téÒ2ÁÁ¢0QA`iˆÁuêÔq4ÅÌ‹2/ æëAÆD‰p¥Ãó¢Äy v3Ðz‚NN…%Ü £Aø}Î0(#bÈ¢Ý*–LP qÊÀ À ЉRÕG„Pœá ÞÏŒ3Šëc ˆÁ³gÏv< ž}Ê¿L.Š«2„X2è0õ\vª<®ÏÐ ºÓ}¿xñBHk££ö:` 0¢ÿKìÿü î®Ä“ÒŠ[TÕÃT•Ù³g×gù4­×Û]Çú'wåQåZuDÕ¨] ´+&q’c'°ºi”W9b/,ü¦ÿº¿°DXu¸;+v°ÿ÷·ØÁ1êVì5F±RÃ:V`Œº‘ÿAvú/ñ¥IEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1ParseException.html000644 000765 000024 00000022416 14042362131 026122 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: ParseV2::ParseException Class Reference
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2::ParseException Class Reference

    Exception object thrown by File::error() to report an SSQLS v2 parsing error. More...

    #include <parsev2.h>

    Inheritance diagram for ParseV2::ParseException:
    Collaboration diagram for ParseV2::ParseException:

    Public Member Functions

     ParseException (const std::string &what, const std::string &file_name, size_t line)
     Constructor. More...
     
     ~ParseException () throw ()
     Destructor.
     
    const char * file_name () const
     Get name of file where error occurred.
     
    size_t line () const
     Get line number where error occurred.
     

    Detailed Description

    Exception object thrown by File::error() to report an SSQLS v2 parsing error.

    Constructor & Destructor Documentation

    ◆ ParseException()

    ParseV2::ParseException::ParseException ( const std::string &  what,
    const std::string &  file_name,
    size_t  line 
    )
    inline

    Constructor.

    Parameters
    whatdescription of what went wrong parsing the line
    file_namename of source file where error occurred
    lineline number in source file where error occurred

    The documentation for this class was generated from the following file:
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1AccessorStyleOption.html000644 000765 000024 00000037222 14042362131 027146 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: ParseV2::AccessorStyleOption Class Reference
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2::AccessorStyleOption Class Reference

    'option accessor_style' directive line More...

    #include <parsev2.h>

    Inheritance diagram for ParseV2::AccessorStyleOption:
    Collaboration diagram for ParseV2::AccessorStyleOption:

    Public Member Functions

     AccessorStyleOption (const std::string &value, const File &file)
     Constructor.
     
    void print (std::ostream &os) const
     Print the option description out to a stream in SSQLS v2 form.
     
    - Public Member Functions inherited from ParseV2::Option
    virtual ~Option ()
     Virtual dtor, since this is a base class.
     
    - Public Member Functions inherited from ParseV2::Line
    virtual ~Line ()
     Virtual dtor, since this is a base class.
     

    Additional Inherited Members

    - Static Public Member Functions inherited from ParseV2::Option
    static Optionparse (const StringList &tl, bool subdirective, const File &file)
     Attempt to create an Option object from information in the passed StringList. More...
     
    - Static Public Member Functions inherited from ParseV2::Line
    static Lineparse (const StringList &tl, bool subdirective, const File &file)
     Virtual ctor, creating one of our subclass objects based on what we're passed. More...
     
    - Protected Member Functions inherited from ParseV2::Option
     Option (const std::string &value)
     Protected ctor, so we cannot be directly instantiated. More...
     
    const char * value () const
     Return the option's value in string form, unmodified from the original parse. More...
     
    - Protected Member Functions inherited from ParseV2::Line
     Line ()
     Protected ctor, to prevent instantiation.
     
    - Static Protected Member Functions inherited from ParseV2::Option
    static bool parse_bool (const std::string &value)
     Convert a string expressing a boolean value to a bool. More...
     

    Detailed Description

    'option accessor_style' directive line


    The documentation for this class was generated from the following files:
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1Option__coll__graph.png000644 000765 000024 00000006101 14042362131 026742 0ustar00tangentstaff000000 000000 ‰PNG  IHDRaRD躠sRGB®Îé ûIDATxíœÕ†qa HNKÎQP2(Q(2P I…"g¤ ¢@…ÉP"9g%’Q²+aewÙ×ßáõ¼Ù8ì̬۽ö©êéîÛ÷Þ>}þîôìþÉ" GÕÉõîÎÍÕp € Ô„¸äúõëÔ góÒóçÏ˼zÍc$ܸqCªT©XÎO|ûí·røða±æ38|¶€‚Ï&ô}ßmèó )}žáüòË/®go¾ù¦Ö‘äÉý‹ñï¿ÿ.Ož<‘ *¸Ô¾zõªÜºuKÞ}÷]m{ðàpÿ)R¸úD=¸wïž\¸pÁ5Ƽ~òäIÉž=»äÌ™ÓlúGö~³R‹-dãÆ²oß>Y¼x±(P@(êþ”sçÎI“&MäåË—®i¿øâ Y¶l™\¾|Y*Uª$íÚµ“¦M›Ê—_~éêõ€b9pàÀ¨ÍrðàA1VƒÑÚºÁo  è Aƒdܸq2wî\)\¸°¬ZµJhܸ±zXÆ /DêÖ­+Æ “?üPŽ9"µjÕ’lÙ²IÿþýõúŸþ)}ô‘äÈ‘Cûܽ{W5j$ÿý·ìÙ³Gû<þ\6lØ ;v” H:u„ˆä¾S§NUƒ._¾ÜÈСCeåÊ•:6¦+W®È£GäÓO?U= ,(%J”ãÇk÷³gÏjôäÎ[¯‡……Å4M¼Ûü ÂÏ?ÿ,«W¯–ñãÇkDÔ¯__¦M›¦Qqþüy óyóæ©’¤Œ?fÌ;v¬tîÜY:¤æÚ÷ß/¡¡¡²}ûvI—. 0@R¥J%mÛ¶ ‹lÞ¼Y0ÈÛo¿­†f.dýúõÚž'OÉ•+—/^\Û1(ç± © nÞ¼©ºlÛ¶M*V¬(¦ÎŸ}ö™:ÂÚµke÷îÝ |lsŧݯ àex$FäJ–,)'N”zõêÉ7ß|#ÇŽ<I–,™z+ù½P¡B ÇV´hQ5$Q°cÇqÿþý:¯ÇÓ©?+V¬Ð(àB`` Pƒ>ÿüsùøãeΜ9z5j¸útµjÕtO½{÷"¡uëÖQÏž=s9éŒk¦NžæòtÝo…™ʹ Þ³wï^iß¾½T®\Ùý’¦ªtéÒjxr<¹ŸÜ\ªT)!-e̘Q>ùäËÇL™2i"¦L™¢í¤¦fÍšIêÔ©…Kø"éÓ§×á)S¦Ô/©¤Q"“û°Qˆ,ˆ_#!&…¶lÙ"“'OV#’nøæUÞÿ}a[·nF ¡N¡¸ õÅÝë:tè ÞNªÈŸ?¿N÷ÝwßéžÅ;,Μ9£×NŸ>­©†Š;F57÷b¯£|pŸbÅŠÉ{ï½§µŒU5Äâ·H ½Ä$ݺu¶ 2¨g“²ˆÄÓ²eK)[¶¬æî/^HóæÍ¥\¹rÒ¥KÁ¸<0iÊ@9r¤Ö³íÀ²uëVMIfF§NQÈ׬Y£€’•ÔHÔ˜2{öló0ÚÞÔsĈÒ¦M½ž&M­ Ñ:{Óàéí’ñpF ðÔ-ÎëFˆ0Ö÷Úçádž×EëÿÇD\»v-Z»±ž0òq´öÄj0œ$ÂXdD5É£ Æ»£ˆž={zìç·HˆË²fÍêºL>IXžÆ$x­•„ J‚×*›Tçr@°²%cœbõ_ÖKF¤H‘β¿ü½Î/kÉ@À ÎàwïKÙ‘Æ’·¡ñB®¾7SXbŒ­ÓÑÚµÇ% ¥ñõ%Œé­¶añâÆ[Õ0¹ÿ‰ñ¾êŽ·6Hôq¶áêÕûÆ+ˆGjÀ°°pãõ‘D7¦· Ø„•+Ïüªœ…††Ë?Ú7%Ù„eËj*2½/$$LNœøyj«½-A8}ú¦?dèPÛFƒ-AX¾ü°¼xù§Åðð—Æ›ÒãÆ+jû­¸m ÂO?•°°ÿÿØï{÷^p?µÅ±í@8sæ–<~üÌøµ-­néÓû4zÌ3«WS°í%¶üÆ|ìØ5ù믵ô°a«¤W¯:”EÏ+W2þ0 ÀV(ü#¿'øÛ"+æwMI$`øR¥bÿ+ Wg‹Ø.YÔŽ>©e{’'OfüVí“ }°íA`Ijß÷À¯ð·=‰îÆ~PÀö 8éÈ^àëN:òÕ‚Îxµ€íÓQRÀÑÁ(: 8 XÀPÁö‘à,Q-àEÎÕ $lŸŽ,`Þ :oQÞ :oQ„¤p{Û×g‰j7t–¨!)¨à¤#  h{œtd/J*¸ÿ×àÎ;ùkZ[m%Œ ´•Î…„»Ù#"ýž‚têÔIºvíš$ÌŠqçÎ2dH$Õl_"=MO,œ‚@ˆT^GŸ§OŸ óÔo{ˆ¢²dÉ¢D„æ¤ÐºÁ3dÞ¾ºØXcÌ1ìáP‚ Ì òÑ9áVzë­·Ü»ÄzlP Ôk`%”Ä;`Ò‚ð N:%ðACæ‰9+¾÷ÉæÅXˆ Ù¼b°mÁ ÛW_}%ƒVž¼Øæ§öéÓGùòàT…A¬oß¾ÊgÛÚ{õê¥<{·oßVÕ¸úúz-Þ‘À agìÞ½»Þú2¨Òà% ƒËAi7ßy祶ܵk—’v_ºtI Ï‚Ç4$$DÁ4h °0B¡Éµš5k*µíÐsÒïtŽÍy1$ÇG•éÓ§+' ÁET»vm]À} /_ùòåuNÓX¿ýö›@ÏY½zuéׯŸÒªÁF„@ŠcuCŠ^ìcK—.U‡À `(ƒ`RD˜ÇàB>|x¼ùâ (7) MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Member List
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2::ExceptionOnSchemaMismatchOption Member List

    This is the complete list of members for ParseV2::ExceptionOnSchemaMismatchOption, including all inherited members.

    ExceptionOnSchemaMismatchOption(const std::string &value)ParseV2::ExceptionOnSchemaMismatchOptioninline
    Line()ParseV2::Lineinlineprotected
    operator bool() constParseV2::ExceptionOnSchemaMismatchOptioninline
    Option(const std::string &value)ParseV2::Optioninlineprotected
    parse(const StringList &tl, bool subdirective, const File &file)ParseV2::Optionstatic
    parse_bool(const std::string &value)ParseV2::Optionprotectedstatic
    print(std::ostream &os) constParseV2::ExceptionOnSchemaMismatchOptionvirtual
    value() constParseV2::Optioninlineprotected
    ~Line()ParseV2::Lineinlinevirtual
    ~Option()ParseV2::Optioninlinevirtual
    mysql++-3.3.0/doc/html/refman/ssx/nav_h.png000644 000765 000024 00000000142 14042362131 021203 0ustar00tangentstaff000000 000000 ‰PNG  IHDR ,é@)IDATxíÝA @BQ­³šÛ›Ð¢Žáà) )ëý éaÅèÜ¿Æo‡RlÐßIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/tab_h.png000644 000765 000024 00000000261 14042362131 021167 0ustar00tangentstaff000000 000000 ‰PNG  IHDR$ÇÇ[xIDATxíÝMÁ@†áž~¥ÜÆÎ’Evˆ¿"!•²‘d*×rGq=Š{¼ßSݧçë­ÓÉHÇ uO^õø[À_‡¢ãXvyËþÒ±=·VCffææ{°öŠó´Rçœ%_õçÿŽ¢ö·°Çrug¶(?gh\i>|sIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1AccessorStyleOption__inherit__graph.png000644 000765 000024 00000014567 14042362131 032176 0ustar00tangentstaff000000 000000 ‰PNG  IHDR¡‰D®XísRGB®Îé1IDATxí]xU×>†’„)Òé*Ò¥Jï*H/Ò¤ƒÒ›4Q¤Ió"`@!AD)Ò{•.ùH˜ÿ¼‡ÿ®“e»Ù°ì&÷<ÏìÎܹwî÷¼÷œsgËyÁ`!-ç‡@¨Ïóë[÷¬x„€&¡fÂsG@“ð¹«@ÀãI¸råJzá…ôG N:åñ,÷xnÛ¶ÆOX?éÍ9 ªW¯Nš„?õ=·„ž’óE@“ðÙ⫯îI¨ãñUΜ9CGµ³xñâ”1cFÛq|í„……QæÌ™)W®\¶KîÙ³‡R¤HA  ¨¨( §téÒÙÎ[í`¬XlåÏŸßvúÎ;´{÷nzûí·me‰e'AXÂeË–Q¿~ýhûöí´yófª[·. 4(Þu¸dÉ8p íºX(Õ¯_Ÿ:D£G¦B… Q§N¨víÚtðàA[=û¹sç6³€¼!!!æ¢D³Ÿ Hm-Z”FEcÇŽ¥I“&Ñ´iÓD‰7n¤2eÊP¶lÙ¨sçÎRÒvèÐJ•*E›6m¢yóæ ræÌI ,:‡¦²eËRÖ¬Y©{÷îbåZµjE«W¯¦»wïJûX…:T,ÙÒ¥K©X±bôÕW_IÊ 5kÖ¤“'OʾýKDD„ååË—§^½z‰Õ­R¥ ݺuKž <˜²gÏN%J” ;wÚ_Âk Ï;GË—/§ÀÀ@!ˆ2»uëFû÷ï§­[·ù@©óçϧöíÛ ù>ùä!×Â… Å¢¡,k:uhÅŠ´e˱\ :\ñš5kP…‚‚‚¨qãÆ@W¯^¥Ô©SÜêúõë©B… R§`Á‚”%KÙ/]º4¥L™Röí_@Â#GŽHññãÇ…Üè÷ÆôóÏ?ÛŽIаaCÙ>|h¯M»víÀ‚‚08Î;7íØ±CÚµlÙRúÀ5aQq y饗Ä:•,Y’räÈAMš4‘òÖ­[S¹rådøðábÝäà /ˆaA1.X .ЪU«Ä Âú‚ô '&^B±0"ªV­js¥J1ˆÙ`A¢Zµj‰RÕ9µpÂ×®]+m§OŸ..Ä}ðàÝ»wO6¸?X4HóæÍiĈÒÆßßßF°àà`jÛ¶­tMBG‘2Õ;qâ*]¿þ¯­$**š?†eÔ4 〬^TTÌ/”òÇËü}BÏÿ¡yn÷™7Ñ$ŒÄAA»xA£åÝ»‘ü•1½@‰Šƒš„¥ªíÝ{žN?þý¿‡ þó1 ©Úé÷ØÐ$ŒË3«W?úbl@€?ÍÞR¥òåwìûóÏîÓÞ½ ã+÷–7ÿŒ õ'&Nñ€c¿ÓÒêÚµpþaÔš<¹™ûû'£·ÞÊíä}õÐDñ}ÂøT³Ÿ_2þ†ö£­Ÿ?ƒ@µïë×¯ÓæÍ› ÙÛóæÍK•+W&GÚá¿üò U¨PAò"?µ#/­àu–pèС4mÚ4 ®A”7ÞxƒV¯^¯ðã!4’e#c¼’ãÇ’fGDDÐûï¿ÏW‰Ú´i#û÷îÝSÕ{ áÿ,|‹ÿÝ …‡‡ÓŒ3¨D‰œrâÀcuUÁœ9shúôér¸fÍéSKï<ë=F˜P¯ŽŸ8žºuësçεÕ1b„Ñ A9þæ›o ÎOl,XÐ`%JYÿþý^½zœÁݸ|ù²Ñ¨Q##}úôgR—$Ûù dpNdƒ3¿aaaÒŽ3³L4[?#GŽ4j×®m0© &‘­¼lٲƂ 䘳ËœÁ]u£.®Í™å ÎÏg«Œu÷íÛ'cÇ£©L™2<ÁŒÃ‡Ëø8/³Á4ªT©"I¶/^¼hT«VÍH“&”!ùö©S§ä>8÷ŸÁÙë.]ºÄèÇê€WÇFÏž=­N=¯²<^ðq”„]»v5–-[f°E4rçÎ-ïȆž6mZãàÁƒÆ¡C‡dŸ-”Ñ¢E #W®\B(€­—(ålqŒßÿÝÈŸ?¿±wï^c̘1Bdza“'On\ºtIðyýõ×Å‹Èûöm)C¶øT©R P0dÈ©‚€P [.ãßÿ•úêeË–-Ò϶mÛ ¶ºÆŠ+dÌìæ¥ý€„(‘‘‘B.Œ¥_¿~FóæÍ…à 6”‰ÂâúóçÏ7p-vñ¶ñª¾ìß=‘„^Âmݺ•Ξ=K¾¾¾ÄÄ!V %I’„XÄ ¦ýû÷…ÿCú.ªS÷îÝ©~ýú„Œ¡£G&¶NÔ£Gq‹LÊž=»¸÷€€ºqã;wŽ&¾Bl…8?ÉĈΟ?Olq%E,ÊŠ§Þ½{†x"H?Ç—w¼ 6LÚÀµÃ…›cÀ«W¯Úb²©•,VÏHr•ô;ï¼#õÇG°Ä¼ð \¹rIðùçŸÛ\0\.,xžuâîÝHþMŠ^ (<œy×$t-®»wïy~8ýßwýTs$ßþó1 ©Îë÷ØÐ$ŒË3«Wï“OGü) ÀR¥òåwìûóÏ î3IÏY¶Ó…±# ?1‰Ë38ö;-ç®] ç߬¬áoN7“cÿdü…ÙÜ–íta¬„zÔgDZÓƒNøù%£J•òˈΟ¿Á¿;ùïØƒ†éUCÑîØ«Ô•0«Iè‚^ñ{ëß¼¸pÙD×T“Еóï<«b-®! Iè~ºu<  IèˆÚ»ž©©&¡ gwµ;v1ëúš„Ö¸èR7" IèF°uWÖhZã¢K݈€&¡ÁÖ]Y# Ih‹.u#š„.€­Ѹž©©&¡ gwõ#g³®¯Ih‹.u#š„n[we€&¡5.•"&ĦÅ54 ]À1!6-®! Iè~ºu<  Ièˆú à™šjšÀpvW?¢q1ëúš„Ö¸èR7" IèØÚ»ž©©&¡ gwµ;v1ëúš„Ö¸èRw"À³Ù&¿þú+zéÍA |||)^×x9ˆ—â–ʺõÿÄ ‰ñ LBIضm[wÎÝW"BZ‘¶WeÞ­kwœˆà©·ªI詚IDãÒ$LDÊöÔ[:2H$•F"j%Hu¼ñ-‡"äF–'%È#Œl˜ª?NßJiÓ¦U§Ÿø~áÂI|ÍélŸXïyä ]p={ö¬älv$ëhdd$=zô©Y°pïÐYDD'ýyEê;òíN+¹›Ÿu–-§-!ç¦#FÈM8p@@÷ìÙ“ÿ“%æ8»ªÌM›6ѬY³l—’¬úÌ™3ôÛo¿QóæÍ‰s÷RŸ>}uŸ&HÀÝ»woúßÿþ÷´ªn?ewèнþæÍ›„±";=dÒ¤I„lñVÂù™iüøñV§le‹-’¬öÈ0úÀúBŸ±‰êóîÝ»ôÇÏþá¶„8r#C:„“HSݺu9±Ìi §9sæHfô2eÊP¯^½Ø]»vÑ©S§¨S§NÄÉ¥iñâÅ2+ÛµkG5kÖ$Ì~so¿ý6uëÖMÊ‘í³ÖOÍduÝ?þ˜°ZåÊ•à|ùòñÿV¢¾}ûVb°(ÈëÖ-*[¶¬¶~ýú2ö}ûöI[X”ØVeVããäÝÒõóçÏOƒ ’¯ua,æ2ä-žœy aʃƒƒE¹°ŠS§Nåÿéó×·¼dÉB¼† ‚äÒ°4ˆß²eË&Ľté͘1C,@…€ÛAŒ‰xâÀÕâš Ž! =®=pà@!zË–-¥¼V­Z¢,`V|´apýû÷ï˵/_¾L·oߦ+W®1@^ÌrX]û2„VãË’% íØ±ƒóÚ-òÀX•ÁŠAy˜¤'¬2”éܹ³ ûP2 à9mÚ4¹7L8d¯ÇýbÒ³ëׯK¿+VD3ŒÛjŒÑÑÑrϪžzv 1¤B… cãzÐ+Ω>UÜ/\>øà±úÐ%&Þ¥@¢›k×®I™³/qrÇH kd( ñÀ̵J,›B;båÊ•â*à†£¢¢ÄºÂµaöB@:X(³R-*  ¸¸àaÆÉ9óXÌû{÷î"ÂÂB0 `Q`Ù`µ”ÀšÁ:Ù—Á=Y¯|ùò¢HLÄš=zôñB¹æ2(F}À ¢p5AXƒûAˆø ÇC]% $ÎÁ3`ƒ‹W’Xׇ»é (¶ ®×ÀµìÄ7[]Œm! ¯$I’Øî˾ýÓŽãd ­. WvîÜ9q³ áÉ“'â‰áÇS“&MhÊ”)rð °DÅ‹—˜ J‡¥‚ÀEÁ­ÂJÕ¨QÃÖ-¬,bLS `„˜ÙpÅP(âlp;ˆyòäAžâ{t–ãQXÈŽ;Š¥¶/ƒU°¬8êöë×O,,‘UYÉ’%…4Pê€ öî1}úô4oÞ<Á cÇ‚l ÖjáÂ…2Nó$Ç«1¾öÚkòÉâBµp„«¾ðçÀ[ÀýCTŸØV«0)`(0 J”(Sñ"q²„ÊL›G A>(3qGPPEÕG¸d×x‡)Ï”)“(ä„`Æ›g9È7nÜ8™¹ª?Ä$Û·o§ï¾ûNŠ0ãÓ!¦)V¬˜¸ÇþýûKx·¡Q¨ ²cÂtŒuÀ€¢,f`ÅíË `¸QûñÁjÂ}"ô€‚€höehK÷ᇊ«ƒÕT¢p;C\‹…H E#Æ‚Õ)¾øâ !)ðÅ$EÜ­D]ÃjŒ 1Æ­^½zbµ x#e1iÑá {¸žê“‚²6mÚˆÅÇ=Â8€„6lPðՋQààAŒ,V¹®|vŒ›Â Â<ãÆàæìqÌ{@@€íff(f¸²¶“ÏpVÀ*·‚®¬Ê¬ÆKw +¤È`U†k¢îÙÜÊÍ—ŒØ äS×Ãynä™ñøÆêù¨ÕÕõ¡\M ,$î "L~óØTŸª.ÞQË<>s§íc¢!æ-W®œªÿ)$0K”XçÌ®DÕE,eþP[•?ëw€o/VeVãƒÒTüª®aU†s3fTUb}‡ë·ÂDxË„EŽqQ«1ªÎÌzQeêÝJOæXQÕ.X8Æ·ÄÉÇ÷ ôõžŽ€z¼¥3Ooñôˆ•=A4 =A ŒV2> ˆ.±ñ‰·Õ±'ÜŒƒ—"À«%›üª¿Yxz{Æð£çx'$ÆêØKç‘¶w#ªÝ±w+0AŒ^“0A¨Ñ»oB“лõ— Fÿu¯‡—ròIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/classes.html000644 000765 000024 00000011226 14042362131 021732 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Class Index
    MySQL++ SSQLS v2 Translator  3.3.0
    Class Index
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1Line.html000644 000765 000024 00000026151 14042362131 024060 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: ParseV2::Line Class Reference
    MySQL++ SSQLS v2 Translator  3.3.0

    Base class for parsed SSQLS v2 declaration lines. More...

    #include <parsev2.h>

    Inheritance diagram for ParseV2::Line:

    Public Member Functions

    virtual ~Line ()
     Virtual dtor, since this is a base class.
     
    virtual void print (std::ostream &os) const =0
     Print line's contents out to a stream in SSQLS v2 form.
     

    Static Public Member Functions

    static Lineparse (const StringList &tl, bool subdirective, const File &file)
     Virtual ctor, creating one of our subclass objects based on what we're passed. More...
     

    Protected Member Functions

     Line ()
     Protected ctor, to prevent instantiation.
     

    Detailed Description

    Base class for parsed SSQLS v2 declaration lines.

    Types of parsed lines, and related stuff

    Member Function Documentation

    ◆ parse()

    ParseV2::Line * ParseV2::Line::parse ( const StringList tl,
    bool  subdirective,
    const File file 
    )
    static

    Virtual ctor, creating one of our subclass objects based on what we're passed.

    Parameters
    tllist of tokens found on a line in an SSQLS v2 file
    subdirectivetrue if there was leading whitespace on that line, which changes how we interpret tl
    fileinformation about the file we're currently parsing
    Returns
    Line object pointer if line was successfully parsed, else 0

    References ParseV2::Field::parse(), ParseV2::Include::parse(), ParseV2::Option::parse(), ParseV2::Table::parse(), and ParseV2::File::parse_error().

    Referenced by ParseV2::ParseV2().


    The documentation for this class was generated from the following files:
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1Include__coll__graph.png000644 000765 000024 00000006057 14042362131 027067 0ustar00tangentstaff000000 000000 ‰PNG  IHDRdR¢ÁqäsRGB®Îé éIDATxíEÇ›ã%‰„$( ˆ’¤ T@D’"JTr(’€ P ŠJ–,¡Š,’Ð#ãÁI÷í¯ýæÕ»»wwïÁãØ}nWíÛÙÙÙÙžþO÷ôîRÅZ"®ØÆa¶ÑÄUD-àb³‰àb3@„5Ä©Y³&k»Ýƒ yäL¬mÂý gΜ‘={öHéÒ¥ý½ÄmgYàÎ;bâ·-Üå·©R¦¡ HÊØÙﻸ€ømª”iT@vìØ!Ë—/×måÊ•ríÚµ ÂZù´ÿ˜˜˜8}¯X±BÎ;§uW®\¶ädÓ¦MžkLÛ'NȾ}ûÌaŠïƒ ÈG}$ãÆ“7ÊO?ý$eÊ”‘¥K—uP©R¥’¾}ûÊܹs=ýþñÇòòË/Ëõë×å•W^‘ˆˆi×®–“šݺu“mÛ¶yú¡pôèQÙ¹sgœº”<* (ŽA>ýôS9r¤´mÛV¦M›¦ãùòË/¥D‰òÔSOÉ„ ´®OŸ>òþûïK‘"EäôéÓÒ¼ysÉ•+—Ô«WO.^¼HJ.  ÈÓO?-[¶lÑëÞ|óM™?¾–ùY°`Ô®][~ÿýw9yò¤yáÂ…Bføí·ßj»—^zI>,<ÏÅñ x^0èÑ´iSÉ“'téÒE[^ºtIZ´h!yóæ• ÈÙ³gãõp‡A„°µxñb?~¼Ì˜1CêÔ©#.\¼‡z Ô¯_?Íýõ—Ö3Fg|¦L™Ô¨9sæ”%K–}aX¼ìÕW_ÕíîÝ»òúë¯ áæÔ©S:úo¾ùF ÏXµj•Ö9rDvïÞ-U«VÕãÊ•+KÆŒu{öÙgµÚùóçÔ7n¨—zÏš5Kï7eʹuë–¬^½ZûÂË‚)~?‡ø{Óõë×Kdd¤¤M›V† ¢FL:µlذA~ýõW5³ìêÕ«Úe×®]¥Q£FòÝwßÉgŸ}&ùòå‰G 8P½ƒ˜%KöøñãR¸pa±TÜZµjéŒnܸ±¤I“F·™3gªçáx2hÐ ÝóóñÇ{ÊI *¤@Ó¦X±b Ô÷߯ÏbkÖ¬Q=æÍ›—TŸ : Ý»w—·Þz+Ž"„f%õUªT f$wîÜZÄ ³gÏ–E‹ FþꫯԀ €eΜYËmÚ´ÑõŠÐÖ¬Y3IŸ>½ÖâðÂeË– ^q?‚Ç ×JH,Uª”êÄ$yï½÷L“ ìƒ²|iµnÝ:)[¶¬|ñÅúÔŠw°>xK¯^½äŸþÑ5§ÿþêׯ¯3þƒ>–-[*`&MšÈÞ½{eÒ¤I8È®]»ô˜p <”Ì‹{P6rûöm A„!ÊÉ :á¡$O<ñ„†Îä® ä|P!ò%,¸¬+VÔÅžìkĈÚÔ\ƒ‡tîÜYž{î9!NwìØQêÖ­+œ/Z´¨Ú¡C …\˜!CM S/¾ø¢öµyófMc}ôQ Óµ ! 3‹zÆ µŽîË« 6ê¤]Ћ„0:uê$o¿ývR—~Nßhùñc¹i¬õ.Ë–¾›Xïtb­ìEOÞ¼y3Ö C Z³7vÿþý±ÖÂçÜŸþk-¶qêöÁ¡C‡b-OOV Ëëb­É‘l;Ó èkHbS‚KúŠ˜Å7~[² 'Ÿ|2~µ<þøã êvò $¨!ëA(ø_ëÓÄfˆ»€Ø ¿×^ÙQÒ¤ÉmeTéåÆãvT/ T©XÝm9Š”ªWo´8e½!ø7•àRÛ5u|ÈŠŽ¾*û÷GIxxjëÁð¤í ¨BŽdÙ²]V&7oÞ²ض:~Ûµw< ³fm²^TÞ´^{ܵÞÊîHðJÆvOF!Grúô%9tè´gˆ¬†7ö;±àh@–,٩ﺌá¯^½áø°åh@æÌÙl}èºeðë˜õ½}·õööާÎiÇrôè9ë ^t{“m­Zu A½S* ÈÂ…Û-¸›ÀÎ11×åë¯7'¨wJ…c êi} ×oæÙ–ï,ì11׬?R.éÒ¥q = HTT´õ$gt ¿ü²×ú-íÛWÓãüù³[þý4ì©C ~¿Ë²ÛxòåËfýAD6U+2òœî#"JØMÍ€õqìðHrAHÂÚæû{¾Cp𨀰¨ó  €„f !ˆ² œ6Ù»!Ë&@„¢!²B ›¡éâb3 ØLð7íµÙ¬rÓ^›Jê„DÈr±™XCØBABÂCXCØBABPÂŒ!$qÓ^§MönÚk BQYü _7˲Ñôä/Ý,ËF€„”*ÖÌòÈÚµkIæ·Yÿè36mÚŽÓ[[,EûSˆó—‹ JGÔ¾}ûštv œ[æxKH,êÞrzÙÄfº€8HÀ¶nÝêÙ Œ|U+ĘÞ¥÷ýþþûoïÓ>Ë0ÎY”O>Ï%V ßbüØžX[êáé –ì!w•|òÉ'Êæüĉ•æÎ׿fº%á4œG¤`Á‚½?0@z Fw¸™<„^B0zÀ3ÜÎ"_†^ЈÅ|ç¡¢¥šBxa^=xð F ô1¯m|Ãôåïþž-úÇT^[¼QÞ'áæÌˆ‰ï&ÆÃ£,30þü bTT”Î>f=LÒïÀòØcy¨¾áj$Ñ'†çaÐ÷‡~¨ L8 cÏRc ÷Æo¨*TPd¸Ë•+§Ä–ÕªU“Þ½{'û†k¸ìws"IÃÜߟý=…¬lÙ²é,õ¾1žxï.”°Þ´|´G0³§ZXÈ0™uÌ\6دMÈŒa´†Ø0 x ñ›sþŠ¡“%” 3‰“Ê$ÎèáK ß<‰Bùòåµ dœŒ+:::Ñqøê+±º{ò_Á^ É1¡@`eÀÞÂb ¡1TÝP3<‹PS©R%a¡&”ÆjhÇ =¬0d!4²n±&yƒÁ‚où —Iñ¾›¾žyæ “„.Ö9¨Ïã"ìZ¤—ªç¡”ÿ¬…=ã$¼&6ÓŸ?û{ò3½oÀÌBQhTQ8†3íiCØzíµ×t©2Äh„Ã}º6á&'þCE ±2 0kbî¯ÿÿ¡Ž ^B*ëU­9‡‘_xáiݺµê‹î‰¡”q@¦ŒÎHRãÐ~üÄùgÑ…lé~Þe1CÉB #uÖ¬Y¨Áâ!2ƒ1BØÂ3uxMJ ^@8ó•qΛåÚèF¸ƒ™Û[ß@ÆA¢ÂólÞFîÉCÌžö„#¾Ààœ÷úbÚBåmhdM]Jî}ÜÜ?±s¾ˆ—ïw)?Í(ݽO ¸€ø4Ëëtyx¶÷}g+#òÈZ‡~1´FæÈ¯…èÿ‹aœ,Ë7dnmJZÀ Y)im?îå⇑R²‰ HJZÛ{ýŠt9ú×ðãIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1Table.html000644 000765 000024 00000034570 14042362131 024224 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: ParseV2::Table Class Reference
    MySQL++ SSQLS v2 Translator  3.3.0

    'table' directive line More...

    #include <parsev2.h>

    Inheritance diagram for ParseV2::Table:
    Collaboration diagram for ParseV2::Table:

    Public Member Functions

     Table (const std::string &name, const std::string &alias, const std::string &filebase)
     Constructor. More...
     
    void print (std::ostream &os) const
     Print the table description out to a stream in SSQLS v2 form.
     
    - Public Member Functions inherited from ParseV2::Line
    virtual ~Line ()
     Virtual dtor, since this is a base class.
     

    Static Public Member Functions

    static Tableparse (const StringList &tl, bool subdirective, const File &file)
     Attempt to create a Table object from information in the passed StringList. More...
     
    - Static Public Member Functions inherited from ParseV2::Line
    static Lineparse (const StringList &tl, bool subdirective, const File &file)
     Virtual ctor, creating one of our subclass objects based on what we're passed. More...
     

    Additional Inherited Members

    - Protected Member Functions inherited from ParseV2::Line
     Line ()
     Protected ctor, to prevent instantiation.
     

    Detailed Description

    'table' directive line

    Constructor & Destructor Documentation

    ◆ Table()

    ParseV2::Table::Table ( const std::string &  name,
    const std::string &  alias,
    const std::string &  filebase 
    )

    Constructor.

    Parameters
    namethe table's SQL name
    aliasthe table's C++ name; defaults to name
    filebasethe base name used for generated C++ code files; defaults to name

    Member Function Documentation

    ◆ parse()

    ParseV2::Table * ParseV2::Table::parse ( const StringList tl,
    bool  subdirective,
    const File file 
    )
    static

    Attempt to create a Table object from information in the passed StringList.

    A kind of pre-processor for the Table ctor, creating a Table object only if the given StringList makes sense, using the values we find in that StringList as parameters to the Table ctor.

    References ParseV2::File::parse_error().

    Referenced by ParseV2::Line::parse().


    The documentation for this class was generated from the following files:
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1Field__inherit__graph.png000644 000765 000024 00000005764 14042362131 027244 0ustar00tangentstaff000000 000000 ‰PNG  IHDRZRÔûÃosRGB®Îé ®IDATxí]ulÏ>…ÅÝ­ÈÃÝ!Hq‡àA„@p ,ÁÝõ 8ÁÅïáîî¥@‹í;ßáÍe{¥²·½ì&{’eggfgÎ~sΙÙÙÞ?…l‰kÄ‹ëìö#`í#K°öЄ­—?"fÛ‡A ¨‡S¥ç»X4MÙ²eÃØG 1رcݸqí¸í¶–é56Ð^C½l £‡“×µ ½ÿ~Ú³gÁÁÁôë×/¯•qnàÍ›7tàÀÙŸ>}’>þü)ùoß¾%•ŽPQwrèê¬ã¥K—èùó纚q—4 tóæÍiçÎtòäIZ¹r%åÊ•‹žM?ÖgÅYÚ0ÐЈ—24aÂZ¸p!åÍ›—6mÚ$ÖÕ½{wÊš5+U¬X‘Ž?.ÊרQƒ† F5¢sçÎQµjÕ(C† Ô§O)Çj§M›6”)S&©óêÕ+J—.Õ¯_ŸÖ­['uðφ ¨C‡´|ùrª^½:Á³ÐïÔ©S´õë×;@×§ è÷ïß§÷ïßKû]»v•ÊkÅŠRëÚµkT©R%yèùãÇÝÝ1Lª…ž:?zôHãÎÔ¥ÇsÒ¤Iµùóçk›7oÖl-Q¢DÚÕ«Wµ-[¶h °Æ.©-]ºT«Y³¦´ÁÀKúÂ… ZãÆ5J»wïžV¢D -Vc ´fÍšI­[·ÖÚ¶m+÷mܸQ+X° ¤_¾|©%H@cÏÑ>þ¬}ùòEòy ´ÀÀ@CƒvìØ1=LòU:44TÞ p^Ð{ˆ¶`Á-Mš4ÚÙ³gµ¹sçjùòå“jìMÚøñã%¿xñâÚ¢E‹ô·»¤yy§á72ß?†ã¡:ƒ@I’$Ë;xð *TˆXIJ›6-­Y³†>L°LˆŸŸŸX]É’%)Ož<4mÚ4‚oݺ•ræÌIÛ·o§"EŠÈ=CêÖ­]¾|™Nœ8!žo„‡‡ÓСCźW­Z%}T©R…p@Tš–ëÈþA?eË–ýšxéСCĆB<”;wn:uêõèÑ#²f<–y4Ü èÀõîÝ›>ªV­J@ Bdâĉ*À>|8]¿~]ܾpáÂ~Š)¨ÿþR—=…Zµj%îíÒ¥‹äýú•š6mJ &$Ljpyo$Y²dr»¿¿¿¼¨½~ýš¾ÿNèæö,Ã]x£ÝõŠ˜ 0ÆGˆìF.Õj×®M8¶mÛ&Ã.N˜ô`Éñ *Q1ùâÅ‹„I²dÉ9cBÖƒŒ ™C˜”éÓÈpêˆj¥/ËŸ??ÕªUKæ¬nðÚªÝØ¡ÃG#g9 íÐá#˰l7øK%%GŽÁ_-™úÈ«ùû§4µŽÀ¿ÖID š:vìH;w¶¬á˜AqüΜvüz:Y.F›H#:Ø@AÍÀ=6Ð@3rKŒÿš´9àÅP’9sf/Gl ÈM@2+%·nÝ"ðf¨þ@<•:ujUìö º5¦ÆˆPR,°.€Îd,îäîÝ»~è ð„€”+¦c‹« Øe6xŽ˜ÐIhyœ9åbªˆs}ð1)–”ñ .ì_÷™æÌ™3Ô¾}{š>}: 4Hx˜œïW× 3‹ØkÔ*7 sƒ¨j.g0“¡¾³Œ3Æ9+Z×1¶h´ .ЗA@šfü¢Z¶l£>`À:zô¨?ÁB@üÄ„(BL:PÕ­[—;X<–9ûöí“kð3 ƒñîÝ;š2eŠºxñbªP¡‚°t=l×®]Bˆ°W¿»pYÕ¤I“(qâÄ‚ôm!E¹:Ë0@„!ðâ)‘€¡ pc¡µh¥„þ f/L2#GŽ ïܹ#ñO_¤®cÇŽ•‡fÆDúðáƒx,­téÒ2ÁÁ¢0QA`iˆÁuêÔq4ÅÌ‹2/ æëAÆD‰p¥Ãó¢Äy v3Ðz‚NN…%Ü £Aø}Î0(#bÈ¢Ý*–LP qÊÀ À ЉRÕG„Pœá ÞÏŒ3Šëc ˆÁ³gÏv< ž}Ê¿L.Š«2„X2è0õ\vª<®ÏÐ ºÓ}¿xñBHk££ö:` 0¢ÿKìÿü î®Ä“ÒŠ[TÕÃT•Ù³g×gù4­×Û]Çú'wåQåZuDÕ¨] ´+&q’c'°ºi”W9b/,ü¦ÿº¿°DXu¸;+v°ÿ÷·ØÁ1êVì5F±RÃ:V`Œº‘ÿAvú/ñ¥IEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1Field-members.html000644 000765 000024 00000010416 14042362131 025641 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Member List
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2::Field Member List

    This is the complete list of members for ParseV2::Field, including all inherited members.

    Field(const std::string &name, const std::string &type, bool is_unsigned=false, bool is_null=false, bool is_autoinc=false, bool is_key=false, const std::string &alias=0)ParseV2::Fieldinline
    Line()ParseV2::Lineinlineprotected
    parse(const StringList &tl, bool subdirective, const File &file)ParseV2::Fieldstatic
    print(std::ostream &os) constParseV2::Fieldvirtual
    ~Line()ParseV2::Lineinlinevirtual
    mysql++-3.3.0/doc/html/refman/ssx/menudata.js000644 000765 000024 00000006232 14042362131 021544 0ustar00tangentstaff000000 000000 /* @licstart The following is the entire license notice for the JavaScript code in this file. The MIT License (MIT) Copyright (C) 1997-2020 by Dimitri van Heesch Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @licend The above is the entire license notice for the JavaScript code in this file */ var menudata={children:[ {text:"Main Page",url:"index.html"}, {text:"Classes",url:"annotated.html",children:[ {text:"Class List",url:"annotated.html"}, {text:"Class Hierarchy",url:"inherits.html"}, {text:"Class Members",url:"functions.html",children:[ {text:"All",url:"functions.html",children:[ {text:"a",url:"functions.html#index_a"}, {text:"b",url:"functions.html#index_b"}, {text:"c",url:"functions.html#index_c"}, {text:"e",url:"functions.html#index_e"}, {text:"f",url:"functions.html#index_f"}, {text:"h",url:"functions.html#index_h"}, {text:"i",url:"functions.html#index_i"}, {text:"l",url:"functions.html#index_l"}, {text:"n",url:"functions.html#index_n"}, {text:"o",url:"functions.html#index_o"}, {text:"p",url:"functions.html#index_p"}, {text:"r",url:"functions.html#index_r"}, {text:"s",url:"functions.html#index_s"}, {text:"t",url:"functions.html#index_t"}, {text:"v",url:"functions.html#index_v"}, {text:"~",url:"functions.html#index__7E"}]}, {text:"Functions",url:"functions_func.html",children:[ {text:"a",url:"functions_func.html#index_a"}, {text:"b",url:"functions_func.html#index_b"}, {text:"c",url:"functions_func.html#index_c"}, {text:"e",url:"functions_func.html#index_e"}, {text:"f",url:"functions_func.html#index_f"}, {text:"h",url:"functions_func.html#index_h"}, {text:"i",url:"functions_func.html#index_i"}, {text:"l",url:"functions_func.html#index_l"}, {text:"n",url:"functions_func.html#index_n"}, {text:"o",url:"functions_func.html#index_o"}, {text:"p",url:"functions_func.html#index_p"}, {text:"r",url:"functions_func.html#index_r"}, {text:"t",url:"functions_func.html#index_t"}, {text:"v",url:"functions_func.html#index_v"}, {text:"~",url:"functions_func.html#index__7E"}]}, {text:"Typedefs",url:"functions_type.html"}, {text:"Enumerations",url:"functions_enum.html"}, {text:"Enumerator",url:"functions_eval.html"}]}]}, {text:"Files",url:"files.html",children:[ {text:"File List",url:"files.html"}]}]} mysql++-3.3.0/doc/html/refman/ssx/open.png000644 000765 000024 00000000173 14042362131 021055 0ustar00tangentstaff000000 000000 ‰PNG  IHDR à‘BIDATxíÝÁ €0 Ð׬ՙ\Àº€39—b!©9{|ðI>$#Àß´ý8/¨ÄØzƒ/Ï>2À[ÎgiU,/¬~¼Ï\ Ä9Ù¸IEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1HeaderExtensionOption__inherit__graph.png000644 000765 000024 00000014365 14042362131 032474 0ustar00tangentstaff000000 000000 ‰PNG  IHDR‘“Žû(sRGB®Îé¯IDATxí ¼ÕÇ-!·Ò.¤T¤?’%²„’J)ÒJˆ¢ÕÖB¥hQ‘6EE”"-hA!Eá m*‘("5ÿçûè¼Í;wºïÝ_ïy>Ÿ¹ïœeΜùgžç9gæÎ¯'bœ8²ŽÀèÂY?Ö騀S"§ ÙFÀ)Q¶!t ä»=óÌ3¦P¡BnË"ß~ûm¾kq¾+Qjjª>|¸!¾w[|Ô«WÏ|óÍ7N‰ò×l#ï–(ÛWàÈwœåû$~Š&Â%¬Y³Æ¬X±"ÖÕZµj™ƒ>8–Ω>úÈvØa¦bÅŠ±&.\hJ–,iªT©bvíÚe¶lÙbÊ”)+Û¡¯L*W®+þý÷ßÍ'Ÿ|b7nËÛSv½òÊ+¦OŸ>fîܹföìÙæ¬³Î2ýúõËñ1˜0a‚¹å–[bíèŸsÎ9fÙ²efРA¦jÕª¦k×®æÌ3Ï4K—.Õ î0ãdó Ê7}útÖ³ŸJÚ5kÖ44÷ÝwŸ2dˆyüñÇufΜiêׯoÊ•+gºuë¦y(]—.]LݺuͬY³LÏž=Íá‡njÔ¨a-Z«ƒ¥8æ˜cÌÈ‘#5ïòË/7S¦L1Û¶mÓ4JËþé§Ÿnî¸ãµ$/¿ü²9ñÄÍСCµÎÍ7ßlÈCš7on¾üòKÝþùã?TÉoذ¡¹é¦›Ôê5kÖÌlÞ¼Yg¦ýû÷7åË—7µk×6óæÍ 6Q`Ó £DëÖ­3¯¾úª;v¬(‹0Ý»w7K–,1|ð™3gŽÊsÏ=g:uêdvîÜiÞzë-À+®¸Â<òÈ#ê–®¾új3lØ03xð`Ó·o_u—(*®ì7ÞжÇoÚ¶mkRRRÌ?þhJ—.mpKÓ¦M35Ò:Çwœ)[¶¬î3å.Uª”îÿ DË—/×ì•+Wªr¾ÿþûfãÆæí·ßŽ)(JܦMÝþþûï`320JÄŽ‹``[µjeFŒ¡€2 €ýÐCé@ÿôÓOšËÁõT¯^ݰ ×»wok8ŽÁ#ÎY½zµùþûïÕJ!—]v™žƒ6±h¤‘8@­C:uL… L»ví4ÅlРî0@­‹&"þ/aÁ°‚X"Öz&Ož¬Vë‡Ò¢\Ü8‰ Xä©§žjÆŒ“Sb,ÒQGeZ´h¡ƒb+ØÀ›@ëô /¨Å¢¬È^{íe~ýõW­Þ¾}{U6—\r‰¹ë®»Ì›o¾iJ”(S¬YÇŽÕr¡8Ù•}öÙG›(Z´¨º2©H‘"±>Ý~ûíjù²{ž¼8>a,Qëׯ7Ÿþ¹7nœ»‹/Öñ×ÅŽ=ZŸØ… +…[êÑ£‡¹á†ÌŒ3Ôíq±n‰øÊZ!”•},SP°¿ûî;=%ÊJ»È_ýeþüóÏØ¦™˜,+VL]ëE]¤n÷™’J„ùb,îgœaš4ibxà­jÁògüñjezõê¥ËÑ̶pMûí·Ÿ*Ž=e¸9«D_|ñ…Ù´i“NÏ .lج;»õÖ[ÍĉõЖ-[Æk‚¬ÝV­Ze›OóK?Ù¸~+Uª¤V‘x®xñâiêØ„Üeù*·xòì,[}WàÉ޶ñóÏ?§kK¬‚'Óà6MÙ/¿üâIÜ‘&/¿¿ya×Ö/±˜Þ‡~V”—y£&&Šº qAV€ƒ‚åÀ ÄV„¥ˆD“„pg‰j²õ×)Q²x.\¯S¢\5éšÌË,ì\O?ý4ÿmR ·"EJy%KV-}³˜1©ÈgUˆ$Ý“É 6ìsÿýoÉó¶æCR2yTÒUsÿ25ä/¾8OÖjŠš×__U-éË\L” ¬Zõ£Ù°á7³cÇ.Y=þ0ƒZ.œe &,§ý»Ÿ¢÷Ýf³víÏÔtÙN‰2З^š/ϽvýSê™ R3¨é²…èÀÂ…ëÔÙ"\Jå$§D!¸Œ¿Àlßþgš’-[¶Ë+±»ŸÖ§)p u€W_ýD^åHûVáλäeµÁê.-8KPƒ9sVé+l ²_yåã`¶K {ÄSüœɉSõuÛ””Ò¬'ûž¾?Ä96oÞ¦.íÿK¼'í9‰Q°-·b@ä÷ßw˜ÔÔµš»nÝFùNÀLù“ 5]ºôÞ¦V­#G$}r´³D(Uª¸iÒd÷?~þù÷²Ðøo:PÕ%ÿAÀÅDN²€S¢yç¹páð÷»#Kº"§DCÎtŸÀÚI4N‰¢ñq¥™@À)QHÎE€ã+rJä#¸ëÜY‘ð´S¢p\\n8%Š,W5§DḸÜ8pJX®j8N‰Âqq¹q à”(,7ÅÇWä”ÈFp×Mñƒˆ„§…ãârã@À)Q`¹ªá8% ÇEs‰‰ØœD#à”(b"6'Ñ8%ŠÆÇ•f§D ñBšsgýSä”(#^Hsî, §Dÿ Ž«‘9œ%ŠÀÉ­XG€ã+rJä#¸ëV¬ƒˆ„§…ãârãA@î¶<¡O`Ñ%a¶"EJʇ?K˜þZl…ã-ÏÆTN”·_Ô‡㫯¾2GydË,K”t³D°>Ã4 êÔ©SMµjÕ”ô.§…é2<+/¾ø¢Ò¦Ã˜xþùçk`Ú¡CÝß¾}»­–îšò“N:I¾.;Á@[.ÜmÊ&ýÙgŸ¥«k3„ŠÂ<ñÄš„´’á„–¼œ V¬XÑ“ÙYä)ep=! ŽÕ>VïÜsÏÕ´0I{Ç{¬' О ‚æ “´'ŒÔžÌø<¡óô.¸àïÀô„ÉÐ2^O½~ýúy‰æÕªUËÂ`=Nøî=™ÉÄÎ# Þý÷ßï‰RxB)Ë?ùä“=ážõDá<¡ýÔ|»OÛÂþèMš4)VŸú,Í:Qí»X<ïCñäñ„nTû'¼lž('DÂJ’' Þi§æí»ï¾šyžëu´nÝÚN[O´Óœ',Á9ØòPFñ€1Ï$³JtÍ5×x·ê‰Eò„$Xa#Üÿý•AqÙ²eº/»ôÒK=Úe …‘Ú롃B>ä3©©©^åÊ•½E‹y÷Üs:LŒÂ«ÊÈÅ ]¹'®Ócà„Ý‚aÅD°=!üÕÁ¤ÌŽÝgàÅ‚x¿ýö[ …íZÏ#œ°ž<:ñ^ýu>tÐAžÐ‚zÂDíÝxãÞŽ;T9Pþ>}úxBb¬Ê*”æªø(í =»G[âZõø4' $è£íg (·’y»N”Y“ ¿ýÚµk•U^9â‰S ê…Ž|É’%ÊÚ¼mÛ6mòºë®3bYŒ(’4hòÔ_ýõêV`u._¾¼ºG?UøÙgŸmºtébp;´{Ê)§(µ9 ‹ÉÀ™ž={*õ8l×k0ìˆìýõ×úªîÈ;‰R*÷+uÅr±¤ì\è;ï¼£u¹øa­ÀvK¥>ÔèmÛ¶5_|±9âˆ# œ´ñq ÛI \L80DC)“4„½Ð~l×­[WÙ§ÅŘ½÷Þ;†£¥/g°ÆŽk~øá#®Á<ÿüó º¥ ‡ÂÜR…CÒ{á…ÊGÎ_ÒxÆöïß_¾ÓxŸ!^¹í¶Ûbç î L´óî»ï¦)š={¶©R¥ŠæùéAÅÊ _Ȇ4uIˆ‰Ð~ŠÖ2q“òµÚÝ_ó·ÔçXús­T€þH% Ç©^½º‘¸Hï`¬àû¥wïÞF\‹‘˜ÊH¤ôåQTá°MSwáÂ…@ÓÖ§Ÿ~jžzê)#½iªi‹…Ø}”å6l˜|Yv³–-_¾\¾w=^)ÑÉ€ræx‰Ù´tçVx[€Y!–zÝ?s´õ êoS¢ŒÞ$Tøç¡/ðÁuÖ¤/ÇI𩳥‘#Gš«®º*’*¼aƦdÉ’ê ­;’À[­„Ä–¾œ™ÔÊ•+ .ñïK0®é8‰ÍÔ…b½¬ ÃeaA>úh#¹º§š5kú‡ ³‚K~ôÑG•býÉ'Ÿ4;w¶Ei~3Â'M¥¼NäV´Ö.ðÍÎÂŽ³yćhÒÛr~ r H™9ù…`8³Táþã2»=:Á³X˜Ø!byãÆÍ3Û¶í~4‘0äÂNÂpJ‚Ë®]ËàO…f7,¤ÂŽÿ5¨²œ…`3{ö yEö_h ~íµ…Žq(+²þE*ƒ ɘý óäIýŽt—ɰ“ô8% `‚ëš5kyº×Là†7î£@m—§D=˜>}©<ØM¿|&OÕÍôéËÌÎŽpI§D`j+Ûk¯¢º±Nd÷ÿøãO³zõO#\ÒQšt€¯£ÙxhÅŠõ¦oß—åÃë´V‘"…äýèâ#’>é(̓*ÀwSRv¿¿½Ï>Åe–öo:X×¥w#àÜY„&ð*ªc£ŽèŸ"§DLãÞœD#à”(Wš œe$W%§Dø¸˜(_‘S"Á] O;% ÇÅ寀S¢8ÀrUÃpJŽ‹Ë§Dq€åª†#à”(—N‰"ÀrSüp|EN‰|`wÝ?ˆHxÚ)Q8..7œE€åÜY8¾"§D>0‚»Î O;% ÇÅ寀S¢°œ;‹ÇWä”ÈFp×¹³ "ái§DḸÜ8pJX®j8N‰ÂqÑ\E€ã+rJä#¸ëb¢ "ái§DḸÜx»-&Âb¬ÔHr¼û *ê-º¯Ã" °ø$-UTØžtìØ1=tu“á‘3¢Di¾ÏíÜY)@n]ªS¢ÜB6‰ÚuJ”Dƒ[—šþkNÿq&¨¾—.]«•d… béœÚÚ'çØ¡‡þûrxÆ`ë±çÃ7 /lä)¡»„a.2+PvÒ†öÚ¬¸iCÈ‹Ÿ1£F`½¶¤z¶×Zn ,Ú`V£FÜ7+V/¸3mÚ´£¡-ƒ)qÅŠ6™¥ßgŸ}V9`3sðèÑ£åá¯)Ã#,lëÖeüIã®]»ªâg¦í¨:°S~üñÇQUr¤,nKÄYáëÔ©“vJ(2… Oyáá|‡ç´~ýúF¨Æ ´› ,/Œ­6€É.„¹ï^y啦yóæf­âHYãÆM÷îÝ56Bêa}°~ìÛv{ôè¡û€4dÈÓ´iSU:ˆx›4ib ò„K6JPL”aêÔ©Þȇ«V­ªƒ¼Ú™8q¢nX_¡Kצ¡òD™¡ýÖk#¬ÒL†ªü°X+D(ÓÓQrÂs;wî\%?†ñÎ[xe±·Ür‹Õ1¬×^{­rÌΘ1C™ï¾ûnµˆ0DΜ9S-¬0^k7 NB¨Û±?ÆfÓ¦M:+oÙ²¥ÖçO–b"¡âVVh–~øaí,Ä/\Äyç§¼ª0FÓq@ÆÐ9˜•±0LÃÑ Ñ/çj½zõÌÀ•ipa^Æ•.8( t˜üB‰‰ÀN 7,‚‹ÂM (ƒ%ªƒÏ•Áµ›ÐŠk %¿÷Þ{XH†ùvuØuò¨Q£TÑP|Ü$B_!ýe€8œ(Ѽyó ÄÀvP %æF±ÛªU«”ì˜AÊså¶…”Ç-·Þz«*SXÿ87cî–-[Ô2ƒ7çÄêÑ?¡„—ïKîŒYK®‰¾@} /íâÅ‹ÍÖ­[•—Oó57wV$KJ„¯…¿”;«ôØc)_êàÁƒu&L˜ k Ä,äqPŽ¿”+WN>|¸ZÌ; /w9ñï+®ŠEY,¹.qms·¢¨#-Z´PnXöYë² [#D½v+]º4UÔ W½¶"‚5 »ÈmN8áµ~œÇ2`cI°b‹-JÓwú-í#pĪh7pƒÉk‰2­:ý@‰è#m‡õr,á“…¨ †Sn&ܼâ1ºa߯Z2ÐÆ#0{Ü ¶´“É’;ƒkà\/[¶¬Z .ÊŠ%Žãâ9ÎÆ)Ðsgr'sg±q‘X,„ 3fŒÞa^­Z5ÍG1ÇX&øé)‹”Šs+И#€£4“„…Ö%JhÛÁëÀÙë .J€ÐFE Úi` ””m[ò§N:±›Àæñkûnýeaý³´Ÿô¡ÿ`Ï ƒ„^ïP«V-Ó¶m[­ƒrÙ‡ ê3Ù@‚íhfœ²d‰ÂÎAŒ@°ˆ›ÂÕ!nºoAã  \÷\0w¼®Ü9\4Á2Ö`ýúõz îBÜ®+bÓL†é÷ƒk°¼óX(,f”_1íÛ·7Íš5“O O×c®ƒk².€þ­]»V›¦ ¬'+¹Ü8þ™«ÿÜ 7‹ÝHãnˆ§°XX:bG+Ô ëŸt[Ïþb©ñ ݺuSŒ±îV˜V ³Þ¨„µk×¶ÅÙþÍ’%¢ÿÐЈ£é˜~øál[Ÿ:¸4î~1¥˜yÜÊ…ó7YAy0­+#ŸŽ©'èD°Ì~  ‡òîù¾}ûª›Ð ?¶?ô«ˆòÂ[ß¡CUˆ°ë@q±„( ЇâÐN«V­ÔºóÐqbÏaOÍ5°Yá¸úŽõ²q³`y™Ðbµ`ÿÀÇ/œ‡ë&¶$PFAÛµk«F9×Ö³gO-ãæD‰°Z~ öÙ_µŸæÄ $³¬ì<;Ã#4 †­ÅÀoyÅä[áÎãçnÆ:å¥ÐgÇß׌®‹K¼ã·€ô•kâ& ægå:¬•²V'¬aí;bEÁ0¨lÔÇòÑ&,YUn"â);ë”fsþÄ6¤ÓþA!mÅ/ÙÌ–˜Y2;d&C=^V‚™8 |L&Ož¬J„¥kÔ¨‘>Wd©€ó%‹$…1øHбêM@Ô7lØÐT”…CÁ/±’îƒx´Àj1õ™6Û•_¬X È&îJI %bê" ~añ…NÄÿJn+øêup‹L·íl-lå—zÌ®(KI %bPíCIVnÖS²‰V ±L”³ÚÍs,…²ÂÚ ®mΜ9šõž<€ÎÉ•_{žDûMŠÀšA!xæ¹o°Öƒ¥éܹ³º0”KÅãâ#ˆ9ðÆÿ¥®6mÚhÜĸGžŠ‡IVóÂÚ*èy9¾b]Ð/Kà ‹˜ … D¼Çs,¦ÿþ·%™±¡`¶®½>V¨‰ƒlLeó÷ôßصk—´mÛÖG¬ˆãR|B“>à郫ÏRÀ}B“>¾}ûvY¶l™«W¯–ØØØ4×òÏ?ÿ”U«Vy”{ùòe­óÖ­[~õêUḛ]oß¾í‘lÇŽòÛo¿y„¥çM@€ðÁ2aÂùé§ŸdùòåR±bEY²dIšëÛ¸qc9xð «ÜÙ³gKß¾}_xá©S§Ž¼òÊ+zí«Ó¯_¿.Ï>û¬pv—ŸþYN:售׎f4xذaòÉ'ŸÈË/¿,S¦LQ :wî,÷ß¿<þøã²aÃmÄSO=%ï½÷ž<÷ÜsráÂiÑ¢…,XP5j$ýõ—®ŠÞÿ})Q¢„T«VM£@?gÎß|ó´k×N~øákëÖ­2oÞ<ùã?dþüùrèÐ!— sçΕ¸ò&¾8~ü¸\¼xQ(¿C‡ZoñâÅeêÔ©šôÒ¥KÒ²eK)R¤ˆê}îܹÄEøu0ต ÈçŸ.Ó¦Mk ªV¾gÏ!ŽF 2D•À:t¨|ýõ×’3gN9pà€‚ºpáBMpŒ’æÍ›ë \€Chð?þ(mÚ´QË^³f†=zTX’Õ¬YSräÈ!Õ«W×ðbŊɃ>¨×Þ~Nœ8¡€ú¢E‹ä‹/¾wß}W>þøcM>yòd¹qㆬ]»VËíÕ«—·bRæsžÒ°^”—>úHA"oþüùeÖ¬Y²nÝ:‰0k3%#GŽ”Ê•+«e~øá‡ 4‹4hZ7.*wîÜ: Nž<)Mš4‘N:ÉîÝ»eãÆR»vm=”™5kVí¼>}ú(P%K–$X¬ç'žxB8’óñ$¦žGyDÊ–-«.‹°o¿ýV*T¨ íxàwˆláo¾ù¦|÷Ýwjå ½,Y²¨¥à.þþûoyòÉ'=ô+T¨Þ7mÚTf̘!¿ÿþ»<óÌ32sæLí„Ì™3 ؃È•+—v&å1ìq'íÛ·w•‰ >|¸,]ºô®®Ã•á.Œ8„6˜MþkôÁÞzë­»”|TÀ€{«båÊ•òÚk¯©ëÀGåÝÓ¾óÎ;råÊõùÔ!ËäˆÅöë×OZµj¥àn…ù!::Zç ÂvîÜ)_~ù¥lÚ´I{ì1‚T(—‘€œ>}ZöîÝ«×üàÌaV9®H/è„e÷ïß_J—.­uyI–â €ÇEx“Ö­[+8¸Ž3gÎ貋¡‰˜|8áÚµkɪaºkyì+ï‡W)ë.ß©X)p Æ7&NM|¹rå»&Ä$€…§…äRÒB[àAîqð îsãÃ,mfê ë”luááÿ±B]³–wm³“­(• ØmûŸ€'~ªæ«€Œˆèc-#¬ÍN`ÛìŒÐÝv.%:ú¤µ†Î"{öœ–˜Ï' ¿uÚð9s¶H\ÜMkGšÙ²ðþ¶7ÃÓÛ pkd=§‰¶ÿÞ¶FÅÉôé›2@°à7¶Ú÷Ï_8pÖzão›34½­Ÿ5k³eÙñ.Àx²ˆÅÛIlx|ü-Y¹r¯Ç“ÇØØxë‰âf;ámŸ¿KY³fŸõœ:spOŸ¾('O^Hª¶±ð36YÏϽ-¬÷™[Cß$zeâ9b’Ð ˆ½!¥JõµÞþdÓݯQ™0+V-GÞybª'Vg—-Gë#GÎYoo.j¦LÙ ‘‘ù­Wsåõ>*ªˆ-zŸ^‡øÏ.Ÿ[ûPS¼téBÖ[—;ïC—/ßm½è-l½µ 55“ÕÇ6><Ù–Ø$-çUjX˜÷÷©¡Ž»-gšg²´£Øp;mt¶%มaÚ²g[Ž; ý݃÷>·%àÞ›bPð ÷“¸xruŽ…;€'€³,L£4Má, ÓÎÿïÂäþµ%àlë­}-…m½³µ"àv®Ê–.ÅYÙäœea·suŽK rïÙpÇ¥ÙJl]û'³ëׯçUxÈáá Y³ y=Á’/­ÝÄóKd pejxõÕWmmD¡¢<<1û÷ï÷øÚÚ–>xªòæÍk¢“œapƒÄ&±Àb­’»ÄÄÄȯ¿þš$>o ©I ñÛÂaØ$ Ðá š8q¢Ò¥õ—ËpeMš4ÉÕFþv¶ãÇË/¿ü¢$c£F’·ß~[ù¨\ Ý.âââp@=z´RCq}äÈ·Tw.áÖ2Lnî‘[¶lQ¦8÷°@®ý¶p*ÃB`kC 3‚¦èرcÖ—Á1òÕW_)Kôy½{÷Vª;”†u F¨î êÂú ijРœ8qBÉLjƒ# ÖÂßxã M‡UÓÁä1åöìÙS¯·mÛ&Ÿ~ú©Ô­[W;‚°:uêOðqÁèƒ0: 'ƒu«…¹ .Ä2eÊ(½i ¥ìÞ½»œ={V)ó:vìH°K í£}¬GÐú+~[8`9PÙ±Œ3fŒÐÀ¦ýQ³fÍ”~ J;FÃqÅŠÊ#)cÇŽUö7h‘ Cà­‚³ þCòAZ¸h–hìú$HÅ Mz@ׄàÚpCHùòåÕýèM¢(ùp…œ‘Þ[B(†þ`—¢ø±%¯¿þºtíÚUuÆù+©öËï¿ÿ^Ù8±öÏ>ûLù¦FŒ¡½Ïþ•× ®*ü-$ŒtVG V qVÌš )X½zõÔ]`QË=ÃeC:I§B@†`½°ƒ"ì% øàö%_•*U®D,ßè ¥uÀÕU©R%åX4ÙpEè‡#K£§I“’sª\ D]X™»àcñ§(õÁÊi„ôA‘‹_¼x±Z<†7oÞÔQÃÈ‰ŠŠ²¾ß‰Ôô4~úôéÊÐ Ù˜“ÎÂ]añð"2Í”‚æ:ŠòÝI$óåËçÊÍH¢MF ¨„^Ïð>ýôÓb8Mš”œSeáÞ †Ú”‰WàLLî “Ë`÷›Úøñã•×&6\AÕªUu"d0ä»Ð¤âðÑî$¸.æ æw°™PñÏ€úâ¡…”¼/¾ø¢X[o—žÌ3¸8 ÉNF¥ŒF\ù•Š¿’* ÷F\Ãh&)€fHâ+Ƥ' n套^Òs5¤páÂê ]*–…Ÿ7ÐÐ’wB8 ÁÞiVŒ Üt|¸ ûpܸqJgÊ2z@ú‹ûËž=».÷˜ q#¸G:Âbot£Ãò¡7º@*/?ü°ƒ);¥gÏi4«@ž¥`a Mðyß}I?çÃB Ó¥¬ËÆaõé-°†2:zlæ€L&zw÷â® q¸ %9O&Y‘ÿ'iÿÙ ± *ð6áîþ{ÿ«r°ÄÌ+ÔgØ?¹f„ù›x:Æ- ñÉIú›RrüËâÀƒÜáàAœ…KÖÛä…‘-Þö gâ7>«”`wö¿°>ç¿ »ÓdÄÀƒ ø6岃ñ—cIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/functions_type.html000644 000765 000024 00000005000 14042362131 023337 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Class Members - Typedefs
    MySQL++ SSQLS v2 Translator  3.3.0
     
    mysql++-3.3.0/doc/html/refman/ssx/menu.js000644 000765 000024 00000006226 14042362131 020715 0ustar00tangentstaff000000 000000 /* @licstart The following is the entire license notice for the JavaScript code in this file. The MIT License (MIT) Copyright (C) 1997-2020 by Dimitri van Heesch Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @licend The above is the entire license notice for the JavaScript code in this file */ function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { function makeTree(data,relPath) { var result=''; if ('children' in data) { result+=''; } return result; } $('#main-nav').append(makeTree(menudata,relPath)); $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); if (searchEnabled) { if (serverSide) { $('#main-menu').append('
  • '); } else { $('#main-menu').append('
  • '); } } $('#main-menu').smartmenus(); } /* @license-end */ mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1Include__inherit__graph.png000644 000765 000024 00000006057 14042362131 027600 0ustar00tangentstaff000000 000000 ‰PNG  IHDRdR¢ÁqäsRGB®Îé éIDATxíEÇ›ã%‰„$( ˆ’¤ T@D’"JTr(’€ P ŠJ–,¡Š,’Ð#ãÁI÷í¯ýæÕ»»wwïÁãØ}nWíÛÙÙÙÙžþO÷ôîRÅZ"®ØÆa¶ÑÄUD-àb³‰àb3@„5Ä©Y³&k»Ýƒ yäL¬mÂý gΜ‘={öHéÒ¥ý½ÄmgYàÎ;bâ·-Üå·©R¦¡ HÊØÙﻸ€ømª”iT@vìØ!Ë—/×måÊ•ríÚµ ÂZù´ÿ˜˜˜8}¯X±BÎ;§uW®\¶ädÓ¦MžkLÛ'NȾ}ûÌaŠïƒ ÈG}$ãÆ“7ÊO?ý$eÊ”‘¥K—uP©R¥’¾}ûÊܹs=ýþñÇòòË/Ëõë×å•W^‘ˆˆi×®–“šݺu“mÛ¶yú¡pôèQÙ¹sgœº”<* (ŽA>ýôS9r¤´mÛV¦M›¦ãùòË/¥D‰òÔSOÉ„ ´®OŸ>òþûïK‘"EäôéÓÒ¼ysÉ•+—Ô«WO.^¼HJ.  ÈÓO?-[¶lÑëÞ|óM™?¾–ùY°`Ô®][~ÿýw9yò¤yáÂ…Bføí·ßj»—^zI>,<ÏÅñ x^0èÑ´iSÉ“'téÒE[^ºtIZ´h!yóæ• ÈÙ³gãõp‡A„°µxñb?~¼Ì˜1CêÔ©#.\¼‡z Ô¯_?Íýõ—Ö3Fg|¦L™Ô¨9sæ”%K–}aX¼ìÕW_ÕíîÝ»òúë¯ áæÔ©S:úo¾ùF ÏXµj•Ö9rDvïÞ-U«VÕãÊ•+KÆŒu{öÙgµÚùóçÔ7n¨—zÏš5Kï7eʹuë–¬^½ZûÂË‚)~?‡ø{Óõë×Kdd¤¤M›V† ¢FL:µlذA~ýõW5³ìêÕ«Úe×®]¥Q£FòÝwßÉgŸ}&ùòå‰G 8P½ƒ˜%KöøñãR¸pa±TÜZµjéŒnܸ±¤I“F·™3gªçáx2hÐ ÝóóñÇ{ÊI *¤@Ó¦X±b Ô÷߯ÏbkÖ¬Q=æÍ›—TŸ : Ý»w—·Þz+Ž"„f%õUªT f$wîÜZÄ ³gÏ–E‹ FþꫯԀ €eΜYËmÚ´ÑõŠÐÖ¬Y3IŸ>½ÖâðÂeË– ^q?‚Ç ×JH,Uª”êÄ$yï½÷L“ ìƒ²|iµnÝ:)[¶¬|ñÅúÔŠw°>xK¯^½äŸþÑ5§ÿþêׯ¯3þƒ>–-[*`&MšÈÞ½{eÒ¤I8È®]»ô˜p <”Ì‹{P6rûöm A„!ÊÉ :á¡$O<ñ„†Îä® ä|P!ò%,¸¬+VÔÅžìkĈÚÔ\ƒ‡tîÜYž{î9!NwìØQêÖ­+œ/Z´¨Ú¡C …\˜!CM S/¾ø¢öµyófMc}ôQ Óµ ! 3‹zÆ µŽîË« 6ê¤]Ћ„0:uê$o¿ývR—~Nßhùñc¹i¬õ.Ë–¾›Xïtb­ìEOÞ¼y3Ö C Z³7vÿþý±ÖÂçÜŸþk-¶qêöÁ¡C‡b-OOV Ëëb­É‘l;Ó èkHbS‚KúŠ˜Å7~[² 'Ÿ|2~µ<þøã êvò $¨!ëA(ø_ëÓÄfˆ»€Ø ¿×^ÙQÒ¤ÉmeTéåÆãvT/ T©XÝm9Š”ªWo´8e½!ø7•àRÛ5u|ÈŠŽ¾*û÷GIxxjëÁð¤í ¨BŽdÙ²]V&7oÞ²ض:~Ûµw< ³fm²^TÞ´^{ܵÞÊîHðJÆvOF!Grúô%9tè´gˆ¬†7ö;±àh@–,٩ﺌá¯^½áø°åh@æÌÙl}èºeðë˜õ½}·õööާÎiÇrôè9ë ^t{“m­Zu A½S* ÈÂ…Û-¸›ÀÎ11×åë¯7'¨wJ…c êi} ×oæÙ–ï,ì11׬?R.éÒ¥q = HTT´õ$gt ¿ü²×ú-íÛWÓãüù³[þý4ì©C ~¿Ë²ÛxòåËfýAD6U+2òœî#"JØMÍ€õqìðHrAHÂÚæû{¾Cp𨀰¨ó  €„f !ˆ² œ6Ù»!Ë&@„¢!²B ›¡éâb3 ØLð7íµÙ¬rÓ^›Jê„DÈr±™XCØBABÂCXCØBABPÂŒ!$qÓ^§MönÚk BQYü _7˲Ñôä/Ý,ËF€„”*ÖÌòÈÚµkIæ·Yÿè36mÚŽÓ[[,EûSˆó—‹ JGÔ¾}ûštv œ[æxKH,êÞrzÙÄfº€8HÀ¶nÝêÙ Œ|U+ĘÞ¥÷ýþþûoïÓ>Ë0ÎY”O>Ï%V ßbüØžX[êáé –ì!w•|òÉ'Êæüĉ•æÎ׿fº%á4œG¤`Á‚½?0@z Fw¸™<„^B0zÀ3ÜÎ"_†^ЈÅ|ç¡¢¥šBxa^=xð F ô1¯m|Ãôåïþž-úÇT^[¼QÞ'áæÌˆ‰ï&ÆÃ£,30þü bTT”Î>f=LÒïÀòØcy¨¾áj$Ñ'†çaÐ÷‡~¨ L8 cÏRc ÷Æo¨*TPd¸Ë•+§Ä–ÕªU“Þ½{'û†k¸ìws"IÃÜߟý=…¬lÙ²é,õ¾1žxï.”°Þ´|´G0³§ZXÈ0™uÌ\6دMÈŒa´†Ø0 x ñ›sþŠ¡“%” 3‰“Ê$ÎèáK ß<‰Bùòåµ dœŒ+:::Ñqøê+±º{ò_Á^ É1¡@`eÀÞÂb ¡1TÝP3<‹PS©R%a¡&”ÆjhÇ =¬0d!4²n±&yƒÁ‚où —Iñ¾›¾žyæ “„.Ö9¨Ïã"ìZ¤—ªç¡”ÿ¬…=ã$¼&6ÓŸ?û{ò3½oÀÌBQhTQ8†3íiCØzíµ×t©2Äh„Ã}º6á&'þCE ±2 0kbî¯ÿÿ¡Ž ^B*ëU­9‡‘_xáiݺµê‹î‰¡”q@¦ŒÎHRãÐ~üÄùgÑ…lé~Þe1CÉB #uÖ¬Y¨Áâ!2ƒ1BØÂ3uxMJ ^@8ó•qΛåÚèF¸ƒ™Û[ß@ÆA¢ÂólÞFîÉCÌžö„#¾Ààœ÷úbÚBåmhdM]Jî}ÜÜ?±s¾ˆ—ïw)?Í(ݽO ¸€ø4Ëëtyx¶÷}g+#òÈZ‡~1´FæÈ¯…èÿ‹aœ,Ë7dnmJZÀ Y)im?îå⇑R²‰ HJZÛ{ýŠt9ú×ðãIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/classParseV2-members.html000644 000765 000024 00000010774 14042362131 024244 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Member List
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2 Member List

    This is the complete list of members for ParseV2, including all inherited members.

    begin() constParseV2inline
    clear()ParseV2inline
    end() constParseV2inline
    LineList typedefParseV2
    LineListIt typedefParseV2
    ParseV2(const char *file_name)ParseV2
    StringList typedefParseV2
    StringListIt typedefParseV2
    ~ParseV2()ParseV2inline
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1HeaderExtensionOption__coll__graph.png000644 000765 000024 00000014365 14042362131 031763 0ustar00tangentstaff000000 000000 ‰PNG  IHDR‘“Žû(sRGB®Îé¯IDATxí ¼ÕÇ-!·Ò.¤T¤?’%²„’J)ÒJˆ¢ÕÖB¥hQ‘6EE”"-hA!Eá m*‘("5ÿçûè¼Í;wºïÝ_ïy>Ÿ¹ïœeΜùgžç9gæÎ¯'bœ8²ŽÀèÂY?Ö騀S"§ ÙFÀ)Q¶!t ä»=óÌ3¦P¡BnË"ß~ûm¾kq¾+Qjjª>|¸!¾w[|Ô«WÏ|óÍ7N‰ò×l#ï–(ÛWàÈwœåû$~Š&Â%¬Y³Æ¬X±"ÖÕZµj™ƒ>8–Ω>úÈvØa¦bÅŠ±&.\hJ–,iªT©bvíÚe¶lÙbÊ”)+Û¡¯L*W®+þý÷ßÍ'Ÿ|b7nËÛSv½òÊ+¦OŸ>fîܹföìÙæ¬³Î2ýúõËñ1˜0a‚¹å–[bíèŸsÎ9fÙ²efРA¦jÕª¦k×®æÌ3Ï4K—.Õ î0ãdó Ê7}útÖ³ŸJÚ5kÖ44÷ÝwŸ2dˆyüñÇufΜiêׯoÊ•+gºuë¦y(]—.]LݺuͬY³LÏž=Íá‡njÔ¨a-Z«ƒ¥8æ˜cÌÈ‘#5ïòË/7S¦L1Û¶mÓ4JËþé§Ÿnî¸ãµ$/¿ü²9ñÄÍСCµÎÍ7ßlÈCš7on¾üòKÝþùã?TÉoذ¡¹é¦›Ôê5kÖÌlÞ¼Yg¦ýû÷7åË—7µk×6óæÍ 6Q`Ó £DëÖ­3¯¾úª;v¬(‹0Ý»w7K–,1|ð™3gŽÊsÏ=g:uêdvîÜiÞzë-À+®¸Â<òÈ#ê–®¾új3lØ03xð`Ó·o_u—(*®ì7ÞжÇoÚ¶mkRRRÌ?þhJ—.mpKÓ¦M35Ò:Çwœ)[¶¬î3å.Uª”îÿ DË—/×ì•+Wªr¾ÿþûfãÆæí·ßŽ)(JܦMÝþþûï`320JÄŽ‹``[µjeFŒ¡€2 €ýÐCé@ÿôÓOšËÁõT¯^ݰ ×»wok8ŽÁ#ÎY½zµùþûïÕJ!—]v™žƒ6±h¤‘8@­C:uL… L»ví4ÅlРî0@­‹&"þ/aÁ°‚X"Öz&Ož¬Vë‡Ò¢\Ü8‰ Xä©§žjÆŒ“Sb,ÒQGeZ´h¡ƒb+ØÀ›@ëô /¨Å¢¬È^{íe~ýõW­Þ¾}{U6—\r‰¹ë®»Ì›o¾iJ”(S¬YÇŽÕr¡8Ù•}öÙG›(Z´¨º2©H‘"±>Ý~ûíjù²{ž¼8>a,Qëׯ7Ÿþ¹7nœ»‹/Öñ×ÅŽ=ZŸØ… +…[êÑ£‡¹á†ÌŒ3Ôíq±n‰øÊZ!”•},SP°¿ûî;=%ÊJ»È_ýeþüóÏØ¦™˜,+VL]ëE]¤n÷™’J„ùb,îgœaš4ibxà­jÁògüñjezõê¥ËÑ̶pMûí·Ÿ*Ž=e¸9«D_|ñ…Ù´i“NÏ .lج;»õÖ[ÍĉõЖ-[Æk‚¬ÝV­Ze›OóK?Ù¸~+Uª¤V‘x®xñâiêØ„Üeù*·xòì,[}WàÉ޶ñóÏ?§kK¬‚'Óà6MÙ/¿üâIÜ‘&/¿¿ya×Ö/±˜Þ‡~V”—y£&&Šº qAV€ƒ‚åÀ ÄV„¥ˆD“„pg‰j²õ×)Q²x.\¯S¢\5éšÌË,ì\O?ý4ÿmR ·"EJy%KV-}³˜1©ÈgUˆ$Ý“É 6ìsÿýoÉó¶æCR2yTÒUsÿ25ä/¾8OÖjŠš×__U-éË\L” ¬Zõ£Ù°á7³cÇ.Y=þ0ƒZ.œe &,§ý»Ÿ¢÷Ýf³víÏÔtÙN‰2З^š/ϽvýSê™ R3¨é²…èÀÂ…ëÔÙ"\Jå$§D!¸Œ¿Àlßþgš’-[¶Ë+±»ŸÖ§)p u€W_ýD^åHûVáλäeµÁê.-8KPƒ9sVé+l ²_yåã`¶K {ÄSüœɉSõuÛ””Ò¬'ûž¾?Ä96oÞ¦.íÿK¼'í9‰Q°-·b@ä÷ßw˜ÔÔµš»nÝFùNÀLù“ 5]ºôÞ¦V­#G$}r´³D(Uª¸iÒd÷?~þù÷²Ðøo:PÕ%ÿAÀÅDN²€S¢yç¹páð÷»#Kº"§DCÎtŸÀÚI4N‰¢ñq¥™@À)QHÎE€ã+rJä#¸ëÜY‘ð´S¢p\\n8%Š,W5§DḸÜ8pJX®j8N‰Âqq¹q à”(,7ÅÇWä”ÈFp×Mñƒˆ„§…ãârã@À)Q`¹ªá8% ÇEs‰‰ØœD#à”(b"6'Ñ8%ŠÆÇ•f§D ñBšsgýSä”(#^Hsî, §Dÿ Ž«‘9œ%ŠÀÉ­XG€ã+rJä#¸ëV¬ƒˆ„§…ãârãA@î¶<¡O`Ñ%a¶"EJʇ?K˜þZl…ã-ÏÆTN”·_Ô‡㫯¾2GydË,K”t³D°>Ã4 êÔ©SMµjÕ”ô.§…é2<+/¾ø¢Ò¦Ã˜xþùçk`Ú¡CÝß¾}»­–îšò“N:I¾.;Á@[.ÜmÊ&ýÙgŸ¥«k3„ŠÂ<ñÄš„´’á„–¼œ V¬XÑ“ÙYä)ep=! ŽÕ>VïÜsÏÕ´0I{Ç{¬' О ‚æ “´'ŒÔžÌø<¡óô.¸àïÀô„ÉÐ2^O½~ýúy‰æÕªUËÂ`=Nøî=™ÉÄÎ# Þý÷ßï‰RxB)Ë?ùä“=ážõDá<¡ýÔ|»OÛÂþèMš4)VŸú,Í:Qí»X<ïCñäñ„nTû'¼lž('DÂJ’' Þi§æí»ï¾šyžëu´nÝÚN[O´Óœ',Á9ØòPFñ€1Ï$³JtÍ5×x·ê‰Eò„$Xa#Üÿý•AqÙ²eº/»ôÒK=Úe …‘Ú롃B>ä3©©©^åÊ•½E‹y÷Üs:LŒÂ«ÊÈÅ ]¹'®Ócà„Ý‚aÅD°=!üÕÁ¤ÌŽÝgàÅ‚x¿ýö[ …íZÏ#œ°ž<:ñ^ýu>tÐAžÐ‚zÂDíÝxãÞŽ;T9Pþ>}úxBb¬Ê*”æªø(í =»G[âZõø4' $è£íg (·’y»N”Y“ ¿ýÚµk•U^9â‰S ê…Ž|É’%ÊÚ¼mÛ6mòºë®3bYŒ(’4hòÔ_ýõêV`u._¾¼ºG?UøÙgŸmºtébp;´{Ê)§(µ9 ‹ÉÀ™ž={*õ8l×k0ìˆìýõ×úªîÈ;‰R*÷+uÅr±¤ì\è;ï¼£u¹øa­ÀvK¥>ÔèmÛ¶5_|±9âˆ# œ´ñq ÛI \L80DC)“4„½Ð~l×­[WÙ§ÅŘ½÷Þ;†£¥/g°ÆŽk~øá#®Á<ÿüó º¥ ‡ÂÜR…CÒ{á…ÊGÎ_ÒxÆöïß_¾ÓxŸ!^¹í¶Ûbç î L´óî»ï¦)š={¶©R¥ŠæùéAÅÊ _Ȇ4uIˆ‰Ð~ŠÖ2q“òµÚÝ_ó·ÔçXús­T€þH% Ç©^½º‘¸Hï`¬àû¥wïÞF\‹‘˜ÊH¤ôåQTá°MSwáÂ…@ÓÖ§Ÿ~jžzê)#½iªi‹…Ø}”å6l˜|Yv³–-_¾\¾w=^)ÑÉ€ræx‰Ù´tçVx[€Y!–zÝ?s´õ êoS¢ŒÞ$Tøç¡/ðÁuÖ¤/ÇI𩳥‘#Gš«®º*’*¼aƦdÉ’ê ­;’À[­„Ä–¾œ™ÔÊ•+ .ñïK0®é8‰ÍÔ…b½¬ ÃeaA>úh#¹º§š5kú‡ ³‚K~ôÑG•býÉ'Ÿ4;w¶Ei~3Â'M¥¼NäV´Ö.ðÍÎÂŽ³yćhÒÛr~ r H™9ù…`8³Táþã2»=:Á³X˜Ø!byãÆÍ3Û¶í~4‘0äÂNÂpJ‚Ë®]ËàO…f7,¤ÂŽÿ5¨²œ…`3{ö yEö_h ~íµ…Žq(+²þE*ƒ ɘý óäIýŽt—ɰ“ô8% `‚ëš5kyº×Là†7î£@m—§D=˜>}©<ØM¿|&OÕÍôéËÌÎŽpI§D`j+Ûk¯¢º±Nd÷ÿøãO³zõO#\ÒQšt€¯£ÙxhÅŠõ¦oß—åÃë´V‘"…äýèâ#’>é(̓*ÀwSRv¿¿½Ï>Åe–öo:X×¥w#àÜY„&ð*ªc£ŽèŸ"§DLãÞœD#à”(Wš œe$W%§Dø¸˜(_‘S"Á] O;% ÇÅ寀S¢8ÀrUÃpJŽ‹Ë§Dq€åª†#à”(—N‰"ÀrSüp|EN‰|`wÝ?ˆHxÚ)Q8..7œE€åÜY8¾"§D>0‚»Î O;% ÇÅ寀S¢°œ;‹ÇWä”ÈFp×¹³ "ái§DḸÜ8pJX®j8N‰ÂqÑ\E€ã+rJä#¸ëb¢ "ái§DḸÜx»-&Âb¬ÔHr¼û *ê-º¯Ã" °ø$-UTØžtìØ1=tu“á‘3¢Di¾ÏíÜY)@n]ªS¢ÜB6‰ÚuJ”Dƒ[—šþkNÿq&¨¾—.]«•d… béœÚÚ'çØ¡‡þûrxÆ`ë±çÃ7 /lä)¡»„a.2+PvÒ†öÚ¬¸iCÈ‹Ÿ1£F`½¶¤z¶×Zn ,Ú`V£FÜ7+V/¸3mÚ´£¡-ƒ)qÅŠ6™¥ßgŸ}V9`3sðèÑ£åá¯)Ã#,lëÖeüIã®]»ªâg¦í¨:°S~üñÇQUr¤,nKÄYáëÔ©“vJ(2… Oyáá|‡ç´~ýúF¨Æ ´› ,/Œ­6€É.„¹ï^y啦yóæf­âHYãÆM÷îÝ56Bêa}°~ìÛv{ôè¡û€4dÈÓ´iSU:ˆx›4ib ò„K6JPL”aêÔ©Þȇ«V­ªƒ¼Ú™8q¢nX_¡Kצ¡òD™¡ýÖk#¬ÒL†ªü°X+D(ÓÓQrÂs;wî\%?†ñÎ[xe±·Ür‹Õ1¬×^{­rÌΘ1C™ï¾ûnµˆ0DΜ9S-¬0^k7 NB¨Û±?ÆfÓ¦M:+oÙ²¥ÖçO–b"¡âVVh–~øaí,Ä/\Äyç§¼ª0FÓq@ÆÐ9˜•±0LÃÑ Ñ/çj½zõÌÀ•ipa^Æ•.8( t˜üB‰‰ÀN 7,‚‹ÂM (ƒ%ªƒÏ•Áµ›ÐŠk %¿÷Þ{XH†ùvuØuò¨Q£TÑP|Ü$B_!ýe€8œ(Ѽyó ÄÀvP %æF±ÛªU«”ì˜AÊså¶…”Ç-·Þz«*SXÿ87cî–-[Ô2ƒ7çÄêÑ?¡„—ïKîŒYK®‰¾@} /íâÅ‹ÍÖ­[•—Oó57wV$KJ„¯…¿”;«ôØc)_êàÁƒu&L˜ k Ä,äqPŽ¿”+WN>|¸ZÌ; /w9ñï+®ŠEY,¹.qms·¢¨#-Z´PnXöYë² [#D½v+]º4UÔ W½¶"‚5 »ÈmN8áµ~œÇ2`cI°b‹-JÓwú-í#pĪh7pƒÉk‰2­:ý@‰è#m‡õr,á“…¨ †Sn&ܼâ1ºa߯Z2ÐÆ#0{Ü ¶´“É’;ƒkà\/[¶¬Z .ÊŠ%Žãâ9ÎÆ)Ðsgr'sg±q‘X,„ 3fŒÞa^­Z5ÍG1ÇX&øé)‹”Šs+И#€£4“„…Ö%JhÛÁëÀÙë .J€ÐFE Úi` ””m[ò§N:±›Àæñkûnýeaý³´Ÿô¡ÿ`Ï ƒ„^ïP«V-Ó¶m[­ƒrÙ‡ ê3Ù@‚íhfœ²d‰ÂÎAŒ@°ˆ›ÂÕ!nºoAã  \÷\0w¼®Ü9\4Á2Ö`ýúõz îBÜ®+bÓL†é÷ƒk°¼óX(,f”_1íÛ·7Íš5“O O×c®ƒk².€þ­]»V›¦ ¬'+¹Ü8þ™«ÿÜ 7‹ÝHãnˆ§°XX:bG+Ô ëŸt[Ïþb©ñ ݺuSŒ±îV˜V ³Þ¨„µk×¶ÅÙþÍ’%¢ÿÐЈ£é˜~øál[Ÿ:¸4î~1¥˜yÜÊ…ó7YAy0­+#ŸŽ©'èD°Ì~  ‡òîù¾}ûª›Ð ?¶?ô«ˆòÂ[ß¡CUˆ°ë@q±„( ЇâÐN«V­ÔºóÐqbÏaOÍ5°Yá¸úŽõ²q³`y™Ðbµ`ÿÀÇ/œ‡ë&¶$PFAÛµk«F9×Ö³gO-ãæD‰°Z~ öÙ_µŸæÄ $³¬ì<;Ã#4 †­ÅÀoyÅä[áÎãçnÆ:å¥ÐgÇß׌®‹K¼ã·€ô•kâ& ægå:¬•²V'¬aí;bEÁ0¨lÔÇòÑ&,YUn"â);ë”fsþÄ6¤ÓþA!mÅ/ÙÌ–˜Y2;d&C=^V‚™8 |L&Ož¬J„¥kÔ¨‘>Wd©€ó%‹$…1øHбêM@Ô7lØÐT”…CÁ/±’îƒx´Àj1õ™6Û•_¬X È&îJI %bê" ~añ…NÄÿJn+øêup‹L·íl-lå—zÌ®(KI %bPíCIVnÖS²‰V ±L”³ÚÍs,…²ÂÚ ®mΜ9šõž<€ÎÉ•_{žDûMŠÀšA!xæ¹o°Öƒ¥éܹ³º0”KÅãâ#ˆ9ðÆÿ¥®6mÚhÜĸGžŠ‡IVóÂÚ*èy9¾b]Ð/Kà ‹˜ … D¼Çs,¦ÿþ·%™±¡`¶®½>V¨‰ƒlLeó÷ôß MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Class Members - Enumerator
    MySQL++ SSQLS v2 Translator  3.3.0
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1ImplementationExtensionOption__inherit__graph.png000644 000765 000024 00000015655 14042362131 034274 0ustar00tangentstaff000000 000000 ‰PNG  IHDR´“'d3¼sRGB®ÎégIDATxí]˜SE½l£)½JˆÈ'ERU¤übE*¢¨ˆb¡"iÒ¤JGz¾”•ºRvùçÜežÙl²» Éc“½÷û’7oÞÔ3gîÜ)ÉK£´ˆ $„I=¤‚# „"Bè jN©LX°@P¯^=š7o^°TÇözܼy“Ò¤Ic{¾¾Î0h}âÄ Ú¼y3U¬XÑ×}z!!!„µ` ´˜AO×ÔUA!têjï ¯­:è›8uU0UzÓ¦M4þ|þ,^¼˜®\¹âóÖ†-Š<.]º/íE‹Ñ™3gØïßÿ%|’’5kÖXqLØ#GŽÐ®]»Ì­\HU„îÝ»7}óÍ7´zõjZ°`Ýwß}ô믿:Ar{·˜XuïÞ&L˜`%´oß>zúé§éêÕ«Ô¤IªU«µjՊ݉uªwÞy‡6lØ`¥ÇÁƒyòÏSn,R¡Qkªÿþ4xð`zå•WhÔ¨Q ưaèT©RT¦LúöÛoÙ¯[·nÔ¹sg*Z´(ÅÆÆ²;_¾|tÿý÷Ó–-[8Ì/¿üÂñJ”(A#FŒ`¿–-[Ò¤I“د)S¦PݺuiïÞ½tôèQ&éÔ©SéÔ©S4mÚ4÷ÄOÐþýûÉߊì䀖‡–±Ÿzê)jܸ1åΛÞ|óMyáÂjÖ¬åÉ“‡žyæ:}ú´S A~‹³Á *TPzÙ.Ѫèµj¥^i*­©•&*_£¢¢TÖ¬YÕÎ;•ÎÙ­5§zùå—UáÂ…Õ¬Y³ÔŠ+TéÒ¥Õ¹sçÔ!C”Ö°J“\åÌ™SiCMŸ>ãíÙ³GEFFªˆˆ¥—¹<åÊ•S'NT111JŽý4yÕ]wÝ¥8À÷½zõâðÇŽSz$a¿Ê•+«¹sç²Û| >\½öÚkj÷îÝ8ƒ£ÆŽ«V­Z¥2fÌÈñ ¤4ɹM›6U/¼ð‚‰êöªGuãÆ ·ÏéAЬC'Wï¬\¹’:DiÓ¦¥гÏ>K¡¡¡¤IAš´´}ûv‚–»|ù2'ùöÛoSƒ H“”4Ù¨k×®¬;tèÀá3dÈ@š”Ú{íÚµÔºukª]»6kßÇ{Œ5jÆ )<<œ?š„¬í1@ûCúöíËW|õéÓÇr'æ(T¨a4€`„€öŸ={6éDË–-£"EŠîH‰%tÏR¡;vìHmÚ´‰×ú«T©ÂþÕªU#ÎH®\¹Ø™7o^&ýøñãé­·Þ¢:uêPõêÕIkbîÔ¼ys*_¾<‡oÑ¢ÛëgÏž¥çž{ŽÒ§OÏþ={öd¢Ï™3‡ªV­Ê~Þ~i oE ãͺlÙ²\¦L™2Q§N¬0©Á‘êlhWº|ùr&âW_}Å…vÖÃl¼ Ú¤ 1cÆÐgŸ}F°—.]Ê6,V+Ú·oOè(K–,!mVp¼F‘6aèûï¿'²mÛ6¾Çê…3™1B ­èèhî8A]¿~íwØðp'%8ÍŒ‰iñâÅ y¥&IU„v·µ‹ ÛñãÇ©R¥Jšúß]DG_Ó¿d³ÃÈ!´@5IÂܸr%ÖÜò ¾E‹vë廤OÍY‘ÄáBhàJ~à£GÏê÷gDˆˆ¥E‹äG® €ñ‘‡ÚG@:'3mÚF­‘}Iÿü*¿6áññ ²±â&R¢D7þk-LÍ ]ìÆÁ R80PíŒHQ|n !ômÁç>rdäúóÏ“`É’Ýô÷ßgèÿ‹;èŸ/_ýÀÜî#˯š³^#ৈyóf&| ÇŽÕÁXªU«”Ÿr“d bC$ä¡mhFØÎÁršÍ¸n+ !ômÁ—¼È˜š‰aòbH(oB{‹œÄK‘¡mh19lùVBh°“Ã…Ðö,9Ù‡€hhû°–œl@@mÈ’…}¡íÃZr²!´ Kö! „¶kœ¸#úï—+6d™j³BÛÐôø¬~{„ 9IBhá@P! „ªæ”Ê¡mà@ÜI;±¡m€š„Ð6 wÒNlh BÛ²äa¢¡mÀZNÛÙò­,„Ð6`-§ílYmÈ’“}ˆ†¶k19lùVBh°“Ã…Ðö,9Ù‡@ÀýsÞ‡íøÒvû ò>§ðð·^tØûDî@Ì}ûöéx*qrö>Ë€ûç$:gΜtúôiïk-1“Dïÿ믿ŽÐbC'Ù´ BRkIY“D@$D 8:¹à.\¸P¿qêÏ’% =ôÐCzbæÛþE[¶l¡ºuëZźté­ZµŠüqý~•PúçŸùÔ`¶zõjýÖ¬ËT®\9ªQ£F²þóŠM›6qø¤òöç¾má„V“&MhΜ9LŸ~ú‰Š)¢ÿÖö˜ÏKX¯^=ý?ÐZéNœ8‘Þ{ï=:|ø0U®\™š7oN 4 =zXa\9>ýôSzê©§hݺutüøqêÖ­Õ®]›¢££]g¿7ÞxƒÖ¯_O/^$t`€^ô(9uê”Ò«I–9cÆŒêÀV8MõÅ_¨ëׯ«W_}Uéwƒ«ªU«ª+Vp˜G}Ti)MP¥I¢´vä|:tèÀÏÏŸ?¯š6mªrçÎÍaPˆ&«êÓ§»ñU§N5pà@Õ½{wÕ¥Kö×W…‡‡«#GŽ(M~¥‰Ëþ“&Mâp»wïVz)R8q‚ýÍÊ<`À5räHÕ²eKU¾|yU¸pa5{öl5fÌ•!CU @µaÃÕ¨Q#޶råJU¶lY•5kVÕ¶m[«t'SmÚ´Q<ð€Ê—/Ÿ5j”ÉÂíeœ;w®Ûç)õAPú›o¾Q¿üò‹êß¿¿J›6­Úµk—š1c†zøá‡Udd¤1bƒ†õЭêׯÏ~ðàAU¡B&á AƒTãÆ9 û…^à6:uªº÷Þ{Ù ’ƒ¸z$PÚ P 2ÄoêâYïÞ½ÙIjüøñêÁd?ǯ~ýú©_|‘ËŸ+W.µwï^…ü´9¢®\¹¢ªW¯®¦M›Æe*UªG­R¥ŠúüóÏÕÆ9ÜâÅ‹ÕðáÃU¶lÙ¸£6L•,YÒ1—î@%tÐÚÐ~uã“Öb”#GÒ KeÊ”!ݘ”={vý¾À ´lÙ2k=ç-4i©bÅŠT¬X1æ.¾ÐÐ!NžŒ{'‹ ²|ùrÎ÷˜X‰‰‰!×Y0GЦ†å­GÒ&ß›ÝÕ°°0®‡(ÈAMhWm…É“¶'IçúE>»l\¬Zà3kÖ,ÒfiÓ€0ùƒfÖ¶1/^œÖ¬Yc%ߢE î<›7o&LF!?üð_11ÍŸ??»ñ…IVA ¯M &®6ô;ÁãÞŽÑE›<ÔªU+ rã™6%HϨR¥Jì¯md¾âK›G<ªhÓD¿ðó OŠW`¬€AìZ“# [«Úþ¥ùóçSÁ‚IÛÒlN ¤‰óì³Ï’ž€1É  1܃, ˆŠ¥8hz#Ðþ0m@ ²víZý‚ÍEñ– wîÜɦ†ÿsçαFד8Òv=i[˜´mΚÚT¶4oÞ<Ò“PN䇹„¥Â¡C‡rYõ$^yåŽ@(?Ì™Ç{Œ—,aÞ`ùPÛ蜆ù2õ4÷Át ¸ÃI8Ã5ÚÛ9Ëu[¬õâL4¦žÈLGAú°kAzGÙ¿?ÛÈéÓ§wôö™ÄE'*Z´¨•æÇÌe騱#—Ó˜ÓÉÑlw½bBz"juRø{"8ËѾ}{Â5$h5tb-j4©#9ã{ÚÑn˜þGóÄ9LfÅ™ÌxŽÎ ó(5Jª$t 5´Yµ´r߉ò ¡ïêæ û\$y¤ºUŽäÁ"¡€›bBçÎîM©!C Ë­Ï\,K©EtY.ùÅŠKX|ë‰É–´IjÖ¨ýqR/¹-Ò+*IŸº ¤º¥´²ŠÉá牌¼@GŽDéQ%-]ºÇϹIòBh?s`úô¼}UŸYëçÜ$y!´Ÿ9ðóÏkõ¦HÜöôòåûô–tŒŸsLÝÉ ¡ýØþû÷ŸÖ;š­""Âô–ûë^¾G@í{L­§NݨO»Å6‚'ÌŽqãþ;Ôd‡ÏBû Ê„ Mš´Žbcã~×hžnÙrXLºlnåêc„Ð>Ô$·mÛQ}êš¹µ®aa¡úXçVë^¾E@í[<­Ô&OþCOã×[žÚqùrŒþ…Š˜Ž˜øÒ-g9|‰¦CZóçïÔËu¤Bõß/Dp›B»v§K—®ÒÝw§sˆ!N_ p[ß¾¨´iÀv¾r%n¹nòäõLâ~ýsÖ¡”.]¸ÅHuyˆ†öS“c‹Ûls§O®5u¨þ-¢hd?Ám%+6´…ÿ05‚ùgOþCÎó”…Оcæq ØÍv ÊãJ¦BèÒR ß „ö Ž’J A@mCCˆ mÈ·²BÛ€µØÐ6€,„¶dÉÉ>DCÛ‡µädBh@–,ìC@mÖ’“ ¡mY²°!´ X‡„ècw„ˆ¿Bûa¾~…þ¬ÿ±¿d!„ö ¬’èB@mòbrØò­,„Ð6`-&‡ ¡íYr²ÑÐ6`-&‡ ßÊBmÖbrزÚ>%'û mÖ’“ ¡mYøÛò­,„Ð6`-ümYmÈ’“hía‰~Y»9t ׸Ã>Á!$$­ Íè“´45$ Þ}÷]‹¿pÄûç$MhjÙ²%µnÝÚÆ.%Y Þ!°fÍ»ÒElhG4Ä𡾠¥Ž¡ÑwÀ#φNNmð&×;wZAóæÍK ´î}娵keÏžòäÉc%‰7›¦K—ÎÊïܹs”5kVë¹+ÇÙ³géäÉ“T¦LW“å·eË*[¶¬þшd…·+Ðþýû¹þÀÉÙ°aƒþÑÁï~AÜ¢E‹RΜ9=IÆã°Þ–דŒ<ÖÐÇŽ£~ýú1©wìØAß}÷uêÔ)@žÂUØeË–Ñ?ü`=ÒXêÑ£ýý÷ßôÇÐK/½DC† ¡.]ºº”qøðáî'ËÀ€táÂ…d…½Ý@sçÎ¥™3gºM¤øì³ÏøùîÝ»õ[¶N» ëîA¯^½hõêÕ´yófëå2xRåqɧ·åu“œKo54RÁë‰Û¶mË ÆÆÆR½zõèàÁƒú]ÖiäÈ‘tæÌzøá‡I/©ÐòåËiýúõtàÀzíµ×èÔ©S4qâDýº†«Ô¦Mzâ‰'èСC4hÐ ~V£F zë­·Øÿí·ßæpÐÊǤ۾}{voܸ‘>ÿüszôÑG¹”,Y’jÕªE]»v¥Ž;Æ«t‡Xav\µjUþ‹[Ì’zè!zÿý÷iÞ¼y´}ûvi0!ÿjÕªYiDGGs'Ú¶m•*UŠÞ{ï=ý§æWhðàÁ”!Cýú㿨aÆ´iÓ&®:]“&M\Ö8|ùå—¬õ1¡Þk:qîܹ)mÚ´ ðìß¿?EFFR®\¹èÚµk<‚]¿~†ÊXgË–Ìý÷ßO¨oéÒ¥iÉ’%T¨P!ú裬÷¤·hÑ"žFFZÀ«\>ø uïÞ*W®¬ßÚ5Žëò`4vn'Wõ€‚Û»w/}ûí·tøðaª]»6c‰rcÄõ¦¼V#$áðXC#=T~ÅŠ„e>4 ^&! š°qãÆ4jÔ(&´#HðÛo¿ÑÓO?Í xh¼?ü~þùg.Þ÷ßÏCcPÐ %J”àʯ]÷öÕ¥K—2i1ìúé§T¥JŽ‹r”/_žÝ0}Ìð ÁQ0º ìhØ… 2¿øâ ^ú9qâÁ=+‡ÇœÉä O(`ݬY36¥€/:„¶¨S§wä{ôèQ®ïW_}ÅÊ#› ä4Œ€P.;}útý^ò(jРA¼ò$·ÿüó~ÌOœòA›¢,0ý¼-¯)wRW¯ ­m¶`ÁÖÖ_ý5…„„ðPÛlÊ”)úÕeçøƒ@Ø»ùóçgàA TZC²gÏÖÐXºuë²94A\ÜCÐþ|@è4Ð6'Ÿ|’î»ï>vc-Ý›=n}AƒBkÁ^D™ .L  4CǨY³&Ȇih@ÚÊ”D|æ™g˜ÔЪÈÚ i&V?h=eΗ/‡GZÀ"<<Ü%ž¨{XX“ß”kݺu¬0@t`qüøqîœ8Còâ‹/2æ+VŒgž@c+VÌú ýêׯO™3gfÅ„ÊÔçÆnÛɹ0ƒî¹çš}úð3ŽŒ/”‚Ì”)S‚ Œ”ëüùóæ– s&ÆóÏ?ÏÏР¡¡¡œ&Â!.ñÝÕa >04’ž&Œ¹‚@ø|&-“‡sú1]MAb´“óØÓz´k׎Š)B0ï0Ò¡xS^7©«WÚU¢ÐF°—`J€Ð°C ¨&<†±¾}ûòp‰á XЈ<ðOô`‡ÃÖ‚p˜â1 ÁP »Ã/ˆnFØïhnŒ$žÊÖ­[y‚û矲¦„Mnö;4óË/¿ÌÖqµÇ„q¾ÂftW?ç°æ 1´43Lhí;!˜ÑÇÄÄp‡0ö£«r ü蜎£ƒ«pŽ~žÔv7lh`è O¤êl`(®ÆÌpÌÿvÜŽåñ¤˜çO(-Wr»å5g90²ñJC›È®®Žv™+2#Ž£}mÒ€Ýé8q0þwâê®Ü¦,®Êož¹»zR?ÇÕWx"-W‚¥<ˆcy<©GR›^þ(¯kdüJ¤i&yIKPf] юù»ø°é±Û‰ð"þAàÎŒíþ©Ëm§ Mä¨\%8a¶ÏaÇc’‹¬9'6ŤK’—/_&l‰øÑÐ`‹UØÙØr\EÀ"6#09uÞiÄä›&˜aC+1¬Â€èè˜$! w»n1Õ í°µ5rG2#:Vt@TW;ØöÅÒ¶•1‰„vÅz+$±FKqX^3‚u{tˆã’›óîž /W÷¡Ýc“à ÎDciv4Ö!¿ëZX?Ç9ˆ»F¬ßÁæ éÀüÀv?vùpöCäöI¡bÛOø`×ÚÚ»‡ØL‚¸Úi„ ýÉ'Ÿð¤a`z´Ò'ó°£ÍŒµfDg1fг¿Ü»FÀç;…®³ >_“8sØ 5Ll§ÙÑAxØã˜ôᜄˆx&¶ìzV¤À í¸ƒç\ W;ÎdFl]ã°“ˆï“ÃwXZÇI}˜¤$å!BhK,xR»Œ‰Å•g¾A@V9|ƒ£¤’RгtKô~2!Á `8  Xü…#Þ*GJédRAÀ[Ääð9‰—"B§Èf‘By‹€Ú[ä$^ŠDàÿ𒘙§4ÇIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/folderclosed.png000644 000765 000024 00000001150 14042362131 022555 0ustar00tangentstaff000000 000000 ‰PNG  IHDRÚ}\ˆ/IDATxí]MOÔ@~ÚúuØlp]ö¿#›Å]PYECˆ\9ù¼yÑß`ÖÄÿàÿÀÉxóâ¢C &=qÐÄ£—vZçv¶3m؃‡vžLûNç}Þ÷}Þ½ZA@n° OäNp ’xóþK°ññ€xÜj”°8sÑ€“ “€œ_¼[Âíæ§ïD'‚•yye+ø¼û 7#rNŸlïük* ¾0Ь_d«_(àñÖ±àôz=ñxõv§÷h©‰z¹€šØP-äóä’̪uý¼$»\DãJc—B4¯ãÝÖ.:£Ï-ÑÏß}µŠLEíºþ #—ûáºÀÏgN;BŠ€6ïýñ䬜…ö@’Ðåñp&™h>p9¤™EEά¨ÎÊ‘" u¥n€$R"?{¹<˜…ë…%PNtâ$‰ß¶±úá+^<é"§2 ªDq”q´\¬«Ò™a–Œ‘©Aÿ€"Ôµ ™êŸèP£}#Eàz{û.8i îp³ê(ADwD¦E<ê¬cE¦$ HdÊÄ ”.:Ù GŽ-`ŒL‚ý¾'¢‰Ä<¤CIª½;ÙÇTZd±i};>èôß‚z×;K×§8t ¤Ž q”:uvÿv•Ý›¬²ÙvEân{„M·FXg¼ÌfZÖ¨°¹‰*›ßÌß©±ù©:›j–YqèÜë#3çÏSøWøÿÿÑr'ø Ôùù‚ ©¡IEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/dynsections.js000644 000765 000024 00000010544 14042362131 022311 0ustar00tangentstaff000000 000000 /* @licstart The following is the entire license notice for the JavaScript code in this file. The MIT License (MIT) Copyright (C) 1997-2020 by Dimitri van Heesch Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @licend The above is the entire license notice for the JavaScript code in this file */ function toggleVisibility(linkObj) { var base = $(linkObj).attr('id'); var summary = $('#'+base+'-summary'); var content = $('#'+base+'-content'); var trigger = $('#'+base+'-trigger'); var src=$(trigger).attr('src'); if (content.is(':visible')===true) { content.hide(); summary.show(); $(linkObj).addClass('closed').removeClass('opened'); $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); } else { content.show(); summary.hide(); $(linkObj).removeClass('closed').addClass('opened'); $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); } return false; } function updateStripes() { $('table.directory tr'). removeClass('even').filter(':visible:even').addClass('even'); } function toggleLevel(level) { $('table.directory tr').each(function() { var l = this.id.split('_').length-1; var i = $('#img'+this.id.substring(3)); var a = $('#arr'+this.id.substring(3)); if (lé¸xþt9Æ$µý OæVE*õU´Ì‚ç#ž×ˆ•ïûr@l$øPÿrHaaÇ¥ ²›dZ®rè‘ãqI„o¼øT\Ž,tªj2FAxv-LŸp׌p TÄI/ \¥sfí½; jViTƒèú¤o^cpÅü¼ûû»Ïb]”€¢¤<†aþÕœ²“ßÓ˜y“£§9:Œîù+À³€ñà,E žf³6éNˆÄE£KU}Ü^;¶ØnZ¢uß­US4— ѬëbížN¶.Úk¦ØjTÄöº%µªâ i¯VÄÊÝò§™ Èù¸)ùÿG€™òºJ@T x”IEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1FileException__inherit__graph.png000644 000765 000024 00000007524 14042362131 030753 0ustar00tangentstaff000000 000000 ‰PNG  IHDR€RœÈÜïsRGB®ÎéIDATxíEÇ›à E1‹9`*•S0ÇR1k™Å,æ*Ìb*s)&@( s0Y1a:AAN`¾þõ}óØ÷nßy{¼wxo¶«övwvv¦§»§»gßÞþ9%I)T ÌkêÈÓqWI 5€À-!5€À  iÒñ7N,Xô¶´~=H U«V²Í6Û$ê)±,^¼XvÝuWYyå•u”V.®þüóO™8qbâNÒXd¥uCj¥¥ÏÄ£I ±ÈJë†Ä9ÀaøÃ‡—ÝvÛ­ yÈÛo¿-K–,ÉÖV[m%믿~VY¡O&L˜ ë¬³Ž¬»îº…n:Q{ Òœ|òÉ2kÖ¬DÍWùˆ#Ž—^zI† –Ù¦OŸž¯úr•£ôÓO?ÝÚ5j”üôÓOËÕ^AnæQp9r¤[¸pa·ì¾ûîîÜsÏuíÚµsgu–;çœsÜÚk¯íN9å÷Ë/¿8aN³Vk£o߾nrcÆŒq{î¹§kÓ¦»à‚ ìÚ´iÓÜ^{íå:vìèzöìimqAg§ãÚ;ìàÎ>ûlkûÈ#´6UÈ®Gnß}÷u:ÃÜ 7Ü`m}ûí·îÀ´ãºk®¹ÆŽW]uU§Š°ãèŸ3Ï<ÓÝxãVtÝu×¹+¯¼Ò-Z´ÈvÚinÍ5×tûì³ûî»ïÜÒ¥K]ïÞ½'øA>Po[l±…kÞ¼¹ñtÅW¸7ß|ÓUVVÚ¸h“ëï¿ÿ¾ÝÉ%—˜:uêä6Ûl37~üx+Ï÷G—æ&Ã|×ó”Ï-Šøþûïåï¿ÿ–¡C‡Ê³Ï>kÏ pÛœó ¡iÓ¦òî»ïš?÷Üs¢Â’[n¹EÔ@dôèÑòᇊ Wî¾ûnÙ`ƒ lf2[¦NšeôŸ}ö™°öýôÓOå·ß~“×_ÝÚùå—å¼óγûzè!™9s¦¨¢eçw¶û×[o=Q¡fÚºì²ËäŒ3ÎÈlýõ—¨ÊwÜ!ƒ–ûï¿_Ô å½÷Þ“¯¾úJ¾üòKãù¾ûîUŒÕyå•WDÐ65 ‰ãö/—_~¹üøãòûᅴƎ+#FŒã?^®½öZãëçŸ6Y 'äóè£fø-èAËÈ[\ÀlWEZo¼±ûè£ìx§vr|ðëÓ§SÛ,nÙ²¥Í¬‹/¾Øm¾ùæîž{îq*«ß¥K§žì¸ÿþcïÔÜŒ3¬¬_¿~îÔSOµ¾6ÝtS+ãžã駟Μçàð@ªäÌæ=³T…m}[*,Õ†_2 M:` `À€Qúøw‰þjY)Ï?_9MRåS?H˜0aª)Þ Œ0iRÍ?ùº¥¶Ò # .ûQFßéÐßôÇ–šnk5žà €EÏ!ã-þ{ UV.–GûÓ öÁ@yyE¬‚çÏ_(Ÿ>-öZ)gýûÒŸ‰UÓieåyá…ð¼@P‚XöµoßKߨifïøg`þÝ‚ Éôé}«G Ì ÊPääɳdʔ٦Sâ~óæeÒ£ÇvvÞ¹s5ì××ìBéþ™—ø·€†.‹NZëÛ7U¿"ŽY¡ïÝ5“½÷^ö¦QC_RþƒË’ ¨Ôëm7Ò\ ÔU\óø‚6…û[h•am5Ï0®m¸Â@È´àþ !SвâýØSð’tŸ@ Š÷ÃN ÀK"Ð}j*Þ;hH—¾è­?]nÞBÞBV¼{Ð@þèM!À=9@úk`€ŠO‡¼LÁ‡€ô×ÀeÆÜQº L—Á}î€Ó¾’kᜧ! áX{¾‘ò O#FŒàý¨`¶²²v®¬¬m0ãE·|ç1Bs³þ3H @@ãÐϮ糗´¼Kì¾ð¶Ë.»dFt˜‘BÀ©¬|†ž@à•ÔF|ƒÌO|É\ŸBØfy‚çƒú`ùÍ£{à…ÊËËÍ;)ФÐ+úºòvÞF:vìh€˜aÃG”GPFO8áCFÁðÀU„ðL Æ b !-)ÕÉÈÀ,Œ€PF›¢*À1qÀ%@%™Y¸9fñO¡p™°q^¹³ àAš¢¼ä#`fIM„ðø>I„=˜GΓKÀÙ0&îã˜|Á{&ê:€²Ë7>ÚõDEDñ§™=rÅSy° Îñ P´/úçZRª“ˆëD”ôãKS J  Fæ2ÄÌÂE¢ K´“82[@Ç$^"0’<W‹+g&Ùæ‰'Z¸JrŠ(ž qaAx¼ÆAr‰¡¢|êbDЬjý{Þ¾c³ oäIqäåw-_YÖgâP™çòüà+\‰–w]Qˆ³€+¶hÑ"SŒÕ#hBG!—“™jyÀl$ `˜u%”„›ŽºèÜñ1ãYµ°|¦¿èó <Æ £„Üà‹SÂc±rЬ ÿ™8ܶ§8ås-šøº Ê'W¾lEì‰ËÑØ\ðb¹”o|ÔÍ­OGqr‹«—¤¬`9@’NÓºUËTÖö+šRXAÀ½/¯§)ë©BŠ ¹ ÍØ3¤KŒ ÞŽQ½7ÞÜ7‚²V ÙSÞë$paãê$®¼)ÍJP©I†”@i•`Ýÿ§³ ¬+l­üIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/inherits.html000644 000765 000024 00000012440 14042362131 022121 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Class Hierarchy
    MySQL++ SSQLS v2 Translator  3.3.0
    Class Hierarchy
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1File.html000644 000765 000024 00000026322 14042362131 024050 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: ParseV2::File Class Reference
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2::File Class Reference

    Holds information about an SSQLS v2 file we're parsing. More...

    #include <parsev2.h>

    Public Member Functions

     File (const char *file_name)
     Open a file for reading, using the search path to file the file if the direct path isn't readable.
     
    void error (const std::string &msg) const
     Throw a FileException containing the given message.
     
    void error (const std::ostringstream &msg) const
     
    const char * name () const
     Return the file's name.
     
    void parse_error (const std::string &msg) const
     Throw a ParseException containing the given message and our stored info about the file name and current line.
     
    void parse_error (const std::ostringstream &msg) const
     
    bool read_line (std::string &line, bool &subdirective)
     Read a line in from a file. More...
     

    Detailed Description

    Holds information about an SSQLS v2 file we're parsing.

    This class exists simply because there's so much file-related processing in the parser, and it's confusing to have it scattered about.

    Member Function Documentation

    ◆ error()

    void ParseV2::File::error ( const std::ostringstream &  msg) const
    inline
    See also
    error(const std::string&)

    References error().

    ◆ parse_error()

    void ParseV2::File::parse_error ( const std::ostringstream &  msg) const
    inline
    See also
    parse_error(const std::string&)

    References error().

    ◆ read_line()

    bool ParseV2::File::read_line ( std::string &  line,
    bool &  subdirective 
    )

    Read a line in from a file.

    We read the line from our internal file object, trimming any trailing comment. Does not trim whitespace; we depend on ParseV2::tokenize() to cope with that. Sets subdirective flag if we see leading whitespace before we trim it away, as indented lines are interpreted differently by File's users.

    Returns
    false if our internal file object is in an error condition on entering or exiting this function.

    Referenced by ParseV2::ParseV2().


    The documentation for this class was generated from the following files:
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1Field_1_1Type-members.html000644 000765 000024 00000020210 14042362131 027134 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Member List
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2::Field::Type Member List
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1AccessorStyleOption__coll__graph.png000644 000765 000024 00000014567 14042362131 031465 0ustar00tangentstaff000000 000000 ‰PNG  IHDR¡‰D®XísRGB®Îé1IDATxí]xU×>†’„)Òé*Ò¥Jï*H/Ò¤ƒÒ›4Q¤Ió"`@!AD)Ò{•.ùH˜ÿ¼‡ÿ®“e»Ù°ì&÷<ÏìÎܹwî÷¼÷œsgËyÁ`!-ç‡@¨Ïóë[÷¬x„€&¡fÂsG@“ð¹«@ÀãI¸råJzá…ôG N:åñ,÷xnÛ¶ÆOX?éÍ9 ªW¯Nš„?õ=·„ž’óE@“ðÙ⫯îI¨ãñUΜ9CGµ³xñâ”1cFÛq|í„……QæÌ™)W®\¶KîÙ³‡R¤HA  ¨¨( §téÒÙÎ[í`¬XlåÏŸßvúÎ;´{÷nzûí·me‰e'AXÂeË–Q¿~ýhûöí´yófª[·. 4(Þu¸dÉ8p íºX(Õ¯_Ÿ:D£G¦B… Q§N¨víÚtðàA[=û¹sç6³€¼!!!æ¢D³Ÿ Hm-Z”FEcÇŽ¥I“&Ñ´iÓD‰7n¤2eÊP¶lÙ¨sçÎRÒvèÐJ•*E›6m¢yóæ ræÌI ,:‡¦²eËRÖ¬Y©{÷îbåZµjE«W¯¦»wïJûX…:T,ÙÒ¥K©X±bôÕW_IÊ 5kÖ¤“'OʾýKDD„ååË—§^½z‰Õ­R¥ ݺuKž <˜²gÏN%J” ;wÚ_Âk Ï;GË—/§ÀÀ@!ˆ2»uëFû÷ï§­[·ù@©óçϧöíÛ ù>ùä!×Â… Å¢¡,k:uhÅŠ´e˱\ :\ñš5kP…‚‚‚¨qãÆ@W¯^¥Ô©SÜêúõë©B… R§`Á‚”%KÙ/]º4¥L™Röí_@Â#GŽHññãÇ…Üè÷ÆôóÏ?ÛŽIаaCÙ>|h¯M»víÀ‚‚08Î;7íØ±CÚµlÙRúÀ5aQq y饗Ä:•,Y’räÈAMš4‘òÖ­[S¹rådøðábÝäà /ˆaA1.X .ЪU«Ä Âú‚ô '&^B±0"ªV­js¥J1ˆÙ`A¢Zµj‰RÕ9µpÂ×®]+m§OŸ..Ä}ðàÝ»wO6¸?X4HóæÍiĈÒÆßßßF°àà`jÛ¶­tMBG‘2Õ;qâ*]¿þ¯­$**š?†eÔ4 〬^TTÌ/”òÇËü}BÏÿ¡yn÷™7Ñ$ŒÄAA»xA£åÝ»‘ü•1½@‰Šƒš„¥ªíÝ{žN?þý¿‡ þó1 ©Úé÷ØÐ$ŒË3«W?úbl@€?ÍÞR¥òåwìûóÏîÓÞ½ ã+÷–7ÿŒ õ'&Nñ€c¿ÓÒêÚµpþaÔš<¹™ûû'£·ÞÊíä}õÐDñ}ÂøT³Ÿ_2þ†ö£­Ÿ?ƒ@µïë×¯ÓæÍ› ÙÛóæÍK•+W&GÚá¿üò U¨PAò"?µ#/­àu–pèС4mÚ4 ®A”7ÞxƒV¯^¯ðã!4’e#c¼’ãÇ’fGDDÐûï¿ÏW‰Ú´i#û÷îÝSÕ{ áÿ,|‹ÿÝ …‡‡ÓŒ3¨D‰œrâÀcuUÁœ9shúôér¸fÍéSKï<ë=F˜P¯ŽŸ8žºuësçεÕ1b„Ñ A9þæ›o ÎOl,XÐ`%JYÿþý^½zœÁݸ|ù²Ñ¨Q##}úôgR—$Ûù dpNdƒ3¿aaaÒŽ3³L4[?#GŽ4j×®m0© &‘­¼lٲƂ 䘳ËœÁ]u£.®Í™å ÎÏg«Œu÷íÛ'cÇ£©L™2<ÁŒÃ‡Ëø8/³Á4ªT©"I¶/^¼hT«VÍH“&”!ùö©S§ä>8÷ŸÁÙë.]ºÄèÇê€WÇFÏž=­N=¯²<^ðq”„]»v5–-[f°E4rçÎ-ïȆž6mZãàÁƒÆ¡C‡dŸ-”Ñ¢E #W®\B(€­—(ålqŒßÿÝÈŸ?¿±wï^c̘1Bdza“'On\ºtIðyýõ×Å‹Èûöm)C¶øT©R P0dÈ©‚€P [.ãßÿ•úêeË–-Ò϶mÛ ¶ºÆŠ+dÌìæ¥ý€„(‘‘‘B.Œ¥_¿~FóæÍ…à 6”‰ÂâúóçÏ7p-vñ¶ñª¾ìß=‘„^Âmݺ•Ξ=K¾¾¾ÄÄ!V %I’„XÄ ¦ýû÷…ÿCú.ªS÷îÝ©~ýú„Œ¡£G&¶NÔ£Gq‹LÊž=»¸÷€€ºqã;wŽ&¾Bl…8?ÉĈΟ?Olq%E,ÊŠ§Þ½{†x"H?Ç—w¼ 6LÚÀµÃ…›cÀ«W¯Úb²©•,VÏHr•ô;ï¼#õÇG°Ä¼ð \¹rIðùçŸÛ\0\.,xžuâîÝHþMŠ^ (<œy×$t-®»wïy~8ýßwýTs$ßþó1 ©Îë÷ØÐ$ŒË3«Wï“OGü) ÀR¥òåwìûóÏ î3IÏY¶Ó…±# ?1‰Ë38ö;-ç®] ç߬¬áoN7“cÿdü…ÙÜ–íta¬„zÔgDZÓƒNøù%£J•òˈΟ¿Á¿;ùïØƒ†éUCÑîØ«Ô•0«Iè‚^ñ{ëß¼¸pÙD×T“Еóï<«b-®! Iè~ºu<  IèˆÚ»ž©©&¡ gwµ;v1ëúš„Ö¸èR7" IèF°uWÖhZã¢K݈€&¡ÁÖ]Y# Ih‹.u#š„.€­Ѹž©©&¡ gwõ#g³®¯Ih‹.u#š„n[we€&¡5.•"&ĦÅ54 ]À1!6-®! Iè~ºu<  Ièˆú à™šjšÀpvW?¢q1ëúš„Ö¸èR7" IèØÚ»ž©©&¡ gwµ;v1ëúš„Ö¸èRw"À³Ù&¿þú+zéÍA |||)^×x9ˆ—â–ʺõÿÄ ‰ñ LBIضm[wÎÝW"BZ‘¶WeÞ­kwœˆà©·ªI詚IDãÒ$LDÊöÔ[:2H$•F"j%Hu¼ñ-‡"äF–'%È#Œl˜ª?NßJiÓ¦U§Ÿø~áÂI|ÍélŸXïyä ]p={ö¬älv$ëhdd$=zô©Y°pïÐYDD'ýyEê;òíN+¹›Ÿu–-§-!ç¦#FÈM8p@@÷ìÙ“ÿ“%æ8»ªÌM›6ѬY³l—’¬úÌ™3ôÛo¿QóæÍ‰s÷RŸ>}uŸ&HÀÝ»woúßÿþ÷´ªn?ewèнþæÍ›„±";=dÒ¤I„lñVÂù™iüøñV§le‹-’¬öÈ0úÀúBŸ±‰êóîÝ»ôÇÏþá¶„8r#C:„“HSݺu9±Ìi §9sæHfô2eÊP¯^½Ø]»vÑ©S§¨S§NÄÉ¥iñâÅ2+ÛµkG5kÖ$Ì~so¿ý6uëÖMÊ‘í³ÖOÍduÝ?þ˜°ZåÊ•à|ùòñÿV¢¾}ûVb°(ÈëÖ-*[¶¬¶~ýú2ö}ûöI[X”ØVeVããäÝÒõóçÏOƒ ’¯ua,æ2ä-žœy aʃƒƒE¹°ŠS§Nåÿéó×·¼dÉB¼† ‚äÒ°4ˆß²eË&Ľté͘1C,@…€ÛAŒ‰xâÀÕâš Ž! =®=pà@!zË–-¥¼V­Z¢,`V|´apýû÷ï˵/_¾L·oߦ+W®1@^ÌrX]û2„VãË’% íØ±ƒóÚ-òÀX•ÁŠAy˜¤'¬2”éܹ³ ûP2 à9mÚ4¹7L8d¯ÇýbÒ³ëׯK¿+VD3ŒÛjŒÑÑÑrϪžzv 1¤B… cãzÐ+Ω>UÜ/\>øà±úÐ%&Þ¥@¢›k×®I™³/qrÇH kd( ñÀ̵J,›B;båÊ•â*à†£¢¢ÄºÂµaöB@:X(³R-*  ¸¸àaÆÉ9óXÌû{÷î"ÂÂB0 `Q`Ù`µ”ÀšÁ:Ù—Á=Y¯|ùò¢HLÄš=zôñB¹æ2(F}À ¢p5AXƒûAˆø ÇC]% $ÎÁ3`ƒ‹W’Xׇ»é (¶ ®×ÀµìÄ7[]Œm! ¯$I’Øî˾ýÓŽãd ­. WvîÜ9q³ áÉ“'â‰áÇS“&MhÊ”)rð °DÅ‹—˜ J‡¥‚ÀEÁ­ÂJÕ¨QÃÖ-¬,bLS `„˜ÙpÅP(âlp;ˆyòäAžâ{t–ãQXÈŽ;Š¥¶/ƒU°¬8êöë×O,,‘UYÉ’%…4Pê€ öî1}úô4oÞ<Á cÇ‚l ÖjáÂ…2Nó$Ç«1¾öÚkòÉâBµp„«¾ðçÀ[ÀýCTŸØV«0)`(0 J”(Sñ"q²„ÊL›G A>(3qGPPEÕG¸d×x‡)Ï”)“(ä„`Æ›g9È7nÜ8™¹ª?Ä$Û·o§ï¾ûNŠ0ãÓ!¦)V¬˜¸ÇþýûKx·¡Q¨ ²cÂtŒuÀ€¢,f`ÅíË `¸QûñÁjÂ}"ô€‚€höehK÷ᇊ«ƒÕT¢p;C\‹…H E#Æ‚Õ)¾øâ !)ðÅ$EÜ­D]ÃjŒ 1Æ­^½zbµ x#e1iÑá {¸žê“‚²6mÚˆÅÇ=Â8€„6lPðՋQààAŒ,V¹®|vŒ›Â Â<ãÆàæìqÌ{@@€íff(f¸²¶“ÏpVÀ*·‚®¬Ê¬ÆKw +¤È`U†k¢îÙÜÊÍ—ŒØ äS×Ãynä™ñøÆêù¨ÕÕõ¡\M ,$î "L~óØTŸª.ÞQË<>s§íc¢!æ-W®œªÿ)$0K”XçÌ®DÕE,eþP[•?ëw€o/VeVãƒÒTüª®aU†s3fTUb}‡ë·ÂDxË„EŽqQ«1ªÎÌzQeêÝJOæXQÕ.X8Æ·ÄÉÇ÷ ôõžŽ€z¼¥3Ooñôˆ•=A4 =A ŒV2> ˆ.±ñ‰·Õ±'ÜŒƒ—"À«%›üª¿Yxz{Æð£çx'$ÆêØKç‘¶w#ªÝ±w+0AŒ^“0A¨Ñ»oB“лõ— Fÿu¯‡—ròIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1Option__inherit__graph.png000644 000765 000024 00000043643 14042362131 027467 0ustar00tangentstaff000000 000000 ‰PNG  IHDR¤¨¯ùšúsRGB®Îé@IDATxí ¼ÕÓÇ7Iƒ2'*ŠD$s%‘¢2^2>’SŠ2ÏQùä<­±lذÁ}õÕW®qãÆ9ö,Á®\¹r®~ýúîCɱ|8¹nÝ:÷õ×_çZ(_˜ï¦!&ºV·!PB2dˆëܹ³ûüóÏݧŸ~êZ¶léºwïžôѼñÆî¶Ûn‹ÔKà˜Ö­[»éÓ§»^½z¹ƒ>Ø]}õÕ®E‹nÚ´i‘r‰>\qÅNr«V­JT¤ØŽ÷ÝwîÈ#ÔÉŸÏ̇~¨ý¹öÚkÝ—_~·o‹-ríÛ·{Žƒýõ—kÓ¦ëСƒ›7ožÖÏ÷›nº)á5œmBø¡9^P' db™ƒ€L\^¼ìrðý÷ßï/¹ä’H™±cÇúwÞY¿5ÊsÌ1¾jÕª^ÈB <Ø øzõêùÑ£Gûÿüç?¾J•*þÐCõòÔ)sÀøý÷ßß?ûì³zŒs;ì°ƒ—§týþÙgŸù]vÙůY³Æ—*UÊËd©Ç»víê/¿ürý|ë­·z!2ý,Z†Ÿ9s¦~ž5k–?ðÀý¹çžëûõë§Çø3fÌ/Ú–ßgŸ}|ïÞ½õx¼cB‚¾aÆÚoñ@ô2Ñ{ñóçœsŽ÷eê©§ú_ý5î±?ÿüÓ_uÕU^49/$ê…ĵ¦M›ú.]ºx!t×]wùV­Zéqþˆªãxá…¼h„~ï½÷öB"þÁÔ2¢E)~¢)fŒ×GÆ*Dç·lÙ¢×ñgõêÕŠãøñãý5×\㯼òJ?÷G´HÝ&õŸyæ™z-ø×©SG¯T ^}õUÅ^´d½çÏ=÷\¤D¸3fÌHt:áqÓŠ‚õ­ C "ÀÓöСCÝÀÝwÜáš7o®£²q×]w›2eŠ“ Ì7ÎÉè^|ñE}’—ÉÙ1BµœË.»L]Ì1½ñDþ裺¾}û:!5 qÄj®{÷Ýwµî×_ÝwÞynÇwtK—.u+Vt˜”FŽéŽ?þx-sÐA9!;ý,Äè„Ðô³L²º¿ê /t/¿ü²ãšÞí·ß®ZÀO<á/^œðØi§æÞ~ûm'ìdâÕ1U¨PAûÊžš·Þz+î±?þXÍjBtŽö»uë¦ícBÄÜv÷Ýw;!,÷É'Ÿèxq¹Ÿ;w®òt矾Ã$úðÃëCß…øÝöÛoï„ ³%¶˜ÛÐ ·Ùf›H¹vÚÉ-Z¥µûùçŸ&=0äD·‰yTÈC¯E«Bûè£Ü_|¡Ú1Ú&˜<ýôÓNÈÕõéÓ'ÒN²?!%Q«ÏH˜È˜”!‰ÓO?݉V£#ƒäiÜÉ“¼’ƲeËô8f5Ìk¢¹ ¸[n¹E×¸Ž ž‰oöìÙ”hW:Ar¡hbÚub*ä;²Ûn»9öLÉS½íF'QŽCraH´]ƒâZrbF4Ç:{a˜ø! yjw¢½)ÁÅãzÎq=¦³ýöÛOë¨Y³¦>|¸{衇Üõ×_¯“u¼c°hp®nݺjÚ­M±$DÛTSÝž{îé.\¨ä¾dÉ5MÞsÏ=®lÙ²J<ˆhaŠåÞyç'ÚCVaÝ)^!{Æ+:„†`Ê„Ä;uê¤ Ñm"cí \n¼ñF%HѬô„ëE³ÓûÀ½ùå—_8T(b„T(°Z¥†@ÉG€§î÷Þ{Ï¡½ ‰ÉΉ­E5%4'11¹ZµjEœpR@kâÉM ͈IŒÉQLqú‚ .äâ‹/Ö…~ÚbA> “ügœ¡Úíq.‘ ylÞ¼Y5¶7ß|Ó‰iPµ¤ùóç;4œ oì±µk×êZ ôñè£vbÆÒöÑ!fÍšiô)öíDG%€$ 9$àrß}÷é„ß®];GïSO=º¦ïeÊ”Qò‡ŒÀ=šè7ëE±}„ Ñh¢…²ßÿ½>pœ{‡ ½r.žð­ÑƼ¶Ûn;ý Ä»>ÇŒ’¢Õad˜»˜è ¤Ž“'OþÇy`>Ã4ÇÄËS=Ú¦7Þo¸á‡9ŠÉ©V­šÃôÆyÐŽ >>£1¡E f(4â£^Úƒ4i›×< ¤qøá‡;Ȇ>£E`CS‰=†Æ€éàd!kEªa¡åQM§ÆïØ)§œ¢)R†6 æh‘51‡F†ÎÛnû÷ ٠н÷Þë*W®ì › Õ«WÛGpBóD“EÀ®gÏžŽ±7hÐ@AØÈ°aÃ"š&ßC›|¦rBˆ[DSçœD+Õk„du\Ô!$çeíO‡6…Ôu¼ÄA‚{$„êqbÀ¹D´8/š®^#äìESÕÏ9ý¿‚85À¦&†€!Aä…rƒƒÉNÌ9Z O´XMÁ‹&£Ä}NȽ8KD*’Ï“i´Ä;†·Ü?þèé® +Æ;Fy1Ýùßÿ=\÷ (+G $ˆBŒ'ñúH9úLßc¯ƒÄéB *ܳPoh3|ç\Ä "Ûx£ÏçåsA É6Ɖjé…f¶ ¬ËÄ ¦(qŽ=¬ka=ã' ñk3¼¢%Þ±Ò¥KëúSt9ðì‹–xÇ8ϺZnÂøãaÀ1L ]t‘:O„µ§Øúâõ‘2`ÎÚY"‰¾g¡L¼~€Ë¾ûîŠé»R‘Âm†€!6³YÌw‰ åóŒìSÇ|^V,ÅŠvkÔ0 "€'b2Ɉp'/)ò·‹GIé±õÓ0 C -؆ª´™ Ê0â"°µc·Ù¦”ì)ª"¯j².³·Ä!{€ÖÆmËf.ìwŠÞ›•$Œò‚’•12 ‘&Q¤çIä‚Y²ïg¦|ž+.÷’ ¬µÜ±ÇîïN8áÀ FdžžLŒ’‰¦Õe¤ K–¬‘ ž3ô U¯¾›’ÏqÇÕ’M¬5%ÄNvµ4¶ £˜0B*æ`Í©€ÀæÍ[$è% Q£fH¨œ5®I“%hçÁîÄ7åò©ÐMëCš#`„”æ7؆g$B`ƿܘ1?HLµï”ˆªWß]É礓’HÑûd‹¨;n$#¤d¢iu)ŽÀºu% Ãt%¡±c’(ÔÕ%ùÞ¡î´Ó•èÚ!MñaX÷Ò#¤4½±6,C ðÇIÊ)Xó[uLÀ¡eËÃÜ)§"{TGÐ×Û»!PT!ÒÖŽ!PÄL˜0[¢m¥dT¯Þ¾’ ®ž¬ d E|¬¹¼#`„”w¬¬¤!òÌ™³BI"ÂjÓæ(Ùb渔¿yÖAg„d?C „#ð×_›eMhŠ{é¥Ï%UõrwÖYGJΛúºW¨„ͺŸa!eØ ·á¦ ®ï^}õ wðÁU$‘]#I}ˆyÇ¥Ï-θ‘!eÜ-·—t¾ürŽ{öÙ1Ž5¢ .hàÚ¶m(év/éòþf²³ß€!P`ã*^rýûu¿ÿ¾Á]yå î¼óê¹rå¶/ Ý·>yBÀ4¤<Ád… âA—íW^™èúõûDÃ÷tèp’DP¨]<±V BFÀ©¶ê ‚ ðÛo¸çžëžþ3×±ãIîÐCsÏFZ¶ìC U°}©r'¬†€ °jÕz]ÂY«ï¾{ƒjFŽ! !eÂ]¶1¦<«W¯wO<1ʽöÚîôÓ—ð>7¹ªUwIù~[ d"`„”L4­.C Ÿ[®_¿1jž;ãŒ#Ü'ŸÜ*)¬+æ³+n¤FHéqm% œXzê©Ñ®Y³:¢ÝìªU3¨„ÝFën’0BJ2 V!›6mqŽw>ú‘kÐ`?qå¾ÞÕ¬Y)§K’znÕªUn×]wMjV™!Ž;ºÇ{,Þ©„ÇŒBc' ä"0xð$×·ï éSE\¹¯vuêTIny¨ BÚwß}%ÄÐÏy(mE ‚!ðÁ¸Gy$ß!å2»ÀÈDT¸ãŽ·\™2¥Ý3ÏüK“ßå¯+mdFH™qŸm”Å€ÀìÙË]ÏžÃÝŒ‹\­Å{î°bè…5i”ŒJν²ž–V®\ç|p¤¬}ã:vl&á~þåJ—.UBzoÝ4Š#¤âÃÞZN3H1`ÀX÷ä“£4Ѹq]5'QIæ‡~è6oÞ¬]ßyçÅ£ÛvÛm“:”Ÿ~úÉ­]»VÒ¨©wîܹnÑ¢EîØcÕc¿þú«`¸³+U*gBîo¨¬nݺâ¹X-|-”÷É“'»Ê•+»½öÚ+ßõO˜0Á}óÍ7°œ«_¿¾;äCr­cÅŠîwÞÑöN8á½6ÞEàøÛo¿ItCãNÙcÉý…¥ì0­c†@á"0zô ׸ñ}îë¯çÊ„qƒ»ûî³J,T›6m$JÄ»îóÏ?—/©#Ä‚ ’ âŒ3\«V­Ü–-["õvíÚUÒi¼ªNG}´»ð ]ëÖ­]·nÝ"eâ} ¿Ã† s£G޼ ¶ÂH¨}ûöZõĉÝ/¿ü’¯fþúë/Å·C‡nÞ¼yò›ùZ¿ßtÓM9Öóì³Ïº3ÏØ‹Vãï¸ãß¹sg/e:–«®ºÊ‹K½žÿôÓOµ5ò7Þx£ßsÏ==‰—£ïׯŸ­Ð ‡®jû»ì²‹?~¼–7îSíÚµ½––ãúx rh…^ÑoܸÑ_~ùåÚöI'äEóôO=õ”ü&i;U«Võ/¼ð‚^oœÜgî¯ßgŸ}ü½÷Þë©G´>/nÛzݨQ£ô~Sxä&Bˆþ”SNÉ­Ø?Λ†”Ò Ö¹TE€­}û¾ïZ´xX÷ÓÅp©ÚÝõ ×Ý¡C‡º^½z©¦tòÉ'«¹hÚ´iúT–p×]wiݘ߾úê+Ñ ïGŽž’,ð2'Äâ>ûì3ǹþýû;44!wýõ×˺ZiÉçt{ýõ×µ! —TUÍWhDÔ… >\c~"·ù¬hçt~×BòGÌ]qÅ‘—ÌvîÒK/u:uÒý0hLgœq†{üñÇÕ<öÝwß¹eË–¹·ß~;nÿ¨—2BîÛo¿uË—/wô±oß¾sà-·Üâ0áJÿñÇëø…\U« cbtBÜó#š ‘LøÙ)î´ÓNâ}y„Û… *vÔ)„(ž™Ïèo¸ámͱGNHNM©Bnúôéz-å}ôQ-O;|¾ýöÛŒ‹w„Ðô¾pï¼óNwÛm·©V*¤¦cåÂÿüç?îºë®sS¦LÑ{:nÜ8­/Ùl )ÙˆZ}iÀˆSÄûm™8÷•äβ†°cZŽùÍ7ßtåË—w¢Iè„+š;à€œh5nРAæèÐü6Ûlãî¿ÿ~TkÖ¬éäIÞ­Y³F'ûêÕ«+©°FÂ5ìƒÂ,‡\rÉ%j¶ƒ$DÛÑï§]&JÑ‚$¬Òs²™x ¶qüñÇ;^¤-ôòº“<Í»_|Ñaƒ ·Ûn;%ڇܨW45%¬xý£.È“É_´%$Þ!Sˆ5DÅqˆŠ×O<¡æ4pÍÑÕ¨QÉ¢æ=Ñ2Ýü.¼c~Û~û¬üV×^{­Ûo¿ýܹçž!$L—ßÿ½šR!iDÓñ€#ëXh<úÁÓqÇ'ûÝê8È áºxã¬X±¢äغRï'ØÓ>Áì9räHÇëÁÔqAä…!FH…ªÕ™–Ì»Âuí:Ä-Y²F&œ¶ª¥å@ÿ?(ˆ€I1ZÐ&Xû󔬙5Ö =œ³–~äiœIÉ5!ÖŠXgab„¤vÜqG'f,-‹³$ÂB}Ð>8±aÃÕf˜ Y³É‹s„¯\Ù²e•ÌxGkb݆> LÄD¢þQ§ âÂQ žˆ9щ‰,rŠ:ÃÚ˜˜!õ8dHûöË/¿)Ë´/Èíb¯ÁÁäšk®Q¢CäÕ½{w÷ôÓO«cH½zõ´>ðÂÉÙÿýõ=´Ë—DãS’5Ž+´ áBH}nÞ¼¹þN=õTW«V-=^ÌdW¨Zi…Þs=4Òµlùˆ<å$ÚÂ-iOF‰n ÞlLü˜ÓæÌ™£“UlY&/^,¼cšÂ\%kKªAPL”²V¹¬mÛ¶jÂÜ„6…„y+¢IÇ ÌSH0oéùÃý‚þûßÿºÅ‹«© Eèõ"hYï½÷^ŽýC«ƒ(©"a²Ö/òGÖK´NÊa–D£Jäy‡6ƒL•Lø˜9?üp5Á…:£ßÑöÐV0BÖä`jÃHÛD•Hrº‰®?È­¸E‹ú€@Ÿ E¤bCÀH€À¸q?ùãŽëíÛ·Þ/^¼:A©’s˜ì¼85à\@ÙX‘ÉVøeòôbBR§!/¤áeíC‹ãü k"^´/ë"^&N/k1úY´/GÄ‘ $Œ‘Ó–0`@¤¹óÏ?ŸOsŽ—‘“‘.¾SP<ô¼„§Ñkè/å£_b¾Ò…~15y™Ä½¡— Û‹»µ§ÿôç œ+õO&|/kU~ï½÷öâÕæW®\éqÈÀƒúqÔóŸü6{!:-'ZJĉgÑ~´²æäûô食‡ âqbà}ÎsM›¦GÚpbØ5kÖl«bÙÉD¥ õâE§æ"Ì;eÊ”ÉvËYc`SP´Ìš5KØ{SÜ"äò@³±ýcl8%Ȥ"]FCB‹7&1LÁä¹ Î®§=L‚ÁܧØ?ѦÆ`J â'œ‹}gìùxßÑNÑúÐÖpÐ`-1‘„Xv¼çGl )?hYÙŒ@`èЯÅÛh˜nnýôÓ.²ù0k¡9#Ÿ‡A²˜ôM¼‰&ذ®‘‡f ½H¼¨çñú‡Y,šŒèDObËÅ+ŽQ/N"ù•DmÄO¢ºã3QÙp<Útš…òy7B*jvMZ"°pá*×¹óòô·N¢q_%ÞR…»Ë?-ALÒ ð8#ŠìuÊæ97ḟ‹49nÍ8V¦°~‚F€UBöX©·\l›hƒô ¼÷ðä=/‚CÄï¿ÿYŸÊË5éZÆœÒõÎÚ¸òŒ€˜Áeñ{œ,L?è6Ü_¼œn42Ê3z…S²‘UB1 ˆ4À¢¾lu½{÷Ö},’-¸;C:Apy‚©Œ=M±Â^$Ù€+Ž/9ÙxªÞ…„> N ±åÃw<ãpDÀŒ ùš8g„d¿‚ŒF€ˆÜgžù¸¸OÖ?:œ$žKÛd4&©2x\Î%2C¤;ì‹ nèh$ÁÛî…^pìAÂC0Gûoþý難{‘ Ü¡ÿõ¯©g D€×q!6ð²_‰ëÏ9çuÃfS)ZÞo¸¥#¸­H@‡°‘¢„ Ù(üÊ+¯¨;<ûzØKÅFV\¶¹†ºY“b“é¤I“$üéÚZÂfTLrô‹½L›R!BÆÎfà´&¯NvØHkdAÙKTñ.êæÿûßÏÒz¬ÑƒË«—]ô5Åñ/4qgö²ŸICáÐÂÉW/“ºz’áõ…'v²Hï…TÔ Œ²xŠ ùh#<Ìĵ\½ôdÿ‘–}ë­·´>¼Ê$z†ÊÁOLm^ˆ;„>š:uª—½Wê…†7šðƒ¢RO=YGSï:<ÛÄ%œf#"„çeIû.û€4¬^ˆxõáA‡ç|âü¡q„ã²Ó~ŠˆG„îSžzòIðUõz¼øâ‹=!ŠR] êegkHú b2 Y³–ÉÎõA²0_FvŸß$O£ïîÏ$JÂX%~œjI„³‹€¢ll ‚·5цd²ÎfnC+Â,Æb< Z”˜îçA3aa>:âgÙXÊáxˆtÀ_^x—á‡wõâÔÀW4›x‘è+žxÔ‡ÄF{@S"ŠCtd‰>úHמØÓ„ ²¿¡M4¤èÈ z"Íþ˜É.Ín¨ ‡M‹›%öØ|™ÀÖfƒCž*eãà'b¢{Lb¨5ÿµFFÙJ½/LÜLÌ„:묳þÑA&u6¬–sq Á¼‡7[¬'˜ÜYó‰çÁºPˆæ@]˜Ðh 7öàa" @LI´°OÄà™\´s‹ö½fÅ8 ;$x3†6£ÛJ§ÏFHét7m,ŠÀ!“$8䣮mÛþDæÌY¡kE¤‰@+jÛ¶aäœ}H]ÐNXï!6ÚR¬àè ›h5VŽìÊKšŒœ"N Ùý€u%¢!P”ˆ‰„ÈbbÔÈ”ÁcŽ˜o¬!½xÑ(ñ͈r´ÉHm‘S»\Ÿnb&»t»£>âÍuï>T&±-næÌ¥òÔ.Ã*ÃGá…@DÄ~Cûùᇲ §ö<¡¹ðNÒØÍ¸Ù./ÔKž%"c£<îÝÄÞ#|á„p˜ LNDàØÐŸèú8!âîM¢AL{Ä¥C³»ï¾û´(šÁ]qÇDG8#„¶ð$”È ú“b“&M4ž¤FÿâíçŠ×­ þX¤†4¸‰6„, ¡Oì+q–‰Ù†õg';é·[eqþ—«QãoÞ¬+2ïo2"5¤"jĆc²5ÍåÔ×D'0ã^u˜Þ0•å&xþÑÙ;læL|ñ¢=„µ§`Ž õ³þ„VŒB™T·H ©~‡¬…Ž@ïÞcU„ŒhðÏ?7‰ eƒ<¹fEl.ôNXÅ‚ë8ùH#G4)2¢>ò*8E*öšxÑ ¹èvÃ5…!ÔŸÊï¹Ó~*÷Þúfü‰g‹)äs‰Ÿög6LJ¼bÅZÍ_tß}çd;—î_7Ú"ëgsæ,×Ï?þ¸HöáTL÷¡§Ôø¢£=¤TÇR°3FH)xS¬KùC`Íš ’%ô¿ÿ £P 6ü—^ú\Ê4–ÔY9{¹¢xg-«V­¬5Énoõêõ²Ó¹ÎÏ?gß!¢²eK‹§Y%IûPIßÏ<óH1Õâç’Ý «/¢=çr(f§#$û”x:txÙ­[·12}+T(#ycþJYè>\^GŠënÑší&Mš«S¦ü"ÙJ{Èü]#}ÌÏÆFD‰yóV(Ñð͇u3H'ÏÉ'"´»~¯X±ì?ša ÉÄHUŒRõÎX¿ò„À AÅ=÷GMTV¾üöª4kVG<¤êÊ&Ã$vÖÆÄÒs ¯Aì+ž^ ;„!E‘þ8´Þñ¤úøãé’Ìë bñþ ýïlØ ‰Á8FZèèpø¡ÜÖ¼a› œuëÖÕ{ê"9Ùþûï¯!Z“Â=‰Ž®ÊžÖå»ï¾Ó šDR&y)ò"’3GÇW;áñv;á„õõÿ¼mêŠ1M™²À-Y²:h3/}µ2†@&"o“ÝO?ý¤Aÿ ¥qãÆ¹Î;kèwœ!’)„›ÇS, õ=$ "9PÈIT^Ê&’çž{ÎñŠHµ0ÒG·>ãi5fÌ’òñÀë*€_«Áát±¾"¿_¿~¥˜I¾K—.ÿÀjk;ÈÀ$@"þ8R© o½õVu 8p ³$:2¿%\’ÉW_}¥yaˆˆ 6L9í­„úöí«UâÉCLQ ù–4ØOîycqo-¹qâ›óŠª?ÖŽ!êä›ñî¹çñ,êå$³¡C›!DûèÑ£5pHˆEY²†]2jhõx醙(ÈAOÎRõt„\¤ &(!ò™ÄZ´ýÈ#8Éúèn¹å–q1¡’æ!”;“Q<‰NLªcR¥—œ*<#ô­ âcBͯ°)òæ›_—:n2ú¯äl™"‘þÒj­3ä·d”g|íÛ·×tΤUSdèСî’K.Q²`âGØ@Ôc’}ûí·š†¨Æ\?sæÌH®#YڻᆱǸü6‚Œ3F=‰ãÅïáÙgŸUÏN4´pÿ¸¯’aÓòâ¤OŸ>®C‡âZ}§¦¢Æ­½Y³f’ãèi­š”‡zHóæÜqÇ‚÷ú[!Ùí E™ßÈŽdU‹ Ø7ñä“Oª§ä7ިљCŸíÝ0 ÄÀ„ÅäÁ$A‘É‘‰ï¹DР˜àÉUϤExuþé!òÎChOÆ„a'iOíh4Gq„Ã\&µ×_]ô—)SFmö§žzª^K?$í°~fáè‘cŽ9&8QDýa¢"\<‚ÆÇxh—(»h_LXdh”TÅútÍÓ|lØû¨ê"—.Ýàî¾{¸d˜ì.áíûI¸/Õl³víFÙ+“µ'%R8E>,]ºTÇŽÆHX|\ʼnpÌç»ï¾[‰bÀ€¤ôO GŽ©÷Š<.äka¢‡p pLo?ü°ÞcHë™gžQ“ 9]ÐlÁœ¸†lšÜ?̰’>Ú¡ñ;Bø­¬’÷•kyâ?Z0Ù­ŠHŽ~w_|ñ…jP$j#EÀ’%Kt ˜k¹Ÿ<ÔÐ7Ƈ@~7nt=ö˜æ¤ázCÀ(:ò½†D×0—3XíÚµÝøñãu§<“/ž>™è‚y„¼"<½2)óDn2`‚bb`­Éƒú(Ï“6DÄS8^xz†IÌ%¹å™Ãk5¬àÄÀ“w0Á°…é óÚRµ\qÅ:‘… „sÓ¦M‹tÄ’ÑÔ©S#)|æwLƒdÞDæÍ›§ë’ÑäËÚ÷¢«!Z/ú _ä™GÑx)GѨ Ãó.´g!7òMHL¬ñ&WÖn˜TxâfÂ!& àH(n˜'j&Ì4=zôPmr´!BðÁ¹"‹&$&“îÝ»«¹ “UåÊY¡ýyÒÇÉÁTœXèFã ¯°Úïalht´Ë:ýC+€ó#G]CƾûñÇ{eѾ8c¦(©#§ýùi£°Ê¢¥®X±BQ0™r_xG½ä>sþ%æ44]ÖhpçÞsŒïh+`ˆ`ÊôÁvØaz M'ˆS¯`jeÝ.85oK´(Ú€ðHïÌw~+Á=õÔSªÑò€„ùއ~?!m4å§„©Í—vèk¬„ßBìqûn…‡@ÒcÙ-X°@=Öx¢EÛ‰÷ä/Ý0Ú OÐìMdRAXÇÄ)å&y‰e‡oԨkú>$È~kbÙ±–)AÎhhI!»fÀ‚2h)¬±AöAÐ`Ð0ÃB8ž¬wê§o{ï½w¶½=˜1/br fbÚ¤ÿô5ºÇtW±bÅ›|ñüäÅ\´@Œ³f-“5µ_ܤIsdmtŽ8Q,Ö‡“x)!¢¯µÏ†@&#P 5¤œã‰4H<2â\¼tìàö›J‚fÖL’ѯ2e¶Í-Ë‹,õf<„I­†W¬Pí)VÐŒÂZNì¹d|Ï©~4›ÐïÐV¼¾s.¶\(Ÿß÷,ò™/ä3W<û~ÖœEÛo¿h“8aîÄù$+GS~ë¶ò†@&!ðÏY&“FocM+p!G3/J™<ù@qÞè«Þ•ëÖýYk‹5ËVªT1bî,ÊþY[†@IB 5lc% 1ëkÊ"€ yQKÍš 4uZP¬ãGt_vݵ‚¬~§‰úÖ¯ÏÝA&úZûld ¦!eʶq +®“5¤n²û;wçoËV j¦‹m¬Zµ]e¿Ó7²NºBöέPïËš5+Éúän®FÝõEêq>ï¼sùØËí»!dsj°Œ±[wÏq{{¨¶®¦­¿:S2Æ–*µƒxÞ%.Ü«Äñâgyý"Ÿ³Ü·ÅÜkˆÎ‹†éÜ}÷0!¥?#ÄT¶li×­[+‰V’Q„Z—-ûMˆ‰-Ë•  ©@V¥Jm«DAU¯¾›fÍ"­ÝdÝ+ožsïyâDíÀÅÞÄÈ ¾p J¦d#¤dVluE…1ž¤¹ˆ6mÚ"UN=O<ñ`ÙL]K¾­ÆÁfhÂFõîý®ìËÚ¤ ýú]*zÊ$«W¯Wr‚¬HyžETׯ²Ùwc”FUéÿ„…fUIÂfí””uªnݺi¤ÞM xàYKdÞ“)FHÉDÓê*ÐLN;íÙ˜½0²Ç o» Êh´Œ=÷ÜI6^$û’êKH Ü]ø“5/Ópq¿[b>–ÛêªñÚƒ æÍãõ«d¡]ѬV®\›ÍˆV•¥eeiZxúåEŒò‚Rf—1BÊìûo£ÏåË— ²÷ÊFÛ qK2o‘T &tW­"n¡~}nUaE›•X€kd_ØNJPaÍ*ëXlIb„°÷D!ýý+LÔ²7J¸U?ÿ|;‰èÑ_µ¢Ø.³ŽÓ¾}ã´%#Æ ©pÀžúŠ?fÄùóWêzU0Ž7S¾/—€Â+e{…ˆ)pѢͮNØì»!Pø!>ÆÖB!ÀzÑÕW7‘PMŸJ¼ì®Õ»ï^Argµ(¢ž¤^38J`¾ãÕ´iö¨õ˜<-Z1ýÍ›÷M® ªJtJB%k£qtã„§"WYÿÇ%ä\A2G“f†ˆ!”õeƒ8šî-¨‡myÇF'œZ¥•—: R†¨)Å‘!» }µ}HAÍ®IY:wn!žŽUÔÁ!tÍaÆ¿$G×Oá½G!Àz[Õª»ˆÉ³–Äl(VîÏ©¤ƒ!“:Þ¹-[¶Ôø’QÕ&åc²2G““-$r #x29¸¶FÈ8W!iäO<¡évH¹Ã ÏÜDB`o­e†ì­í«ÒÖ"h×§L®/¾Ø^âÓeÅÖãýê«›Êdt©D“쮿~$–"¥R:CŽ+ë’¹—ÆdÛE˜hÉ­•ꙣÄhˆx&6"ñ‰ŸhDý'Ù(e/¿üòaª† ½äÒBcB"x0Ÿ!-Òè ô%ètxñ‘Äž¤!>é_&Mš¤×'ê_¢l×lE`Í‹è÷Dà'/BðaúÎyÈyíµ×tLŒ{öüóÏëñbù#ƒ51Òñãgù½öºÁ׫w—o7ŸDHðwÝ5Ì×­Ûÿýö7i7æd H¢æ{!š«“ ÕKÔt/š’—üf^"µûsÏ=W¯‘‰Ð8ÐKpe/&2/Ù£½Lº^âUú~ýúyÉÜë%¡—hüzNbXêu¢eùž={zq'öÔAY¤N:^¢ÍëgÑj¼Dy×ÏüØ‹N?K/ :õ³d1ö’~F?ß~ûí^¢½{Æ$A’½d$ˆ¼d—À¸^´$/¦;/“·—t(^Ìh^4íCì8dòö’ÍK6a/¤á%н¶…ÞËÄï…€¼D£×ñɤþz/ää˜ ¡E^b~ô’·ËKLH/ùż˜&½d,ð¢Õx‰é…ØöOòÒ)bŽÔ>Iê/ia¼$õÍÞK¢T/‘÷½ha:>!M/fU/ic´ 1…z‰¶ï…¤¼¤`QÜéC¸:°ÀHi'8[ðæ!Ëc€5ZØsÌ~ò¤Û]RÒÿGÃfýÌË•+­ùª¼RÒÓä.»l€®v_Òµ~Ò»9šÔ$hÏ>û¬•ˆëDWO”9šµ¦9šd›ìg ™£‰(9š CæhêÄTRÑ*ŠL´-¤§ZåÉ’y’΄5(„õ"® /R™ ÇW­óãŽ;î¨Y ˆbo$¤”IÞÕ¯__Ö$oÑëChGŸ|ò‰¬Óí«Y¯9Nà‚NW¯^]5´^Œœnh—;vÔD gŸ}¶n8EÛçúDýã<Ù®Á2d»&[è®Ã=¡/}ô‘¦€aÓ3m€Ñûï¿Ï)תU+Í6hvÅ%¹‹‹«gÖ®!°ðÏŠ;s<9창݇Þ,æ‹Ñ’¿éIÂx²FQà“¼#@º²?G‹<§læh‰õA0›!LÀå ¢E«Òhõ!ã1yÞBlòl‘ñ¼Âo†:D“Ó:8~ã7j2Dü%_Xt¾7-$B¢Ñòåÿ¹‰;^ÿB„„UŸˆö`ù’œô•W^q×]wfmÆ„‡ÌŸ??›£[,†?¦!èÖdñ#€ÖÔ©S3±Ùß ™o§êÆÚ3ÇJxR9st"hqÈ ý ÉIü(f:Gέx°!'<ë˜Èy‡ê@3"I(ZÊøñãã6‡“BÈ\Í;ßÉ5F²I4)´21¡L¼þB åÂ;ïÅdéúöíëÞ|óM]Ï çÐŒÐàpr@‹b­ ÒM%1BJ¥»a})rpƒ<ø:1Ã4’Éèiªë2^ä* Í ¶«¸1§jæèؾ†1Ð_>“§MÖ‡tr‰7L]d &iç< {¿ÊhµW]u•:@F Ú ÚŸ1÷…ÌÕ¼c*“u+'ëAªUõéÓÇáЀ#®ôd¾Ž×¿Ð®6òÿvh ‚Á1míâ‹/v7ß|s(¢.ïMš4QS17©;ž«~tŸ#Ñ TD@[3©ÀÊ•ë$…ú0yº%žcçÈ?wVúõÔïyr{˜ŒH %1sôÂ… 8)dËrh¬1᭛ݚu5<Ø‚ nkî ZÄÌiñú¯~Lq3fÌPM-–¸(O&o4³xd¯¾xÇ +RƒR<´íXF#0aÂl1ß¼!OÌ{ˆ[óÙ2ÁìœQx$ƒ2 ° la’™ì2ðÇdCΆ kŠíýV ÄZ]èï—ý£ä‰rKÎÙÙƒÀòåËÅL;Ø=üðúD$ƒ¼Ê¨Q£{‘L #¤ÂÁÕj-á§¼ñ¾ürŽ˜ïî—¨3Kø¨¬ûäzjР#‹ûDo`CèÔ©S‚ÃÆU6”"82`F3)Ìí»ppµZÓjÕv׿+Äûiº,:¿æŽ<²º¬3)‘³ ?Q^š@˜2ÃÀ#®]»vJBDF"›quñÏ4Âû°'jÊ”)N6Ûjô’]r-{ˆ8ŽçŽ ìw"ôθ¿ã-‡3ëPxÙáˆ,´eï9#`RÎøØYC@hÞ¼Žl¾¼MŠ÷ÜJ÷»ÇûXL7[gÌà-:pI‡Hb]ñ<›6mšºz³ R!üd²óÎ;»+®¸Â]z饺¿ŠrÒ£>*%•u/›W%ª„.Û±Áá~ IѦIÞ0BÊ;VV2à HëÍ7ŸªÑ¦LùEv½÷–=#Ó2•’3|¼ÖpiŽ5¹ílDÂæ¸3Î8C]¤Ùÿþ ¢G°a5”¡œ„Ò( ”'„ EA^DA`3mqF=Е°?FH%ì†Yw‹Ìx´“€¢ˆ{ø{bÖyÚÍœ¹´ø;f=È<Ãpƒ&üO´­œ0;Qœp€ˆÌwMH[/â×„è ±×Û÷Ä!%ÆÆÎ9"@þ¥Ñ£;ËÆÅºb¦y\Ò/ •Ð1ñ3ÖæX‘,áƒö‚¹M³j›ì×!ëEшÔM!BðœsÎ9z3]´,B 6L¡yóæá´½oFH[ž]j½]»ãdòêª)Ò;®·¬Œ77ñýi ¡¬ÿÔ¤xرï 3‚YŽÀ©D\hÑ¢…šàH³Ñ¿5Ó…auêÔÉIdlØÀúëLñ¤8£ÄëOª³±©~‡¬% ~X¬á‡H Þ½{+wÊ)‡”¨þÓÙLØ‹†„ƒk@˜Ö¢}=›u#\£#ày‡¹/:P*×Ìž=[I‰Xx™$¶16“î¶µÄ"P»ö^nР«]Ïžm\Ÿ>#\›6O¸ï¾+¾pþ%ÈBî8kE¤3dÝnÛÑdÄ9œbɈãÄ¿Ë42bÜ…%f²+,d­ÞŒF I“ݨQ·H¶ÐúbÒ{Îýûß%ÂòªŒÆ$ÕφY“šFHŇ½µœæ°~pÁõÅÔMLC•Å|÷ ëÕë]s|HÑû޶íe—¢ÝLën!¥õíµÁ¥dª% à§Ÿv‘Í—¸cíåyäC‰`1ÑRáþXRsjH{a=ÉæÏÿÕÝÿn̘$mu3 AÓHÌS'ŠñÞHæfb䄎‰æt]NçŒrBÇÎ…ˆ›iq|øöÛù'ïdwá… dáÜŒ…¹Uâ!¥ø ²î¥?„!ºï¾î矗‹ÛqKÙsx¶L£é€ÐÈBÀÉ~ †@Š ðÅ?«Æ´téo®S§f%àhÓ˜RäÞX7Š#¤¢ÁÙZ1òŒÀĉ³Åéá#ј–¹š‰§^‰ P*Ï×[AC ¤"`„TRïœõ;í`m o¼©S¸k¯=ѵmÛÐá±gb¤+FHézgm\iƒÀôé‹”˜0é]sMwÉ%ÇŠwSÙ´Ÿ Ä!$ìÝHqfÍZ&=?ÖìµD€¸êª\•*§KHñî[÷ \0BÊ"+`¤‹¯‘|LcÝ«¯N”ì§K¤éÆî°ÃöN­NZo  `„TÐìC X»v£’Rÿþc%ÂŽJL­ZîH‰ab”DŒJâ]³>QÁtäÈé¢5}*é–ëÛ‹/nèªV5s^Lö± `„Tn’uÑÈ+¬3½ôÒçnðàIj¨D³f›Ö”W­\±"`„T¬ð[ã†@á °qã&7|ø·nàÀñšöéÜs–dr»NƒV«!Œ’¢Ua¤2?þ¸Dך† ùZÊí!ÄTOÂá*T(“Êݶ¾e FHxÓmÈ™‰ÀæÍ[ÜèÑ3Üo|%©0~t˜òp?þøZ¢(3)7j#¤”»%Ö!C ðX³fƒ{ûíoÜ!“Üœ9+Üi§ªZSÆ5-°káÃo-$@À)0vØÈ.\å† ûVÖœ&»%KÖ¸Ö­wgu”;âˆ}2gŠ `„”"7ºa¤hKÆ}£ä´zõzעšòªëМ,WS*Ü¡ôîƒRzß_!P`ÈÏ4bÄ÷þûSÝܹ+\óæuÔ´wòÉu \§]hä„€RNèØ9C !ðã?ºÚµkJK•ªàÊ–Ý__«V½ç¶lÙP(íX¥™…@:uÜ´iÓ"ƒÞ.òÉ>†@‰FBjÕª•˜Û†—èqXç3 ¸cŽ9&Û`·Íö;†€!`Å„€R1o͆€!`dGÀ);öÍ0 C ˜°5¤bÞš5Šß~ûÍ}þù瑦÷ÝwßBq„øé§ŸÜÚµkÝ‘GikîܹnÑ¢EîØcÕcË–-s{ì±Gä|¼ýõ—ûøãÝ©§žZà »S¦Lq•*Ur{íµW¼&ŠíØüùóÝï¿ÿîXØÏ|øá‡nóæÍÙ.©[·®«V­Z¶cÉþRÐþ槦!å-+k”p Š .¸@Iiܸq®sçÎîÄO¯¹-IÙŒ3ÔÁ"ºÞ®]»JL½WÅü}W«V-wõÕW»“O>YB½‘°mô´ÓNs›6mJX&·÷ß¿„L[±¤œŸÉMµ­ä¬zÉɤïdRÖ±ÙK‚Åî±Çs½{÷Ö>0^pÆdyÔQGéýã¹ùæ›%Cð‘÷TÈKÛç¾Rd¶þäg/¾ø¢Dƒ¯à~øá'¤¤XlMC¿sŸè’QIDAT{·5¤Ü²ó†@š!°nÝ:÷ÜsÏé¨ €ñãÇë$yï½÷ê$+OëNžÆuB¢Ð.»ìâ|ðA TJÒWÔÔ‰vÍš5œõmW½zu%ƒC9Ä1‰Ch˜åK.¹DÍvòį$ÁwÄÄ$ÚˆD€˜«æ'ŽCLœ =DžÌõ=üÁÜxøá‡ëÚmÓnƒ ´>&zâÀÔ¤ÀºGH+^?9Ïä)uÑœhZýLtí‹F¦Õc‚„\ 1ÇóbÅŠº¦A>úè#÷)§œ¢‡DST¢å ý RR†œ›è_t܈°C‡Áý<÷ÐC齡O¡?ù÷¹W¯^úPÀÆÑGíž~úií_Aú«æáR@²"†@:!À?ZO¬°žÄºÒÅ_¬“s8/¦7%#¾3É2©3¹¡°VĤÇÂ<$µãŽ;:15饓æ;ï¼£ZÚ‚ÖqÒI'éÄÉÓ¼˜¸ôx^þ09#Ï®»îúKvÞùï´íhwË—/”IÔO äTo¢ëÐ ‚l·ÝvNLO᫾'Â3[!ùi¢…aÝ-¬™…6bëG[çİ,_¾|¨.òžŸqœqƪ-2DÒ”4sO<ñD¤ž‚ô7rq.Ìd— @vÚÈFŽéúô飄‚©(v‚‡æÍ›ë‹EuHeìØ±NÖ˜T3‚ ößÕ¸f²~£fALNhÈM7ݤ¦&Ú (ÇÙ¹?}út>j8LVù•O?ýT4&Mš¤ZJ´—_NýÌ©ü^‡ùÉ ÏP†rhFh—˜!Á`âĉŠ-ç ×G¿ 1ÌkhFýúõs]ºtQ&ׇ¶ò3´K¼$Ѥ»wïžÍ)¤ ýM4ŽØãFH±ˆØwC Øf›mºOóÔÍ ³Ú &+® röÙgëz!_8‡‰ Óf&ÈÏ9Ö¥‚@H¬­sÇ'L˜ “Z/q†ÐâxÛ1ù!kEy‘è11¡pÀúTß­[·Hß)“S?µ“Ÿë(KÛâ(àÄ©A±ŒÅ-rÆs0æ·&Mšèúkgœ‹çOýïhtÛo¿}äÅúسŽÄûé§Ÿîn¸á†lýÉëø© s!Z.kO\$¿ý ×ååÝ‚«æ%+c”0£±0Î{AæÖ@V­Zå0…‰0ÔÉþ¡?þøÃí³Oö|I³fÍRÇ…h­'\Sï¬yÐ/&â2eÊDÖÀbÛ.h?óz  }ˆ‡'{ˆèg0Ç…þ±^ƹxdÊä=º?\Ÿ×q°ÖˆyŽuÆØßõlmC,;ÞƒØR@ÂÞ C@7¢ÍÃ1ÞM˜hH© ¬yå$íg^¯Ã‰ ëuAž¬Å’erëw¨'¿ïÑýáÚ¼Žƒ‡4¶DRý5BJ„¶7 …@p¦È­Óh-¬5a>Ã;Nö4©F˜Ûuœ5j”zÄa.3I>¶†”|L­FCÀ(05Æó.‹î awXa½ '\™qiž:ujt±lŸ1ƒ>õÔSzL6ôª¹-[û’4LCJ”V‘!`¤2x ¶k×NI¨uëÖ‘®²Ù—¦¸¥ãŒÀ&Sâß±éüóÏw·Ýv›zâ%ÈqÖdpè`¯”D¾P'6º²Y‡‰|¡ž†8€"‹4frDÀ4¤᱓†€!.àí‘à®-x¸‘µ7gB ¢N@&8u °¸¼SBzôÑGÕ;PB)é^+\­EoˆnË>猀iH9ãcg C M`³)Þbx¸±`Dbï©û4ßqÛÆåaßQ (K$„èu#‘‚ò„ý!:ÂE]¤{­b£7¤Z”q\Šþ1 )EoŒuË0’‹±ôpÅ&6\´ààbèåé!\ƒé‡ˆ]!^dÊÆFW×Û{bŒccg C @ËA{ÁÜ&‘¯ud„>",ëEÈ÷ßïØgE$Â(IÄk=Ž™.Zi3ˆV°sžÉÖ#`„´õZ †€!PB \û¨ˆQ£F õ°#¢C0Óa–#"9{uZ´h¡&¸#Ž8B£`¦ Ò©S'GÐX6³~Ä:S<‰·¡4^9;–…€­!Ù/Á02LrD)GCÂÁ5 LkAØʺ.áa0kIDÀÜÇz²çž{ªƒa‚ ¥°ù§‡ xà™ä¿ïDþ®³Ò†€!`”X ¦èõ¢èà¶Í+Zío"MƒIò0“]ò°´š C #À†YRe˜FHŇ½µl)„¦»DZS u3­»b„”Ö·×g†@ÉAÀÖJν²ž9"@#LNæÙ•#Lv2… Óp´X>¤h4ì³!`†@±!`&»bƒÞ6 CÀˆFÀ) ûl†€!Pl!ôÖ°!`†@4ÿ¬¥ñ‘Û(ÚIEND®B`‚mysql++-3.3.0/doc/html/refman/ssx/jquery.js000644 000765 000024 00000526541 14042362131 021277 0ustar00tangentstaff000000 000000 /*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
    ",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
    "),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
    ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
    "),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
    "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element },_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler * Licensed under MIT * @author Ariel Flesler * @version 2.1.2 */ ;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 * http://www.smartmenus.org/ * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$});mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1Include.html000644 000765 000024 00000036362 14042362131 024561 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: ParseV2::Include Class Reference
    MySQL++ SSQLS v2 Translator  3.3.0

    'include' directive line More...

    #include <parsev2.h>

    Inheritance diagram for ParseV2::Include:
    Collaboration diagram for ParseV2::Include:

    Public Member Functions

     Include (const char *file_name)
     Given the name of another SSQLS v2 file, load it up and parse it. Its contents will appear transparently as part of the overall parse result. More...
     
     ~Include ()
     Destructor.
     
    LineListIt begin () const
     Get an iterator pointing to the start of the.
     
    LineListIt end () const
     Get an iterator pointing to just past the end of the sub-parse's LineList.
     
    - Public Member Functions inherited from ParseV2::Line
    virtual ~Line ()
     Virtual dtor, since this is a base class.
     

    Static Public Member Functions

    static Includeparse (const StringList &tl, bool subdirective, const File &file)
     Attempt to create an Include object from information in the passed StringList. More...
     
    - Static Public Member Functions inherited from ParseV2::Line
    static Lineparse (const StringList &tl, bool subdirective, const File &file)
     Virtual ctor, creating one of our subclass objects based on what we're passed. More...
     

    Additional Inherited Members

    - Protected Member Functions inherited from ParseV2::Line
     Line ()
     Protected ctor, to prevent instantiation.
     

    Detailed Description

    'include' directive line

    Constructor & Destructor Documentation

    ◆ Include()

    ParseV2::Include::Include ( const char *  file_name)
    inline

    Given the name of another SSQLS v2 file, load it up and parse it. Its contents will appear transparently as part of the overall parse result.

    Parameters
    file_namename of other SSQLS v2 file to parse

    Member Function Documentation

    ◆ parse()

    ParseV2::Include * ParseV2::Include::parse ( const StringList tl,
    bool  subdirective,
    const File file 
    )
    static

    Attempt to create an Include object from information in the passed StringList.

    A kind of pre-processor for the Include ctor, creating one of those objects only if the given StringList makes sense, using the values we find in that StringList as parameters to the ctor.

    References ParseV2::File::parse_error().

    Referenced by ParseV2::Line::parse().


    The documentation for this class was generated from the following files:
    mysql++-3.3.0/doc/html/refman/ssx/classParseV2_1_1ImplementationExtensionOption-members.html000644 000765 000024 00000014111 14042362131 032665 0ustar00tangentstaff000000 000000 MySQL++ Reference Manual MySQL++ SSQLS v2 Translator: Member List
    MySQL++ SSQLS v2 Translator  3.3.0
    ParseV2::ImplementationExtensionOption Member List

    This is the complete list of members for ParseV2::ImplementationExtensionOption, including all inherited members.

    extension() constParseV2::ImplementationExtensionOptioninline
    ImplementationExtensionOption(const std::string &value)ParseV2::ImplementationExtensionOptioninline
    Line()ParseV2::Lineinlineprotected
    Option(const std::string &value)ParseV2::Optioninlineprotected
    parse(const StringList &tl, bool subdirective, const File &file)ParseV2::Optionstatic
    parse_bool(const std::string &value)ParseV2::Optionprotectedstatic
    print(std::ostream &os) constParseV2::ImplementationExtensionOptionvirtual
    value() constParseV2::Optioninlineprotected
    ~Line()ParseV2::Lineinlinevirtual
    ~Option()ParseV2::Optioninlinevirtual
    mysql++-3.3.0/doc/html/userman/tangentsoft.css000644 000765 000024 00000002400 14042362131 022034 0ustar00tangentstaff000000 000000 BODY { background-color: #FFFFEE; font-family: "Georgia", "Luxi Serif", "New Century Schoolbook", "Times New Roman", "Times", serif; margin-left: 30pt; margin-right: 30pt; } a:link { color: #491E00; } a:visited { color: #7D2E01; } a:hover { color: #CC5500; text-decoration: none; } a:active { color: #DA7417; } DIV.footnote > P { font-size: 85%; } EM.phrase { /* Georgia's great, but oldstyle numerals make math hard to read */ font-family: "Times", "Times New Roman", serif; } H1, H2, H3, H4, H5, H6, DIV.navheader > TABLE > TBODY > TR > TH { color: #501000; font-family: "Verdana", "Luxi Sans", "Helvetica Narrow", "Arial", "Univers", sans-serif; font-weight: bold; } H1 { font-size: 20pt; } H2 { font-size: 18pt; } H3 { font-size: 14pt; } H4 { font-size: 10pt; } H4.subtitle { margin-left: 20pt; } H5 { font-size: 10pt; margin-left: 20pt; } P { line-height: 140%; margin-left: 20pt; } div.sect3 { margin-left: 20pt; } li { margin-left: 30pt; } li p { margin-left: 0pt; } pre.programlisting, pre.screen { border: 1px solid #882200; margin: 10pt; margin-left: 40pt; padding: 10pt; background-color: #FFFFCC; } .type { font-family: monospace; } .symbol { font-family: monospace; } mysql++-3.3.0/doc/html/userman/tutorial.html000644 000765 000024 00000334247 14042362131 021540 0ustar00tangentstaff000000 000000 3. Tutorial

    3. Tutorial

    The previous chapter introduced the major top-level mechanisms in MySQL++. Now we’ll dig down a little deeper and get into real examples. We start off with the basics that every MySQL++ program will have to deal with, then work up to more complex topics that are still widely interesting. You can stop reading the manual after this chapter and still get a lot out of MySQL++, ignoring the more advanced parts we present in later chapters.

    3.1. Running the Examples

    All of the examples are complete running programs. If you built the library from source, the examples should have been built as well. If you use RPMs instead, the example programs’ source code and a simplified Makefile are in the mysql++-devel package. They are typically installed in /usr/share/doc/mysql++-devel-*/examples, but it can vary on different Linuxes.

    Before you get started, please read through any of the README*.txt files included with the MySQL++ distribution that are relevant to your platform. We won’t repeat all of that here.

    Most of the examples require a test database, created by resetdb. You can run it like so:

    resetdb [-s server_addr] [-u user] [-p password]

    Actually, there’s a problem with that. It assumes that the MySQL++ library is already installed in a directory that the operating system’s dynamic linker can find. (MySQL++ is almost never built statically.) Unless you’re installing from RPMs, you’ve had to build the library from source, and you should run at least a few of the examples before installing the library to be sure it’s working correctly. Since your operating system’s dynamic linkage system can’t find the MySQL++ libraries without help until they’re installed, we’ve created a few helper scripts to help run the examples.

    MySQL++ comes with the exrun shell script for Unixy systems, and the exrun.bat batch file for Windows. You pass the example program and its arguments to the exrun helper, which sets up the library search path so that it will use the as-yet uninstalled version of the MySQL++ library in preference to any other on your system:

    ./exrun resetdb [-s server_addr] [-u user] [-p password]

    That’s the typical form for a Unixy system. You leave off the ./ bit on Windows. You can leave it off on a Unixy system, too, if you have . in your PATH. (Not a recommendation, just an observation.)

    All of the program arguments are optional.

    If you don’t give -s, the underlying MySQL C API (a.k.a. Connector/C) assumes the server is on the local machine. It chooses one of several different IPC options based on the platform configuration. There are many different forms you can give as server_addr with -s to override this default behavior:

    • localhost — this is the default; it doesn’t buy you anything

    • On Windows, a simple period tells the underlying MySQL C API to use named pipes, if it’s available.

    • 172.20.0.252:12345 — this would connect to IP address 172.20.0.252 on TCP port 12345.

    • my.server.name:svc_name — this would first look up TCP service name svc_name in your system’s network services database (/etc/services on Unixy systems, and something like c:\windows\system32\drivers\etc\services on modern Windows variants). If it finds an entry for the service, it then tries to connect to that port on the domain name given.

    For the TCP forms, you can mix names and numbers for the host and port/service parts in any combination. If the server name doesn’t contain a colon, it uses the default port, 3306.

    If you don’t give -u, it assumes your user name on the database server is the same as your login name on the local machine.

    If you don’t give -p, it will assume the MySQL user doesn’t have a password. (One hopes this isn’t the case...)

    When running resetdb, the user name needs to be for an account with permission to create the test database. Once the database is created, you can use any account when running the other examples that has DELETE, INSERT, SELECT and UPDATE permissions for the test database. The MySQL root user can do all this, of course, but you might want to set up a separate user, having only the permissions necessary to work with the test database:

    CREATE USER mysqlpp_test@'%' IDENTIFIED BY ’nunyabinness';
    GRANT ALL PRIVILEGES ON mysql_cpp_data.* TO mysqlpp_test@'%';

    You could then create the sample database with the following command:

    ./exrun resetdb -u mysqlpp_test -p nunyabinness

    (Again, leave off the ./ bit on Windows.)

    You may have to re-run resetdb after running some of the other examples, as they change the database.

    See README-examples.txt for more details on running the examples.

    3.2. A Simple Example

    The following example demonstrates how to open a connection, execute a simple query, and display the results. This is examples/simple1.cpp:

    #include "cmdline.h"
    #include "printdata.h"
    
    #include <mysql++.h>
    
    #include <iostream>
    #include <iomanip>
    
    using namespace std;
    
    int
    main(int argc, char *argv[])
    {
        // Get database access parameters from command line
        mysqlpp::examples::CommandLine cmdline(argc, argv);
        if (!cmdline) {
            return 1;
        }
    
        // Connect to the sample database.
        mysqlpp::Connection conn(false);
        if (conn.connect(mysqlpp::examples::db_name, cmdline.server(),
                cmdline.user(), cmdline.pass())) {
            // Retrieve a subset of the sample stock table set up by resetdb
            // and display it.
            mysqlpp::Query query = conn.query("select item from stock");
            if (mysqlpp::StoreQueryResult res = query.store()) {
                cout << "We have:" << endl;
                mysqlpp::StoreQueryResult::const_iterator it;
                for (it = res.begin(); it != res.end(); ++it) {
                    mysqlpp::Row row = *it;
                    cout << '\t' << row[0] << endl;
                }
            }
            else {
                cerr << "Failed to get item list: " << query.error() << endl;
                return 1;
            }
    
            return 0;
        }
        else {
            cerr << "DB connection failed: " << conn.error() << endl;
            return 1;
        }
    }
    

    This example simply gets the entire "item" column from the example table, and prints those values out.

    Notice that MySQL++’s StoreQueryResult derives from std::vector, and Row provides an interface that makes it a vector work-alike. This means you can access elements with subscript notation, walk through them with iterators, run STL algorithms on them, etc.

    Row provides a little more in this area than a plain old vector: you can also access fields by name using subscript notation.

    The only thing that isn’t explicit in the code above is that we delegate command line argument parsing to parse_command_line() in the excommon module. This function exists to give the examples a consistent interface, not to hide important details. You can treat it like a black box: it takes argc and argv as inputs and sends back database connection parameters.

    3.3. A More Complicated Example

    The simple1 example above was pretty trivial. Let’s get a little deeper. Here is examples/simple2.cpp:

    #include "cmdline.h"
    #include "printdata.h"
    
    #include <mysql++.h>
    
    #include <iostream>
    #include <iomanip>
    
    using namespace std;
    
    int
    main(int argc, char *argv[])
    {
        // Get database access parameters from command line
        mysqlpp::examples::CommandLine cmdline(argc, argv);
        if (!cmdline) {
            return 1;
        }
    
        // Connect to the sample database.
        mysqlpp::Connection conn(false);
        if (conn.connect(mysqlpp::examples::db_name, cmdline.server(),
                cmdline.user(), cmdline.pass())) {
            // Retrieve the sample stock table set up by resetdb
            mysqlpp::Query query = conn.query("select * from stock");
            mysqlpp::StoreQueryResult res = query.store();
    
            // Display results
            if (res) {
                // Display header
                cout.setf(ios::left);
                cout << setw(31) << "Item" <<
                        setw(10) << "Num" <<
                        setw(10) << "Weight" <<
                        setw(10) << "Price" <<
                        "Date" << endl << endl;
    
                // Get each row in result set, and print its contents
                for (size_t i = 0; i < res.num_rows(); ++i) {
                    cout << setw(30) << res[i]["item"] << ' ' <<
                            setw(9) << res[i]["num"] << ' ' <<
                            setw(9) << res[i]["weight"] << ' ' <<
                            setw(9) << res[i]["price"] << ' ' <<
                            setw(9) << res[i]["sdate"] <<
                            endl;
                }
            }
            else {
                cerr << "Failed to get stock table: " << query.error() << endl;
                return 1;
            }
    
            return 0;
        }
        else {
            cerr << "DB connection failed: " << conn.error() << endl;
            return 1;
        }
    }
    

    The main point of this example is that we’re accessing fields in the row objects by name, instead of index. This is slower, but obviously clearer. We’re also printing out the entire table, not just one column.

    3.4. Exceptions

    By default, MySQL++ uses exceptions to signal errors. We’ve been suppressing this in all the examples so far by passing false to Connection’s constructor. This kept these early examples simple at the cost of some flexibility and power in error handling. In a real program, we recommend that you leave exceptions enabled. You do this by either using the default Connection constructor, or by using the create-and-connect constructor.

    All of MySQL++’s custom exceptions derive from a common base class, Exception. That in turn derives from Standard C++’s std::exception class. Since the library can indirectly cause exceptions to come from the Standard C++ Library, it’s possible to catch all exceptions from MySQL++ by just catching std::exception. However, it’s better to have individual catch blocks for each of the concrete exception types that you expect, and add a handler for either Exception or std::exception to act as a “catch-all” for unexpected exceptions.

    When exceptions are suppressed, MySQL++ signals errors by returning either an error code or an object that tests as false, or by setting an error flag on the object. Classes that allow you to suppress exceptions derive from the OptionalExceptions interface. When an OptionalExceptions derivative creates another object that also derives from this interface, it passes on its exception flag. Since everything flows from the Connection object, disabling exceptions on it at the start of the program disables all optional exceptions. This is why passing false for the Connection constructor’s “throw exceptions” parameter suppresses all optional exceptions in the simple[1-3] examples. It keeps them, well, simple.

    This exception suppression mechanism is quite granular. It’s possible to leave exceptions enabled most of the time, but suppress them in sections of the code where they aren’t helpful. To do this, put the section of code that you want to not throw exceptions inside a block, and create a NoExceptions object at the top of that block. When created, it saves the exception flag of the OptionalExceptions derivative you pass to it, and then disables exceptions on it. When the NoExceptions object goes out of scope at the end of the block, it restores the exceptions flag to its previous state:

    mysqlpp::Connection con; // default ctor, so exceptions enabled
    
    {
      mysqlpp::NoExceptions ne(con);
      if (!con.select_db("a_db_that_might_not_exist_yet")) {
        // Our DB doesn’t exist yet, so create and select it here; no need
        // to push handling of this case way off in an exception handler.
      }
    }

    When one OptionalExceptions derivative passes its exceptions flag to another such object, it is only passing a copy; the two objects’ flags operate independently. There’s no way to globally enable or disable this flag on existing objects in a single call. If you’re using the NoExceptions feature and you’re still seeing optional exceptions thrown, you disabled exceptions on the wrong object. The exception thrower could be unrelated to the object you disabled exceptions on, it could be its parent, or it could be a child created before you disabled optional exceptions.

    MySQL++ throws some exceptions unconditionally:

    • MySQL++ checks array indices, always. For instance, if your code said “row[21]” on a row containing only 5 fields, you’d get a BadIndex exception. If you say “row["fred"]” on a row without a “fred” field, you get a BadFieldName exception. In the past, MySQL++ delegated some of its index checking to the STL containers underpinning it, so you could get std::range_error instead. As of MySQL++ v3.0.7, this should no longer happen, but there may be instances where it still does.

    • String will always throw BadConversion when you ask it to do an improper type conversion. For example, you’ll get an exception if you try to convert “1.25” to int, but not when you convert “1.00” to int. In the latter case, MySQL++ knows that it can safely throw away the fractional part.

    • If you use template queries and don’t pass enough parameters when instantiating the template, Query will throw a BadParamCount exception.

    • If you use a C++ data type in a query that MySQL++ doesn’t know to convert to SQL, MySQL++ will throw a TypeLookupFailed exception. It typically happens with Section 5, “Specialized SQL Structures”, especially when using data types other than the ones defined in lib/sql_types.h.

    It’s educational to modify the examples to force exceptions. For instance, misspell a field name, use an out-of-range index, or change a type to force a String conversion error.

    3.5. Quoting and Escaping

    SQL syntax often requires certain data to be quoted. Consider this query:

    SELECT * FROM stock WHERE item = 'Hotdog Buns' 

    Because the string “Hotdog Buns” contains a space, it must be quoted. With MySQL++, you don’t have to add these quote marks manually:

    string s = "Hotdog Buns";
    query << "SELECT * FROM stock WHERE item = " << quote_only << s; 

    That code produces the same query string as in the previous example. We used the MySQL++ quote_only manipulator, which causes single quotes to be added around the next item inserted into the stream. This works for any type of data that can be converted to MySQL++’s SQLTypeAdapter type, plus the Set template. SSQLS also uses these manipulators internally.

    Quoting is pretty simple, but SQL syntax also often requires that certain characters be “escaped”. Imagine if the string in the previous example was “Frank’s Brand Hotdog Buns” instead. The resulting query would be:

    SELECT * FROM stock WHERE item = 'Frank's Brand Hotdog Buns' 

    That’s not valid SQL syntax. The correct syntax is:

    SELECT * FROM stock WHERE item = 'Frank''s Brand Hotdog Buns' 

    As you might expect, MySQL++ provides that feature, too, through its escape manipulator. But here, we want both quoting and escaping. That brings us to the most widely useful manipulator:

    string s = "Frank’s Brand Hotdog Buns";
    query << "SELECT * FROM stock WHERE item = " << quote << s; 

    The quote manipulator both quotes strings and escapes any characters that are special in SQL.

    MySQL++ provides other manipulators as well. See the manip.h page in the reference manual.

    It’s important to realize that MySQL++’s quoting and escaping mechanism is type-aware. Manipulators have no effect unless you insert the manipulator into a Query or SQLQueryParms stream. [2] Also, values are only quoted and/or escaped if they are of a data type that may need it. For example, Date must be quoted but never needs to be escaped, and integer types need neither quoting nor escaping. Manipulators are suggestions to the library, not commands: MySQL++ will ignore these suggestions if it knows it won’t result in syntactically-incorrect SQL.

    It’s also important to realize that quoting and escaping in Query streams and template queries is never implicit.[3] You must use manipulators and template query flags as necessary to tell MySQL++ where quoting and escaping is necessary. It would be nice if MySQL++ could do quoting and escaping implicitly based on data type, but this isn’t possible in all cases.[4] Since MySQL++ can’t reliably guess when quoting and escaping is appropriate, and the programmer doesn’t need to[5], MySQL++ makes you tell it.

    3.6. C++ vs. SQL Data Types

    The C++ and SQL data type systems have several differences that can cause problems when using MySQL++, or any other SQL based system, for that matter.

    Most of the data types you can store in a SQL database are either numbers or text strings. If you’re only looking at the data going between the database server and your application, there aren’t even numbers: SQL is a textual language, so numbers and everything else gets transferred between the client and the database server in text string form.[6] Consequently, MySQL++ has a lot of special support for text strings, and can translate to several C++ numeric data types transparently.

    Some people worry that this translation via an intermediate string form will cause data loss. Obviously the text string data types are immune from problems in this regard. We’re also confident that MySQL++ translates BLOB and integer data types losslessly.

    The biggest worry is with floating-point numbers. (The FLOAT and DOUBLE SQL data types.) We did have a problem with this in older versions of MySQL++, but we believe we fixed it completely in v3.0.2. No one has since proven data loss via this path. There is still a known problem [7] with the SQL DECIMAL type, which is somewhat related to the floating-point issue, but it’s apparently rarely encountered, which is why it hasn’t been fixed yet.

    The best way to avoid problems with data translation is to always use the special MySQL++ data types defined in lib/sql_types.h corresponding to your SQL schema. These typedefs begin with sql_ and end with a lowercase version of the standard SQL type name, with spaces replaced by underscores. There are variants ending in _null that wrap these base types so they’re compatible with SQL null. For instance, the SQL type TINYINT UNSIGNED NOT NULL is represented in MySQL++ by mysqlpp::sql_tinyint_unsigned. If you drop the NOT NULL part, the corresponding C++ type is mysqlpp::sql_tinyint_unsigned_null.

    MySQL++ doesn’t force you to use these typedefs. It tries to be flexible with regard to data conversions, so you could probably use int anywhere you use mysqlpp::sql_tinyint_unsigned, for example. That said, the MySQL++ typedefs give several advantages:

    • Space efficiency: the MySQL++ types are no larger than necessary to hold the MySQL data.

    • Portability: if your program has to run on multiple different system types (even just 32- and 64-bit versions of the same operating system and processor type) using the MySQL++ typedefs insulates your code from platform changes.

    • Clarity: using C++ types named similarly to the SQL types reduces the risk of confusion when working with code in both languages at the same time.

    • Compatibility: using the MySQL++ types ensures that data conversions between SQL and C++ forms are compatible. Naïve use of plain old C++ types can result in data truncation, TypeLookupFailed exceptions, and worse.

      Type compatibility is important not just at the time you write your program, it also helps forward compatibility: we occasionally change the definitions of the MySQL++ typedefs to reduce the differences between the C++ and SQL type systems. We’ll be fixing the DECIMAL issue brought up above this way, for instance; if your program uses sql_decimal instead of the current underlying type, double, your program will pick up this improvement automatically with just a recompile.

    Most of these typedefs use standard C++ data types, but a few are aliases for a MySQL++ specific type. For instance, the SQL type DATETIME is mirrored in MySQL++ by mysqlpp::DateTime. For consistency, sql_types.h includes a typedef alias for DateTime called mysqlpp::sql_datetime.

    MySQL++ doesn’t have typedefs for the most exotic data types, like those for the geospatial types. Patches to correct this will be thoughtfully considered.

    3.7. Handling SQL Nulls

    Both C++ and SQL have things in them called NULL, but they differ in several ways. Consequently, MySQL++ has to provide special support for this, rather than just wrap native C++ facilities as it can with most data type issues.

    SQL NULL is a type modifier

    The primary distinction is one of type. In SQL, “NULL” is a type modifier, which affects whether you can legally store a null value in that column. There’s simply nothing like it in C++.

    To emulate SQL NULL, MySQL++ provides the Null template to allow the creation of distinct “nullable” versions of existing C++ types. So for example, if you have a TINYINT UNSIGNED column that can have nulls, the proper declaration for MySQL++ would be:

    mysqlpp::Null<mysqlpp::sql_tinyint_unsigned> myfield;

    As of MySQL++ 3.1, we also provide shorter aliases for such types:

    mysqlpp::sql_tinyint_unsigned_null myfield;

    These types are declared in lib/sql_types.h. You might want to scan through that to see what all is available.

    Template instantiations are first-class types in the C++ language, so there’s no possible confusion between this feature of MySQL++ and C++’s native NULL concept.

    SQL NULL is a unique value

    There’s a secondary distinction between SQL null and anything available in the standard C++ type system: SQL null is a distinct value, equal to nothing else. We can’t use C++’s NULL for this because it is ambiguous, being equal to 0 in integer context. MySQL++ provides the global null object, which you can assign to a Null template instance to make it equal to SQL null:

    myfield = mysqlpp::null;

    If you insert a MySQL++ field holding a SQL null into a C++ IOstream, you get “(NULL)”, something fairly unlikely to be in a normal output string, thus reasonably preserving the uniqueness of the SQL null value.

    MySQL++ also tries to enforce the uniqueness of the SQL null value at compile time in assignments and data conversions. If you try to store a SQL null in a field type that isn’t wrapped by Null or try to assign a Null-wrapped field value to a variable of the inner non-wrapped type, the compiler will emit some ugly error message, yelling about CannotConvertNullToAnyOtherDataType. (The exact message is compiler-dependent.)

    If you don’t like these behaviors, you can change them by passing a different value for the second parameter to template Null. By default, this parameter is NullIsNull, meaning that we should enforce the uniqueness of SQL null. To relax the distinctions, you can instantiate the Null template with a different behavior type: NullIsZero or NullIsBlank. Consider this code:

    mysqlpp::Null<unsigned char, mysqlpp::NullIsZero> myfield(mysqlpp::null);
    cout << myfield << endl;
    cout << int(myfield) << endl;

    This will print “0” twice. If you had used the default for the second Null template parameter, the first output statement would have printed “(NULL)”, and the second wouldn’t even compile.

    3.8. MySQL++’s Special String Types

    MySQL++ has two classes that work like std::string to some degree: String and SQLTypeAdapter. These classes exist to provide functionality that std::string doesn’t provide, but they are neither derivatives of nor complete supersets of std::string. As a result, end-user code generally doesn’t deal with these classes directly, because std::string is a better general-purpose string type. In fact, MySQL++ itself uses std::string most of the time, too. But, the places these specialized stringish types do get used are so important to the way MySQL++ works that it’s well worth taking the time to understand them.

    SQLTypeAdapter

    The simpler of the two is SQLTypeAdapter, or STA for short.[8]

    As its name suggests, its only purpose is to adapt other data types to be used with SQL. It has a whole bunch of conversion constructors, one for all data types we expect to be used with MySQL++ for values in queries. SQL queries are strings, so constructors that take stringish types just make a copy of that string, and all the others “stringize” the value in the format needed by SQL.[9] The conversion constructors preserve type information, so this stringization process doesn’t throw away any essential information.

    STA is used anywhere MySQL++ needs to be able to accept any of several data types for use in a SQL query. Major users are Query’s template query mechanism and the Query stream quoting and escaping mechanism. You care about STA because any time you pass a data value to MySQL++ to be used in building a SQL query, it goes through STA. STA is one of the key pieces in MySQL++ that makes it easy to generate syntactically-correct SQL queries.

    String

    If MySQL++ can be said to have its own generic string type, it’s String, but it’s not really functional enough for general use. It’s possible that in future versions of MySQL++ we’ll expand its interface to include everything std::string does, so that’s why it’s called that.[10]

    The key thing String provides over std::string is conversion of strings in SQL value formats to their plain old C++ data types. For example, if you initialize it with the string “2007-11-19”, you can assign the String to a Date, not because Date knows how to initialize itself from String, but the reverse: String has a bunch of implicit conversion operators defined for it, so you can use it in any type context that makes sense in your application.

    Because Row::operator[] returns String, you can say things like this:

    int x = row["x"];

    In a very real sense, String is the inverse of STA: String converts SQL value strings to C++ data types, and STA converts C++ data types to SQL value strings.[11]

    String has two main uses.

    By far the most common use is as the field value type of Row, as exemplified above. It’s not just the return type of Row::operator[], though: it’s actually the value type used within Row’s internal array. As a result, any time MySQL++ pulls data from the database, it goes through String when converting it from the string form used in SQL result sets to the C++ data type you actually want the data in. It’s the core of the structure population mechanism in the SSQLS feature, for example.

    Because String is the last pristine form of data in a result set before it gets out of MySQL++’s internals where end-user code can see it, MySQL++’s sql_blob and related typedefs are aliases for String. Using anything else would require copies; while the whole “networked database server” thing means most of MySQL++ can be quite inefficient and still not affect benchmark results meaningfully, BLOBs tend to be big, so making unnecessary copies can really make a difference. Which brings us to...

    Reference Counting

    To avoid unnecessary buffer copies, both STA and String are implemented in terms of a reference-counted copy-on-write buffer scheme. Both classes share the same underlying mechanism, and so are interoperable. This means that if you construct one of these objects from another, it doesn’t actually copy the string data, it only copies a pointer to the data buffer, and increments its reference count. If the object has new data assigned to it or it’s otherwise modified, it decrements its reference count and creates its own copy of the buffer. This has a lot of practical import, such as the fact that even though Row::operator[] returns Strings by value, it’s still efficient.

    3.9. Dealing with Binary Data

    Historically, there was no way to hold arbitrary-sized blocks of raw binary data in an SQL database. There was resistance to adding such a feature to SQL for a long time because it’s better, where possible, to decompose blocks of raw binary data into a series of numbers and text strings that can be stored in the database. This lets you query, address and manipulate elements of the data block individually.

    A classic SQL newbie mistake is trying to treat the database server as a file system. Some embedded platforms use a database engine as a file system, but MySQL doesn’t typically live in that world. When your platform already has a perfectly good file system, you should use it for big, nondecomposable blocks of binary data in most cases.

    A common example people use when discussing this is images in database-backed web applications. If you store the image in the database, you have to write code to retrieve the image from the database and send it to the client; there’s more overhead, and less efficient use of the system’s I/O caching system. If you store the image in the filesystem, all you have to do is point the web server to the directory where the images live, and put a URL for that image in your generated HTML. Because you’re giving the web server a direct path to a file on disk, operation is far more efficient. Web servers are very good at slurping whole files off of disk and sending them out to the network, and operating systems are very good at caching file accesses. Plus, you avoid the overhead of pushing the data through the high-level language your web app is written in, which is typically an interpreted language, not C++. Some people still hold out on this, claiming that database engines have superior security features, but I call bunk on that, too. Operating systems and web servers are capable of building access control systems every bit as granular and secure as a database system.

    Occasionally you really do need to store a nondecomposable block of binary data in the database. For such cases, modern SQL database servers support BLOB data types, for Binary Large OBject. This is often just called binary data, though of course all data in a modern computer is binary at some level.

    The tricky part about dealing with binary data in MySQL++ is to ensure that you don’t ever treat the data as a C string, which is really easy to do accidentally. C strings treat zero bytes as special end-of-string characters, but they’re not special at all in binary data. We’ve made a lot of improvements to the way MySQL++ handles string data to avoid this problem, but it’s still possible to bypass these features, wrecking your BLOBs. These examples demonstrate correct techniques.

    Loading a binary file into a BLOB column

    Above, I opined that it’s usually incorrect to store image data in a database, particularly with web apps, of which CGI is a primitive form. Still, it makes a nice, simple example.

    Instead of a single example program, we have here a matched pair. The first example takes the name of a JPEG file on the command line along with all the other common example program parameters, loads that file into memory, and stores it in a BLOB column in the database.

    This example also demonstrates how to retrieve the value assigned to an auto-increment column in the previous insertion. This example uses that feature in the typical way, to create unique IDs for rows as they’re inserted.

    Here is examples/load_jpeg.cpp:

    #include "cmdline.h"
    #include "images.h"
    #include "printdata.h"
    
    #include <fstream>
    
    using namespace std;
    using namespace mysqlpp;
    
    
    // This is just an implementation detail for the example.  Skip down to
    // main() for the concept this example is trying to demonstrate.  You
    // can simply assume that, given a BLOB containing a valid JPEG, it
    // returns true.
    static bool
    is_jpeg(const mysqlpp::sql_blob& img, const char** whynot)
    {
        // See http://stackoverflow.com/questions/2253404/ for
        // justification for the various tests.
        const unsigned char* idp =
                reinterpret_cast<const unsigned char*>(img.data());
        if (img.size() < 125) {
            *whynot = "a valid JPEG must be at least 125 bytes";
        }
        else if ((idp[0] != 0xFF) || (idp[1] != 0xD8)) {
            *whynot = "file does not begin with JPEG sigil bytes";
        }
        else if ((memcmp(idp + 6, "JFIF", 4) != 0) &&
                 (memcmp(idp + 6, "Exif", 4) != 0)) {
            *whynot = "file does not contain JPEG type word";
        }
        else {
            *whynot = 0;
            return true;
        }
    
        return false;
    }
    
    
    // Skip to main() before studying this.  This is a little too
    // low-level to bother with on your first pass thru the code.
    static bool
    load_jpeg_file(const mysqlpp::examples::CommandLine& cmdline,
            images& img, string& img_name)
    {
        if (cmdline.extra_args().size() == 0) {
            // Nothing for us to do here.  Caller will insert NULL BLOB.
            return true;
        }
    
        // Got a file's name on the command line, so open it.
        img_name = cmdline.extra_args()[0];
        ifstream img_file(img_name.c_str(), ios::binary);
        if (img_file) {
            // Slurp file contents into RAM with minimum copying.  (Idiom
            // explained here: http://stackoverflow.com/questions/116038/)
            //
            // By loading the file into a C++ string (stringstream::str())
            // and assigning that directly to a mysqlpp::sql_blob, we avoid
            // truncating the binary data at the first null character.
            img.data.data = static_cast<const stringstream*>(
                    &(stringstream() << img_file.rdbuf()))->str();
    
            // Check JPEG data for sanity.
            const char* error;
            if (is_jpeg(img.data.data, &error)) {
                return true;
            }
            else {
                cerr << '"' << img_name << "\" isn't a JPEG: " <<
                        error << '!' << endl;
            }
        }
    
        cmdline.print_usage("[jpeg_file]");
        return false;
    }
    
    
    int
    main(int argc, char *argv[])
    {
        // Get database access parameters from command line
        mysqlpp::examples::CommandLine cmdline(argc, argv);
        if (!cmdline) {
            return 1;
        }
    
        try {
            // Establish the connection to the database server.
            mysqlpp::Connection con(mysqlpp::examples::db_name,
                    cmdline.server(), cmdline.user(), cmdline.pass());
    
            // Load the file named on the command line
            images img(mysqlpp::null, mysqlpp::null);
            string img_name("NULL");
            if (load_jpeg_file(cmdline, img, img_name)) {
                // Insert image data or SQL NULL into the images.data BLOB
                // column.  The key here is that we're holding the raw
                // binary data in a mysqlpp::sql_blob, which avoids data
                // conversion problems that can lead to treating BLOB data
                // as C strings, thus causing null-truncation.  The fact
                // that we're using SSQLS here is a side issue, simply
                // demonstrating that mysqlpp::Null<mysqlpp::sql_blob> is
                // now legal in SSQLS, as of MySQL++ 3.0.7.
                Query query = con.query();
                query.insert(img);
                SimpleResult res = query.execute();
    
                // Report successful insertion
                cout << "Inserted \"" << img_name <<
                        "\" into images table, " << img.data.data.size() <<
                        " bytes, ID " << res.insert_id() << endl;
            }
        }
        catch (const BadQuery& er) {
            // Handle any query errors
            cerr << "Query error: " << er.what() << endl;
            return -1;
        }
        catch (const BadConversion& er) {
            // Handle bad conversions
            cerr << "Conversion error: " << er.what() << endl <<
                    "\tretrieved data size: " << er.retrieved <<
                    ", actual size: " << er.actual_size << endl;
            return -1;
        }
        catch (const Exception& er) {
            // Catch-all for any other MySQL++ exceptions
            cerr << "Error: " << er.what() << endl;
            return -1;
        }
    
        return 0;
    }
    

    Notice that we used the escape manipulator when building the INSERT query above. This is because mysqlpp::sql_blob is just an alias for one of the special MySQL++ string types, which don’t do automatic quoting and escaping. They can’t, because MySQL++ also uses these data types to hold raw SQL query strings, which would break due to doubled quoting and/or escaping if it were automatic.

    Serving images from BLOB column via CGI

    The other example in this pair is rather short, considering how much it does. It parses a CGI query string giving the image ID, uses that to retreive data loaded into the database by load_jpeg, and writes it out in the form a web server wants when processing a CGI call, all with adequate real-world error handling. This is examples/cgi_jpeg.cpp:

    #include "cmdline.h"
    #include "images.h"
    
    #define CRLF            "\r\n"
    #define CRLF2           "\r\n\r\n"
    
    int
    main(int argc, char* argv[])
    {
        // Get database access parameters from command line if present, else
        // use hard-coded values for true CGI case.
        mysqlpp::examples::CommandLine cmdline(argc, argv, "root",
                "nunyabinness");
        if (!cmdline) {
            return 1;
        }
    
        // Parse CGI query string environment variable to get image ID
        unsigned int img_id = 0;
        char* cgi_query = getenv("QUERY_STRING");
        if (cgi_query) {
            if ((strlen(cgi_query) < 4) || memcmp(cgi_query, "id=", 3)) {
                std::cout << "Content-type: text/plain" << std::endl << std::endl;
                std::cout << "ERROR: Bad query string" << std::endl;
                return 1;
            }
            else {
                img_id = atoi(cgi_query + 3);
            }
        }
        else {
            std::cerr << "Put this program into a web server's cgi-bin "
                    "directory, then" << std::endl;
            std::cerr << "invoke it with a URL like this:" << std::endl;
            std::cerr << std::endl;
            std::cerr << "    http://server.name.com/cgi-bin/cgi_jpeg?id=2" <<
                    std::endl;
            std::cerr << std::endl;
            std::cerr << "This will retrieve the image with ID 2." << std::endl;
            std::cerr << std::endl;
            std::cerr << "You will probably have to change some of the #defines "
                    "at the top of" << std::endl;
            std::cerr << "examples/cgi_jpeg.cpp to allow the lookup to work." <<
                    std::endl;
            return 1;
        }
    
        // Retrieve image from DB by ID
        try {
            mysqlpp::Connection con(mysqlpp::examples::db_name,
                    cmdline.server(), cmdline.user(), cmdline.pass());
            mysqlpp::Query query = con.query();
            query << "SELECT * FROM images WHERE id = " << img_id;
            mysqlpp::StoreQueryResult res = query.store();
            if (res && res.num_rows()) {
                images img = res[0];
                if (img.data.is_null) {
                    std::cout << "Content-type: text/plain" << CRLF2;
                    std::cout << "No image content!" << CRLF;
                }
                else {
                    std::cout << "X-Image-Id: " << img_id << CRLF; // for debugging
                    std::cout << "Content-type: image/jpeg" << CRLF;
                    std::cout << "Content-length: " <<
                            img.data.data.length() << CRLF2;
                    std::cout << img.data;
                }
            }
            else {
                std::cout << "Content-type: text/plain" << CRLF2;
                std::cout << "ERROR: No image with ID " << img_id << CRLF;
            }
        }
        catch (const mysqlpp::BadQuery& er) {
            // Handle any query errors
            std::cout << "Content-type: text/plain" << CRLF2;
            std::cout << "QUERY ERROR: " << er.what() << CRLF;
            return 1;
        }
        catch (const mysqlpp::Exception& er) {
            // Catch-all for any other MySQL++ exceptions
            std::cout << "Content-type: text/plain" << CRLF2;
            std::cout << "GENERAL ERROR: " << er.what() << CRLF;
            return 1;
        }
    
        return 0;
    }
    

    While you can run it by hand, it’s best to install this in a web server’s CGI program directory, then call it with a URL like http://my.server.com/cgi-bin/cgi_jpeg?id=1. That retrieves the JPEG with ID 1 from the database and returns it to the web server, which will send it on to the browser.

    We’ve included an image with MySQL++ that you can use with this example pair, examples/logo.jpg.

    3.10. Using Transactions

    The Transaction class makes it easier to use SQL transactions in an exception-safe manner. Normally you create the Transaction object on the stack before you issue the queries in your transaction set. Then, when all the queries in the transaction set have been issued, you call Transaction::commit(), which commits the transaction set. If the Transaction object goes out of scope before you call commit(), the transaction set is rolled back. This ensures that if some code throws an exception after the transaction is started but before it is committed, the transaction isn’t left unresolved.

    examples/transaction.cpp illustrates this:

    #include "cmdline.h"
    #include "printdata.h"
    #include "stock.h"
    
    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    
    int
    main(int argc, char *argv[])
    {
        // Get database access parameters from command line
        mysqlpp::examples::CommandLine cmdline(argc, argv);
        if (!cmdline) {
            return 1;
        }
    
        try {
            // Establish the connection to the database server.
            mysqlpp::Connection con(mysqlpp::examples::db_name,
                    cmdline.server(), cmdline.user(), cmdline.pass());
    
            // Show initial state
            mysqlpp::Query query = con.query();
            cout << "Initial state of stock table:" << endl;
            print_stock_table(query);
    
            // Insert a few rows in a single transaction set
            {
                // Use a higher level of transaction isolation than MySQL
                // offers by default.  This trades some speed for more
                // predictable behavior.  We've set it to affect all
                // transactions started through this DB server connection,
                // so it affects the next block, too, even if we don't
                // commit this one.
                mysqlpp::Transaction trans(con,
                        mysqlpp::Transaction::serializable,
                        mysqlpp::Transaction::session);
    
                stock row("Sauerkraut", 42, 1.2, 0.75,
                        mysqlpp::sql_date("2006-03-06"), mysqlpp::null);
                query.insert(row);
                query.execute();
    
                cout << "\nRow inserted, but not committed." << endl;
                cout << "Verify this with another program (e.g. simple1), "
                        "then hit Enter." << endl;
                getchar();
    
                cout << "\nCommitting transaction gives us:" << endl;
                trans.commit();
                print_stock_table(query);
            }
                
            // Now let's test auto-rollback
            {
                // Start a new transaction, keeping the same isolation level
                // we set above, since it was set to affect the session.
                mysqlpp::Transaction trans(con);
                cout << "\nNow adding catsup to the database..." << endl;
    
                stock row("Catsup", 3, 3.9, 2.99,
                        mysqlpp::sql_date("2006-03-06"), mysqlpp::null);
                query.insert(row);
                query.execute();
            }
            cout << "\nNo, yuck! We don't like catsup. Rolling it back:" <<
                    endl;
            print_stock_table(query);
                
        }
        catch (const mysqlpp::BadQuery& er) {
            // Handle any query errors
            cerr << "Query error: " << er.what() << endl;
            return -1;
        }
        catch (const mysqlpp::BadConversion& er) {  
            // Handle bad conversions
            cerr << "Conversion error: " << er.what() << endl <<
                    "\tretrieved data size: " << er.retrieved <<
                    ", actual size: " << er.actual_size << endl;
            return -1;
        }
        catch (const mysqlpp::Exception& er) {
            // Catch-all for any other MySQL++ exceptions
            cerr << "Error: " << er.what() << endl;
            return -1;
        }
    
        return 0;
    }
    

    One of the downsides of transactions is that the locking it requires in the database server is prone to deadlocks. The classic case where this happens is when two programs both want access to the same two rows within a single transaction each, but they modify them in opposite orders. If the timing is such that the programs interleave their lock acquisitions, the two come to an impasse: neither can get access to the other row they want to modify until the other program commits its transaction and thus release the row locks, but neither can finish the transaction because they’re waiting on row locks the database server is holding on behalf of the other program.

    The MySQL server is smart enough to detect this condition, but the best it can do is abort the second transaction. This breaks the impasse, allowing the first program to complete its transaction.

    The second program now has to deal with the fact that its transaction just got aborted. There’s a subtlety in detecting this situation when using MySQL++. By default, MySQL++ signals errors like these with exceptions. In the exception handler, you might expect to get ER_LOCK_DEADLOCK from Query::errnum() (or Connection::errnum(), same thing), but what you’ll almost certainly get instead is 0, meaning “no error.” Why? It’s because you’re probably using a Transaction object to get automatic roll-backs in the face of exceptions. In this case, the roll-back happens before your exception handler is called by issuing a ROLLBACK query to the database server. Thus, Query::errnum() returns the error code associated with this roll-back query, not the deadlocked transaction that caused the exception.

    To avoid this problem, a few of the exception objects as of MySQL++ v3.0 include this last error number in the exception object itself. It’s populated at the point of the exception, so it can differ from the value you would get from Query::errnum() later on when the exception handler runs.

    The example examples/deadlock.cpp demonstrates the problem:

    #include "cmdline.h"
    
    #include <mysql++.h>
    #include <mysqld_error.h>
    
    #include <iostream>
    
    using namespace std;
    
    // Bring in global holding the value given to the -m switch
    extern int run_mode;
    
    
    int
    main(int argc, char *argv[])
    {
        // Get database access parameters from command line
        mysqlpp::examples::CommandLine cmdline(argc, argv);
        if (!cmdline) {
            return 1;
        }
    
        // Check that the mode parameter was also given and it makes sense
        const int run_mode = cmdline.run_mode();
        if ((run_mode != 1) && (run_mode != 2)) {
            cerr << argv[0] << " must be run with -m1 or -m2 as one of "
                    "its command-line arguments." << endl;
            return 1;
        }
    
        mysqlpp::Connection con;
        try {
            // Establish the connection to the database server
            mysqlpp::Connection con(mysqlpp::examples::db_name,
                    cmdline.server(), cmdline.user(), cmdline.pass());
    
            // Start a transaction set.  Transactions create mutex locks on
            // modified rows, so if two programs both touch the same pair of
            // rows but in opposite orders at the wrong time, one of the two
            // programs will deadlock.  The MySQL server knows how to detect
            // this situation, and its error return causes MySQL++ to throw
            // a BadQuery exception.  The point of this example is that if
            // you want to detect this problem, you would check the value of
            // BadQuery::errnum(), not Connection::errnum(), because the
            // transaction rollback process executes a query which succeeds,
            // setting the MySQL C API's "last error number" value to 0.
            // The exception object carries its own copy of the error number
            // at the point the exception was thrown for this very reason.
            mysqlpp::Query query = con.query();
            mysqlpp::Transaction trans(con);
    
            // Build and run the queries, with the order depending on the -m
            // flag, so that a second copy of the program will deadlock if
            // run while the first is waiting for Enter.
            char dummy[100];
            for (int i = 0; i < 2; ++i) {
                int lock = run_mode + (run_mode == 1 ? i : -i);
                cout << "Trying lock " << lock << "..." << endl;
    
                query << "select * from deadlock_test" << lock << 
                        " where x = " << lock << " for update";
                query.store();
    
                cout << "Acquired lock " << lock << ".  Press Enter to ";
                cout << (i == 0 ? "try next lock" : "exit");
                cout << ": " << flush;
                cin.getline(dummy, sizeof(dummy));
            }
        }
        catch (mysqlpp::BadQuery e) {
            if (e.errnum() == ER_LOCK_DEADLOCK) {
                cerr << "Transaction deadlock detected!" << endl;
                cerr << "Connection::errnum = " << con.errnum() <<
                        ", BadQuery::errnum = " << e.errnum() << endl;
            }
            else {
                cerr << "Unexpected query error: " << e.what() << endl;
            }
            return 1;
        }
        catch (mysqlpp::Exception e) {
            cerr << "General error: " << e.what() << endl;      
            return 1;
        }
    
        return 0;
    }
    

    This example works a little differently than the others. You run one copy of the example, then when it pauses waiting for you to press Enter, you run another copy. Then, depending on which one you press Enter in, one of the two will abort with the deadlock exception. You can see from the error message you get that it matters which method you call to get the error number. What you do about it is up to you as it depends on your program’s design and system architecture.

    3.11. Which Query Type to Use?

    There are three major ways to execute a query in MySQL++: Query::execute(), Query::store(), and Query::use(). Which should you use, and why?

    execute() is for queries that do not return data per se. For instance, CREATE INDEX. You do get back some information from the MySQL server, which execute() returns to its caller in a SimpleResult object. In addition to the obvious — a flag stating whether the query succeeded or not — this object also contains things like the number of rows that the query affected. If you only need the success status, it’s a little more efficient to call Query::exec() instead, as it simply returns bool.

    If your query does pull data from the database, the simplest option is store(). (All of the examples up to this point have used this method.) This returns a StoreQueryResult object, which contains the entire result set. It’s especially convenient because StoreQueryResult derives from std::vector<mysqlpp::Row>, so it opens the whole panoply of STL operations for accessing the rows in the result set. Access rows randomly with subscript notation, iterate forwards and backwards over the result set, run STL algorithms on the set...it all works naturally.

    If you like the idea of storing your results in an STL container but don’t want to use std::vector, you can call Query::storein() instead. It lets you store the results in any standard STL container (yes, both sequential and set-associative types) instead of using StoreQueryResult. You do miss out on some of the additional database information held by StoreQueryResult’s other base class, ResultBase, however.

    store*() queries are convenient, but the cost of keeping the entire result set in main memory can sometimes be too high. It can be surprisingly costly, in fact. A MySQL database server stores data compactly on disk, but it returns query data to the client in a textual form. This results in a kind of data bloat that affects numeric and BLOB types the most. MySQL++ and the underlying C API library also have their own memory overheads in addition to this. So, if you happen to know that the database server stores every record of a particular table in 1 KB, pulling a million records from that table could easily take several GB of memory with a store() query, depending on what’s actually stored in that table.

    For these large result sets, the superior option is a use() query. This returns a UseQueryResult object, which is similar to StoreQueryResult, but without all of the random-access features. This is because a “use” query tells the database server to send the results back one row at a time, to be processed linearly. It’s analogous to a C++ stream’s input iterator, as opposed to a random-access iterator that a container like vector offers. By accepting this limitation, you can process arbitrarily large result sets. This technique is demonstrated in examples/simple3.cpp:

    #include "cmdline.h"
    #include "printdata.h"
    
    #include <mysql++.h>
    
    #include <iostream>
    #include <iomanip>
    
    using namespace std;
    
    int
    main(int argc, char *argv[])
    {
        // Get database access parameters from command line
        mysqlpp::examples::CommandLine cmdline(argc, argv);
        if (!cmdline) {
            return 1;
        }
    
        // Connect to the sample database.
        mysqlpp::Connection conn(false);
        if (conn.connect(mysqlpp::examples::db_name, cmdline.server(),
                cmdline.user(), cmdline.pass())) {
            // Ask for all rows from the sample stock table and display
            // them.  Unlike simple2 example, we retreive each row one at
            // a time instead of storing the entire result set in memory
            // and then iterating over it.
            mysqlpp::Query query = conn.query("select * from stock");
            if (mysqlpp::UseQueryResult res = query.use()) {
                // Display header
                cout.setf(ios::left);
                cout << setw(31) << "Item" <<
                        setw(10) << "Num" <<
                        setw(10) << "Weight" <<
                        setw(10) << "Price" <<
                        "Date" << endl << endl;
    
                // Get each row in result set, and print its contents
                while (mysqlpp::Row row = res.fetch_row()) {
                    cout << setw(30) << row["item"] << ' ' <<
                            setw(9) << row["num"] << ' ' <<
                            setw(9) << row["weight"] << ' ' <<
                            setw(9) << row["price"] << ' ' <<
                            setw(9) << row["sdate"] <<
                            endl;
                }
    
                // Check for error: can't distinguish "end of results" and
                // error cases in return from fetch_row() otherwise.
                if (conn.errnum()) {
                    cerr << "Error received in fetching a row: " <<
                            conn.error() << endl;
                    return 1;
                }
                return 0;
            }
            else {
                cerr << "Failed to get stock item: " << query.error() << endl;
                return 1;
            }
        }
        else {
            cerr << "DB connection failed: " << conn.error() << endl;
            return 1;
        }
    }
    

    This example does the same thing as simple2, only with a “use” query instead of a “store” query.

    Valuable as use() queries are, they should not be the first resort in solving problems of excessive memory use. It’s better if you can find a way to simply not pull as much data from the database in the first place. Maybe you’re saying SELECT * even though you don’t immedidately need all the columns from the table. Or, maybe you’re filtering the result set with C++ code after you get it from the database server. If you can do that filtering with a more restrictive WHERE clause on the SELECT, it’ll not only save memory, it’ll save bandwidth between the database server and client, and can even save CPU time. If the filtering criteria can’t be expressed in a WHERE clause, however, read on to the next section.

    3.12. Conditional Result Row Handling

    Sometimes you must pull more data from the database server than you actually need and filter it in memory. SQL’s WHERE clause is powerful, but not as powerful as C++. Instead of storing the full result set and then picking over it to find the rows you want to keep, use Query::store_if(). This is examples/store_if.cpp:

    #include "cmdline.h"
    #include "printdata.h"
    #include "stock.h"
    
    #include <mysql++.h>
    
    #include <iostream>
    
    #include <math.h>
    
    
    // Define a functor for testing primality.
    struct is_prime
    {
        bool operator()(const stock& s)
        {
            if ((s.num == 2) || (s.num == 3)) {
                return true;    // 2 and 3 are trivial cases
            }
            else if ((s.num < 2) || ((s.num % 2) == 0)) {
                return false;   // can't be prime if < 2 or even
            }
            else {
                // The only possibility left is that it's divisible by an
                // odd number that's less than or equal to its square root.
                for (int i = 3; i <= sqrt(double(s.num)); i += 2) {
                    if ((s.num % i) == 0) {
                        return false;
                    }
                }
                return true;
            }
        }
    };
    
    
    int
    main(int argc, char *argv[])
    {
        // Get database access parameters from command line
        mysqlpp::examples::CommandLine cmdline(argc, argv);
        if (!cmdline) {
            return 1;
        }
    
        try {
            // Establish the connection to the database server.
            mysqlpp::Connection con(mysqlpp::examples::db_name,
                    cmdline.server(), cmdline.user(), cmdline.pass());
    
            // Collect the stock items with prime quantities
            std::vector<stock> results;
            mysqlpp::Query query = con.query();
            query.store_if(results, stock(), is_prime());
    
            // Show the results
            print_stock_header(results.size());
            std::vector<stock>::const_iterator it;
            for (it = results.begin(); it != results.end(); ++it) {
                print_stock_row(it->item.c_str(), it->num, it->weight,
                        it->price, it->sDate);
            }
        }
        catch (const mysqlpp::BadQuery& e) {
            // Something went wrong with the SQL query.
            std::cerr << "Query failed: " << e.what() << std::endl;
            return 1;
        }
        catch (const mysqlpp::Exception& er) {
            // Catch-all for any other MySQL++ exceptions
            std::cerr << "Error: " << er.what() << std::endl;
            return 1;
        }
    
        return 0;
    }
    

    I doubt anyone really needs to select rows from a table that have a prime number in a given field. This example is meant to be just barely more complex than SQL can manage, to avoid obscuring the point. That point being, the Query::store_if() call here gives you a container full of results meeting a criterion that you probably can’t express in SQL. You will no doubt have much more useful criteria in your own programs.

    If you need a more complex query than the one store_if() knows how to build when given an SSQLS examplar, there are two overloads that let you use your own query string. One overload takes the query string directly, and the other uses the query string built with Query’s stream interface.

    3.13. Executing Code for Each Row In a Result Set

    SQL is more than just a database query language. Modern database engines can actually do some calculations on the data on the server side. But, this isn’t always the best way to get something done. When you need to mix code and a query, MySQL++’s Query::for_each() facility might be just what you need. This is examples/for_each.cpp:

    #include "cmdline.h"
    #include "printdata.h"
    #include "stock.h"
    
    #include <mysql++.h>
    
    #include <iostream>
    
    #include <math.h>
    
    
    // Define a functor to collect statistics about the stock table
    class gather_stock_stats
    {
    public:
        gather_stock_stats() :
        items_(0),
        weight_(0),
        cost_(0)
        {
        }
    
        void operator()(const stock& s)
        {
            items_  += s.num;
            weight_ += (s.num * s.weight);
            cost_   += (s.num * s.price.data);
        }
        
    private:
        mysqlpp::sql_bigint items_;
        mysqlpp::sql_double weight_, cost_;
    
        friend std::ostream& operator<<(std::ostream& os,
                const gather_stock_stats& ss);
    };
    
    
    // Dump the contents of gather_stock_stats to a stream in human-readable
    // form.
    std::ostream&
    operator<<(std::ostream& os, const gather_stock_stats& ss)
    {
        os << ss.items_ << " items " <<
                "weighing " << ss.weight_ << " stone and " <<
                "costing " << ss.cost_ << " cowrie shells";
        return os;
    }
    
    
    int
    main(int argc, char *argv[])
    {
        // Get database access parameters from command line
        mysqlpp::examples::CommandLine cmdline(argc, argv);
        if (!cmdline) {
            return 1;
        }
    
        try {
            // Establish the connection to the database server.
            mysqlpp::Connection con(mysqlpp::examples::db_name,
                    cmdline.server(), cmdline.user(), cmdline.pass());
    
            // Gather and display the stats for the entire stock table
            mysqlpp::Query query = con.query();
            std::cout << "There are " << query.for_each(stock(),
                    gather_stock_stats()) << '.' << std::endl;
        }
        catch (const mysqlpp::BadQuery& e) {
            // Something went wrong with the SQL query.
            std::cerr << "Query failed: " << e.what() << std::endl;
            return 1;
        }
        catch (const mysqlpp::Exception& er) {
            // Catch-all for any other MySQL++ exceptions
            std::cerr << "Error: " << er.what() << std::endl;
            return 1;
        }
    
        return 0;
    }
    

    You only need to read the main() function to get a good idea of what the program does. The key line of code passes an SSQLS examplar and a functor to Query::for_each(). for_each() uses the SSQLS instance to build a select * from TABLE query, stock in this case. It runs that query internally, calling gather_stock_stats on each row. This is a pretty contrived example; you could actually do this in SQL, but we’re trying to prevent the complexity of the code from getting in the way of the demonstration here.

    Just as with store_if(), described above, there are two other overloads for for_each() that let you use your own query string.

    3.14. Connection Options

    MySQL has a large number of options that control how it makes the connection to the database server, and how that connection behaves. The defaults are sufficient for most programs, so only one of the MySQL++ example programs make any connection option changes. Here is examples/multiquery.cpp:

    #include "cmdline.h"
    #include "printdata.h"
    
    #include <mysql++.h>
    
    #include <algorithm>
    #include <iostream>
    #include <iomanip>
    #include <vector>
    
    using namespace std;
    using namespace mysqlpp;
    
    
    typedef vector<size_t> IntVectorType;
    
    
    static void
    print_header(IntVectorType& widths, StoreQueryResult& res)
    {
        cout << "  |" << setfill(' ');
        for (size_t i = 0; i < res.field_names()->size(); i++) {
            cout << " " << setw(widths.at(i)) << res.field_name(int(i)) << " |";
        }
        cout << endl;
    }
    
    
    static void
    print_row(IntVectorType& widths, Row& row)
    {
        cout << "  |" << setfill(' ');
        for (size_t i = 0; i < row.size(); ++i) {
            cout << " " << setw(widths.at(i)) << row[int(i)] << " |";
        }
        cout << endl;
    }
    
    
    static void
    print_row_separator(IntVectorType& widths)
    {
        cout << "  +" << setfill('-');
        for (size_t i = 0; i < widths.size(); i++) {
            cout << "-" << setw(widths.at(i)) << '-' << "-+";
        }
        cout << endl;
    }
    
    
    static void
    print_result(StoreQueryResult& res, int index)
    {
        // Show how many rows are in result, if any
        StoreQueryResult::size_type num_results = res.size();
        if (res && (num_results > 0)) {
            cout << "Result set " << index << " has " << num_results <<
                    " row" << (num_results == 1 ? "" : "s") << ':' << endl;
        }
        else {
            cout << "Result set " << index << " is empty." << endl;
            return;
        }
    
        // Figure out the widths of the result set's columns
        IntVectorType widths;
        size_t size = res.num_fields();
        for (size_t i = 0; i < size; i++) {
            widths.push_back(max(
                    res.field(i).max_length(),
                    res.field_name(i).size()));
        }
    
        // Print result set header
        print_row_separator(widths);
        print_header(widths, res);
        print_row_separator(widths);
    
        // Display the result set contents
        for (StoreQueryResult::size_type i = 0; i < num_results; ++i) {
            print_row(widths, res[i]);
        }
    
        // Print result set footer
        print_row_separator(widths);
    }
    
    
    static void
    print_multiple_results(Query& query)
    {
        // Execute query and print all result sets
        StoreQueryResult res = query.store();
        print_result(res, 0);
        for (int i = 1; query.more_results(); ++i) {
            res = query.store_next();
            print_result(res, i);
        }
    }
    
    
    int
    main(int argc, char *argv[])
    {
        // Get connection parameters from command line
        mysqlpp::examples::CommandLine cmdline(argc, argv);
        if (!cmdline) {
            return 1;
        }
    
        try {
            // Enable multi-queries.  Notice that you almost always set
            // MySQL++ connection options before establishing the server
            // connection, and options are always set using this one
            // interface.  If you're familiar with the underlying C API,
            // you know that there is poor consistency on these matters;
            // MySQL++ abstracts these differences away.
            Connection con;
            con.set_option(new MultiStatementsOption(true));
    
            // Connect to the database
            if (!con.connect(mysqlpp::examples::db_name, cmdline.server(),
                    cmdline.user(), cmdline.pass())) {
                return 1;
            }
    
            // Set up query with multiple queries.
            Query query = con.query();
            query << "DROP TABLE IF EXISTS test_table; " <<
                    "CREATE TABLE test_table(id INT); " <<
                    "INSERT INTO test_table VALUES(10); " <<
                    "UPDATE test_table SET id=20 WHERE id=10; " <<
                    "SELECT * FROM test_table; " <<
                    "DROP TABLE test_table";
            cout << "Multi-query: " << endl << query << endl;
    
            // Execute statement and display all result sets.
            print_multiple_results(query);
    
    #if MYSQL_VERSION_ID >= 50000
            // If it's MySQL v5.0 or higher, also test stored procedures, which
            // return their results the same way multi-queries do.
            query << "DROP PROCEDURE IF EXISTS get_stock; " <<
                    "CREATE PROCEDURE get_stock" <<
                    "( i_item varchar(20) ) " <<
                    "BEGIN " <<
                    "SET i_item = concat('%', i_item, '%'); " <<
                    "SELECT * FROM stock WHERE lower(item) like lower(i_item); " <<
                    "END;";
            cout << "Stored procedure query: " << endl << query << endl;
    
            // Create the stored procedure.
            print_multiple_results(query);
    
            // Call the stored procedure and display its results.
            query << "CALL get_stock('relish')";
            cout << "Query: " << query << endl;
            print_multiple_results(query);
    #endif
    
            return 0;
        }
        catch (const BadOption& err) {
            cerr << err.what() << endl;
            cerr << "This example requires MySQL 4.1.1 or later." << endl;
            return 1;
        }
        catch (const ConnectionFailed& err) {
            cerr << "Failed to connect to database server: " <<
                    err.what() << endl;
            return 1;
        }
        catch (const Exception& er) {
            // Catch-all for any other MySQL++ exceptions
            cerr << "Error: " << er.what() << endl;
            return 1;
        }
    }
    

    This is a fairly complex example demonstrating the multi-query and stored procedure features in newer versions of MySQL. Because these are new features, and they change the communication between the client and server, you have to enable these features in a connection option. The key line is right up at the top of main(), where it creates a MultiStatementsOption object and passes it to Connection::set_option(). That method will take a pointer to any derivative of Option: you just create such an object on the heap and pass it in, which gives Connection the data values it needs to set the option. You don’t need to worry about releasing the memory used by the Option objects; it’s done automatically.

    The only tricky thing about setting options is that only a few of them can be set after the connection is up. Most need to be set just as shown in the example above: create an unconnected Connection object, set your connection options, and only then establish the connection. The option setting mechanism takes care of applying the options at the correct time in the connection establishment sequence.

    If you’re familiar with setting connection options in the MySQL C API, you’ll have to get your head around the fact that MySQL++’s connection option mechanism is a much simpler, higher-level design that doesn’t resemble the C API in any way. The C API has something like half a dozen different mechanisms for setting options that control the connection. The flexibility of the C++ type system allows us to wrap all of these up into a single high-level mechanism while actually getting greater type safety than the C API allows.

    3.15. Dealing with Connection Timeouts

    By default, current MySQL servers have an 8 hour idle timeout on connections. This is not a problem if your program never has to run for more than 8 hours or reliably queries the database more often than that. And, it’s a good thing for the database server, because even an idle connection takes up server resources.

    Many programs must run continually, however, and may experience long idle periods, such as nights and weekends when no one is around to make the program issue database queries. It’s therefore common for people writing such programs to get a bug report from the field complaining that the program died overnight or over a long weekend, usually with some error message about the database server going away. They then check the DB server, find that it’s still running and never did restart and scratch their heads wondering what happened. What happened is that the server’s connection idle timeout expired, so it closed the connection to the client.

    You cannot detect this condition by calling Connection::connected(). When that returns true, it just means that either the connect-on-create constructor or the connect() call succeeded and that we haven’t observed the connection to be down since then. When the database server closes an idle connection, you won’t know it until after you try to issue a query. This is simply due to the nature of network programming.

    One way around this problem is to configure MySQL to have a longer idle timeout. This timeout is in seconds, so the default of 8 hours is 28,800 seconds. You would want to figure out the longest possible time that your program could be left idle, then pick a value somewhat longer than that. For instance, you might decide that the longest reasonable idle time is a long 4-day weekend — 345,600 seconds — which you could round up to 350,000 or 400,000 to allow for a little bit of additional idle time on either end of that period.

    Another way around this, on a per-connection basis from the client side, would be to set the ReconnectOption connection option. This will cause MySQL++ to reconnect to the server automatically if it drops the connection. Beware that unless you’re using MySQL 5.1.6 or higher, you have to set this only after the connection is established, or it won’t take effect. This means there’s a potential race condition: it’s possible the connection could drop shortly enough after being established that you don’t have time to apply the option, so it won’t come back up automatically. MySQL 5.1.6+ fixes this by allowing this option to be set before the connection is established.

    A completely different way to tackle this, if your program doesn’t block forever waiting on I/O while idle, is to periodically call Connection::ping(). [12] This sends the smallest possible amount of data to the database server, which will reset its idle timer and cause it to respond, so ping() returns true. If it returns false instead, you know you need to reconnect to the server. Periodic pinging is easiest to do if your program uses asynchronous I/O, threads, or some kind of event loop to ensure that you can call something periodically even while the rest of the program has nothing to do.

    An interesting variant on this strategy is to ping the server before each query, or, better, before each group of queries within a larger operation. It has an advantage over pinging during idle time in that the client is about to use far more server resources to handle the query than it will take to handle the ping, so the ping time gets lost in the overhead. On the other hand, if the client issues queries frequently when not idle, it can result in a lot more pings than would happen if you just pinged every N hours while idle.

    Finally, some programmers prefer to wrap the querying mechanism in an error handler that catches the “server has gone away” error and tries to reestablish the connection and reissue the query. This adds some complexity, but it makes your program more robust without taking up unnecessary resources. If you did this, you could even change the server to drop idle connections more often, thus tying up fewer TCP/IP stack resources.

    3.16. Concurrent Queries on a Connection

    An important limitation of the MySQL C API library — which MySQL++ is built atop, so it shares this limitation — is that you can only have one query in progress on each connection to the database server. If you try to issue a second query while one is still in progress, you get an obscure error message about “Commands out of sync” from the underlying C API library. (You normally get this message in a MySQL++ exception unless you have exceptions disabled, in which case you get a failure code and Connection::error() returns this message.)

    There are lots of ways to run into this limitation:

    • The easiest way is to try to use a single Connection object in a multithreaded program, with more than one thread attempting to use it to issue queries. Unless you put in a lot of work to synchronize access, this is almost guaranteed to fail at some point, giving the dread “Commands out of sync” error.

    • You might then think to give each thread that issues queries its own Connection object. You can still run into trouble if you pass the data you get from queries around to other threads. What can happen is that one of these child objects indirectly calls back to the Connection at a time where it’s involved with another query. This is properly covered elsewhere, in Section 7.4, “Sharing MySQL++ Data Structures”.)

    • One way to run into this problem without using threads is with “use” queries, discussed above. If you don’t consume all rows from a query before you issue another on that connection, you are effectively trying to have multiple concurrent queries on a single connection. Here’s a recipie for this particular disaster:

      UseQueryResult r1 = query.use("select garbage from plink where foobie='tamagotchi'");
      UseQueryResult r2 = query.use("select blah from bonk where bletch='smurf'");

      The second use() call fails because the first result set hasn’t been consumed yet.

    • Still another way to run into this limitation is if you use MySQL’s multi-query feature. This lets you give multiple queries in a single call, separated by semicolons, and get back the results for each query separately. If you issue three queries using Query::store(), you only get back the first query’s results with that call, and then have to call store_next() to get the subsequent query results. MySQL++ provides Query::more_results() so you know whether you’re done, or need to call store_next() again. Until you reach the last result set, you can’t issue another query on that connection.

    • Finally, there’s a way to run into this that surprises almost everyone sooner or later: stored procedures. MySQL normally returns at least two result sets for a stored procedure call. The simple case is that the stored procedure contains a single SQL query, and it succeeds: you get two results, first the results of the embedded SQL query, and then the result of the call itself. If there are multiple SQL queries within the stored procedure, you get more than two result sets. Until you consume them all, you can’t start a new query on the connection. As above, you want to have a loop calling more_results() and store_next() to work your way through all of the result sets produced by the stored procedure call.

    3.17. Getting Field Meta-Information

    The following example demonstrates how to get information about the fields in a result set, such as the name of the field and the SQL type. This is examples/fieldinf.cpp:

    #include "cmdline.h"
    #include "printdata.h"
    
    #include <iostream>
    #include <iomanip>
    
    using namespace std;
    
    
    int
    main(int argc, char *argv[])
    {
        // Get database access parameters from command line
        mysqlpp::examples::CommandLine cmdline(argc, argv);
        if (!cmdline) {
            return 1;
        }
    
        try {
            // Establish the connection to the database server.
            mysqlpp::Connection con(mysqlpp::examples::db_name,
                    cmdline.server(), cmdline.user(), cmdline.pass());
    
            // Get contents of main example table
            mysqlpp::Query query = con.query("select * from stock");
            mysqlpp::StoreQueryResult res = query.store();
    
            // Show info about each field in that table
            char widths[] = { 12, 22, 46 };
            cout.setf(ios::left);
            cout << setw(widths[0]) << "Field" <<
                    setw(widths[1]) << "SQL Type" <<
                    setw(widths[2]) << "Equivalent C++ Type" <<
                    endl;
            for (size_t i = 0; i < sizeof(widths) / sizeof(widths[0]); ++i) {
                cout << string(widths[i] - 1, '=') << ' ';
            }
            cout << endl;
            
            for (size_t i = 0; i < res.field_names()->size(); i++) {
                // Suppress C++ type name outputs when run under dtest,
                // as they're system-specific.
                const char* cname = res.field_type(int(i)).name();
                mysqlpp::FieldTypes::value_type ft = res.field_type(int(i));
                ostringstream os;
                os << ft.sql_name() << " (" << ft.id() << ')';
                cout << setw(widths[0]) << res.field_name(int(i)).c_str() <<
                        setw(widths[1]) << os.str() <<
                        setw(widths[2]) << cname <<
                        endl;
            }
            cout << endl;
    
            // Simple type check
            if (res.field_type(0) == typeid(string)) {
                cout << "SQL type of 'item' field most closely resembles "
                        "the C++ string type." << endl;
            }
    
            // Tricky type check: the 'if' path shouldn't happen because the
            // description field has the NULL attribute.  We need to dig a
            // little deeper if we want to ignore this in our type checks.
            if (res.field_type(5) == typeid(string)) {
                cout << "Should not happen! Type check failure." << endl;
            }
            else if (res.field_type(5) == typeid(mysqlpp::sql_blob_null)) {
                cout << "SQL type of 'description' field resembles "
                        "a nullable variant of the C++ string type." << endl;
            }
            else {
                cout << "Weird: fifth field's type is now " <<
                        res.field_type(5).name() << endl;
                cout << "Did something recently change in resetdb?" << endl;
            }
        }
        catch (const mysqlpp::BadQuery& er) {
            // Handle any query errors
            cerr << "Query error: " << er.what() << endl;
            return -1;
        }
        catch (const mysqlpp::Exception& er) {
            // Catch-all for any other MySQL++ exceptions
            cerr << "Error: " << er.what() << endl;
            return -1;
        }
    
        return 0;
    }
    


    [2] SQLQueryParms is used as a stream only as an implementation detail within the library. End user code simply sees it as a std::vector derivative.

    [3] By contrast, the Query methods that take an SSQLS do add quotes and escape strings implicitly. It can do this because SSQLS knows all the SQL code and data types, so it never has to guess whether quoting or escaping is appropriate.

    [4] Unless you’re smarter than I am, you don’t immediately see why explicit manipulators are necessary. We can tell when quoting and escaping is not appropriate based on type, so doesn’t that mean we know when it is appropriate? Alas, no. For most data types, it is possible to know, or at least make an awfully good guess, but it’s a complete toss-up for C strings, const char*. A C string could be either a literal string of SQL code, or it can be a value used in a query. Since there’s no easy way to know and it would damage the library’s usability to mandate that C strings only be used for one purpose or the other, the library requires you to be explicit.

    [5] One hopes the programmer knows.

    [6] Yes, we’re aware that there is a feature in MySQL that lets you transfer row data in a binary form, but we don’t support this yet. We may, someday, probably as an extension to SSQLS. The only real reason to do so is to shave off some of the data translation overhead, which is typically neglibible in practice, swamped by the far greater disk and network I/O overheads inherent in use of a client-server database system like MySQL.

    [7] SQL’s DECIMAL data type is a configurable-precision fixed-point number format. MySQL++ currently translates these to double, a floating-point data format, the closest thing available in the C++ type system. Since the main reason to use DECIMAL is to get away from the weird roundoff behavior of floating-point numbers, this could be viewed as a serious problem. The thing is, though, in all the years MySQL++ has been around, I don’t remember anyone actually complaining about it. Apparently there’s either no one using DECIMAL with MySQL++, or they’re ignoring any roundoff errors they get as a result. Until this wheel squeaks, it’s not likely to be greased. To fix this, we’ll have to create a new custom data type to hold such column values, which will be a lot of work for apparently little return.

    [8] In version 2 of MySQL++ and earlier, SQLTypeAdapter was called SQLString, but it was confusing because its name and the fact that it derived from std::string suggested that it was a general-purpose string type. MySQL++ even used it this way in a few places internally. In v3, we made it a simple base class and renamed it to reflect its proper limited function.

    [9] SQLTypeAdapter doesn’t do quoting and escaping itself. That happens elsewhere, right at the point that the STA gets used to build a query.

    [10] If you used MySQL++ before v3, String used to be called ColData. It was renamed because starting in v2.3, we began using it for holding more than just column data. I considered renaming it SQLString instead, but that would have confused old MySQL++ users to no end. Instead, I followed the example of Set, MySQL++’s specialized std::set variant.

    [11] During the development of MySQL++ v3.0, I tried merging SQLTypeAdapter and String into a single class to take advantage of this. The resulting class gave the C++ compiler the freedom to tie itself up in knots, because it was then allowed to convert almost any data type to almost any other. You’d get a tangle of ambiguous data type conversion errors from the most innocent code.

    [12] Don’t ping the server too often! It takes a tiny amount of processing capability to handle a ping, which can add up to a significant amount if done often enough by a client, or even just rarely by enough clients. Also, a lower ping frequency can let your program ride through some types of network faults — a switch reboot, for instance — without needing a reconnect. I like to ping the DB server no more often than half the connection timeout. With the default of 8 hours, then, I’d ping between every 4 and 7 hours.

    mysql++-3.3.0/doc/html/userman/index.html000644 000765 000024 00000040700 14042362131 020770 0ustar00tangentstaff000000 000000 MySQL++ v3.3.0 User Manual

    MySQL++ v3.3.0 User Manual

    Kevin Atkinson

    Sinisa Milivojevic

    Monty Widenius

    Warren Young

    April 28, 2021


    Table of Contents

    1. Introduction
    1.1. A Brief History of MySQL++
    1.2. If You Have Questions...
    2. Overview
    2.1. The Connection Object
    2.2. The Query Object
    2.3. Result Sets
    2.4. Exceptions
    3. Tutorial
    3.1. Running the Examples
    3.2. A Simple Example
    3.3. A More Complicated Example
    3.4. Exceptions
    3.5. Quoting and Escaping
    3.6. C++ vs. SQL Data Types
    3.7. Handling SQL Nulls
    3.8. MySQL++’s Special String Types
    3.9. Dealing with Binary Data
    3.10. Using Transactions
    3.11. Which Query Type to Use?
    3.12. Conditional Result Row Handling
    3.13. Executing Code for Each Row In a Result Set
    3.14. Connection Options
    3.15. Dealing with Connection Timeouts
    3.16. Concurrent Queries on a Connection
    3.17. Getting Field Meta-Information
    4. Template Queries
    4.1. Setting up Template Queries
    4.2. Setting the Parameters at Execution Time
    4.3. Default Parameters
    4.4. Error Handling
    5. Specialized SQL Structures
    5.1. sql_create
    5.2. SSQLS Comparison and Initialization
    5.3. Retrieving data
    5.4. Adding data
    5.5. Modifying data
    5.6. Storing SSQLSes in Associative Containers
    5.7. Changing the Table Name
    5.8. Using an SSQLS in Multiple Modules
    5.9. Harnessing SSQLS Internals
    5.10. Having Different Field Names in C++ and SQL
    5.11. Expanding SSQLS Macros
    5.12. Customizing the SSQLS Mechanism
    5.13. Deriving from an SSQLS
    5.14. SSQLS and BLOB Columns
    5.15. SSQLS and Visual C++ 2003
    6. Using Unicode with MySQL++
    6.1. A Short History of Unicode
    6.2. Unicode in MySQL
    6.3. Unicode on Unixy Systems
    6.4. Unicode on Windows
    6.5. For More Information
    7. Using MySQL++ in a Multithreaded Program
    7.1. Build Issues
    7.2. Connection Management
    7.3. Helper Functions
    7.4. Sharing MySQL++ Data Structures
    8. Configuring MySQL++
    8.1. The Location of the MySQL Development Files
    8.2. The Maximum Number of Fields Allowed
    8.3. Buried MySQL C API Headers
    8.4. Building MySQL++ on Systems Without Complete C99 Support
    9. Using MySQL++ in Your Own Project
    9.1. Visual C++
    9.2. Unixy Platforms: Linux, *BSD, OS X, Cygwin, Solaris...
    9.3. OS X
    9.4. MinGW
    9.5. Eclipse
    10. Incompatible Library Changes
    10.1. API Changes
    10.2. ABI Changes
    11. Licensing
    11.1. GNU Lesser General Public License
    11.2. MySQL++ User Manual License

    1. Introduction

    MySQL++ is a powerful C++ wrapper for MySQL’s C API[1]. Its purpose is to make working with queries as easy as working with STL containers.

    The latest version of MySQL++ can be found at the official web site.

    Support for MySQL++ can be had on the mailing list. That page hosts the mailing list archives, and tells you how you can subscribe.

    1.1. A Brief History of MySQL++

    MySQL++ was created in 1998 by Kevin Atkinson. It started out MySQL-specific, but there were early efforts to try and make it database-independent, and call it SQL++. This is where the old library name “sqlplus” came from. This is also why the old versions prefixed some class names with “Mysql” but not others: the others were supposed to be the database-independent parts. All of Kevin’s releases had pre-1.0 version numbers.

    Then in 1999, MySQL AB took over development of the library. In the beginning, Monty Widenius himself did some of the work, but later gave it over to another MySQL employee, Sinisa Milivojevic. MySQL released versions 1.0 and 1.1, and then Kevin gave over maintenance to Sinisa officially with 1.2, and ceased to have any involvement with the library’s maintenance. Sinisa went on to maintain the library through 1.7.9, released in mid-2001. It seems to be during this time that the dream of multiple-database compatibility died, for obvious reasons.

    With version 1.7.9, MySQL++ went into a period of stasis, lasting over three years. (Perhaps it was the ennui and retrenchment following the collapse of the bubble that caused them to lose interest.) During this time, Sinisa ran the MySQL++ mailing list and supported its users, but made no new releases. Contributed patches were either ignored or put up on the MySQL++ web site for users to try, without any official blessing.

    The biggest barrier to using MySQL++ during this period is that the popular C++ compilers of 2001 weren’t all that compatible with the C++ Standard. As a result, MySQL++ used many nonstandard constructs, to allow for compatibility with older compilers. Each new compiler released in the following years increased compliance, either warning about or rejecting code using pre-Standard constructs. In particular, GCC was emerging from the mess following the EGCS fork during this time. The fork was healed officially in 1999, but there’s always a delay of a few years between the release of a new GCC and widespread adoption. The post-EGCS versions of GCC were only beginning to become popular by 2001, when development on MySQL++ halted. As a result, it became increasingly difficult to get MySQL++ to build cleanly as newer compilers came out. Since MySQL++ uses templates heavily, this affected end user programs as well: MySQL++ code got included directly in your program, so any warnings or errors it caused became your program’s problem.

    As a result, most of the patches contributed to the MySQL++ project during this period were to fix up standards compliance issues. Because no one was bothering to officially test and bless these patches, you ended up with the worst aspects of a bazaar development model: complete freedom of development, but no guiding hand to select from the good stuff and reject the rest. Many of the patches were mutually incompatible. Some would build upon other patches, so you had to apply them in the proper sequence. Others did useful things, but didn’t give a fully functional copy of MySQL++. Figuring out which patch(es) to use was an increasingly frustrating exercise as the years wore on, and newer GCCs became popular.

    In early August of 2004, Warren Young got fed up with this situation and took over. He released 1.7.10 later that month, which did little more than make the code build with GCC 3.3 without warnings. Since then, with a little help from his friends on the Net, MySQL++ has lost a lot of bugs, gained a lot of features, gained a few more bugs, lost them again... MySQL++ is alive and healthy now.

    1.2. If You Have Questions...

    If you want to email someone to ask questions about this library, we greatly prefer that you send mail to the MySQL++ mailing list. The mailing list is archived, so if you have questions, do a search to see if the question has been asked before.

    You may find people’s individual email addresses in various files within the MySQL++ distribution. Please do not send mail to them unless you are sending something that is inherently personal. Not all of the principal developers of MySQL++ are still active in its development; those who have dropped out have no wish to be bugged about MySQL++. Those of us still active in MySQL++ development monitor the mailing list, so you aren’t getting any extra “coverage” by sending messages to additional email addresses.



    [1] The MySQL C API is also known as Connector/C.

    mysql++-3.3.0/doc/html/userman/incorporating.html000644 000765 000024 00000045365 14042362131 022553 0ustar00tangentstaff000000 000000 9. Using MySQL++ in Your Own Project

    9. Using MySQL++ in Your Own Project

    Up to now, this manual has only discussed MySQL++ in conjunction with the example programs that come with the library. This chapter covers the steps you need to take to incorporate MySQL++ into your own projects.

    The first thing you have to do is include mysql++.h in each module that uses MySQL++. In modules that use SSQLS v1, you also need to include ssqls.h.[23]

    At this point, your project probably still won’t compile, and it certainly won’t link. The remaining steps are dependent on the operating system and tools you are using. The rest of this chapter is broken up into several sections, one for each major platform type. You can skip over the sections for platforms you don’t use.

    9.1. Visual C++

    Using MySQL++ in an MFC Project

    If you don’t already have a project set up, open Visual Studio, say File | New | Project, then choose Visual C++ | MFC | MFC Application. Go through the wizard setting up the project as you see fit.

    Once you have your project open, right click on your top-level executable in the Solution Explorer, choose Properties, and make the following changes. (Where it doesn’t specify Debug or Release, make the same change to both configurations.)

    • Append the following to C/C++ | General | Additional Include Directories: C:\Program Files\MySQL\MySQL Connector C 6.1\include, C:\mysql++\include

    • Under C/C++ | Code Generation change “Runtime Library” to “Multi-threaded Debug DLL (/MDd)” for the Debug configuration. For the Release configuration, make it “Multi-threaded DLL (/MD)”.

    • For both Release and Debug builds, append the following to Linker | General | Additional Library Directories: C:\Program Files\MySQL\MySQL Connector C 6.1\lib, C:\mysql++\lib

      Connector/C does include debug libraries, but you will probably not need to use them.

    • Under Linker | Input add the following to “Additional Dependencies” for the Debug configuration: libmysql.lib wsock32.lib mysqlpp_d.lib

      ...and then for the Release configuration: libmysql.lib wsock32.lib mysqlpp.lib

      This difference is because MySQL++’s Debug DLL and import library have a _d suffix so you can have both in the same directory without conflicts.

    You may want to study examples\vstudio\mfc\mfc.vcproj to see this in action. Note that some of the paths will be different, because it can use relative paths for mysqlpp.dll.

    Using MySQL++ in a Windows Forms C++/CLI Project

    Before you start work on getting MySQL++ working with your own program, you need to make some changes to the MySQL++ build settings. Open mysqlpp.sln, then right-click on the mysqlpp target and select Properties. Make the following changes for both the Debug and Release configurations:

    • Under Configuration Properties | General, change “Common Language Runtime support” to the /clr setting.

    • Under C/C++ | Code Generation, change “Enable C++ Exceptions” from “Yes (/EHsc)” to “Yes With SEH Exceptions (/EHa)”

    If you have already built MySQL++, be sure to perform a complete rebuild after changing these options. The compiler will emit several C4835 warnings after making those changes, which are harmless when using the DLL with a C++/CLI program, but which warn of real problems when using it with unmanaged C++. This is why MySQL++’s Windows installer (install.hta) offers the option to install the CLR version into a separate directory; use it if you need both managed and unmanaged versions installed!

    For the same reason, you might give some thought about where you install mysqlpp.dll on your end user’s machines when distributing your program. My recommendation is to install it in the same directory as the .exe file that uses it, rather than installing into a system directory where it could conflict with a mysqlpp.dll built with different settings.

    Once you have MySQL++ built with CLR support, open your program’s project. If you don’t already have a project set up, open Visual Studio, say File | New | Project, then choose Visual C++ | CLR | Windows Forms Application. Go through the wizard setting up the project as you see fit.

    The configuration process isn’t much different from that for an MFC project, so go through the list above first. Then, make the following changes particular to .NET and C++/CLI:

    • Under Configuration Properties | General change the setting from /clr:pure to /clr. (You need mixed assembly support to allow a C++/CLI program to use a plain C++ library like MySQL++.)

    • For the Linker | Input settings, you don’t need wsock32.lib. The mere fact that you’re using .NET takes care of that dependency for you.

    In the MFC instructions above, it said that you need to build it using the Multi-threaded DLL version of the C++ Runtime Library. That’s not strictly true for MFC, but it’s an absolute requirement for C++/CLI. See the Remarks in the MSDN article on the /clr switch for details.

    You may want to study examples\vstudio\wforms\wforms.vcproj to see all this in action. Note that some of the paths will be different, because it can use relative paths for mysqlpp_d.dll and mysqlpp.dll.

    9.2. Unixy Platforms: Linux, *BSD, OS X, Cygwin, Solaris...

    There are lots of ways to build programs on Unixy platforms. We’ll cover just the most generic way here, Makefiles. We’ll use a very simple example so it’s clear how to translate this to more sophisticated build systems such as GNU Autotools or Bakefile.

    “Hello, world!” for MySQL++ might look something like this:

    #include <mysql++.h>
    
    int main()
    {
        mysqlpp::String greeting("Hello, world!");
        std::cout << greeting << std::endl;
        return 0;
    }
    

    Here’s a Makefile for building that program:

    CXXFLAGS := -I/usr/include/mysql -I/usr/local/include/mysql++
    LDFLAGS := -L/usr/local/lib
    LDLIBS := -lmysqlpp -lmysqlclient
    EXECUTABLE := hello
    
    all: $(EXECUTABLE)
    
    clean: 
        rm -f $(EXECUTABLE) *.o
    

    The *FLAGS lines are where all of the assumptions about file and path names are laid out. Probably at least one of these assumptions isn’t true for your system, and so will require changing.

    The trickiest line is the LDLIBS one. MySQL++ programs need to get built against both the MySQL and MySQL++ libraries, because MySQL++ is built on top of the MySQL C API library[24] If you’re building a threaded program, use -lmysqlclient_r instead of -lmysqlclient here. (See Section 7, “Using MySQL++ in a Multithreaded Program” for more details on building thread-aware programs.)

    On some systems, the order of libraries in the LDLIBS line is important: these linkers collect symbols from right to left, so the rightmost library needs to be the most generic. In this example, MySQL++ depends on MySQL, so the MySQL C API library is rightmost.

    You might need to add more libraries to the LDLIBS line. -lnsl, -lz and -lm are common. If you study how MySQL++ itself gets built on your system, you can see what it uses, and emulate that.

    You may be wondering why we have used both LDLIBS and LDFLAGS here. Some Makefiles you have seen collect both types of flags in a single variable. That can work if the variable is used in the right place in the link command. However, this particular Makefile is made with GNU make in mind, and uses its standard rules implicitly. Those rules are designed to use these two variables separately like this. If you were writing your own compilation rules, you could write them in such a way that you didn’t have to do this.

    Beyond that, we have a pretty vanilla Makefile, thanks in large part to the fact that the default make rules are fine for such a simple program.

    9.3. OS X

    Makefiles

    The generic Makefile instructions above cover most of what you need to know about using Makefiles on OS X.

    One thing that may trip you up on OS X is that it uses an uncommon dynamic linkage system. The easiest way to cope with this is to link your executables with the compiler, rather than call ld directly.

    Another tricky bit on OS X is the concept of Universal binaries. See README-Mac-OS-X.txt for details on building a Universal version of the MySQL++ library, if you need one. By default, you only get a version tuned for the system type you build it on.

    Xcode

    I have no information on how to incorporate MySQL++ in an Xcode project. Send a message to the MySQL++ mailing list if you can help out here.

    9.4. MinGW

    Makefiles

    The generic Makefile instructions above apply to MinGW’s version of GNU make as well. You will have some differences due to the platform, so here’s the adjusted Makefile:

    SHELL := $(COMSPEC)
    MYSQL_DIR := "c:/Program Files/MySQL/MySQL Connector C 6.1"
    CXXFLAGS := -I$(MYSQL_DIR)/include -Ic:/MySQL++/include
    LDFLAGS := -L$(MYSQL_DIR)/lib -Lc:/MySQL++/lib/MinGW
    LDLIBS := -lmysql -lmysqlpp
    EXECUTABLE := hello
    
    all: $(EXECUTABLE)
    
    clean: 
    	del $(EXECUTABLE)
    

    Note that I’ve used del instead of rm in the clean target. In the past, at least, MinGW make had some funny rules about whether commands in target rules would get run with sh.exe or with cmd.exe. I can’t currently get my installation of MinGW to do anything but use sh.exe by default, but that may be because I have Cygwin installed, which provides sh.exe. This explains the first line in the file, which overrides the default shell with cmd.exe, purely to get consistent behavior across platforms. If you knew all your platforms would have a better shell, you’d probably want to use that instead.

    Note the use of forward slashes in the path to the MySQL Connector/C development files. GNU make uses the backslash as an escape character, so you’d have to double them if you’re unwilling to use forward slashes.

    Third-Party MinGW IDEs (Dev-C++, Code::Blocks...)

    I have no information on how to do this. We’ve received reports on the mailing list from people that have made it work, but no specifics on what all needs to be done. The Makefile discussion above should give you some hints.

    9.5. Eclipse

    As far as I can tell, the simplest way to build a C++ project with Eclipse is to set up a Makefile for it as described above, then add an external run configuration for your local make tool. Get the project building from the command line with make, then go to Run | External Tools | Open External Tools Dialog and add a new launch configuration.

    For example, on my OS X system I use /usr/bin/gnumake for the program location and pick the project root with the Browse Workspace button to set the working directory.



    [23] MySQL++ has many header files, but the only one that isn’t intertwined with the rest is ssqls.h. mysql++.h brings in all of the others in the correct order. Some have tried to speed their build times by finding a subset of MySQL++ headers to include, but mysql++.h already does as much of this as is practical. MySQL++’s monolithic nature rules out finding a true subset of the library headers.

    [24] The MySQL C API library is most commonly called libmysqlclient on Unixy systems, though it is also known as Connector/C.

    mysql++-3.3.0/doc/html/userman/tquery.html000644 000765 000024 00000030306 14042362131 021213 0ustar00tangentstaff000000 000000 4. Template Queries

    4. Template Queries

    Another powerful feature of MySQL++ is being able to set up template queries. These are kind of like C’s printf() facility: you give MySQL++ a string containing the fixed parts of the query and placeholders for the variable parts, and you can later substitute in values into those placeholders.

    The following program demonstrates how to use this feature. This is examples/tquery1.cpp:

    #include "cmdline.h"
    #include "printdata.h"
    
    #include <iostream>
    
    using namespace std;
    
    int
    main(int argc, char *argv[])
    {
        // Get database access parameters from command line
        mysqlpp::examples::CommandLine cmdline(argc, argv);
        if (!cmdline) {
            return 1;
        }
    
        try {
            // Establish the connection to the database server.
            mysqlpp::Connection con(mysqlpp::examples::db_name,
                    cmdline.server(), cmdline.user(), cmdline.pass());
    
            // Build a template query to retrieve a stock item given by
            // item name.
            mysqlpp::Query query = con.query(
                    "select * from stock where item = %0q");
            query.parse();
    
            // Retrieve an item added by resetdb; it won't be there if
            // tquery* or ssqls3 is run since resetdb.
            mysqlpp::StoreQueryResult res1 = query.store("Nürnberger Brats");
            if (res1.empty()) {
                throw mysqlpp::BadQuery("UTF-8 bratwurst item not found in "
                        "table, run resetdb");
            }
    
            // Replace the proper German name with a 7-bit ASCII
            // approximation using a different template query.
            query.reset();      // forget previous template query data
            query << "update stock set item = %0q where item = %1q";
            query.parse();
            mysqlpp::SimpleResult res2 = query.execute("Nuerenberger Bratwurst",
                    res1[0][0].c_str());
    
            // Print the new table contents.
            print_stock_table(query);
        }
        catch (const mysqlpp::BadQuery& er) {
            // Handle any query errors
            cerr << "Query error: " << er.what() << endl;
            return -1;
        }
        catch (const mysqlpp::BadConversion& er) {
            // Handle bad conversions
            cerr << "Conversion error: " << er.what() << endl <<
                    "\tretrieved data size: " << er.retrieved <<
                    ", actual size: " << er.actual_size << endl;
            return -1;
        }
        catch (const mysqlpp::Exception& er) {
            // Catch-all for any other MySQL++ exceptions
            cerr << "Error: " << er.what() << endl;
            return -1;
        }
    
        return 0;
    }
    

    The line just before the call to query.parse() sets the template, and the parse call puts it into effect. From that point on, you can re-use this query by calling any of several Query member functions that accept query template parameters. In this example, we’re using Query::execute().

    Let’s dig into this feature a little deeper.

    4.1. Setting up Template Queries

    To set up a template query, you simply insert it into the Query object, using numbered placeholders wherever you want to be able to change the query. Then, you call the parse() function to tell the Query object that the query string is a template query, and it needs to parse it:

    query << "select (%2:field1, %3:field2) from stock where %1:wheref = %0q:what";
    query.parse();

    The format of the placeholder is:

    %###(modifier)(:name)(:)

    Where “###” is a number up to three digits. It is the order of parameters given to a SQLQueryParms object, starting from 0.

    “modifier” can be any one of the following:

    %Print an actual “%”
    ""Don’t quote or escape no matter what.
    qThis will escape the item using the MySQL C API function mysql_escape_string() and add single quotes around it as necessary, depending on the type of the value you use.
    QQuote but don’t escape based on the same rules as for “q”. This can save a bit of processing time if you know the strings will never need quoting

    “:name” is for an optional name which aids in filling SQLQueryParms. Name can contain any alpha-numeric characters or the underscore. You can have a trailing colon, which will be ignored. If you need to represent an actual colon after the name, follow the name with two colons. The first one will end the name and the second one won’t be processed.

    4.2. Setting the Parameters at Execution Time

    To specify the parameters when you want to execute a query simply use Query::store(const SQLString &parm0, [..., const SQLString &parm11]). This type of multiple overload also exists for Query::storein(), Query::use() and Query::execute(). “parm0” corresponds to the first parameter, etc. You may specify up to 25 parameters. For example:

    StoreQueryResult res = query.store("Dinner Rolls", "item", "item", "price")

    with the template query provided above would produce:

    select (item, price) from stock where item = "Dinner Rolls"

    The reason we didn’t put the template parameters in numeric order...

    select (%0:field1, %1:field2) from stock where %2:wheref = %3q:what

    ...will become apparent shortly.

    4.3. Default Parameters

    The template query mechanism allows you to set default parameter values. You simply assign a value for the parameter to the appropriate position in the Query::template_defaults array. You can refer to the parameters either by position or by name:

    query.template_defaults[1] = "item";
    query.template_defaults["wheref"] = "item";

    Both do the same thing.

    This mechanism works much like C++’s default function parameter mechanism: if you set defaults for the parameters at the end of the list, you can call one of Query’s query execution methods without passing all of the values. If the query takes four parameters and you’ve set defaults for the last three, you can execute the query using as little as just one explicit parameter.

    Now you can see why we numbered the template query parameters the way we did a few sections earlier. We ordered them so that the ones less likely to change have higher numbers, so we don’t always have to pass them. We can just give them defaults and take those defaults when applicable. This is most useful when some parameters in a template query vary less often than other parameters. For example:

    query.template_defaults["field1"] = "item"; 
    query.template_defaults["field2"] = "price"; 
    StoreQueryResult res1 = query.store("Hamburger Buns", "item"); 
    StoreQueryResult res2 = query.store(1.25, "price"); 

    This stores the result of the following queries in res1 and res2, respectively:

    select (item, price) from stock where item = "Hamburger Buns"
    select (item, price) from stock where price = 1.25

    Default parameters are useful in this example because we have two queries to issue, and parameters 2 and 3 remain the same for both, while parameters 0 and 1 vary.

    Some have been tempted into using this mechanism as a way to set all of the template parameters in a query:

    query.template_defaults["what"] = "Hamburger Buns";
    query.template_defaults["wheref"] = "item";
    query.template_defaults["field1"] = "item"; 
    query.template_defaults["field2"] = "price"; 
    StoreQueryResult res1 = query.store();

    This can work, but it is not designed to. In fact, it’s known to fail horribly in one common case. You will not get sympathy if you complain on the mailing list about it not working. If your code doesn’t actively reuse at least one of the parameters in subsequent queries, you’re abusing MySQL++, and it is likely to take its revenge on you.

    4.4. Error Handling

    If for some reason you did not specify all the parameters when executing the query and the remaining parameters do not have their values set via Query::template_defaults, the query object will throw a BadParamCount object. If this happens, you can get an explanation of what happened by calling BadParamCount::what(), like so:

    query.template_defaults["field1"] = "item"; 
    query.template_defaults["field2"] = "price"; 
    StoreQueryResult res = query.store(1.25); 

    This would throw BadParamCount because the wheref is not specified.

    In theory, this exception should never be thrown. If the exception is thrown it probably a logic error in your program.

    mysql++-3.3.0/doc/html/userman/configuration.html000644 000765 000024 00000027745 14042362131 022546 0ustar00tangentstaff000000 000000 8. Configuring MySQL++

    8. Configuring MySQL++

    The default configuration of MySQL++ is suitable for most purposes, but there are a few things you can change to make it meet special needs.

    8.1. The Location of the MySQL Development Files

    MySQL++ is built on top of the MySQL C API. (Now called Connector/C.) MySQL++ relies on this low-level library for all communication with the database server. Consequently, the build process for MySQL++ may fail if it can’t find the C API headers and library.

    On platforms that use Autoconf[19], the configure script can usually figure out the location of the C API development files by itself[20] It simply tries a bunch of common installation locations until it finds one that works. If your MySQL server was installed in a nonstandard location, you will have to tell the configure script where these files are with some combination of the --with-mysql, --with-mysql-include, and --with-mysql-lib flags. See README-Unix.txt for details.

    No other platform allows this sort of auto-discovery, so the build files for these platforms simply hard-code the default installation location for the current GA version of Connector/C at the time that version of MySQL++ was released. For example, the Visual C++ project files currently assume MySQL is in c:\Program Files\MySQL\MySQL Server 5.1. If you’re using some other release of MySQL or you installed it somewhere else, you will have to modify the build files. How you do this, exactly, varies based on platform and what tools you have on hand. See README-Visual-C++.txt, README-MinGW.txt, or README-Mac-OS-X.txt, as appropriate.

    8.2. The Maximum Number of Fields Allowed

    MySQL++ offers two ways to automatically build SQL queries at run time: Template Queries and SSQLS. There’s a limit on the number of fields these mechanisms support, defaulting to 25 fields in the official MySQL++ packages.[21] The files embodying these limits are lib/querydef.h and lib/ssqls.h, each generated by Perl scripts of the same name but with a .pl extension.

    The default querydef.h is small and its size only increases linearly with respect to maximum field count.

    ssqls.h is a totally different story. The default 25 field limit makes ssqls.pl generate an ssqls.h over 1 MB. Worse, the field limit to file size relation is quadratic.[22] This has a number of bad effects:

    • Generating header files to support more fields than you actually require is a waste of space and bandwidth.

    • Some compilers have arbitrary limits on the size of macros they’re able to parse. Exceeding these limits usually causes the compiler to misbehave badly, rather than fail gracefully.

    • Because it increases the size of two key files used in building MySQL++ itself and programs built on it, it increases compile times significantly. One test I did here showed a tripling of compile time from quadrupling the field limit.

    • More than 25 fields in a table is a good sign of a bad database design, most likely a denormalization problem.

    The default limits try to mitigate against all of these factors while still being high enough to be useful with most DB designs.

    If you’re building MySQL++ from source on a platform that uses Autoconf, the easiest way to change these limits is at configuration time:

    ./configure --with-field-limit=50

    That causes the configuration script to pass the -f flag to the two Perl scripts named above, overriding the default of 25 fields. Obviously you need a Perl interpreter on the system for this to work, but Perl is usually installed by default on systems MySQL++ supports via Autoconf.

    On all other platforms, you’ll have to give the -f flag to these scripts yourself. This may require installing Perl and putting it in the command path first. Having done that, you can do something like this to raise the limits:

    cd lib
    perl ssqls.pl -f 50
    perl querydef.pl -f 50

    Note the need to run these commands within the lib subdirectory of the MySQL++ source tree. (This is done for you automatically on systems where you are able to use the Autoconf method.)

    8.3. Buried MySQL C API Headers

    It’s common these days on Unixy systems to install the MySQL C API headers in a mysql directory under some common include directory. If the C API headers are in /usr/include/mysql, we say they are “buried” underneath the system’s main include directory, /usr/include. Since the MySQL++ headers depend on these C API headers, it can be useful for MySQL++ to know this fact.

    When MySQL++ includes one of the C API headers, it normally does so in the obvious way:

    #include <mysql.h>
    

    But, if you define the MYSQLPP_MYSQL_HEADERS_BURIED macro, it switches to this style:

    #include <mysql/mysql.h>
    

    In common situations like the /usr/include/mysql one, this simplifies the include path options you pass to your compiler.

    8.4. Building MySQL++ on Systems Without Complete C99 Support

    MySQL++ uses the C99 header stdint.h for portable fixed-size integer typedefs where possible. The C99 extensions aren’t yet officially part of the C++ Standard, so there are still some C++ compilers that don’t offer this header. MySQL++ works around the lack of this header where it knows it needs to, but your platform might not be recognized, causing the build to break. If this happens, you can define the MYSQLPP_NO_STDINT_H macro to make MySQL++ use its best guess for suitable integer types instead of relying on stdint.h.

    MySQL++ also uses C99’s long long data type where available. MySQL++ has workarounds for platforms where this is known not to be available, but if you get errors in common.h about this type, you can define the macro MYSQLPP_NO_LONG_LONGS to make MySQL++ fall back to portable constructs.



    [19] Linux, Solaris, the BSDs, Mac OS X command line (as opposed to the Xcode IDE), Cygwin... Basically, Unix or anything that works like it.

    [20] I don’t say “Connector/C” here because the name change generally hasn’t percolated out to Unixy systems. It’s more commonly used on Windows systems, since the separate Connector/C download lets them avoid installing a MySQL server just to get development headers and libraries.

    [21] If you’re using a third-party MySQL++ package, its maintainer may have increased these field counts so the resulting headers more closely approach the size limit of the compiler the package was built with. In that case, you can look at the top of each generated header file to find out how many fields each supports.

    [22] The file size equation, for you amateur mathematicians out there, is Nlines = 18.5f2 + 454.5f + 196.4, where f is the field count.

    mysql++-3.3.0/doc/html/userman/licenses.html000644 000765 000024 00000105703 14042362131 021473 0ustar00tangentstaff000000 000000 11. Licensing

    11. Licensing

    The primary copyright holders on the MySQL++ library and its documentation are Kevin Atkinson (1998), MySQL AB (1999 through 2001) and Educational Technology Resources, Inc. (2004 through the date of this writing). There are other contributors, who also retain copyrights on their additions; see the ChangeLog.md file in the MySQL++ distribution tarball for details.

    The MySQL++ library and its Reference Manual are released under the GNU Lesser General Public License (LGPL), reproduced below.

    The MySQL++ User Manual — excepting some example code from the library reproduced within it — is offered under a license closely based on the Linux Documentation Project License (LDPL) v2.0, included below. (The MySQL++ documentation isn’t actually part of the Linux Documentation Project, so the main changes are to LDP-related language. Also, generic language such as “author’s (or authors’)” has been replaced with specific language, because the license applies to only this one document.)

    These licenses basically state that you are free to use, distribute and modify these works, whether for personal or commercial purposes, as long as you grant the same rights to those you distribute the works to, whether you changed them or not. See the licenses below for full details.

    11.1. GNU Lesser General Public License

    Version 2.1, February 1999

    Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

    [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.]

    Preamble

    The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.

    This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below.

    When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things.

    To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it.

    For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights.

    We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library.

    To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author’s reputation will not be affected by problems that might be introduced by others.

    Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license.

    Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs.

    When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library.

    We call this license the “Lesser” General Public License because it does Less to protect the user’s freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances.

    For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License.

    In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system.

    Although the Lesser General Public License is Less protective of the users’ freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library.

    The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a “work based on the library” and a “work that uses the library”. The former contains code derived from the library, whereas the latter must be combined with the library in order to run.

    GNU LESSER GENERAL PUBLIC LICENSE

    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

    0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called “this License”). Each licensee is addressed as “you”.

    A “library” means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.

    The “Library”, below, refers to any such software library or work which has been distributed under these terms. A “work based on the Library” means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term “modification”.)

    “Source code” for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.

    Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.

    1. You may copy and distribute verbatim copies of the Library’s complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.

    You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.

    2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:

    a) The modified work must itself be a software library.

    b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.

    c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.

    d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.

    (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)

    These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

    Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.

    In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

    3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.

    Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.

    This option is useful when you wish to copy part of the code of the Library into a program that is not a library.

    4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.

    If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.

    5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a “work that uses the Library”. Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.

    However, linking a “work that uses the Library” with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a “work that uses the library”. The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.

    When a “work that uses the Library” uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.

    If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)

    Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.

    6. As an exception to the Sections above, you may also combine or link a “work that uses the Library” with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer’s own use and reverse engineering for debugging such modifications.

    You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:

    a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable “work that uses the Library”, as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)

    b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user’s computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.

    c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.

    d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.

    e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy.

    For an executable, the required form of the “work that uses the Library” must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

    It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.

    7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:

    a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.

    b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.

    8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

    9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.

    10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients’ exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.

    11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.

    If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.

    It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.

    This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.

    12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.

    13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

    Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and “any later version”, you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.

    14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.

    NO WARRANTY

    15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

    16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

    END OF TERMS AND CONDITIONS

    How to Apply These Terms to Your New Libraries

    If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License).

    To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found.

    <one line to give the library’s name and a brief idea of what it does.>

    Copyright © <year> <name of author>

    This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

    Also add information on how to contact you by electronic and paper mail.

    You should also get your employer (if you work as a programmer) or your school, if any, to sign a “copyright disclaimer” for the library, if necessary. Here is a sample; alter the names:

    Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker.

    <signature of Ty Coon>, 1 April 1990

    Ty Coon, President of Vice

    That’s all there is to it!

    11.2. MySQL++ User Manual License

    I. COPYRIGHT

    The copyright to the MySQL++ User Manual is owned by its authors.

    II. LICENSE

    The MySQL++ User Manual may be reproduced and distributed in whole or in part, in any medium physical or electronic, provided that this license notice is displayed in the reproduction. Commercial redistribution is permitted and encouraged. Thirty days advance notice via email to the authors of redistribution is appreciated, to give the authors time to provide updated documents.

    A. REQUIREMENTS OF MODIFIED WORKS

    All modified documents, including translations, anthologies, and partial documents, must meet the following requirements:

    1. The modified version must be labeled as such.

    2. The person making the modifications must be identified.

    3. Acknowledgement of the original author must be retained.

    4. The location of the original unmodified document be identified.

    5. The original authors’ names may not be used to assert or imply endorsement of the resulting document without the original authors’ permission.

    In addition it is requested that:

    1. The modifications (including deletions) be noted.

    2. The authors be notified by email of the modification in advance of redistribution, if an email address is provided in the document.

    Mere aggregation of the MySQL++ User Manual with other documents or programs on the same media shall not cause this license to apply to those other works.

    All translations, derivative documents, or modified documents that incorporate the MySQL++ User Manual may not have more restrictive license terms than these, except that you may require distributors to make the resulting document available in source format.

    mysql++-3.3.0/doc/html/userman/overview.html000644 000765 000024 00000027417 14042362131 021541 0ustar00tangentstaff000000 000000 2. Overview

    2. Overview

    MySQL++ has a lot of complexity and power to cope with the variety of ways people use databases, but at bottom it doesn’t work all that differently than other database access APIs. The usage pattern looks like this:

    1. Open the connection

    2. Form and execute the query

    3. If successful, iterate through the result set

    4. Else, deal with errors

    Each of these steps corresponds to a MySQL++ class or class hierarchy. An overview of each follows.

    2.1. The Connection Object

    A Connection object manages the connection to the MySQL server. You need at least one of these objects to do anything. Because the other MySQL++ objects your program will use often depend (at least indirectly) on the Connection instance, the Connection object needs to live at least as long as all other MySQL++ objects in your program.

    MySQL supports many different types of data connection between the client and the server: TCP/IP, Unix domain sockets, and Windows named pipes. The generic Connection class supports all of these, figuring out which one you mean based on the parameters you pass to Connection::connect(). But if you know in advance that your program only needs one particular connection type, there are subclasses with simpler interfaces. For example, there’s TCPConnection if you know your program will always use a networked database server.

    2.2. The Query Object

    Most often, you create SQL queries using a Query object created by the Connection object.

    Query acts as a standard C++ output stream, so you can write data to it like you would to std::cout or std::ostringstream. This is the most C++ish way MySQL++ provides for building up a query string. The library includes stream manipulators that are type-aware so it’s easy to build up syntactically-correct SQL.

    Query also has a feature called Template Queries which work something like C’s printf() function: you set up a fixed query string with tags inside that indicate where to insert the variable parts. If you have multiple queries that are structurally similar, you simply set up one template query, and use that in the various locations of your program.

    A third method for building queries is to use Query with SSQLS. This feature lets you create C++ structures that mirror your database schemas. These in turn give Query the information it needs to build many common SQL queries for you. It can INSERT, REPLACE and UPDATE rows in a table given the data in SSQLS form. It can also generate SELECT * FROM SomeTable queries and store the results as an STL collection of SSQLSes.

    2.3. Result Sets

    The field data in a result set are stored in a special std::string-like class called String. This class has conversion operators that let you automatically convert these objects to any of the basic C data types. Additionally, MySQL++ defines classes like DateTime, which you can initialize from a MySQL DATETIME string. These automatic conversions are protected against bad conversions, and can either set a warning flag or throw an exception, depending on how you set the library up.

    As for the result sets as a whole, MySQL++ has a number of different ways of representing them:

    Queries That Do Not Return Data

    Not all SQL queries return data. An example is CREATE TABLE. For these types of queries, there is a special result type (SimpleResult) that simply reports the state resulting from the query: whether the query was successful, how many rows it impacted (if any), etc.

    Queries That Return Data: MySQL++ Data Structures

    The most direct way to retrieve a result set is to use Query::store(). This returns a StoreQueryResult object, which derives from std::vector<mysqlpp::Row>, making it a random-access container of Rows. In turn, each Row object is like a std::vector of String objects, one for each field in the result set. Therefore, you can treat StoreQueryResult as a two-dimensional array: you can get the 5th field on the 2nd row by simply saying result[1][4]. You can also access row elements by field name, like this: result[2]["price"].

    A less direct way of working with query results is to use Query::use(), which returns a UseQueryResult object. This class acts like an STL input iterator rather than a std::vector: you walk through your result set processing one row at a time, always going forward. You can’t seek around in the result set, and you can’t know how many results are in the set until you find the end. In payment for that inconvenience, you get better memory efficiency, because the entire result set doesn’t need to be stored in RAM. This is very useful when you need large result sets.

    Queries That Return Data: Specialized SQL Structures

    Accessing results through MySQL++’s data structures is a pretty low level of abstraction. It’s better than using the MySQL C API, but not by much. You can elevate things a little closer to the level of the problem space by using the SSQLS feature. This lets you define C++ structures that match the table structures in your database schema. In addition, it’s easy to use SSQLSes with regular STL containers (and thus, algorithms) so you don’t have to deal with the quirks of MySQL++’s data structures.

    The advantage of this method is that your program will require very little embedded SQL code. You can simply execute a query, and receive your results as C++ data structures, which can be accessed just as you would any other structure. The results can be accessed through the Row object, or you can ask the library to dump the results into an STL container — sequential or set-associative, it doesn’t matter — for you. Consider this:

    vector<stock> v;
    query << "SELECT * FROM stock";
    query.storein(v);
    for (vector<stock>::iterator it = v.begin(); it != v.end(); ++it) {
      cout << "Price: " << it->price << endl;
    }

    Isn’t that slick?

    If you don’t want to create SSQLSes to match your table structures, as of MySQL++ v3 you can now use Row here instead:

    vector<mysqlpp::Row> v;
    query << "SELECT * FROM stock";
    query.storein(v);
    for (vector<mysqlpp::Row>::iterator it = v.begin(); it != v.end(); ++it) {
      cout << "Price: " << it->at("price") << endl;
    }

    It lacks a certain syntactic elegance, but it has its uses.

    2.4. Exceptions

    By default, the library throws exceptions whenever it encounters an error. You can ask the library to set an error flag instead, if you like, but the exceptions carry more information. Not only do they include a string member telling you why the exception was thrown, there are several exception types, so you can distinguish between different error types within a single try block.

    mysql++-3.3.0/doc/html/userman/unicode.html000644 000765 000024 00000032465 14042362131 021320 0ustar00tangentstaff000000 000000 6. Using Unicode with MySQL++

    6. Using Unicode with MySQL++

    6.1. A Short History of Unicode

    ...with a focus on relevance to MySQL++

    In the old days, computer operating systems only dealt with 8-bit character sets. That only allows for 256 possible characters, but the modern Western languages have more characters combined than that alone. Add in all the other languages of the world plus the various symbols people use in writing, and you have a real mess!

    Since no standards body held sway over things like international character encoding in the early days of computing, many different character sets were invented. These character sets weren’t even standardized between operating systems, so heaven help you if you needed to move localized Greek text on a DOS box to a Russian Macintosh! The only way we got any international communication done at all was to build standards on top of the common 7-bit ASCII subset. Either people used approximations like a plain “c” instead of the French “ç”, or they invented things like HTML entities (“&ccedil;” in this case) to encode these additional characters using only 7-bit ASCII.

    Unicode solves this problem. It encodes every character used for writing in the world, using up to 4 bytes per character. Before emoji became popular, the subset covering the most economically valuable cases fit into the lower 65536 code points, so you could encode most texts using only two bytes per character. Many nominally Unicode-aware programs only support this subset, called the Basic Multilingual Plane, or BMP.

    Unfortunately, Unicode was invented about two decades too late for Unix and C. Those decades of legacy created an immense inertia preventing a widespread move away from 8-bit characters. MySQL and C++ come out of these older traditions, and so they share the same practical limitations. MySQL++ doesn’t have any code in it for Unicode conversions, and it likely never will; it just passes data along unchanged from the underlying MySQL C API, so you still need to be aware of these underlying issues.

    During the development of the Plan 9 operating system (a kind of successor to Unix) Ken Thompson invented the UTF-8 encoding. UTF-8 is a superset of 7-bit ASCII and is compatible with C strings, since it doesn’t use 0 bytes anywhere as multi-byte Unicode encodings do. As a result, many programs that deal in text will cope with UTF-8 data even though they have no explicit support for UTF-8. Follow the last link above to see how the design of UTF-8 allows this.

    6.2. Unicode in MySQL

    Since MySQL comes out of the Unix world, and it predates the widespread use of UTF-8 in Unix, the early versinos of MySQL had no explicit support for Unicode. From the start, you could store raw UTF-8 strings, but it wouldn’t know how to do things like sort a column of UTF-8 strings.

    MySQL 4.1 added the first explicit support for Unicode. This version of MySQL supported only the BMP, meaning that if you told it to expect strings to be in UTF-8, it could only use up to 3 bytes per character.

    MySQL 5.5 was the first release to completely support Unicode. Because the BMP-only Unicode support had been in the wild for about 6 years by that point, and changing to the new character set requires a table rebuild, the new one was called “utf8mb4” rather than change the longstanding meaning of “utf8” in MySQL. This release also added a new alias for the old UTF-8 subset character set, “utf8mb3.”

    Finally, in MySQL 8.0, “utf8mb4” became the default character set. For backwards compatibility, “utf8” remains an alias for “utf8mb3.”

    As of MySQL++ 3.2.4, we’ve defined the MYSQLPP_UTF8_CS and MYSQLPP_UTF8_COL macros which expand to “utf8mb4” and “utf8mb4_general_ci” when you build MySQL++ against MySQL 5.5 and newer and to “utf8” and “utf8_general_ci” otherwise. We use these macros in our resetdb example; you're welcome to use them in your code as well.

    6.3. Unicode on Unixy Systems

    Linux and Unix have system-wide UTF-8 support these days. If your operating system is of 2001 or newer vintage, it probably has such support.

    On such a system, the terminal I/O code understands UTF-8 encoded data, so your program doesn’t require any special code to correctly display a UTF-8 string. If you aren’t sure whether your system supports UTF-8 natively, just run the simple1 example: if the first item has two high-ASCII characters in place of the “ü” in “Nürnberger Brats”, you know it’s not handling UTF-8.

    If your Unix doesn’t support UTF-8 natively, it likely doesn’t support any form of Unicode at all, for the historical reasons I gave above. Therefore, you will have to convert the UTF-8 data to the local 8-bit character set. The standard Unix function iconv() can help here. If your system doesn’t have the iconv() facility, there is a free implementation available from the GNU Project. Another library you might check out is IBM’s ICU. This is rather heavy-weight, so if you just need basic conversions, iconv() should suffice.

    6.4. Unicode on Windows

    Each Windows API function that takes a string actually comes in two versions. One version supports only 1-byte “ANSI” characters (a superset of ASCII), so they end in 'A'. Windows also supports the 2-byte subset of Unicode called UCS-2[17]. Some call these “wide” characters, so the other set of functions end in 'W'. The MessageBox() API, for instance, is actually a macro, not a real function. If you define the UNICODE macro when building your program, the MessageBox() macro evaluates to MessageBoxW(); otherwise, to MessageBoxA().

    Since MySQL uses the UTF-8 Unicode encoding and Windows uses UCS-2, you must convert data when passing text between MySQL++ and the Windows API. Since there’s no point in trying for portability — no other OS I’m aware of uses UCS-2 — you might as well use platform-specific functions to do this translation. Since version 2.2.2, MySQL++ ships with two Visual C++ specific examples showing how to do this in a GUI program. (In earlier versions of MySQL++, we did Unicode conversion in the console mode programs, but this was unrealistic.)

    How you handle Unicode data depends on whether you’re using the native Windows API, or the newer .NET API. First, the native case:

    // Convert a C string in UTF-8 format to UCS-2 format.
    void ToUCS2(LPTSTR pcOut, int nOutLen, const char* kpcIn)
    {
      MultiByteToWideChar(CP_UTF8, 0, kpcIn, -1, pcOut, nOutLen);
    }
    
    // Convert a UCS-2 string to C string in UTF-8 format.
    void ToUTF8(char* pcOut, int nOutLen, LPCWSTR kpcIn)
    {
      WideCharToMultiByte(CP_UTF8, 0, kpcIn, -1, pcOut, nOutLen, 0, 0);
    }

    These functions leave out some important error checking, so see examples/vstudio/mfc/mfc_dlg.cpp for the complete version.

    If you’re building a .NET application (such as, perhaps, because you’re using Windows Forms), it’s better to use the .NET libraries for this:

    // Convert a C string in UTF-8 format to a .NET String in UCS-2 format.
    String^ ToUCS2(const char* utf8)
    {
      return gcnew String(utf8, 0, strlen(utf8), System::Text::Encoding::UTF8);
    }
    
    // Convert a .NET String in UCS-2 format to a C string in UTF-8 format.
    System::Void ToUTF8(char* pcOut, int nOutLen, String^ sIn)
    {
      array<Byte>^ bytes = System::Text::Encoding::UTF8->GetBytes(sIn);
      nOutLen = Math::Min(nOutLen - 1, bytes->Length);
      System::Runtime::InteropServices::Marshal::Copy(bytes, 0,
        IntPtr(pcOut), nOutLen);
      pcOut[nOutLen] = '\0';
    }

    Unlike the native API versions, these examples are complete, since the .NET platform handles a lot of things behind the scenes for us. We don’t need any error-checking code for such simple routines.

    All of this assumes you’re using Windows NT or one of its direct descendants: Windows 2000, Windows XP, Windows Vista, Windows 7, or any “Server” variant of Windows. Windows 95 and its descendants (98, ME, and CE) do not support Unicode. They still have the 'W' APIs for compatibility, but they just smash the data down to 8-bit and call the 'A' version for you.

    6.5. For More Information

    The Unicode FAQs page has copious information on this complex topic.

    When it comes to Unix and UTF-8 specific items, the UTF-8 and Unicode FAQ for Unix/Linux is a quicker way to find basic information.



    [17] Since Windows XP, Windows actually uses the UTF-16 encoding, not UCS-2. This means that if you use characters beyond the 16-bit BMP range, they get encoded as 4-byte characters. But again, since the most economically valuable subset of Unicode is the BMP if you ignore emoji, many programs ignore this distinction and assume Unicode strings on Windows are always 2 bytes per character.

    mysql++-3.3.0/doc/html/userman/threads.html000644 000765 000024 00000066241 14042362131 021323 0ustar00tangentstaff000000 000000 7. Using MySQL++ in a Multithreaded Program

    7. Using MySQL++ in a Multithreaded Program

    MySQL++ is not “thread safe” in any meaningful sense. MySQL++ contains very little code that actively prevents trouble with threads, and all of it is optional. We have done some work in MySQL++ to make thread safety achievable, but it doesn’t come for free.

    The main reason for this is that MySQL++ is generally I/O-bound, not processor-bound. That is, if your program’s bottleneck is MySQL++, the ultimate cause is usually the I/O overhead of using a client-server database. Doubling the number of threads will just let your program get back to waiting for I/O twice as fast. Since threads are evil and generally can’t help MySQL++, the only optional thread awareness features we turn on in the shipping version of MySQL++ are those few that have no practical negative consequences. Everything else is up to you, the programmer, to evaluate and enable as and when you need it.

    We’re going to assume that you are reading this chapter because you find yourself needing to use threads for some other reason than to speed up MySQL access. Our purpose here is limited to setting down the rules for avoiding problems with MySQL++ in a multi-threaded program. We won’t go into the broader issues of thread safety outside the scope of MySQL++. You will need a grounding in threads in general to get the full value of this advice.

    7.1. Build Issues

    Before you can safely use MySQL++ with threads, there are several things you must do to get a thread-aware build:

    1. Build MySQL++ itself with thread awareness turned on.

      On Linux, Cygwin and Unix (OS X, *BSD, Solaris...), pass the --enable-thread-check flag to the configure script. Beware, this is only a request to the configure script to look for thread support on your system, not a requirement to do or die: if the script doesn’t find what it needs to do threading, MySQL++ will just get built without thread support. See README-Unix.txt for more details.

      On Windows, if you use the Visual C++ project files or the MinGW Makefile that comes with the MySQL++ distribution, threading is always turned on, due to the nature of Windows.

      If you build MySQL++ in some other way, such as with Dev-Cpp (based on MinGW) you’re on your own to enable thread awareness.

    2. Link your program to a thread-aware build of the MySQL C API library.

      If you use a binary distribution of MySQL on Unixy systems (including Cygwin) you usually get two different versions of the MySQL C API library, one with thread support and one without. These are typically called libmysqlclient and libmysqlclient_r, the latter being the thread-safe one. (The “_r” means reentrant.)

      If you’re using the Windows binary distribution of MySQL, you should have only one version of the C API library, which should be thread-aware. If you have two, you probably just have separate debug and optimized builds. See README-Visual-C++.txt or README-MinGW.txt for details.

      If you build MySQL from source, you might only get one version of the MySQL C API library, and it can have thread awareness or not, depending on your configuration choices.

    3. Enable threading in your program’s build options.

      This is different for every platform, but it’s usually the case that you don’t get thread-aware builds by default. Depending on the platform, you might need to change compiler options, linker options, or both. See your development environment’s documentation, or study how MySQL++ itself turns on thread-aware build options when requested.

    7.2. Connection Management

    The MySQL C API underpinning MySQL++ does not allow multiple concurrent queries on a single connection. You can run into this problem in a single-threaded program, too, which is why we cover the details elsewhere, in Section 3.16, “Concurrent Queries on a Connection”. It’s a thornier problem when using threads, though.

    The simple fix is to just create a separarate Connection object for each thread that needs to make database queries. This works well if you have a small number of threads that need to make queries, and each thread uses its connection often enough that the server doesn’t time out waiting for queries.

    If you have lots of threads or the frequency of queries is low, the connection management overhead will be excessive. To avoid that, we created the ConnectionPool class. It manages a pool of Connection objects like library books: a thread checks one out, uses it, and then returns it to the pool as soon as it’s done with it. This keeps the number of active connections low. We suggest that you keep each connection’s use limited to a single variable scope for RAII reasons; we created a little helper called ScopedConnection to make that easy.

    ConnectionPool has three methods that you need to override in a subclass to make it concrete: create(), destroy(), and max_idle_time(). These overrides let the base class delegate operations it can’t successfully do itself to its subclass. The ConnectionPool can’t know how to create() the Connection objects, because that depends on how your program gets login parameters, server information, etc. ConnectionPool also makes the subclass destroy() the Connection objects it created; it could assume that they’re simply allocated on the heap with new, but it can’t be sure, so the base class delegates destruction, too. Finally, the base class can’t know which connection idle timeout policy would make the most sense to the client, so it asks its subclass via the max_idle_time() method.

    ConnectionPool also allows you to override release(), if needed. For simple uses, it’s not necessary to override this.

    In designing your ConnectionPool derivative, you might consider making it a Singleton, since there should only be one pool in a program.

    Another thing you might consider doing is passing a ReconnectOption object to Connection::set_option() in your create() override before returning the new Connection pointer. This will cause the underlying MySQL C API to try to reconnect to the database server if a query fails because the connection was dropped by the server. This can happen if the DB server is allowed to restart out from under your application. In many applications, this isn’t allowed, or if it does happen, you might want your code to be able to detect it, so MySQL++ doesn’t set this option for you automatically.

    Here is an example showing how to use connection pools with threads:

    #include "cmdline.h"
    #include "threads.h"
    
    #include <iostream>
    
    using namespace std;
    
    
    #if defined(HAVE_THREADS)
    // Define a concrete ConnectionPool derivative.  Takes connection
    // parameters as inputs to its ctor, which it uses to create the
    // connections we're called upon to make.  Note that we also declare
    // a global pointer to an object of this type, which we create soon
    // after startup; this should be a common usage pattern, as what use
    // are multiple pools?
    class SimpleConnectionPool : public mysqlpp::ConnectionPool
    {
    public:
        // The object's only constructor
        SimpleConnectionPool(mysqlpp::examples::CommandLine& cl) :
        conns_in_use_(0),
        db_(mysqlpp::examples::db_name),
        server_(cl.server()),
        user_(cl.user()),
        password_(cl.pass())
        {
        }
    
        // The destructor.  We _must_ call ConnectionPool::clear() here,
        // because our superclass can't do it for us.
        ~SimpleConnectionPool()
        {
            clear();
        }
    
        // Do a simple form of in-use connection limiting: wait to return
        // a connection until there are a reasonably low number in use
        // already.  Can't do this in create() because we're interested in
        // connections actually in use, not those created.  Also note that
        // we keep our own count; ConnectionPool::size() isn't the same!
        mysqlpp::Connection* grab()
        {
            while (conns_in_use_ > 8) {
                cout.put('R'); cout.flush(); // indicate waiting for release
                sleep(1);
            }
    
            ++conns_in_use_;
            return mysqlpp::ConnectionPool::grab();
        }
    
        // Other half of in-use conn count limit
        void release(const mysqlpp::Connection* pc)
        {
            mysqlpp::ConnectionPool::release(pc);
            --conns_in_use_;
        }
    
    protected:
        // Superclass overrides
        mysqlpp::Connection* create()
        {
            // Create connection using the parameters we were passed upon
            // creation.  This could be something much more complex, but for
            // the purposes of the example, this suffices.
            cout.put('C'); cout.flush(); // indicate connection creation
            return new mysqlpp::Connection(
                    db_.empty() ? 0 : db_.c_str(),
                    server_.empty() ? 0 : server_.c_str(),
                    user_.empty() ? 0 : user_.c_str(),
                    password_.empty() ? "" : password_.c_str());
        }
    
        void destroy(mysqlpp::Connection* cp)
        {
            // Our superclass can't know how we created the Connection, so
            // it delegates destruction to us, to be safe.
            cout.put('D'); cout.flush(); // indicate connection destruction
            delete cp;
        }
    
        unsigned int max_idle_time()
        {
            // Set our idle time at an example-friendly 3 seconds.  A real
            // pool would return some fraction of the server's connection
            // idle timeout instead.
            return 3;
        }
    
    private:
        // Number of connections currently in use
        unsigned int conns_in_use_;
    
        // Our connection parameters
        std::string db_, server_, user_, password_;
    };
    SimpleConnectionPool* poolptr = 0;
    
    
    static thread_return_t CALLBACK_SPECIFIER
    worker_thread(thread_arg_t running_flag)
    {
        // Ask the underlying C API to allocate any per-thread resources it
        // needs, in case it hasn't happened already.  In this particular
        // program, it's almost guaranteed that the safe_grab() call below
        // will create a new connection the first time through, and thus
        // allocate these resources implicitly, but there's a nonzero chance
        // that this won't happen.  Anyway, this is an example program,
        // meant to show good style, so we take the high road and ensure the
        // resources are allocated before we do any queries.
        mysqlpp::Connection::thread_start();
        cout.put('S'); cout.flush(); // indicate thread started
    
        // Pull data from the sample table a bunch of times, releasing the
        // connection we use each time.
        for (size_t i = 0; i < 6; ++i) {
            // Go get a free connection from the pool, or create a new one
            // if there are no free conns yet.  Uses safe_grab() to get a
            // connection from the pool that will be automatically returned
            // to the pool when this loop iteration finishes.
            mysqlpp::ScopedConnection cp(*poolptr, true);
            if (!cp) {
                cerr << "Failed to get a connection from the pool!" << endl;
                break;
            }
    
            // Pull a copy of the sample stock table and print a dot for
            // each row in the result set.
            mysqlpp::Query query(cp->query("select * from stock"));
            mysqlpp::StoreQueryResult res = query.store();
            for (size_t j = 0; j < res.num_rows(); ++j) {
                cout.put('.');
            }
    
            // Delay 1-4 seconds before doing it again.  Because this can
            // delay longer than the idle timeout, we'll occasionally force
            // the creation of a new connection on the next loop.
            sleep(rand() % 4 + 1);  
        }
    
        // Tell main() that this thread is no longer running
        *reinterpret_cast<bool*>(running_flag) = false;
        cout.put('E'); cout.flush(); // indicate thread ended
        
        // Release the per-thread resources before we exit
        mysqlpp::Connection::thread_end();
    
        return 0;
    }
    #endif
    
    
    int
    main(int argc, char *argv[])
    {
    #if defined(HAVE_THREADS)
        // Get database access parameters from command line
        mysqlpp::examples::CommandLine cmdline(argc, argv);
        if (!cmdline) {
            return 1;
        }
    
        // Create the pool and grab a connection.  We do it partly to test
        // that the parameters are good before we start doing real work, and
        // partly because we need a Connection object to call thread_aware()
        // on to check that it's okay to start doing that real work.  This
        // latter check should never fail on Windows, but will fail on most
        // other systems unless you take positive steps to build with thread
        // awareness turned on.  See README-*.txt for your platform.
        poolptr = new SimpleConnectionPool(cmdline);
        try {
            mysqlpp::ScopedConnection cp(*poolptr, true);
            if (!cp->thread_aware()) {
                cerr << "MySQL++ wasn't built with thread awareness!  " <<
                        argv[0] << " can't run without it." << endl;
                return 1;
            }
        }
        catch (mysqlpp::Exception& e) {
            cerr << "Failed to set up initial pooled connection: " <<
                    e.what() << endl;
            return 1;
        }
    
        // Setup complete.  Now let's spin some threads...
        cout << endl << "Pool created and working correctly.  Now to do "
                "some real work..." << endl;
        srand((unsigned int)time(0));
        bool running[] = {
                true, true, true, true, true, true, true,
                true, true, true, true, true, true, true };
        const size_t num_threads = sizeof(running) / sizeof(running[0]);
        size_t i;
        for (i = 0; i < num_threads; ++i) {
            if (int err = create_thread(worker_thread, running + i)) {
                cerr << "Failed to create thread " << i <<
                        ": error code " << err << endl;
                return 1;
            }
        }
    
        // Test the 'running' flags every second until we find that they're
        // all turned off, indicating that all threads are stopped.
        cout.put('W'); cout.flush(); // indicate waiting for completion
        do {
            sleep(1);
            i = 0;
            while (i < num_threads && !running[i]) ++i;
        }
        while (i < num_threads);
        cout << endl << "All threads stopped!" << endl;
    
        // Shut it all down...
        delete poolptr;
        cout << endl;
    #else
        (void)argc;     // warning squisher
        cout << argv[0] << " requires that threads be enabled!" << endl;
    #endif
    
        return 0;
    }
    

    The example works with both Windows native threads and with POSIX threads.[18] Because thread-enabled builds are only the default on Windows, it’s quite possible for this program to do nothing on other platforms. See above for instructions on enabling a thread-aware build.

    If you write your code without checks for thread support like you see in the code above and link it to a build of MySQL++ that isn’t thread-aware, it will still try to run. The threading mechanisms fall back to a single-threaded mode when threads aren’t available. A particular danger is that the mutex lock mechanism used to keep the pool’s internal data consistent while multiple threads access it will just quietly become a no-op if MySQL++ is built without thread support. We do it this way because we don’t want to make thread support a MySQL++ prerequisite. And, although it would be of limited value, this lets you use ConnectionPool in single-threaded programs.

    You might wonder why we don’t just work around this weakness in the C API transparently in MySQL++ instead of suggesting design guidelines to avoid it. We’d like to do just that, but how?

    If you consider just the threaded case, you could argue for the use of mutexes to protect a connection from trying to execute two queries at once. The cure is worse than the disease: it turns a design error into a performance sap, as the second thread is blocked indefinitely waiting for the connection to free up. Much better to let the program get the “Commands out of sync” error, which will guide you to this section of the manual, which tells you how to avoid the error with a better design.

    Another option would be to bury ConnectionPool functionality within MySQL++ itself, so the library could create new connections at need. That’s no good because the above example is the most complex in MySQL++, so if it were mandatory to use connection pools, the whole library would be that much more complex to use. The whole point of MySQL++ is to make using the database easier. MySQL++ offers the connection pool mechanism for those that really need it, but an option it must remain.

    7.3. Helper Functions

    Connection has several thread-related static methods you might care about when using MySQL++ with threads.

    You can call Connection::thread_aware() to determine whether MySQL++ and the underlying C API library were both built to be thread-aware. I want to stress that thread awareness is not the same thing as thread safety: it’s still up to you to make your code thread-safe. If this method returns true, it just means it’s possible to achieve thread-safety, not that you actually have it.

    If your program’s connection-management strategy allows a thread to use a Connection object that another thread created, you need to know about Connection::thread_start(). This function sets up per-thread resources needed to make MySQL server calls. You don’t need to call it when you use the simple Connection-per-thread strategy, because this function is implicitly called the first time you create a Connection in a thread. It’s not harmful to call this function from a thread that previously created a Connection, just unnecessary. The only time it’s necessary is when a thread can make calls to the database server on a Connection that another thread created and that thread hasn’t already created a Connection itself.

    If you use ConnectionPool, you should call thread_start() at the start of each worker thread because you probably can’t reliably predict whether your grab() call will create a new Connection or will return one previously returned to the pool from another thread. It’s possible to conceive of situations where you can guarantee that each pool user always creates a fresh Connection the first time it calls grab(), but thread programming is complex enough that it’s best to take the safe path and always call thread_start() early in each worker thread.

    Finally, there’s the complementary method, Connection::thread_end(). Strictly speaking, it’s not necessary to call this. The per-thread memory allocated by the C API is small, it doesn’t grow over time, and a typical thread is going to need this memory for its entire run time. Memory debuggers aren’t smart enough to know all this, though, so they will gripe about a memory leak unless you call this from each thread that uses MySQL++ before that thread exits.

    Although its name suggests otherwise, Connection::thread_id() has nothing to do with anything in this chapter.

    7.4. Sharing MySQL++ Data Structures

    We’re in the process of making it safer to share MySQL++’s data structures across threads. Although things are getting better, it’s highly doubtful that all problems with this are now fixed. By way of illustration, allow me explain one aspect of this problem and how we solved it in MySQL++ 3.0.0.

    When you issue a database query that returns rows, you also get information about the columns in each row. Since the column information is the same for each row in the result set, older versions of MySQL++ kept this information in the result set object, and each Row kept a pointer back to the result set object that created it so it could access this common data at need. This was fine as long as each result set object outlived the Row objects it returned. It required uncommon usage patterns to run into trouble in this area in a single-threaded program, but in a multi-threaded program it was easy. For example, there’s frequently a desire to let one connection do the queries, and other threads process the results. You can see how avoiding lifetime problems here would require a careful locking strategy.

    We got around this in MySQL++ v3.0 by giving these shared data structures a lifetime independent of the result set object that intitially creates it. These shared data structures stick around until the last object needing them gets destroyed.

    Although this is now a solved problem, I bring it up because there are likely other similar lifetime and sequencing problems waiting to be discovered inside MySQL++. If you would like to help us find these, by all means, share data between threads willy-nilly. We welcome your crash reports on the MySQL++ mailing list. But if you’d prefer to avoid problems, it’s better to keep all data about a query within a single thread. Between this and the advice in prior sections, you should be able to use threads with MySQL++ without trouble.



    [18] The file examples/threads.h contains a few macros and such to abstract away the differences between the two threading models.

    mysql++-3.3.0/doc/html/userman/ssqls.html000644 000765 000024 00000213530 14042362131 021031 0ustar00tangentstaff000000 000000 5. Specialized SQL Structures

    5. Specialized SQL Structures

    The Specialized SQL Structure (SSQLS) feature lets you easily define C++ structures that match the form of your SQL tables. At the most superficial level, an SSQLS has a member variable corresponding to each field in the SQL table. But, an SSQLS also has several methods, operators, and data members used by MySQL++’s internals to provide neat functionality, which we cover in this chapter.

    You define SSQLSes using the macros defined in ssqls.h. This is the only MySQL++ header not automatically included for you by mysql++.h. You have to include it in code modules that use the SSQLS feature.

    5.1. sql_create

    Let’s say you have the following SQL table:

    CREATE TABLE stock (
        item CHAR(30) NOT NULL,
        num BIGINT NOT NULL,
        weight DOUBLE NOT NULL,
        price DECIMAL(6,2) NOT NULL,
        sdate DATE NOT NULL,
        description MEDIUMTEXT NULL)

    You can create a C++ structure corresponding to this table like so:

    sql_create_6(stock, 1, 6,
        mysqlpp::sql_char, item,
        mysqlpp::sql_bigint, num,
        mysqlpp::sql_double, weight,
        mysqlpp::sql_decimal, price,
        mysqlpp::sql_date, sdate,
        mysqlpp::Null<mysqlpp::sql_mediumtext>, description)

    This declares the stock structure, which has a data member for each SQL column, using the same names. The structure also has a number of member functions, operators and hidden data members, but we won’t go into that just now.

    The parameter before each field name in the sql_create_# call is the C++ data type that will be used to hold that value in the SSQLS. While you could use plain old C++ data types for most of these columns (long int instead of mysqlpp::sql_bigint, for example) it’s best to use the MySQL++ typedefs.

    Sometimes you have no choice but to use special MySQL++ data types to fully express the database schema. Consider the description field. MySQL++’s sql_mediumtext type is just an alias for std::string, since we don’t need anything fancier to hold a SQL MEDIUMTEXT value. It’s the SQL NULL attribute that causes trouble: it has no equivalent in the C++ type system. MySQL++ offers the Null template, which bridges this difference between the two type systems.

    The general format of this macro is:

    sql_create_#(NAME, COMPCOUNT, SETCOUNT, TYPE1, ITEM1, ... TYPE#, ITEM#)

    where # is the number of member variables, NAME is the name of the structure you wish to create, TYPEx is the type of a member variable, and ITEMx is that variable’s name.

    The COMPCOUNT and SETCOUNT arguments are described in the next section.

    5.2. SSQLS Comparison and Initialization

    The sql_create_# macro adds member functions and operators to each SSQLS that allow you to compare one SSQLS instance to another. These functions compare the first COMPCOUNT fields in the structure. In the example above, COMPCOUNT is 1, so only the item field will be checked when comparing two stock structures.

    This feature works best when your table’s “key” fields are the first ones in the SSQLS and you set COMPCOUNT equal to the number of key fields. That way, a check for equality between two SSQLS structures in your C++ code will give the same results as a check for equality in SQL.

    COMPCOUNT must be at least 1. The current implementation of sql_create_# cannot create an SSQLS without comparison member functions.

    Because our stock structure is less-than-comparable, you can use it in STL algorithms and containers that require this, such as STL’s associative containers:

    std::set<stock> result;   
    query.storein(result);
    cout << result.lower_bound(stock("Hamburger"))->item << endl;

    This will print the first item in the result set that begins with “Hamburger.”

    The third parameter to sql_create_# is SETCOUNT. If this is nonzero, it adds an initialization constructor and a set() member function taking the given number of arguments, for setting the first N fields of the structure. For example, you could change the above example like so:

    sql_create_6(stock, 1, 2,
        mysqlpp::sql_char, item,
        mysqlpp::sql_bigint, num,         
        mysqlpp::sql_double, weight,  
        mysqlpp::sql_decimal, price,  
        mysqlpp::sql_date, sdate,
        mysqlpp::Null<mysqlpp::sql_mediumtext>, description)
        
    stock foo("Hotdog", 52);

    In addition to this 2-parameter constructor, this version of the stock SSQLS will have a similar 2-parameter set() member function.

    The COMPCOUNT and SETCOUNT values cannot be equal. If they are, the macro will generate two initialization constructors with identical parameter lists, which is illegal in C++. You might be asking, why does there need to be a constructor for comparison to begin with? It’s often convenient to be able to say something like x == stock("Hotdog"). This requires that there be a constructor taking COMPCOUNT arguments to create the temporary stock instance used in the comparison.

    This limitation is not a problem in practice. If you want the same number of parameters in the initialization constructor as the number of fields used in comparisons, pass 0 for SETCOUNT. This suppresses the duplicate constructor you’d get if you used the COMPCOUNT value instead. This is most useful in very small SSQLSes, since it’s easier for the number of key fields to equal the number of fields you want to compare on:

    sql_create_1(stock_item, 1, 0, mysqlpp::sql_char, item)

    5.3. Retrieving data

    Let’s put SSQLS to use. This is examples/ssqls1.cpp:

    #include "cmdline.h"
    #include "printdata.h"
    #include "stock.h"
    
    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    int
    main(int argc, char *argv[])
    {
        // Get database access parameters from command line
        mysqlpp::examples::CommandLine cmdline(argc, argv);
        if (!cmdline) {
            return 1;
        }
    
        try {                       
            // Establish the connection to the database server.
            mysqlpp::Connection con(mysqlpp::examples::db_name,
                    cmdline.server(), cmdline.user(), cmdline.pass());
    
            // Retrieve a subset of the stock table's columns, and store
            // the data in a vector of 'stock' SSQLS structures.  See the
            // user manual for the consequences arising from this quiet
            // ability to store a subset of the table in the stock SSQLS.
            mysqlpp::Query query = con.query("select item,description from stock");
            vector<stock> res;
            query.storein(res);
    
            // Display the items
            cout << "We have:" << endl;
            vector<stock>::iterator it;
            for (it = res.begin(); it != res.end(); ++it) {
                cout << '\t' << it->item;
                if (it->description != mysqlpp::null) {
                    cout << " (" << it->description << ")";
                }
                cout << endl;
            }
        }
        catch (const mysqlpp::BadQuery& er) {
            // Handle any query errors
            cerr << "Query error: " << er.what() << endl;
            return -1;
        }
        catch (const mysqlpp::BadConversion& er) {
            // Handle bad conversions; e.g. type mismatch populating 'stock'
            cerr << "Conversion error: " << er.what() << endl <<
                    "\tretrieved data size: " << er.retrieved <<
                    ", actual size: " << er.actual_size << endl;
            return -1;
        }
        catch (const mysqlpp::Exception& er) {
            // Catch-all for any other MySQL++ exceptions
            cerr << "Error: " << er.what() << endl;
            return -1;
        }
    
        return 0;
    }
    

    Here is the stock.h header used by that example, and by several others below:

    #include <mysql++.h>
    #include <ssqls.h>
    
    // The following is calling a very complex macro which will create
    // "struct stock", which has the member variables:
    //
    //   sql_char item;
    //   ...
    //   sql_mediumtext_null description;
    //
    // plus methods to help populate the class from a MySQL row.  See the
    // SSQLS sections in the user manual for further details.
    sql_create_6(stock,
        1, 6, // The meaning of these values is covered in the user manual
        mysqlpp::sql_char, item,
        mysqlpp::sql_bigint, num,
        mysqlpp::sql_double, weight,
        mysqlpp::sql_double_null, price,
        mysqlpp::sql_date, sDate,           // SSQLS isn't case-sensitive!
        mysqlpp::sql_mediumtext_null, description)
    
    

    This example produces the same output as simple1.cpp (see Section 3.2, “A Simple Example”), but it uses higher-level data structures paralleling the database schema instead of MySQL++’s lower-level generic data structures. It also uses MySQL++’s exceptions for error handling instead of doing everything inline. For small example programs like these, the overhead of SSQLS and exceptions doesn’t pay off very well, but in a real program, they end up working much better than hand-rolled code.

    Notice that we are only pulling a single column from the stock table, but we are storing the rows in a std::vector<stock>. It may strike you as inefficient to have five unused fields per record. It’s easily remedied by defining a subset SSQLS:

    sql_create_1(stock_subset,
      1, 0,
      string, item)
      
    vector<stock_subset> res;
    query.storein(res);
    // ...etc...

    MySQL++ is flexible about populating SSQLSes.[13] It works much like the Web, a design that’s enabled the development of the largest distributed system in the world. Just as a browser ignores tags and attributes it doesn’t understand, you can populate an SSQLS from a query result set containing columns that don’t exist in the SSQLS. And as a browser uses sensible defaults when the page doesn’t give explicit values, you can have an SSQLS with more fields defined than are in the query result set, and these SSQLS fields will get default values. (Zero for numeric types, false for bool, and a type-specific default for anything more complex, like mysqlpp::DateTime.)

    In more concrete terms, the example above is able to populate the stock objects using as much information as it has, and leave the remaining fields at their defaults. Conversely, you could also stuff the results of SELECT * FROM stock into the stock_subset SSQLS declared above; the extra fields would just be ignored.

    We’re trading run-time efficiency for flexibility here, usually the right thing in a distributed system. Since MySQL is a networked database server, many uses of it will qualify as distributed systems. You can’t count on being able to update both the server(s) and all the clients at the same time, so you have to make them flexible enough to cope with differences while the changes propagate. As long as the new database schema isn’t too grossly different from the old, your programs should continue to run until you get around to updating them to use the new schema.

    There’s a danger that this quiet coping behavior may mask problems, but considering that the previous behavior was for the program to crash when the database schema got out of synch with the SSQLS definition, it’s likely to be taken as an improvement.

    5.4. Adding data

    MySQL++ offers several ways to insert data in SSQLS form into a database table.

    Inserting a Single Row

    The simplest option is to insert a single row at a time. This is examples/ssqls2.cpp:

    #include "cmdline.h"
    #include "printdata.h"
    #include "stock.h"
    
    #include <iostream>
    #include <limits>
    
    using namespace std;
    
    int
    main(int argc, char *argv[])
    {
        // Get database access parameters from command line
        mysqlpp::examples::CommandLine cmdline(argc, argv);
        if (!cmdline) {
            return 1;
        }
    
        try {
            // Establish the connection to the database server.
            mysqlpp::Connection con(mysqlpp::examples::db_name,
                    cmdline.server(), cmdline.user(), cmdline.pass());
    
            // Create and populate a stock object.  We could also have used
            // the set() member, which takes the same parameters as this
            // constructor.
            stock row("Hot Dogs", 100, 1.5,
                    numeric_limits<double>::infinity(), // "priceless," ha!
                    mysqlpp::sql_date("1998-09-25"), mysqlpp::null);
    
            // Form the query to insert the row into the stock table.
            mysqlpp::Query query = con.query();
            query.insert(row);
    
            // Show the query about to be executed.
            cout << "Query: " << query << endl;
    
            // Execute the query.  We use execute() because INSERT doesn't
            // return a result set.
            query.execute();
    
            // Retrieve and print out the new table contents.
            print_stock_table(query);
        }
        catch (const mysqlpp::BadQuery& er) {
            // Handle any query errors
            cerr << "Query error: " << er.what() << endl;
            return -1;
        }
        catch (const mysqlpp::BadConversion& er) {  
            // Handle bad conversions
            cerr << "Conversion error: " << er.what() << endl <<
                    "\tretrieved data size: " << er.retrieved <<
                    ", actual size: " << er.actual_size << endl;
            return -1;
        }
        catch (const mysqlpp::Exception& er) {
            // Catch-all for any other MySQL++ exceptions
            cerr << "Error: " << er.what() << endl;
            return -1;
        }
    
        return 0;
    }
    

    That’s all there is to it! MySQL++ even takes care of quoting and escaping the data when building queries from SSQLS structures. It’s efficient, too: MySQL++ is smart enough to quote and escape data only for those data types that actually require it.

    Inserting Many Rows

    Inserting a single row is useful, to be sure, but you might want to be able to insert many SSQLSes or Row objects at once. MySQL++ knows how to do that, too, sparing you the necessity of writing the loop. Plus, MySQL++ uses an optimized implementation of this algorithm, packing everything into a single SQL query, eliminating the overhead of multiple calls between the client and server. It’s just a different overload of insert(), which accepts a pair of iterators into an STL container, inserting every row in that range:

    vector<stock> lots_of_stuff;
    ...populate the vector somehow...
    query.insert(lots_of_stuff.begin(), lots_of_stuff.end()).execute();

    By the way, notice that you can chain Query operations like in the last line above, because its methods return *this where that makes sense.

    Working Around MySQL’s Packet Size Limit

    The two-iterator form of insert() has an associated risk: MySQL has a limit on the size of the SQL query it will process. The default limit is 1 MB. You can raise the limit, but the reason the limit is configurable is not to allow huge numbers of inserts in a single query. They made the limit configurable because a single row might be bigger than 1 MB, so the default would prevent you from inserting anything at all. If you raise the limit simply to be able to insert more rows at once, you’re courting disaster with no compensating benefit: the more data you send at a time, the greater the chance and cost of something going wrong. Worse, this is pure risk, because by the time you hit 1 MB, the per-packet overhead is such a small fraction of the data being transferred that increasing the packet size buys you essentially nothing.

    Let’s say you have a vector containing several megabytes of data; it will get even bigger when expressed in SQL form, so there’s no way you can insert it all in a single query without raising the MySQL packet limit. One way to cope would be to write your own naïve loop, inserting just one row at a time. This is slow, because you’re paying the per-query cost for every row in the container. Then you might realize that you could use the two iterator form of insert(), passing iterators expressing sub-ranges of the container instead of trying to insert the whole container in one go. Now you’ve just got to figure out how to calculate those sub-ranges to get efficient operation without exceeding the packet size limit.

    MySQL++ already knows how to do that, too, with Query::insertfrom(). We gave it a different name instead of adding yet another insert() overload because it doesn’t merely build the INSERT query, which you then execute(). It’s more like storein(), in that it wraps the entire operation up in a single call. This feature is demonstrated in examples/ssqls6.cpp:

    #include "cmdline.h"
    #include "printdata.h"
    #include "stock.h"
    
    #include <fstream>
    
    using namespace std;
    
    
    // Breaks a given text line of tab-separated fields up into a list of
    // strings.
    static size_t
    tokenize_line(const string& line, vector<mysqlpp::String>& strings)
    {
        string field;
        strings.clear();
    
        istringstream iss(line);
        while (getline(iss, field, '\t')) {
            strings.push_back(mysqlpp::String(field));
        }
    
        return strings.size();
    }
    
    
    // Reads a tab-delimited text file, returning the data found therein
    // as a vector of stock SSQLS objects.
    static bool
    read_stock_items(const char* filename, vector<stock>& stock_vector)
    {
        ifstream input(filename);
        if (!input) {
            cerr << "Error opening input file '" << filename << "'" << endl;
            return false;
        }
    
        string line;
        vector<mysqlpp::String> strings;
        while (getline(input, line)) {
            if (tokenize_line(line, strings) == 6) {
                stock_vector.push_back(stock(string(strings[0]), strings[1],
                        strings[2], strings[3], strings[4], strings[5]));
            }
            else {
                cerr << "Error parsing input line (doesn't have 6 fields) " << 
                        "in file '" << filename << "'" << endl;
                cerr << "invalid line: '" << line << "'" << endl;
            }
        }
    
        return true;
    }
    
    
    int
    main(int argc, char *argv[])
    {
        // Get database access parameters from command line
        mysqlpp::examples::CommandLine cmdline(argc, argv);
        if (!cmdline) {
            return 1;
        }
    
        // Read in a tab-delimited file of stock data
        vector<stock> stock_vector;
        if (!read_stock_items("examples/stock.txt", stock_vector)) {
            return 1;
        }
    
        try {
            // Establish the connection to the database server.
            mysqlpp::Connection con(mysqlpp::examples::db_name,
                    cmdline.server(), cmdline.user(), cmdline.pass());
    
            // Clear all existing rows from stock table, as we're about to
            // insert a bunch of new ones, and we want a clean slate.
            mysqlpp::Query query = con.query();
            query.exec("DELETE FROM stock");
    
            // Insert data read from the CSV file, allowing up to 1000
            // characters per packet.  We're using a small size in this
            // example just to force multiple inserts.  In a real program,
            // you'd want to use larger packets, for greater efficiency.
            mysqlpp::Query::MaxPacketInsertPolicy<> insert_policy(1000);
            query.insertfrom(stock_vector.begin(), stock_vector.end(),
                    insert_policy);
    
            // Retrieve and print out the new table contents.
            print_stock_table(query);
        }
        catch (const mysqlpp::BadQuery& er) {
            // Handle any query errors
            cerr << "Query error: " << er.what() << endl;
            return -1;
        }
        catch (const mysqlpp::BadConversion& er) {
            // Handle bad conversions
            cerr << "Conversion error: " << er.what() << endl <<
                    "\tretrieved data size: " << er.retrieved <<
                    ", actual size: " << er.actual_size << endl;
            return -1;
        }
        catch (const mysqlpp::BadInsertPolicy& er) {
            // Handle bad conversions
            cerr << "InsertPolicy error: " << er.what() << endl;
            return -1;
        }
        catch (const mysqlpp::Exception& er) {
            // Catch-all for any other MySQL++ exceptions
            cerr << "Error: " << er.what() << endl;
            return -1;
        }
    
        return 0;
    }
    
    

    Most of the complexity in this example goes to just reading in the data from a file; we have to get our test data from somewhere. There are only two key lines of code: create an insertion policy object, and pass it along with an STL container full of row data to Query::insertfrom().

    This policy object is the main thing that differentiates insertfrom() from the two-iterator form of insert(). It controls how insertfrom() builds the query strings, primarily controlling how large each query gets before insertfrom() executes it and starts building a new query. We designed it to use policy objects because there is no single “right” choice for the decisions it makes.

    MySQL++ ships with three different insertion policy classes, which should cover most situations.

    MaxPacketInsertPolicy, demonstrated in the example above, does things the most obvious way: when you create it, you pass the maximum packet size, which it uses to prevent queries from going over the size limit. It builds up a query string row by row, checking each time through the loop whether adding another insert statement to the query string would make the packet size go over the limit. When that happens, or it gets to the end of the iteration range, it executes the query and starts over if it’s not yet at the end. This is robust, but it has a downside: it has to build each insert query in advance of knowing that it can append it to the larger query. Any time an insert query would push the packet over the limit, it has to throw it away, causing the library to do more work than is strictly necessary.

    Imagine you’ve done some benchmarking and have found that the point of diminishing returns is at about 20 KB per query in your environment; beyond that point, the per-query overhead ceases to be an issue. Let’s also say you know for a fact that your largest row will always be less than 1 MB — less 20 KB — when expressed as a SQL insert statement. In that case, you can use the more efficient SizeThresholdInsertPolicy. It differs from MaxPacketInsertPolicy in that it allows insertfrom() to insert rows blindly into the query string until the built query exceeds the threshold, 20 KB in this example. Then it ships the packet off, and if successful, starts a new query. Thus, each query (except possibly the last) will be at least 20 KB, exceeding that only by as much as one row’s worth of data, minus one byte. This is quite appropriate behavior when your rows are relatively small, as is typical for tables not containing BLOB data. It is more efficient than MaxPacketInsertPolicy because it never has to throw away any SQL fragments.

    The simplest policy object type is RowCountInsertPolicy. This lets you simply say how many rows at a time to insert into the database. This works well when you have a good handle on how big each row will be, so you can calculate in advance how many rows you can insert at once without exceeding some given limit. Say you know your rows can’t be any bigger than about 1 KB. If we stick with that 20 KB target, passing RowCountInsertPolicy<>(20) for the policy object would ensure we never exceed the size threshold. Or, say that maximum size value above is still true, but we also know the average row size is only 200 bytes. You could pass RowCountInsertPolicy<>(100) for the policy, knowing that the average packet size will be around 20 KB, and the worst case packet size 100 KB, still nowhere near the default 1 MB packet size limit. The code for this policy is very simple, so it makes your program a little smaller than if you used either of the above policies. Obviously it’s a bad choice if you aren’t able to predict the size of your rows accurately.

    If one of the provided insert policy classes doesn’t suit your needs, you can easily create a custom one. Just study the implementation in lib/insertpolicy.*.

    Interaction with Transactions

    These policy classes are all templates, taking a parameter that defaults to Transaction. This means that, by default, insertfrom() wraps the entire operation in a SQL transaction, so that if any of the insertions fail, the database server rolls them all back. This prevents an error in the middle of the operation from leaving just part of the container’s data inserted in the database, which you usually don’t want any more than you’d want half a single row to be inserted.

    There are good reasons why you might not want this. Perhaps the best reason is if the insertfrom() call is to be part of a larger transaction. MySQL doesn’t support nested transactions, so the insertfrom() call will fail if it tries to start one of its own. You can pass NoTransactions for the insert policy’s template parameter to make it suppress the transaction code.

    5.5. Modifying data

    It almost as easy to modify data with SSQLS as to add it. This is examples/ssqls3.cpp:

    #include "cmdline.h"
    #include "printdata.h"
    #include "stock.h"
    
    #include <iostream>
    
    using namespace std;
    
    int
    main(int argc, char *argv[])
    {
        // Get database access parameters from command line
        mysqlpp::examples::CommandLine cmdline(argc, argv);
        if (!cmdline) {
            return 1;
        }
    
        try {
            // Establish the connection to the database server.
            mysqlpp::Connection con(mysqlpp::examples::db_name,
                    cmdline.server(), cmdline.user(), cmdline.pass());
    
            // Build a query to retrieve the stock item that has Unicode
            // characters encoded in UTF-8 form.
            mysqlpp::Query query = con.query("select * from stock ");
            query << "where item = " << mysqlpp::quote << "Nürnberger Brats";
    
            // Retrieve the row, throwing an exception if it fails.
            mysqlpp::StoreQueryResult res = query.store();
            if (res.empty()) {
                throw mysqlpp::BadQuery("UTF-8 bratwurst item not found in "
                        "table, run resetdb");
            }
    
            // Because there should only be one row in the result set,
            // there's no point in storing the result in an STL container.
            // We can store the first row directly into a stock structure
            // because one of an SSQLS's constructors takes a Row object.
            stock row = res[0];
    
            // Create a copy so that the replace query knows what the
            // original values are.
            stock orig_row = row;
    
            // Change the stock object's item to use only 7-bit ASCII, and
            // to deliberately be wider than normal column widths printed
            // by print_stock_table().
            row.item = "Nuerenberger Bratwurst";
    
            // Form the query to replace the row in the stock table.
            query.update(orig_row, row);
    
            // Show the query about to be executed.
            cout << "Query: " << query << endl;
    
            // Run the query with execute(), since UPDATE doesn't return a
            // result set.
            query.execute();
    
            // Retrieve and print out the new table contents.
            print_stock_table(query);
        }
        catch (const mysqlpp::BadQuery& er) {
            // Handle any query errors
            cerr << "Query error: " << er.what() << endl;
            return -1;
        }
        catch (const mysqlpp::BadConversion& er) {
            // Handle bad conversions
            cerr << "Conversion error: " << er.what() << endl <<
                    "\tretrieved data size: " << er.retrieved <<
                    ", actual size: " << er.actual_size << endl;
            return -1;
        }
        catch (const mysqlpp::Exception& er) {
            // Catch-all for any other MySQL++ exceptions
            cerr << "Error: " << er.what() << endl;
            return -1;
        }
    
        return 0;
    }
    

    Don’t forget to run resetdb after running the example.

    5.6. Storing SSQLSes in Associative Containers

    One of the requirements of STL’s associative containers on data stored in them is that the data type has to be less-than comparable. That is, it has to have an operator < defined. SSQLS does optionally give you this, as demonstrated in examples/ssqls4.cpp:

    #include "cmdline.h"
    #include "printdata.h"
    #include "stock.h"
    
    #include <iostream>
    
    using namespace std;
    
    int
    main(int argc, char *argv[])
    {
        // Get database access parameters from command line
        mysqlpp::examples::CommandLine cmdline(argc, argv);
        if (!cmdline) {
            return 1;
        }
    
        try {
            // Establish the connection to the database server.
            mysqlpp::Connection con(mysqlpp::examples::db_name,
                    cmdline.server(), cmdline.user(), cmdline.pass());
    
            // Retrieve all rows from the stock table and put them in an
            // STL set.  Notice that this works just as well as storing them
            // in a vector, which we did in ssqls1.cpp.  It works because
            // SSQLS objects are less-than comparable.
            mysqlpp::Query query = con.query("select * from stock");
            set<stock> res;
            query.storein(res);
    
            // Display the result set.  Since it is an STL set and we set up
            // the SSQLS to compare based on the item column, the rows will
            // be sorted by item.
            print_stock_header(res.size());
            set<stock>::iterator it;
            cout.precision(3);
            for (it = res.begin(); it != res.end(); ++it) {
                print_stock_row(it->item.c_str(), it->num, it->weight,
                        it->price, it->sDate);
            }
    
            // Use set's find method to look up a stock item by item name.
            // This also uses the SSQLS comparison setup.
            it = res.find(stock("Hotdog Buns"));
            if (it != res.end()) {
                cout << endl << "Currently " << it->num <<
                        " hotdog buns in stock." << endl;
            }
            else {
                cout << endl << "Sorry, no hotdog buns in stock." << endl;
            }
        }
        catch (const mysqlpp::BadQuery& er) {
            // Handle any query errors
            cerr << "Query error: " << er.what() << endl;
            return -1;
        }
        catch (const mysqlpp::BadConversion& er) {
            // Handle bad conversions
            cerr << "Conversion error: " << er.what() << endl <<
                    "\tretrieved data size: " << er.retrieved <<
                    ", actual size: " << er.actual_size << endl;
            return -1;
        }
        catch (const mysqlpp::Exception& er) {
            // Catch-all for any other MySQL++ exceptions
            cerr << "Error: " << er.what() << endl;
            return -1;
        }
    
        return 0;
    }
    

    The find() call works because of the way the SSQLS was declared. It’s properly covered elsewhere, but suffice it to say, the “1” in the declaration of stock above tells it that only the first field needs to be checked in comparing two SSQLSes. In database terms, this makes it the primary key. Therefore, when searching for a match, our exemplar only had to have its first field populated.

    5.7. Changing the Table Name

    Another feature you might find a use for is changing the table name MySQL++ uses to build queries involving SSQLSes. By default, the database server table is assumed to have the same name as the SSQLS structure type. But if this is inconvenient, you can globally change the table name used in queries like this:

    stock::table("MyStockData");

    It’s also possible to change the name of a table on a per-instance basis:

    stock s;
    s.instance_table("AlternateTable");

    This is useful when you have an SSQLS definition that is compatible with multiple tables, so the table name to use for each instance is different. This feature saves you from having to define a separate SSQLS for each table. It is also useful for mapping a class hierarchy onto a set of table definitions. The common SSQLS definition is the “superclass” for a given set of tables.

    Strictly speaking, you only need to use this feature in multithreaded programs. Changing the static table name before using each instance is safe if all changes happen within a single thread. That said, it may still be convenient to change the name of the table for an SSQLS instance in a single-threaded program if it gets used for many operations over an extended span of code.

    5.8. Using an SSQLS in Multiple Modules

    It’s convenient to define an SSQLS in a header file so you can use it in multiple modules. You run into a bit of a problem, though, because each SSQLS includes a few static data members to hold information common to all structures of that type. (The table name and the list of field names.) When you #include that header in more than one module, you get a multiply-defined symbol error at link time.

    The way around this is to define the preprocessor macro MYSQLPP_SSQLS_NO_STATICS in all but one of the modules that use the header definining the SSQLS. When this macro is defined, it suppresses the static data members in any SSQLS defined thereafter.

    Imagine we have a file my_ssqls.h which includes a sql_create_N macro call to define an SSQLS, and that that SSQLS is used in at least two modules. One we’ll call foo.cpp, and we’ll say it’s just a user of the SSQLS; it doesn’t “own” it. Another of the modules, my_ssqls.cpp uses the SSQLS more heavily, so we’ve called it the owner of the SSQLS. If there aren’t very many modules, this works nicely:

    // File foo.cpp, which just uses the SSQLS, but doesn’t "own" it:
    #define MYSQLPP_SSQLS_NO_STATICS
    #include "my_ssqls.h"
    // File my_ssqls.cpp, which owns the SSQLS, so we just #include it directly
    #include "my_ssqls.h"

    If there are many modules that need the SSQLS, adding all those #defines can be a pain. In that case, it’s easier if you flip the above pattern on its head:

    // File my_ssqls.h:
    #if !defined(EXPAND_MY_SSQLS_STATICS)
    #   define MYSQLPP_SSQLS_NO_STATICS
    #endif
    sql_create_X(Y, Z....) // the SSQLS definition
    // File foo.cpp, a mere user of the SSQLS:
    #include "my_ssqls.h"
    // File my_ssqls.cpp, which owns the SSQLS:
    #define EXPAND_MY_SSQLS_STATICS
    #include "my_ssqls.h"

    5.9. Harnessing SSQLS Internals

    The sql_create macros define several methods for each SSQLS. These methods are mostly for use within the library, but some of them are useful enough that you might want to harness them for your own ends. Here is some pseudocode showing how the most useful of these methods would be defined for the stock structure used in all the ssqls*.cpp examples:

    // Basic form
    template <class Manip>   
    stock_value_list<Manip> value_list(cchar *d = ",",
      Manip m = mysqlpp::quote) const;  
    
    template <class Manip>   
    stock_field_list<Manip> field_list(cchar *d = ",",   
      Manip m = mysqlpp::do_nothing) const;  
    
    template <class Manip>   
    stock_equal_list<Manip> equal_list(cchar *d = ",",
      cchar *e = " = ", Manip m = mysqlpp::quote) const;  
    
    
    // Boolean argument form
    template <class Manip>
    stock_cus_value_list<Manip> value_list([cchar *d, [Manip m,] ]   
      bool i1, bool i2 = false, ... , bool i5 = false) const;  
    
    // List form  
    template <class Manip>
    stock_cus_value_list<Manip> value_list([cchar *d, [Manip m,] ]  
      stock_enum i1, stock_enum i2 = stock_NULL, ...,
      stock_enum i5 = stock_NULL) const;  
    
    // Vector form  
    template <class Manip>
    stock_cus_value_list<Manip> value_list([cchar *d, [Manip m,] ]  
      vector<bool> *i) const;  
    
    ...Plus the obvious equivalents for field_list() and equal_list()

    Rather than try to learn what all of these methods do at once, let’s ease into the subject. Consider this code:

    stock s("Dinner Rolls", 75, 0.95, 0.97, sql_date("1998-05-25"));   
    cout << "Value list: " << s.value_list() << endl;  
    cout << "Field list: " << s.field_list() << endl;  
    cout << "Equal list: " << s.equal_list() << endl;

    That would produce something like:

    Value list: 'Dinner Rolls’,75,0.95,0.97,'1998-05-25'   
    Field list: item,num,weight,price,sdate  
    Equal list: item = 'Dinner Rolls’,num = 75,weight = 0.95, price = 0.97,sdate = '1998-05-25'

    That is, a “value list” is a list of data member values within a particular SSQLS instance, a “field list” is a list of the fields (columns) within that SSQLS, and an “equal list” is a list in the form of an SQL equals clause.

    Just knowing that much, it shouldn’t surprise you to learn that Query::insert() is implemented more or less like this:

    *this << "INSERT INTO " << v.table() << " (" << v.field_list() <<
        ") VALUES (" << v.value_list() << ")";

    where ‘v’ is the SSQLS you’re asking the Query object to insert into the database.

    Now let’s look at a complete example, which uses one of the more complicated forms of equal_list(). This example builds a query with fewer hard-coded strings than the most obvious technique requires, which makes it more robust in the face of change. Here is examples/ssqls5.cpp:

    #include "cmdline.h"
    #include "printdata.h"
    #include "stock.h"
    
    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    int
    main(int argc, char *argv[])
    {
        // Get database access parameters from command line
        mysqlpp::examples::CommandLine cmdline(argc, argv);
        if (!cmdline) {
            return 1;
        }
    
        try {
            // Establish the connection to the database server.
            mysqlpp::Connection con(mysqlpp::examples::db_name,
                    cmdline.server(), cmdline.user(), cmdline.pass());
    
            // Get all the rows in the stock table.
            mysqlpp::Query query = con.query("select * from stock");
            vector<stock> res;
            query.storein(res);
    
            if (res.size() > 0) {
                // Build a select query using the data from the first row
                // returned by our previous query.
                query << "select * from stock where " <<
                        res[0].equal_list(" and ", stock_weight, stock_price);
    
                // Display the finished query.
                cout << "Custom query:\n" << query << endl;
            }
        }
        catch (const mysqlpp::BadQuery& er) {
            // Handle any query errors
            cerr << "Query error: " << er.what() << endl;
            return -1;
        }
        catch (const mysqlpp::BadConversion& er) {
            // Handle bad conversions
            cerr << "Conversion error: " << er.what() << endl <<
                    "\tretrieved data size: " << er.retrieved <<
                    ", actual size: " << er.actual_size << endl;
            return -1;
        }
        catch (const mysqlpp::Exception& er) {
            // Catch-all for any other MySQL++ exceptions
            cerr << "Error: " << er.what() << endl;
            return -1;
        }
    
        return 0;
    }
    

    This example uses the list form of equal_list(). The arguments stock_weight and stock_price are enum values equal to the position of these columns within the stock table. sql_create_# generates this enum for you automatically.

    The boolean argument form of that equal_list() call would look like this:

    query << "select * from stock where " <<
        res[0].equal_list(" and ", false, false, true, true, false);

    It’s a little more verbose, as you can see. And if you want to get really complicated, use the vector form:

    vector<bool> v(5, false);
    v[stock_weight] = true;
    v[stock_price] = true;
    query << "select * from stock where " <<
        res[0].equal_list(" and ", v);

    This form makes the most sense if you are building many other queries, and so can re-use that vector object.

    Many of these methods accept manipulators and custom delimiters. The defaults are suitable for building SQL queries, but if you’re using these methods in a different context, you may need to override these defaults. For instance, you could use these methods to dump data to a text file using different delimiters and quoting rules than SQL.

    At this point, we’ve seen all the major aspects of the SSQLS feature. The final sections of this chapter look at some of the peripheral aspects.

    5.10. Having Different Field Names in C++ and SQL

    There’s a more advanced SSQLS creation macro, which all the others are built on top of. Currently, the only feature it adds over what’s described above is that it lets you name your SSQLS fields differently from the names used by the database server. Perhaps you want to use Hungarian notation in your C++ program without changing the SQL database schema:

    sql_create_complete_5(stock, 1, 5,   
        mysqlpp::sql_char, m_sItem, "item",
        mysqlpp::sql_bigint, m_nNum, "num",
        mysqlpp::sql_double, m_fWeight, "weight",
        mysqlpp::sql_decimal, m_fPrice, "price",
        mysqlpp::sql_date, m_Date, "sdate")

    Note that you don’t have to use this mechanism if the only difference in your SQL and C++ field names is case. SSQLS field name lookups are case-insensitive as of MySQL++ 3.1. You can see this in the examples: some parts of the code deliberately refer to the stock.sdate sample table field as stock.sDate to exercise this feature.

    5.11. Expanding SSQLS Macros

    If you ever need to see the code that a given SSQLS declaration expands out to, use the utility doc/ssqls-pretty, like so:

    doc/ssqls-pretty < myprog.cpp | less

    This Perl script locates the first SSQLS declaration in that file, then uses the C++ preprocessor to expand that macro. (The script assumes that your system’s preprocessor is called cpp, and that its command line interface follows Unix conventions.)

    If you run it from the top MySQL++ directory, as shown above, it will use the header files in the distribution’s lib subdirectory. Otherwise, it assumes the MySQL++ headers are in their default location, /usr/include/mysql++. If you want to use headers in some other location, you’ll need to change the directory name in the -I flag at the top of the script.

    5.12. Customizing the SSQLS Mechanism

    The SSQLS header ssqls.h is automatically generated by the Perl script ssqls.pl. Although it is possible to change this script to get additional functionality, most of the time it’s better to just derive a custom class from the generated SSQLS to add functionality to it. (See the next section to see how to do this correctly.)

    That said, ssqls.pl does have a few configurables you might want to tweak.

    The first configurable value sets the maximum number of data members allowed in an SSQLS. This is discussed elsewhere, in Section 8.2, “The Maximum Number of Fields Allowed”. Beware the warnings there about increasing this value too much.

    The second configurable is the default floating point precision used for comparison. As described above (Section 5.2, “SSQLS Comparison and Initialization”) SSQLSes can be compared for equality. The only place this is tricky is with floating-point numbers, since rounding errors can make two “equal” values compare as distinct. This property of floating-point numbers means we almost never want to do exact comparison. MySQL++ lets you specify the precision you want it to use. If the difference between two values is under a given threshold, MySQL++ considers the values equal. The default threshold is 0.00001. This threshold works well for “human” scale values, but because of the way floating-point numbers work, it can be wildly inappropriate for very large or very small quantities like those used in scientific applications.

    There are actually two ways to change this threshold. If you need a different system-wide default, edit ssqls.pl and change the $fp_min_delta variable at the top of the file, then rebuild ssqls.h as described below. If you need different thresholds per file or per project, it’s better to set the C macro MYSQLPP_FP_MIN_DELTA instead. The Perl variable sets this macro’s default; if you give a different value before #including ssqls.h, it will use that instead.

    To rebuild ssqls.h after changing ssqls.pl, you’ll need a Perl interpreter. The only modern Unixy system I’m aware of where Perl isn’t installed by default is Cygwin, and it’s just a setup.exe choice away there. You’ll probably only have to download and install a Perl interpreter if you’re on Windows and don’t want to use Cygwin.

    If you’re on a system that uses autoconf, building MySQL++ automatically updates ssqls.h any time ssqls.pl changes. Otherwise, you’ll need to run the Perl interpreter by hand:

    c:\mysql++> cd lib
    c:\lib> perl ssqls.pl

    5.13. Deriving from an SSQLS

    Specialized SQL Structures make good base classes. They’re simple, and have few requirements on any class that derives from them. There are some gotchas to look out for, however.

    Consider this:

    sql_create_2(
      Base, 1, 2,
      mysqlpp::sql_varchar, a,
      mysqlpp::sql_int, b
    );
    
    class Derived : public Base
    {
    public:
      // constructor
      Derived(mysqlpp::sql_varchar _a, mysqlpp::sql_int _b) :
      Base(_a, _b)
      {
      }
    
      // functionality added to the SSQLS through inheritance
      bool do_something_interesting(int data);
    };

    We’ve derived a class from an SSQLS in order to add a method to it. Easy, right?

    Sadly, too easy. The code has a rather large flaw which makes our derived class unusable as an SSQLS. In C++, if a derived class has a function of the same name as one in the base class, the base class versions of that function are all hidden by those in the derived class. This applies to constructors, too: an SSQLS defines several constructors, but our derived class defines only one, causing that one to hide all of the ones in the base class. Many of the MySQL++ mechanisms that use SSQLSes rely on having these contructors, so our Derived above is-not-a Base, and so it isn’t an SSQLS. If you try to use Derived as an SSQLS, you’ll get compiler errors wherever MySQL++ tries to access one of these other constructors.

    There’s another minor flaw, as well. Our lone constructor above takes its parameters by value, but the corresponding constructor in the SSQLS takes them by const reference. Our derived class has technically hidden a fourth base class constructor this way, but this particular case is more a matter of efficiency than correctness. Code that needs the full-creation constructor will still work with our code above, but passing stringish types like sql_varchar by value instead of by const reference is inefficient.

    This is the corrected version of the above code:

    sql_create_2(
      Base, 1, 2,
      mysqlpp::sql_varchar, a,
      mysqlpp::sql_int, b
    );
    
    class Derived : public Base
    {
    public:
      // default constructor[14]
      Derived() :
      Base()
      {
      }
    
      // for-comparison constructor[15]
      Derived(const mysqlpp::sql_varchar& _a) :
      Base(_a)
      {
      }
    
      // full creation constructor
      Derived(const mysqlpp::sql_varchar& _a, const mysqlpp::sql_int& _b) :
      Base(_a, _b)
      {
      }
    
      // population constructor[16]
      Derived(const mysqlpp::Row& row) :
      Base(row)
      {
      }
    
      // functionality added to the SSQLS through inheritance
      bool do_something_interesting(int data);
    };

    Now Derived is-an SSQLS.

    You might wonder if you can use protected inheritance above to redefine the SSQLS’s public interface. For instance, OO purists might object to the public data members in an SSQLS. You could encapsulate these public data members in the derived class by using protected inheritance, exposing access to the base class’s data members with public accessor methods. The problem with this is that each SSQLS has dozens of public member functions. These are needed by MySQL++ internals, so unless you re-exposed all of them as we did with the constructors above, you’d again have an SSQLS derivative that is-not-an SSQLS. Simply put, only public inheritance is practical with SSQLSes.

    5.14. SSQLS and BLOB Columns

    It takes special care to use SSQLS with BLOB columns. It’s safest to declare the SSQLS field as of type mysqlpp::sql_blob. This is currently a typedef alias for String, which is the form the data is in just before the SSQLS mechanism populates the structure. Thus, when the data is copied from the internal MySQL++ data structures into your SSQLS, you get a direct copy of the String object’s contents, without interference.

    Because C++ strings handle binary data just fine, you might think you can use std::string instead of sql_blob, but the current design of String converts to std::string via a C string. As a result, the BLOB data is truncated at the first embedded null character during population of the SSQLS. There’s no way to fix that without completely redesigning either String or the SSQLS mechanism.

    The sql_blob typedef may be changed to alias a different type in the future, so using it instead of String ensures that your code tracks these library changes automatically. Besides, String is only intended to be an internal mechanism within MySQL++. The only reason the layering is so thin here is because it’s the only way to prevent BLOB data from being corrupted while avoiding that looming redesign effort.

    You can see this technique in action in the cgi_jpeg example:

    #include "cmdline.h"
    #include "images.h"
    
    #define CRLF            "\r\n"
    #define CRLF2           "\r\n\r\n"
    
    int
    main(int argc, char* argv[])
    {
        // Get database access parameters from command line if present, else
        // use hard-coded values for true CGI case.
        mysqlpp::examples::CommandLine cmdline(argc, argv, "root",
                "nunyabinness");
        if (!cmdline) {
            return 1;
        }
    
        // Parse CGI query string environment variable to get image ID
        unsigned int img_id = 0;
        char* cgi_query = getenv("QUERY_STRING");
        if (cgi_query) {
            if ((strlen(cgi_query) < 4) || memcmp(cgi_query, "id=", 3)) {
                std::cout << "Content-type: text/plain" << std::endl << std::endl;
                std::cout << "ERROR: Bad query string" << std::endl;
                return 1;
            }
            else {
                img_id = atoi(cgi_query + 3);
            }
        }
        else {
            std::cerr << "Put this program into a web server's cgi-bin "
                    "directory, then" << std::endl;
            std::cerr << "invoke it with a URL like this:" << std::endl;
            std::cerr << std::endl;
            std::cerr << "    http://server.name.com/cgi-bin/cgi_jpeg?id=2" <<
                    std::endl;
            std::cerr << std::endl;
            std::cerr << "This will retrieve the image with ID 2." << std::endl;
            std::cerr << std::endl;
            std::cerr << "You will probably have to change some of the #defines "
                    "at the top of" << std::endl;
            std::cerr << "examples/cgi_jpeg.cpp to allow the lookup to work." <<
                    std::endl;
            return 1;
        }
    
        // Retrieve image from DB by ID
        try {
            mysqlpp::Connection con(mysqlpp::examples::db_name,
                    cmdline.server(), cmdline.user(), cmdline.pass());
            mysqlpp::Query query = con.query();
            query << "SELECT * FROM images WHERE id = " << img_id;
            mysqlpp::StoreQueryResult res = query.store();
            if (res && res.num_rows()) {
                images img = res[0];
                if (img.data.is_null) {
                    std::cout << "Content-type: text/plain" << CRLF2;
                    std::cout << "No image content!" << CRLF;
                }
                else {
                    std::cout << "X-Image-Id: " << img_id << CRLF; // for debugging
                    std::cout << "Content-type: image/jpeg" << CRLF;
                    std::cout << "Content-length: " <<
                            img.data.data.length() << CRLF2;
                    std::cout << img.data;
                }
            }
            else {
                std::cout << "Content-type: text/plain" << CRLF2;
                std::cout << "ERROR: No image with ID " << img_id << CRLF;
            }
        }
        catch (const mysqlpp::BadQuery& er) {
            // Handle any query errors
            std::cout << "Content-type: text/plain" << CRLF2;
            std::cout << "QUERY ERROR: " << er.what() << CRLF;
            return 1;
        }
        catch (const mysqlpp::Exception& er) {
            // Catch-all for any other MySQL++ exceptions
            std::cout << "Content-type: text/plain" << CRLF2;
            std::cout << "GENERAL ERROR: " << er.what() << CRLF;
            return 1;
        }
    
        return 0;
    }
    

    5.15. SSQLS and Visual C++ 2003

    SSQLS works on all platforms supported by MySQL++ except for Visual C++ 2003. (Because the rest of MySQL++ works just fine with Visual C++ 2003, we haven’t removed this platform from the supported list entirely.)

    If you do need SSQLS and are currently on Visual C++ 2003, you have these options:

    1. The simplest option is to upgrade to a newer version of Visual C++. The compiler limitations that break SSQLS are all fixed in Visual C++ 2005 and newer. Visual C++ Express is free and is apparently here to stay; coupled with the free wxWidgets library, it lacks little compared to Visual C++ Professional. A bonus of using wxWidgets is that it’s cross-platform and better-supported than MFC.

    2. If you can’t upgrade your compiler, you may be able to downgrade to MySQL++ v2.x. The SSQLS feature in these older versions worked with Visual C++ 2003, but didn’t let you use a given SSQLS in more than one module in a program. If you can live with that limitation and have a Perl interpreter on your system, you can re-generate lib/ssqls.h to remove the multiple-module SSQLS support. To do this, you run the command perl ssqls.pl -v from within MySQL++’s lib subdirectory before you build and install the library.

    3. There’s a plan to replace the current SSQLS mechanism with an entirely new code base. Although this is being done primarily to get new features that are too difficult to add within the current design, it also means we’ll have the chance to test step-by-step along the way that we don’t reintroduce code that Visual C++ 2003 doesn’t support. This may happen without you doing anything, but if there’s someone on the team who cares about this, that will naturally increase the chances that it does happen.



    [13] Programs built against versions of MySQL++ prior to 3.0 would crash at almost any mismatch between the database schema and the SSQLS definition. It’s no longer necessary to keep the data design in lock-step between the client and database server. A mismatch can result in data loss, but not a crash.

    [14] needed by mechanisms like Query::storein(); anything using an STL container, which usually require default ctors for contained data structures

    [15] takes the COMPCOUNT subset of the SSQLS’s data members, used for making comparison exemplars, used with Query::update() and similar mechanisms; see Section 5.1, “sql_create” for more on COMPCOUNT

    [16] used in taking raw row data from a SQL result set and converting it to SSQLS form

    mysql++-3.3.0/doc/html/userman/breakages.html000644 000765 000024 00000166740 14042362131 021622 0ustar00tangentstaff000000 000000 10. Incompatible Library Changes

    10. Incompatible Library Changes

    This chapter documents those library changes since the epochal 1.7.9 release that break end-user programs. You can dig this stuff out of the ChangeLog.md file, but the change log focuses more on explaining and justifying the facets of each change, while this section focuses on how to migrate your code between these library versions.

    Since pure additions do not break programs, those changes are still documented only in the change log.

    10.1. API Changes

    This section documents files, functions, methods and classes that were removed or changed in an incompatible way. If your program uses the changed item, you will have to change something in your program to get it to compile after upgrading to each of these versions.

    v1.7.10

    Removed Row::operator[]() overloads except the one for size_type, and added Row::lookup_by_name() to provide the “subscript by string” functionality. In practical terms, this change means that the row["field"] syntax no longer works; you must use the new lookup_by_name method instead.

    Renamed the generated library on POSIX systems from libsqlplus to libmysqlpp.

    v1.7.19

    Removed SQLQuery::operator=(), and the same for its Query subclass. Use the copy constructor instead, if you need to copy one query to another query object.

    v1.7.20

    The library used to have two names for many core classes: a short one, such as Row and a longer one, MysqlRow. The library now uses the shorter names exclusively.

    All symbols within MySQL++ are in the mysqlpp namespace now if you use the new mysql++.h header. If you use the older sqlplus.hh or mysql++.hh headers, these symbols are hoist up into the global namespace. The older headers cause the compiler to emit warnings if you use them, and they will go away someday.

    v2.0.0

    Connection class changes
    • Connection::create_db() and drop_db() return true on success. They returned false in v1.7.x! This change will only affect your code if you have exceptions disabled.

    • Renamed Connection::real_connect() to connect(), made several more of its parameters default, and removed the old connect() method, as it’s now a strict subset of the new one. The only practical consequence is that if your program was using real_connect(), you will have to change it to connect().

    • Replaced Connection::read_option() with new set_option() mechanism. In addition to changing the name, programs using this function will have to use the new Connection::Option enumerated values, accept a true return value as meaning success instead of 0, and use the proper argument type. Regarding the latter, read_option() took a const char* argument, but because it was just a thin wrapper over the MySQL C API function mysql_options(), the actual value being pointed to could be any of several types. This new mechanism is properly type-safe.

    Exception-related changes
    • Classes Connection, Query, Result, ResUse, and Row now derive from OptionalExceptions which gives these classes a common interface for disabling exceptions. In addition, almost all of the per-method exception-disabling flags were removed. The preferred method for disabling exceptions on these objects is to create an instance of the new NoExceptions class on the stack, which disables exceptions on an OptionalExceptions subclass as long as the NoExceptions instance is in scope. You can instead call disable_exceptions() on any of these objects, but if you only want them disabled temporarily, it’s easy to forget to re-enable them later.

    • In the previous version of MySQL++, those classes that supported optional exceptions that could create instances of other such classes were supposed to pass this flag on to their children. That is, if you created a Connection object with exceptions enabled, and then asked it to create a Query object, the Query object also had exceptions disabled. The problem is, this didn’t happen in all cases where it should have in v1.7. This bug is fixed in v2.0. If your program begins crashing due to uncaught exceptions after upgrading to v2.0, this is the most likely cause. The most expeditious fix in this situation is to use the new NoExceptions feature to return these code paths to the v1.7 behavior. A better fix is to rework your program to avoid or deal with the new exceptions.

    • All custom MySQL++ exceptions now derive from the new Exception interface. The practical upshot of this is that the variability between the various exception types has been eliminated. For instance, to get the error string, the BadQuery exception had a string member called error plus a method called what(). Both did the same thing, and the what() method is more common, so the error string was dropped from the interface. None of the example programs had to be changed to work with the new exceptions, so if your program handles MySQL++ exceptions the same way they do, your program won’t need to change, either.

    • Renamed SQLQueryNEParams exception to BadParamCount to match style of other exception names.

    • Added BadOption, ConnectionFailed, DBSelectionFailed, EndOfResults, EndOfResultSets, LockFailed, and ObjectNotInitialized exception types, to fix overuse of BadQuery. Now the latter is used only for errors on query execution. If your program has a “catch-all” block taking a std::exception for each try block containing MySQL++ statements, you probably won’t need to change your program. Otherwise, the new exceptions will likely show up as program crashes due to unhandled exceptions.

    Query class changes
    • In previous versions, Connection had a querying interface similar to class Query’s. These methods were intended only for Query’s use; no example ever used this interface directly, so no end-user code is likely to be affected by this change.

    • A more likely problem arising from the above change is code that tests for query success by calling the Connection object’s success() method or by casting it to bool. This will now give misleading results, because queries no longer go through the Connection object. Class Query has the same success-testing interface, so use it instead.

    • Query now derives from std::ostream instead of std::stringstream.

    Result/ResUse class changes
    • Renamed ResUse::mysql_result() to raw_result() so it’s database server neutral.

    • Removed ResUse::eof(), as it wrapped the deprecated and unnecessary MySQL C API function mysql_eof(). See the simple3 and usequery examples to see the proper way to test for the end of a result set.

    Row class changes
    • Removed “field name” form of Row::field_list(). It was pointless.

    • Row subscripting works more like v1.7.9: one can subscript a Row with a string (e.g. row["myfield"]), or with an integer (e.g. row[5]). lookup_by_name() was removed. Because row[0] is ambiguous (0 could mean the first field, or be a null pointer to const char*), there is now Row::at(), which can look up any field by index.

    Miscellaneous changes
    • Where possible, all distributed Makefiles only build dynamic libraries. (Shared objects on most Unices, DLLs on Windows, etc.) Unless your program is licensed under the GPL or LGPL, you shouldn’t have been using the static libraries from previous versions anyway.

    • Removed the backwards-compatibility headers sqlplus.hh and mysql++.hh. If you were still using these, you will have to change to mysql++.h, which will put all symbols in namespace mysqlpp.

    • Can no longer use arrow operator (->) on the iterators into the Fields, Result and Row containers.

    v2.2.0

    Code like this will have to change:

    query << "delete from mytable where myfield=%0:myvalue";
    query.parse();
    query.def["myvalue"] = some_value;
    query.execute();

    ...to something more like this:

    query << "delete from mytable where myfield=%0";
    query.parse();
    query.execute(some_value);

    The first code snippet abuses the default template query parameter mechanism (Query::def) to fill out the template instead of using one of the overloaded forms of execute(), store() or use() taking one or more SQLString parameters. The purpose of Query::def is to allow for default template parameters over multiple queries. In the first snippet above, there is only one parameter, so in order to justify the use of template queries in the first place, it must be changing with each query. Therefore, it isn’t really a “default” parameter at all. We did not make this change maliciously, but you can understand why we are not in any hurry to restore this “feature”.

    (Incidentally, this change was made to allow better support for BLOB columns.)

    v2.3.0

    Connection::set_option() calls now set the connection option immediately, instead of waiting until just before the connnection is actually established. Code that relied on the old behavior could see unhandled exceptions, since option setting errors are now thrown from a different part of the code. You want to wrap the actual set_option() call now, not Connection::connect()

    FieldNames and FieldTypes are no longer exported from the library. If you are using these classes directly from Visual C++ or MinGW, your code won’t be able to dynamically link to a DLL version of the library any more. These are internal classes, however, so no one should be using them directly.

    v3.0.0

    Class name changes

    Several classes changed names in this release:

    • ColData is now String.

    • NullisBlank is now NullIsBlank. (Note the capital I.) Similar changes for NullisNull and NullisZero.

    • ResNSel is now SimpleResult.

    • Result is now StoreQueryResult.

    • ResUse is now UseQueryResult.

    • SQLString is now SQLTypeAdapter.

    When first building existing code against this version, you may find it helpful to define the macro MYSQLPP_OLD_CLASS_NAMES in your program’s build options. This will turn on some macros that set up aliases for the new class names matching their corresponding old names. Then, when you’ve fixed up any other issues that may prevent your program from building with the new MySQL++, you can turn it back off and fix up any class name differences.

    If you were only using ColData in a BLOB context, you should use sql_blob or one of the related typedefs defined in lib/sql_types.h instead, to insulate your code from changes like these.

    The SQLString change shouldn’t affect you, as this class was not designed to be used by end user code. But, due to the old name and the fact that it used to derive from std::string, some might have been tempted to use it as an enhanced std::string. Such code will undoubtedly break, but can probably be fixed by just changing it to use std::string instead.

    Connection class changes

    The option setting mechanism has been redesigned. (Yes, again.) There used to be an enum in Connection with a value for each option we understood, and an overload of Connection::set_option() for each argument type we understood. It was possible to pass any option value to any set_option() overload, and the problem would only be detected at run time. Now each option is represented by a class derived from the new Option abstract base class, and set_option() simply takes a pointer to one of these objects. See examples/multiquery.cpp for the syntax. Since each Option subclass takes only the parameter types it actually understands, it’s now completely type-safe at compile time.

    The new option setting mechanism also has the virtue of being more powerful so it let us replace several existing things within Connection with new options:

    • Replaced enable_ssl() with SslOption.

    • Replaced the compress parameter to the Connection create-and-connect constructor and Connection::connect() method with CompressOption.

    • Replaced the connect_timeout parameter with ConnectTimeoutOption.

    • Defined Option subclasses for each of the flags you would previously set using the client_flag parameter. There are about a dozen of these, so instead of listing them, look in lib/options.h for something with a similar name.

    Collapsed Connection’s host, port, and socket_name parameters down into a new combined server parameter which is parsed to determine what kind of connection you mean. These interfaces are still compatible with v2.3 and earlier up through the port parameter.

    Moved Connection::affected_rows(), info() and insert_id() methods to class Query, as they relate to the most recently-executed query.

    Changed the return type of Connection::ping() from int to bool. If you were calling ping() in bool context or using its return value in bool context, you will need to reverse the sense of the test because the previous return code used zero to mean success. Now it returns true to indicate success.

    Renamed several methods:

    • Use client_version() instead of api_version() or client_info().

    • Use ipc_version() instead of host_info().

    • Use protocol_version() instead of proto_info().

    • Use server_version() instead of server_info().

    • Use status() instead of stat().

    Also, removed close() in favor of disconnect(), which has always done the same thing.

    Date and Time class changes

    The sql_timestamp typedef is now an alias for DateTime, not Time.

    There used to be implicit conversion constructors from ColData (now String), std::string and const char* for the Date, DateTime, and Time classes. It’s still possible to do these conversions, but only explicitly. (This had to be done to make Null<T> work in SSQLSes.)

    The most likely place to run into problems as a result of this change is in code like this:

    void some_function(const mysqlpp::DateTime& dt);
    
    some_function("2007-12-22");

    The function call needs to be changed to:

    some_function(mysqlpp::DateTime("2007-12-22"));
    Exception changes

    If an error occurs during the processing of a “use” query (as opposed to the initial execution) we throw the new UseQueryError exception instead of BadQuery.

    If you pass bad values to the Row ctor so that it can’t initialize itself properly, it throws the ObjectNotInitialized exception instead of BadQuery.

    Together, these two changes mean that BadQuery is now used solely to indicate a problem executing the actual SQL query statement.

    Field and Fields class changes

    Field is now a real C++ class, not just a typedef for the corresponding C API class. Major portability impacts are:

    • It has no public data members. Where sensible, there is a public accessor function of the same name as the corresponding field in the C API structure.

    • The main exception to this is the flags data member. This is a bitfield in the C API data structure and you had to use MySQL-specific constants to break values out of it. MySQL++’s new Field class provides a public member function returning bool for each of these flags.

    • The new class doesn’t include all of the data members from the C API version. We left out those that aren’t used within MySQL++ or its examples, or whose function we couldn’t understand. Basically, if we couldn’t document a reason to use it, we left it out.

    Fields used to be a std::vector work-alike which worked with the C API to access fields and return them as though they were simply contained directly within the Fields object. Now that we have a real MySQL++ class to hold information about each field without reference to the C API, we were able to replace the Fields class with:

    typedef std::vector<Field> Fields;

    If anything, this should give a pure superset of the old functionality, but it’s possible it could break end user code.

    Query class changes

    If you were using char as an 8-bit integer in query building, there are several places in MySQL++ v3 where it will now be treated as a single-character string. MySQL++ has had the tiny_int class for many years now specifically to provide a true 8-bit integer without the semantic confusion surrounding the old C char type. Either use tiny_int, or use the SQL type aliases sql_tinyint and sql_tinyint_unsigned instead.

    The ‘r’ and ‘R’ template query parameter modifiers were removed. They made the library do quoting and both quoting and escaping (respectively) regardless of the data type of the parameter. There are no corresponding Query stream manipulators, so for symmetery we had to decide whether to add such manipulators or remove the tquery modifiers. There should never be a reason to force quoting or escaping other than to work around a MySQL++ bug, and it’s better to just fix the bug than work around it, so removed the tquery modifiers.

    Query::store_next() and Result::fetch_row() no longer throw the EndOfResults and EndOfResultSets exceptions; these are not exceptional conditions! These methods simply return false when you hit the end of the result set now.

    Renamed Query::def to Query::template_defaults to make its purpose clearer.

    Removed Query::preview(). The most direct replacement for this set of overloaded methods is the parallel set of str() methods, which were just aliases before. (Chose str() over preview() because it’s standard C++ nomenclature.) But if you’re just looking to get a copy of a built query string and you aren’t using template queries, you can now insert the Query into a stream and get the same result.

    For example, a lot of code in the examples that used to say things like:

    cout << query.preview() << endl;

    now looks like this:

    cout << query << endl;
    Result, ResUse, and ResNSel class changes

    In addition to the class name changes described above, UseQueryResult is no longer StoreQueryResult’s base class. There is a new abstract class called ResultBase containing much of what used to be in ResUse, and it is the base of both of these concrete result set types. This should only affect your code if you were using ResUse references to refer to Result objects.

    Removed a bunch of duplicate methods:

    • Use num_fields() instead of columns().

    • Use field_names() instead of names().

    • Use num_rows() instead of rows().

    • Use field_types() instead of types().

    Renamed several methods for “grammar” reasons. For example, some methods returned a single object but had a “plural” name, implying that it returned a container of objects. In cases like this, we changed the name to agree with the return value. Some of these also fall into the duplicate method category above:

    • Use field(unsigned int) instead of fields(unsigned int).

    • Use field_num(const std::string&) instead of names(const std::string&).

    • Use field_name(int) instead of names(int).

    • Use field_type(int) instead of types(int).

    Removed several “smelly” methods:

    • purge(): was an internal implementation detail, not something for end user code to call

    • raw_result(): end user code shouldn’t be digging down to the C API data structures, but if you really need something like this, look at the implementation of Query::storein(). Its workings will probably be educational.

    • reset_names(): no reason to call this, especially now that the field name list is initialized once at startup and then never changed

    • reset_field_names(): just an alias for previous

    • reset_types(): same argument as for reset_names()

    • reset_field_types(): just an alias for previous

    ResUse::field_num() would unconditionally throw a BadFieldName exception when you asked for a field that doesn’t exist. Now, if exceptions are disabled on the object, it just returns -1.

    SimpleResult’s member variables are all now private, and have read-only accessor functions of the same name.

    Code like this used to work:

    mysqlpp::Row row;
    mysqlpp::Result::size_type i;
    for (i = 0; row = res[i]; ++i) {
      // Do something with row here
    }

    That is, indexing past the end of a “store” result set would just return an empty row object, which tests as false in bool context, so it ends the loop. Now that StoreQueryResult is a std::vector derivative, this either crashes your program or causes the standard library to throw an exception, depending on what debugging features your version of STL has. The proper technique is:

    mysqlpp::Row row;
    mysqlpp::StoreQueryResult::size_type i;
    for (i = 0; i < res.num_rows(); ++i) {
      row = res[i];
      // Do something with row here
    }

    ...or, in a more C++ish idiom:

    mysqlpp::Row row;
    mysqlpp::StoreQueryResult::const_iterator it;
    for (it = res.begin(); it != res.end(); ++it) {
      row = *it;
      // Do something with row here
    }
    Row class changes

    Removed Row::raw_data(), raw_size() and raw_string(). These were useful with BLOB data back when MySQL++ didn’t handle embedded null characters very well, and when copies of ColData objects were expensive. Neither is true now, so they have no value any more. Equivalent calls are:

    mysqlpp::String s = row[0];
    s.data();                          // raw_data() equivalent
    s.length();                        // raw_size() equivalent
    std::string(s.data(), s.length()); // raw_string() equivalent

    Row::operator[](const char*) would unconditionally throw a BadFieldName exception when you asked for a field that doesn’t exist. Now, if exceptions are disabled on the Row object, it just returns a reference to an empty String object. You can tell when this happens because such an object tests as false in bool context.

    Specialized SQL Structure (SSQLS) changes

    Renamed custom* to ssqls*. There is a backwards-compatibility header custom.h which includes ssqls.h for you, but it will go away in a future version of MySQL++.

    SSQLSes get populated by field name now, not by field order. In v2, it was absolutely required that your SSQLS had its fields declared in exactly the same order as the fields in the database server, and there could be no gaps. An ALTER TABLE command would almost always necessitate redefining the corresponding SSQLS and rebuilding your program. Some alterations actually made using SSQLS impossible. For the most part, this change just gives your program additional flexibility in the face of future changes. However, code that was taking advantage of this low-level fact will break when moving to v3. Before I explain how, let’s go over the high-level functional changes you’ll find in v3’s SSQLS mechanism.

    Because MySQL++ no longer needs the SSQLS field order to match the SQL field order, the sql_create_c_order_* SSQLS creation macro was dropped in v3. We were also able to drop the ordering parameters from sql_create_complete_*. That in turn means there is no longer a difference between the way it and sql_create_c_names_* work, so the latter was also dropped. Thus, there are now only two groups of SSQLS creation macros left: sql_create_*, which works pretty much as it always has, and sql_create_complete_*, which is the same except for the lack of ordering parameters.

    In general, you should be using sql_create_* for all SSQLSes unless you need to use different names for data members in C++ than you use for the corresponding columns in SQL. In that case, use sql_create_complete_* instead.

    In v2, it was possible to have different SQL column names than SSQLS data member names while still using sql_create_* if you only used SSQLS for data retrieval.[25] In v3, you must use sql_create_complete_* for absolutely all uses of SSQLS when you want the C++ field names to differ from the SQL column names.

    The new Null<T> support in SSQLSes causes an internal compiler error in Visual C++ 2003. (VC++ 2005 and newer have no trobule with it.) A poll on the mailing list says there aren’t many people still stuck on this version, so we just ifdef’d out the SSQLS mechanism and all the examples that use it when built with VC++ 2003. If this affects you, see Section 5.15, “SSQLS and Visual C++ 2003” for suggestions on ways to cope.

    If you are using types other than MySQL++’s sql_* ones [26] in your SSQLSes, code that previously worked may now see TypeLookupFailed exceptions. (This can be thrown even if exceptions are otherwise disabled in MySQL++.) This version of MySQL++ is stricter about mapping SQL to C++ type information, and vice versa. If the library can’t find a suitable mapping from one type system to the other, it throws this exception, because its only other option would be to crash or raise an assertion. This typically happens when building SQL queries, so you can probably handle it the same way as if the subsequent query excecution failed. If you’re catching the generic mysqlpp::Exception, your error handling code might not need to change. If you see this exception, it does mean you need to look into your use of data types, though. The table that controls this is mysql_type_info::types, defined at the top of lib/type_info.cpp. Every data type in lib/sql_types.h has a corresponding record in this table, so if you stick to those types, you’ll be fine. It’s also okay to use types your C++ compiler can convert directly to these predefined types.

    The _table static member variable for each SSQLS is now private. The recommended way to access this remains unchanged: the table() static member function.

    table() used to return a modifiable reference to the table name. Now there are two overloads, one which returns an unmodifiable pointer to the table name, and the other which takes const char* so you can override the default table name. So, the code we used to recommend for changing the SSQLS’s table name:

    my_ssqls_type::table() = "MyTableName";

    now needs to be:

    my_ssqls_type::table("MyTableName");
    Miscellaneous changes

    MySQL++ does quoting and escaping much more selectively now. Basically, if the library can tell you’re not building a SQL query using one of the standard methods, it assumes you’re outputting values for human consumption, so it disables quoting and SQL escaping. If you need to build your own mechanism to replace this, quoting is easy to do, and Query::escape_string() can do SQL escaping for you.

    Removed success() in Connection, Query and SimpleResult (neé ResNSel) and simply made these classes testable in bool context to get the same information. An additional change in Connection is that it used to be considered “unsuccessful” when the connection was down. Since the sense of this test is now whether the object is in a good state, it only returns false when the connection attempt fails. Call Connection::is_connected() if you just want to test whether the connection is up.

    The debug mode build of the library now has a "_d" suffix for Visual C++, and Xcode. This lets you have both versions installed without conflict. The release build uses the current naming scheme. If you have an existing program building against MySQL++ on these platforms, you’ll need to change your build options to use the new name in debug mode.

    Renamed NO_LONG_LONGS to MYSQLPP_NO_LONG_LONGS to avoid a risk of collision in the global macro namespace.

    v3.0.7

    Most MySQL++ classes with at() or operator []() methods now throw the new BadIndex exception when you pass an out-of-range index. These methods variously either did not check their indices, or threw std::out_of_range when passed a bad index.

    I say “most” because there is at least one MySQL++ class that doesn’t follow this rule. Fields is just a typedef for a specialization of std::vector, and the Standard has its own rules for index checking.

    10.2. ABI Changes

    This section documents those library changes that require you to rebuild your program so that it will link with the new library. Most of the items in the previous section are also ABI changes, but this section is only for those items that shouldn’t require any code changes in your program.

    If you were going to rebuild your program after installing the new library anyway, you can probably ignore this section.

    v1.7.18

    The Query classes now subclass from stringstream instead of the deprecated strstream.

    v1.7.19

    Fixed several const-incorrectnesses in the Query classes.

    v1.7.22

    Removed “reset query” parameters from several Query class members. This is not an API change, because the parameters were given default values, and the library would ignore any value other than the default. So, any program that tried to make them take another value wouldn’t have worked anyway.

    v1.7.24

    Some freestanding functions didn’t get moved into namespace mysqlpp when that namespace was created. This release fixed that. It doesn’t affect the API if your program’s C++ source files say using namespace mysqlpp within them.

    v2.0.0

    Removed Connection::infoo(). (I’d call this an API change if I thought there were any programs out there actually using this...)

    Collapsed the Connection constructor taking a bool (for setting the throw_exceptions flag) and the default constructor into a single constructor using a default for the parameter.

    Classes Connection and Query are now derived from the Lockable interface, instead of implementing their own lock/unlock functions.

    In several instances, functions that took objects by value now take them by const reference, for efficiency.

    Merged SQLQuery class’s members into class Query.

    Merged RowTemplate class’s members into class Row.

    Reordered member variable declarations in some classes. The most common instance is when the private section was declared before the public section; it is now the opposite way. This can change the object’s layout in memory, so a program linking to the library must be rebuilt.

    Simplified the date and time class hierarchy. Date used to derive from mysql_date, Time used to derive from mysql_time, and DateTime used to derive from both of those. All three of these classes used to derive from mysql_dt_base. All of the mysql_* classes’ functionality and data has been folded into the leaf classes, and now the only thing shared between them is their dependence on the DTbase template. Since the leaf classes’ interface has not changed and end-user code shouldn’t have been using the other classes, this shouldn’t affect the API in any practical way.

    mysql_type_info now always initializes its private num member. Previously, this would go uninitialized if you used the default constructor. Now there is no default ctor, but the ctor taking one argument (which sets num) has a default.

    v3.0.0

    Removed reset_query parameters from Query member functions. None of these have been honored at least going back to v1.7.9, so this is not an API change. As of this version, Query now automatically detects when it can safely reset itself after executing a query, so it’s not necessary to ask for a reset except when using template queries.

    Removed overloads of Query::execute(), store(), and use() that take only a const char*. This is not an API change because there was an equivalent call chain for this already. This change just snaps a layer of indirection.

    Query::error() is now const and returns const char* instead of a std::string by value.

    Removed Lockable mechanism as it was conceptually flawed. Connection and Query consequently no longer derive from Lockable. Since it was basically useless in prior versions, it can’t be construed as an API change.

    v3.0.1

    Connection::thread_aware(), thread_start() and thread_end() are now static methods, so a program can call them before creating a connection. Ditto for DBDriver methods of the same name.

    ConnectionPool::release() is now virtual, so a subclass can override it.

    v3.0.2

    ConnectionPool::grab() is now virtual; same reason as above.

    Query can now be tested in bool context, as was intended for v3.0.0. Had to change the “safe bool” method signature to make it happen, so technically it’s an API change, but it’s still used the same way.

    v3.1.0

    The addition of a few new virtual methods to ConnectionPool inadvertently changed the library ABI. I knew adding fields changed the ABI, but erroneously assumed that the inverse of that truth — that adding methods was always safe — was also true. Adding normal methods is safe, but adding virtual methods breaks the ABI because it changes the class’s vtable size.

    That left us with two bad choices: either we could come out with a 3.1.1 that removed these methods to restore the prior ABI, or we could just declare this the “new ABI” and move on, resolving not to fall into this trap again. We’ve chosen the latter path.



    [25] In MySQL++ v2, data retreival (Query::storein(), SSQLS(const Row& other), etc.) worked fine regardless of whether your SSQLS field names matched those in the corresponding SQL table, because the SSQLS was populated by position, not by field name. Thus, if all you used SSQLS for was data retrieval, you could define your structures with sql_create_* in v2. This was never recommended, because such an SSQLS wouldn’t work with other features of MySQL++ like Query::insert() because they depend on being able to map names from C++ to SQL and back. You needed to use sql_create_c_names_* to make these features work in v2 in the face of a naming scheme difference between C++ and SQL.

    [26] These typedefs have been available since MySQL++ v2.1.

    mysql++-3.3.0/doc/pdf/userman.pdf000644 000765 000024 00001445002 14042362131 017300 0ustar00tangentstaff000000 000000 %PDF-1.4 %âãÏÓ 143 0 obj <> stream xÚ…Ý[odWråñw}Š|m§÷>±/Ou[m7¦eZ2 t‰jÑS"eKmͧŸ<'yÉ ã¿`Ø(y«~E•bsg¬,»ïþòEÙ}÷áðþáð¿þâ·ß}ñw¿/»Å÷cØî»¾¨»røŸº«fû%vmŽ}¯‡ä§/þêë_¿ýæ¿ùÍîÛÛ¾ìþåÓíãîë›û¿þî?_?Ê}Ù÷yþaŸo>®üÝï?©ïýô“,1¶ÏÛzÙ·eÙÿ_§?ßÒú~ÖåìÛ³zì}´³~¹»ß}ùôïî?=œýâ–¨û9Ÿ-¿?>ûíÝýݧ›Ý×wï~9}ÖÛ7;öá?Ï>õáÿ½÷ZÏùåîÃùgŒ}é¾kÖö¥ùúáþé×ÝÙS³°–³§þõîûÛû»ÏŸÎ1ê>–ÃïµpÇósç¾÷³noïÏ>Õ²­ž=õo猽ÇYþðùþϯˆåôðð)—õ뤔ýÒÚöðï~>ýéærHΟøõñôzHºŸ?q÷çŸvÇϸ\|ÆZç¾]<þ凜÷}uéûåâé]süíRJý›ÝáÿÆá‡uîοðüðxœØùžÇ>êù§_x»ÿ«‡ÇsÕÃN¿ü]ÞÝß|ÜÝ|~úñáñßÿúovÛ¿b»/{öïÔáwPçùþÍî«ï?¸yº{X?þìéqøýŽó§¿;{àðçqùÓÝ~øñþáãß=ûŽÃƒ%v1ƾxÝüÓí§‡Ïn?]þ;X¿³èõõÁ/~<ÿ?üóGî>>Åú°ÔãÝáÁõ×~öÕµì_ñû1íú72ê¾öv–ßüÇù×ÕúÄÙow?ì~wøWðöþéø›ØG[ÿVü»ßÛåWöásÛϾ}dÝïþpÿôøp`_Õ×-ëǽý}ÙNߟýBlæ™/d#Ï¢BæõùÈ« :ϲžg‡ :Ï ²Ù̳Ãg¸tpéàÒÁe€Ë—.\&¸Lp™¹Ë:Aç™C–»¬tžd ²Üe ó, ————. \¸tpéàÒÁ¥ƒË—.\&¸Lp™¹Ë:Aç™AÖ Ë]Ö :ϲÜe óÌ!————. \¸4péàÒÁ¥ƒË—.\&¸Lp™à2s—u‚γ€,wY'èßFèe¿ûÃçSôbûºþÝúöØ¿çsoõ,ø¼ûÇ›ó˜Ã$¿þÝýöÌ/çùØ?Ëowß|¾ý´ÞI}Úï÷×Óym‡Ÿqœ~ÄÅ÷ð'çË"òùàܪÈ]äs/"7‘ ?~!üBø…ðk¯ ¿&üºðë¯ ¿.ü†ðÂo¿)ü¦ð›ìg¥ˆÜDÞDÎ~V‘‡ÈÙÏ–*r¹ð3ágÂÏ„Ÿ ?~.ü\ø…ð ᯠ¿&üšðk¯ ¿.üºðÂo¿!ü¦ð›Âo ¿É~^‘‡ÈÙÏk¹‹œý|)"7‘7‘ ?~&üLø¹ðsáçÂ/„_¿~!üšðk¯ ¿.üºðëÂo¿!ü†ðÂo ¿)ü&ûE©"w‘³_Ô"ry9û…8„8Drþ¸:àÅõAÃ×—íŸþrú²@_gæã#‡cà?ŸÐãàú}ê·'n¹»=¿miûõ[oüåúÕ„ë÷›Þ¸x5aÌ kÍ<ó²€läÙúý¦4sÈÀ¥K—. \:¸tpéà2Àe€Ë— .\&¸ÌÜe}…bžd¹Ëú Å9ß¾}Ayˆ|p¾]ŸRî"ðsáçÂÏ…_¿~!üšðk¯ ¿.üºðë¯ ¿!ü†ðÂo ¿)ü&û¯O)7‘7‘³ßñú”ò9û¯O)w‘ ?~&üLø™ðsáçÂÏ…_¿~!üšðk¯ ¿&üºðë¯ ¿!ü†ðÂo ¿)ü¦ð›ìw¼>¥¥ÜDÞD.üLø™ð3áçÂÏ…Ÿ ¿~!üBø…ðk¯ ¿&üºðë¯ ¿!ü†ðÂo¿)ü¦ð›ìw¼>¥ÜEÎ~!Î!Î!Î!Î!Î!Αœ?®pq}Ðx9éÍ«“žÛÛIo¹>éõ»ÆoϬ'½o>ß>þšòêË‘g}‹ÈCäóåå‹(Í]äó—/¢47‘7‘³ßë!6ÍCäÂÏ„Ÿ ?~.ü\ø¹ðsáÂ/„_¿&üšðk¯ ¿.üºðëÂo¿!ü†ð›Âo ¿É~¯‡Ø47‘7‘³ßë!6ÍCäì÷zˆMs¹ð3ágÂÏ„Ÿ ?~.ü\ø…ð ᯠ¿&üšðk¯ ¿.üºðÂo¿!ü¦ð›Âo ¿É~¯‡Ø4‘³ßë!6Í]äì÷zˆMsy¹ð3ágÂÏ„Ÿ ?~.üBø…ð ᯠ¿&üšðë¯ ¿.ü†ðÂo?qþpqþpqþpqþqþqþqþqþqþqþqþqþqþˆäüqu6ëƒÆó!vŒ¸<ÄZ};ÄÚ~÷§ÛOŸ?>í¾½=öŠžP×ëx«ùËOÓlæÙzŸfÙȳõ:>Ͳžgëu|šË—™»l/?M³€,wÙ^~šfYî²½ü4Í ²¸¸¸¸8¸8¸8¸¸¸¸¸4piàÒÀ¥ƒK—.\¸ pà2Áe‚ËÌ]¶—ŸÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûÔûØe½ÏÅY-·Û8¾Fµ´Ëó\oç9ßï¾úï·?oµ:ïçêÌsi6ólýòN³€läÙúåfYϳõË;ÍÀe‚ËÌ]¶ã\šd¹ËvœK3‡,wÙŽsif5ÈÀÅÀÅÀÅÀÅÁÅÁÅÁ%À%À%À%À¥K—.\:¸tpà2Àe€Ë— .\fî²çÒÌ!Ë]¶ã\šd ²Üe;Î¥Y@........... \¸4péàÒÁ¥ƒK—.\¸Lp™à2s—í8—fYƒ,wÙŽsiå.Ûq.Í2p1p1p1p1pqpqpqp p p piàó®Ã¼ë0ï:Ì»ó®Ã¼ë0ï:Ì»ó®Ã¼ë0ï:Ì»ónÀ¼0ïÌ»ónÀ¼0ïÌ»ónÀ¼ïÌ»—'µ8Ÿmûñ=Ö·<¯è)¯ ‡vþÓaûõ—÷–Ÿ¿©àدCÔ[úùéáñîø¦çgÀõï­’´£¬o¥™CÖólý{«@ëOÖŸ­?Z ´þhý)ÐúS õ§@ëOÖŸ­?Z ´þhý)ÐúS õ§@ëOÖŸ­?Z ´þhý)ÐúS õ§@ëOÖŸ­?Z ´þhý)ÐúS õ§@ëOÖŸ­?Z ´þhý)ÐúS õ§@ëOÖŸ­?Z ´þhý)ÐúS õ§@ëOÖŸ­?Z ´þhý)ÐúS õ§@ëOÖŸ­?Z ´þhý)ÐúS õ§@ëOÖŸ­?Z ´þhý)ÐúS õ§@ëOÖŸ­?Z ´þhý)ÐúS õ§@ëOÖŸ­?Z ´þhý)ÐúS õ§@ëOÖŸ­?Z ´þhý)ÐúS õ§@ëOÖŸ­?Z ´þhý)ÐúS õ§@ëOÖŸ­?Z ´þhý)ÐúS õ§@ëOÖŸ­?Z ´þhý)ÐúS õ§@ëOÖŸ­?Z ´þhý)ÐúS õ§@ëOÖŸ­?Z ´þ\fgð8ŸmÇñj¶^®‚ÚŒ·szÝïþôùþþîþÏ»§ow_ý÷ÍO?¼½¾]Ï 'xufÈ3‡¬çÙÁ0Ï ²Ù̳Ù!Ï2pqpqpqp p p p piàÒÀ¥K—.\¸ pà2Àe‚Ë—™»¬g†æÝ~˜<˜¿ôÃ之¼sþ¼Ÿ™ç&ò&òÉù²ˆhÌãƒåp´¿8¤öúvHµËCêá¼~öí™/w_?<®ïhq8¡Þ}¸yºý>=®.ÏoI{òÑ—W="w‘wΟߒ6ÏMäMä“óç·¤Íó¹ðë¯ ¿.ü†ðÂo¿!ü¦ð›Âo²Ÿ•*r9ûY-"7‘7‘³Ÿ-‹ÈCäÂÏ„Ÿ ?~.ü\ø¹ðsáÂ/„_¿&üšðk¯ ¿.üºðëÂo¿!ü†ð›Âo ¿É~^ŠÈMäMäìçuyˆœý|©"w‘ ?~&üLø™ðsáçÂÏ…_¿~!üšðk¯ ¿&üºðë¯ ¿!ü†ðÂo ¿)ü¦ð›ìeyˆœý¢V‘»ÈÙ/–"ò÷ý®N±\AÕòüäe½‰Å|;ލz“zúøÅj”CÖól})Gšd ²™gëK9Ò, y6Áe‚ËÌ]–R 3Èd¹ËRȲÜeY*d¸¸¸¸¸8¸8¸8¸¸¸¸4piàÒÀ¥K—.\¸ pà2Áe‚Ë—™»XY Èr«2‡,w±¥@f5ÈÀÅÀÅÀÅÀÅÁÅÁÅÁ%À%À%À%À¥K—.\:¸tpà2Àe€Ë— .\fîâ¥Bæå.^ dYƒ,wñe, ———˜wæ]‡y×aÞu˜wæ]‡y×aÞu˜wæ]‡y×aÞu˜wæÝ€y7`Þ ˜wæÝ€y7`Þ ˜wãy·\U˜œÔz|h¹>³ùI‰Iìwß|~xZ—£nî¿ß}õéÃÍχxg9êùôëiáç/§ß4w‘wÎ_N¿in"o"ŸœÛ"rágÂÏ…Ÿ ?~!üBø…ð áׄ_~Møuá×…_~Cø á7„ß~SøMá7Ùïõö-Í]äì÷zû–æ&ò&rö{½}Kó¹ð3ágÂÏ„Ÿ ?~.ü\ø…ð ᯠ¿&üšðë¯ ¿.üºðÂo¿!ü¦ð›Âo²ßëí[š›È›ÈÙïõö-ÍCäì÷zû–æ.rágÂÏ„Ÿ ?~.ü\ø¹ð áÂ/„_~Mø5áׄ_~]øuá7„ß~CøMá7…ß~“ý^oßÒÜV{>øåœ¿œTSôýîoî¿ÿ¸ÞÙ¬ƒþ?}þøñ½6»rúa×/K³Ù̳Õ7Ͳ‘gK…Ì!ëyfàbàbàbàâàâàâààààÒÀ¥K—.\:¸tpà2Àe€Ë— .\fî²'Ò, Ë]¶óDš9d¹ËvžH3ƒ¬A........... \¸4péàÒÁ¥ƒË—.\¸Lp™à2s—í<‘fYî²'ÒÌ kå.Ûy"Í2p1p1p1pqpqpqpqp p p piàÒÀ¥K—.\:¸ pà2Àe‚Ë—™»Ì»ónÀ¼0ïÌ»ónÀ¼0ïÆ;óîåI!ÎgÛLJ“äÅq¢ž”Œýîë_çˆßüæ\¼Ò~ý£{ôÓîÛŸo?ÜÝ|Ü}ûô¸>.Fîíráíñï._µ~Q¿Åï_.¬Ãk­ùðšeëðšfYƒlæY_ ÈFž ¸ p™à2Áe‚ËÌ]¶á5ͲÜe^ÓÌ!Ë]¶á5Í ²¸¸¸¸8¸8¸8¸¸¸¸¸4piàÒÀ¥ƒK—.\¸ pà2Áe‚ËÌ]¶á5ͲÜe^ÓÌ kå.Ûðšf¸¸¸¸8¸8¸8¸8¸¸¸¸4piàÒÀ¥ƒK—.\¸ pà2Áe‚ËÌ]¶á5Í ²Yî² ¯iå.Ûðšf×.—sé6¼¾=SÛsWÖá?çÓë2OvÎç~÷÷·7Û÷Âÿr÷ôãî·w÷7¿n/~¹ž.—zúÁWßNγžg‡_užd ²™g¾@< p p piàÒÀ¥K—.\:¸ pà2Àe‚Ë— .3wY'ò< Èr—u"Ï3‡,wY'ò<3ÈdàbàbàbàâàâàâàààààÒÀ¥K—.\:¸ pà2Àe€Ë— .3wY'òz=÷|W5Í|, y2‡¬çÙ:÷|W5ÏÀ¥K—.\¸ pà2Áe‚Ë—™»lówÏwUó,wÙæïžïªæYî²Íß=ßUͳ¸¸¸¸8¸8¸8¸¸¸¸¸4piàÒÀ¥ƒK—.\¸ pà2Áe‚ËÌ]¶ù»ç»ªy–»lówÏwUó¬A–»lówÏwUó \ \ \ \\\\\\\\¸4piàÒÁ¥ƒK—.\¸ p™à2Áeæ.ÛüÝó]Õü\±áß»ýðy{߀ß=|»ûááq÷Õ͇/'ûÃß5^Î>ì/»?Üïn^ßÞ>] øÇðìƒÞ!ß@ÊMäMä“óm¤8ß@Ê…Ÿ ?~.ü\ø¹ð áÂ/„_~Mø5á×…_~]øuá7„ß~CøMá7…ßd¿ãH¹‰¼‰œýŽ å!rö;€”»È…Ÿ ?~&üLø¹ðsáçÂ/„_¿~Mø5áׄ_~]øuá×…ß~Cø á7…ß~SøMö;€”‡ÈÙï8Rî"g¿ãHùû~WcÝq<{p™Ç'[½œÿìd«òðX¿k{»½{÷Ï?g¯Ã¶Ó»~­µåo%›fë÷¾-+Ù<y¶TȲžgë·Ã ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?írñóü8ç³­•çíÐË#ÃrºöM,'ç‡ó™zÙ¯ããòþ"貌ý:=¿Åw?Ý>|~zçðÑλ&XÜ[`qoŽ÷XÜ[`qoŽ÷XÜ[`qoŽ÷XÜ[`qoŽ÷XÜ[`qoŽ÷XÜ[`qoŽ÷XÜ[`qoŽ÷XÜ[`qoŽ÷XÜ[`qoŽ÷XÜ[`qoŽ÷XÜ[`qoŽ÷XÜ[`qoŽ÷XÜ[`qoŽ÷XÜ[`qoŽ÷XÜ[`qoŽ÷XÜ[`qoŽ÷XÜ[`qoŽ÷XÜ[`qoŽ÷XÜ[`qoŽ÷XÜ[`qoŽ÷XÜ[`qoŽ÷XÜ[`qo¹\ܳ«YòdPôç7ÂéW{{õto¯m߀þðùññöþiÛλ»ý´{X_9ð6X¾3ÎÓŸçz¶«°Va)¬ÂRX…¥° Ka–Â*,…UX «°Va)¬ÂRX…¥° Ka–Â*,…UX «°Va)¬ÂRX…¥° Ka–Â*,…UX «°Va)¬ÂRX…¥° Ka–Â*,…UX «°Va)¬ÂRX…¥° Ka–Â*,…UX «°Va)¬ÂRX…¥° Ka–Â*,…UX «°Va)¬ÂRX…¥° Ka–Â*,…UX «°Va)¬ÂRX…¥° Ka–Â*,…UX «°Va)¬ÂRX…¥° Ka–Â*,…UX «°Va)¬ÂRX…¥° Ka–Â*,…UX «°Va)¬ÂRX…¥°zõ†ýz)ìdp{^ ëíê{…åt)¬ïwÿpû´½zô÷w·¿ß}}ûtó·¸ÿááñ§›÷'»X_1Ož‹+iyùä|[*£8ß–Ê(w‘w·ðÂo¿!ü¦ð›Âo²ßq©Œr9û_SL¹‰¼‰œýޝ)¦{ð8õ×ýg¯>>œê|}ᱟ±ÆÍÒãô³—þk±žõNâÛŸ~þxótûò­à«B=‹Oߟ¿—a…Ì!ëyv8ç™AÖ ›y6È2p™à2Áeæ.k7wžd ²Üe}½xžd¹Ëúzñ¸ž>þÝÅ¡íp|<ËÕùp}úµ åäC.féùàÜ«È]äó("7‘7‘OΛðk¯ ¿.üºðëÂo¿!ü†ðÂo ¿)ü&û½´*湋œý^ZóÜDÞDÎ~/­Šy"~&üLø™ðsáçÂÏ…Ÿ ¿~!üBø5áׄ_~]øuá×…_~Cø á7„ß~SøMö{iUÌsy9û½´*æyˆœý^ZóÜE.üLø™ð3ágÂÏ…Ÿ ?~!üBø…ðk¯ ¿&üšðë¯ ¿.ü†ðÂo¿)ü¦ð›Âo²ßK«bž‡ÈÙï¥U1Ï]äì÷Òª˜çïû]b^ZO´çRõ{ŒçÖßÎ;ËÛyçéÇÛÝÿ>?ÑÄÞ×o½¿}ÀÍãÍO·O·Ÿv7OmŒë–ìzÖ{{x+c¼\µ=ü+·]´d×vÙÏò»Ÿn¯ONÛd|öØ;“1å“óm2¦0?NÆ”»È;çÛdL¹‰¼‰œýŽ“1å!rágÂÏ„Ÿ ?~.ü\ø¹ð áÂ/„_~Mø5á×…_~]øuá7„ß~CøMá7…ßd¿ãdL¹‰¼‰œýŽ“1å!rö;NÆ”»È…Ÿ ?~&üLø¹ðsáçÂ/„_¿~Mø5áׄ_~]øuá×…ß~Cø á7…ß~SøMö;NÆ”‡ÈÙï8Sî"g¿ãdLùû~Wóîq2>zŸ«c‡]NÆo“±­Ý1?œ÷ýX_vðöØÍÚ~>4þ˽^Už<ó23_¿>l½ß‰È_Ï”dÛë™ÒÌ kÍ<[ïwÒ, y¶Þ酪C........... \¸4piàÒÁ¥ƒK—.\¸Lp™à2Áeæ.Ûë™"_kϳÜe{=Säkíy–»l¯gŠ|­=ÏdàbàbàbàâàâàâàààààÒÀ¥K—.\:¸ pà2Àe€Ë— .3wÙ^ÏùZ{žå.Ûë™"_kϳYî²½ž)òµö<————. \¸tpéàÒÁ¥ƒË—.\&¸À¼ë0ïÌ»ónÀ¼0ïÌ»ónÀ¼0ïÆ;óîÕù$·ۗSÌaô¹8ĸ½b|¿ûêññá1çÒm¿Ã-ßïH³€läÙúõ‘fYO³í<”fYƒ,wÙÎCiå.Ûy(Í2p1p1p1p1pqpqpqp p p piàÒÀ¥K—.\:¸ pà2Àe‚Ë— .3wÙÎCiå.Ûy(ͲÜe;¥™AÖ —————. \¸tpéàÒÁe€Ë—.\&¸Lp™¹ËvJ3‡,wÙÎCif5Èr—í<”f¸¸¸¸8¸8¸8¸8¸¸¸¸4piàÒÀ¥ƒK—.0ï:Ì»ó®Ã¼ë0ï:Ì»ónÀ¼0ïÌ»ónÀ¼0ïÌ»ón¼3ï^žtâ|¶õú|hírßß^w@b¿ûöçÛw7ïþßí÷»o¿ùãîÛ§ÇÏž>?¾·½ÿòê4Ë6Î'æËË«ÓÒ8yuZš»È;ç/¯NKsy¹ð3ágÂÏ„Ÿ ?~.üBø…ð ᯠ¿&üšðë¯ ¿.ü†ðÂo¿!ü¦ð›Âo²ßëvLš»ÈÙïu;Æ*oÇXåí«¼c•·c¬òvŒUÞŽ±ÊÛ1Vy;Æ*oÇXåí«¼c•·c¬òvŒUÞŽ±ÊÛ1Vy;Æ*oÇXåí«¼c•·c¬òvŒUÞŽ±ÊÛ1Vy;Æ*oÇXåí«¼c•·c¬òvŒUÞŽ±ÊÛ1Vy;Æ*oÇXåí«¼c•·c¬òvŒUÞŽ±ÊÛ1Vy;Æ*oÇXåí«¼c•·c¬òvŒUÞŽ±ÊÛ1Vy;Æ*oÇXåí«¼c•·c¬òvŒUÞŽ±ÊÛ1Vy;Æ*oÇXåí«¼c•·c¬òvŒUÞŽ±ÊÛ1Vy;Æ*oÇXåí«¼c•·c¬òvŒUÞŽ±ÊÛ1vù–Ó‡À¸>hør|r^-ÇÔùvZ¬ûݧÿúø><ÞÞ<ݾßîVgÞî–fYϳõ»!if5Èfž­ß I³€ \&¸Lp™¹Ëvû—fYƒ,wÙnÿjþnày–»l·57ð<————. \¸4péàÒÁ¥ƒË—.\&¸Lp™à2s—íö¯æïžg¹ËvûWówϳÜe»ý«ù»çYƒ \ \ \ \\\\\\\\¸4piàÒÁ¥ƒK—.\¸ p™à2Áeæ.Ûí_Íß <Ïr—íö¯æïžg ²Üe»ý«ù»ç¸¸¸¸8¸8¸8¸8¸¸¸À¼ë0ï:Ì»ó®Ã¼ë0ï:Ì»ó®Ã¼ë0ï:Ì»ó®Ã¼ë0ïÌ»ónÀ¼0ïÌ»ónÀ¼0ïÆ;óîåI-ÎgÛ—ã\µ«r·ÒßÎskÙÁ·ßüñÛÝï~úùæñîÓúÞ÷ßïþp÷´] &ïóórR:_„¤¹‹¼sþr’æ&ò&òÉùËEHé|R:_„”Î!¥óEHé|R:_„”Î!¥óEHé|R:_„”Î!¥óEHé|R:_„”Î!¥óEHé|R:_„”Î!¥óEHé|R:_„”Î!¥óEHé|R:_„”Î!¥óEHé|R:_„”Î!¥óEHé|R:_„”Î!¥óEHé|R:_„”Î!¥óEHé|R:_„”Î!¥óEHé|R:_„”Î!¥óEHé|R:_„”Î!¥óEHé|R:_„”Î!¥óEHé|R:_„”Î!¥óEHé|R:_„”Î!¥óEHé|R:_„”Î!¥óEHé|R:_„”Î!¥óEHé|R:_„”Î!¥óEHé|R.Ë.æá׋·Ýž ÅÆeÂŒ·ÁÙö»?Ý>=ÞÝž}OÞÆÞzœ<øËZ#öýÍÓÍ»[F3Òk†4Š<it8s¥‘çQÏ¢õ‚aæm 3/[˜y×ÂÌ«fÞ´0ó¢…™÷,̼faæ- 3/Y˜yÇÂÌ+fÞ°0ó‚…™÷+̼^aæí 3/W˜y·ÂÌ«fÞ¬0ób…™÷*̼Vaæ­ 3/U˜y§ÂÌ+fÞ¨0óB…™÷)̼Naæm 3/S˜y—ÂÌ«fÞ¤0ó"…™÷(̼Faæ- 3/Q˜y‡ÂÌ+fÞ 0ó…™÷'̼>aæí 3/O˜ywÂÌ«fÞœ0óâ„™÷&̼6aæ­ 3/M˜ygÂÌ+fÞ˜0ó„™÷%̼.aæm 3/K˜yWÂÌ«fÞ”0󢄙÷$̼&aæ- 3/I˜yGÂÌ+fÞ0ó‚„™÷#̼aæí3/G˜y7ÂÌ«fÞŒ0ób„™÷"̼aæ­3/E˜y'ÂÌ+fÞˆ0óB„™÷!̼aæm3/C˜yÂÌ«fÞ„0ó"„™÷ ̼aæ-3/A˜yÂÌ+æeÂÅ¡$Î&O÷ç‹¿<¹ {;¹\¼Åg­¶‡¿óÞùòûïóSËá«rXúb¬4²~‡¯ÎxxàõÇvøáñÙõG?~ñÃñ´ôÛïNfÛÇ.|ødýÔ«_Àéçï‡Ùõåûåå]þÃëê¾ÇñWðúã㯡~[Û'(ëO¼þ&wgÿÌù7_ü×ëפÏõӵßêÛÊöyŽO¼üóÛ/óãÿº»?ü\ÿUûS“ endstream endobj 144 0 obj 12572 endobj 223 0 obj <> stream xÚ…ÝÛr$וÞñ{>E]Ú–¦œ;×aïå;‘"ÈM45²/¡n„£ ÑhQôCù]™…*ÔiýWLL_ˆþQèZ»r;§í<6ßÿòÕ´ùþýWÓñþ¸ûÿ¿úúû¯þûdÓvá_µÍ´û¿¶ ßôÖ¶Þ7ßúê¿ØÖ¶›ïž><üðëÃã›w/wÿõûÿ½|»_ޝh=N_²].8fc†Ì y 2…¬§ÙÛZÛ_$ýìªÝ`âoë!ßnÞ½<=/«¡wïþãÛw÷Ÿ7›‹uÆÖvï¿'/ûÝçÏOïî^Îç`ÝÚtvÝ?.æä­ØY~¿ùæéñåîáñþùóÕ:l™¯N®½š¯ò,ÒLξ«ù*ÏFžíæ«Í2‡,wYçù43Èrƒy×nÌ»W“º·¦û«tºšç»½Íóc»ùëçe˜¿{Übº|^úÝ—/?ï&óïž>|ùxãÃÌe€{û6×\š<[¸4SÈzž-\š dY¤Ù:À¥™A–»¬\š)d¹Ë:À¥™@æ‹€‹€‹€‹‚‹‚‹‚‹‹‹‹‹ƒ‹ƒ‹ƒK—.\¸ pà2À%À%À%r—u€K3…,wY¸4ȲÜeàÒÌ —.\:¸tpà2Àe€K€K€Kä.ë—f™C–»¬\šd¹Ë:À¥ÙµËÕh¶p'³Ùë·üù/8—·.¶›?Ý=?Þþ|¼é½ùóãËýóãÝǃ›ÌÛX˜·oqñi¦ùà\[‘k‘wÎm*r)r/òàÜ ?/ü¼ðë…_/üzá7 ¿QøÂo~QøEáì'S+r-rö“6¹¹9ûÉ<¹yá'…Ÿ~Røiá§…Ÿ~ZøYág…Ÿ~^øyáç…_/üzá× ¿^øÂo~£ð‹Â/ ¿`?¦"—"÷"g?ms‘[‘³ŸÎ­ÈµÈ ?)ü¤ð“ÂO ?-ü´ðÓÂÏ ?+ü¬ðóÂÏ ?/ü¼ðë…_/üzá7 ¿QøÂ/ ¿(ü¢ð ö³i.r+rö³ÖŠ\‹œýlžŠü¶ßÕ2Äæ+(³×}¼»EüÅ‚ÅN*‹» j·b9Û²ûKe©ê\öe1óû‡η—Èv, ··Ë~¸¾|Ùüááþã‡uɺÝ÷›ßüfs÷øa³[ ]-€öÚ8ý&74ʃóu@£ÜŠ|p¾h”k‘wÎ×òÂO ?-ü¬ð³ÂÏ ?/ü¼ðó¯~½ðë…_/üFá7 ¿QøEá…_°ß~@£\ŠÜ‹œýöåVäì·Ð(×"/ü¤ð“ÂO ?)ü´ðÓÂO ?+ü¬ð³ÂÏ ?/ü¼ðó¯~½ðë…ß(üFá7 ¿(ü¢ð‹Â/Øo? QnEÎ~ûr-röÛh”ßö»»öÚÙ…Ö®49éPíþ„›ýçÏ» êíåïîÞ??Ýø8ùð/‘¤¼$s‘[‘ε¹yçܦ"—"÷"/ü¼ðóÂÏ ¿^øõ¯~£ð…ß(üFá…_~Á~û›)×"g¿ýÇÍ”K‘{‘³ßq5“æVä…Ÿ~RøIá§…Ÿ~Zøiág…Ÿ~Vøyáç…Ÿ~½ðë…_/üzá7 ¿QøÂ/ ¿(ü‚ýŽ«™4—"÷"g¿ãj&Í­ÈÙ︚Is-òÂO ?)ü¤ð“ÂO ?-ü´ð³ÂÏ ?+ü¼ðóÂÏ ?/üzá× ¿^øÂo~£ð‹Â/ ¿(ü‚ýŽ«™4·"g¿ãj&͵ÈÙ︚IóÛ~Wk»^hØØ_Ùµ_®fæ“ÂâîoÀÍ7_>¿<}zø¿‡ÒâëšæþýOwŸ?ÝØÞüÊ2w‹Ó¼s~‹Ó\ŠÜ‹<8?ŒÅinE>0?ŽÅi®EÎ~DZ8ͥȽÈÙï8§¹yá'…Ÿ~Røiá§…Ÿ~ZøYág…Ÿ~^øyáç…_/üzá× ¿^øÂo~£ð‹Â/ ¿`¿ãXœæRä^äìw‹ÓÜŠœýŽcqšk‘~RøIá'…Ÿ~Zøiá§…Ÿ~VøYáç…Ÿ~^øyá× ¿^øõÂo~£ð…_~QøEáìw‹ÓÜŠœýŽcqšk‘³ßq,NóÛ~WÃîq,>™x_Çâyš/ÇâvÒûÛMH›ßß??œïÃðí¼4LÞ.\÷aüðüô騼qàõ‡mI_nö"Î÷ÒÜŠ|p~¸‡æZäóÃ=„4/ü¬ð³ÂÏ ?/ü¼ðë…_/üzá7 ¿QøÂo~QøEáìw\,¥¹9ûKi.EîEÎ~ÇÅRš[‘~RøIá'…Ÿ~Zøiá§…Ÿ~VøYáç…Ÿ~^øõ¯~½ðë…ß(üFá7 ¿(ü¢ð ö;.–Ò\ŠÜ‹œýŽ‹¥4·"g¿ãb)ÍµÈ ?)ü¤ð“ÂO ?-ü´ðÓÂÏ ?+ü¬ðóÂÏ ?/ü¼ðë…_/üzá7 ¿QøÂ/ ¿(ü¢ð ö;.–ÒÜŠœýŽ‹¥4×"g¿ãb)Íoû]-ìz¡a±¿Òãr­4Tlw€×[Ë®ò¯¿ý÷¯7ß<}üòéñV¿6N_{}`šd#Ï–ÓÓL!ëy¶œ˜f™C.\:¸tpà2Àe€K€K€K€Kä.ëa2ifå.ëa2i¦å.ëa2i&9dà"à"à"à¢à¢à¢àbàbàbàbàâàâàâàÒÁ¥ƒK—.\¸ p p p‰Üe=L&ͲÜe=L&Í2‡,wY“I3ƒ \\\\\\\\ \ \ \\\\:¸tpéàÒÁe€Ë—...‘»¬‡É¤™@æå.ëa2ifå.ëa2ivír9®gɼ]ãÓ뮚vùô‹Ój¦ºçÝ˾µÝßk'—ÿçåÑÞm>Ë>¹û¸v1çi’›“òÉÕW“ržd#Ïv“rž)d=Ïv“rž d¸tpéàÒÁe€Ë—....‘»,“ržd¹Ë2)ç™B–»,“rž d¸¸¸¸(¸(¸(¸¸¸¸¸8¸8¸8¸tpéàÒÁe€Ë—.\\\"wY&å§Ïg/“W?î=÷éÙ}|xÿôá~óËÃËO›ï~ÝÍοùÍõ¨ûú øÉ7¸xlxçüõð<—"÷"Î_wàä¹ùàüuNž~ZøYág…Ÿ~Vøyáç…Ÿ~½ðë…_/üFá7 ¿QøÂ/ ¿(ü‚ý;pò\‹œý;pò\ŠÜ‹œý;pòÜŠ¼ð“ÂO ?)ü´ðÓÂO ?-ü¬ð³ÂÏ ?/ü¼ðó¯~½ðë…_/üFá7 ¿QøEá…_°ßaNžK‘{‘³ßaNž[‘³ßaNžk‘~RøIá'…Ÿ~Zøiá§…Ÿ~VøYáç…Ÿ~^øyá× ¿^øõÂo~£ð…_~QøEáìwØ“çVäìwØ“çZäìgÅúÃ’õÇÕ"Ê®.¯ÇK^îÀ1ïo«­¶=¿±˜–ìß.ùÝæÝOOÏ/›?=|~yzþuóôÃaivãÆÃtúÊ«‡€æ™Cy¶ÜÌðü! y6òl¹™áùC@ó¬ç™ƒ‹ƒ‹ƒ‹ƒK—.\¸ pàààà¹Ëz3Ã󇀿Yî²ÞÌðü! y–»¬73<hž9dà"à"à"à¢à¢à¢àbàbàbàbàâàâàâàÒÁ¥ƒK—.\¸ p p p‰Üe½™áùC@ó,wYofxþÐÞ¿_öžm¾»{¼ûñþÓýãˇ¯ŒÓW^êi¦õ<[þ4#o·ç™Cy¶Œê#o·ç¸¸¸¸8¸8¸8¸8¸tpéàÒÁe€Ë—....‘»¬£úÈÛíy–»¬£úÈÛíy–»¬£úÈÛíyæ‹€‹€‹€‹‚‹‚‹‚‹‹‹‹‹ƒ‹ƒ‹ƒK—.\¸ pà2À%À%À%r—uTy»=Ïr—uTy»=ϲÜeÕGÞnÏ3ppppQpQpQpQp1p1p1pqpqpqpéàÒÁ¥ƒK—.\¸¸¸Dê#o·ç™C–»¬£úÈÛíy–»Ì»vcÞ½Âí|¶õ¾~ƒíî]übRïímR—íæO÷¾ÞüáËã:®ß¸W²üÇì-¿Ïf YO³õ>Cš dYäÙò³çeø<Ë]ÖÅKÏËðy..... . . ........\:¸tpà2Àe€K€K€K€Kä.ëâ¥çeø<Ë]ÖÅKÏËðy–»¬‹—ž—áóÌ!—.\:¸ pà2Àe€K€K€Kä.ëâ¥çeø<Ë]ÖÅKÏËðyæå.ëâ¥çeø<—.\:¸tpà2Àæ]…yWaÞU˜w æ]ƒy×`Þ5˜w æ]ƒy×`Þ5˜wíÖ¼{±.±óÙ¶·Ãñ¸—‹‹·Å‹n7ï~º{>mIüþîånóîåùËû—/Ï7ö}­³¢E>+¦™Cy¶ÌŠif<[fÅ4SÈzž¸¸¸Dî²ÎŠifå.묘f Yî²ÎŠi&9dà"à"à"à¢à¢à¢àbàbàbàbàâàâàâàÒÁ¥ƒK—.\¸ p p p‰ÜeÓL!Ë]ÖY1Í2‡,wYgÅ43ÈÀEÀEÀEÀEÁEÁEÁEÁÅÀÅÀÅÀÅÁÅÁÅÁ¥ƒK—.\¸ pààà¹Ë:+¦™@æå.묘fYî²ÎŠivír9®³âÉ8¿>κÛEVõX뎔ÿ÷ã—ÓiñÆ'Ým»|°©=Ùp¯wŒcâX8vŽƒâåÇãÖ8VŽQm9 cáØ9f5a5a5a5e5e5e5c5c5c5c5g5g5gµÎjÕ:« V¬6Xm°Z°Z°Z ÚRXÇX9Fµ¥­Ž±pì£ÚÒTÇØ8f5a5a5a5e5e5e5e5c5c5c5g5g5gµÎjÕ:«uV¬6Xm°Z°Z°Z ÚÒGÇX8vŽQmé¢cl£ÚRDÇX9f5a5a5a5a5e5e5e5c5c5c5g5g5g5gµÎjÕ:«ñÚ@ym ¼6P^(¯ ”×ÊkãµñÚÀxm`¼60^¯ Œ×v{mpµR´«U@?<š]Úåý±·%eÛž?d7éø²¿åíšïºß|ûô~=ƒwóôÃæe÷Ïëâsóûûóq~÷R=ûöÿ¸ØR³ÕóýýǧŸ—NÅæoÜèØŸ!ÔO_qã !ʽȃóõ !Ê­ÈçëB”k‘wεðÓÂO ?-ü¬ð³ÂÏ ?/ü¼ðó¯~½ðë…_/üFá7 ¿QøEá…_°ßþ !ʥȽÈÙo†åVäì·?Cˆr-òÂO ?)ü¤ð“ÂO ?-ü´ð³ÂÏ ?+ü¼ðóÂÏ ?/üzá× ¿^øÂo~£ð‹Â/ ¿(ü‚ýögQnEÎ~û3„(×"g¿ýB”ßö»Úög]xïæ«G*ë,oãÝ|c¼[ny¼]³ŒwßÝýóáÓ—O›ûòéï÷ÏË÷‡‡û>oÎç·Ø.»6Þ^ú»ŸÎ?÷ìË~þ“+~¹ÿp½}eÙÂ1CWq†®â ]źŠ3tgè*ÎÐUœ¡«8CWq†®â ]źŠ3tgè*ÎÐUœ¡«8CWq†®â ]źŠ3tgè*ÎÐUœ¡«8CWq†®â ]źŠ3tgè*ÎÐUœ¡«8CWq†®â ]źŠ3tgè*ÎÐUœ¡«8CWq†®â ]źŠ3tgè*ÎÐUœ¡«8CWq†®â ]źŠ3tgè*ÎÐUœ¡«8CWq†®â ]źŠ3tgè*ÎÐUœ¡«8CWq†®â ]źŠ3tgè*ÎÐUœ¡«8CWq†®â ]źŠ3tgè*ÎÐUœ/»Šóõ“xO.:Ldm7S\Ld­½Md²œêøüpÿáõC´o6—û/lùå{ÉïþòçÍŸ–ÃÒŸol^êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êm êmíòY¯“ì:ï¾]Ô_öºû«â|Ü•ˆ·qW_1?-¸==nÞýúùåþÓ匾Õvúò¿Ï—ëMü“øáå§§//›ož>ýüñþå~óÍnòy÷å矟ž¯Oé[Þ=N^zõî‘g™Cy¶{÷È3ƒl¤Ùòî‘g Yî²¼{ä™@æå.Ë»Gždà"à"à"à¢à¢à¢à¢àbàbàbàâàâàâàÒÁ¥ƒK—.\¸ p p p‰Üey÷È3Ì!Ë]–w<3Èr—åÝ#Ï®].ß–7“ko:]>?NÆq SÜx~ÜÙ‡%˘ýì%ÿëüóvgùÓ—çÍ¿ÿò¸¹ùà¼~½ðë…ß(üFá7 ¿QøEá…_°ßá±|y®EÎ~‡Çòå¹¹9ûË—çVä…Ÿ~RøIá§…Ÿ~Zøiág…Ÿ~Vøyáç…Ÿ~½ðë…_/üzá7 ¿QøÂ/ ¿(ü‚ýåËs)r/rö;<–/Ï­ÈÙïðX¾<×"/ü¤ð“ÂO ?)ü´ðÓÂO ?+ü¬ð³ÂÏ ?/ü¼ðó¯~½ðë…ß(üFá7 ¿(ü¢ð‹Â/ØïðX¾<·"g¿Ãcùò\‹œýåËóÛ~W+ÃcùN.ì¶?Õéêþ­t{[’\&tyÁÉ%ÿyï~Þe5ý?|þr÷qóÍ­æþù…çÝøeÙÝógýå™@æEž2ƒläÙ²ìîù³þò,wYÎàÍ3Ì!Ë]–3xóÌ Ë]–3xóL!—.\:¸ pà2À%À%À%À%r™fÈ ²ÜeÙ¤g Yî²lRÈ3Ì!—.\:¸ pà2Àe€K€K€Kä.ëm¦ž?ë/Ïr—õ6SÏŸõ—gYî²Þfêù³þò \\\\\\\\ \ \ \\`ÞU˜wæ]…yWaÞU˜wæ]…yWaÞU˜wæ]…y×`Þ5˜w æ]ƒy×`Þ5˜w æ]ƒy×nÍ»Ûë= '×ì—tÓv÷·ÈÅ’ÎåmI7o7}|øç¯›¿|¼{ùáéùÓçÿ±ùöáñË?»ùo_¿ûýo7ÿþnó?»ùæ×yxüíæÝÓÇ»ç‡ÏÛíöz—Áò¶èyW%Ï2‡,òly[ô¼«’g#Ï–·EÏ»*y.\¸ pààà¹Ëú¶èyW%Ïr—õmÑó®Jž9d¹Ëú¶èyW%ÏÀEÀEÀEÀEÁEÁEÁEÁÅÀÅÀÅÀÅÁÅÁÅÁ¥ƒK—.\¸ pààà¹Ëú¶èyW%ϲÜe}[ô¼«’g¹Ëú¶èyWå2»|Ç[ßß®é¯OÀ½¬‹µ·wEÙ®ï{×S.¿–<kùýK3‡,òlùýK3ƒläÙòû—f Yϳ.\:¸tpà2Àe€K€K€Kä.ëǰ–? -ϲÜeýÖòG¡åYî²~ kù£Ðò \\\\\\\\ \ \ \\\\\:¸tpéà2Àe€Ë————È]Öa-ïŠåYî²~ kyW,Ïr—õcXË»byæ‹€‹€‹€‹‚‹‚‹‚‹‹‹‹‹ƒ‹ƒ‹ƒK—.\¸ pà2À%À%À%r—u½iyW,Ïr—u½iyW,ϲÜe]oZÞË3ppppyWaÞU˜wæ]…yWaÞU˜wæ]…yWaÞU˜wæ]…yWaÞU˜wæ]…yWaÞU˜wæ]ƒy×`Þ5˜w æ]ƒy×`Þ5˜w æ]»1ï^,%í|´íëcœçëÇ8‹ÄÛzS·›ïÿø·ëçò !‘/ÓläÙò ‘f Yϳå"Í2‡,òl€Ë—...‘»¬ À4ȲÜe]¦™A–»¬ À4SÈÀEÀEÀEÀEÀEÁEÁEÁÅÀÅÀÅÀÅÁÅÁÅÁÅÁ¥ƒK—.\¸ p p p p‰Üe]Jþ|Ã<Ë]Ö äÏ7̳Üe]Jþ|Ã> stream xÚ}ZÛ’Û6}Ÿ¯À[’Š!xgÞÆ³IÖ»ñnR£­ÔVù…"!‰1EʼŒ¢ý¤<øòu{$%4$»’8r±Ñl4ºOŸnÐëÓƒ'Öþø ÿíÞ¬¾ûѾ'“ ëíƒþQ"ñEâùÒ•X¾Vò›õï—‡i*Ã8bâm3t¶ŒòéûŠ µåX UÛÜw?ByÎ+ã$–Išáwç—_þö[Qõ"Ç–éCré“î¶c-ž±àÔåÇ£îĶí„Qb/õ“P&[úžÈ(`Ï{ñ,˜HæË(d"O¿¼]ö„åö¦/•pUœ*éÏÂêþöåK®UŠ·C/Žcwl{M~ZqÈ?ض„ž'cn®'&¡BgL¢í>TÍNœªa/>Žº«4\Ü ÷güß^LG‡W'³g™Tü±­÷eý³(ÚfÈ«Fw½t•†þeÕz¯EºÄ+;d•ÊH1QhBôˆv+–à(òFl4ŽzlJ‘b€²vû©¨òZœôFôÕ ÍË=©¢ˆâß6ƒâ~Öý2m7\£æª}Ÿ—¯%݇¼ªiuÕ’GEšÈ,`*×{XtÌwÐÐö8IWÈ»b_±Ã Bq»^ùóL {®û•ȱùA×u/Î툗ÙK"É0dKN$F2žëë"D{ïÇM_tÕfr!…BR§NÒF©'ƒ šq‚#…B|ª€Ëˆ'ñ1·‡Z¾Še˜$Lül÷g#ŠbéÁs6pœ8E2N™B¾è4"¯U#T–¥bsÿdöød>[¥ùóPüí¯ÐÅDpd^ÄDžäIß6”ߢòŽLhÇaÚåcÔEõ©X‰ ÏcOúÜ”ÑÄ{‡„§?tÞÕg¡·lQÊ,d‹߃A’¡;;YV/ÎAH9X£ä›¼×USê£ÆÍ0Åd‘×5I˜ópÓ%#ಕ­÷€8ü{2{2™\—H”M—wgÑä-þì?ÖÇzìÿ‚jüuÛµ®6BeêF­»ÑÀ¿<¦òR÷-ÞÊÁGÉ,b‚ç‹I¦"„œP ÀÝéO°=#½ÅeKÑ·ØIQç}oöØOøùç»3öú Šdš0ˆ¦DKÐ?™h~OAѪõx |£]7 º=´ðÞA¿/ÜÉHª¡öò'4Ò”'ÌL&Æ“'H¤Ç­@òðj¡Ô¦L¤®Qªà(Âe8ùQIŸI"RóT:šñ°YêJ‚†YjEŽnfhÈVSrr? öe€C{ÍÓ¸ºý Z~ð± R®ü•ãèAÀÀ`JÇ_¨õQö-A$# èº=èq:tÆs:1où11{iªw0HÊIn†bJçòY5E9€±Èô¼10‡¬>k¦ÙpR?a ÏZ¯ÄKÕT}.Þ¢0yØ«õyK‚$÷áíï©  ânKkþ<¡ân?§â΃!ߘŒ )Àu¸±B±iÛà„A‚f+ø‚†4 JÆ4tD3›A7ySh ˆù`gf š`j 0g®Ó“ï!¸gÖ‡ M©ÿùwS‚ljc}Þ0@1ßÿÊ$ÈEé^Eüy[s ´"¾âfÌ3»ÄÁÏØÆ7Ø_+錌_qìPDžm±Þö­\<{2ÛLZeÚnñ»kǹi°º†;ÄUùè{x‘aƒZú©X‹rì¬w<² 75†ÕÓÜ•`µüÃXÕ±ÖKeGKv8æCµA†¬ËJ—+Óñ´7<ƒ¶Ù•¹©ôæà­7í\èàÑõz!{L'ÂÐO%ÂOÝR=»êÂæÉÃðlKÓô¬mI;{î+t@ OµUçÂ@f1ÓíЄT¦Êy7•Öâ : Úóþë_t·Ï=Á3ï«c´(|oùÔâ馫›l/©+ŠuzètSìM˜nÛºvæ%%¢Í‘ò²0G/õœ› %![8n6õE>š,ßëEXm† ˆä­·|ÿø›‰7q ¨K=èòÆÊ"5É G/¼i¾xŸ Œé§þšbý,éz§û1ø`˜0u(Á‡¼ÔยáõÄ÷eÆeOf(Å3ÈW¶¬5Š}G=ìAB{=f]™ÊYíš¶£®¬»—AvŃ#LË|à­ÓìÁ$—Ùì–Ël8fÚV³¨ä0¨P†Š‰ž/ƒœpßÃÙnZ‰gsY±©v;³lòý·a #­»X]Z0çÅ‚+Çö8Öyg†l$UMûB |÷qöy>å¶mö…N4ÎÑ)ƒÉW@œuÁ쮹µ‚yAucÇË€àÊ»Òé.Ñ,~Æ4<ѱL¼¢ŠÉˆƒãëY¤R¶ý'po~ ¶ú¡‹!L€ä¤oˆ¾ FÚ N&ü^"Ës÷ډ͢éÔÝÕåRü{'!ˆ.†_{Y ¹îr•Ò8¿±`p«hRBëIc]Qí[-¹Âa‘x^Âôä5"ß ¬/â»)Xåìý]Ñ‹é?…)õz/·g`šjS«‚“ï*i3í+ñÓó37š Ar#h zÐ\xFÄ¥vd!¦áòðÖµa鬻àù?=¿Ü…ß·G6Xn:;-y”WµW­Í1c剷¢Í£mAìt¯óšÐîÂ/]/‡PE9a‹—ÔWœ?„Äm9š²ðV2•h¾m‘“ÛR„ŽgÊàR×¹ æb«9ÓLˆŒ2sønôpÒúRÄl7+ϪÉ&G&ÝNrù`˜\údˆ*Û -kØÌK‘—í‘.84ƒMÙâµAÓ~x¤ãwfè:’˜I/- 3¡KuªmpJ¼;#Ðþž¹9Ÿeqí¢#t3ê¢mãèã[Íø‚ø›³ÁøÍæg,¡’زuN»›È'ãßK4,Þç5Ê1w]€ÅŠ­e@Z†Ñ0pÆ(l·&f‹P†í|§{~L@âßÃ]ßj3ÉcŒÉ¢OóR&2V5`1CG$rB9G\éÉFñi„ L4MD¡íš„§®nE(79I$:¦÷µªÏ|VìKåq™Õ9Ÿ‡t}ÄÜx‘MĨÛîºüÐßC)?a€yÒuýýõö„{×k/걄βê |‚—s;^t¯Dߺ„'4=ÏGŽq@ãEf‚©4H”Nè®k;ÃÚgÚ;G ½ÖÁßêîfƒœ&0•qÌÄh¸Û‚‹\Êå‡Þý8= ÛξÎâ–¤ú>r%cj G%òhÑK¼êã=ÂfÐâŸþ ZºP–~I|"Yü}N²¦âÞ×D¤ßhã?"àmãLÖ|•I1 ‚™=ͨs­(æ‚àÒ°UÚMñÄÊÜ[ÑÀ¹$£/½-òA£½G<ÜKe_óáª~‚õMþ¿`‘nF8»¤‰>7¹Âü¦,û`2©Ç#]ƺ„ݽÐQV‹T2ª¹qg~<Öç©}žY4Ò>4èõÇQ›iп§«šY#i胤&É=Á$&p³_…Ä*Þ?…ð_È-Ä®râLäÕà¡lÙÏ51§‘¼½ó9ZÈ¢=òk´„ Êi7°S©çöýRüXí&P¢&ö´¯Ð¨w¿ÿZ÷ï¿™zNG_ÆŠ©Žä /éÛnáÏMSÀ3+‹Œ7­å¸ßH ÚÏuWT°bØL$Ñic|‚6{MkX×êÎ`GÅWDâ$ U¨Õì9Q¸~©G3ÃâÝ”ˆ¬½Ê-3Êj¯ÐüLW¿î¥˜º-÷4îÆ©Ê…+qs#‘1ñ߸ItÏžçÚ}NsÁÕBþÎÿº×ŸI;â0‰"lò£šõ ‚sÞß\©,âÊ^o‚"dÏy3’µ1âïúÚ)ÓüQyó Ð2±°ÏÀjç¨äûÕî”ýèï‡ÀÖš›l„²s—î#/#Åtèy¾WºC=ðë b¢ÏŒ¯¨ÀãËÔˆ3¤4£ºf¯œÒB9éRd9f›÷º>º[µ›Qª&tBÛ®BÅî—É׿´5VÙ#³jb<ÐÚš˜ãøG©˜Ú‘@rÇ &ø]Ä„èc¢òªs«óaì´»04çÞB§cDÓLÀÀ:Fsd¼žd1Uækiƒ®£»Q?ˆœß¡ù»³¥`™”RØ»ñË7šëD|ÍÍ- íÖîMÎPO?ìùx  ˜(͵x«ªhdn‹p¨(E{n°é‡õÃG”Ò@ðôG¤}§txP0mú]?¼<ü:}oˆ›O xôý¡ýuÿÌ(¿hVãKû<Ýò/ó(bÛ’O¿¼ËšÖí[©´¤O •„ç¶iÀkÚî»çeoËO<ª.üŠÃƒùŒ~/?Sì1 =ç'.¿üœdé×þa»øÃùa ôþäáàÆ Ûˆaù!ýåmî_.¿}ºQOòóïÙk˜ ¡÷àði bOõ_5Òÿ¡¾doœf:0Ö=N <²‹%Øß¿üüW>ž 'IFÖÆÊ·~yÆÌIbùûUbY³øM4Ðõ‰Óÿ endstream endobj 306 0 obj 3734 endobj 309 0 obj <> stream xÚ}VÍnã6¾ë)æÖ›p)Š%ôV Ûè ê¢è‘¶h›­LzEÙ©_©‡}€}ºeKÑ(u$ Âof¾ùæGâ°zÎ8¬6øçüÝeß­²÷8䚉 VÛ,Ž?9hš+&r «CöuÎûfõ×tsÎò‚bà§-L^1!ÁüI¢b\Nð£! ­˜.+:[x:ÙØ»à#c±GÎ$¯Szï?Ho‘KYqVr°Fš óLó‘¬.)Îøúö`\ 1lð6ýÃÄ¿áÓÌ:œ·wZ·îLw™û-DÁr‘¿ðla×YÓ·8vvk;´7ýÀ*ZßÀ#õ{ /¿=ýüî]rÊSzó¤ÊjršLœß!‡Ø3Z!Xžð ýÎ É›n³ws;‘—¬*‰Ý™Ü‹œiê×6(¸«À{RGQ VÕo¸«4Ó’º{‘ùÕI4“4ÑÚ')4‚0`„µµ>UhîZ ÎJµ`:$-U9]®í6t–-…œ¤u…%&טüÁ\à3–òhñµ_‘‚(Í*I "8ß8Úö5StvÍÉ´·~4MÓÙm²„WB–9±4 §Ÿ[„?;ìU?o-h°:·ž;‘²b’&uJ3øµµ&ÚTú¥DØjSJ‹F>ÀÉcü8´†éìÐé©Ód%J»ë¸”ÑÞvÖãa»¼iüz0m áZôcçüÆQÆâµdZ&gz_³’2µmHaÐóm‘(¥—“–¿Œï¨ÚCï’Ùô´veÁD]«3`ËH °©®‹|.¦ª¨îûª( et@¿E©ëyÓXð‚ñJßw[pzA±éÂñhH+oáP£ uù†Cº¾\8ô2½¶°hAô˜×Ìà´ÛaôëʽÕaÜþ¨é¢hªžo¼¤öŽÁ¢)\“¨ãÜê¼[^PÀP´iŒhá0—÷ý œ­BQÀX88ïúÐ ­>ßÔÃ~½M'[Eâ:.¥×ÃÎö}²5ž`K…µ  ]€Î–K–”Ý?}gàßM »Ûëò~š*/X-(Àvfg¿üß+MU³5|™vÄšÄáõÛ4.­¢×«ph…ïW“?¹Äi†Í!KC<œÇcm¦$_0 <^±é´Ï¶éci>@ ”Ä/œ¬|{Z£Øã‰1Æòa:á‹U]ƒOçEx!q~9~[I\öšì¥sÁð~øYñÑx|eܨ%»Ç«žx%y€<¿}ÿ”}ÊÒ1Ýè:±-ñ½÷râÍ+b|~AŒ6ûìðèë?JÎ’ endstream endobj 310 0 obj 990 endobj 313 0 obj <> stream xÚ•ZÛrÜ6}×Wàm“L$xó›£È[®rÖM*µU~¡f0c9áEãÙòþâžH ™qv+å˜2nîÓ§…bu¸ Åjÿý®~^]½|Š( ²8«í•!þ“"‹DFA”J±Ú]ý?®þXó¾ûé'ñXö¢u;ˆv+Öín_ó $’õüZ GQ6±o]dXCt'†£îµ8Tãµxr;ÅQHÞ©ì* °šCf2ˆsŽ<öb¯[¬XŒ½›r(ïË^÷×âÞí©ò0ˆùæÇA”ƒ¸o‡¡Ý‰jpÑd¦T-ÈM«ûæo. ÀÉå 3ð•J9G´ÝQÖ5öi7Õ–ÁÓ,H2ßêN7C}$|#ZX­[v'ÊõZ÷½`¶ ó¾çñúÃÛ>à 8$_Öê‘,W>h±/‡Aw ü ýÒ‹ºú ?T¬£ÆÊªþ•o7-ɽ]±Æ÷{Ý_X·M£×CÕ6þPN::Êi|ÃÚŠ@IÖÜv;ãªÜ§#xjÂp_Y{¬>Œ^ƒ6+þsÔÝÑ[l—˜‘±¿X·ñíVô£9¾íX_ÃñtWšq»v|°ÑÑé~¬Ñkß)Ç}ÕÉ$NãmÝëk±ÑemcNw]ÛõþhÉóaÞ–ëG 7L÷ê½ïq0V²o›MO\Š™.Öu çk»éã±Âºõ#s´$ ò‚MqäíY)ÖîyjJ¼Ç¯ ’K"Ây%O)Y»î<îTaä ÃÈšì±mëšÍ¶r>ã¡,Õ¢[Ê=¶M¢4ˆãdòa2ŒÁÛ9ÃP4Þ,!Þßÿ¯‹\ž€ñÃ$²Öqûµ¦ŸØ• »÷ÂŒ“þÅ'¼¬ãV‹£IÉšg¤Ÿg àŠƒ‚þÅÏ> ‚µ·£h´Þ!׺쑇ýìŽv7Æ 7­çĪ—QJÆ äk?‚°š‡@ü¬×%% 2‚%ÖÙ³ç™ŽíØ‰}×>tåÖ&|»ÀY æÚˆÏ?,‹­šMÕ¡_}üü£h «ÑB^„ÌbÒ /ߨÓÃSY„‘]Ù ãÀÓ³–1ÇcÊ~(›5‚œ6a;ùsHø¿Êäÿ5Q¤NûÌÞD'd¡®ØqÊ4³‚uñò{è磆ö¨Ûæþ¦ôxþ@ªÆœ ’E];¦é2ìtdï$J-ÉëÇý¾í0ðŽ;LAøŠu8ž$ë¬$ƒØ\-†ãÁ·¥<íܽzNwuEXJHô£~ b(ŽÙèº{%üTÌ÷´ºùðòí†&äk¼¿5ÕWЮ¬üL«b…Åõíš%~ÄO3„ ®hý<ŸFA‘3Üï<Ÿ"ÚùL›–KÝ"H9ô¢)w †}Órš‰dNÜ…{>èFwÕúBLDiîoç¯B‚ä©×eJ|‹¿ØêZ|{;ðŒh¡0%ÖFû—EP¤“ƒýv"¤Ýf"¨18²†:0l„{{—¶ë:£>oëÕ«É?ÿðùÇ {ÌS¿?h믶fö/ σ*ò˜Á¢å†ûrû£gY<‡³k”0[€3ù¶ $°eÊ °ÊP­ÇºìXBCà&ìÀ+øÓ÷æ„Fþô•4–{²XVq‚Se3—kò´7<ïÇA* ê‡ ÈÞ…|-iÖi]¬|HhVÅÀ¾8‹‹diCx;¹ýü‘)å’u;œIceÍBõTÁç:ðö"k§z‹ra‰Cxq§Ä.%Ÿø#¾FøûRÔœP¡L‚¤àðŽseäïù»b,¦* Êʱè¬s1D'G¯‡IPå2Üñ¯t)"Y¤6ÿ´$oHI\›s\wšô?%%ª+*Mö%ú(ÍÜÇ9ûZÜFÜ¿“òI5£@vçû+zSÑI—iÊàü´ô‘©œ‹¡3ª%äP”­D–t×@êeSvqCI~öàš~Àw×¢o­aÀˆ‡õ‘M§à¾jð«Ò8ê6‰6\äC¯K†jÇzs™N‰¢Œuè‡ ñèxáÊN¯ ¤I&*%Í‚¯©}µ¾`Ô²"vfƒ£P±f¹`ax£ SÖ—gI™u)†X¡n•- väŽ8„ªäF‹ò…tÁ:–ÇE˜Uxh#VUÂÐOÕμS²«˜¸Hƒ”/y¬ê ¹ü¸‡k˜êZؽó½(ô”yáíEÃ)îQ€qh®æËFE¶à«f]´.kVÒÕùd@}l%J(/Jf¤¼,eCqsÁ( Ýv“‰Èk÷G…¹‰r=ÊÍþHîxïWb!Ÿ’ EVêÍ€`ªÖPǦPEàd‚ÉåBPÙ¥Â#Ê’@†ÿSôºPäìÆ^nÁE#¶Gók.#”uÊ›eÅ,Å™’Xð£e@žƒâ±âK±²Š§8Ešå GWn} Euß wäÈ‘·qó7ßW“OÞ_" l<ÏS†ÝɇíeÝ¥’ð¤ØŽÕm†Éz=˜¸˜+Ê(÷êŸâdîûÝaå]…¹í8+7¼¦ Ùò ¬áj#€êÙ5ÇÁ(*bÞÉy8su‹R$#û8s”]UÞ×VªAH½µrå±ä² %Œâkç¹b",8d5ÖCEW½s¦œö\]%òù̆n\Ãc)\H V¼ôȳ.6;åxœè0ûêÉ-`™7ÕIö®ÁöŒ !½Q=»½`Áv¤ª‡?0%¥+åüò6Š Ó²tº‚³#¯’Ó·›Sö•‰¢›f·Ë̾³Q+ShТ/ x‰ñ‰ò´u;n:E×p.èlvÇéPÑ囋ñ/·Á9˜L7“U­íÍÎ,¹HzÌŽ1ùÒdñIŒAN†Ê޹«è2Õȳv]?ê]éU¨ôn‚âÂí¼2Zäc׈‡Š§”nÞ\8ó”âŽ7ëïT¹”9è÷N¨8A7­xÏ®´E‡sýÃV$ü6fM’òîU”²éÑé¥i‡±é;Ùu‰a²tÜZëƒZ#í®’“+3dAè ·çÛÞÝ~ò¯{¢ˆƒVÒašyÁ¡×—æF]•F Ã~ºýðî5ÏƒðŽ”ƒnn/‘DÁpìrs:gA–Ä þÛ‡_¸³¡öô |y©‚i8`uiyŠ¡”cˆQެïäÁÜëAÚ›|Áƒ!#‡ä1žó&³ˆ9`ºb3õF6B¸[|ÅhsEX²Æ©±RYÄËÀw·ïnoVâïâÍ'ÿ‘H ùþWqűò5xÄa´ã ¶D_ºà…™éÄ{(Uí<Ù‚ ›]½C@AŽM/[»}ýý÷ ‰SNŠx*‰c¯$†Üˆ9F|²oSwàÒYjÒãá|á+Uh朄ú7]o–Ó)w.{kC;ÛØ¦~¯×UY_â7hÂB¦îð¦b²ªæÂ²ƒ×ç…¯“j†AôtÕ7 Ý»sUIœRå|¯H;ÓãXIiŒ IÌ8O¼=1Fu—ÑõSï«I·“Ó;çž¼z©cîL¶+Ç¡%7µ‚¿–,‰"Ï…§œ˜‚Ëmžd •á\OEpÂ:§ÛQºá¬Öâfªè'wº¤ AJN××›MEM‹çw‹2Pl’ë¹6«nÔãSÕK¯"”2»mô·FO§¥Ož½é×/B:ÜçZüîàžÑ²•‹ªvúz*SæËŒªÁNʺú·Û®Ýͪ8ã‰< ¸#½!>pŠN‚Ű §Ç3¸âÆ_©DŽÊ ì×sÒ:kŸ–ju>²®Ìû•á4¯@¥}J¾î†t÷ÊzL§ßà…AŒ0ÊÜ"zïýšN9qA_×zOs=½Tš§ˆF<¶ÜèÓ*âƒÃQÏQ v=“¬¶5àtá‚’È$ŒÛÕÅ Œ ¥²Þ]™ß¡ïù3õU¢Bï€å;ƧÅÒ×ãÕ–~³ê¹H€ADB²Ä¬&9™Û:Ãîæz'²sø?,_(Ý;ùòíM)dä0A{FþêþþÔSŒÔŠßzz¹,›ÑÞ²ciÔï… ¤u‘yûùûí¯þ¼¢OjÉ Zm*#ç+4Ë´ˆùçgÄÜçñêwÑ`¬ÿ_î€G endstream endobj 314 0 obj 3221 endobj 321 0 obj <> stream xÚ­ZmsÛÆþ®_qõ—Ú±tƇ76uÇqìŽgì6–Ôéd¢|€À£ˆ”Âvú—ü[ò“úì oAÒöt:–5 nwïvo÷ÙÊ×gž¸Îñë¯øwöÝõÙ‹·Px¹8SÂÃ?%b_ÄJÉ(׫³§¯Z±¨Ñ-hL»);Ñš®~Äã².͹ø°½úøþùs±´/«ÍêÖ4¢^ˆy±xvýËNnàÇ2M]Ù Ó˜ªŒ*òd¸TÙ¶%iYã /ª;:ÎjFl/Þ‚IK=Q JB%Êòܘ¦0­pwQ~"U’2ºëeÖ‰ïkñ·º—¦Û4•ø>ë2b»ð¤"ã5Vù2H­bÍÊRÀâ×aÛ¦5‡(ÉÎà{P1rÙ_UÂ0 ß“aìRü–­Ö¥E¯Í‹·áä8~¤¤N\Ž×—o^1™I"¶ëõv¬ÀÓ2`ëlUyÒcGzõÝû7ýa¦¶ ‚˜K’â-“¥c)— w´Öˆn»6öÖ+žÓûÆ*ž‰vmò"+î'©pCÞ(—ĉ›§WYïÒ²Ý<ƒH\xKï¶ä]u¿&?o»¬½œmÑÔ+»@‡ÙÎàö†N³Å=Xë@ÛÑnòÜ´íbSž‹eíÒ‡nÄO\úG±Ê*F„ÒSÊ¥ÙÒº7Õ9HÆõ†m’àÚwù±E' |–wfã Á÷T¸¥]žíͳsaº\~.ò”/µ÷‘çÐÙÈsBnÆV'R«1ì ‡¨ÅU×lr0›ö¸âTa’’þýfF¬ê¶<5&Ÿ Òš”uȳ­èj bhÂ(“XêÈ¥|`Ë)œZ¹Ëž»GPòdÈÝÀ×ûCëi$Ç©L\þÖùfmW7ææéͳ1œcN%2š˜£1ŠbëŠÄÛ­ú0õí/°ÒùeA¨'ƱôÂÞ¥–E¾sÜ9³„‰€8!·”Jd°u¸Œ¹ã–Qˆ8M\†¶›Ïf8gÝ|»Ú¶¿–ëõlvY?¾™r.ŠjRŒp×ZÉ4r…]Sæ€ T*Ûz#ò “uÇN—BÆI‡cóp8®€Š—©/Ž:,)`/v©ê‹y±2U[ÔrYÖ4RËxÀ; ivƒÖu¯µ_ÍvÌ@ˆµü(n·cZk³íÎìÇ4Õ˦ «ßOêçŸôÏ'´ÔÚeàfW@iå.ÿÈVC-}¶Ý gV¶µÂŒëå£xH—åQ˜ÒÀbÈÒPÐZ¥ÊV¸ÕIa(C—å@nvÂWƒÄ·7s` ÿ矞¬›"7OND§Þ„Sºç ûRÌ}™$JRòhÒ ÕA1’b‹¡² ]šº±xõXÀEú*¤?wûåÔ’¦2d²†Ü–Ïd–XM¸ÎEøûìñöHî80ŠÉtŸ{ò2ƒ]P…šö‘zàY%®®ßÖ@`gš  ¸ê1ò¨SJSÝ«a_<ä:Îч'ïVà¿K“•÷8GSoî–Dݸ)ÝÔäèC@"›úQ8ɦ:Õƒ >i$c\ÀžäQd”¬º‚‚ +yÀcFÌ—‘*Rw™š¬»ÚV»uÃh ÷5Û7kæ“N†ªÓÈ¡ø‘p Ÿ«šý?2šØ“Z»›ÉÌ=p±ÞTG@ ãõöˆ(=Ý®÷‡Lj15·$/É5ÊeÅ ¦9n$CÊ3·¦C ‰•YÕ³ø”7:šX;B¶|9–±ï.ŸChžA™c}ŠÆ}Çé‰n˜ÌkÓò+¥Nåêž©•AÓ”»¥v 9ÚºÈå«ÇŒC»ŒqðópÐÓºT¦8œ0t)øÃ…¿))Åf·Ø¹Eâ­› îÕç'bÅfšM;L¢&ùM{éÈ` !^ó«EÀ¦.Ñ«Þ!^xâS”yd»ªî¨îYmòåtŽIÅ$røU¶u–‡ÚËpú¡µÐžì¯ÆhþÜeš‘ ®ªîèÒÊ¢ëJƒ\^·džÚ‚Øä‚*ÃôäZR˜ÎrC$‰ó¥Ÿh×YnÈÌôÀZÚDJ¨ëÇ4àt®#HãQânãJ,PûÃݦ˜‚9´“ò.Â&…’’f¡só ûõóç®?[Ä^ej$R£Ë ó÷ª¯(n3 e›/Í*³ÈŸÍç¹åØy+¸ÿ8¾uµ£f ‚»/RX ÝõMT»KCk œÁÖÜ4˜ôã½Ûúléµk†[qó4³éjÓRùqW7µjož ÔôÖ&õ$3hàÈíÄ2ãÝL*—àG¤¦´ì,RgnÐ@Y=ú‰\ÑÜ·Ç’N»X)å§4uv@J÷ªé$$ÕÞ7PªÎù˜Ã $#—*ƒ%‘2¬“×V¦[Ös[½“ßXÏ€çß5Ù Ú•4ï$ÝÌ$y!y1“KékH³º5óùïy=7Óf9’a˜vh`Bì±õ<†þ’ù LÖ.õo|­ƒbë&ßtc{þEƒ=Úô=·(rB¹T}UˆËÓFB!Ã;”ün`†4dëÆ­Þí×Û_ 2 ‘¾…±Ù´±´ ÑS¬Þ åµ¥ŽQîð㢴-ÎnïÑ #}`4?vÝpÔ`zÆ1WSÈ\N:ï—Î=Žc@:tœQdí}óÅm“5Xæ›ÕÚ)Ô áðvhÚvÈq46Õ.¦Gõ„ËF]ˆ°Æ~¨¥.Ð"Ö(eºb:‚õ”Ë:Á*ú¦ÃYFÑ[«/©I´Kia›2ýï¶ô†ÊR¼®«¶˜Ûì_´³±ËLЕóÉOõ0éìg’(Qóû—âáO“RêÓT÷³ƒ¾‡ÿö[ñäêÍû7¯¯Å7âíåß?Ëûä€3Bé©ã=§´epQÝ<}¸yv@M#Ý|IŸ~°Ùl×JÃ>òÖÜ‘(H¢7 WhIúÏŸôíÉ¿§{è g˜€á²Q²2?Ðe&žÐ‡¢»xi'*ôòʃsâ"To¹ÿœ,A}EHÚ«þnr“ðˆ fÝð5OYä÷™lG¥ƒ¤ÅÑœ¥TD¥˜K9Þ gøœÀNÑÓ”qŸiñ¦¯,²L‹sŒ}ZÁ.ЦÝ+PA³ý?3ìAiDÕ¡K~rÒÂnZAÃÓ©Ùât·^Tmg²ùgÂÆõ¾ï»áÀFô‡Q¡4%ƒàˆ º‹„ÒÈWE…R„¯áaT°óý_‚C¡¬Õ~ô¥àȺ›§ÃÌBNI œûtıL¼Þï:ô­ù=•é¹i‚E»£ëɧMzN™Ä.÷‡TTpLxfG ·¼Óój.‘ÕÙ?(à«}õæzÇ㉠a(òÕ}‰hŸÇÇD”g¡ö& Ø=xìiéiy¶ ¿lØÛØy°œ0:ØÛÝ:Ö¾¤?î1ý°{RÔt–=ýð<ÙÞײyˆõxü‹†}ŒK¬ÑÔ´²jÓÏðp4â»èxt.2`Ÿ?¿þñì×3z¤•8¥ÓFÊwž<{Ìžbü¼§y–gÿdýŠê›g endstream endobj 322 0 obj 2965 endobj 326 0 obj <> stream xÚ}TÁnÛ0 ½û+xÜД•dÙ’¯Ú]ÖÅ< =:‰R{uìÎVšù«ö‹£œÚ5ÓbÐæã#II@~ŒäúûBÏctGW·¤Ae!ßEý$F$¨¤|}R¨ñsþkvK!PÆ76îÙWmÓèÕmL°3ÎÔ Ìb=â¯غݒ5³h5ÇگÀ—êjÝÝ@vײJŒÅIJ c ‘)”C8îOQs&d©X£• ÇÒ5ŒL¥1Ê”^¸ß¢à$®ƒÊƒk6í¡ñ®ë¡hÀu]Û-ãâTaÆ‹Dàƒ‚˜ßÄÈûß`C©Šþ‰7¸…Þù¹ø[<.yÂIÃDR5½wÅvÕb¬«'Ö[-1cnk†HR”šA~,ˆÉ&¨c›‡D2:*|ßvªf×vû"|GøÖzh›šö¬ Œ¬6ÅŒK(xS¶ è}W5°wû5Ç»º¯$0p\ ´0t”–M!ó–ËTV#¥ø@Ÿ´ÆšÁ&pä Ó˜d)Cýûsa%ªØòºšñ,Q› zz¾¸:&Z^ß\mQkp]QsÊÐÅ`ÒuøáÙõ+èÛqUÂòm«ÞSgU_ÂÚù£sá»´!!<íŽ$4þu?GÒ Î'¢õ›òÊ—UKÙjžöe]·›§ñV»Éç8—’ú›ÀfÁžL u”hqf`¶c2OØ`•Ñ.\°óÎ j1Ðø”‹2ïr/S­`2PM9Î_fK¢INÉgû,}˜° ù ¦§+ûnø~ÿõâ^b$üèiÙïŠæPÔ¯¥…¸Ëu…ö{ÿ¿ÿ>ú3xLªM¥ZXb,ó„˜ÞßSLý„†¸þ¬—6 endstream endobj 327 0 obj 662 endobj 331 0 obj <> stream xÚ­ZÛrÜÆ}çWÌ[|!‡À`pSždENTe9²M—ʺ\àbÈ……Ö¸ÚŸÒk~#Ÿ”Ó`5=»`ürÉîô\º§ûôéqótˆ› þ÷wü{¸øææâúÛ@¨@¦Q"nî/Bà¿P¤J¤’* ÅÍîâ‹H~yóûq0W2ŒS&p㎇È1à ŒCÛUEMb×ßFñvKÒD¦Y6-¶5‚íÈ fûÎøâ@®ÄcÕŽ½Øl‹ý`:&'2ä²¢j†®-Ç)Å€½wÅïm'†vU³mT’žlÃÆS%5WÅÔbgpЦêw=öo?ýðÝ×_Kñ}ëNÕA,£œM}Oæ/L& ˜@]‹²z%_(‰dà-ÔˆBÔÕ0ÔF”Æì¹=Èö‰> M)Ì@&iEgŠZpKëHÆlÂÇb·¯M/Ù…Y(ãˆÉ½gã¸Rºg܈~(ºA´÷̤JËtÅÁÆÛ‚ÙWcJ´¾²Ö¹Œ3O3˜²$SÒÁ/éä±ú|]l,—!n»bÜÓ’»¶3bÓ’ù™mS„KÊæ|$g>ZªèÈÖ¤ÚSUšú@wm:ƒŸš~‘Ê¥wº_ØxËLóãbS4X¿Ý“û”XsŽ©f„Š{l…ª³±I{é€ùâtPòHøp ÷ÉE–›ºÕC`Y6!‹%¿ê@Ë$÷Ö¥HßÃÛzÄnÛô¦!—uAÇ›OÖË ­°J*UæV¨$ôŸá1”àÞ—?ŽM³ôõ5«pg0OÙ™/a¨LóøEãX!—µWÜÄHy>I s²=Ý?K¤'»;ôÔ_}UšG³’ÊC>> ‘¶ùP<Ž- q™19¤}ýä ¬6ÃPVÔ·2êœ4¦TͦK\þ‘,黬ú¡«ØíÄa&³\³eÆ¡j­Foë"t̘ñÒ,VÌc&Ë®9T‘LÙp«CÚ†©;˜·`ø™EDg£M QÈÆ`|AE!W¢m6)˜ØÓÊí é¹dí£}ÿÔv寫¬A´ÑÄ6ÃH(ÉyI,Óœ‰Ùd×ñB#Œ@ò&JA©î®6»%ÞŠ”²i?îÌL-Ý(\H¨^QŽpÀÆ‚%œaƒºðpœúˆ‡\À€ –‡Ìa¢€J“„%ÊuJTŠ’×Ì0)<áJ”¼¨b¸ç·­"~ާ³¦#Ô‡1?Ç‚bwSÆül¿s)DS9OtÏN FZ`àVLb™°y=‡öjÁI ¤ûÛ´÷EÀÅ¥ø IÓLèÙ(²™{§qƒtnžGÁÂý ¼1N¹(š–øv­¤G M8CåÞÖÔ{16(ý%®)æË¼d‡„3ÏWG4Çk±Dd`Gøñ„áñÅÌ1uù¾%HåühOVÄ~¿éª=jO8ƒÕœöÔóÜf(g¥ÕâY1ÊbÄ-·"Š¿Ù‚ÏÐ1êÒÀEÜùæ#s>¿¨ðDQ‡BjÖG ,€AÕÇÃìýëûG@&ufyW¬A $ñfo¶D í¸'‚ýré÷|<§Æ¢;^5¼ •T®È“×ëŠUHIÕù…§ÔÂrÇÛqáæö€#J#êIŒþ¹²?@…Å%y1jÍ^ Ôàìõ4Šwârw3¹â3´\%Ë4›øŒ£ P:Ÿ]Ÿ7€1)“BeH¡Î ¬Ù®m(ìÅM[SyŒ‹{s–)ñNg¾å—¤ö¥ˆ¨uIÒ¯oŽqŒc±Ù]ØïÓèyyÌD}ëÀ{„Àñ9Âã$KOÛ‹{úæös&¥¯)A.æ¯u²“½Ý­Sè½< ÑÎ{øŸB Ïz’ŸŸ½íˆOÄOåÜb\:œ‘Ęø7%ÞÚO÷æ£Ñ¼«i€ÎEæìïçǸøã‚i$Íé´I¨œ§Às’Xþþ,±ÌÙ^¼ Öú/Xìy endstream endobj 332 0 obj 3581 endobj 337 0 obj <> stream xÚXmoÛÈþ®_1ç¢8;–Ö|'×—õÙJ`ÀI.¶ÒàPE­,ö(R!)ÛBєٙ¥Hí.%·2,,µ³³³Ï¼<³´`ò<°`’à×{üü:\¼sÁÆ,ü³!t ´mx0Y No°-60/òŸÏ&ÿê„l;`‘­ Öð˜jg¦êI›v=æ…ê´š¿xçöØžÍ.ÑGª¬ï N¡Am&‡Í»p)°ê¢=kÌÕJ¬ã’‘¬Ó °èù겡QìÈfW%ž(`Š<ÛJ¬Tür‘ˆªŠË-…¾^<ŸyšyEùG“0=À/ÛLFgÜés‹Ù–/\߯Ð_0ê`µ­¾gëõ7Òó·þ·7ã“Ûw·ãøõwø9ßäÛx–æ9š÷ã3?äŒ[Túþþêã®îîà·ûÛ¿ßÞßàÓÇfƒo nAV²70ùÔÛô—Ã%…vð#LCWîð»¶»,}ê4¥r±ÉæK®–JæÝ¾tØ-Š,+´å!ó}Më3¹,)V+Lš×àu9s¬P.aâ«ìÊ%Œ6Úa´Õãg·CF 7OO¯UK#4TˆÓ|™ˆM^¶#ML§]ÔÕæ±–-tf˜¥ï´Ø5Vû=ÒE:Ô¤Ùźlé¶Á ù‹¿žC²=Qžjó9zÜg¡ï‹4ušŠL¼5³½IPUÎ{W›”ì¥Q°á`dxCé«$ìØ–)ñ¢ÆºÚÒUUP?¸8J[žÇ,[S°£­!5–¸@«Á–ÏO“ÞB²ŒóG¡5±fKéa¯:Í‚q¬×‹"Æ=MëÖ͇ñHìLbõK}Ë1×JŠZ%Z%ê8Í* 5•Äu0îÝHSÐnÚìˆB!s"#e=,ÖNØôb.s˜N±X]]®à!•Õiܨ?Z <ìGx´çÍ^í"¸&'k—ÐÓÙ§®FzÙUG±Bª‰ê*ì9µræyºfŠ\lL±ƒÃâˆe,©‘Ɔ&†ñºE/ú„ôîN›æS’¸|L†TœJxƒã§ü³GN€)Í›lÿ·9ç‡h`àçâÞ‹}çEwär fq%°àbK\«¶sr˜©ÑÃ’Æ]pyÙFÓååu³úÃÎëÓÓæ t„éY,[;éo‘?µKÏ w*¼¾z<êäéSŠzSæ`÷trÞÉþÇ˜Ç 6ƒ¶ŠÐuS¨XhÄLV°#¤ËérÝUYl¦§‹8«DÿôvˆwOËÕOO+Ø®FMO€<Ÿ}£`¶3zã"ÊééôlhnøÌµ< .ú´+éŽ ×u¿ÐUŸ~¡¿ú6Þ•Ûž¼U…¨Ý‹ºLÅ“¬ƒ›ÝDv|½Ã¯ª‹ä@ iÜÜSf[Púu äó¶CW¶PKfZ÷…;´BmQÜgªÉMe†¿H0ù0==©DFÞNk±j¢_ZzrÀQØ ù–vÒYÝ.52µÜê^Vs:n'wbM6¨ö1Å›ªkñ¾‹ ¼¾} '_6nOâò„žD>ÏzÆY½ô15íò2!æü†ÇFöÄ&#­M•xçTRG‚ũƃáñØLï%Ú5ËÁWÈQ×ÃMÇ™ endstream endobj 338 0 obj 2092 endobj 341 0 obj <> stream xÚX[sÛ¸~ׯ@݇:Hð¦¦é¦›íCÒ™$êt:« MÁ^‚”íéôíËþÆýII(¥µÇ $|ç8—ï@°ÕãB°U†~ÄßÃâûÕâö­b1Øê~!™À¯d‘Ç"éñ8QlU.®™ó“Õ]Ë^¿f¿¬×í/4hêÇŸÄÏ4ÒÕ¦øã‹Õ¿-UÂãaÌTý×Á…‰ÇUZ¸&ö¸—DFF³ÿ¸ÀÈã"‰g‹fºih£WoÓ¼ÐÖÖìA·,ouÉŠÜ´KvEÓ_;ÝFbͧ-m­,‰ÑмÂ;÷\åÛ¥M>ˆ&¡Ø?À¾âA8(" úó¸øgZœj÷NAdÙÒ»^ˆDpßYO?ÑZuu~\Îe½é ‡r¨ˆ'¸žqî»jhLl—!”nø:;Ó÷z¹]Bh¡ÝÛ€ˆƒ“ìCÍ;*3a¨ì%û€r’ÁúäÂyÍ <Å•³ˬ¦<Ž?fj 2aè_ê¦M+ªé-5ãÐvŒÀŽ-éYóˆµéäÈ -¸ˆºcæÔ‰Þw‘%@fwEš}awõÓ’dZ»fú íª#c.D“Ø'M›‡ì¥E¡…ì;… J“€£:z÷çõR:`–xp×µ¦_Ä áGâÄ.ÙIq”Ù¤hS£§}4Ò¬ŠH0cÝ\DIog®S-®>÷¹]RÐ û6†ý…½§:ò¦.‰Á3öÆ»e?ˆx&G^>o8PnSlß.ky:|ÏÅ;Ü VD»2Œ³C×nSàÞžOxbŸBÛ…'|ކbŠ€w¸ƒ´(@Nó«zêµVËÓ‚³wºµª“‡mù‰mþy,è­wÚâu?ÄíÆVÎÙßtÓ——Kñre‹è‘Vnx<ÛíÎ;!3áåa™ùuŸê”J†«äïó*+:PÊUVn¨Hðí•á>Ú_o|8Áû;üá¢Ú¯Ëgóµxù’oÿìÀ½¼;ÞÞOð¼6ÄGå !{Æ[ø*—ïf`”‡-‡¾†Z³£NW÷Rêù¨Ãã§sgÑOùã »D§¶& #²ºaÙ6mØwD0?ý<Ù© ¼#Ç[·{#÷Ð.&“;óí-û±ud’±E;±Èp›öŽF;îø§›uo÷Ýn¹<„Órùf~G Éèöõõp:Âú…kJÍ@œXò{¶¾þÝAôÅìú5_$ÿ×KuR^|J¡9ô¦z3°+UCªÎf`“ƒÉÜnTR±•þÜoN$M|½¾¾GS¬ÏUÛ—Ê>|ÿ"2ÒüúúŒ7wŸ)ÖnæF7{Ý¿ŸÜ¸ à$åüÍì Ù™QîøÍ.5†¾¡ß¹ñ‰¥ý «}Ô`@½×S›™¶F ï_.PáZÖíèÐhŒ7wŽÚćì÷¬ã±ûW†áýix-ê?¬¯¯ šhøê»!nû¯æ6Ž}ø(>¯|öŽýa•áÕÎÐ$™¢×øÃê¨T°W0+®ëY¹ —¯~|ƬXJ8CŽcÃK£íâ~x=5$ —@qoˆO)f›˜î!R; ¸wXÌýpI\½‡]Çã>N5ÌçÄ©ˆ4ÚÂø8ÄöÔDö„{ŸV]ZŒ[#¹WƒAû";1ëó·ç?,¾.hH3QB» ‘§‘è·9 ŸOˆƒÌvñOVA×oú½… endstream endobj 342 0 obj 2002 endobj 345 0 obj <> stream xÚYߓ۶~×_ñKÎã;˜ øóâ>Ô±x&i›ñu<Ÿ'ã ŠTêdµÓ?¨y¨ßó×õHJ\ˆR.½û(awì~»ûôØÍvæ±›ÿ}‹÷³—7³ço–ðÝ,f‚yø,öYìùg6Lyê¥Ü춃ÐËAÊcñÇ ¯-¦ÎØ•)ÅÿaXÏ è>NXôS.…Öâ>C‘r!ŽQþoWÎKx*"çÊioQ¬«R«#€ ¬8n®šÆæä›¬(Õœµ5»G’è¶ÎfmvWªkf3î—jvÒuc€|*ù‚8SŽÜ¨vÓTLÉG œ‘œßdó˜ú¹7癓1ýC”Lù1—þÁÖ´¯DÌ…O´÷Ó«—¦6T*o‹ºb ëµÞEæûGxÈ‹xêSÛ9òŽL#ì<<¹™DØnU;öüdÂs©ŒÂ}Y½Y*¶ÊPúÖµ)uõ‚µËB356,¢˜G Qûœ­Ö¥bl—Y˶꫱‚ âR…F±,Ï•ÖEuÏþ«Ê¹6õ¶ÅìM=V•HwA—¸eõÝ'øW³»«²•º„ªnцÍr‹jN$ˆxDË‘HóÄñvR¸Å]†r/¡K²ÌDò€ l)'@¢Ž.Ùqªó„J ¬×TèL"óPÔ]îX^ª¬¡S |*M7.RÁ}*𞎧m46X)äE¹YU¼Ã'ìÆÜO\ˆú:œÃÓœ:Löús®Ö&õiÐCMF]!z¹csµp•D&¸d?ìÞýøý³gl£•›IÊATö‹0US÷UV2›þšÆÁOžJ¢Jâ =ÉØŒÓ8Há¹Ë} ã!˜25À˜Þ¬×MŸ…6Ñ‘„YYv#I‚7Ó5t9¯¢M|‚—§ÔÁYƒ\52WˆU, Ç…ÂG“\gÝbnn„ðÀX03•~í82öÑøf_–§A!Òc¯h>`À§– ê¶ÙämÝК‡îŒ¢7vÂŽ´‰P¼Ç¶ðüL¤Ð0#IX™ÁHz$¿¢Ç¢H…}¨ [¦³.%óZÛ ¯ë•b_h¸SÉã”Îú¹¸+Ê¢Ý&ld=7Œqt#­Ž8ˆ„dÕÑ@Íf[Â`‰ söèC³Cž¬›ú¾ÉV—h%ø"¯W+ôÊ®¹ìê Cµ#{C¹ñ 4"4 ˜Œ;ø–ι«*S²æNÏ@tQñÆÿ é˜Ê8Ǫçu—dè[ª@ÜS£{–¿ésR¹¥ ÌÃ4´±¬©M§'8Jÿ^øÞ‘Ê9›mŽD/Ym’ÖŸ# ­ºB¯zftÊ\ Ó‰Çæx_5Â(páœRFÉûêL“6<ñ©8’½§^¹<à1¦K`€3~ár)‰ðHȸb‹“fÌÀäð.Cç%*Þå¡c98ó‚.ûGfnL²d(¡»¬Ü,N/+ˆ}C3Ȳt·®w-B”5Ó¹-=îÇ=~§>GIKè`L-—#’íüúZ {?Q—A®µÎkœ½+ª\Y•Å]“5àAYe( ¨FÞZ”m´›é@Ws¤Qç¦Z‡»ƒSvíf«H@Ÿ: ßwÓÓ¦%¸ ˆˆjKÁ)äÇ2Ì-%Ç.&kó¥íÈÊ%^]ÁavíQA&Zže ™ŒœŽŒL|‹ÖñBš Š\5ξ«)ÿ–¶DŒD¶N« l= PĦ–XÇiá q`Š“óŽ}Ïbh¼?7œ03ŒÝ©¶E‡B–¦J‰è­Í‚› 2WŽGÉ1RÌ7hz]´ïJœ­µ½2²wQö fºu…JÚºhëuV4„Œµ»µÒ‡žI½nز¤zkäLwÏ•Íñ¯ëËpâv•@Ìüþßu²S.ñ׿“ì¡p5LC9ÑÜÊ‘} hMÓ¢Z&ÐÚR¦±ë_m®s¿Ùl*§|ĆŒÕ­ãÔÜq°ò€N³OQîºEyz¿-§}ÉÜsÇDèì8ôíI¼š(ÝqC÷ç Sº;SúˆeÿÊë¹2NÆÝɺÃL«4ÎØ™›'\jX!&qÈ}I† Gø€FJ™É÷³~Ép8ìŽüݬœ}cªúY€Þø––Œío-®Íáª÷€“¨ȱÆé~tr,LËPG!Çã‡6áºÈТ¤ú«/+GRÊé໨e¹rë }Ô´… ü9¾æPx~-Ó"eêªùK†±)uc‡rƒa¤tOmáPn.ÎYyN©…L–UmA<¬½xp×ú¡aê'g1·´IBg9‚¼Œöƒ}È‹É0J’C"Ž8šfÄÖ²xóö€6ss:§“ìK8’d`9Ú (Ûcê;ÔuImªf×Zð…¦•9ØGDr«üçpXè]}Éæ…Ɖ–\/¡¥ì'#cè1)>ä‚uÈp ÕmÖ´C¿ëO€ýt&ä†ä÷v¼!ÍazšE2–æíÁX²¿ëcÛ%Iwô~,¸c“—A˜¸“Û» Ó;úÒpœœÆ]ðy5!©üøE ¥y_YÍ~m—ôRÕ7o""µu0éû<¥vöý ~@`”aHûÖs.<¦ó¢icíﴛ‚ØR%²{…ñA\É'ïöì•`x‰£áþf„³·-½w> ‚¤¦ÔÚô&eo%Êò²¿N±ÝüõÍ^ÓcW õaÈòÕ̾C5ÏÃcÂÊYxÎ#öϬyZÎæ ø(ïYFѽ¡âhêñÌqà³áûÃî‡ý“½¤);ùþÙ™Ýsõ¼ã1ïoö¾ñ 9ÆØß5@ñCVÍöK3zWϬËx‡‘ÏçÇœý23fÄÜH•³DþðäÙevÃçƒÄ ³œ½glý¹ãÈ] endstream endobj 346 0 obj 2547 endobj 349 0 obj <> stream xÚZےܶ}߯@ôb)Qï”*‘²Š]%Û‘µ)=D©-.‰Ùa–CÎò¢Ñ$岜ÇTéër¼,3£¤\^sF£Ñ}ú4`W\í/\q•ãÇŸñïíÅË«‹g¯}!ñÇõ….þ‘"öD,¥Åâj{ñøjSvB=¹úÇ2žFN›"Ÿrµë˦ݰ۵ªëè{«òMV—ÝV`þýPöJܶY=TYk*óÒÐá :âûþSÄwS'’¦H'v V¹©”èQ©Œ‰Ç¾ã2ùpì$Ì|Å·ç'©#Omn¨3¬YˆmÓõ¢Y‹~Ê­Z™ó±›(MçÉ7l(rspè—‘.¸ >Tù¸Ø¤?o %öÕ*ú•¹; BSßAd­ª-ç…Ž/M¡^lTµ[•#˜`à;q` ^ñáÔqÙb(˜Tv+±ÃFÈÖÉv2]›Ýo²^šAìMU¡ç;QdªÊêžžºN¤¦/“x±¼uC+µ©OJÏ R&¹çG*½ÈqýÄ”x8Ô²îJØš‰›ªÉïV"« ‘·*ëéo?6—’ÍÍ?°A‘›í›ÝxFø]Oåþ BéÄ1[óýFÕ“êb%J~Æý‚ðð"s‹ÜЧd㪛üæ%G~‹C‡œI~ÛX!žºÈ¹ÈYRøßÙíy4ãÙëÀB¥N˜˜sÒ3³êÁSãLW(^ùLQ¨¶´ÑÀM™eùxê$ÏúÒ‹ð+|8× tˆî2JÂÇ2†@O‡U”e¼€AèÁŠà”ÿ$5TðPeˆ³#¡P ×>µÈ'¬›Oíô$‘ÃEÍ(=í{&Öœ9šol¯4žuy³Ss|+8aŠ„)3±€ª¾ÁqS6)Ss…ŸPPi׸[6+tÇ‹ÍYËfèlû%qB«rE¾çøþèäí¡»¯v»çÏ_5u=ASÞÔ/ijgˆ¼u6T½È±•衎`Þ6!õ#­ù_ö˜‹d÷ÇœbY—¡G­><Æêž¼°&‡©tB Ó8¹\‹A§SŒ¾.n><~”á?×5×ÛòvÓ_¯Õ§²ë¯ªôáɇ'¶)L$<‘Njmú§¡z ÜV]ýM/´Ú3æáØÇ•鼩î¼êÂú#‡„±td`êÇï†n#Pø‹ª¬'$AýϳE,;àk*rYýàïQZµŽ­>r4˜‚Uüb†À°ÀÓ£¿œŽy’òR@cú€¾M}׿>Ÿñ š5õÙ8‹Ëpd B¢%清l^ôøšø+à”F5d+e'9f.{”­b dž’o&°ÐPÆU­šÎ8³OFÆ‹Rà‰9 àBjš‡c-Ýór-Ë5“#72L‰I˜‚d= Ü©–‚¹¬ µ©º¯œ;Ip6“c¶®æK&pEÉ`‘+0.ÔQ²°Ýø^âÜ-H8ø¶jn² žñF4í\oƤѥ¸^ƶ2JbœÃL @„xI Á½prãèD‚‚Nkå°œ{MU{D8• S:èS?_<ôÄåëþï¥I¾5K¬HC;b’mOÅ4Œlëà‹ª€) ?S[• ÆMø¾¢ßf—¡©„¯³¯W§Šwú‹QŠé4 ›Œ¦”Ǧ0cäÙ}Ûùú´¬¸ 'MØì+»ÑòO¯p´=ßw —LÙ=’>o†ª78íºUVŠX2m¢ æþ,Pxf]Êj¼” ›×ಬ«¹u3$†9”‰|SV3I§?­AI˜EçN>Dœ¶À.?°eúáðîí›o¿=î<ü€²ÑÝw¨¥[ë@$b5õ™Ü÷ž(G{«ÃsÛ¤Ó<é? L§1Û˜oT~סl2À¿2WèвŠ„9}ÏÇ bŽg‡Î¯y$z:Ž !:¨ ­ÎÕŠˆ ޤ;Á.+ ñù4`P&»)SÔ6û¿yòï§¡"øYò_(q2ÁO‡:°0ä»$þ×ge­ÑªXh»Ô#;Jÿ¦ª¾;ÂEôi!,Ä­B_xŽYPáŽØ„—Yñ=ªÒ§3|Âõí V‚K—:S`ާÉáñÃ9‡{)5šl:9üѺUÅ£3N÷#ÏžsÒé~J•‰Éížì7Ôbdâ3­ñEgµcGÇis°œô4œ³Ï^—˜÷c¶Uçšœ€Í°’ü(N™€á´wÁi€7s* Ávo‰ÖÒÔpk÷–©dã 4 € —ºòÊöWès«ÆÖUvÄÜwWoæÀUmgG,z9ñüÚÛ]Yëø.G^O^±“|}&"¤n)MU]_<Þfõ­ºVmÛ´gÂBzöD *+ì륄IýQ_pÍžþè;8œÕÈ{º¶<ªBT­µ_}?7iÙd;л•¸áùé:QÂäÆû)‰-²‚ªË„RÝt³Fw1š8PkdW?ŠE6›cïú–ܾ'=o©NHŸ sÂPAbãÀÛãr{舸´@{ËÑxÊÅx£ SÜÑGT9ØS‹Dñ’uwä“^ßñ¡Y+·»–8µè;º’dëð·ë_/ðjmŽ×³ •GËÝ((¼€ÇPÅ·ö)Ûî*uŒÒ¡‡Ä’L´ªf’ÇDÝðå¢ ^åìDÖó N—èœ|GSnaWcÍ}« ¾å'ÏM×ÙLë`L‰dªíÅgŠŽ/ú…è v\&õ|6ÑN÷¤ËiZvøðsâËóvøQ.ž²Ãug;Ì;ì‰1¢Å_ saÇ®íÝÀ_TÞÕõ¬‡L`ß·«Dþp ]¶V¨ØGY‘€ŸMäM)9>´TÛ Ålœ:4ìmÝfùD$AFû#dðäyd 1w›JòС³SWjMïÕ– êmІ_Ú{ˆÝ”ièÇûIU7Ãí†lA„×»ñG8ëˬŸ[³y™ÕÀ"ô¿ [â- :œa\é‘ôsÇÍ’møÞv jè<–xý…'=p!lõU3Ô½]Í¥ƒziJ.ÕÜ:%/‰û”Ì1ã”2ñŠêÖg#âé~™Nì0FäÂôMïö}b¦Þ^X‘Nf­½?ú¥*bbÐCö-‚Æ‚e_çú=Ïé™ÇÔ3RÃ3ÝÐÀ?bh]dÂD¬«_0>ŸOŒn¡î~Åa‡LÔí¨nÝø ºçºú=}'dQ%1&}.#Þ®BT×.»<ÛÝ8´K}Ëê>Bjv49ŸÐô¨j­ºJzkÊkh}¦äjˆÀßc…Ô—^oÛ±sÐý•Ç! ñ^ZÞ]¾¹|u%~/^ÿüÓ`ÿM~'Þwùó%è†ÚŠ?ˆ_¿kú¢¹/‡ºûUœß:Ý@†c‹ªòLyz »Ï†–/s×Ñíë.Ó·$½Ø]oî‰sµÈ‘’-òžS5 UÈÆ 'ì[l›]håSnxlå<;v‚€‰pJÒã¥l\'FVè‡ÓÎÎ:‰övÔÛD#ÖÞuøYË¥×åÕ2ÅOÑKƒ³åÛ z^Óßóg"ª‹0p­O,ß>>GYúÚ\¬éty((ãoGÒ;ZÚ\™ž˜æjÑÆ%ì_–/I¶å§okuÊvÜ:–G|£ Ƙøk‡pþA;f2æ=¸dyG°ß¿>þöâþ‚>i$NÉÚHzÆ—«Í%æß$æ9›‹÷¢†®ÿ„ endstream endobj 350 0 obj 3101 endobj 354 0 obj <> stream xÚZےܶ}߯@ùʼn=‚xo¶S)É–l¥¬rd­K•§w»Ãh†ñ²£ÉÙ/y÷×å4@rÐŽRN©¤âŠÍF£/§ˆÛãM n×øç{ü}¸y~{óô¥¹LÄíýM(ü E‰,ˆdZà÷7êú¶ªD'þ">û¡é7̓x>ÔÝg_ÿùö_îš´ˆ¤*R³æÃ Û“øæñÙÛ?¾øöV|!^þüÓkÑõÍú½x÷ËŸ_ˆª×{’I°CÓë6õÎ,ê¾$ûI U‘ÒO_Æ" <Ó,”A›ïÝnË^¬›‡¶Ù k݉~«EWîµ°ºŒ»(;QÕæÝ¡Õî¢\I(ï }¬š¡ ‡P9ƒ},÷‡–‚áT*Ó„‹{ÇI"#ï{Z Þå^ŸÞ¾ùñË/]»ì˺: »²oZWPg2 ¹ 2œk®¤˜ÇmµÞŠu‰ïu¢ƒ]vÚ~ fkÄåfMʶj«Pí+‘Š‹üØÛ­êN·=W5D™Cè[]î¹}T¨¤bëo·U'Ž £B™3LÓ¾ïÄ}ÓŠ²f@:ºŒ!O¢?´hîŦìËÑ™’È8ž‚8¦0p­£²yqoœ©¬Éë†}*Œ ™ƒ?2@¬dJÇá¬=`ñT?g¦„G¥QÈt8ŠSx‹b [€­’ŒKžmÊC¯[cŒ•8ìou/pV8“ï·Ö{û{ eÞ2{G©,×F”»®ÆŸð…N»îÚÍîøV“YüE·u¹Û˜=ƒBR¼9@9g¤ ßÅÃxF½;SÀëé} PQœ®Ä“Ÿe2K[:ôdÑê¾üh7ÖÜ÷º­þ0T­Ù"yεD2Yo˶\CùŽæ7ݭ˃Þü.Å«}ùPÕZT÷S@¡ÅÐ BÇ KÙ‰ÌpàBv ‘ Šœ¡lrâE{ƒ!-þö²-ë÷žoæ&Ì`'ž¶N!øb¾×åÆOˆJ¶öû‚õ†9›–yÄǑ̹bͰÛÀ¬_l¹TÁíe‚]Wý_ÅæW³É_vñ«°ŸX(4IÈ0KæBÃlTÄ2 ¤uÓ žB_ÌPå®Ú8nÆmæ…ŒïÔŒÚV¯ûÉ3«îSf‰™ý!£üA«¨¢Qf?ñ¬§fûêaÛû.#Pøã{XÍ%›ûž/x¬6SÌÝë²Zqß4øg‹õ°Å>&ì®UI5²œI•Ø`/¶š¤½18¾Å²îÅ]Óo=Ò£òl†|SÙШƒ¼sMQÒB¶È0—;Ê Lù¥ðß7]/ŽØ7 ?’êý°swö‰cWI&ó º n6¸Nø‚Æ)dõ4ˆÿç0¸eÇAùóÙ©ígwÆÌ±{èÎ6ÕWýcPÕ"v¥žÜ”lܦl‘~ávU¹#úÇ“þ®5-¿â˜aÊL¹@ë—PÖ-wD2z·“(´Ú'½•[q(ôÄ?[}߫׿íP‰Wâ<š>ùŠ'Ÿ—iÊÞƒ§6Bß3~A1.åùg© ÇҭͶC½ÓMj–ОqtRCoK1E"÷ò…,Ê\o(’–C"J}°€|œ•Yówæë‘2~†–í¾c ›äg<-ÄÊ8­5µ«¢eMbé‰ò³âµŒN2™»¢1f¹òž§< “‰“|Z5ò¤‘q’š/œ±'+ý'>oɽqê}yBoBbz)^ò1u¥Àª¼‹)ç.²¥•ø®¤”4 ßéi?wܨR¡»µ„÷H*F;¤s3ª˜Ò–kÖìdjÁFû¬| ¢³œì^›.Ë#Š(t…‹zùgíTëÊ$¬)Èk²Ê\¬X8š¬9<<讯šz®M»ê®-[ÆÒU‚Í0ÝV†­›=bfcyŠ» tI#pʶÇj‡ÜüuôØA¸Ÿ†“T½x_sªæ2]aÇŽ`G~È™d˜¦þœwôp“Äô#I¥Dm˜Öº¯ÖÔ—<©ê‰M„zÉì"_S®‹>‘¯Ïï;Û^\OÚ‹¹Š-çÌ9ŠÝ|"ïı‰­¶Sƒhˆz÷©:ßÃÓB‰+€{8òMî¾…×Q V­«WRU‚Ž#¥l¦èŠÍªxYû$Š=[þƒEp2¡ûº¦1@Oc•{ iÞ„ÿàu²—–9‰ÿ”¦ä×zšÈ0‚ú?SÜ#±Ì+Gé¬ãú£ÇEt’WÛè(ÏÏÇÝL”*QWkÓ™N:®Í‹MsEÍñÜÞïJR5õ9{-µBã+÷›•ÏŠ<ˆÇžÊS.²‡¦ëª»Ѥñ¼ÒÈ‹¯(K'<ÂR¬¡Pw͡ “8e*£?©e C Žlñ¶"v6¨äÊGt2¹»€Ç®*ï`¤‡èν¾zìåóÐVp¤•u+Óö7m¹ß#T6öÌE£¾ˆm‘ÆD©šÞ›Œß7WmÊ05it´MrÅ6à¼Eè >·oûò=Ÿ-ÄèÆ]¨¶4ÊÄø€b/¹×DqFgû¢X¦’6˜;æñ-xì8.Md:ÅpÔgGîÊ0 QþCò¡Z r¤ @…tJü*¹:›ŽB+{jrHQ:cRäÌ`ºS‡\âó^âä9šWÆ#@Ÿ„ Œs›BF’˜¸pE´èŽ6Õ='QÔ7óOmË4+k;H&ßEÜîG·h¬6}G]u]Ðî`ý2I>çÃî¹6ePê$÷ek8ŒW¢DÞ&^°ñú1ºS_V ”hCÛ°éûæU*$ã.9ù­>ÊL‘3ÈGëB¿oõ2!Wt)(&Á»ÓD…!¼ó'AÄÕÔÆ5 7úYóNçöð¼X£ÃƒÑÕ(÷âñåðéH1¨ë!gfoI=œö’ƒÖ Òè éÇ⫱•£¾ìÒ骎öhw ã/玂<ˆoªZ.•Q‘Ë •úÚ¦þêÝI…²È¹öÏveGÓ o|£¼d×ÑeónhctÅ8u-ˆLoÿI@3¾}þ>‘qÄu²|©;²`7ˆB?ëñ\j<ž#s)C˜t^rF­d”)†:Þ;j_šfc3ÌÅu)*‹ ÙšnþyÀ÷³$g(âë†xJOVêº'ÃÁ·o§¤¾¢BëÒðþ ï.‘:0pWà³y娻ÒÌÌζJðÞÐÙÐÜÖH¹Ù˜¶2%Á6ÊSϰ…šs?ý*"‘¨,u14þ´ì d«´Cf$•½³D޽%i«¹éh¨ Væ€;3Ô.;ï²”~' ‰™"§÷‹RdõŒ <šôâÊb“àÐŽÊ=ÝZ8,’ÏÏhÌZx ]yWá ŒB4¤ôb’Ä|Ú–¾ÞYË-Õ\ÍՈܤ©Ña -M C÷µ½yá38›³tå*~¾À7©³rcQùg>z+¿jfù M®Í,™þOØÆ¶9Œ¿Ÿä´û‹‰0D£vàxWº†ü<µ:$OB%Ñ:®÷7æ—^èyz¤v'Q÷ÀüãÑbéi{s?uDSH‘(Ua|¡„«Câ7=Ð Ö~Ìÿa~gJ¬óó¨Ç™x¢¼¢}Îè3c3æG”ˆ_¨Áym.ÝFÕhÝ+ ½ÈN‚ýüé÷oL3z“¤mJ1?FM‹˜~>#¦5Û›w¢†¬ÿ²» endstream endobj 355 0 obj 3332 endobj 360 0 obj <> stream xÚ[Û®ÛF²}ß_Ño“ÁÈ ïÏSb;|™À2‚JjisL‘ /[ÖOyÏïUÕ$ÕÕÒÎ޹wWߪ«V­ªn¿ð½ KÕúüà«õöá…õã?ðçððãúáûŸ" yÿ(ÿ* U^š©õñá»÷m?¨v¯†G­våPªárÒ½º´£Ú–ꇶӪjT©>ýüŽ%6e¯U‰ßê :ÕŒÇîzÕvjÐ]ÿ{™(ÊS/‹c{¶¯FìªæÐ{êížfù‹Ý#N/HR»æi›ú¢ê¶ý‚~ªh©ÔɧZ›J‹bîÄ9´$¿ÑÃYëfÙ¯¾×Ý“=oú^,FÀ¾ÊfG ÄÇéTWÛr¨ÚfEãt¼ýF¬þ($ŠÈÛ`£§ÃgoMÅVº»O‚ìŽêÉj?Òva„™×.Þt Iž;ã&Åâ@kXȦ:4b°´â0ó"x¼%ËfŒ£=#êªÿ´0àæðâ„7ÌPî©ßxÄŸÞ}tq!/°ÆúA´—\´¯Ys¯?~þñÝ›%îx¿ýUK =ƹÝûé¹ó°ÛáLÕÈ(Är/¡œ'÷lã0”Ô³áß;¾$_p„UÆ~ÿhëbÉ“‹ŒC¯ˆì.#ާ©á¤k°Ë[‚’y;5 óí«8¡“‰!¬Vüçü4°{‚{¡§>´`Lš#O_5[MJD^þüŠ’æ"WÔ88œdð ò ÆRÖñ©%z©QÖµÛšY„û ¶T_±Æ0B,›ù°Õ3Q=44 ÉÒ9ªg÷£:ë\ ®& Ñlì¯ß¼zûþ‡wlï+u~¬¶¼T„ɾ°€D¬‘`¬Ó„]à7­«µäÊ 1“táªïGíØXÁæ3»l¬²à0fK¦'¾:…WÕáéfÛŽäôÎÚÐùQ2ÐÀ R{¤ ÙÌH2Ýp"7£½“&ljеC%=¸!=‰2†·H$^–Ûrå…¨K)8ôÂØºño_4· %hòᄳ¸QLSK¨ ¥ö@gÙ\xy!×Ú+btà3¿›ãœTvú[C.݃oih÷b³®6ß÷Ô¿8~¼oãp9» \¼?µÍŽÈ 6Æ™ Y{¿}ÔÇR:l„ü+àph˜r§÷=ÎI&z1OKüÐY @qN°!nMj"ÕÑŠ%«B'v/Oý$m(ãÀwh)…£óØêÕ¶|$R}—‹õ®ß~øõ퇵úüáÓÛ|xóZ}ü&‰À½ ÑÁÑjœ…núðù§Ò8rœ0@’ÝnñIÀ} C ^jt¼À¶O§—/Ù«æÿ}lúêW¾ï”14-™« j×µ|ÚÎÞbò¬Àî±V¼ üàæ÷ò%ÀH—§4u]õÏl1µ¸Y£üéŸ-âvŸQQ8#Íl˜`IÒ4*ùLB 0¶Ú‰9A G°„ÊÐ@nHy€³ d-Œ‚j‘Xt•fß àJÌHG°OkȯW‹ï|?ŒÄZEÁÅ¢\´â`ZÆx¤9’û0T1ó“[‹ Ñ>Ñѹ?WæÚ±ÞÍ#ÀÓQ)uêH1®Ü€~*®¼¸µœ, ì—3£ÍB}žñ†‰M$fú¸w”×5$Í¢ø@ê¸J}-‰÷zNâ{YÙbk¢c}Yí ÚLæu/Wˆ£`î´„¸CåÒ"°%Ãiv»Y;Å• bóìX>­Þ€Š+åNJe!ÕÞ,)–éãK üb–ø»)MŸ(ü)½ÿ¶­À]B•¦¶ì奭D«Ñ´ª.;P²„r«32lŠvj4âm_vLᑊ]e_qé!yÞ3û°šþÕvC¹©êjÀ*«½á60ýCW9ÂdÝJШãXvÕÞ©P×¶ÝkâЪ¿ôr³ßß¾»á=¢,éRJ›ØÍ`ÉÿAp£ðs¢4~±Å–ÞŸ#9‘½®¹èú©¬À8Š?Š©öo+ꟺö :ª=Á”(Õ˜÷BSC;tTDÄÎÓ=CçˆÙ´GSaÅnÛÝ\vÂo¹N¶ÅÙ ½Å·|{MtŽIôì9^›^Áø Íb^-vF”m‡löXA¢fã±ù…óÝHLŽ~ÛUýR`w?2¤52«ˆÓ“s·_/0úÓÝUÆ‹Ë.lZHÍeö~º“P¬í¡:ê+¤7òù%óâ´¼Š¿š˜ØdÛ÷‰˜e?v¼},å^̉ˆ¾ØKK"Ï÷»}6º¹xOª&»¡3¡#7¾%ŠÏ=íÆ_,ùCiA8‚ï~óýà~l€;…ÝWâ ¸:«Ys´Â©Ã&M‘Ç2ª{C=p}âzS¦76ó•ŽTVL¼vYCf·büwmûe<ýäº>àÓ’+«Z;÷,1ÕÝÄT_·ú4˜@Oº–›ƒ;æ¶tÛõzáUQf‡4¨=Ì“»;®DÝJœpk›1ÄêHW%ÕÛÁ€ÖdädßÌÎpU- vEõ.ì>êúÔ“È-$±—aÖäD“¶ÒÆÏ3Äù…»¥ìê­[dˆÐTY ú˜ %$ÒÕ`Áå-šQ,`´0dˆŠŒÊÖLZìk,2-:! }C'h¡© î:ùdå´EKö—jÙͲ¤@™±ÝŒ„rC…Ã!æ*W–Ô¦kÇÃã Æ“*7"ÿŽbf6ÖHf6ö:L™OV>µÀø-©ò"õêS2hµ¦7烿 Ûpçþ>ù$ÇG@ q ›;½­Žå3ÉHç¶æÇbæ3в®J(Ÿy¹ø$WľmyB§z`êýb>»|pć~Du€9ýÅ…;Ùn˜yydwzýÃúÍúíû7ϘX•”'œ½´°ZâiȾ`ë’ÙÇIáù¹-z‘Ĉ/y­æÕ3»‰ÓÜ‘ü¯EIRPðãã¶õ¸Óü¬Á¤16’g‚`bòçŠ #ß‘WäI8¯gNÊ "[^¤µð=<Jk²3»æ›õðÕBîü@HùÕÁñ!ˆãù‡úáÓÃϦ>´pz·“ºÊ£Ê@”Ê ¹Âf“†j„~D´ð ¹ÝNn~vâŠN3!F,“a¶ˆS³/¼0–S L—ðÓÕG9Œæy‘IY ¦$\Ö™‘( °æC.§7ÈÅï”6UC &±TÄ( E¢Ÿ¹´ÛµÎG3ŒÙ’Ãü.ÃÀ>]eÈúCŽ8éË>ò"”®§‚Xê_eœ¤bx˜Hí¯øæiç{ät«™ î+¾™¤–’½Liœ§?!ÖO…üW gQ NòRÏG¢ ÙO8ÄOnq:N媄rº âG_.kú_o¦ßµT33½¼?&^r˜'÷Jƒc P ³$äAÜþžµ/_ÈY·D2ô‡>²ÊüùEae¾ÐÝ#èˆu-0œâ}#.P(tóPƒ7ƒ¦Ü‹‡R™4š±¦Ü‚H€Ñô޳æ^”Hñòx2·!´ç½<õ”2/!Ü©Îh€£î(õ&bÜ€,»×åy(û!ãVo¿ÿ(Uf€ŸH®æÉ-.0*¤BÅ£)Ú`»S:XNOÎ^¸/̨FÝŒc½H3µ’ºúâÖ ÒTîcÊ1fÆÕØ»èMO¦>Ù³èM&8{“É.fˆ~[µwdk¿ä ­3¸KïncÐ/N ’û·¼À¥PHõq{@½NbKààÌ|&.Mšëž‰r¶ ¡.åÕ7›.vvƒYA´;^¿™m5½#l{º*6ïepÊH.ú;EÔÄË¤ç¤ ó~J_/KŒxê?¤ ¦#•®DfvÍ´è7=ÈÅœ`Éùœ¼80‘Á^ÐÅ”Øhʳ®@Ï‘À5;‰WtÑE²ãÞèÓOoô ¢6GŠ–è‰”¥ 6b‰Æ 9À[}ÊzäL…—`6úúªZ©°ÏêM<ƒëW§ª«aÚwéG3gió¾zÄ”ßlü蘾çϹZûÎ'–ïŸF–¾ö÷ÿFäÃWbú'´Æ ¾Y„½† ÉÈüA ­™Ìýaù èŸ"ÔF~úžÖqÅSñÏâå©Ò  O‘‡6õ@­Þ—ÍhêjXõ{aði]¤'%~þóöŸ9öµÔ)óòåó2ÄüóUbîóøð‹j0Öÿ•TøÌ endstream endobj 361 0 obj 4373 endobj 368 0 obj <> stream xÚ•YÛŽÛF}×WôÛÚÈL›Í;mï±sÙ’É#Èbƒ’ZŠTØäŒõKyðøëöTó"VäÝE„œ®ê.ÖåÔ©Öµ'½ w OÜ­׳×ñïvñænñâ‡@(,oJxøG‰Ä‰R2NÄÝ~ñìçã»_úæ±®µ©þöüîã$§ÂHz^2nÅ.g"Q&Ã,œ‹<°õ8”AÈÖµh½Ö#6u#ÚûÚ´BÏõüØ—±ÊæzŸê¶X‰uÞævs%Êâ¹Nz2‰œ£vµÑÓ9[]›CÞyÙo!Å¿æ„I(£ˆ9'oW;mD[‹UÝ4zÕ’¼Gž93βÉ?»ÂˆÇ¢,ÅÒÞmwí¦+Ë#ô+S¬u£×’öxñ”é§N`âDI_õ›2‘Ì™ž'UÀeÄ?ój]ÕV ŠâG™~û3AÃXfAhõÞÔíN¼EØ¡nU¸ÆJf ÓpâË”ïHß ;Œ(*rö^¬ò²Ôkqûþ§Ÿ®Ä’E7‹%òt®Ýµ¤Ä©R§Lè(ÖņɉôB&³Ñ Y`ø^qvù[‚$iÄ¿¥AŠ<2¡,•aÌ„ò#è-ªÿìtÕ–GžKJ*nÙ•Km—›¹,…&'9$Û¡©çYdÏžÉ< •„9èå²é‡ºi‡4/PMgÒK^‰Šë±É¢Bês#2¾/_í7ÌÖµÍ|b­ËWEY´ 'G:´È„ E„³…>•°(ŒéP…S=„2tSÖKeFvW›àH&¨‰aƒ}„(ts1å£4’qÔ[u84Å>o(L[T«¶¨+Ú®®´¨7vO)n**ˆ+ñöÅ9ísØ)wP’);æJ<îŠÕNäÌK¡Œ™àp°Øi«cÝY?•,q#/¦"˜«mÙ:AUÀÖQuG'»"dø¸l򼄿¢ P!xMûʘp^vº¯çQ¬Ën_IÁ*ÙCjFLnn4ë#~ €«Ü aŠý°XÕ5ž`9¾Kq[4elAÚŒA³SÊAâ(R';˜(¶\ ½ïʼÕbÌ«S}:åGöû\›êÏØžB+Z¡½P»ð?Ó æ‡LûÑj®ÛDæù(þ¢¸äËRáÁ‰€ýYÌvÑ6’ws®)EAv’d®ˆ©èçËŸìá[[ÚC_|W[4aŠ* ¥çhæøn}%ŠÍ_ÞCü¸š2ù¾žÊ$à†"1™HâË‹ÜÝÜþ~s{'Þß¾»ùñöûRÄÃÐ&õ%#Â0“ø;7‚bm-`Ô^òä[?™¤×zUæMHrÙ˜CÜuÀÈ„éÕ]¹IxÙCW(R9Ø¢å¨$³Òû£ù³<^¾¤t{=½áºcQµ:ð‹m¥×ÿû#0±\¿ºˆŠ!r ‰b»ó·”@“ÕTÀ/„¡4Oº,B­Ï•û6´Có‚åe‘ݳ:Óm.}íC"@Šà¹Oú`Áê¿–”¤# ™ži¾x}˜@G€ £E|•2ˆØ&e±|aí±E±;°Ÿ<Ñs0àrßÙ:޶ŽZÚ Žñ3ð{&˜W-aŽ¡Äow ñ;èZ£»àˆd»Ë{$\?ßËÁó³ L#øúIê@NÉÿú†Š-xYT¦Å7¶~úH}nL{`3„¯ç“ʼÚvùˆƒôlŸ4šÓF˜±ƒ :Œ8ÔÆ0Hø¦#ÔDåµZW–/‰ €¸kô9 2uŠÊ©Nˆ5à >.Å £1Ó0O8—JSÉwå=8 ¤±uÝ“˜¾Ò‡ökd)ˆ¬ ;C–ºªGåÅ'Â1%j÷«+} ez¡ÇV1:ÖhX½vùÖèz2Ñ693¯X Ñí¶Ý±§ 9gÿ“ypGLƒóõ!Ç„¢Ìƒqë©ï s4èä/'ËØoÚ˺uêÚ ©´æÒäØ+9&Ïz"=º4ÚÁ Åç'ýÆÖñ9iÌÖ5u=ηh8 ˜P+:£ŸdlvÁu.hú¬G k•“*q/|ò~Yl»ºCs\jûã'y*xÊw+s\¤¯mW-cY—2©-š ‡Ë©€ØDÌ?µò"gC³ R~ú‰´mËz »Ï7"*á'Ùpþ1˺Ң^~¹'‘ÚÒÐÎ,G¼ptXÔïu{ñä0J\áíuEŒô,¬Á=£Ò>gÔ;ͤâ6úS¤ÇâøJc§Žç·õÝvmñw1µxÒ~5uËáÏ"Žaªñí.7=ÁÄWi ºùõÏ´õ®.×N‚,#/SeßübZ0íý•Ýa«Á±ïŸQ’ß?ÿB}d¯ûbä㛯˜ yÑ`^é*gR!N‡a.©ûÌõ¹£Œ[ZÂV7{8¶îÚCדØBÔ³3V›ºd‘Ý 3ÍÙIùÛãy¥%oô—éË9»­õÙÉ„Dcÿ0q¤VÌV_SË#Jóúë0]"(½þk(Sœ9Ûܘv¶Ü @s[ì{¿ØRÙë 2µ{gLà%Â`Ŷs(L&³”­#“œÂã¹ß (›§\‹îEdj›g†7›~¶uXÒU8¨~ '³Mû›˜xèòx‚ ’*˜+]†€ ÊYAÀÝ›<ÀÍe¬AÍþ·sÂ(td¯Çï°.à~÷ÑÒ¹ðÈ+fŽVÀýÑ'T©l ,™‹äMa;÷^EU¡ETu5YA1è¶!“šþVï]Tã¢Û¢ŒtÓÀ?{dª%‘G]Ú«Ó|‰òs L£ñô·y…Žý–gŸRh\ñ\Ì!>zá|ÀE¾ã×çto3—ª¿å§ qcŽ¿ïýõÀvòA:â” Ò]Ö½½õr®Ö3ŠåLòS 38…ºüèBç•.IgZ×k}ÐÕ%*«È=NA­kçW…-Ó¹`ëÞ)JUÐ♌Eð’¥v.®щ>uc®¦.¼ÚaˆÐý5Šð@eb›‡{·‚©ûl§ Xoå°½€dæ[Lrè)0Nir4º“­§&=R¦4ê[`ø´ªHÉaÖ¾\Y<—“â ø¶ÞðlLˆèͤò®l¯zŠw² /tÊ¡ÿ^!%òªï8À¶G;èÓ¥ÅeèÁ‘sÚÈ£1?šŸ~Çï0AÑ3¶^£÷•ù§s]T¡¥EÁðc‹ž³ŸÆÊÞÌ DiEYuÚñ²} —=q-{µý4èÖ3™k éã¦lÄÒc‚”±Ò^ñø·njBöþí Æà?¤‹Wñ þvø©©ïª^í– ƒ›Eg.™ÆË*˜æJ°ÅÞ¢é¦éþãv÷Ï_9Æ¥ À£í P+^¿Ué(Rº Ý”%Lœî~¤“÷Ï™â÷w“®'®ýŒ'Vû…ýÍ‹žÇÇT”‹(ôœGLÏ{YzÚ-6çB €í‘ÕÈB=1bnC0>H<Ì}™žÍ­e/?<vœ¦À@zÈÆ$LÜ_q‰5ñlQüœWàìƒi¤wÝoà‘]ä'ÁÞ¿¾þëâÏ=ÒJ’‘µ1øñéɳföãûIbÔÙ-~öúH¯Ò¡ endstream endobj 369 0 obj 2724 endobj 372 0 obj <> stream xÚ•[ÝŽä¶Ñ½Ÿ§ r“™QD‘úÛ vòùƒ;€³A’ M7gZ^µÔ‘ÔÛÛy$_$÷~ºœ"¥n[jo`˜Yž¢Èbýœ*ržâ(Õ¥x>=ÄâyóðäýúÿøÿíáËç‡_¥„Äðëƒ1þ“"OD.e”iñ¼øÅó®Ä©nqèëv?Ä?ŠñToL$¾~çî(vÕV³ãΈ­yýåó÷—¹’LFÒŸ®:6£xíz ̦k·‚~ý•–¡T¥©ö…ÿxl׬Ò2‹ÑìM5q¨újoFÓû+Ó*tžùvQÿî‡QtÇñpÅ0B~oÚ‘$cÒœ§¤¬,gÉ“?s^F’vÇf -ù4ê>²a©"œ”7lœú¡åþþ‹?þù›oþþËEÕn}Ež¸êó(•á:ÚŸ3L‰ï°eŒÂø'Q)Wשâ<‚ýu¶bÓíuc"wR€åQR–å°‹"·"**"®›8’ŠcÄ·ç÷ß}ó«_±ÕË¢ˆ´ÌpïfSWx?Bao‚-7öë <3€Š£,ã3žf ¼G'’l`Ñe2EEî”0-g>ÀWØ’5)¼`èNlšj °»j 1ÖQš§ßMýÁ°nMó`fů•Ee¦v·ïÞ Va+þEv‰±C·'Ÿg:Ôy¤øßzcÞÍB6 õp_Äò³œÉ€g¤E–ZÖyI:b¨)¸ô“„d!-˜@G&¿^r!úhlèù§V”¤E(ö(óVR>’òo<±21‡ZÒ?ìpjÑ,‚„Æ ?˜x&RH9 늄ÎS#æÁeE ’/†ãÛ›ÆáÑþS×"ÚÍ1ʃyT¤ѹLSÕä(y1ÎOlăö8FKá*qÚuṎhx†¿¤òNr"‹ {á$"Õ ¾îφÉÈ•<KPe%†‰ƒ5 °·pùãfìzl¹kU3‚¼¿·“ᤞhAóõ|Bo´0û=MÊ3fÂW[5G|¨nÅ?ÈÞfˆHó/K„J—ò*ÜÏ{@„ò7å(Üœm€¢hÎæ07¡ïû#¢ëž *™÷à‚>xà4…rÆPgç¡Õ8}Æ•^¤gr[kMƒøaZÂ¿Ì 1]£.\<\PH0|˜´Iʤ¹¡ú=>۳ũ¼œ­e®xP‚—0Muñ rÅ?Áç þQ GU&H¥^_yÞ”—l|Á.Á%‘¦z^8fi¤I{nضÛ1f±Æ0RÿaV¬ýçP¯Ù5È€µ"/ G*K`}01Ó€£c¿R2ÐIðº=ˈ‹2‡kÁ5üq¤Ïªå¬MÛô1gU›v¤ºÕS@´Êœ´NmÁw7—1ÃQtD  S+¢‡<Ÿ`Ïæâýd{s„¬^›e«ÍÆ Žò©T‚¡ùTä8/REÊPÜ6R"Wþ0Q;? Q8:ÖEªK at43ë Þ$‘ø¶ú¾ëCëQba%ª\{VvGbo6»ª­‡ý¥Ó³’™KçΟ·2•Ü ÉÃLµÇg»q.ÒͰ©ôËea!]å÷§ù+/ R¥½ñî(6Ðox¨ÔL6_ºãZ \âL9zÕô%EBŽ«‘Ðü3jù0äÙqIêmPñÀƬí¡/£¢™-¢6\cv/™ÂPy¡ŒóÊ4“>ÖÍÖj~Ù uV¤˜QñÖÙ: ïŽo»õhÃUégD ­BúyÓI©¢ñ“‰é~àQ3‰âŒÁ Ï0ÀÆAëj³qœã¢pÊÏaÆ &þÌÄ…©†3+ápùQÖªŸ6]O5®Ïbî )ÍiäNHPØ[<…¤¯_/kßT-YËPÕ[ZVÐ-FÆ9åíⲌb>µqü—™,jsXº:µNõƯ˜ÃM%i$S&9¬ví%E5zO!ŠšÔö”òœ(›8Þ‘ ¡¦Ì‚¶Ý(Ô¨áqí² Ó’«P ¢ÒÅExj'óRðó0_’2<8(N7 µM¶ÄmñÅñˆDÂc$ Å$]²}£KmøÖ”&æ uÞt\“’A>(‚“ Ð¥AÏÚššö|Æjc#WÝnšã6¨tVsòá¼@UX$Á®Î mó™/$¥PïÈÿ¡ñã Xv7qÃ*8„H67*7^8Hbö>äÚR’€—³PP°\ÕjõšÀN³ÜÕ“œŒ§RP–Åê½’ ëÅ•‚³è¿ÏSŽagC~¯ù85‘ç{¥6d%µ¾Ä=ÿ”àé!þ¦³] ™ÃPs8 ?qA´¡øÙ¨ˆObV  î~ºº QR j…‚^Ùú:‰=Å* Vj«¢º®Ž¥@¹#(š“HÊ´¤ÁþajÈÕ=õ÷0A×l—Jgƒ LÉìwWb‰¯ÂË&daâl‚S”¤ ò©¢–r€»Ý­ÛztÝEJ›s7xN?$qœ?Iù$Ë-žHSýÖÞá«:“t'èöžê2á¶¿Gæ~ â8s™8¥€™ö­÷åµbB4éŠ7P9ÁÁâCË!C’-ä4ˆ]à0¶ÛÃ0.üzª¶-è×¾Û¯ù]ðÝM´‰ áa¢OÏ9Â]ÞNØJ`®î¹Mþ8ݼ[ã Ô(TŸ½ !|jÑñæõ5ùV\oŽºßM½©ÇÐh½gèbkÎ,´æüá9ˆXRÿckþÝ"{PÕZ6qÍŽb‹XË‚Bš®[›õìÚ#XÜTÓ¶kêC?ËTõSÊ‘ˆÑƒi]%5õ¢:z®Í_ET–—NîËû>‚Qp?u§wïfüí+îUÞÈÁöÀ£Úaõ.Ù¶d÷¬'éðkЪ)uáíº‚5å’‰Û—z7¯ªà\€´þÉ‚éÙÌ'ñ[Ñw§¿ýìÓÏþñ›‰ÄHík´ ¡44U_S›ãcÀ R™1µ ˆíº}\;šÔ9¹'x7ýøm£ïÈb8iBÝøHžÝw_—<˜õSj.¦9_êêuCž†Øw«q“.l>_Šîíü g@èLŠl}÷Š®°Ux`Èø7AŸ’Ÿ¿å3±@žàIßµ¢—7›‚qIJXRb¼nz±º€—c¡XŠ…Þ°Ý$_/íàfÛôºAçLÔßõ*é¶­BÎ&)) úÏÿÄÿàé[’¶{Rˆý=ÿ™kÞ?|÷Gù ʘÃe:ˆOŽ|¹ŽâÏ™R`PW³³²QšFÌñS~Hü¢ÏöÛª¾©ùkŠˆ`¾ôÕ³ þ<ˆ<÷‘Ë€\*+ì»O*x”gQnïªK9´¸z¦á |!Üø@JåCÆ÷øÆßRKa[|©ª gce¸Ô®}=DUgx¹*œ[ª¯¼q\Òë%’Í”Niˆ#•«€‘Ë”ˆifááë•BÓ…€àæaß¶øÃÄ|ÚWð®ZJŸ_(|¸ˆ=c&2ß’N%í*©QQbû¾Œ%YwŸY̶lÂSIu±®Õq´SÛtt×?§ðáfÁ5ŠÌm¯^ƒÆE©X1äi~:aÛ"-5‡Øé#K•™d"ô~d© £þ½šw¤é–u_m-Ÿ«¦{}ñRÍÏf¬µõ† Ïí«Ãoÿ¡#Ù#*jp#ðŽ}M‡2·«.aï&&](•ø7|ú6(©$Ê'ÐgÄÚO„–®ÑèÞŽ´ïÁFzeÂÛµe”Å-],0“Óˆáüë®âwIVF:åÀg2á˜+ˆ0MpÙ”€òå\ÀÞn=о~Ûá¬\s舥¹Ëf¯leÒô%Ø—GI8–JÅKOq¦+8ºàw%˜:áz¥˜ÒíÝŒ4ç'¹È$ótÎê7=äqáõ¥nóV ''ÔôºÛ.wvíƒ"Æ2÷åðTÐÒ6ÏПHäó~Õ¹›gˆòÙ¤àÉþ®kP¼WËi= ðö…Ç)4M¾ã¡ùfÇsÈ0V½5g„Öû_‚èƒÀ/ùÞÞÂð$s°%¡×=’ßuöRh:]>(±ÏħFÒžöÛº‡›®9î[K»°K{_#5™)MßXÖ¬Ööýµ?ûýN½H@5H0Õ6ÌåÔ=Ë =Ž /Ÿ©Ÿœð)ÞÑS·¡L9,hG€!K3+€2 ß‹q»ë_X^ÛÑËIŠûn‹ÑLµpÁÿkUÓ°O)]й‚NÓßGðî[’X²ïá\÷Í¯Š¸ƒ¥ü”-¯ï͸Ïs:ú¸øŒV±5 ìIᲤ:*R¶CÇCVChp|PP+›ª¾®Úqm2Y mÔ5P™Çþ—"*ædýþØÏo·7ÇÃÉ<,¿fK¨ÀÆMÓèïC|.ÿQEñ#|þõí9£· [Λ߭B†¯ç3ò¸R¥ý«OŠUˆùFqS&ìw¨:=,âh"R%<í[3sêcóÞ“Îè] Û7ø–·ÇA“Lûœõ6Ý×§i’S;ËC?»7W˜%MwÉÌ&”{MJw‹}ãG¬‘‡žßÄÒåÔþøÇðr0)Ù¸±–F5ðô‡1îoŸ^{c¶ ù¤«úÒð=(¥|h;zÁx­X‚ИÒcO¾HÛ”iéE·OoØø~N.½•½&~«YÛ˜¶66ŽÚß³˜y÷RÃnWÒùÚ°{+¶W®ãËáU¥?»wwüU® QÁ‹ù˜Þ¹3À_ù¸£®Þxwä Xºk$±µo¬±»Êú¬µÚ¿ÔoÇî8xÛ^x[WÀÚ½yn˜äšOÓ÷ÔU¶E"Y’=ºm» "zêM=y®X> stream xÚZےܶ}߯À›“Ò,M¼ÚO^9Ž]%—bk]zH¥R³C/‡ñ¢õø“ò È×å4@Π±³[)ÛÉHh6¾œ>Ý`(îŸnBq_áþŽÿnîîo¾þ!¹»‘"Ä?Rd‘Ȥ ÒXÜnþòašîá¯÷¿CRy’2Ì]Q±/G1=‘ìYB¥A¤\¡^ʦó¨ÇÀ•Ä[Ó¼Ri¤îNbç®b%v×ËAL{-ý8‰ª?z£Q4£ -`å‹nkñÙUÅÐÁ^R¶³Óé¨E¿ö„¾-¢¢¤rúµºn %3OtC›Ñî”Ê‚(qeþ`ËqHwUŽmóE×¢ÜöL°Hƒ4s%ÙQãP ;ªÄOÓWLFAζ2Š®ŸÄï3LJô4ÝjŸëæ!§eYä«i¾ù¦?ꡜúáŸÿz!fRöÌïêç‡ý7¢áû‹Âœ\~‘„k«i.Ûöd¶Ç}›æÆ·é‹oµxj¦=¢îú)T’²ðNò‚“³Øe›VYßuÓMzèÊV”ÃPž˜ Ê[ŽÃ KÜõï`øeœÛ ±Õ1á" ré ÃLÍÁDßm¨"§äwý–&A’ÉŸO~y÷æ8Îm;ŠºœJ±úƒ13ýi[Žzÿˆ‡^Sv ä°&Fdæ®ú×D©ÐO{Ý!©;nØçb»þÌד Vl]^KÛ>f4;»~8ذ@Hàè¤(ôÍ“¨U‘5¸õ„Ã÷FÑ[XËØÉDØ©Ÿ/±Éà/J²@)WYÙMg»âõÏÒREYºX8«úÁ ÔrŠoÃ_{¸¬œ ßAWû²kÆ”ú°ËU=þ'þ vº$ «coáŠoÈTÁ$Ç®Ð%@J?ÃrÀ È`¹®Jçë#C.“µâÄÊ“&̧cµ%pë84#¼®­‹a¯ÅÌç´!/Š­Þ‘9) É§ý<‘è’$“8ˆb÷u—|)P‡5ÁÒLù„ƒÅ… Å®¾…¸±†/ËÛ ÷o®¾4’ ü¸ F1~jÿ½mû-Ò¾ÆYàu„/E_­w@§läéh\öÎIJé*~ÍÖ±’¾x ~)ƒ<ìAL¨˜møDpû t ¿³ŒH¢(ˆ¢Â•íç¶¾–‚ ¶»ˆ úÓÜ ”ÇFßÂòM«ÛŸö=~ý§ÓœwD‘"8tTôÃ#@%cWö\Áî8¼„ÕWzø¯°g<è²-¹D‘qòV l{‚§;½ûR5º›¼,Irµ*$¿"vÛÖTá’±Dé®(Ž»j(‡Ç%¸G³ìi g•&BÙ*RWÁFܽ{‡ÔAlªa¯Ûæa#Fâgt®¹ët¥Ç±N‹ÝÍ¡]zÊé™\ãi¸I¶Ž@uÃ'á¬ÔÚ!±ºJóz(ã,@sÄ>î›j/¶Â#ç‚À3ˆÁ8WIbT‡páqšíR#‰™„݃xÛÏÝôb’V„´´5÷žÙØ/ÝÕ^”žiÂÄ]g!W(¢gîÓMÍ|²e¶AÝS®ôÌ-œ©@åîúΠyu#¶ýôb9W†V8~¸ÿîº%¢$ñD V½ õ:bÇ{•% }àÒñ*<d•­ä€åÃH9H`¿DÐmEÞÓõ‚Ò ’À®:aæ³Ø]?ÝöÝíÓ@ Ím¯è,LÔ³>Š–âºÈücµÇîqGæ¯P¿½Ç=Ì”ùòòÚÕzhOg– ¿1vE¢P52œ{ÛzùƒŠeiê¾ö~ßXƒ„(øÜ q‘¯ÒÓ¾œD³3ü|ÌòÑw+PöÛßD£¥X% %‘O˜M W«a’5˜dçŸ4@ßÂÞaUžoTV ”+|r¹yOßµgô*Á—Œ¹ÎÁà—ì>_ßÝ_h÷6¸€Dœ;²ž·Á࢔ ì¸Q$’ªàÖ§MW & Á2ðß9Š…‰bpEK­ÑM·Ýñö2!cŠŸì\ÍC§ Ô“Y¿Ý"¦“£SwE.‘;Ÿš‘íšúÐ͵:SOd!Ïê×Î`Ž Ð»ÞûmœJ]…OïúNÌ^zZ‰ñ–·ÚÈÊÌ•ãnR””‰»îyIƒî:Ï.•ä?¼I.rJ)ÚÞã€n*ô~€ª~ßg,;¢ðJhœÜ,£fû$ Tî*T “™œ—"ÃÜ•ûÌ—Á)™ôX¶ó~‰—ã|užø¿Úû(ö[ ãK• ƒ‚ÿõJzң؞ø0@¡oNRf²v6 ìWÏZÊ”«²l%k*ŒÎ½ª+¤èõéA ëdÄU\F|âDØD£q×t%Jªž”Î#'ñ=rwA«8Ï(ï³i’V]ç"qX±´“¶Ñ õ…çkÇÉC.Kcä)çê2 Á˸ aNó‚Kh@Ík©m3 ,·có'MLõhÊôPrüÅüeOà¤qsgúõ3O÷ê]BgLÃýóSÅ2%yv*PhØ«R-äy\êXü,Oáˆe]“OmZ¯M5¶IahŽma?C¢L3‚ZO“‡GhÇòœ‰ml ŠºxGýßЛÀ=ÐïyÉÔIˆn ašVK_Ãw•'g¹Åtrj’¨¬B}7¶z ¸Oš÷²Š éªøcZªôhaÌ&YúŒ "…Rö`e»Î+˜“Ç¥v†‚!†ÎËñ"$tu5(ÞÒ\€hϧY|f—¦4 pŸØP |Ìù=TW Þ«ÜìÍÌk4úâ¥D.•ËÒ rö[7|l-ƒL1EŸ›z.Ÿux¦‡rÅü‘ŒJäyí;K8›ÊjçÍ —2ñ§m@ùÁš;‰XåJšü4ÆJŠJ=sÀóÞq Ê” ”Ñ/híÇÓ8éC >ôÈ 8«kxõ3ÒŒg4cÿÒ?©*XÄš÷êî&Cžâ g 4uöÌ“mê¯pVª]Yʤ'ÊXÌmÃ.§ŽÎöì ‚Œ-k¼0à“?ëD»áJöC[û‘½q…>Ò\A=œ­'Êþ©O–µøFŒ.ð€¢Oœé¡ïkf>Ê’qO3{3Ø3³„®ïV0¢îÄÁ#Öí5NyåJH…‰³ö¦‡Gk¤‚D2A;‘GÝÓÿÑ®ÌH¹nÆjÍüj¢$§åÑîž·Û²z䆌ŒµýtŸ ·¢<[xšÆ¯£áæÆ„:Wè]T\Ó¼Õ&kÉ=ó‚úÖÊ/`p0£o6ê0nT·,aëzØ#ÌmÕP¯ ÏÇ:V7Íó;ËiDãªÅO_¿G¬Vfö·‚“ï|Á\ŒtY³¸à5½dèó@KŽJ‹—ΪŒ£Ò‚@ÝSt›v×NI®>îF¶%`Ï«÷êf@¾÷ÈQË0Îg}TK3ÞÅLD÷ì-ÖGk)~ûÕò$;kX­F(åÛ)¹ÀÑƒî¨ Aþxÿó»@¬7 xÌ»C ÝGq–^_¥iX\™Ï"^0[žÓ „+Oåj±˜8–`÷†Höu7¶MtQ¿ìž ÏS¦¯„ zÖ‡¸¦ˆ/Xô‘¬Bºew—¯@‚÷†—ì—‹#šçq¹¥ÀWc;GÓϘ <ÅørM|Éž"È2¦`gîd`‘3b,¦>˜[˜%øüa~Œž2âŠúáÑFÑbXÛ/ÒE'ZN_#åàŒIÃk‡ô)vO»&<9µ¬h‹Z%þÑΣÅmÞÊØëwW—w›€ÚÌ×i¸kF;~#çé+Š`¥ü]Ö™éÃ<î×H¶—•ËÍ-ýžyØß¶š_ÍdÊ_Ùw¢"°e. Ûk-C]³-»‡™òÚP¥pRP•šP—›Žúšäu<³§²³ÃÍ#ê2}U³1÷#oß¼Y(áRåmçn:NDÒ:ÝDò{sš¾¾3<`CT¸9XKÁÕa=DŽÌðŽ)ò>3±iº<ÎÓ07êjƱOk«8züS¥!]n¸O#/~dO¥!"psE»GÑ[ÊH­`ˆ÷kz,¥j¼æ-é4‚”S×`O¢=O%]Q£*†Þ¯ãèk&+î#sÓšŒ·)DCåièÛuoþ·2èÍøæ>û¾0óvtµœˆã? e‡^kX€¦¢¶ÜPÿKbk·‡­2»€Ìû œ˜m‘²ÜÞ}Quí´¥ÚŠ_^§ºW˜.oEàeäŠm€†& †oV„ˤï¿Ôi2Aú>%yîKК,ÍØsäLD)M)ÍÍàåó†Ñ~pgò®ô†¤155®&dúû;Pû IÈ"g¢÷ ïw„æË# tš]Ìvuæ,nqcÂØ†Ø(rårñ¿X„œ3Nè}‹vªb!µ¿Š½ÁÝ”¦îºnƒÕ9á3çDl…ޏá }QD­è¿$˜.ÇÓBcM ôlÞ<’LIp~߸ìæO=ôb{¢«ìg<êª)[Acô»Û妨ڗ4¤Gø{HgY 3ö†yò»¸0†¸B'ÞëÀ¹iWB[âEÒ,—ÛÅi4×-ã,Óð·ã~ïrȧô±žŒ™xy:'ÂxOT”óGr¥gÚËE!Ån‹8g¢†Îs§&ij_<]¸Æ|Ýò»æjùuú`ØÕÃJÑåT®"Ñ"Kš%®Ìz›±‡ÍW§c9ŽËÝí…‚<¡u1ß|Šf> ñÀfI˜ö{£Bû_”Fì8v3Áæú¸4S‰%¯ì:ö¤«}×|š—aÐßîÏr¡¸•1í£:ܘïÚè÷ú3íM‡ÞOœ+ü´²ôk³£ÏŸÎ.èc/û•—Ìž½Ú}s†&cýA&ØWø8ÿ’ä™ÖÊ/¿½·G± Â0ÁzFßõºe~VÖÄoôùØÏà4e»lž»µ BÚYG°?¿¾þËͧúI+YA»Meäü Í6­Äúç‹ÄúÌþæ£è ëè endstream endobj 378 0 obj 3965 endobj 383 0 obj <> stream xÚXmo¹þ®_1u\^dŠÜ÷u“š»8õ!‡öEQµ¢¤Mö-ûbEíõ/å7ö!W+/WòµNbÓâÌpæáÌ3ÃpºÝÍ8Ý&øöÿ6³··³Å5'á1n×3A……wÆFuÒ¤kœÉ•á~dmÈ­¥m¦ˆ¹à>—»G+} ]qàz1¥«ŠÞL=0÷ŽŠÃW­PxªFhïÙ´¯ÏYüþî9`eº>u*Þ½˜V…ë,æþÑzº¦^¥Iÿ¥Lö¾&áøøy‚5º{È˯—ýѺçåºÈ–hm-e ¾j“´Ü¨‹‡Z fÿ3Ýç*xtÜWY£z¯á÷ªúÿ'ýî ñ¯××ðù×_©ÿT>ý1Ò œÄâ ¿ ?‹y­J´:ýÁRmÐäÌàf‚Þ`ŠóÑ8‘Ïbñd0NˆÁMˆ³Á`êJòʸO¯(˜ÓÅO×7×sò€?ž=› |ô/ç$Y蜽w_Óµeï2¾Ï\áþȨ¦‡€¢]Y¯NAñÐÑ„÷4*®Ð|•ÇÐ=•~üäL¼–}Zâ=Á~;×”ˆžtQDæé:l,­1bž˜¡‹á¼¿ã3çØ“LoÑ÷Ð9–j­ß±MÛ­úÎÆ0ô.‰—DÛê7K9íEÂuàà±ð.3õ 2m~Ù¿3Lƒ¾öeWãñ¯_HÚ©»C¿Z¿pDüâÂa¾Ó£}qîu²œðÿ0 ]]ýпŽ>`TyF‡™e>5Ì1˜9‘uý¼rèhžÊür¯G‚“æÉN8ç»^„±k3á0:©¯hÊ÷²Þ4ú^ÉñM_‡ÆÒ»Û£1N—:ß|„1Óï³–e3L^“%ŽkË^V¯¶³uÿ_>ÓÉÐE§ó=æôy(¢'Æ>„žCÂ9ÃaÓ_Ž+ÁB¿÷â¸>øñørGçÑŸ‚þªÞüåëWôà2ìÑ_16ÓϲèdvpMë]ö¸öKãDÖ�ÿËìËL/õNkoÝãŠ7{‰á÷G‰Ag;û°õ_2_ïi endstream endobj 384 0 obj 1929 endobj 388 0 obj <> stream xÚ}WÛnÛ8}÷WLóP8­C‹¢®Ù´À6è]¤Ýmãbê e:V«‹#JIŒÅ~Pþr‡¤eG”Z1(“:3nAI²À9…2´”ççË´àÕn~ÚCô(ñú ŠÆ;…íõŒæ¸v¯³¦Újv¢E-1fÎÏ¿ÀÖÈÓ"Í›§·;Œ8Æw>~¿JËÜ6àRBfÛŒ#G+ç°©ëíùt*kžü(ïDµÎÊ{‚¡˜Þ6BÖiYÈ)¥Ã¢éüÔ¶@;v*Ú‹‡„Žo»ñfYÉW*eUìõ†õ>9\¾| ȹššÍÀ„çü|Šž'~ì ùmDe—2½)Œ^Ã*­DRg;Цò¼Í¶[¾Íˬ\Nà^¿+Ó•m!r0\¡mk¢HxÝnÃ$¬xÍ™U²†¢ÁÚK6¼âI-*;£ýÐÁPEpL¢pô¦6¨N“EÂe}™˜O©yñz>¶Aý£w@ÛÏó.±ŠS¸¸8¤?©VËfm˜žŸž½ÞÓn§¼ÏbâSjsr¹Éøóï·ï ª%I^¤õ®·o7&ŒvkÀìMQõDU•UÏ* ¥Ý¼6Å&ß·âFWÝ‘º <×0j'½"ôˆÄÔëqô‹ŽçÅ i7Ÿí®çEØ·i7E&EϾFH@سŸ Ë* 'm\t‡ÃñÉ|~©,UU$ŸÃ þn’ _{£(Ñži ¢Xe½ú!’ÿz§^HB÷§íßsCÂÜã|ÛŸ·˜{õ¢‘ü[íÉW6xßNúYæÑP÷ï}lÖ í­u»&ž¶/, ÐÃ5Z·gƒ­ÂrìsµðI&:áŽï¾~ëµæûhÒ°d‡—y> Yçðµ.Š%ÇlàI"¤„-v…\`[°®Ê¼sÚ€Ì'>;VÜ¡‰žo3çÓ¥yû _néžÍ>Ôúü2×'Œ¹ÝƒëYûj¿fõ elH!ж㑘y?Í7òp?ÇB©±yÚöÜÐCÿz÷-6Äe–ÊÍ^;öõTI‰Rÿr`õÎ]¿åº‡»èÈÍË#ÏÇ4¯–º"'6¬ÏpÃÃM·M~ã‘ío´ÙâÁe:°MªËñ½^Û½Âãôx–*çVCÊÊsažk=X—Ru'[W'Ø:®QF¨×ÍýQÞö0¬w%> ÝEé{^¿±+¡°8ôˆùxOÑDaNŽÀC ž¢> =¿äë½QÂz³æ ÂŽxýéÊhc­Ew† s +Álˆ\ F0d )³&/PŸÍæ‡ØiÁ…­Û‘{ñˆO›2;h ŠßÛਞ™?Uiñ)³I“Q3R¯´á£ û^`ŽJUÛª\f"ß»ð2¡2 éAí ¥âeÐªìØ‹‡ p —­‚™ 4ÞYÞH…¦Rë¬VeKà•“ ’;Œí† æ5öú2]©‘lÔM#ÅšÞÙØ(Ï}Ÿ¯D®4JÕÊ>4u ÿ#ú~Ñ Åk4eã£:g¾;„_”÷Hñ W—5ãøDÑU®áßP3‚šÚîh”¢Þ÷YñS#0Qnõ÷+X¢ÇC‚Ž¢Vý¾Ò/suÔòªÿ* ðÐïÇâZq+> Ùd5ž=0`âA$M-^¼Ð8£x,øØ Gúb¥Æí0‚lä{Ž5ć1áY«F›ÑÚÜ¥îîéUšá]Í÷È^œÐ¸çÄSBì퀸­1ûá0Òi™™õûñÞÞõ0†x+ Q?¦ÀÛàÞaC&|A²á/ží]SïGù¥x‚Îó¯ç?nGj¨fÂXy ö>Ží¦YÑ>W´ïlFÿ@XÿD0GÎ endstream endobj 389 0 obj 1633 endobj 392 0 obj <> stream xÚ•XksÛ¸ý®_jgZ{׆’àÃM¾ÄuRϤéÚÑÎN§êx –˜åCæCŠÚíï)J)e·Nâ@â½ç^Ü™m'ŒÌBüú€ËÉ»Ùäæ½C|*Èìe ÃN<‹xÜ¢~àY:¹ ½Ÿ›ò¤ÖyQ‘²CU–/uBâ¬TEçÙåì‹Â,êbæuEÞ¼!Ó‡FQEd>ŸNõ7qº|Îdª°`¹EÀau?S@À*†\ª’Tr‘¨+ÒÁÒHV²ýUÆÿVó‹ùå‰M|‹Zw~²ØUª¼"i UÒöôÏq´Ç$*‹’?‘=‹²À7ÿ;”q982£ç‚Ó£m¡¬Â™_„yVVäŒkUìþHT+þ3Tu8ŒÛÕ•0U™íȫֆr‘åPÙæÔf–¡B²qáãQï¶åDt»’Õ7Ù°8åÌ6 UÕEF®ùH˜30ç<-ŒQ‰óÄÜåÙF%âó ;"``Ç=ÃÎBFˆØbHŽðÈñN“sÜù·Ç¢ð8òOÆ"‚½_E¬6¸<:¨‰ê#üñáW 38{EdXÕ2Àµ_>ë/ϹT8õøïó¨°*8?ëQaÔæÖÞ Õºú†7y@9·‡Þ¼Ó ×2IÈK^4!ŸW+U¿í>?~üá¢:Ø‘‡™OîœöðýÿøNàƒ%ñûhr|äeÉq}ô!{ 6ÂÐz¼Á¸F¸sO¬˜åëŠpóÞ&œ ª€c»‡¤û)¯âP‘ '$[EêÁ‰*C¹V$•Y¼®YÜíJedÑ·ÂòÚ˜ XÇIgËäáÓçû§¾‚í8”;¦ÂlŸ¤ä"7Dq{‘³û’ó¹ ^`B)Jú"s¨#¸¹Û*. þ.T(qX’îÊ×d½¾½ÅÏ‹$oÎǵϚåPð¥FÐÊŒÈ$–e|y¦HþÒ¼\«0Æ}ë¢Ð Íu¨íp%®µ¦l·VF˜ÚÈ‘žkˆ^Á 1®M”g2D]F}aˆV"²®òTÂÇ&3bÅ´áµF$ÀdÇÖùøÐWLPaÚb²-`¬í³•2$,¸Ì”Øí×¶]ÍyŸn~ì BiÖ(ÊL_¢º:x´ã\&e®ã¹ÔÁ÷M>m(&h'Vy‘Bšlë01`·XûølTvØ|"ÂÓæ¼Æ‹BÉ_HT+½e”×è]¢C€õ‹bwÂ7ˆªÎ$~!±¾£…::•j°›÷@¥ƒ[n{Ê_[Â>«¢o.®Ž ÷÷%6Í©A6umÇ3b‚»ÂÈ5@G‹ç¡Ié å)y÷ñïïP€“:ÍÈ&–äîÃC{˜ ËF‹dñCLíS¼[œ{Ô ɯ2]£ÐÇv-ãBßüB6Úå íî•nÊ8RÍý[™ ˆÛȧâ–¤5\ë›…‘í a{#õÛC‚:=C¢-¦~Ûž|gaRGŠLÃTGÑÕtÐ¥`Ïâí0wBÚƒ=~Ûä}©@’»§ï]r1Ÿg#U×£ÌwFªÖXõ €ãÂÒým˪áSÝCømöJeœÍµ ‘Å2DYÉâ{½Þüó_óË¡¢åâH-_Þ™6›vô³Tu¼v²™ÅuŽÁð\aä@jEê ó4Õ7F3®ËÂóªÊÌTRªá(ÛæºFÂàè:ÌõeßȤVmS(Tm˜—Š€8І»ûCãÔ…Ûíí]k×GmÖ> æ-EšLíEžWÓ«!2’X£ÑešÕÙN.â, Óùå°æžÀXœÀÄüâÝÆã ‚»úsªK5é\8 MœmÒ¹­{¯Ï뺌ˀÊ6q‘g)®‹X¿¿Ð™{ GwI}ŽÉê½U¨Q¢–Y›˜›w)qDÞŽŽ&€õ^4´a©“@kÐ[½'Ì™_LºúÇóçÙÓ秘e6 L^0'ˆ ì¦À÷ymt溱MTfj¿!~ÿú+IU¦ëÞCH½Å´jÏ/Ol㣳q˜”Ut{{x÷„Ùg¬®u£wK*õµºY'¸¯Í(׈îçòã‡æô÷³ÃV CZž4/Yôº[ú$™‡ –8¬m,[Y½ZM^Ú×q£:ÆdV{ ‹ŒèÛà¡bv ju› ?Vœz¢µâ°ÞÛqB›2&ðé¹ ã®oÞØÏÈO¥ž¢eVËdošÖ»n˜¶KóDŒÏß~þ8yè¥~¢'·dâ¢òW¬1³•è>%:Õäg’ëñn0„ endstream endobj 393 0 obj 1975 endobj 398 0 obj <> stream xÚ­XmoÚHþί˜ËIUúÂâ}³½\«Ó5¥m¤´½Pª^u9Epkl×6!èt?èþåÍÚ‚ &©Ž(°xwŸ}ö™ÙÙ,,[ Føöÿ§­—ƒVçµ—HLZ,ü£à0p(#®0˜·NáÎ+ÍÆÝî(Zdðü9œôúýý.¼ôÆð}¡“v'~8=1ùHŽƒ_¾î@[ŒØJÖ -’hu¼­ÊÞÿOuŒËSÎΤþ®t±”[[ÜŸO¯ý1¼/‹ü«ÓÑÔ¿.vôøÕã%›¢:ª™’¤dK¨Ö+(‘Ýôï'Ë)áÛY¦0€N’Ü¿£!²™ŸBœDÓÄ›ƒfx°ÔCHur£“SÀÍ´‡~'UxF µxM ó:û‰eQ²z† è°Ù¤6µˆ²DQ?¼‰¾ið3XúÙ ~ê_@àã#C¿{Þ²ˆcÉÃðgJe¡Ìv1ód–eq·Ó)#¡7×dÍ;kÝÌçõ×XOõÇ/˜aZ]ĵÐLÎ^3s,ßý‘=I…b«†= ŒG,ý 0g*ñõQÅŸ{S]èþ i] Eú#ü¸"’6Ì<ù- zèµCo¬`掌f^ˆÓh®!šä¬ë‰ê´æ¾’)Â)Ûï¾^–O΢qŽl”*B)oà«o½yètã ddž®Ñ2_(ˆ¢o‹üÙ2J¾‘}^b¹DQñ0/ÊE#ìzþ¡8)\ ãÔ>r„íâ>·×é@¿tÂ5&I4‡W/a¸B©Î–Òßz]†±±¯„pˆ³kù*ýÄq·{…!? a…W§›ŽRÜnw<¼6gïY•;D2ºW¸Ñ| sâè^^=~¶y¶H«Ob/MÍ“z@Ì!œ ~™_Åuð°'yÛ Õp¨C(Ûõ¥b¢ñ£½‹ÞÙžÀëþ‡w…æ)|~Ûë÷ ¿{r?-n¢°eÅÄ~‚1Nëœe_§‹ CI._˜¤¦sW®l´Ö®où¸:5³=2 $\̯“h¹V­fpîÚh{Ïmšo ·‚4çOë¯Úꎊ׃fÎ'’±—yÄO¯ÃEì[Ú¶Qi÷ðqÚ$)èy™³v¶Šu2}›uâÀó‹+í¬ñšÕ¸I‰b«{`¿ÖGgT,òÓ´†)$qêwmõr.‰äugß›p& çì<ÿhŸšíóq÷®—mÈš`0‰ëáb:Å®º•„rþ`µsq:&dÆDqñè@‡ÓlVl¤Æ”@•å^°;©^á\ù[füû ;0W Mìã Kä€#ÐNÎQã3[ ÊncZÉ$G¹ÔñL— Nœc üÃÏãœHAïWlŽG™tìó½êŒ.X³”*øÁ«Ža‰¡Ävó#/Í0®à)M³mÜĺ%šoŠzˆ¡Xx8b×™ðœ¼õð¢Öà…å€iB”¤ÕÉX‘H±/óüqí)/\8 ˜—Ÿzý/°V?„v9ó²»^ƒµªéÞ+É XÕ(¡*O±®qä1á{·#›\àòXøHI«ÊŸ´6&]y¬2ˆ0÷JàÝêãåÅÓ§ KØš1°Òá’ý¿Æ X=IÞ€ù¦÷¾×ÿíâÁæÀjGIq/s`yãH¹kÞ`3‚6ÅØ%1jåE§i—M‚–V¥‰6mŽÍb¬iÍZ“â÷Žïþ\À±Ž•‚¬Ó'Fk$îrpðh— ÂÊŪ_6­Ü›‚büº½æQ›8gaqè`òig£ô‡Œ$Ä‚O©ñ/\xÁšš™×.,ÃËè;ß›û/[ß[¦izeØÚXˆl[VN³Q~ߎ(çÌZŸ!D¬ÿôå:v endstream endobj 399 0 obj 1405 endobj 402 0 obj <> stream xÚ•XÛ’Û¶¾×S îE× àIuÚ™8Žg3N§näñEÔñP$Ò¦H™ VV2y ¼e?"—µÉÄ{±Â>}?ÄÈò4cd™á¿×ø·›}³œÝ}'HL²ÜÎ8aøËI䑈{4NYîg7Ù›Š°<_~´è˜GÃ$èè~Õwwßù„3GZsê᧦zŸ¥$çúH²´"ͱ"EKÖg’§ÕfŽó߯<Æi’XüЬ¥jI[“¢RmZ–¤Í …_HJNrM”lÆ"|_PZ"dc)ñ… !w”¼|}OM½kÒ=ÙÌÚº9¹„ðhX\s˜"+ø£àÔ©hsõî¿o4ß-£A¢€K¸ÎÂ8BaB=aĔŧ±¢Ø£<Ž, IL¨…ê8¦¾¶iDš·íaqw·?SÙЬÞße»âv]Tú燹ûW±ùš_Ïžï‡4ð}K&%vøàYÌ-Šež¶ºfšBZ¤1£¡íŠ«8 ÂKl_•Ž*ùþ?¯^›ˆÞ ÊmSï»Ï7i›®SÕ©aC}#Dƒ,”Ø¥’•NjH‹¸V5ˆ8Eù™ec$õ¹E0'§¼ÈrX‰ü+ ]ÐQW½šuS[¾z‚F±%à¤l¾ð)·uP§ÿB? ¿t–U5ˆ´°®¥UôÚ?nÝ[þ'B›-–•ÇÜôm±OwÒäã‡óoß|õ|DÎû¾>ªËmלv `Éþ’î ‡´°ýOb”¾E9¢òó]Ri¤ª»²ÞÕôãaw½À¸œÔPâÝYÆBéN!t2+#œ%4 y§Šjgu z6ÙÒ"ˆ­ë&­TšµE]©'§l€I!5Ó€ÒR'3Ä¢°Ò ƒ|ëúQ!ÉÊT)²O?Ù&Æ:f‘]SÉT²ÑE¯k¥AÚ‘ñÝœ®œ‚]˜Ç¢¾dò éoUº•P]Uvgß×54f¡äßu³Çè=›"ldÚJÝx—áË"®Çôttä"F…¸ÄåÑÚë‘æ~l1zýðÐu:¢LÊ>£¶uc`®PêØB>%b\4ãÀ`^´öX˜|³l¼è)1À7–9LÀ±cAL7ÌšÚÑеrX>f²‡bÈP–ãkL5 c:Þ¦ûaÙõ&õŸ¡%`íÅд/ÚÕÍêùX%.?s «ŠIXï·=s¿G`?rp"!õãÇP=°!ehÉ1ñ ^Øú¢ÙÕÈ]}Dõl‰ÊêƒWÎï„ÒÇ  c™>àˆÏ‹g~-bÈ'iê²Ä¨_£˜ºLt»ŽCÐ ùJ©žâ‹Øc€\®÷¹Ûèþ°á‘#ÉIh1Ôdtpl<±EÔO’n[=†ï`'´iµk6(Á«Ä’„¤\rQt1ámuO¥V¸>*LØ;ÀxÞpWÊmKŽ‚W—vÈ۴rC¯W„–Éö¿ÐF¿‘4;®—†‡vs¬0GÖ¶[¿ µè•NŸ 0‹;¶¿^Vò,ÛoÊ¢’4æø-0Îbl‹6ù¡)ªV¯rW0tÂØsT[£0§ÄØE½XØÄ/Š®ÈtÿO—Z§)êLµ›¢žÐꆄv•Ñ!z•î¥:¤™ù÷]äp½Ø`7\so1Ș¹Ü§EµÒ$$mvÙœdyÚ¿ãüðÓÿL#ùB”{b‚÷‹{‡† ox±ÝÝ‘×hå~?&i–IÀø!Å‹F¢5”Ù¡uUëµXgË•(0g¸?«Ïåá°XôµµX¼4ÜoÀL.)_ÝG´ «ç“¸øzmx|Wb¬nþÒ³>'¯¼‘ úÑ[”Odc]‹“p ýÕ¹÷’þÄÃ}Ûœ'ú<ìÅ^’XúÉWë²Py×úY}Ätþe·¢|yd¹R£ˆrKæË—² vus%È›õ]ksWhÒ„Ùbû?}ûs4$̇ϰ–9Ÿ°ßéO¦éò0äæ»áø1¯OØ8жHK=O[·t<¼}&®»ü+˹[\Îäkí5íÎÚ‚‰~/ÄŠm§?Ópùâyv?6 P=ˆÎ”\<Ó$xƒ•‘K -‘ÝøùбèØW7Ƥ‰AúÙ°Ø È}… ¢…ÉVž§Ë÷zN”xuEâÑë3»äܲäQ _‚nª¡ùnm’»hWÊYêHØàT—©)ÖøÙ=×\ñ¡Àkðªüz»Õ³b}&¹M%Ö)ÒÁ=Tl‚«ƒ +Éxé ðÐåÞ5á‡FnЬ‹8°6OŠºü÷ò·i‘ÂìJ؆\ÑB˜n*Úztô¯—Œãîò(ýö›K·ŽúÙí1®œ‹k T­­3¦™½³’_°2”("lu='ÈF¥'Ü ¢®~›$>çÁ5áf×0vÖèP—“ûÈW8áZl´“šH¬°N½Ã£9âÑÕ ò”¸ÅAC×?묹,ø<þÓ•ÂáÒl¯–ƒ@Fn¹Ð_²eû™~ywçþ“ræA0œ} ­>å³­ùºs²3½FSÏT¨çMŒÛ ôêõÊÜ_†ÇÞX1œ/v ›—ÀK.Â#84©è¿Pyð)ît‡7䇴:¦åÅ4Íwk0m—ޱ~ÿýû·³Ï3}Ô7Q¢­ ÑŸ'Ö™i(úß)zž|öžTõµÝ¤ô endstream endobj 403 0 obj 2035 endobj 406 0 obj <> stream xÚµXÛ’ÛÆ}çWLö!Y•¹#Ì7ÅOVÉIªì¸d1ñ «TCp–@(`°0íÊùÅßè3Abr-§*+í.–ìéî9}æL7=²jY%øñ7|ï_­¯¿–$¢>Y=.ñð‘“qÅ’¬ö‹{2úªM™<‘ªl×÷wT£«§J5ænI$_Fñã¡¿|µúãÍã4ˆý™·ák¬?å‡Ã›7øõq«Œ†wîyÁƒ'¼ànýjy1)š<_¿úë$Bs*ã`áR<Ò¬¨ueÖ÷6ïùÒˆS‡7–êuÒØ„®, 0Šg “²1äË/ÉÝz]|_¶¤®·K²ÁEi`±ßg/Ñ;k¨‹m>sî3Þvýo]eGbÒ¬&mfR¢à7Õ9Tå®R{²¾×tGIí¹fÁ»iɨﱛE¹ƒ¿‚¤™!ï £«RŒ Ïí´IRU]…Žy4öä‹Ð½íAÊŠ1•*j•˜¬,È.{Ö5iê7·óñÀAoÎ¶Î í±¿–”{dΡC•æcÇüFmr¡ãÆ‘$ܲýwjãÇØºËš×¯É?A”\›_jbtmUùP•y¾QÉÓÔƒŒièÖí穉ˆ©ÏæµE FUðO ÝŽq]’'­Ø©&µÚk’Õe®:Ìsý¬óiSÁøµ-hÄØ”Ïz  œÒªº{Ý”D=>êÄô¡t]#ºg1eLÌÜŸu`5âD·õ}RWjâE4f/SÍ‚¯¶[»ûD™º9ØmrÐ"µQµ¦ô6ýeùdÁ‹Rù¶ó ™øOã%á4ާ*)ȆÿG•”AP£ÿE%¥Æø«¤”! ù‹GBŠúÜe«[ž%96ÉÓŸÈ(IYübHž=éS­(ùçÄֳǥS†iRÁùUl¯•…”q—~Ÿ¯"°ç‹M7,¢¾PIRÒgÿ\įÔö½ ðg¢«õ«Ù!a€=…S%ù»Â~4.„c_,®Êªž.lÐ¥BËó÷—uoHOüж©êdóÖ9¾Ocî2¤Ò¦© òÀfÆÒ§¡¸ ð©/Øgô¶,žued@‰©3îS!ø œ6j ² Nf01Ÿ2!®Ãt‰ý{XÍ )Êc+ûé©SNï*…¬–<ÂΙÜpßÂcSCPº+Ádƒ]¿ï8i»Õ*òÀà âÚÑzè¯EV§=©F)lt¢š>²Ëþ¨Üÿâøµ @,ÜãÚ]zŽ‰ÊºéqÝ]úÙÇî6§ZÎ.ªÖ𲈲WWè¬êE4-óí)‡NUþ8è½SVz"}/ £4¢x¬­ý:n?HplûØõÞNšº(›]Úë¸é‡>¼‡«~›õsçÆKŒbì«—dÖ÷Š­í¶´î1^VÃiÝ =¹)8§\¸›É.PuQˆM¥Õ öÓ‰E÷”çî5„ïhU;LпVÈw85¦€æ{;;§¢ƒþÝêìÒCƒ€VË'É~Ñ}HcŸ‡Çˆä _z“GœŸ{[û”.íG|gp=`!é)U.f¡Ç‘Ct$ÃåCˆéç'FC¿}~žD·í•çùx?¤Aß-Ù3õÈ¿jÛ¦©Íè)5»î¡wàÙ¼,:Äùûå÷ß/>-ì£}'Œm¶ã£'¯K³·þ¾X kÒŤ€¯ß“·Zm endstream endobj 407 0 obj 1844 endobj 410 0 obj <> stream xÚ•X{oä¶ÿ?ÅÄR»YóD½å^ZœKp¨ƒôù# ®–ëÕ{¢tk£èj?B?]g(i—¤Öm³A´8r¿™¡wû…w9þóþÿ¸¸¾[¼ú6Ž7 þÇ!ñ!áœÅ ÜU‹ó»­%ó¦^îm[QAÝ\Ü}8ó8fad²ìa+t ¬¥(a_t[èPÊÆäò£ŒÈ .‘wH&:(:dnE­ðKÑÔð¡W<6ˆUÓvrÍÀò˜%Î[ù{‹$ôYj’( úUWÊîŠÏÙIÔU?ץǂ %S‰³lbî¶…Ut½Ð§Ûoe ½Bføþù§÷·_}ÅàúEÚ× SÆ=KŽèËn9ñ ÀÇZ” dÛ6­‚²øh²IÆÒÄä–dR%ëJë¶AÀÐ(&ñS.wtXÅà]­}aqD^Ä"û’Çh˜Gd\y §2M“&,5×VÔëR¶VtxœyY`R-á¹é¡*·}y,‹"“öi'),x”vû«oC'\y–° LL®·?>Üþpó—‡oÞ¾ù†£ç~æ3Ÿs“6mS½ 'à!Ë2ëtï{Ù>_]¡Ï꾺?¿¿8­(ôf›îÏ›ö=!ϘçYznšº–:þ·²(HX”ZìK¢ôÉoú.‰&"%*Š)Œãû‹%¬,¿ø)KB“¸ï0î1UÑ‘V¦qŒSž™”e ¢¬Ìà\¶(êòYû²¨U'Å0—¼%TRÔ”Aÿª›!¬àÏ8 ,¡ÌÞÿ{s'0÷ÞÚ2ß2ÅóŸá]g#H1r‰a.XÉ\ô˜® BKl….¡ãs¡äR«8(ÅʱÛÉZ"Ö4QÄ'a+¹iZmúÖ?b„}GÒI/ŒàZqYÊ5¬ü•êMkG.F¤žvæQÞ¬§„=æö··×–%0º(úŽo¬mŸ³ÈÜ} ¬‚ ¶ áù ¸X¡9±T·ŸÝÚ‡m0Úø†™Æ¦ã¾S^£%–â»m¯–§c“œd?¿ylqA+»¾­ÕP¦ oÖ„RM^¬ÿSGŽ<ƶ†ö! "Sò—n°"OÙäV‰ ãÈ¡GMfB½‰É@—õ“‰XcÁz^[¹ï1›r Hæ £*<ÜY[bÜÜm@˜ûi¦¡é¸oùÁ(µv›b=ØŽ ©”Õcc9Iu³qäÙS‚Ï®æó”…Iwȵ\°ÍRÄ9õ8Ÿæ!¨äe¿–ÃJ…ap2ÆÈвScŽcšo19ÅÚŠ™Ÿ™»Î¨•”冹pΓy±Éˆæhv}©ÃK A²kŠº;}q¬(IpJïTƒJ`°©,làL#–Z:7x]Ýo'i=ò€A+Ê^Ãì-º4dqdÒ5}¹Ö€N‚_LÒ(EÔ‰~k’\@–jajç „¡É1ƒá¶ÇRàú‡‚È?Œ–HJçФxÕ®”/UIC#5Éå@¯^MÉÏòÝî…Æ0òfDŒ KÂA'd³çjRŸ":;FFøáÐünŠú³¼Z—E-Ùö̽;¶}iÛ䯫gõ©Ä‘bû'—ÜÃ^=LN‘¯tFÍyB„ ?Ìž›³VŠjFMC™-I-¢ÚQ½WÝú.9N8ahòW¯àº%ÌæÇ;Ÿ¶M¹¦/:Öu4?Ÿ)t†úuYBXÏ·®Ô e~ŽĘ«²ƒç¡Âª0;„‡Mo4XéœÝ'…pL” [Ñ{¢Ñ>æKÈ·¢…?àúó/¿I`2b™ÇU3þÝÝC|ö·þðêßaúê±Ès©]Î8eâh§S>oª (\8O§S‘ÇŸöén‡9:FðÕÕÍÀ}‹Ì0ÔýùpºÁý…k— ŠYû™Å'/&Ö ˜]*Ä™>ôôê2ð™lìLüi®Áß?Ü}NÀgYèf+±dëaŸœOžÔ¹7ñ³oÚVº??Hùâkàh¬/¿û£q†>¾g– qjáõkí¥_¼_iy½o¬$vhm.+X/+_ÐZ÷×.^ø8_x‰%}úÑ Êa—tkÒ×W²î;#!xvùÕ„ÿ_.ÇŒdqâ¿èr?À‘* ç!|dÉK3±>–å$:°uØßάʱ¡Ibë˜Qoæ[Y¨á¥)?ª9ÕÛ0 Å=Nlc¾pæûóù¸^=6.±œ&Á$=é£)‡óP4.ß°“t¾ì°û¥/ó˜å 6U©kŽŸ:Ñ"²Yý«’0fEŒÄýó¯ïäPM¤hsà(—¦ÜÕ€±_l ì–Úf¯†¶;¥}3=â|ÜP—Þôùàý¾°v WÖÛ8õ]$V=¥24»]£ Ötšm³Þ5é½ÐUP׺*ìçÂågãCß”azzP‡FY-^ßÕàûèëÈÕ àZ¬uò0\ W0zX<Ű4­3Gp޾ž%—î;EݯîLš@·žùˆìS‘ŸûÚÃA2M\Ó ÌNt˜×N¿}-Ï/ói!ãèêYJ˜©@c£žñº<Ë'™÷ÔÚ‰q¬Þo Œ[Õcõ–kå&6¶µ~š¹0Áº©ÅbçÞüõÝ?œÍ朳Ñ>hQOwÁoï <¸ä!õÍyµ ¹P¯§e å;Kg‰‡u€Ë–VÛÅæô+àqlQé勮ᇳC˜gHB¦vB£2÷ÊӓA9ÐëñÇ!МI˜LOÎÆ”Hsâß0ñà{Q÷¢F|—ƒÎEvëïÿ¾ÿ~ñiAKÚI2:mÌ}cåécÓßGЉg»øj”õÚƒ’ endstream endobj 411 0 obj 2320 endobj 414 0 obj <> stream xÚYm“ÓÈþî_1Ù/à ^( Žåê*wIà|ERÙ¥•Çk-Ä®“Ê_JþÊý¤<=’mµlÃ-Å2öôt÷ôëÓƒ'fwOÌrüúo'¯f“'o‘ÈPÌ%<üQ"öE¬|™¤˜­'Dÿó䉘-0÷¹Ù4EUŠêæ£É‘gu]+ŠÆŠê®yµÙŠj!"®ëªe»¾1õÃÙG&Âóe”†cYãnª¢ìVyw™Å75ÉX€k³,¬øbê­¨Mf«RŽD©/ƒ4bÖ[ûyµÙ\^¾méàg÷û9T.¥[_?¸~øtÌ'ñ¥ŸÆ§ùÌꬴYîôkh}ýÌN0‰ šŽoûª-Vs‘•sQ·¥».©kNÅ]Ñ,Ý7U=7µ˜›)çEy+ªŽðñz,"T2 X¬²Û©°ŽÀ²™°êÍ™6uu[gk\­ &›¯ªü“(cö’¡§ÆHï»e±2Ž×¢¨m#à—»¬hHYrÔUÙ˜úÈ;ZIíùŒ]¾ÌpÑv½ÞþCyÞ?lè+©<ÍŽÿë+üè=Å?Ï„ÿT¬«¹Àwÿáùs0xæ—âqq»ž'c/<â›Wm#ž=³zKÖp2.è·¢)¥ûÎ]Ù†‰ÅGl»°¥ÓÖ¬(¿‹ºZï÷¡1¶abÆŒc–LŽï~.àRSqƒpuÁÛÍõ†Á5ž=sÖ± }u>—¦bg½1kßVÜ¥öý¯»WÅRù<ÍÊšcëz‘Lýà¼~Eðoœ)û"ãøåNÝ;4‘¯)«ÓVþz,ê$‚½x[®MÓÖ¥PGüâ—ÏÆ­Ž"\<9·W{ðp*puÂ<Øö¦øÁ”¦ÎVß²@wjÌ8e¬ßu(C­Î_Q…R鯞wÄÇ dª;×:OÞh¡¼®ó½¯µ3ÂOfÈÞ cFsŸ­7híwC*#ÍȪú“¸XMê9Ç*ÕÈgH¿@s)›Õ–PI‡f*üª­d†ôSo¬Ïßù~Éi ©JCgH¬C„£=€TFm£à„¦DKX¿ŠFl²Öô2Ë ÄŽdt(hä*?VK n¡5ׯõ±ÎuáÈuJGΆƒ“®áv´Ø 4£ž:)d›¬t¶ÛÇà|.aËöC@§€í¼…dŠ#F€q¡œrä ¨ˆ %ÿ>_»rà¾ÿÞÐ>áÔuS'¨÷r3rUJv rxì«ðN²›ªn¸|ß}Xü¨ØwvœÛÕ ‘½œ”0BÝ(êÛ†Ár¤‹5¦ƒ{‡k 3f·M :° ]g Lf{«¯M³¬æŽ(Ϻ›>ö ƒ¦¹+„9»<šæN8´ã|~¨SÐ5‰vŒßYE(:dïIWÒi^ X¸uŠ£2µJ ÚÈh¶ìÃÈRáËz7¶üqÈ?Àئšñ·8i‹ÛÒMYvk³Y/ ‚ mmÜ`âíGã'oÀ(–ÔTxåàó®ÕhÀ6Ï Jq¢÷°9·N ý£¥ \À½d®cFµåqƒ¼H|Å(fŒ@ûRSúYl YóWk^œí * d„»ÌüÏjšêjÄÛ:û—ó6©ÅìT¶µ$…çà©æd÷L[OKŸ 7yÛ@x@ŠRü¼ýåíO]ö•"é®U"£±ØÁ­{Ç‹ö™º20::=#%€9OKÙO6§e„¸á‘ ãi1äˆÄß#ú^zÍy*Ø™QΘØþ{W ì²jW]5w§ês ŠcÊn_œ×:òd”ôü–Ýàð%<µÂþõ£+`(èU;ă‘3ë]¸ùq =ÍnÐá¬9-ÜGHbÄ’Kñ† h\AèV”¶ÉÊÜLÏ4,Ñ…›áûwW/ÛM'a$³+ñãŸ__ýíLx"•F¸¦¬àÄœ€5‘ @±ÝÄUZªå7š—­Ö¦ï5€;æÓ€2«;W”p é}ûq™ C×_Ž‹XÂŽË ´Ç)¦}›:a~Óp•¾f©7>ÔÇ“«TôdI­ÐwQq~)é½3¶]5ýó¦?bg>/º'¾ª·• ¢±­àŠ ‡hoFÐ:Àà5$úRT­¿Aìÿ²[ØrfÀ—ží޷¶ynÌ#u]$ÄoÝÓgÿüš­lECj“t©%˜X ñO, 0G%×±{°ëº80Ò¾ ¯ä£:öã\] &- ÷ïú¤=èñ) tehpbáæLØwáŠPU®èí×$îÒÀ†d–ÖNá)ÖèµNeÌ kÔcaÿÍ CÈ•óñ¹²Ð¤ŒÓ yœ-2ÐÆî àÁiV,Òvj7Uµ’»,ÓãÈ¡1§ïlQ÷œW(…›–že©øí³Ž>Ýd¶I:YÆ"`»I·°çú$uŸÉûFëÒ ¯_B£S³S 9 È»Ùi‡æ\ܺ§ýSá'ûcËŒE›’ÈÁ6«6I$½t¸k¨¡Í;aæ•Ø9vId ϸaxç.²‹‹V v%jn0AÙˆ·º#´†JÖ4ÔCq¼íÆäâÒMYW³=±'ÓlŠ|=qÏî´Þ-±š„7Z‚`¿ÖXv´´ZNôŸ<‡z8Èþ9ÉD%Ç/v éïDŒ?ìWJÆa'{¿I÷b“M÷¨Ó#;ñEKì>­ÅÏYÙf«^5:÷¸cà‘^dÁ>}ÿíäó„–´§¤m¤üÁÊsjv»ÏŠÝ™åä½(Áëÿï ¹¸ endstream endobj 415 0 obj 2384 endobj 418 0 obj <> stream xÚYë’Û¶þ¿OndË0Þ·Nf¼N“ñÔiãx3™N·Ó(hÅ,E*$µŠ¦Óê#ôéú”HÊXï’‹spîß^\f»ß]쾸ze½~‡ÿWw÷W¯¿ ™ÀòòJ°ÿK%K…à (×W7ES¿¸ÿå°˜%<ˆìõg{5x–Û«º.uݳ¹.Ô¶ÓŒh_yŠXðH8»~ê›VÜêvÿ£î¶U?0ú'•Qê3²…nKûH2‰x.³‹G–IÎÓÔY×[¶ÍúÂiÃ@ðÜ¡ïúÅíí³.pæ7ë}÷kµÙÜÞþØì¾>ê(öÌX×°²gÍF×ëWšíVM¥‰= wYžIò|âÚ¨ºÙT{Ö,Ù§ûÄܪ¾l aÙ´L…~4òÚÆÑ9&mY»Ž•õ@iìÍ:Ýsfó„aÆ“ÄæykvðD‡iÊãÄݪzѬqÔ]Ù¯X·wE[nzV7½9ñÌ–@JféÄ]ö¤•&•v6•—©M©ÚEǰ›«âɥ͞Һ& "f6%AÎeh/ëÖ3׌µÛÚxBUM Mרc0*Y“sxXUsÎÉœç±-¸iŸ:V«~Û‚xïÐf=¸o¸$æ‰0Kï—lßlYU>9¦€Â¡Óæ€åB+ ¤1L1ÖvÔÍD†4C1èUYC÷¹ãt §ÛB·=[4õMó<´‰z×a’ñÐ!P¨}Ã.Žˆ´Il+/$_{,3c§0øùÈ´qÈãÌp˜ºt{K¶Òeýpóðâü^"Él6رëµZpö¾g•†aic#Å ¥ÑÜnê .R[Ôlu„±ç–‡›½îflÞPžé_·(¾¥ª(-üH‰ãÁfº¥º®)J$£,2àIh“>»Ë12{zì7º{x1©J!µ5Eè¼]%DˆÜñy…?”ÂãóŠäJgýï¾A#a/ˆ­KÔ³Á‹´íšµ¦ã“gÔbQR‚%ªWsÕißœHãX«F­Z›ºÆVºB=Ú_ì{!Ï#›÷sÛ^îñ}áVwÉÝ#A)¨¤ÅÁYQÁÙ36lp‡¿ÌØÊ-áèñ‰Ã¿sÔ óŒ¡½î„EHžeö²nupa/›"l"²˜šÝùì Ðéó1Åa£/'ëd`“3$A[¢¥+¤™fD&yÆ6¹á°D.õÐÌÜú'‘(èèbˆ§hºž‚È©Á2Í)m¡z35jJØÖn+TÖŠ~èuÓîM¡¢ØìË5”š#åšf4`¯¸h!ÎãiUù¸2•‡€­Û¶›¶¤ÜD_¦sº½F!—"¶%Ìè(˽‘‡‘*<Ü CЦĦy˾ßúøáKP³}vó3ä:Ńè5Žï ¼Þ`+B?5[”ݓ瑨.“ÎÉà4àV£±"QTìϬ8 '³ñde€,ÕfÖ;é ÐJP-¾ßú-*UÏ@|håýªìœºÏžÊÚTM³÷¼j~¨¥‹²bž9’–èy€ Û5‚½00èîÃßî†zlXÃÅ>\ˆS1ñ¼|i8‰|[HW{ ËwÌJIj³¾ýá=`ƼUˆNUÉ®”ÃôEž82¸È*ƒù"{ÙtòuñY(R‚ŸÙî y\ÜŽði.œíÚ:Õ`þ±ÎN/;Î>5ˆzƒ¤|ÓBO™¥6ÀíÄóT7nƒÌ¨ÍX¤»Á™dà‹Á/eÈÓÜæ:ƾö'› ³ ½Á&3ÑfËÙ#ØŠ¦5¦ØFµ}Yl+(«æ•&ö—»Ûl«Š\¯Ðñ‹ |oÀ’!ib´3²Šf‹Þ§UW"I{å¢ÐSdls“üT R›ÂÕML:ÛcJ¨Øww¤ØfÖP—†8èÌ`,|¹«„†c 96FÌ6É Ó(BcA¦„ w°ŽÓ©£4B×sN¹ªGµ\îö8Œ'R3¯Mæžzhœ'~=¨¡áøÖ–šØ<®6f A@"|‘êGÒG»AK˜g‹ù³„fcR…í’ñe’Pï·â_6½Ì}ò3¦Ç!ã(²‰|DñÔÕb,¾C?Pì§ÎF^¬™ÿ‚’:ƒÓÊbEÚt%ra0 ™Cã az_8P[† §¹` À3±)?ø‰4áQdóym ¦Š,t=Jµ4{Ž€vÈ_ wl©iÚÔg±8ƒ¬Ì’e Vv‡ÛÅþ‹_ÿ¼®XUSÚí5ð,eù(Ò/~öÖ:MÙ ¢lìJS«¤ur¯!rB®Gö£ÖÉ+ÍHpϦmHi½@Ϫµj]Ø&’ëQA&wŽ…\Ð3UÕ<6ÛŽ¶PìÚh×·Z­ÝdÏCº±°Ëz³í½ (1­«ÆMÆ  ™ëH4c è~³iH#³½ëÛIȈ"¬QÑ»ÃÔï Y3·qbè@_µÖiÈF@¹ÆÉib<-u‹°ºÛ›ë(ƒrB’i¼û9Ó\#Û0®VG—ÁÏË0ƒ:Š_¤ÐõÓÐftk”II„MmB»×Ū.Íä t ±tù´ Æx¡$)OmAú7µÞTº{rß!/6› 7™Çz;mðÆŸ(BÃÌ“þ±¬‹j»ÐìºX/(†ùêÚ·ºD–Ç9à~ÝSnža“S—a¸Ë|ù’¯¾öÈC ê Ï=ò²¢þ„:‹ø)íZÕåæ„&äØ(Zj…1P ¦_üÉ'Ð?ƒ1[j?“hŠÈƒÁ 4A= ‚豘±bÐó%žŸÿñÏ¡ïØŒ„À‚¡ËþÛ_CÿˆƒÁR Ÿ×¯ÙwÒhnL;@+¹7^%c^Y´&ù1i…Avx¸AžBéööÝÀýÌltúÃÍ ©ððÂ7ŒD­A~ ûpó‡‰õóµ’„sq §ÏЙ8JžŠ#íüõXrÉ6릮Q-¦Qª3jLæ%2’\ˆèÔ£¨bpçÓ†>£|ˆ1KÄ®òÄÁ‹AÂÃÍ/æÿ¢X›MæÔštK°Ä¿ž–RÀ‰c.úLœhŠßá/Õuôúwj|`ÝX¤Ž8Xím÷4\ä£m·Ín $Ë€ˆè‚Ú¦ØÂ¼©ÔÞ—ŽöŠÌ—9˜NÙO5Ú€fC±’l4PUOdsù¬á€pÓp•Ÿe"pWîËš®}8]-_¾å0¸Ýé1—'ÒCŠQbzàrÚÌ9<¡èÅÃ)Ïã9ŽÓ!ÐqS ´IêÜ+=£Éñ€†¬–}¯jŒ¸ãшïÕ  s‘˜óþûë¯~½¢GZIs:mBßžsÌbz?RL<««ŸY Yÿ”—ê? endstream endobj 419 0 obj 2797 endobj 422 0 obj <> stream xÚ•XÛrÛÈ}çWL)±wåÀà¢(yX¯¼›ªÝJlk³qÊC1.4.¢Y©|ÐæÁ¯ËéH¢RŽ¥²jàéééëéîqÄÝvሻ~À¿‡Åww‹«W¾ˆ¤w«…~•]*WF±/îŠÅ31ú¹º?˜V˜$]‹ºÚЬµiº¼i/ER.ŦÎÊVdm#ÒªlMÙ6ÏïþÉx;® b=ã½]g¹ïž»æc¾Ù\_¿ÁtÉé¹2mº~ïwÏÞ=÷\ükÂ6ˆ]éÇÁŒ-ý¤U׊›Ç=Çñ^¿ÈZS\üƒ>ÃïÍÍ”käJ7OrÝÿô\ãÓ²{’gèJ'޾’çÖdëö)¶‚Ïâ¯d w¥æ)®ZɯU¿Y&mÏsÊÌWR;êIv¦\昞ó”ôwvîßS:åÈØ9¶/×&ý VU-L]WõµH“ò·V,³¦Íʇ.kÖâW‹j5DtsAá<½ÀqdèèSX¶àÚ˜¦O‹¶«K±ª«B°ÐU»6õ6kŒœ0×±ëÌ#8[!+L¥Ä­3  #F:í«'É=·VÊÚ¤&{4KÔ ˆ„œw-.ænÓ¡#•ótÀîå«j«$î:åH­c8ètŒS³3~,CõEßk/–ZÍé¶ÎŒ­KOñ˜šñT±TÊc4&oÌÜöN$c5¼ƒÝ_%·¥h+ñülÚ ÁHÐÓÛ[|ìL½û²ùü8‚)ô9g¦ó#@» žÔÑ#Øá6³ý ‚ ŽÎ?©¿¯CèÏýzÐýûïlt˜´Í*Ä›µÄ ÷ÿ5¾Ê{ê¬Æ^(µ«Îkã†Òs{^vïê•'”3)¾£eôêÜ­³F˜1›8:d4Ÿ’bƒÚµ¬ûÈnÑ$…ÁÂfU#úküÉ5.¤óh2âáž–É †ÑMk‹cØ@ Õû­± ~J‡ë9E#/òdäõ{c{l;É»äúŸÕU¹€&Î"“ËO««ôŒÞêÁ¾Im.ÉÈc‘\åI?bô;Ѭ«._вjޱnù\7-¡{U·„|M•?’‹6u鋆lÆØúµŒí§Ô4Mƈt ~÷#75jžÇö(LQÁY0‚n?¦×¨ušën;¨Žt9·ÌI¡:PÝ›¶55U‹]ÕQyŸQϱsWtÀ ØÁdG¸dãog͵éòœœYthóPË“¾Œ‘ éë5Žìw0é&OR(òs²ƒ¡q9×ížö¸¨5¥È¶'B‡tºz¥çiè¡Zì¼½ýéöåøæLÀ(àoÀpW*WË@3æ%å¡ö²mC VÝÃÚšsY•L+€ï…ìbª(Ì2£æ‡ i€÷ IfJ«¼+ÊæhÇ–FŠ¿Ô,TœbÆôR'­ê‡¨^#…Q?çˆ éI~-¡GÊ}ËÞ#ÈËo¿…„K$ðŠ"ˆô¥*•µ'üÞ˜šÎs=øŒ½aJy°l0Äü1H—.HÚ£ì¨!A %k‹µe§çW>òýȦíX¤>lNاT¿þxûæö\€‘|F-Ò;Ò:£UB²r¸¾D÷?æc ŸáÐSy?mdM? $g¢ØÇØãÆìعâ{‘ ¸Ñ†\¹늡F–ˆË¼åC½·‡Rñ«8úhÇŸ÷ BýQ9 u¬Ome^òXpk„Ý'QÛÖÊÞ  I`Ž1.j¹õm¸'•+9[Œ7>£/«r™Û$oz°~Ã çÆ¾ '§¶âGÄp>TÕ“}­‹r¡œ~žy[†B¬±H\tÍP÷-îž)ú3ðG CÆù8/-Ó$m;TÀ}-D‚Ù0¦Â‚`›ãŒv”Ät3f'ÅÛ×?qp÷aAFÃÛ 71Û>tO4Èé4\ÔŠ=ý—«À˜z_0$l˜‹DpÑ(‰·¦^uù¥¸g„±¶ÏAc®µˆžL™ºÀÇ'˜-ê8ã8P÷?tbE¾~òþ¿›,ý@Dì|=Í®yœz[ͺõÐÎM 0vBoŸWŸû{EÍ…Åø<¦Ýö¹B)º®1YR¶Ô½~àUÒådÆl.©Ý>;ŒiI.xM3Óõµ Þg«óʇ®mrV ^]É÷íL™›–¼ §¹øý„Ù\íÅ‘éfs}1óON_ïï™?ôºJËpxßü]V¦y‡6ð"-GŒ\_L@ÒÅÀ¨‡§Ë#¹}ò%˜ àö†GÉãûþq‚8„ÌÃóàøÆ¾#²×š’k_Cøɳ -£Iе‡žîFÌ“v}‚³ƒsxðººß›¬ê¸êʰψ­±/‡ôÞ]$yÖî¦tŒ™txê‚D] ÐkÞõ´5†/öYåöî°éˆʧ.-öù”Öûe$ò…öɇµ‡eOK«õbÕ?øÏ&‡)‡W7œ 1–!ô]±_Pœõ—M?+%CÝKqXr!̓Ó5öCôøó ™äÅM:â” —%jÉ {Ñ3pH.²“`ßOï¿^|\Ð’v˜¤ PSŽ+ÇŠÙSì¿û3ëů¢¯ÿMJ endstream endobj 423 0 obj 2129 endobj 426 0 obj <> stream xÚWÛrÛ6}×Wl2“Œ\ÛqãE±óÄÍKú‰:}¨:Š‚,¶)µÉå/»àE²@É =–@\Îîž½`Àx3`œáÇü¿¼^ý* &Æó…ÿ(D "ÊHœ/CÀgZUT+¥S[éÉpr6fUi,[eÿ¼39;ÿ}€0&r‡ðŸ·&Œˆ$Ü­»'Ÿb )×K¸¾69ƒ¯_áÑ GÉg}¬˜–DXîÑÊ®u V¯Õk÷þê0HËpHµÂùü!O ÈR£Œ1$ñä7OH‘¤ä`*Œ:´ãjoF7õ¢žBs‚ãæHJN3OQÂëÆ˜,-¿[˜*Xé|Y‹EaPiPªôA%2 OÄ)áëÔÓQBÞÓu/Te±…UeL>Í‹Ün¡Ps ¹»HñÛ~70Cêq¹P0Ý¢K||$Çð«Ù éÒ5BÊÔÈemùý=j+”bÀà úYW•%¾„ Q {æˆ1æ%ª n¯ñëê´ gÕnè<çVÏ›0õ’I€t‡=ü^˜¿€| }”8@‡DGQz1áŸôQ|ô¬ïx)ä;éííí ‰è“yæŸà ‘ôé°“,!œîî·NBimß|"ÆêE¢Ñmþj#tCà2ÍËÆµ©¾Ë. [¤~ÁñßõÊ—c”Ù°ç{EȈ$tÏFåea–ÚtŠ¥Ò,s!¹JuºTVis]-!«–KW|мT>¢ˆH´'`¹5÷Åj5©/ér…ñ=½kij-gc2lìp`,ú<"’퉯ƒîYw´j‚E„³ÃÜoýJ{Ø4"”ñ“ãIˆæì“ËêmOCÔï0Aȃ$¹Y`F£¥UYªÌæUéRÚÍìH6J?(í§5B´â0avl¾Û£!ðdx„æÙô¶D§]ø°aˆÏ¥–RÒ(äîÆ‹ÝÜÚø3«Ô˜úþì9Œ I"îóñ®* Ô¹¶½¾k±°©¥MnmÙÇ"WÚÜæ½;ŒsI$?Ì=cg£Ñ"VúªÆ{ƒ^6ëšž>LÎÙq*?­úô¾þ¼vl’zì,ëáPI(?4¬ÞLP¾V·ù|2lU¸hLlËÍmmßq¶X"-éÓõyQmj®ZDÿT,‘àC!¥½­ß.T:skO“ÿ{J~$èÜŽFu—t‹>«;'t^(HÏahµ—Ej;M¦êÎU¯úαðl¿ ÊY3}~žÛ#yÍ$' ï—öÇfëjãÄ]¾q±E2œm£ÖÍá%Õ 6*¿[X?5˜à$'o(wEeªÁ0ïS«Ž°É9‘âé[‚1N¸8}K0Ê û8ËR›- ëSw‘û6ÕÁûŽUA†]k"D/¬*,䋼¼ƒÂûc£+7t)èbíó§mD{h{ÜHÈ~dJk¸º‚çMÍÓ¼P³*šýí¸Õ£ƒw%"À^;Â.'l¢°óýæ4 àwãâ!-±woUsç.€Àéåx‚ƒ÷§×? înèV¢Äib‡¹µšÍŽî}¿£;³ü%býc)¹ü endstream endobj 427 0 obj 1394 endobj 430 0 obj <> stream xÚ…Xko¹ý®_A¤ÀÆ©zHÎÓuûa»ÙbE6* £%Ífò<, Åþ¥þÆž;#HJÚM˜ò=÷’¼ÏCyl¾›ylžá¿àßzöý|vÿ£b¿\ÍóðW°H²HFl^În~b˺_t,­>Ì0BHî›°}]iÖè´(ö¬ÒzÙ²®f­.tÖ±¦6U¥Œy LÝ]ËVM]²”ué¢Ð¬Û¤Û¤¦’ cSéÕKŸÊkXÛ6y©YÕ— ݰ¼ÂoÖ¹©åKÉ=ÿªQ_†\hökßvl‘6¾-ëF³¬&}Ë©"â‰ox#7Vìë—² ?Ë´J×úŽ,ÚŽUŠ©h;VÅ\Yâ:_²zÑf}“Wkì¡Ù¶Î«Îñ‰ o¨Í)¦7‚æ©’Êýþyþ…qÄCPüÒëfÿðÐv¸øs¾zºyú0ª¹i+"ßÔí‹‚m4ÜeG]JRÉ€¾Úâ€RÉë–íëÙ“ÕU—æ’iÕÃv½B·}ѵ¬Ôº#wÓänòº³˜·M½@^ï)ïÍ­d­š[unBDÁt Kr™˜Ò·-ŽÒR’#àv,„‚ya‚ÿc‰}Å#eŠqä]ŽûUõ¡ôíR”RpeÙsürZ'geŸmÆÌí[ ß½”ÒᢆYBEð‹u½]E^\7iÙr×E¢ë ­j5ø›Ú"q¥RD”pe©½±ʱ±^(¡©•]NM*îG¦ò祒®ûVÙ÷õ=nßqcCBŸ{±šƒ…‰c[˜>/–l·AÛrª:T&Òn|H ß2 ÔK[_íÆxþmÛÔÛÒÆ©p(©èÎ ¢/Ž¢n(Y4;Öí쉓pak;i„BLÀ«-¹2¥º)ê”Æ•i¡ÇREz^ÈGàü‰©Œ|s¦í¨ rö/¤ŒS4Îèêq|!åùy0¿Y¸DòØ>w;䨹=[æ æl±·‚˜ÄŽæb¸<¶]Óù2áA<ú”¼O^¸°‰•k"öy웪ȵ}£Û\+´Ý$45†Î~¹fdà‚ßÛAϲvoé”:-ÑPÐXV6uðx˜à4Ó|ÜòˆËØ>žàBŽsKq¡¬–#¼dØÛÀ°Oovªa‚xÑY? ˆ¿×KÍVö]." \7ìSšYwð"Ke¡6ìg'ã‚ÁgdÇ~"Öóó0¥ØWÝ]ö6®`¢ÄþØl‰2€À ýsè‰ÿHÙ2=KÛcZiµîÁ)8ûŒK5ÕI®«5¦d;ðŽ4ëú.AkÐ1Œå¬/Ò#²eØtó1ýé,dó€›lœ’ö‰Ÿ™p$o›/q¤ïûŽ®‘·öÐ%¦äÛZ¸\a°Ä5lµ"‰‰ê KžîÇŠYh¸Ê'Šfµ ¦Þ½FÏ!à”TÂ:öÜV(àÀ·¡V>8Ø(ó7Œ8¤Uvêú1@ï£æË±ÖŽò}ۆܱÏ{„þöö½M†¬2í• À€+šÐy[ÕͳN³Íõ!)ßÕuÊ$ôhš€4Ë‹¼%Î×›nâÉ»#í"9¬Ô hD˜6æcŠ\%¢æø\#moï×áÙv{…‹&±¥úpÜ!uw ¼±1ý)¯²¢G8ßeå²@ ñÍ;7¨xE(/qàxéTÕÊêÂÁƒµdßα~Œ##-,ðc¹o_ŠÛ[¾ù› GLÔÁ‘'x^­ø ­ž€+8ÆÓnsÁ2š,ž|öþžý WpZЪ¯2.Jý¬.†ÇeÛ¡—´]žµ,]Ô}7¶ ºßøšt,+?ÝxO\îDLCÈ`‚î4ÕÃ,:W"à ›!V#ÒÊ‹&àÙÅÑEOòß¹L" ÎIü:¼·ºI=ºðÓ Sm7ê;Öž@Æ!O”¸z‰)9ÉONbìö¯¬åxöÿÅÕ ‰‡*Kçà-Òyº´ØŸ¡=þúéÙ PA¥|ËÄàDÆ\¨Ið *Ê f|<’TpÝ}x„Fjt?켦v3D z§ž"0Tév‹—òKñ¼È×ôÒr¶9Ú RÉeMzñúè–»ñr®b‰ ΪÉ5PÛ-ÕÿÝîÇGxÅ–´n^âíReGst-%ÉyÍ cÚs¯ ŒÊÀãûÛ™P)œ9œZJ_n‡VAz]á çüùFÃ÷%'nÉ6}™Vñiy¡·I´4:n1Qº¯U6øÎj:ÅÅyŠ+ŒÑï:ò\ä˜ÁÅNKž§ˆÖ-{|„~¨)|x7¦~>>’ò§ù¤ï±Â§¯‘²r6¼æh}\Ƭ˜a:K¦µÂrÄÒj3[]þ^Rçòù¡ÝÊäìæ(›Ž .›¹¦•àQ0žbZÎ1<Š=°zøøÖ/±WÄŠ{ìß ¨ìsZõ#›ÄÑHïãhÀ£s‘Ÿ˜õù÷å_f/3Z’$Jè´!f×iå ÇÇÏ'ÄQg3û…U°õul! endstream endobj 431 0 obj 1976 endobj 434 0 obj <> stream xÚXíŽÛºýï§`·@»{³á’"õå›h‚½i‹EEQ ®LÛê•%G’×1Š>ÐýÓgì!é‘¶“$Ùl‡Ã3Ã3‡bd²12)ðë=~£·“ÑÃO’d4&“ùˆ†¿œ¤IyD³\’ÉjtKn¶º\,ËzAnÈ›7¤ë¨ý¢2ŸnH×7µ&ªžÙá»É¿=Ÿ,¢IŸû,š®º4Ÿ÷‹fÛ–štK]UÝÍÇ$¨Ì“£ÇV÷›¶&Mwf˜E4ÊSkøßp,æÔ”uŽINcÆíèJ•õÔØÕ.Š{R,UK~ÀóË?ÿ5½ ' N‹ìÄÿ„c§œ‰cÔä½îÉLõêYu€¯(tבµjÕJ÷ºíȼmV€bµ2ÈVe­CœÑœ²µÚuŸ«õz<Ö_Ôj]én<~çfÀdR¬fÆÉôÖmÄlazwc4e§l•s2½ýÕaê wç P%^v÷ùà¡ï8c@'=Ú†)‰ãûÉã}»;_Oæ4åÞrò±ˆUÙ-I¿ÄF›ºÖE_65éûÍäN·/º¥¡S‘Ó˜û^`¾;yƒãéí”gÏO5’vºr*xtVùæÏQêšÞNïîßmºð›µê:óÍy¾b–ÑœË÷ Ûn표•ݺR;‹`êQWMk?éº/[óeSüL €aÉ<Øñe\>n4òóÙþþ†Úgf¤Ì@5Ü/’®ŸÇE³é퉟 ZüX6°ž(â|ÒªXNomˆ’Ðsšâô"Ä ‹Á“ûdwî 4 üB±¬c‚Ðõ¬:‹8É(çÙÕR•q ØO¥Z¨¾X⤆®?aôVÍ,L¿!—ÎŽ”)M£0uŸ˵[$ˆlÛÆ<–½«íO?ìÑ ‰”Æ¿€±n[‹±KØ\••žΚn—ª7°|(¥"оëKžR‰ëȱ„æ‘ür_ ½6‡е°yìâ¼wÆÛkUU¶ÈU½#=Ù¸W¯ˆ>¸íBYø’¯À÷ضM{À­ý>àDš¸ô»€Ià®—œ1MEØôØ™ÓXðSÏ{Í(ˤÑ? ÂYÐò—”¥nÙx¾püáfCšºÚ‘Zë™aÖV«™-J3Í ß9Çæe–x.\7u}ó<œò#œAæ›úÈå 4LEM3#åL+Ò̉Ƀ bÝ6 ´N2ktGÉp'R0*ìÐ-‡üìÅZAzFÚ7ÀË|ƒmË&Œ¢™!д¶•Å ÞC”!‚˜t“TM>¡?Ï=Ðx¥ghû‹r,®†¹›+xGqìy°G~<>é5äE$¹ôÊ2"ÊBÓïðŸM"hsã4‹F‰ó¯êB› >‘1-Nøs7eHöÕ°}uËóêŽ OØžÇ;]¡“œ®šüáí‡ÇËÁòLRžeÞdGºÃ°"„aé¡ÕýµÔ °?Ó•®œUv ËNSò§ž´›Ú`‡Òw úT·5xÏ Q Ë`#03íår¨Rø¨wÑc}_䓼q˜‹CkÊ‚´Wé\PéÙmýa¨ÀÔ÷3$MsÏ`bÀÁ?Ð}¿3r¤oK/]ËÌŸõâKšûaå¼#AÝs?2'$;p#ÄŒ©Ê¢ß˜<€‡\Î;Ô÷½_ÓÑ$~4PB[ý[Ÿ·b*Ï ªØd§{õÌsì º¾C™C:ûáô-$B':Xàú±öu!gDé})9HЉo¡=a k{¿³Å«‰—ä(Æþý•ÔÑÅL¯Œh•¥}£ C±IAóÌÍûóºAuN"]éD‘KÜ`ê¹ÕOåü:eñìlÒ=B늶|Fe¨g¯¨#\Ñb†Ö~yItwáë{³Û½ìí=x ×%þÚÍ^Éx« \¦×W ’܇K·U£fîp…àÁզ쓾MðRžMrüT¡e›Ó¶7ÿ·a&q¦Ž[ôÆ ïbox[ïÉ¥º¢.ئù€…ú™pòPPm¿‚sÓj‡6dpËûëI ^d8žæ4жº’,•¡´joiT‡g½Ð¤Þ¬žMç¤qË8”,_5YúEQ õ8t±%%T²ò¤‹på=4ÛwÖoÜ„=vH¡¤ï¤õ ÌMÓ3¸·ÒÄ96Ì„l¶ä'éÑ`å³^*DÜjXâY¿ø sÔ`Þ6<ü°yî­àºÇÑWö·® ãYn´ùÐÀ¼~ók<6¢ih²–ƒ«>ó6«^ÄþhˆÝêŠ~›Ä_oÿòãa”Jw#-Öë+ê/Áôñaów]/—î&öë².ª ÊÍáMÈò&D)Bâd˜¯Á½©õ  22÷'¼±ÏW¯èò÷9´`óÀZU‹¦E¿YYëÇÉq#¯A6PºÅjd_$šçÃcFªQ,Yðƒã³À£³5OËÑܽª=ÓáœIºÇR°³ †1¤ ¡Ã*o¿XøáøÄ íVÎ~ÿ¼ãÔÊe,ÆxjšÔ‘Qð/‚bŒü­3WnUCíC3ó^;ÌÄep"Þç¯}™G3’æ&ÚàôÄl˜Îâðùdq˜³ýÔðõå)¨ï endstream endobj 435 0 obj 2019 endobj 438 0 obj <> stream xÚVÛnÛF}×W TÀ x½W.ב] @Sh«íCY¬´²ØR”Â%­¨—ò_vxѤª42h ¹gfÏÎކÂdÓ£0™â¿ïðzî}3éݼ“à“yÅ?šƒfœøFÂdÙ|%Ó8ŸYG+—¥6\Þ'¿Ÿ )'žQ-ô2L¢uìN¤ñà;ÍVi «9¡Æ/±¹‹’gHÂ¥uëpjÁe³·M¸Çµé„/·îc¼^·\#‚òÒ%Û®íÌΡâ2vÑŸö)»‡ï“ì§òÉ×[þ”M«£»,Ì¢)¼¬¢Y¥ %ŠVg^§Q’=-l8³i08 ~›h–-ÜxÄ'ö!·éöƒuyœ]Aj]0l†õ)’×eØ¿škšF«Ô~¦«<ƒñú÷ ÃÙlÅq0x…×`Ø<—R†jöîóU Á J Dpô-~ ZdÙxöT¦:ÃëûVX‚!´¸IC4ÛÇ>¥·#· U6H˜ƒ(b qsC\HŽWûx¸ÖQ„!жû§¹Î Œ·2e“YÜŠÅ aL”Øféã{ļ ¥ µ»é£RHW›³uðaµAéД^z>ñ;¥—JÃÌ—J/¥&š_V~µ!¡G£¨Ch)4QüK•^m~Ù©ûë9q%×Dp~V\É4a\|–¸’zÄpÙ)®Ðî£/ˆ+<wóOÅ}rv¦!j{Fæ–¸B)$b:ÅR-º´5´½îÐVE”`Å­õ¸ô" ®ˆ¼[ßë ú"Á 7j©*˜"Lˆ³ª *‰ò³TåFbÂT§ªÜ“¸AU®îfŽU-›r0èlÓo!xÍì§–²\ ¢e§°\¢äAš›x\¬6P\øCº-Þaj14Tp§9àR3Dȃ*M–··•àX‚äËú4Õ/šë^ófT&“Mpë`€pu…Æqœ{ ¥Æ­â˜`¤ì®–ŠZQ.U_(óWUö"tÕ³ãMÆãFt†s…–ê$úîÓ/’W†8ezw‡¾_C¿·Ðwýº.o_ÏÕó9jä­K†óŠz¿ncg[i`ÇDúÿ; ‘»\g[Ò?KO1L°9‰œÚ,O“R2¢ÕùspœŠ?®ÅwÑs޵Wð̶n°š—wéžõ«Ã³Äù2qÍŒ¦åsÒ ëp-–8\u(˜ºO_u±b–Ó€ë*Yœº´R›]ñä\‡Ã K)ï$£u/[çnñô[8ý#,ÃOÁ püv²÷¥pÍ$úÂtÙ+æÄÒÞ™>Ä=%iÃDÀÞhVØÂZôæÕ¬.0'Ç£º  §)Rÿ Ö"qÌAcOØ„ï6kÞì­²Bâ _Û5]ø¢›Q~5N ^Uõï·?ŒFð‚-ˆPøÑÙÞ‡IÆ5µÂïº @ ^Ežàäþ¿×z{…Y¬hS°õpv;X´¤Y!v÷ÄÎgÑûŒõ/·A< endstream endobj 439 0 obj 1107 endobj 442 0 obj <> stream xÚWÛrÛ6}×WlýБk!‚;yp%õŒ“Ø–Üt&Êh` ²Øð¢”eµÓê_vAˆº€TbMÈÀž½],,; Æøç=þ>vÞ :/ßyƒi‡‚ƒ uIy0H;]°~ ©È4–Éd؇Ç$Ï£DfålØŸþÚr\âGüÇ@£L¤Ò ©øo©qôçÜÂò#—x‘¿Áú×Þ\âDáfÿåK¸)â¬ÔŠI J–0“b" [Чèm´œk©Q‘/GJÎE!ʼv—ñ¤œ©«8%%j´Ô2§Ú€AîПÔêRB¶ëëÛXͱ‚r&w=çY)³RÙÔ!‘³Íð4/`Øí£Ry»Åê®B8;Ó •«¹„^ƒsŽW-Ò‘Q¡ÎáäÿØøŽCg?ñ÷"ó%þÚôGçp®yà ÿ?Îõ4ÏËF®9ÐïŸÌ5÷"˜Œ5 ¢¡Ô$D•¢ŒÇð”Çû”’ˆš¨Í)ZÏYÇsØ­Âÿ+|×á±àE!Z`Âj‡Ü ±©¿“Þ³/JiÀ@dã/ˆ$Ù‰”Í / £[R۬ТH† ”(½©K֖燑Ўt…0ìâóœ)`„"‹—ÚfÍ?z¾Öš¢ÒmÈæ =/ øØeaÃøQ&ŸËVX@¸KÛ8¼ëEÜ"鄹îAúz4 Ôe­Lb¡ZMQ—½øˆlr“Š83±ÅãøÆ3QÀo¸~úòµÁæû¨2leãœDn´Ëœ÷¦udr\Æyº4R‰å¤`Zä)n¥©¦SgÒó8 ¶)]©ïÉ|~v&ŸEŠDWgg—FøeaœN4ưk\ÐÆ7ÃÉ'œmO‘¿Ô¢Í¬3—Æì´—‹"CÙg)'”±ƒ©r#ÝÙ6² ÉÖç†ÚçïéÓÕ—‰‡DBUâ/4áb¼ñ>æØ$öiQÂ*_`1¦¹Ò5¹+¥ëÑF<ô&°Ñ?¬ú·×''»YÊçú¡àAbÙH؈’XÍâ챺”,žÑõ= @hÃoaO«ÆQc Þš eÀcyƒ .g$b‘ Œ•ÅTŒ%ãjªcð‚NE'12x—³ÊÜE†·h²Ò .áâæÊ.\‘À³ÑuH¿eùÒq­›çØIÐ)+¼Ç+4Wo*Ì(5±mb¸ŒîÑCaª,ĸTk”I<¢ªlŒíE`xˆ ç2¼}N^nS‡–5  ŒPíIà1‚a™l »™\Âͯ>Þ92Õý§õVY,dÛEqŒ þ]Þõ.½5ä/¢ \}軸ç¹€·¿]}ì÷îZøÓ üqq}ßë»Ô9€âŒÈývÌû›·Úʸ~oñäµëÀçß{w=½¦Î·7Ø@;ð‚bCçH­N5¨ëu½ !épϱ–x`³f¸4gõjÖ™š÷,†aÝ}Íb8ûs¬§æ6ŒØµ!ÀÎQ/ˆ[+³¿lVøJ›õÚŽ^÷Nçó$ß”ZÝÙž°Qî±ÂàƒÈ"Y›¦å^GÛ¥ã{ß¼ÛùÞÑK½DÚZŸº;+§2Óœ¨¿oOÔ2³ÎgÈëh_Äœ endstream endobj 443 0 obj 1407 endobj 446 0 obj <> stream xÚ¥XoÛ¶ýߟâ"ÃÞK·„%EêWº= I½I³&Þö™‰ÕÚ’+Éq‡} ~ËJ²lÊr×amšÊæååå¹ç^ŠÓh9à4Šñë'ü{œŽ/ÏÌ¥Ñã@Ç_A¾C¾pX*͇Ôùsp;¼žè;:¿¹¾¢Rå}=Lõ+: ~x1zoyâóB·ßÓ››ëŸiôúôr¸åæàUÇ…:L…žå"Î%£ƒ«Å´LŽ?.t¾:©Ö'ާæÿê»õ;>}‡ñ0°|¾|IÃO:^”šŠ2*õL§%Eé˜ÆI1ŸF+ЦSÊu©ÐeÁº>=ÐBËçwlsš|ÐíW÷õ—ý«©ù¢±áÛ7¯v*ß•!s…è¯üÛiéo‹€+B&ÄŸÏrê¯ÜY£K\—,꟔¼ ¿ÂÛ ÂˆM_–"%¨´fnhʘþžš:{}y¹á<ø’ëiRLÀ“$(/JAÞmaþE¬•ë©$ŽJù̯5î,‘J ?ź¥TËØÀcp«qD«n¢NxÕÜ”F`*whs,ù—Ü«¤eËÛÒðž¡Ç4§lÅ è±RšênÏ$x^Ì]eEðF†\`‡ÀVñÚ¯ñYuTP1ɬ ¢¤”²æ,SsšÕíºè{¶iÓX ›£(5iòl„ ô´ ôÉZr€Ã"m6>öQš:àv4%2ÜÓÐñ¨Ââ—ï¶ÅѺU“;§¢P­'#‡5‰&è“ta^âšÞIcGœqiûµòÑ’k¦M_–³îY%=Ó[Ó!H±iA«h>Ÿ®Ö%¾&hÓ]ÄÐDÔ+€ÜÙð'™é5¶€iwW½w-p¯Õi\¿qŽZ_œŽ˜ëR<T/LÍóú1 éÀU¼óƒöYâ±¶5O“Á£y¾)%H»bÍ+)w–Þ^ÙW­˜³^¢û¡}Fç§µ}óÜYÝA7Ź‹qŸyþ¦SÇ-îÉ8ýR˜›]”.¢iš™w\;à&.ƒYŸ¿<þnðq`͈šh=ál=ñ*ÌÚbýyc±ž3üF)|ý Q01 endstream endobj 447 0 obj 2105 endobj 450 0 obj <> stream xÚ[ݲ۶¾?O^53 þåÎNšŽ;M4§ãÉLn ’S¤BR–Õ‡r_¥ÔoRÄBÇžNÓ–GXü-v¿ývÄâéò‹§-þç¯øïþáõÓÃ7?¤BâÇ݃1þ#E‘ˆBÊ(/ÄÓñá«7;qíÏþúé÷›@UFUåË Fì|)“H1 }lÚFâÒL1šijº½Øö]g¶SÓw¢?Ñÿ¢éÄt0âÇë/?ÿ]|'üASû#¾úéÍãÝÊÒ¢ŠR勵­8h&RåQÎD>øÍ*–ÁÒ˜z±7M6ˆƒÑµÐCîj»R¶ï,I£2gûÞN¾T›WÕÒ8ôä¶úâÛ†LsÚ†':Þ+KÍö »f<ŠfZÏ[¨¶9žZ3° §Y”gþ`âÐìTžû"/[ÃõŠùíLgi)#Éf0­¨ÍØìé4±Çº7cÇv¨ò4RlÆI f4ÇMk¬^¿ ÕVÞɓ莛\ÉÒ»Š HTÄÚõ•«<²Êoo/#%ýö'Z%—ɳ(.Ã¥ô(Æþh¦Ù|Û¼÷»$™²ª[»thw8Ϻÿ·éDÝ0 Kaa)ÓÆÎ ¦›VcÅ®n.¶ø•=˜Ð4ô-é—Æ|GiQ&øz.²eäÕâU$蘤¾(éâ?Ìb¤*¢’NxúØlÓUô;wÄ/^ˆéz2b¼Ž“9 ݶ=Ó 6Y¬C\FqÉ/ƒ>Q‡y¬Ñˆó F èö°"²ñÀŒࡈ Dîü¥Š²ŒµÃ’oª%Ñ8Ô yYÜ¡Á´ðø3v%ȰG°ŒžÌ0oUï 4€ãp@Ç ()ã(+ý1É€B½¤2*Åf#øæ4QRhžéDS˜[Ä*†N“ßÝÒÒ-Z·_E%*eŸš£éÏÓ8[—Ì+ÒÖ³&‡¿V8\êöú ´Ø&/$ÒçvzÛó`ÍÝˆÑ ìü’8Ž ÚŒ×Ï c AgLŠ“”Q™ql'Jq ÐÔRn¯jYeäž’Vð”çv¶ô`K mC*2H&Ï# !V–2G±1[}ÆhÛp¬eÁ$ùTUK3¯œáx|Ò< _°Â‘p-Ü Et¥‚­PøÄ¡mÍ¡3ËÕMîG5+4}ëb‚#Å8Yã ¸ÑtÕ¸›ÄîüÞ`ÂSÝ”‰\˜*•E˜wÅLFqÅÚù©%YID‚/Bƒœõ•ŸZ+Šà¾äÇÙt·5¢íaböxè§¾ÅH| Ò!ŽL£ób ;°LR¼à«ëê1Ô–¬»?Àº¨a,k›‰då¾ç&”Ø#öº:^4Ÿ:gÏÚgïŒÄîW)ÈK6ŽuáÁìÈu·ýñØ;ï?™Ìµ±Q‹vîC­(v3’™k±á¾¯—¬Çy =õÃ$vC´{ùdÚš–pjuÓѤ–¥ø»¬S‹>„ÔŒ Ì].”òv3Ø$0c#)%‰¬v(Ó,d06jMåÎbDA. ” ˜¬èvKp è¡0Ã@ lÆQïm6\¾ˆh ÀRlT,pß“&yÊîšJ&xá™ð$e휧`© _è2‡òžÀÓ!È ”5hO‚h¼a{0Û÷v§ß¿¾Û£“Á9cKB<ŠO67ƒ)A&K%/^¨ŠrTÅ?,¹¢ë85 š€Bk¥„Ý3d7e}xD 7¬¸Îªnj‚íIÃ+hÔq;è ¨e4.Õy“ÆiÌÓw5\ŸL’v|Ч“éLaXgœò~ï|q¢›ó…g%Y”ˆ°ÅšÍ#)¹Èøl¸ŽW¨ô!cT\µE!×ðû}<5ƒ…{°Ø¶ýh\.îGÖÞýÒÞ§0 ’ÑT±ìWÖVF’7÷g±ÕqµÚL›ÈˆÍÅëÆÎ³¹¢½µdÙ1pPݾ•K6æJ¨¿ýv^²©ûê·¯Ý!YNË4!p¾Òº·/ðî`æÔ{0Óy p8b]âwŠêG£»0L©‚XZ+¦¡@áköeß½ÜÚt†~1æv"XuBŸQ@‘GyÎFŸGû–Ó8ìcÕLQikLóÖ‹_L@ï(xœß™CJ–GiÉÚMXœ@\!¢ßÜùe|•ÎCÅ‚¢[ŸMttï9Nľü—ŽÚ­þA"ž ­ÀûÒóÁ!j BŽéwÂ![/Ÿá¨¶ÆÆAH)…¼œÐ Ì€‡|ŽI¼ïxø-Ѝ’|«dŸgpÍVhäC¨GäE”5 WR¢cBÚR ^Ò!Z–±nA!IGQ0%;³u4¤¥g³@I§áH”ìû'ʈ'Ÿ§Þ/ælˆ–|. àPQQjîó”ð$Á@>_”öVzÄ"oÉ£¥a8³O{Z¢ËñKPøŒ‹(©ØxÜ0dIÅÚÍLw ÏyÃàžÄºY%.hÞØ¢îh3G Ú³‡„¡Aaþe„ P*ªtøT  ³X2UÌ’”e/3ž‚TEfl„_y;Ò>Chõäeˆ€¿r!ŠV\Hw…;š…ÓY¥‡Oý86›Y³Ïü2ÎS„n¯xiÍn²§óèèÔ©›Ò‚Ó@TÅ:ê–M´3Ä“ŠO`IÅl^†ÿ7,[\ð»!"4ˆ¸åäh)xm¶MmV¦±¨!eì;½iCè¤Ð¶Œy³@Wî¶4\½¬á!Ÿ“'¿3ظø/ÝÇ|µür94à[´B«já¼ 97Ž,ÍâÇÒØ öf?©¾T㲤ˆdÁ&»„»(Vd T ‹o¦ »Ù4ÖˆuíØ„nW7£ºÒ€ií¶Ì ­¹ìtÁ…²ݲI³Õ!_ÀÐH¼ .a«EÉ9À<Ò"4ÍÉ‹l0nÐh¿ßK/®!êà€nIž£`Ô¦Àq“ ¿ä+µ‡°± ;g$ÿ4óàoOwEHUA³J²!Ö¥ÜP&u£<'>-¢7Ü-@w™L6 _À"Þ…’W.š/ulumYþHîrFØäGyæyêzj¶6Klvë¡?ÓÄk^â†&’ƃ7%È)k×®ì^T [DÎ]‹¼ôîºMÊÂæIb¬3àç(„­E9yÐýjÆ;;¬ªµà €f_ŒgÁ ½’¯Ö3KßA–O„I)ùÚ´Íx „‚Pkâ6J M ‹€ëdIEÅ@_âN“ÒãA¼ÎƒÈ&¹€w¥pÐ5_b‡å‰Ö´bBÖ"-Íwå~neE—œ¾TŸ‰OU|Ñ®4 õ½ùæ­p׎ùÙ `ö¤$ït“îªæÂ­%sX±9õói;ÝwUÎúú…‹VòùžÊúaïH,²ˆ¯L˜vPë$Ghš…eò™s‰ ò-Y¨©ðîâë»bäZAi,Ó¢¬x‰ÃŸÍ3@¹DîÏÁCWÈb.ñø¬Ç) ¤\¨4QMKè¥U'Ç•ï ¶¢áØC39â0žúÎÕ¹>SZ©ã%›äËÇb/ŽxV ŠÄK4–ßváM^Æ·¤[Z-ˆ¾Ñµ‹ÝA’ObÀm˜B_Oó[ÐSÿ_¼)‰¥~ÿ€`HØJÎ"ñÓlÿ‚4EÞDHÆJƒ‰êþζ02^»íaè¸Fò¾GÁ+AE”ó­L‡Ê·a‘4cBáÝL/môˆƒbÁûÆÑÿ à,éÒÞ—.;szÍâ·*¶}o3ÓçaÍ7©Ä9××nïTNph+ÿÉççN‘}°ñ¹g´¢s¤‚÷òdÑñA‡ÕÈ„Rè¹;e/6ÀÐù„±Â^ÆÊ%Ï¡7 †f ùá›*Y1q=4”S¸²2 z â„¶ê÷Ù_çrËÉ…¼ç®e2*~ùàÝs4pW©JÁqeʺ ï½@¸ÈÆLA™L‘«ôNl{ôîDêŸo Cmž§6¤vÊVõpÇú &Jå&£]Jòf²o `Uº^VdQU²®8ºïâׯ F´ OŒ“+zåâ·c‹G×g{âÕ ºµä0§£TBp7l=9xðŒnŠ3¾J÷,}vÏÿ‹©}ÂD/_ìËYu· ìbùˆ’e²ðÛø{æVqûž×±ê%µÏT u{ë½”•?¤ÚÄ¿`kâGM/óæ¥Q¿—n€˜ÖEzìï/·ÿlãN,¨…@¨}ÈáƒëWl—é$–¿W‰¥Ïááè0Öÿ ¦ð endstream endobj 451 0 obj 4234 endobj 457 0 obj <> stream xÚZÛŽÛF}Ÿ¯häÅ2¦y¿Ì"Yï:k`ƒMÖ (ª5bÌ‹Ì&GÖþQü°¯üù¤=ÕMrºZšI`x@©«º«ërêBùâöxå‹Û ¾Åÿ»«¿Þ^½|‰_î®áã_ ²PdAख़¸m¯ž¿®»²iN_Þþ²…—6͵P}+Åaèmå ð,wrc/ŽCyã^Š“Nuw'ZYíË®V­¨;QvBC?|µmˆe_Ž¢*Çj/•æû¤äpoŸŸø‰—3!%±+¢yá{qTÐE­ë¤$±¡¼ë;)Jv›ÌËŠÀ¦9ÚË{EÀÖËÓçYfˆ,Æ¡&A{1H©ÆrÓÔj¯å®ú®“ÕX÷¦d­Ô$TaŸe‰—%LRO0‚Ü÷‚(² n÷µåv«Œö«¾=4Òæ‰³zJmžõÈÎsÜ>b$×bÃ( ¿ÈlŠiõ(Úò=3JDÖ(l:¹XÄOc×"8w¦:õÓ°¸ŽhûAŠ¡giâEnóLjÇzÜ÷e,ß“SM1‘¾¥Råp‚¶öÅ'O¼Ù œ!¶5l•]ëOU?5[ÁÕ•D^RØÇÜóåÜ‹c{Yv‚ùÎØôÌK£Ð #&¶ˆÀwuÛÏð¢íÐDH°üG½ô»Qv×8l‚¿æKïØÂ<€=í-ˆ Fûø±Mqûêû—o¾ðÝê½¥7bzù,™æ>¤1¾ {ä©Ç#¦ð²˜ÑˆW}WMà »Qüß§ˆ¡° ïç;šã.`Q†^ÅzŸo:Q·‡~KlÔÔm=–:¾ú6Áw§·?üS¼â÷r¯Hù.ß¿óf ?ù]÷uµ7¬_}%Rw©—1î©nFQŽýPAíËACx-™~_œáå<ð×ÝjeOû$°°ïš°Œûàåãºçë©Ö·µ_éf”!ŒÕÑ…À Ë·µ  .GªÛ–€®R»qú^X8Ûœ"ó’€S¬Q7Ba ¯Äî8z»u‘fHG9e%KEI‘¯{™kÀL¹T¦Æºiì›™ ¾“#å“~£àlrÆè–1Zn->½êÛp ]àüFºê³Ø }«õ0u[94\‹q¶¦M[@øÅ" w8j„ M`93\{Qœ2RO¼{þFÿâ‚áª]?´”—õµë-÷¤œºº3‡^ìû\´•¨aù žŒ¶S3"²ÜÊí’ý¯uN7¹ Øéh7Ds0† JIæ ce —B^œ¥8¯ØóÁ¤Oüøàè‡iÚ>Sv%? ÞÓ~„û¡ïêÿâžU¥ÑG«Ê±¦í¡²»©¢¤Üžy2 í§ëžØyo‘K¼éf®°{ùZÜÕÌ$ð9ò ‹ç^+`”÷èi—fWN°ÛÈsü'ÎãGý‡Öò̬1Ës/àËÐ}[ßí ¹PDAyÖ¬s/N~ÂøxÞ+Hk/K“݌˘¼ª¯ëÃ# nåÂîØ=‚ Äô7ßYë 6ì¶õ€'$¿ )®ssÙr!1¤_k»?2]˜ŸóP –b¬ŠG ÕõøŒPŒð ÌhR„Cž2š{W•…CÐ7œ$Gõpਆϲ3f:ë1É4A’0&Ç ³ÆãW¾‘ } Êè Åq¾ÒW,¼¢aÁÖÙ=ŠÔCáh/C©hË%yÒ 9£ÓêׇBž2·söA漟ޢV'l\ꣿ‘׿‡©Bª–ê3·C c×Úì<{Çaº®þ¶”Œ©›¦lªÁû Cæå¤‹¨¢4òæA…{`xùÀMSîÍi›~= Á‰¾þUµÓ°[Ï9O,t"¢+ ²µÔ6mñc jíˆóhakE‚ôŒ^'J§MÊ‘e F…JÉTV%ÕΔLÿ7 –Œ*Ê‚}©xèFÙ€åHŒ™ðÝŠ“Ý"2 Š•Ü-"íµ·ººYbÓé„|/+õ%È´Æ1”Å þÐí4þó:0÷B~<¿i°Ee‚ë…”,)8Ù4Ôsr›K'S¸‰i?x¹#WFœœG8’% Õ^4Â#¤”…h-}í°†;\äˆÌr„‘6'|hëªo`¶kÝ$Sh +8‚ñ¥CZ—ØæÚËSg$^ÆDX¡_£­#kˆ–'ÍgçA2[[µ9Á=prô!6³Ü›5ÛŽ•¶Ãh0^OÞØ­µûë›rWȑ۶ƒZ5¤sðü ƒt¬ßP“Ãá<£ŒíÁ‡ÇaLîh¯#${Wuy„Ì™Í#ÄÊe]Ñ,-fÄZG?wòãøŒ –rØt¦çM€¬i£$”3'ŽÓ¢o­­º\ªéU§ÐSàEÏ“œ —±:rÇΈp¶þ¯²#½D:랃"FË3Vïô hª*Ä´ºY'(#Ÿ%"Æœ·_óÚä;Íί³d»‘[š^( q³0:èbäùVhš™ÛrÜrš£zD…»Óùz\gÑK‘±ÊAÉ™]Ý]TûÃ˘u”ë8a?×”žéÙ˽í86HÍ&I€ÎŽrí%l a¶,åÒ«Î9t¾9?ühï†Üf8Žç7J¸uS‡f9\áÁ¿ìõY“G^9DTÚdô2ô¬6Ð&…!àµG¡[s{ÝÉø[–zBÞ´‹i²ò"r¶SeêðKe€ñ©ò”µ‚¹§föÒ y›F|+Gý¦äu-›­øNŽå‹7ÝŽGP?á[S¾xòe}„^ž+Rïú¦q¦39ea›îHr8ó¾„àÒ&úXjÈßÊa?Rӡľç/úCú}Ûy)Xën·ˆ>¿Öõ=®>÷Ev‰0‡ ÍT¼+ÛeVíT"õDæÚh©ô5HާƒÓ ¨çPðÛ\Ëdõ±×‘)ýÈÉfF ê厌†;yÕáðˆ·‡¡Ë­G.¿]I|ñ"ˆ½$U{¥ÒAÏËc.š«$öG¬Ï -=í¯vôc²‡| ÒŒvÈäìhûä,Åò@•9Âý°>^–˜³×gçtÂßO°¾þòféIî#kâG…Ò黲›Êfø^˜ |’‹´#Øç§×¸úpE´’$m„Ö“¯Å4Ë犅gõ“è°×ÿJÓS6 endstream endobj 458 0 obj 3371 endobj 463 0 obj <> stream xÚWMsÛ6½ëWlÕ‹Û0AüpâšIrq:“Z™¢Œ‡&A EÒhWÍäé_vAŠŠRN”±‹‡ÅÃÛÅÂÅãÌE‚_ïðïnöçbvþÖƒpXd3 þ£¸P—„‘‹ÕìèwY&E› ˜'«´¥ ùüxñÏž¹ã?â–yÝÈR§±ŽÇüÐ%nìOx%+¥¯þ°­—8Q8²^Å¥¬GÆœ’¸U²¼ƒ2^ Ulj¥Ó—¶±K uXgŽÎÚ£Ô!‘Ó³°Še¹467wÉ)$yÜÀ l?|þ²<¶': œžoÖ¿üœŸÃ;¡Áðt+q’¥ Žt\‹FAÖT+Hªn7s6bèæ;ÄÕZÝu}q!þWu!ÔÅÅë~öN†í).ú˜-,mbxà 1áSf°<úm˜z £]ñ©ŠvöæÓÝ6%ж‘€îL¿ÛÃnDuwãºY—£¡”í-‡D¾QHb!U:ÇVe)-«tÕõìHV¢y ±QDÔÛCÝ‘ùú/&XNooŒÚN-X/ q¿|vø !Õ;´á$ßhüZWèVø[¨¶Ð(…«t+eÍÎG, Ü¥ö¾¯óêd™UßV­'9dR)ö¢b=½{7 Ìu÷к@”©ÎÕç/èÐ7 î)¸øçùð}ä u÷…™ xÀ:ÃüQ¡L ‘é‰8>‰\o4^½B¹êÇåÑÖ ó霿5û™cÓBb‘OwZo{Ht@ºþp‹u-¦ÀB öæ`oî[ù(9x}rr7ð‘ê`W”iaÓÃ|‰ÝfV5˜•”üOÜhx6ÎKüéž*…+“«×›ÓôZi±:SµHd&;_»¡‡œù'U*Ýî H:×.Ÿp`înrü2©”‹©Üâal,Ñ]ÊêÐèƒߊ2ýìz£e|O2-SõBëK"ü5šÇP41Ïh&Ôs_Ü {ë"Å1ߎÉtèEÕŽôêzŒÞá˜JGû"Û#8¹ÁMl׳WbŒpN¦ƒùªRä0 ËóÜ_rV/’1e„zì ÖT\ºX Gž÷l¬ÓÈEzù/Ç:Åú—y£ËýZö׸Ñ\’‹ä«=ÍwÑý}auuœ­MY¸¼ì€Œ.¶ îx")P,®#ïpnìn’Î!,66ƒw³½vW• É¢ÂJam´"Vxý*°ÔÃêd|nª8“uz»¥Èü oŒÎéógAñÀG•䢑É×õn/ºr#³ –æ:•Wm‘– y\טðnEcÅfÌì%ð5qÏ^"*idÝU”=GyŸúà¯WWkÜâm«ø„VˆÔ”±©¼ƒØZ_ç6~!µFy¤BÔ˜…ñà<Æx+#м+± ÂŤ2QÕ6O¶ªì<‹ï ÎýŸëˆ?¯£7‹¨gs7ÇÊvfÞK]{h†P̸çXM4ص6{[ÓÊgYÿ’eHõÓ‡,s(>6ȶ cþȉ§>˜4†q‡Åì»V'Ó¢·ß¶·~ ð&‰:ø ¼€ø}ð¾_c| z0G>bï㲋­kfÞYà¿ O°÷ûùñ³û™iš‘ 2Þúø’úÑr:7{‹á÷‹aN>û%bý2«F endstream endobj 464 0 obj 1498 endobj 467 0 obj <> stream xÚ••ßn›0Æïyг\L©ªº6ÿµšÔ®ë.¶‹hL½‰T9` 1©!í¢iÔ·Ü1”¤!%Ûˆ’äãÏŸç(D…(ÆŸküÞY‘uúÑ…x¥Š ³IÈ]ˆÖ^\q¹ªáì F_³rU$ Ê2±\Jõ¢õRBœÉø¤"/VZ’‘É•*)ÞEßwô©M|îíèÿîåøÜ&.÷wrdQIÈS˜µ¬HšË"¹­qÝÙØ›Áù9˜›<™ëê¾X.'ü»åüV­Šbv„Y¿úë„6±yp`¯ÓÏ.”)<%²Šu¾¬óR=AcЊ\Ì YÁ¨/Ø„òpOº»FŒ-“áAè\¨Ú,Rg.¡ªu®îšµ‡Qú>ÃRñÃ(=F‚}{$\F<ʆIÜÈ\'ÜvZgíæŸªM^a/<‚qÙuq¨=Èà•B%a­†öl3¨3lôCž@U.d€ZÆRÕÅ»S¨;4«ššÕÉüý0VF §îa¬”’€n»¸?îqŠ<·‹:ΰwãRU5lZôB$Ó•Ôë· õ+ýé…î–ïô> t-A¨5Ü›Ù8Y—ºêO(’ÚíÀ3JÓí¼ ´$4yÌD}ˆ½çq³ÛoZÖ+­à„í%»œlÃ‰ÇØß]ýŒesâ†Ùœ8Ìîº4j'¢( -uªÄ“¥áËO4/ÙÉîAcœ0æ¼íê?qÑpæþ.—‡ˆk¸¡Ü Än[áYˆîéø!n ­z£qm†)®ëσxa5gÞÄ]Bay.í…˜°‰ Û\eVÚ¾D`ôå;ÄÁLjç»-Šì™xé!pmèbw‹õo6>˼ÖÅ&~öÑÉÛ®C(ÌÀ ˆßâêŠþàƒo•i¡V¢x¶fæ´Ôø2œ`çþðøÔº·LhFnÜúØ’Ûˆ66ÛŒî~›ÑÍɬP¨õ¸ÖÑ8 endstream endobj 468 0 obj 737 endobj 471 0 obj <> stream xÚ•XQ“Û¶~ׯ@Õi#;>@‚yq:{b'3I&+Ó‡(ã¡(èÄš"uy²&ÓÔ—þÆ~%JuV¾ó@Äîbñíî·Ëcd¾Ÿ02Ïñß{ü>LÞÌ'·ï •aLæë ' ÿ8‘‘, AÌÉ|;™ úbþa3 (¤#0¿Üç,¤Q:j»+³V‘ûN5…ÒFü†ÑfàÓí»JÞù±Œ©Œ«ýMU·Õ]íœÃcÇ¡#¹Wͺ+ÉZem×(R¯É‡÷?|ù%)4Yª¢z Ù²T¤­‰V-év¤=¹öØ»FÉåa’PÉRçŒùFiE2˜ÿTT+sFY|ºTqJSÁ%EÞ~áÈ$M¥pd´=úöðÐ@œ1éÈj׋Ùâ…ÑaÏËAg}逌h:ÛY^”E{¸#‡º#…uÈh$é'w?¢aêì«ùŒè¶1ÈçuÕfEe–'ù÷çKAÊh»&Vd—5­6¡É€9"–«M]®T£Éºnì¶ã‘) ¤{¿¦°±·6_9X§(8 âƒAžUĤFCt·ÔmÑvH“¢râibý¾Ô/;¥!ˆ$k75råÒ]ê he0dnS–n𳄯©#·7îšú¡É¶d¥¶u„á¨&G5yª&õ;øÔnPÇ:ñržKšFžc.žËÏPH*yõ9CU)}ÛÚ˜qšïv½®Ÿ¢"öuïN‡$4ò“™s*¢ÀŠý¹¨ò²[)2Í·«²¨ÝL}h§Azâ¶rVY›¢„Ñ$Š\…×E tU¶ý›/3x#­t§MHªl«ô±FƯ¾òÅ£ Ñ0âðÀß RšÄvs‹YpÌCþŠä›¬!/±~úí÷¾Ü/õx ìIö¥TÄ=\ŸÛ[ò¤gî¾Ì …å¹ÒÚÔünm)5õeºÝš0 zEŠªŠÃÁâö ËÝîîîð»»·½öP&ÇÈ,fýEÌ/|\D’R‹Áf±&‹ÙŸNª/ˆ+!  òæÓ(¤qEøÈvŒÚ‰ãAöŸþ¾HpŸdØoÁ/£óÂþ¥Îy@ò[ ËBo,÷€Ú*•·E][õꌲVÍ“jü²¤‰tŒ`¾=ƒÝÅì Ê«åG“l>‹ ”n,¹cöô9•Iï鯆g ïÉ.ÓÚ<Ç+L%˜5ôñxÓå \ïôÓƒAÁAc}R¶Ôù'R@ æIUdyð­'’2)|ëVÅÜØÇ1DOLdtÈ{ëBïÈ×Kj׋™o$Æ$!ã«°Mµ* ò²/Žþ{L#ªwêkòö8½SS!ÝÛÓm£•Áv¤Ƹû(Ó~ð«ú#³Õ ­qy²bV˯ð˜ìëê_-F“|Æ·µo<ˆh’ø¶{~~IÐB5@Ó¡aù¦«ø 4v<`:hœðë hëFYäQº+[c„¦þòÚì.fÓŸz–—'–Ÿ-cóÏšj©šôß7ènúÈ,¢" G,˜3)2±=ôI<ªê Åü“„£·›¦ÞŸ/ó&[Ý÷)3ýuþî&!Kx²ïÝS²nѱ;°%濘ñX"®¦•M-à ê•Åûˆô•;R pn†û<D8ÈqæØÉÃòÆ…|¯г-%²/Ú ŠRÞ,‘?ß|xûý÷¾Y!Ò(i²Œ}.¶™¥¨¾õedU¬×È<´-—üä BTÒ+…a1°…1…Ùî-kר§¢î´Ï.†d}óAH¯Y'¯_“i·[å¾ˆÍ À¹„½šæÓQ xˆAŒÿ?àUÓû3…R2?I0‰ú¬rÌš¦L:éEØÜ›ú¼ÏÓix5ÓL)üÆ~ÇÍ?b’¹Îê\€-òCý³–lþT ££ŸÍ0&YÀÇeQ;l}´x´Ú‹YOÁc0@‹T>Ûª¹ÀÛdzÎÅ)§! ÿx0] ÿk”î3%œr&žh™­L-X„¾Ú Ž Š :ßNÌn×§eBÊ †`o abÙËšÕf²îÿBá¿3„À „ô`„ÉȉK¤Èi·ãaþ—a…ˆD½ÃúèÇðR%B¼GØ7³–uáô¦ûRì‘_1M‘³ªËÊ£kFï¦7ÀŒ_'â|ÿïû÷“ljYš™oc\¬˜u³—8}?Kœt6“¿“ ¶þI€•l endstream endobj 472 0 obj 1747 endobj 476 0 obj <> stream xÚXmoܸþ¾¿‚pàÖ‡³ñEo¾ë‡6MŠîŠçâPÀ@!k¹^å´ÒZâÚq‹ûCþ_×Râj´k'6œâp8œ×g±«‡EÄ®Jøçðw»øÛÕâõ;Í2³«ÕB°~K%K…äY®ÙÕfqƆŸÒtûñGvò¦mîM×WmÃàSÛ]²ün:þ°.ìõÙõwnÚ,køÿ»«„q$y’Ç„ñøsr}m;c»ÊÜ›%[¶`}õ_³g¿_<à›ä’ë<9Î÷œ¥ÝõŒÿøü8 üÜm&¹ÌS¤Øu »Ä©äQžâ?æë‰¥æa½,l¹f×geÛô–mû»z»½¼|û©4[ Úý ºüßœM,8•èõköy]uÍVmNJ摵vm:öËã¯~þþ{fF¦ýœ›<ŽÄqK¿}Ù¼ P‚«H~£¶¤à"RÏk+Šxí=e`ÍùÄyð–w<^¿SLD3‡Ž“œG±?íjmX]5†}ÜÞo hÌ0Ðôg[æ¹è‘k®3ÂéngºG¾-ºÞ ^ŽŸ.Á-fûXolf³­ kÀE›¥ûâ¸yQ¶; ª,«ʬ¦שàIL˜®Li9{×µàSعšâ4Pn[àÈÚæœ=¶;8ªå^ìzTBÕ3w)vóèd¨š[lÊK&š'„øÚ nDˆrÁÁ©¦T÷t=æåb:ÐîìÙÜ€ï®vMé\ÖÝb]xoÔÛü–:æ‘nYtÅÆXÈTœýÔø»zK9nºçSlÁæÏDÜ"7%”à2»µsÜY¤J¸d‡»Ûå¥ùdÊ}Á_”’ó­|~M©ÂÚÏÆY³Œ A(z¶¬n½9%¬L¡dXQ`mmØÒ˜­éÈ…eÆsE¸p/-¬¦\f³ðÒ±OJš "®€8а_µ¨»Ý–R—Äõ”ôŠš¬H¦ëƒ8Ç©ŒKnW ;Ôº£™@§È„{š¢Ú§Ë-Æ) YóîG„N5Ïã˜lôÕW°çߛΆ8Æ÷nÞÞ|„=ü¨Ù¡ÓCmƒsJ³në%x.{€$NœVƒ}3•“ãHhé\ñ$£L(ÐÔ.–)OAOSº¢qi#BåMUgnp®snÃr]4·>y*r€¢›ùÌÜ š@jY sñ˜]ÕólͰ»l »Ás‰Y( xËkê7wé'`ôÅ™pˆŒGF1˜Ø*‹ùÝ" JÛv('ˆ¾Oÿì¶š*IÃGô¨{º®1ÙO×󹂖rþöž\¬ÐϧôE·éCx÷¶è0ÛÍ ¥¤ ôÎÔÑ<Ë+Èœ#Ūò³é¾¸rØÐR2gd@œÁ†«¶®[šàÙð2:ë¾½Zˆ(Šžd›a&¹’Õ ™cò! Ä“e(nyäågëÅŠlØàŒË)¿8Ò³‘û8KÆ“ýÖ)wwè·oÂLá&’@x4÷!¥9WHB¨¿ï°€D2ôÅO§_|JŽç=L§OŸ¬È?´ª=ÙßÛ†`RpR¥„|k1_3Ó—ÅÖ°¦ePu a3,lü&lNNÈpQ Œ"„†åsRj¨G¥jÆC@b3ep`@d8uý3{Ã(K €ä„×_ßÿ“{b!‡Ž ˆqýþ…?ùb@*ˆ-Šå’áñµyA““ï^0‰È÷d¨m¨¢]»ó¦èÔ¦ï z4T†<'{Ï¡CØBÃ""üZDêNŠÒ@m·¡îР@ ï”¶¨wÆÁ=è>ùœ)Èx°óç,7„D„šPí,[Î]/~(%Tv´÷MÑÞö7b= ÖíêÐDDe¨Di¸€þð©åéî Eµ*† ¦cBë< wO€¨¬#JJ±<¤:SìÛn*‡Î¶]‹t¾ZmÌtw"'iØZ­œ®oP:Ã^|Jøà5âœr‘†v!t/É*¸rÚtâ1³ û wnböÝrŒn™nÂbÜùäð¦CŽþEŒµîý ².@Ž©Ê5+*ñUÃ>û—Ž£øNA£$EF¸#ÀãìŸÈÍZ¶-€ eù\}¬¨·ëâ ,ô«%öOä`©Ç³^JíÕAÃ@ÃŽ²í̬¡Ò1hŠìø7E‰èš”£ÿY¿X7!t÷´qÓÐcuôJÛ•ScÙÖø¸äUì¼kuÛ€ÀKÀêÞ 3ªî̶3½!õÈ1`ÅÊÒW Ô†ØGªmy~o¨>¢ÔÞ§½í+»f–tÃRD<#ô­—¢§*–:çRBì˜>w½uxÛ—“á)Ï6¾ëõ¼d鉈—$>bz4Ma:9=_-Ç蕎 } Ø…€ð‹Y¹Y¸^à ÁœŽfC cCO«Ž! |™âÒË¡òƒ£§'§Z²q€xÆ1Ÿ„‘@ S{úa<;ë^ 3Õ)O|C>>pßCÆ#ö¯½‹¼h ÷]xÊ…Úadþòú‡Å݇¸‚e«^$ÐÊïG‘ÓSŒó=Ÿg½ø5Àëÿ©0.ú endstream endobj 477 0 obj 2240 endobj 480 0 obj <> stream xÚ•YíŽÛ¸ýï§ H7A®(êsý“f³-°[4;SÅÎ¢ÐØôXYrDi<~¥þèôéz.e{tikÚED^^’‡÷ž{.ˆÛÝ,· üñ~?ÌÞßξý•Ê0·«™~)‘†" bªTÜnf¯#Ê7·¿†UH¥¹¸1]WÖ¢[ñ·±u¨hͬ‹¶Ø˜Î´Ì. ešÄÌΊ¢ß?ʹΤ"ff}W6µÛEA(3klw[n Ù|ûQãÞ‰“,9;ñ§4•Z±áFØ­Y”«½;íöx+vkS‹}Ó‹;Y˜È aŠº]# 3‹c©cfÆN&äÛ¤sQˆ¯½i÷–›mµ½5b8däR'JÆ)óð‰f^_Û®iÍÝëESÛNÜ|úñ¦kq— ¬œd2K‡yÀ¡7Á\ü"¥œ ožp£Jýz÷æ2ÚšÐy“ìæ4&ãËÝ®K+ºýÖˆf%6}Õ•Û ßþ}ëˆÍzäã©T97mÕKQTÖ»‰(Neœ1Û§ÒvV¬šö2´OœÈ,:‡µ¬ï^O¡’ŒÍ›OÜœJõ%ÿ¸êißa³9¢¨—îÃ$’°º°‚yr16½ŠFPzS¥ø—‹Žÿ .ÚÖØmS/-E;%Ë¿[DÊöRþÇ:–?æÜÀ(:™nÁÃ&KAÌäãá\Ë,cÃHÓM±?¥r¿¥=†ñ(Ÿ¥øÈ0J%ò†ùh½NB©ø.ž ¤¥¹>"ŸÉØ…¼Org|Cã°ÿÙXĹ~âC‚ËC–^}(ëÚ´â禪ìÕ\\•ÙŒÿÞ¶åÂ\MÝVŒF%nÅ]Ù­ÝÍ`ò¶*À'›l[–^ ì¬s6ó±\dÏ}ùNɈ›ùTˆÇãÆ#Ë( º[4}µ¤ý,ûÅK8ÆÅ© ‡©Ì¢w¯ “¹pˆÜ½«¶ÙÀ¸øBTÝAÃÀ—C:[¤Ù’ .§°(;;#–å²þ†ák êÏ@Ü÷‡zT:ÊZÔýÆ`£¢i—<5¨æEš9ï¾€„Ò zÍ‘x\¯JS-Õ\¼RÃgx ’WáµûX—Wú+~(ºID¢ñw´+«JÜ›E³AUÚâpeή›¶«ö œ5™OV¸¬E¢DË$?j}Q‹Œmij*(y˜Qiá3Ë‹:$²bv– Þé„DÔe(t.#‚Ã˧Y¬‹º´Ô›Š§ nKÇ s°³NF€¬éÄÒ¬Ø:IÈWtç=…“`I§7žuÕëUÝ$Åñ"fÆT§ªˆ`‹ÕQX[>ÔÐ"¼è" Âäliª£\:Ѥ€ BxeìCõ@Pµ ’ÙåNcK§ú946QÚ‚H¦)óu(mÇûùçrˆ;Qà¢Ìw ж-öE´?6òÐMcÄÈ€ƒ›) °q`»(jpÌ ÷y8ÿˆ/ x÷{¯FFTM.N5d(jÌ}?uCuh(8gý¢~%¶t…æ;oa:â}§f_ Ärå9¹˜N:FÛ‘ é÷¾AZX™ò”X,p´OSr|Î=Vjê9:ƒ±yÓ~y¿X‹ªüÂr.P2Í™­zûö^Ý(1™‘=K^ÄÒllãrwÕ× wWÏI|Úöµ(WŽ.A¡¢ægþìyŽÙKI¦C4ñaÞP t"d6}VP½s·2…âÌ%šÚ‰ð‰lÓȶ˜9uÙ6¡P“3k'()ÖlÜØ”‰.h‰²8¶ã-c€–‘û9vŒfÝ@’ jzbPð:wÒNhÈ‘ÀCmàÒ¿8k?'°òÑnØxW|áå+'Y5¶3tu};ÎuRî¸/Öó<¥H¹ç‹Å$ððø© KqÑó þ êD1þܶ׸’÷•~Ý"຾~ëmç¡æÉÉ…¡ñô}¨™ÉÓ¶*åD·¡Ð·x.| MäI¦ÑÉ꯬vgP©)ß@²ÒvÍEa$s4©cû=ÉG(¿{0ãò¢ŽÝñ¢ÉÀÛ`±?RãokUŽ+ñ¶kãT”¢­JŽR”åj›Á [D:Eclñ™µuèË㈘Aâšå%F¢êhˆCœñ¸ ׎ 1Öúü¬²Dæl®*AÙ$ }0b]ð W2O˜9OjBw'ÖåUÜá®ìœöE@7\økœ3ø)@'º÷}ýüÆr÷æÜwšI•Å“¾Cß·Œ£7šïĤV ¡T‡Ï!å< U 8H”Uã·”¤V#æaG–vRxS/èØ<ÂgB¾¡8pÛž5 È÷Nô\ZûÆs:ò–J¯9=êŽ }2¸#”…"W¡;iÍßù†ä(*•Aœý.Ïn®)f&Ã$Á?C~à„JGrÆù#èkøÉ5ш1žû!Š»{RŸÞx ú†_Xµ‚g{â÷¡À"éx\ÌkŸŽ¥Rc‹æµ¨^¥µ=t(ÅÙè¡ûÙeí‰vtuêIÛÞƒ纬'Η>O¢àŒ\íž·*‰LÔØÀ©ÉïoOx§"Çb±™¹§lú>~f¢šÅQà}Âàô­ñ9ØÒ×z¶¢ÿ¼{N.謈žÔÜYp¶ôxå÷sü ·Øa ÿ‡Ó—¢­ìßÞê!=K1ÆS™ ©óÓþæÓoߊGä± Äß-’⧢Ѽwƒƒ€öEèöóËãŸf_gôI#iN»MT8ú Ü6‹ãÏÏÇ9ëÙgQÃ׫?Å endstream endobj 481 0 obj 2359 endobj 484 0 obj <> stream xÚ¥WÛŽÛ6}÷W ö¥ â0âM— ú’"i 4@Ó¸(Ц(h™¶••%G”ÖñOõ;¤Ö^ ×›¼^Pæá™áÜ•Àâ0K`Qâ¿ñ»™½ZÌ^¼‘ÀñÇõŒC‚™€Œs–f°ØÍž|hw¶æéâÓÀ“”iº%Ûø»Ì¦Û–Ö6ÐÛݾ·+¨š¾…ÁUÍúmå`gË­i*·ãÀÀaJ&½,9%3GÀãÎö`êÚ5rØ@]›ÞÂÞtfg{Û9ƒdŸÛ¯=ã‹7 r¦£›¦¹`¼Ð9`Ù‰êï•]›¡îÝŸW‡­é¯þ‚ïáê­Ù-‡nc;x54îêåTUÏ–qVé±ÙήG¾ ÷²¤œeEöu–ue럲@L£9ÓEþ?hÄH³ïªÒ^àQèÏ¢£¡o;ûÞ“ýj2@gdz#¿ó»Ÿ||úr4ø…ÈJyÁŠl´ÐÂ;¿4 õ8çše9¶ÝÍ–$sVpz¨ðÏÁ(;dó4eŠÊoÚVÖU›ƒ²o/ë,DæpzŽÁO ¬§ê…QZ)û9*ôe<†9¸iZ‚)˨¼Cã#ž”"agD`UöíºjY}ì·…²ÝíÚmì,#nUZ1Aí÷ÙO&©í‡ 3Î[mcû8H’ìþNÇÝÞô[Z24ËA¡’k8"+*‰Q4¹¼Ã›øÚPWs|ÙŽŽõb£ÊP0™JŒ<ˆî Ä2¯,¬ZëâÅs&©Ê(¨ì+’&!‘*§”`)½‘EÃwvpLµ5¨¾wB»Žl¥ }/x×,7,Å|júU•usH(<¡DJ%)"°Š`àN1cÍ}wüðþçgÏæ`šÕ]ÊÔÕ 1m†¦-ÈQ7 ÂÞÜPKbÜs DJ‡fˆmUPu#[¢­3JÓl¬¼9yTOtŠé)d8£˜b4èÆ%ÅÀë®#Q0HÛÁ[4ÁG˘V’ àlk<â|ŸìÐé£Ò°ªV!fÝÞ–ÕúšUäll XšÖKø”ý Ù–’åétÛ–C?öQ;ÖààTÿÔYÌ£ÆïM$®B©yž Ó„¦7’ÜW„S]¤¿HY’äSÌmlè\“}땨: 8)˜ÔjŠ3õ`]èæ·•SŸŽJwèÑ„>´ ëë í²Ã¤Hc‚ùÄdíò“-û±ºõÛŽ”c…Q99zÀ±â•YýBëeŠÕ€Þ ­þC;`ü!4“ØêX`y~Š£0 mÍ~o›1éCwÜøQ' Ïøôø4Dcú Ãg"?±Ü1ao[‘¨Eõ²…%Ö Œ¨ ¿àù×מÏ7öËöUyŸÇ%E'ØÖ¦‹ó•¹LåËý­3ÂJ¦“ô›g •bEL²Gg xBsjƒàÑâK^®ÕýDz[AG íP¯Ä&—šiŠ;<–BJ3‘(ñðc³ŒOá$_ßâ|ú\–%2ÅRIÕ #ï#ÉÉ“î[Ò¹vþcW,ö†ÐgìOahh»#-H™¢¦¸ù˜]–PbÃ!°/¥Ý‡$rÛ`ó&J»‚ z€8ÁãT?|UXÚ®Ú—4<4apñv¥2 lMùe%ñB1³Ôñ:böm~ßµKãgCu»©J°]‡}«jÆY ·7 ÁÔ¯gºžã°ÜÍ»€_Ÿ–9Ô3­’h‰€óZârÄúÕv¶ö¯œ÷œouLˆ±{ó¢§’3ÞO L®;ñÃy…oPz”}^GÒvÑ+L†w÷jy7Á­d¸¿9tÞ;Ó ¦¾SÍŸ{>$^/o Ï_ß?û<óK¿“^ÛÃå~•5GÄéùq:³ý rý Yëó¼ endstream endobj 485 0 obj 1399 endobj 488 0 obj <> stream xÚ}YínÛÆý¯§X ?êÀʆËop¥×€í´µ‚Þ ŠZYl)RáGd݇Ê3Þ3K‘æP’[$¥½3³3³3gÎn-1ßM,1Oðׯøó4ù8Ÿ¼ÿl Û’ã‹ùj¢„…•lX¶´}%æ›É…'ßÎÿîÃPº¾ÇÄÃV'iœ¥ÿ ªÐ‘* ˜¤^ЇßoÅC]6IÝ”º"…w–ôT@î½ÿìe\ñ_ahôçký²Ùؘx¼xÀ/ߊ•ŽÍo2]Wb_4BÇUšíÅRÿ̵¸¾¼U×q-6q¬ñ©Åª(7¢X‘ZI‹y7ôÉw{Ÿêx‘éJŠaìQ„e&uU㛢ªEÕluù“‚€ƒC5Û²¤Åõ~ðuWF[×ÙTĹ0‹u\‰Xlôf¡KÁ4Û•NÄ4ã2%ÏER”ȶȗiþ$ê¹B&~êl)ÒÜ8MY6QÊÃqYv0Nˆg÷†?6õÀ§8« ãXÅBUA(íÐcŠ?ŽÊÇáºDÊ6º^Ëj* d1®‹²¢Ý–b×]ì•h*TÇb/îöpâòò—¡e×ñ‘ňY®k­ËÞR ¶e1Ôð,GúnÈM—Z䨳“õáZ½àªÉ“:-`:­÷,BÛF+1٩حSdGÇÂÓHÊÖ@v”-xÆ–QæøÒJ$ëx‹àX%¹‘©´ërŠA…2ðÚµol-”Š/£ÁÚÎ2G®)ý¦–¨àã¤,ªvÙYzÿÙõ¹X2Œ˜ÑªúžUrÝÊqÁQöXžw £(&0§\¤•q«È³¾8ÄZÇK¤+/j7u(H“8Ëöã„X"»µ•æIÖ,РjítdÊC3ÝÍ‘]^ž Ͷ‚‘ÌVJrg¾ñå@:|î­c&ãàô}&ÃqÆudÄ}ÐÔ‡¨EZÓI&Å’mÙdˆ¢ëZÀ0aÙ† »$c Ü=‚À;ÌÅjP •ÃeR÷WR²>=²‰ŒG‘mäouýËhz)Å$LñÞ!Ï‘riL”wœ«dÄ7Ó‡ù‘eŸ7m.¹£öèaõCW9¡ôƱ·Íp„Òõ³«ùL̯>ÞÎ0¿ŠäL¼Qz 8¯Ú#ø'­õF\ÿçêÇ ÇÂ`¼ÿ2÷_oo§c=L¥¢^/o6âãͯ7÷ó³*näÈC8¤±ÓéÓºŸ¾|%÷Î*Õ[õZÛ2M´ø4»¾¹»º}¼ð§ö+Nº#=ûeË eJÊYßA78½ÊRWI™n ÅÝìÓÍ×»ùì¿­êãÛ³åÒYŸ—EÔP‚¹×–'1ãÇsÖ`³)‘¥ÿŒÁË‹–µ¨ŠWªÄºvÛ!/ ò—ÿxaÊd*ÔTøG©!^fû}j ,m·> 븜šê«9‘ÝÎÿSj‹ô stJås¤*Úái½eÑ ÓC©JúvtFlpƒ™R:Rõ•t3šÈÑ´-¢#5ë¨c½û&ËþŬlô2m6µ~®ÿ=–W[N†Û:Ĉ6yŠø÷ÉslPÆ`0¨W·ôTŸ-€ñÐr˜®9ðÓ…¬üHz`1Cñ—úì¨GË!dÊŒ8à °’"k6ùt0á«x"„¿FØ%¬uÜQdúeÇž8™[É04»=}Œ©¨ÈPóα³rAC×ér©sƧbÁ:,ÄhsÙNMM´kÇB{p˜P‘¨$ÊËcµx¢Aiú#ñï„?çlܘҎ¯‡4‡ëcnfGÜÉé6.qàxb¡q\zÀáéd:"†{yà^³9‘7gÈëHIiêaŸÉ½ßê6»Ë Ýrsäg]À=ZG3Â=AKè"è±å8kúà éà%¨<ÀÁ4þ\§À[÷IÑ`¢,Û,† ò†y]™Ê776Ô¶¨ô¡ü+ Þ¬@ýãœñ§ªA !3ްÕm{%Mcq–ïI7`ŠÏñf›i Å”[?­8M´l-4BAâ;šÖñ_ v©Wkß“¸} Õ»Ûzšßvè2Ñ =¨Ã`pŠR¹ž´Q*à™ÏÖ,î/±„¿ c&„L¶éƒ«Ú'‚>ÀÁ‘Bb ßóÄ;p:`Öž·ß¶–I}“Ýd­7±×À\ÿJþzAO³†a™íÐ=ä g[hd9Š FÉ8ÇŒòpµ*™–—'o½¶ 2EL¼à Ƥ©e¸ðsÝö2Ü€˜®´qÛ%U½Dm×%†F*î šÀt9†Ë ’>µð0)¸DâœC +mËe‚{ð¥ü©{ÀÅùÄä ¢ïäy;z˜çl9ΓxÙáPl¦Û€ò ‘Cú.7ì‘âfÔ–h›À ™`Õ?¢Íq4ñaä‘äÖ›ú€šIŒŠ†‰ÒP¤t÷b)õÑ!×¥q‰¶Ñß›”¿bx`•ºDä)]ñiª;²¦©LºÞiÝŽz7®VW1¥bZ%O=ý¨Hõâ4šŸtnž­èY1>LxhÞEÐK¯°z僠Èëp ?^Ü_ÝͦâúËÝo×_¾Þϧâa6?|Í¿ý6Û¿™Ïîð)¥ùÍ›ö7o^¹ã(z j9ön܈7Ý(?â]¼5¨U™úáa”«Ý,<Á7¦Añœy Ü‘lïñšv..Y4tviµ¦¾nóuÎ yCË”¨çÓn¸ÑX¸sƒêa4÷•Ê ½WÁ¿ÓﱊHq4=d­}Ë<í2½™¢}Jt¨Ïçž‘ÆÂ­Ë¨ÁÑ[MC÷ØŽkMï©ÊœÀ˜˜*z2rúâ?GDW¡¡h_Ég&ëŽ^K’O 3îšãLžZ6ÎŒ—ãÁé…C§fPÄU׎é…îËsN,ÜÀœó‹2Æh¥ÍµÅän6ïe-ñ½äy"ÙLÌ2}wŸ¡È&žk>!Ð;øleék=YÑÿàéýïòL£’®}´õpç3 ûv·Åø‡þK+ÏZùÃ÷hwzO´p‚²á·Oêÿp$ÖÄ× rçMœ\#½w­‹ü¢ìöóëë¿O¾Oè“V‚ˆ¼õ•=ø²Œ›­D÷ó‹D§³žü)rØú?iË endstream endobj 489 0 obj 2401 endobj 496 0 obj <> stream xÚYÛŽÛF}×W4¼öÀšûÆ‹íxñn€ØÙÀ  `p¨‰kŠ”y™±òIyÈä붪›’X-ifǰMMW»««NÕ)Elñ0‹Ø¢€þW³³ïÞGL$\¦lq7,‚?‚%’%‘áR$l±™½€'~µøïaYDŠÊ°OŸ~ýù{×l¶y[vMÍòzÉ~ªË¾Ì«ò÷¼/›m|÷^~ð²8xigh±¶Ì ê@0‹xdˆl÷µú\´6ïíç¿7.b*±M^´ Ë—ËŽmìæÖ¶ìn¨ Ü`ç6Ýlm›÷MÛ±¾a6/ÖãÙúuÞ³¼ªš©/´Ž¸JÈ Ø®P·p଩íT§BFg/¥¤Ž\E¬?”Fèf¿y5:Z¨,t4Ë^@7X›;FÜ!4à¾ÔDÃR@+AvÞ!l)°ÁÂ,¹\)d'RùŽJd<•TbÎrŸì®iýÙË~Ñ?Xö ¢SE 4ã£/Î…Ñ»—/!ƒ–Ö§Þªœš2 ¼ bêž  qê¾(¼oq4ßXÛª¢ª;>Ø"욟$0jÒ”'éÿ‡lp3Sq¶ ‚hà‚*›Ã³ ×)#ɪƒå¼ÚÖÖ=+Ô7ðäº «óÀ¢d¡LÍ<]éU–…J¬Èk(¥Ì+B¢úPöëfèƒòb’ø YÛ˜°Eà¡Àb¼Ú¶È(º"ç&$Qz3…9‘>F#™ÊvÝ5ô%õµß1¢ÛÜ¡ áVÊÞEÄâgè\VM 'ßø.§hàÊÚb›ƒ×B•mXs–‡W÷€¾PÔhˆ øÀ$Éd•àùçp¬c wMQB4„˜ ‘¼§ë))Y·“Ó¼Ú;>…†)}¨m2ÉF¯/_½È}ãÜÿvL«×Œ±Ð‘âQêt¾¶ÝqPhmYß¼ð*7W¯ A^§b ¤¡goÞŒæyÕ<Øöóm3ÔËñ7/žý3ßÜíʶÏn®n®®ßb€:¶^V¯/öÌ:zjÒc]tP´…’Þ«35V¿WfÜ…ßÒ MÔý©Õô¤.WظE—œ¢‰ôІx*2jŽv´*VØL%8]GrAÖÿ  eFËô€3 í’all9Û_ê\D¬9U_¤ŠLÀó0+u­,þôã⤕РÐ+ßá‰:|MÝÔ¿Û¶™c:;âÙ]n…ࡊæw~þèè6•p•ç¶ýÍ‹›« ðQá ¡›úâ:Hð=­R(§Dùž6]§¶¡"»œDŠÌ‘^ XF°ôÁúý6&Ä&»¨( Í|¼Ðª ƒ„˜Ý·rÍ]HhÞ“Ê.$ψ^Ó†1‹žÙŸ™¬9 3]ö$h„óf€F¿¤_ùf2 @Þœ¤D:8>p,òvʤúŸÙ«JÚ CFÊ80Õ5ஂèΰ±§‰8G®$ç£Tjx"Ç¢?›¨n·Úha·s‡n'j‰áFšój·%`Z?ÇH›³ýOhpGÁùÎX6ƒ«°¶\­ÁЉ²1\È䂲-ÊM^ͤ {FYï±åD<Å×ýêAŸÈìTïãPUoˆ•]–æ·ßú·s¶´]Ñ–[ÌdS›À”Ç2­ÁZÕôËfõlÎŒ r <ñÃù2%±&þP@þ¼J7y}Äë „Qö¯ˆ 15÷Ú4ÆcàÇF9hÆVó2 W"Å®uªöHO¦ô‰ô¡­„¼Î)›ŽxœfDúž @¸**ÉͺrSVyKÜs~÷^EôÔT.ßL`{\itÌçÒ³ó¹©ìSü>Ðp¥ëÂd†ŒH?QT6 AÀàÅk"Wм‘7Óq´j,Å.T0pÞTw‡LîÍ=9´5Žm8gÁÁ¤"úMPÒÃKÐñAt’)c‹V.¡ –E^MúŸªì°F>¬KhÙ±‘¨èL C&ÓÄðŠ®C“‘u°í$Ð_JüvÿÔÒh¿ó(&ëPÔ6¢ŽOvØGàN‰‹ÀhLϽcËÆ"a±Àjk—ˆ#h ô•{œøÊµ nç”C«R¢Ãyøïì§žŽ Åà›ÊbƒÐ»áZMýˆüHÒ8ê“e[—H˜ÇÃAÉÁÇ.ßA…«]c·Te °FÆDÊN&q&xÝ7öý÷#–ÇÂSœQ&éeàbãSµ`è8-1ï'ŽÁŒt$¤þ’ñü¤·{Î Ãkƒ“-jú Ò‘>Q Pœ‰Æ‚HŒ ¨›òûé¦=ô#Û¦ÍÛÝyÏ4à ;1OVl¿§¢Çï€Ø/÷´îÎûªJÃÑRædÊ+(/ãƱ `Е4hŽ.nÛê@aðaûIÇqI£ùH:Ý„êØÇ è0ò¼LZÎ ÀŽdÆŽ(ï‚‘¤ïÈ÷®8ºo›wØÀl¿@ÐRhbÿñZ¢´”Ò1pžî†íBºó¨Å–ö”î-‰ipñs:!È}§Æ–Â!…÷l(}é/ʹ£¿X¢ àÛTù‰ôqªÑ(Cf1À"ê‚ÕæË`@ ¬SáÅHq7 07ØþÝàJÌ=&œLÕl `Ýtå›/‹“©s£¤(­ã ¿™ªvÌæ]i}5Ê:zÖȃ襸tÅ*IçßÀ¢„¬ão÷•"ögƒù4Õ2`SÔPîëÂñ»ÅGˆNå)ñ#ñú첯h~‰_yˆÿqq0±kàưb3õ{Þ?¦¬š pxVðèeñi=»ó_BŸät´FÃæÝÞµ:ÙÄt‰–lÿÀåþeá‡Ã“Àb\yùñyÜÇ‘q(è© ¬kölîÃÂìåKv¯8¬±ß:¸·y=~¡[C½ko Â}¡Ÿùüøú¯³¯3|Ä•$ÃÝÆBNž"·M/±ÿ|”Øë¬gÿf5Øúw˜ý endstream endobj 497 0 obj 2609 endobj 501 0 obj <> stream xÚ•WÁrÛ6½ë+u¦µk@7‡$NzH®ÕÉ¡êdh ¶Ø’M@JÜL?ÈÙ(R&H%©lË °»Ø}x» 4ÿ4!hžÂ×[ø»›¼œOÎßD#Ì$šßN("ðCQÄPDBÌh„æÅä(Ä>žÿÕ-SB0 ú2è7eêLõÄ .{bÛ¬¼CËÄ$VðüM¶¼…$8&ÜI¿Sæ§§¥Ä”ö$4ª6]__½»Ff6ZaÔó!"Ø3:_eÁoã÷<`6¶¨§ >'E•+}®õ}®)N«jÜû€r_wÖî"qè*(wû!+Ó|³ThšË<+^MŸ†aÅCŠ9‹=ñªÎJcñQà³À“×fþ="Ë–p¢=á‹l­M­’â…/M gúb«R³®}Ù0&àEèd7Úž~™JWIª6Ë羸ˆÁ‘†+™¿ưqY‘dåÂÊ ¤¾KOQºJjô3Œ·ü¹8öyŒyЀ÷Å_ bÌšÓBð9?Go•q½I´BIš* 4KjðÛ¨Z£Ûz] t]I¹Dö°|ƒ,Æ„ÓÎbñ¼©ªÙ¬%ÒlöªÑ~Êhwâ‹£&Áâx€ •XrÖÙÌnÑâèY«zŒA ¹tòöS+³©KD}Û<–˜ó=ÿúë‘„xD·nêô|UÛQÏ øR¸y¦WȬ€uYw²uiSØÎtàkUoU}«aä ËS«ȯöÖÀðâhýåÍGKÂSß,‡¸g¶ý´iÙ8´8ZŸvsPt¼™*ÑÚÎ Ï‘³“ú€4Ås lCzs£ë[‡„ËWdÑRÊ7E©$À@êÌå¾Kc ðý&S~z±À<ä¾õä&Ë3ó`Éáb€äà±±ísù¼ ¤À, ÇysµQÀë{÷ý‹õ»ñâhªUˆ¡Ì¨ât©tZg•£— Æm7t 8hÑÛ«þ©¼€tÔ%ÂñõÓÅy]à¶àÖÈf<àb¸×™®òäÁÁb½×¾Z¹ïbº†vzq¦Z%[5›Ú'U.óÁž,ÄDÐÃÎf°gXªef  ­RŠ>Q-s ¢€ßrðFÝÙ€!ZÐGÏšIð¤™:9ÉÌHÝ ÇBƒnãz\,Ì£dæì…ÅÄwŒÅsÁ\ÁµJONuü)7y>â“0Ç‹J 6˜ž¶N=µo×ÇÓèÅÀ¦_¸™äè cÇÊì¥MôkëÀ.£ø`Ã`A€Ù~Û41é B´Áì{™,]Îýˆ |ŽÇL¢A¥üJ${R¶¹ªêz]ûÌf”aõé•‚¤Côj¯7C ¿küi•ˬƒ¸†E4ÚP쥮 óèpG¥’@áw Ý ú2€‰F ``ºI–¶”íLèçHá;ŒÌC¥P‘éÂm[­«Mž[žwýÀß.ª2ŠÆÁÜ;ø-Dá¿o®´"’£¹1…D­w]qÙ4/ý£öæ÷‹C»póåÑx#ŸBó„&ªo®™üh'Q€3ù `I3®ÐR²o1àòsª\)8túð¶"ä ¿²ÖÎ’¼éÆ6WÖÐjôþÚâÉ R­Y?oà²Î%?éËÿ—0ðÄdø´.ç89Ž¡3§ÅĽ¹Øq;”(Ÿ„œxCèÆ Y;ZMn›ÛÁë¡ð"€Yƒ:ç'žúÁe»À¥a·™ÿÐ(ŽÂÆ‹n¼ó£{±„¢IHëpym’©=Žm/ØýnoQïÝ-jçšÕ;k ë—Å õž¿¾~5¹ŸØ¡]‰bë­ ìɈ87‰öy/Ñê¬&P ¶þØ; ‹ endstream endobj 502 0 obj 1462 endobj 505 0 obj <> stream xÚ}Y[oܸ~Ÿ_Án6AÆ )êš.¤è¦í¢[4°‹ FCϨ«ËD”<ž‡þ ö!}ï¯ëGJëpÆq[c}<<<×ïЂÝW‚ÝøöGüß­~·zû1d)ØÝÃJ2’%KdÀÓ,dwõêÃ׿^ßýsù>Îfñù}§û¡k˜øKd‰Ã9o?*&…·[ ž&ãnÒf¥aý^3ӷů|Ïö:ßêŽ FoÙæ„WyÏôr§@)NÅ<åõ¡Òk–7n‰!p%".c‚$ï¥àB’÷ºË+ÖB©Î°®ZO$)üøn<ì5ÛÆ¡äQ–:Üo˦¨†­f?Ô'ó¥zó†ïßû&T’«,óàhs,%P݂߾ew0âC[Uí±lvÖªE^Uö1gº;±¢µVzbu^t-;îËbÏŽeU±¢Óy¯}áÁ,ü;ÓwCÑ^ún=-ßç£ïj]oà³Ç¼+óM¥Í;OX”  5 ó_¦‚‡"œwb §ý\ì󎕽®ý ‹Á=£9ç>¾"¦k½-‡º×OýçfÀ¡·Ú]yè˶¹Ø"ÌpôämU†£¤³ðC5¿ß·[˜¢EôVvhC“:ÛUn {èÚŽøùtûé/¬kœ±[í¾ü ƒ5²Yþ-ð·ˆèÂ*jXÙ8™HŽ~lÄéCÛ±‡¡³ÑŠCõy‰PñeÊŒcœ8Û:Žï_9o®}´ÈòœîrÍâ5›¬Öyccª}°Š ŸWƒ6.ÜZ„’öRGoƒ0Ky*ƒó.‡wïfǯç}½Â4å±T×—mÊ]ÙôkÖ —ë’^_·m‡-G]îöýÅÒ8…á¢o-uÑ´f‡®,ôÅò(…%ã–Ãkfþà~<}^šæß=rØè£Söå£þ¿A˜À’Éõ ¼ˆ_/Cþþõ‹õ9”1êåxæ»=üJ"4‹y”ÌX|a€v;zªåy­Y;ô‡¡g(sy¤{¡â •eJ+Kòâp¸®ŸBlzk™Dj´²Å™ nÇ bhköNCIþÀn"ìÇñpÿ[âÃ8â(.Küýë5Û BNfK”½M c7{ƶE/-/Â3|pÔ±|ÂUD07q )‚4:‰6O_k”Á¼ÏÙXÛ‡Þ;äè}•v}ÃzÒ¾ß ™)öºÎ‘ܦGƒ¶ùïjÙ›7ßc">D“] £Õ‡Š@Žô¨aò øÖYC§/Ÿ5D•V‰Øn4òÔ?4Ÿ<¢l[!Q`>óú?#”+Ó:^=»ŒCž¼\dH\Jô®Œ¨“ˆ!yÿTh—°†0 ©l.q® è®Ã÷=hóßÂWÛÖþ‚ò"§8¢ÚPbcá©Ûúý(Î>R«KžIº ™!E7a‰È3Ås!Ùuy=§I_8|a^S•¿.Å‚€†1è±M­]0“0” ‘2ˆšæ‹Jx–P€îö“EÇ"m'%§hß©¢‹Î>„´iHÐH˜8%ðIxÂÄòŠJ}`Ô[*æAìk{Bc³¥C), …wr[žPƒjvÁÚ§'!¸¯ÏźÓ0Áp`Ç%0B€fž¾m÷+Ç¢„ïPtÙU •Ý÷  þ‹æ›´Ì¢h·Úç6*DUãâ¿¶=ºð825Ë1\´Mub`c6ø+Új¨›‘”ÙÀ¸Þ ”¼a¹ƒ#L/´&uf}îȵ~Œi+%¸á¬.äwséíhÕŒ0ÆH²ìèø`>'J&­]ñ$Tfç¾¥‘P.Ÿ°}÷Ž„N¦xjÓfB·l»Üißs†ÒW#$Q1iºÉ,äI˜Ñ•ìÔ¶é£<<|-JÝôŽç$êӌˈ.|¤iJ<Á_/æ¶8QfhÜàøUWàãQ§‹¶ÛÚ3|O[ŒBÞ¥Ô2Lç¦D¼tÚr§qþÜê¯Í2n…oÚ 8 @| £û±8|c* PöâØ'är"äŸG)>› \u›y9X¹¸@$Àã™X[w5»‘K|o $šÕ4/¼=íý60þ\`–§<ý2 ¸p®ºlî_}ÿúŒãó†AM÷Å4®9”Ìku.®ÓÑÀŽçáÈú§®k‡ÿÒÆ©""Á>•H=–oÀBçyÌ&–óÌÔòí~ õ *(¦»’À/&IR]Oxkí,UdW›*G?ÒÓ8# TBÌŒ¶ÐyíK…P°>(Z@辿\\QÄ’ŠÙ¬Qþ0”»ÆHš hQL ˆlhlùÚŽ<6Ñ, ;äŒDÀá¤j5ÊÁ‹©$1žmäæKVåOq3 ÜiÓ³miƒ”Yi<#СÇaÌ ¤¨ž‡Tê+Ô!©]…ÚñÓ`Ü“³ -Ê üR(²âhÇ^¹µlºÏwÆq„¼÷õ Ñ"SéëgìpÉE<‹ ³D³Õé!~mk®—|2ÏØ}ô|'ç‘»LW.“mºUÏlñ*Ú¦ÏK7å}ÒŒuÛR¥T’9s-6ònê&ö(%ˆ'xj6¾Sƒ3zÐgYñÁšïŠí#!f ÔÚÞ7C>Û×2w7KÛÒ°Õ´„d¶¿.ñ9,bØq¯GuùN_cp˜ÁAŠ– {¶+ Ä^HEB»=5y­=V™Ø®OO‡ª,,´'Š”gTw=ㄎN]0Aù²bj$ÔT³sË~ÏjúÔnm«ÔÛ©ºK$¥yuël!Kí,á™BÁÂñ.w¼a7·p÷•;©ç=®.3Eö°îóÌe<ˆBвöáìþÕ?t׺)ªj7%ö§ƒµÙ'L1…ƒ^Q F»…›¶­Ö×®Œž« «Nö9è¢üZ\D"dcˆ"‹ìQìyCÂB`„!Ài:sNï{i3ÂDGðOë‹™¶ÔDËt¾W²·Uw4‚…TfYk>òïV_`ŒŸ€>®¬P.1·Ö+†ó‡ju»ú´H}u¤P,öXúMªb¯§”2°Ñ`ým")õ–("–À¡„eóO&((·“4 %%r‰B1vCÞóÕˆ½„Ó@^¯AJe8þb};TqºÜìÑ.X^Õ­í: `áÂbÕ‰Õ%ì~›Žz*Vþ½Í”Nc2¹EµS^œ¦!'±ŽöÚ¡õ‚9KÛ¸ÀÍ`Ú–Um³Cëkt¡É‘Í8¶7-$.û µ>œµÉ *B"zƒ6} G**7LØ“<ŸNwôÞGÚ;0¢œµ¤x¨Ôàu •DÄKÀ‡gÛ:U)èéÔ®Zc®f=2CLHâ÷i¸| †Ú´8Øè|>eÎ ìÆ’ÑˆõÊýAÉ>Ï)ò' …÷ÀùYáqÄÚ§ýêaN±‹Y—EîÖÍjFJ,uH€Ípé´™ÿáü$yZœŸ'=–WÁ2A/Âõ·ÉówK«~>ÿ5ªÙu7£aõ²vbäó·ßrµI0û&ɬ¶± O©9"æÏψyÍ~õ k ëÿT¶WP endstream endobj 506 0 obj 2676 endobj 511 0 obj <> stream xÚ…Xko¹ý®_Áu?¬½+3ó~xÓ¶Þd[ A‘µ‹ ¨Š€š¡¤Iæ¡ gìEÿRú{.G’RZ'NFâåå}ž{8·ü=>Ï<öXÌn¿áw=ûÓãìÅëùX^Í|æáÏÒ€¥¾Ï“ˆ=6³ë¿´¬ézÉŠ®-z9H6ȾQs6l$“7Ûü,å‘›{¿ˆf[K&–)„!Bë'{=ãAf­KV)¨®¡cÛn;Ö‚, ´ñÅëÈq! #¸™*ÔП&i×á09“fÝò£,ÅFUµk&kÆbêvÕõª®¥ïªm„š“VÂjD0ÉsžøZ—hKVKaÅÊóxdÊ<Ù«1bsyòµ—¨Z²ç«¬Kd ¯«ž•re0塵_Œõ 8»ïZK.MyìÓ ä€‡‰eF¯d½3eB˜ç¦ÌœíºÕ2Ö%µê˜F˺0K¸Ÿš[V{ïYɺÕ7’EØhÙóðêÍ«ûGö{ýû_ßšgPPŽqöÿRï{–$Œûv]ùˆléþ Æ¥’Ãå#/wö°‡‡woµ¢½,Ïú#x›ì´ÀKüé¼à ãqhJ}z±¯›gKE¥¦¤NÝÇQ l‰¾[·èþ’»ÑMâƒø{s)󨃌Uù½µœòÜ7—,°«¤šîÇöv¨8²úZT²-,§Ñ0AhîÜ1´"û´ ßç©uü—jYÕÕ°cÙË9ºyu½›ê­Zo¨èì íÌÊJ }µ4F~Æ£ÜT8H˜Ú©A6œ=Tm!ÙÛÒ €rC‡‡M‚µr°¢žgº&N"]ÿÉ‚@µæIÇ–bK¡$S²·#Mx–[Ò½ ͸Ä\Ÿ³FØXà%< M‘¢%u;æž«ºfŸ¼jµ#仫½[n±øX²yÈ=˽¿ÛË9÷-cRDkÕR„O,§‚v`ç¥Ô°=M 71‘´p[Ò YvÃF×ÄY`ã€'©¹Cö‹kµ¸aê(%½«¨Q®Ã™(bªä9ün,ðãH~Rúd/ç:õÆ™4õñÉ`;RÙ8aÖb²bèE¶Ý¸ÞÞ¢ÛJ¤wظQ òÖ²²c!KÌõz `ÙTõ4ªŠh×øfÛw[±¶ -ðx™Û‘»:‚0áIlŠü¢XÝMs˜´·ÒAÔL'ñg£U E ;íâ¡ ,+»®cë¾S á¸%÷â3Ÿ¶ê»F›ÔÕåÜ „TAO±X÷¢QLm4Ä‚Q U;êìüJ·ªu½¬åÀDZ.iM)•³Î/}¡ä…0P?ÐØ8ú¼÷Þï8?ÂÙ#áâ÷2ù¦„"d¤dö8SW8¨Øç±’Ôm[2k)íú0§š†Ž§ P݈~Õ'ŠJ8¤qÌ£ØÜ6Ò­ªJÙOîïlÛÛŽ£a’Ð9oTgvÅ^À£ìÌ. —c1°ü×A½,t8^œ¡‡fÑdšÎ±n¬^¨ ZB¶zÅ­Èu ‚‡ÀWµkÁ-©µä|m+"šs௠| «Q˜›Ç£=* ¢Ìç€tSFÒÜëh¦6”Ä!œ#3eÛKœ6NýST€€¬jà¯=¶2Â.CÐ†Ó $Fi,Ë]Ä'â Í®ì«HÁ‚TK£@¸K£ýЖa¿”ö‘)OóÌÑtƒòq™°Ñ¡ð#‹¦«€ï?þˆDÙzb:¦ ½-ÝùAådH9ó%å”%c]ö¢¶kÒG.1„L!±S”˪ÅÀ´+Da¦Â¡ÊÄcũ腧8£€£¨Çû+ŸrøÈAêE–F$Ah ÌÿÝf°~ÌC/·äŸ¿ì(ª†Ñ˜ªèÖúÙmõE«2}LM'öÎ’tXªži =ˆñ’é"µÅ!øûÛ$ê2O¬ rºÚªJ}®UÀ‹íö²(©³÷îp ÌpCƒæî[ã —õXJvU4e]µ’o® "t.®_¶øh9Pæ/lÀÃì¶åõæ‚,î-˜{¶ð˪ñ“¢ùÙ‘Ö(lK×US êL6E%'SYL÷ë”ImÈ´ÊŸ\ñ$<™Zž¹«;™BF×ãÉ`z®‹9±žý€ç§üsqãn 3ôÞ¼¹k¾i<ÁÏ‹ì79œºI`; 7P/j{ÍŠ®iôe¿²'3)D %©ÔØìP7ÛíÝÝ¡îîî§Ýo°™í3¾¸žü 7gqñR¥ÁQgµb‹ëï[o˜ëT^Óð(O?½ƾe¾«;ÀMÍK££ì¿Ýõð—&Çõ¡ßŸƒ¤©u"ùJUjvð­,tŸïoÞÖ-Gö.y!v¤™¥õÍû“6(^\_s¹ü@Õæ’5âœ^š[j?‡þ› Z\/næÇïÀÅœo¶B)úæù<'+ŽÏ{;N÷«{¸¦Í‹£>_sý coE;Šzoí»xdʼnYŸÿ÷ú»Ùç=ÒJ𓵉Ož6s’8|>IölfïY ]ÿÛ.€ endstream endobj 512 0 obj 2317 endobj 515 0 obj <> stream xÚ•YÛŽÛÈ}Ÿ¯èø!±³š6»Ù¼9F€xáݰƒµ=`ƒCµ$Ú)ó2ZmÊ‹¿1§š¤Ä¢FkÇWJ]]]}êvŠã‰›ý•'n2üó3þ®¯^Ü\=ýɈXâfu¥„‡ßJDZDJË81âf{õX ¿ž>/µY×ZÑn¬øÒÙú …ø`E×Xaû¥ÛÇ·OÄÍRúîÕ?Þ¿|w#–•mÊÿ¶On>±#<-Ã$˜QÛ¶«K‘â¡éŠV4¶•³a¢¥IB¶³·fbÄ_æ›"-½$ž÷ζunï­HË¥ØÕyÙŠªkÝK»mzWX‘Uek˶93$T@)a:ŽM[eŸ?ºÝ·mX(÷þg¾j” ܪ*‹ƒK‹vS5ÃwíaË[ÀPŠâÍíFK ©í—.§0èÛ÷ÓŸ c¤™Å—…(»}é|U6¶f÷óB4Äœ»Þ¤%“ *.wï*&“„2D/›Êì›Þ²âÞ´LâèdW&(Šåý æºÑÈMÈöì oP UWÀˆD.x¸h#ØFpCÕ‰m¾Þ´bÏbÑK¤VL8[é•;šBéæl[¡TŠÙÖC‚ð*<ÝÃ`f0@l×»jÿ0d&1sYQÝ}²Y‹’0g~>rv”ªÊÌÊc~.gÀF5m*¿oÄ†Ë ­éä© !±¬\¼º,Xˆf—ÖäA¶çv™mš¼=P•Ø×¹s/-Uµ“â—¢kG«àGÜ¢ÒÕÓzö¾ŽO÷AÛØ¢I.E¾Ýv‹DL©‘Ð9í&§¹®pÞf»»4ûLçòº'2 c¦”×E‚ZqP1(‡*pÏê¦0¿çw¼F¨ƒ|ÿBØf—醱IÐ4<}Ù¦‰zfÓÆ‚6U«7%„!è'4„LT¡L‚~߬?ßëF™iÜíÞR݇QYA…ÍU,„9GÅÇÀB°M4ñjB|z*pVQuàK­C&ÔˆO(G*–ùŠû ,ä Wh|4A°¼ÕZ¢ÂOÅîù:‚¡=Ÿ~uŒ†÷Lö5¬ªŸ»î¯(mó±Za¾ëV«9·ÒQ MÜ“+)å®ÚuE:L˽ÑT[»©öXïEÓ±?°šeG²#å]ç%9yÁm‘`˜ôõ퓳!øÁ§/‡ã^œ…{ÞzcJ–‰TÊŠˆBÅÓå…(A¥2ÛLe6CÛV¼ÏãuSIÏð£¬x6Ö^Œzkrs?ÍÀ,æ ÛÁT¤º« ñáíår¬"´ºõ[ÅXko¶ClR""mš*ËQ6–¢Î›ÏïW5i´—>˜Ý,îhŤÓ#Å>/Š¡é*Œœ¬¨ÈÜÕ± )æ¤;ŒÌTŽ ZÚÓHê žJ¥ô¶®74G‰7/¸bMýÇc[þ5Ÿ÷ÍÖ‡*R§yÓWQ§~F¢}z§Ä÷ /ðj›6VG»Ð¾®»Úñe|DÑ"²¦ÁÊA†ëÜ‹M·¶ãÈf’9¬A–® Aj%½'êöÃH‚Yã._¯-‡p ¹yñÐ(¨L8nmª~džEnB1‘sĻʙŠT]Aoi-ŸþbÉÎc•[E¾ô‚é24êOn?Q>1éˆ;°k‹¬qå4ÌâX‚ò.Ld·š òͨŸÃ‰†òä´¼§!JШ´ ƒùK:Ï•Ñ ë®¿Õ2oÐòà­=FD;V¶;´“žèßÙÒ~mŸ¹+ý°OWCËYºë Œ38•$ÖȧÖ9~L/Qs·ëcACï‡ÁެgÚ.ÒØO亢÷uU®g±Nï§0§O}àÝذuTg!Òv³]å<5軞àÐMÜå6ð• \÷õŽ3UJý£Êä€kÔ˜ †(f2¶}0 Ô©–1ïƒ=ÓU³1ý\`²8LRô§#²N/rèÕef§ÑrpÞunƒa¤Fq4#/3ª†ãt7¿Q.Ñ&G¶}{áo·à›„YÖ‡(ºÒ*ß MHNe±r®w<æåÍQÆ×ʽ;ȶWîÇô<>Æ¢¸ Œ7{„ÀñÙÇc/KO›«ýLëôʾqì 0ÑÙÑÓ“#£Åø€Þ61ÿp|‚‚þìãóìtb‹jOØÂ~ß(Üûk⟠½sNË.-Óhßu¯À#»Á>ÿþúÛ«/WôH+QBÖ†(§'Ï™ÙKŒŸOãžÍÕQB×ÿ·¡ endstream endobj 516 0 obj 2544 endobj 520 0 obj <> stream xÚ•XY7~ׯàzdf£¡›W'œE€p<‹mLÿ ~—Ýf$½®ñ{´€üò Ö’µ.‚ëI`¥òo6õª)ù­5¡M*Éi¢"›Æ.vAží·Ën©`IB•é6MEî ¨!Û¾ Þ±'Näe*|¡mKZíHÌw$¾š% ;ÏkÎr*»B¶rAYæoÒtÝzºs3:ðãfIþèË„¦¥eDCPÈX¯ %è.¤½[Ö?C蔜SÎávN³Üßž‚ûJ½¬ëšÉ\Ñ,0¯7À€ç%â¸ej[›>¨\’ªÌß¿q4+;ð Ð<̦ʄ˗’´ÈýmTú•e±@ÅYŽ4Þ•¤Ð@. š1:ŸÃ™*Ðw‡‰Žé´ªKH£›úßÀÂ%„Ïf™å%:ÃÀ¹ôµuŠPâ ²¢;VP£“@Ø:N 3ú;˜á(ïˆ6»š]_¨Ì<ñáSâ`{ì… Hi.™/ãÊ–­ä›û›^· WKŸ"ãG£+»Ñ;žtûjƒÈí²kBüî¢*Ïñ¢þõ  ìÎÆÄYt”ü™IšaJÛ c³K‹ÔEÍ0¥JûÆeë¢Ñø? =ÃeRF@QÈÃÓ_ê¦Ü4zÄÀw~Ï[°k{Íüϲ6-Ôƒ5:¿îÚC½5aµä4O‚žJc*ð*Â’Ø_¢ØÃÐÓq¡f‰ÂÂy%RÖë8—Y!±8[÷¿ù:¼z&mèoHæ£Àvˆ\Å`rIº¢êl¶LaÝM­.Ì <+°ßzòo°zÜÞ:^Íûnu™ù¢‘pTV¡™çÁþAª&)zí¸ D ö±5>@ǵ;Ïqû1ÜΨÌCõØ“IUÏà F€›ÃD jõÊìs.Ž Æ[¹ô™]!mÈ3]·¾Â–ü£ôÿª-<É"‰°ûr¦pnõöÃîÉ Zâ¦o:]š8¤êÌÐi-XJ™ô¥F{Ó<“ûS,|ܦ†ºŒ ân£b¾äå™/ðÓ¯o_ÿƼ Rø»óž‘Œ cÛ^Ü Â`A*,ëri›˜ÙžÈ(`¶âÎcO¦ÜŒæKõ?õñ”ü4FódAó‡ dÕõXÂ"©˜8s‰G0~Cïò5B›1uû"É$™º¦­í¤ºíõz°‘æ×X“ås³fX(ÁM˜åúdާÚOs£G¬îõ%‚a hƒÀʬ:H08Éì®+ Ä¥¾œyÒ«uc†—Ãð©RZ®×®­x$z»?#‡Ú=ÅáÎ ¯Û²ÙT†¼(WUí”._Ä÷Ý S|Ý×íˆo 3Ð.s¨—¡„®|8æ`2ËCð«98ËèÕ÷18a4q¾ßØ1k×] ZäX}¡e–PÉ……¿|I~DxQ?ÂÜ5š'|dÀT€s†¾¿ÌZ»ÍkÓTƒc4 0œ¼ç±~¬¨\îõƒÉ`ÒwAÌ΄«}k¥m™Æ‡éÃׯîÁ´Bûfð‚òìôemž÷†~µzf¬×··oíî÷_íÍp âëçе¡*¡þÿÄ{X¸ _N‡óÉW(n¼ˆ°-£{LÌX@@çÎ;Ô; aø4Ì®ì5OaO?BMƒÄœ]Áüãü²Sgä”|žÍÆÏ³ëÙ5‰/'ÒJ­8¨ñ^o†å‡{˜rfW‘'gWV1j<±Kå” yPøßx_À8 ÒÃ~o @´‡31úgý<.@±JFr`ÚïЩ‘ÈÈÚÊØÙ Xk =Mw'îݘ¥ð$Ø´•û)€›—}í¹›Ôwê5êvüÂܰ‰KÞÂ÷–t÷áûŽó,…W÷9~ßuMŒJ¡J±{êêƒÕüŒ_ {’—KÝÿÃÞSû@s‹´äF ÷å Ã9ôi.åY†sÑ©Ž$œïù×®7#Ûx.8'õ$‚sb§dãßcY@¶Òô=yõмxÝ÷èÒµ±¡±*ìUÉ縿·ÁbÝW¦­šƒ`’2ŽØQl®›Áœà®‹‹teð²Î‹“S,VÅ2ISuÌÈ EhOõñTR©Ä]2%®œñ.>Ûá\ÝÆ#*˜®D*!ùî;’žS'%M” Ô9Yæ—û=þç ÄNÿ»äýìúpÚ;ö~#88=9&*Fïøû£á­¥·VïÏU$Æá‰­BÖ„™ p~Ht9õJ"ÀÉʼn¹¡YGÛF:»²CögxæêGCÒ]#Ï[2GçÀ•\vÊ “þÿÜÈáµ›²Ë¦×í£nêÊš{»SmM?£öõÝAsBn˜Äáº\MpÒ¶ëý2'ÍDÉ$Zà°°tX\-'óó?¹ ¼×à.¿d~b„oCåv¿€pí‹?VŒfÊYqXïìð‘$ ö¡ eÁ«ýQPØ#ÿ‚7ùE·ÝìLC¹§ A»ÐO$øüåý7“O\âNV µ)ãÞ*±f:Äþó±—YNþ -èú Y°E endstream endobj 521 0 obj 2228 endobj 524 0 obj <> stream xÚWÛrÛ6}×WlýБÆ•ÕÍC\%ÍL2µy(;š‚,&¼È$eÙíôƒò—]€”dRâVK .»gÏ.@ “Õ€Â$Á¯Wø3x1œ½”“Ù€Å?>Ÿq„&ù`ÝçŸãɧ9”/T›9î¸pÂC3^éfYÐTKý£;Õ焆ڃ‘Œ(ÊìXZ4î¨`DPnGó8-"3âê&9dWð¶ïþø3:vrFváßî£$¤[ïÏÎà•n`7ñu\kˆ“D×5,â*Îu£«fU™CRæy\L!K í"RJ|ºå*¨o³Åb4Ò÷q¾Èt=]´«ßàbHò©‰†­#Æ…èØ%M…‰ñ6˜é ¢áwë¥Çàz¥ŠTù;1íbÂzØ>Ev‚ƒ±U2$>{LÐ{O!- $étª³4O=…Yši(gP7eòÙRèB‰(¶ÅºÓISVçvþóvÙUÛ×3’‡D0îP¡!Wí24 ¯£áÑšä3ÛMšûæèd9:ÞÇ câi|Ñ€„LäK˜cl«¦zèí'ýÝÙ;®‘Ð,­çÐÌQeQ Éi‰‰TÚž*k]Ý銸¨^€^;¨õ]lÑ8î‘åôúª@•Ÿ¸°ÊG‡ÃØõ§“ i ІÑñɦoY»=‹¸®MO_àRøDqær‘iÌë8Ë@ß§u“7P•«.[™Æ4æM +ý¥Â„½.— ænÀ}"8w7H 4‹\/‹dnÄ[è”…®ó{¥a›* šR@ÅîñÎ|¸ØÏûåR£ní÷O†zbÛ†† Ô#!ß­Äv2Ñ÷:Aqÿ<~3žŒáåû_ß¶ÞõADà!“žëèëÖQ£ 0iÓRhDuñáw›¹'†çre8^.Œâ¥Ô÷=d±§[S}ãÄVÇ…®°X&ŸuC>Úˆ,kƒC›@Öé_ÚfžÖ.ºç!‹Þ >-kX˜•U¢!_fMjºÛÖ¸ÝkS’й UyƒÛU²P Ý Êå—ig„GÙB†exãJ·„DFAÏfi’ê"ypu ¤"þ×d0½ïßYÐ6ïÊ,MΟwN\-ìs44Ôï ­PD ¶GírÒhø¸Ø‘k}cJ“„;ýº˜Ú^w®ˆ|oªïšØ7ŽJ érû^7Uªï´Í¦EeNl›Ÿ(<“i6{MV4ºÀ:˜<”H¨ÚÁ´]Ñ·«£a›P=‹x ‘.ï`¡æ¾Dg·bNâK@4DkPh›È½ˆ§6xß–³þÑÁ=I˜è‰öô73^¯s_WUY¹ŠçJ i»‚Lp&œŸÃÑåvÝŽL–üÕTò[lï½hgÞâ}Õã通³Ñ3¦b”X+xûðáòͳgxþu¨.wxÉWÊÛOÝø l'4Ф`µTxUØ1Ó^7ÈJR§‰6mÍv®iͳöuS qß6¾Û)Iºk˜ {F<¶ÁÇʳn¾ÞÌ}Ø´¬³v~×îìXÛÒHñÅÌ—>ñÚ4ZS|‡…ŽPø­6´ÇfbgšYwÚPc—á vž¿>~9¸˜¦ñCc­‡o1Ûµf¶3ÖÏÛë5óÁG(ë_; ñ endstream endobj 525 0 obj 1425 endobj 528 0 obj <> stream xÚ[ݮ㶾?OÁ»$­W%ê/) t‹¦Ø6A’æA½Ñ‘i[YYrôs¼.ÐêE O‘Gê7¤¤Ã¡ímÒ¶I½á̈œßo†L(Ï¡x¬ð·?ã¯ýÃëLJO¿P"ñ¸{"Ä¥È"‘É(È %‹ù?½§¾¯äçŸ<þÀˆÃ(H‹d%þ—·žæQÙº> }9ia‘:#ãÓ/b!Cok© •¥†ê«nE·ãA‹ª;ž튔ª Fÿ¾/¢nA_‚ÓE rN\’@±ïô ÆNü0á[½.·u»·2´Ø–c)v}w¥ø©ÑŸ‹³‡Ò•«¢™Üg¶Ë æ‡Òôµ½ÆÁ¦^Œ_]?ã+,ÊW®¡;²0`Ê(ÎÝë@°SGQ %£z$*Q⯮m.bûÌŽÌúöã·ŸÜö÷8 }î€(_…A˜ÅÏÎI’BJ.f„‡_)M"¬Ã$c”‹Öȧ¥ (m<”p¾zÇ ¨â +R&b—iÇFîh!ʳ dž]®_tþ¤¸â³G[åΩÂ<Ȥb´Ý«zÔ}9v°h×É¢·7¨ò0(²äÆïo.ïùŸú𯷀 í™›žÈø»þùVKáIÉ¿Ñ;µºÒÃPrgIÂÂ׎aUôR¾ÞË}ÝjÂq%'d”Ï~±)¶ÔÛAÍ’ÛÛê€ï-v[o°¥pèø¾ô(‹ÑnxÒwÝA&ÀŒ_Œ˜ùÝFoëÁ ìtÐ$1%"E¡øëkqÒ½¯…ЯªµÁk=’%;jœwÉŸë¾k©^Ž“r ’‘^ºeÓfûw¾™(OŒ2¶WvGß„)¾Þ‚)j2ÜuÝt‰ö@—3&|²Ñ> “ė𕤄.]Pc3tb(/ zY0P sΞ’É“—5jÁJÁ#ZQYV]Æ^Æ”(u²`ô{šqú . òœQÑœ5 ÓAH¸Ññõ,à+/Ô‘ŠFœMJñÕkñ³ýÖÏ~¶¸_ó)ED\Ò{ s4r[aj#ºÈ9ûêC+³-¼<£¡ vµ­Õ›¹O¶ùDï~ªjB”÷fjh­¸üï€ìѽ¢§l¶ÿ»Ÿ#dïI0@Þk}US3ê’¡õÖ‰4*wæw'2qQú5›.«m/mi.›Æ¯ØBÂéÏwg‘8h\Ú_4ŠDwå±Q8Îe·÷Ú÷0Heêïç©©ÛmCIjF¬˜Ú±n–ÖÁ/Éq®’¤ÊÒ g«ÀS Ðþ¬ŸËy_i=ÏöÆÅi6s ܼ$‰ÒÌ\†iæ}ôoJ—ì‘ †³S–[˜".¤É Š?á-8ÍÎû©‡©¢Rº›šÍ‚ÖýY l3ÉøÏ ô”~{«|¥º‚s…ìc$\y”1‚ÇĞǙk¾å7#2Ëãó,t¢ª3 õ]Æ:Œo?±¹JÁˆÌ…dͶáöŠ ÇW"õv…¹æŽ-4RØqÂÎðÿz¯F¤ÐbbάìÐʧÍ¢÷4 j¦ÿu­0Zu–»~<€PŽåF$LvƒO—Ñ¿Ê*dæœq/ÍÐSM÷I§Sßzº¦€æ8š‰e¨„1?רu˨¿ p@qrW÷(ƒ¹6ëuƒ¾Õ°„©' JIN a˜áˆD·!£ÐÝÌåTWeCSÐY³Iv¥YÂñ ÜË'Ô4ÓDÎ×Zdõ×_~ýÚhÓ$zˆå•ÆTÄ;i³°Áã|âWds)Ÿ{ #/ð8U”Ô€J\j®0´³YÄ Ð?Üé´á…C}¾™de´”^’¥¯9ËÌos8äÜ45à-“ Зº4ƒv}¹'Dp5¤Ž *«kúCM™voÜê¡ÙÉcX/õà5fæ~Ǧh4Ц¹œëÎJÿ&£+f>N­ð‚½44ñ!ÄcŽt1ДßÑÐ6æ¢ÏâÈ5ª2ä–Ô;57¼Ê¯s¶]…éš}…gùJöRØ×ZMA󰿥ä,4’.¯9#G¡a(N„fDI|I1~EýcÆxx«JÂnî:RœØwuj€tï_Çå9ªËsOõ<õì¯MàÓÎU¶[ «¯D”œ…Ùªš3¿ÔÄŠ&“.¹™ÓxW¢iYºTW~ òŒÑø~@cPdw&fX1÷lhS ±º¢ž“WR6É·»RÓ-ïyÆ—YóòüE—l>0ÏQ¿»Ó¨…¦᪠Êä Q+×0)éÒY‡ >3aàImËé÷ÓQ̨.äH{3Ä¡¹™iÛ% êÌŽžÅ c]½[î×Ê¥¥½qììèÊÝk4Üt«U¯cÂèn³©(ÙýTö»ß¿ý8 ïaü•°^9Þ¼ÙË‘Ð]ê5éòAZTÉÅšá›n‡‰†FÚ+~4 —üìO–èm–K½{íªDWÎÕaöåÞf…üøºçprùJÒ·Jf‡+‘±ërïe¾ñì_•“q޲™®.%ÚÚ\2²g>“r1ÚŽÔ(9ý¤½©ö|³á2À7¡w3ñÂ,†ÿ+N|6:+ýÛHù=ÆHž…·GÔyXÇ™yÆÁ?fWšGah°îÀ«$É•ÿ^ø3[§dg‡¾ˆ¥»ÑDžSÞŸX1ˆ”fÊ 1Ÿ¿¢T¡¡w×7W¶z‰¹Œ—þµÍR›@jn3Xòí[›ùª’ær‹ΗjkWÖ›A§íÉ–G+*òc°`‘P¶64Ï~2NÉ®ìÐèz*Ò†\ì²1ØÌ´‡6H¼‹ÅJr>óV‰©\^\ì¸û~K¾¯rjF;K»îìcR7¶uãêP)4 ”ÝòGó¼s»¼¹õ²-‰¼-]͇©§yIýûLiÌrX~à’˜!ßù\¿:‘)¼•³ ¶mD˹ïKzÚÔãPfzº¥LÖ;Sê'š"êÚ\'Ïן^RTôÔ,áö{Ì<äsØÕ”=¾æ}ô|Driô(‚fS| Lóa1ÒÁ–_ $’ÎBòD#kûjg>#Zci¤ŠÞRº\4îoôüða[WãKµêv7Ûp€à„Ë €_U½Hiø ½ÔJ­ßrÉ4\×€ZhÐ0›ãä§Ñ¨ç1£®·æ ŒÁ’×é.4 ÛeX™W,\7QfÞ0¸äˆ˜©žGê-Íí^†ÆºÌ3¼ùÙ¬¨¦a쎴ý@ü…^-ã´½Üx” ªÃ€Ü›QséNˆýÎÓC•5:¬Mýô©=¸9÷%øÍê0[ÀaŸ(aUÊ«EæqrdŸ¿ié9@e¶f0¤ÿâ£È ÆðèCŠ4JA_¶ƒ8Ü}jNS¼xMA·^¾Iºˆ]³Ò0¨$H¢¡Zz»ܵ·iÈ‘H z´y`¼Î¯1!G*e×aydì¢eÉwÉ ZHw(ÎòË™½œ+iˆÌNK“! r³¿ ½=&¨MW[ÜÜȪyøë^e:,âÜ—óܘÓãôÓü<Äô–f’2¾Ϥi{Y°óZ—87WŽðËúädyÈ7ïþ#¡û‡¥¬›  ùŸWŽP¼¢÷˜‰¨Žæ_Y ßËÏ\4‰ ½Ÿ XÇøiié×áaGÿ¢†“óõG‘ÙI^}Úýr†£.?èfÑ~ÂÿÃúKÒ»ÆÒÏ¿½¯Óóï0L°žÑK%÷ås`MüJ_•ídoê°5â{e„´/ÒŽ`þðú·?>ÐOZÉ Úm ·ùšmZŠåÏ/ Ïáá{ÑBÖN endstream endobj 529 0 obj 4111 endobj 532 0 obj <> stream xÚXkoÛ8ýî_ÁÍ~Øt&aõ~dÛ¶ÁtP -¶‹Áb2(h‰ŽÕÊ¢+JñƒýAû/÷\Òr$ʬƒ$´xyyïá¹êÚãa˜±å~á±e±¸}ý¿‹WËÅó×!ó1½^øÌÃÏÒ€¥¾Ï“”-·‹K-ÛÇgË/§Ù,ã±?-kU]kÖmä–‰ºf+Q|ål¼ÈOî¥ãUËM¥Ù®•c©Àƒîp²ûdëÀy˜MæeÓi&&ÛVµ¬jȶ­Ê²–L­Í7µ“­è*Õ°u«¶¬–b¬3òžOu>VÍûÒëŽíDÛ j Õt¢jdû·ñò8L¸ïO£y@íG9A=B5ÉóA¨€¹·“å`7=\ -¯Ø~SvP=ëuH¬TÍdã €U6ÖÙ±ýD"xšåc Ñtk,úOâ±ÌmU+aP…“MÃ,á¡N™nyOÓÈÝt#ê5LYL«&KÒˆ‡ñÄ“=ë[É@œä=Í4åIt$“„É¿J•¬•B«FÅ)¡?/;„·Õæcrዞ‡cqr¤m9û—l7bg3A»#¥+ËÒôüuäDVäÇŽ ÖC"æýåý3»ÊÇ(KU¬ 0Ãn¦#ߢÈ(Án¾Y0Y°Z´P@ÿ,‹> ž»V4Z4œ½;Ü}x þIí00òy”Œ—vL÷»ÂV @¯GzôÓêO  ³|kû¿ ‰cg•…f_áÏzÂ2DC%EUÓiU8Ô¶’CÔâˆ\cX–YÓ²1é¥Bò™pÙÀå<¯Ù7N*L…ÇÿžÎ&<šì †ÅÐú;ÐQZLÓɦïÕrýyì‚ÏŸ³Ÿewj˜( „ÅSLiÛßj»MÉè\QÊ)½nàÂnws3ãææÖ.~‹µìxŠ÷—ÖòàþÙ ô?yìŸt"¡Þ_þeXúŒÍœ žÆÁIž>­ìú¶aþL7jSŒì>ÈþÇ™sô^ñ“?]{˜íf1ìK&ûÈŸÆWu¥7Ck×H›6:5éÄu¿²å®Ö4†éDë ÍÛ'mP|yærõ™ØvåªEqЇTì|†˜²QE¼:=ëµû„ª=™XÅÜŸáñª¯êÝÁ·^¶&IáLP¥AÃÒÚ{´…ÔÍiö©©(źÚCTÙÄwÕS /GeCËLËûiùú:£’³á uM‚óø~06ZK_ÄÜŒï//´¬<ûÁ‚µúâ ~Äã$œh·ê^¼`{ÓKg_² ztÚù[¯PÄHè½M‰é/ï=ÏsÒäeÛ¬dKíÔ+Ü?ô…kõç~»X}#ߪýøGŠî9¿rg¸e[—5ºí —Ê“ä<|wÚ{ƒáG©ûšzW O \Ó$gflŠ#™2ÞÄ:Vs”÷î`é6 À A9Oæœ6N=YõJ”ާhi±fû¾Eé4GAíùZõ!Ž›ù´ a’Ÿú\P°ãVÕö y+»ru†A„b?õÐÍ8A e fÑ# ¤uôFõ&ÕàÖ†; µŠäêñŽ×ZÐa„ý]ºÊÒÿj €vŒÊ Ñ1!F ñô¸[¾}º¨Îh>"L#wƒ_¤i0ÍÑëŠ`'›ËªE@Áì«èþfB µ/²Ýà÷óν:¢sì™ÉJjxà,µºC'¾‚ˆ‚}ľjõûºöû™ÏótJkkÙú’øÕûÍ=V?A˜f®U·h ÌFìöj"º# hVÑØ”ðµQ{ºIÚIWwŒž5Í]Ý8œ‡ª5{uONµræ :W?;ã ­ý|ôGígθ^g3Þâ²þ0ÎÕ@@l“¶böp’éõ iãŸw·oÞ ¦7¥»ï¡£ž“P±RÖÕŠÞ¤HËë}URO¯ ¤px[¨ºß64ÑmèÝH#gúÑY‡ÙŒƒ«ƒ•ÿlÌÿl╊ [޾<›2 (ñ![¿Ç‘ÉqÖ5ÄfÞŸ–'E»¦£\.Ì-‚ÆÃ0cõ"ŽúWØÓŠý™c¨q<6s¿œF>ÚkÅi|´ãévrÏ‹1ŸoUÌEþÇÙ#²%÷Ø't ìhzQM£u×VGvNlòýÏç?,¾-hH3iNÖ&ôjì4òŒ™Vbøþ$1¬Ù,~a týóT+ endstream endobj 533 0 obj 2033 endobj 536 0 obj <> stream xÚ•WÛrÛ6}×WlÝ™Vnlï®§3©c§é´‰•éCÕñ@$d±I™€ì¨~P_ú]”D€R’:w»go‡&Ï# “½Æÿ£ï'£‹[bÀd>b@ñƒˆCÄ8‰&Åh ÝÏÅÜVuz!áq-ë è j¹ZŠT6_ÖÕ3äesTºJÿ-fKIN'¿[¦)'aX¦sd½Ê„–ÓqUç÷hìÌXœž~ëcNx¹¾Ý-ðú½obV­µñp&A~éZËÌu%Œ8¡IlYJÚÕœ¼5f.áÄ|hMâA–ÙràOÀÈÀ›wë²çÌs®[/¦ãé騼DÔÞÿüêåä²Jªò`êu]‚p/ð (s¯¨¥Z/5(©qyŒx”€¸çà FIB)'uË' ¢Ì`U祆XŒ­”ÏmŠ´RËR«#”’ˆÚ¹nlÜ7rßhOÇoC‚„bÜáNûo÷yL1Ì=ô©Ðé¦côFi(6êq¹Z]^~/²&—_¬§§ð—k%¢„ÑØûŒwi¢Þt9”u]ÕÊU-±+%÷Ôêuu$kò¼ÚÀ¬š?!‘ë®,ÎÙ@ÖKHÀØq€xB<Æ? ëª|’µÊ«òJ,!ŒyGPš‰ÌÔ@gbIÂüà íoþRø×1ì'1be—×öçd:ÕuW»à`ØsʽùýáÝ'" Û=‘êµX:æÚ/ïÍ—ÇRëG1¦#ú¼ÜúaŒ€ÇGs낚|*·7R¹ÒÇóêû‰¸›Ökcì\,—0¯ê¦*lø~Üܽ}ó⎲Ϊ›jß‹HÀÙáTßü¿NðyD<Î?.ƽ£pyIˆqîK¥3D];^bmê·0ê¬G/ ÚÛ^Uå×}# '^dIhƒb_„Ql&Ï’yͲªqm´·úέ çBZ:¸¤Îf‡½d såAÌ5&ï(óò¡á²ï±¤,¢XuüâE"Âc /$a›¤€„Ä'«g‰ÀÆíŽ—ßa!ÝIeøÂK¥ª4:Ç%ƒÓ@‹¼”\~àŽ}Ó³ÓÔÝ9š÷cCj' 9ŒçµíöS)¡š·,E>®óZf_™ïî&o,§q¦˜üõ”­ôrÊŽœþsb‚%iÖvlûñd „Ä÷lv—6 we7¸4œS-·* WøW´;¸y®7+ ¡:º³”J£Di.£Ÿ>*t¿4ÓªX‰º!i`aÀ=âG–èÄ\˜«3Èõö¦…°qÃ][:v°“èYÏÍv=Rí=ÀÅÖ—®V²\.xT “ÿ–HûÚjkhTÍÜÂѶ+]>^™|$ŸÇ$vØTkLƒÁ1Éda†/z)3g¬pÜ(M±=Áô]!µéòy]ØõEa¶É€kÇDØ£^»Ý¾­ŽËËëVû *C—Æé¸ Ä„0¤Ö G©ß£dù©Ã[Õ!M`ëËaZÝ ¬bÆBDç8mOpOôˆFŽì^è]â²’eÞrµh&ÎÉR¦¦™Í0ÚÎÂc%k䔃Ï€8lb‡äõÞšŽ@œÍîM¥£7“]Š\Ä'A€°šW5sÞcXŽŸ:GØ=<¶²æ´ÍÛWr·½=lV³»=ËNô}ˆ|ÛáÛËÜ»¾¼­»sçÇ~Oy8.|‘°m½-|ò>ƒ÷ÊCQ"î\3zç­jü28õùãÏߎGæhžD‰ñ6Ħڟhãf+±ý¼—Øê,F¿@‰¶þua/à endstream endobj 537 0 obj 1543 endobj 540 0 obj <> stream xÚ•XÛ’Û¸}×Wtæ!™‰50qámâÝ{½Ù­Ú¤Ê¥ò¢*EbF´)R&¨Ñ*©|PòàÈ×å”F)ÙÞqy"ÝÀ9Ý 4ÛNšåøõgüœ¼žM^þ¨(a!Í&œüã й`Iªh¶š\Óà'_UYkftû¤Ûùõüfúülc†OÖ™1öÉüæO7³§1¢T0•F^Œ—/éoºkKý¤)«*j›­¡‡¶YQ·Ôdº&ÿH]¶¨ð¶.h½éìó•5>Ý'‚‰4º¿ŸýBFwŒè¯MWæ2ë¥4´mÚ†>lLG>iÄÇ_mËúцˆ Òd®†žtމSÚ.Ë| gT”…}çÊp–¯×XÂÏÝ>èBç°ú8XHG[¸÷Ë=5‹a(k5UÚ˜[l¤¦¼Y­³Ö"ĆÎBÎ|4V;¬e½¾»{·ÑíŽ>¹ßßÁEÍÜx~}et… ôÇž‡ÿÕ&gaÀ=çÀø•³ÿžZmF3$g2Þ “Y¸uYϯ1ëL$°4PCD~(ͺÊvN$˜·©º=Ç÷e ŠËŽ@/ÐÙ“ïÄJìp³†á0„uÝß5{”5-2£ jj÷¶ì Ä¼©6«zگĊw[VÕ B˜€k$üÔ´.vÎÙÁ0 šÏáÚìÞ; ß/uVØã˜)ÿ©Ï»0’ dÝÝ!r›,a45L¾¯Ç¼ÙtlÝê¼4eÚ䙈*e±¯ŽøŸ_ƒ—ï,_l¡-å˜j¹ú]ÿP×EÿèÅ‹²›ßп†neÊBÎG9êP`ÃÜ~ïðÌñtŸžì³z³ê[]>.»éпH™äâl´?v&båºwb~È:}fó^þ(‰ƒ+ 9úý>Ú •¬7TC´^èíNmûr5¿9h8´‚ƒíé"y(XÄ=«Ó¶žšW\½9í ÷=ï;ؾ{Æ2òŒ :¯Ð† ‰?xæb =sƒ¾¨Yë%0oNmÇSÏöÉ{/Ðrû¡5b’g£ù{±%Ì3±9Ô7ÙB½¾mpÏfJ ÏüqßÅÏl>»6ßšÞL`ï¸êžŠ«ˆú h L¶;õjSK{F}ÿ_þ?[7í°Ç:³çËÒy^]×fŽ+í©'WtÏ‹K(…°ô̳…ÇŽÑ&¾‰Gˆ$‹¤o }ƒ„±o@.·Æ¶lîöÛÔU¯¼Ï-òÔg]Tk]ÛkâV’/u¿ƒ#—¶ñCºËí¾o´·eO¾!ÒFpoF³'‹§#²Ð„¬ÜY@H?×®`ØV̴߮¿´¯2oi6ç(ô'§>ô~§Ú^ Vê¿?%EE_åMñ Rœnß`çŸNl/ò ùhÀSÏ`fÕL®íwÚ6ÚY›/-v.½ccH÷Sj6-  |¤¾¯_ý3*ß@¯p?nÑÖ4"ަä`ºÌÜc™y ëW‘gç©7\¼÷ö<šE­›õ¦Â©p—‰·³ç¹JŠpHùjâ¾L°ãÃ0¡jª`0„ÁóXbØÛÚÑrò`¿Õ:âñ)¶o¯C9 }9F­: ˜8„~xq$>öóxÝÞÕ#Qß6Šõðb½â¡€g5Ú”ýÒì¼ÛÞA`×eÑ!ïó—ß¿›|šØ¡}§vµŽêq¸eö‡ÏG‹ÃœåäTÃ×ÿQëó‘ endstream endobj 541 0 obj 1810 endobj 546 0 obj <> stream xÚY[o·~÷¯àq’ 6³÷]%OIÛ8NSXEÀ€AK”µÍjWY®ì£¿Ô‡œ÷þº~ýˆCKÁA‘bmɹ|óÍ ˆùãY æ üïßøwön~öê} Â\F…˜¯ÎBà¿Pä‘ȃTFa.曳©ÌåËùŸÓr2Œ¹Œøq­êû²¾ÝZ W: ™„ “ž3(—錭«;&@ à'TZ|TMb—LØŒÃWådá«÷1ÔôlÊŠ@ÎâÄî[7P´+­º]«Å¾Ù‰My¿îÄ·z)”Ø-VM+J#®eºÃÕ5®Wûë_ÿóÃ$jDצsF2Å]ZН;Ý–ØPÖL<ËeÅLü ä‘ ÒŒ 4Õ©u 5®µ±! ¦»vgÅ´çÝ^,õÊ=yVHøÖ•Q»ª»°Ö.ìUp…Ñ-S',r¶žì=)cv½$—¬‹c‘øW=ðõ™Ìfü\«†!w[Ÿ+caM¦kw ½n¿ÕR¼Ûu¢\AJ”Æ=™œfÓ©e½h˜ûg±,¸Èƒç"ÀÊ]Öu©k8‰`³Pµ¸¯š;UUû,Ú‡ ²DħàWå÷ü8 e‘ñ ¬¯IêÕûD2õÁŒ¬I6$lºfñåõk{áÍ‹s“~ñ‚w~óòMƱ|2Ä™=âC÷ÜÕ(+fLq­L#¶1%Ù…è:¶Z+›§·º©ñ¹Õ- ï,’çÐ˲6ªZeß57Í3™fáÁ\aÞxN³LÆYÔ‹ÈñäÛÑ+o«N·µêôœ~1:”‘2Ç]”& BÒ{yÞ㊂¹ÚUâq­kò0/d²^æDr–±uÀº ½Ôßê²+á¾n­:Ë>Íf«:ëòDz[‹ ’³ÜV¼Ì…@P<´!4}M”àšG‡›Õb-¦à¶eɸ!L` ß²Ò-/·9“QÆÄ¬³Fr5œb2Isˆg2/¸žÆzzÕ6ŸSf3Íøa–«ëK¸ܵU-â>¸˜XÝÚm=&Åëf÷„‡ØwYL§ѧS6j»¥»”XT =±.u«ÚÅšW¿PQÊŽØ#= iÖQÒô¡›Bo¸sãÕ/IØ sÀØ4OqSö ù—Ù!ý¬^EAPB [”¸/ýŸÅLŒÃµ8)Ø:ÒÁ5ÈH/?“"›d¯»¶\tàK³Õê œØSiSãWµî‹a¸saµèïÖ­VKmÛæ¾U8Œu€sW.ÜŒ¸Ó°ql‚Yæ9#É'¾tÌ“Ä0j¥©¸€äÞC¼MiYßÑNJL«žÄ4—È|vÓœ2ܨry!Ê`‚3ºÇßQl½î`&‹0c»½î ‘YÆúuàéc(H²CÚ¸4~ ‹e‡̽ô£A^‚=÷º3}ÝëS…w Ð¹×#)Xe@4®0š;Y¤Lø¯2gËštöÑ—ÒG³µŒÄ]þo§k2Èla9¼±h–Zö¥éx³œD’!šåâh³ìʈß,È¿Š«‘Ö¯šåÉs²hÇhF¢ >]´]ã#) Bô™LÆKëL¢Ãv×8ÕÑZ‰5žß 9 ÑØQêcÂ’]›Þ.žIªg·}fËqJ}™»Ž ÚX®'лÒòz:PŒXƒ}ÆC€T`{C=n³»__ åŠt¶i?Z·¨vKd¹ÿ0FÏS9#9>ŽœC ³ØèÍníL°n*jü 푵I{¤úÔÁš“Í{Œ”žŒ_õmAßîÞØ2à°œÂäB™[•Æºå›Æå´bäÍKNG€š÷ìßÇv¦G^ê!/¦~eÆv<\tªqñäŠ^ù1„†Z÷5%Y=äÂK[4tÓ~Ò´‚ˆ ¨Ú_ZH"S÷›»¦ºm‰®:x þ"ºr£ý'ÈÆ<žŠè#kós‹}Gœ¬ÚfgýÚ7S£·­”ÚKq‹¶cËÁ)¿ýê3`öéÓ­EÛíÇ_n¯çoç~¼>îÍ$‰üȃ½pæ §©Œ¹TVxÁˆ% Š+ƒá a8q=\Süú¾LŒ5Õ/©qTL¢Cê÷á﫺a`—z¬ÜÖœ"¢<—;Î"ÕÆ£w9µ­¶Ž¢ïAXŒÉ½€›—Ç afÓùÄk|: eš3‘½Óvi›t¨«Î›wd !wŸÇh–È0È|£ÐÁ’ÚŸ(â€ÆOW–s6X2ågQÛK”|a†n¡`6û[c¾VF® ŠžlÁTÚ&iâÉSØÏ¨,¹[qÓíëôíÇì‘þ¦!Ú Âò“bt1Ÿê|cÜ Ãxèp€¿ÝÍ4“]hÆìyô"™'ls(b¿Ø@=ç¯H©‚m ^‘Ô=³·aÕ4r±Ýžð ZO¾7ÛS$.r„¾"\Vò~! 1;qøsgºþý«;Aë²7Øíû6GâýÆe£MýÜ{4Á€àÊtâ/ÖØ…!Z¶”‰<Öãoº÷…ü¶ñõnPpËÅ)&¡ÄF÷€ ï§½M]'ß4¼ôMïO¶~ÇxGXç;ÛÊjÏ»”Rnâ½0&š~gp°wž¶h#Tw#5»ÑJ‹I²ñàHÿ¯ÜZ+ÕÇ–ÁŽ ïd¹»ŠöTuôäI±%†q긾“4úEazPkè(êA˜ ¸X‰õX_Þ¼øùOo?þt{õyÀûö›—ÞØmø[Î3!Äÿ‘+?ϧý¸ ™¦b±9£‡lû=~¢:K“Àû„Àôã³—¥¯õÙªÿKØ ôŽ+£>ÉÒ䉮y‰ñCFãeþÓWHœ[õòÃ÷ Ç¡jÅ2R¬çÔþÙ™aø‹ÓC,±&~£}¥êªÕhße@@z‘Ÿûùû뿞}=£OZÉg¤mŠ9|VÍ^büù 1îYŸý.jœõ€—IW endstream endobj 547 0 obj 2512 endobj 550 0 obj <> stream xÚµWërÔ6þ¿Oq&ýÑ6Ь‹/!e )ÌÈB¡„ÙqlmÖ`[_’æ¥úŒ=’÷by“P:-vdë\¿óéè˜ÂäzDa’àÏoøÿbôt2:8 “ÙÈŠ ‘00)F»?©2Íf{“¯ŽeĤ¨/óiR©¸QÓg»ŸÆðÁg{ppÍ\ÁééÛ“SHÕ,+³&ÓåÀ”pD5…ÇY®`¦5I‹1ÄP¨JA[« ôlcîphÄçDFapV&y›*Ø)n¦5FW“ùÎPž âº\ËZ¿×ó,™ƒ¾.ë{|2A$õ:Ÿ6=Ï?¾yòúÙôÕ§©U™žNžL^þz:Ôôá”ÝíÁ1J„…ƒÚÈÐ'‚ùVY’ˆôm{”»2ð"®JU×Yy±,Å˲QUçu熣ÚЇψ'¸ÕŸ`þ›C'•®±œaºµr¼G‘£|ÕßgÓξªâKÜÌuZcÕ+P1ânÃ$Ð×å,$”«ÕZ9Fšºnòk×Y3ÏJ[À<;¯âê¦oQ"¨›êØìïS¤9*}<$] ;ÅôIèì¶ ÔºPK²6,ŒeÖæ JÝ^ÌñuÜÀn¡È.æ \;…œÐÀ1— 4æ];£&A´€G¢¯,¨G¸£{]¢Ó´&ð¢¬îB[ÔªMu¢SµL—†[ùòx^g¤ž;^BI|á\f¹B7¤Ò³…0%ZÒaÔ«¡‹…ˆ;&t›§p®:ò¥c³ntò «6iÚï°ðqžÛýŽæb@s [}7F{þ˜`t¨AåöóÁüµŽðEÎöŸq±ÈU}¸ b»ÙŠÈ'>WÝèi\g‰É­t a5¬\£Ðª9ŽGI#-^Åe¶x CP×Ç-JÓ«8oÕ4Ïêæh©³ys¶›$È3xÂ/°3Þù>¡¢kxй„E‹„m±8<¼lu£°ñ'º¬›GÛÁÃþc pI„èg0ËTž:lÞlep‹A&yw©ž–Ú4Ž‹{2ÁNŠà‡2á‘ÀìÃ^&ê²s'“Í›ïÕ‚‡q‰–i,e•‘µòÿ¢:\rJ¶¦¡Ö¹ŠñUm¡° ÝÂH.8ñå}*pN„ìW3iëïpòó ˆ1|^f5þ_n˜qìܫʞcüyãå‚!3¼òÔp8Õk¹z}.8ê„r=,œ`P‹-AáL$ÃŽ ¢ý7h mŒ¬XÒ­l ‹HÿÑàÒ=¿~rbÁRá I}ï[ÒQ¾B&<‚Ú Â*i°uß"÷°+‹‘y˜¨ü@ô<Ì|…â• ûÈç1<ÈîN׋(¦Ûñ|“·Ý©Ï¯2k<冃‡ª›yúý ­Æeê4‚³½;ç4ÏÖÍì]Œ>Ì…ˆ‡¶©nÌЀ¸*q–ÅÃÜ…[÷mª·t™à©ÈUó³3pqŠ´w<`ä1jg%š¶÷n{þ1!ð+â¥Ö9f²¸çºóxD‚`S/¨Ïvwžee‰úïtž×ؽ9J¢î7Ûù3E& $™á>•ûLîœíí=Ú :¾&²£#Øù`ÊÐCl‘ø¦&}F ìø‡¥ü–rzás훚¹öe¼Ûˆp×ÞsSpמ˵½;É$ËÉ8 –8™ã×ÚFÂNR‹J§m¢ìTh/<ôÿÍØ ’=µ®®Ï'k ûø-ƒM7)FæÃÆ®WËò‘t°Dõšã²“5«ùhf>I× Äo+)ë—rËußs ¬f~ï\ Ö+Ïd”wòËõÀ;û∀ø]_ÝàwÉÇpÅ îÁ{óQŠí«´ Íèíw¨‰Ë ÎóýûoG—#³4;Ad¢õ=Ö[Qf'±zÞH¬tæ£ß¡D[ Ñ/- endstream endobj 551 0 obj 1465 endobj 554 0 obj <> stream xÚ}XërÛÆþϧ8egjÉ¡V¸ìâÂ8ž©9IÇqÇ“þ3.®DD¸ÐX@ŒÚé9?ú}º~‹!.@GIKàœ³ç|ûËÊ¡Õ~æÐ*ůoðs7{µš]¾á1A«Û™K¾] = 1ž³³Ÿ’¼•”gªYÒ§¯³²”5ýPå¹z¶ÅÂaq÷+\|rã8ºpÄ…'>Ñùê×c‹Aì1Å7™Ì7½Å¬‘Å¢l‹Å^fwÛf±«³T.Ô&iäÔFä1/;WÛ$?²A_ƒQ<„‹Æ2Ö¯Ôí`>…ýFÐ=r^ïzùÆ'ס‹BÞí¿Ú& ejA ýþpì§ë9,ð-ÙÀÿA zIÕ-aï„ YÜÀiˆ'b¹ŠöY³ÍJ˜Ø%u“¥mžÔt}ýþí5e¥j’Ði‡þ{Àw´a³•cHy4l¡µ­ÏÒ*o‹R­ÏÛ5:ÖnX/7ø¡ßå€ÿñ°¤Ûª.ô~„u²ŠÒ[ŸŸ¦w¦ª¸¬Øå²e#7TTµ¤ª†JÏûã„/˜}K¿;LgŒ¢ËŸBÜfjyešå"ÌâNô¹–¥/hþÝ»ë«VôÝ»Õßi®Ÿ<°&¹É¥Ž­Eúç·:‘?è“ï_ŽØ%BÁ\“¯¨4‡ÌO}ûãÕõ“‰MìcZjþågsPŸ…ÜØÜo%ûçÃ3›%ÈaÉiœ5-M¦à°m…(`"²`5Q÷†Z’º¦êæW™6š&æ¨ñký^§ñMÒ3ûØUßeaþ;‹É‘Úc½ßãЛQã¶HQU÷z&”Vš8¨]VF»±ÏæJ°t·;M ß÷FªP×x1îºØŸ³2ÍÛ¤yZlò¬”l;å)#æ¹ÞH¡ltjŸP"æ3[A5UzB˜ÃgWØÂ/2ð¢–Iñr,í‡p=I? òTõDÖ áFÔ™®VeRHµÓg¢šÍ—#q?X`¢Ddã—(‚Ü3IV®µ %õ]ºÐ‡[Ós¬~þÅ$ø±¢N8Ϙý÷ø] çùCý¿¼¤od3ÔKJÒTw:Ì2𻑵¢Ûº*t9*ô˜¡OklQy|°X<‚7»Ýry ÒrùÚh¿…2õG¾>3èÖç\¸.b°™Ý¢;ýé zN“¨Ð‰¹ òú«–M‹ÑÁØöÐyê€ÿ¿GÙ‹¼xxß òŒ÷óPvßÚ@^)Ý”3µíÒ4­0ù¦MV•4jJ„^õ ëqoò"θïZV0_?YƒáõÙ ”774Ùc³!gžïYf_‡ü3é^±ž¡-žì¥ô“éyyhÔ‘ÏÇ€hf%yÞ_W{u¨`]ZR7ÁL@à>§A0]ß4ƒ¯4¬[cpQ2דÀsÃÖÎþü„›¾„mš˜<~Ñ©¼iÔDÉCÿöCK©Û–A§–:/¡ub3Ü×"?¶ô:Cš©ì_fx{IÎ >»¸™|rd€ô•n‰èˆ}À Si3t"«Ñ6€üØ<.mœ»§ì›¬AÛ¼ÁxÕÖ¸™IÓMÈcC!n|Ê-ã–O ™q>MÝÀc÷ORÕ¤´úÙù…O7óîö3_Óúkÿ©»VNOÆå.ЧÂÿ:S»ñËs¦Í´qur]EŸ­^.ƈ?±$f}Äeô)“^%›.™þBHò)ÿbÜ—Å8›¿ÒÚ’ò‚²®«ZT#‡qaS+…`Éû'µ¥¹Ç  îq·;Ü3T®VƒM‡.p}ehÖÝŽõú°Œ(Ÿ Ö>–FV¯¶³[ó–É0ã`„C¡4\ÁĉcBPþ°Ð³½ÙlüaX¹zŒÎ|¿îý¦0T=wáP&†ß?âfôÅôà3¼£Qéû¤ó{×´Þ…1àh¿4Nd}þã÷ïggz©ß„±ö6ÀÀõ´r:7Äáó“ÄAg;û•°õÐPÊ5 endstream endobj 555 0 obj 1850 endobj 558 0 obj <> stream xÚ¥XkÛ6ýî_AÌÛ¤õ0¢ÞJ³ ´i²-Ð-2‹~ÈZ¦m%zx$Ê“ÙÅþ¥üÆ=—’m‘¶gì±)óòòò>Î=”Çnf»Éññü_Ͼ¿™½x²”Gìf5ÌÃ?ÁŸ%Âçi²›jöŒ­Ò}[³kñíó›–°çó8‹ÂÿqæãÌçaæs©ó »}–7u§YõØÝ—ÛíË—ßËåë¦Þ©¶+šú¯Lµ·ÏÙ¿]U©Ïý,±ìzñ‚ý(ëe©ØB.Y~PѹkŸ{Yj­ÍUÛ²W¯ØÕqglÜ6íKvE¿«–?l¤¾}[èÛàÛU 8+³ïÿ®no5×j§–l)µd]ñ/uTœ<Õ žœ×:g2×½,eÃwôãÞ\7Xq(xä‰/‹lxþåÈú‚ /ø_‘}ó)W[ýDT…Ç3/t£úš´]˲d«¦e²~dÞ¨–ýòøî÷Ÿ¿ù†©½Ú“H{O¼è|¤ß<^×QæÁ_ñ—ù+J=ø+¹è¯(ÊpÐc¦ŒŠ¼=aÆ“!FFŵÇê÷ÅÛ€ Ï)ÖÈO¹ »ÞlŠŽ©©º,æ"°d>Éj‹jé;Õ18”•‚W¬Y1ZJ˜`ïâ{ K‹º§T£µä¾a™kœŸdî2ΦÆùiÀ“È9b² ^Ê3[hÝWªÖÝkƒ0ä™%ßé&ÿx÷ ŠõFŸ75±³·¼°AD<ŒÏì°m‹\ßEç®Á9’®¯h…GñFíwV~ÄÆe“iYö¥ Ó‰é¶é * )ž;`,ûªîØC¡7Em„ŒÍLËE©8C­Þå­’ZÝý…­U­Z )A(¡`£)ÂǦwSÕ vôº©¤.rÔìãTNøO2K–;zBBvÿ˜‹¦)•¬T¤Ô’2á¾å|)‡Eȱùtñåp»Ë=X9**³©TÓ—KV6ÍGØGK6¹ˆlCŒŸ_î ?mÈaä#êß÷ª}4XÖ©Råš}ÍVmSá|D*o®‡CŸGQ0Ÿî½÷'ŸúàÊä<ºËJ–:|é¶?|šŸnŸ{ÞY´ õ„a—ŸôWSŽi6o´U Œ¶Ò\À\†‰¸j ™#;ÊC¡fR  23k“ïp¢beV<ØÐT §’y„òY+ ßP £f€”Hg­–sÂKS5–•ap_XVæ…BùøD8ƒLð8:ÔάxE ÿw¶»}ÙNž®J!ÑЋv律ö'û›‰ÏÉŠDAäý£..—ñ¢ôÿɳ Bœ£ì‹òl÷T&~ÆÃ >ö5Sä•üè"BZ²c[«´µNÕÛ‚Û…•aÊc{£¾(—E½Æ6µ%‰6ŠÚ™Jî鹩PÝÜœ©kL^¶êzH ‘/QH½Ì2×$L³ø€ßw{?uÚhÅaÅ/¶m`("µ°_)½i–¨´œÈ«Øö¥Ä–18ïΊ-UYT…¶ë)=îy¶v‚ç¥ZYb ˆ%$ûý™<Þõ…i1¦,lg$ÈN[ùÞÿ xÏžk~Ö,œö˜Z³½ão‘`G¶š–8ím{ÍR²e±ra&´·Y¡  ¾ZÙ8ƒ«”°D?é¹ÉÇJ>²Zúu»C€7ÙÆílw£ƒ$Ö<èm±T£éNtˆ®$¶ &<œ½µÄâˆ{¶"V€ÊË:Wó3ÍŸèÛ^47ýnɉûp¶e_m‡»ðaû'–žOš}.÷‘pÜ\^2K|tû1MVß÷¦õm_4@I"¡\Îáìöz¾ÓÕÙ6Eð<(;[èÖdÉ;½*æ=¯¨7!s@ Ét‡é¶(òn¬Nö6½c+p®¾UnÝ™K#•Ýçšî|ÐA·žA lÎ7r‹£dˆÓ5•rgÜ}‹âÚÀ q´‹PŒ%¨ËÔAcßÇ%-z\„[ŸåLááÂZ2¸”Û8 Å™%²£ýP¬ìÒò"PrO‡¿-2ìWY)S”¯q¤XÉ[ˆl8ekÇ4K¹˜1,D.Ø"ÉDŠa9ÆÎf¢Ù•ÌÛi³)pÞÝô‡î´í‰#NTô4ƒÝlTÎ^÷-Ø&Ñaa9®š›Ô *cÝÃË„ƒ–" ÇE…ÆQ–¾Ô0ˆÙ.@´Co:d£‹óW.aKqù=Ju(Ë.o‹ü%e ˜]Úѧ+_2Fï†~Š”J°F2РãñÒ ]£©²4ÈoÄgÈ‹µÉ* ×’-é—}#Ž#וÞ …m!;ªôÖö—ÖD•s‹ñ¹È¦óœý¦ZTqwÊSE†kK:‘i*!í}½¶±'M§Še[ûêFiв1Þ¢Úٶͺ••¹6h’@‘z=¶?Ó~÷ç;×~Eì태oT%ŸàºÄÐ|ຓK¦áÖ ƒèv¸<Ï™˜3_Æì מ|sx¯d´md;gÕ]÷“VÕœ]¡TWsW8õ“óÅÚ@~uWÿÚ“ \vO5x˜bz^òéÁoHÃêCÇ¡dàå'z2âvÙ5*/*Y=¿I‡CÖO´à&å”À·¤áó}ÕÑóÕp·}ssÐá±kº G,¯fæ¥ ÷Ô•³(ôœ!ãÃA–F›Ùjx“ìp6¾ë×Ö(91bjCúl?+7s#A/AÊA~vÉ}êa>!7Äy|s¸ 8æØ?;z›(k\LFÓhÝõ À#»ÈOÌz~zþ÷ÙýŒ†4“ddm,üÉÈ3fûç£Ä~Ífö«¡ë¿A\ú® endstream endobj 559 0 obj 2156 endobj 562 0 obj <> stream xÚ}ZÛŽÜ6}Ÿ¯ ° 8gd]¨[v_'^ˆ³ãs!š«hòKÓÀ¥/ÀÒC3 0òü‰—öZ,Û«Ïe·ÝÒ/šº¥Ì7¨~Íí“>Ø ¤Èu×4MÅø®ZüÚÖ®ñdú¨u×2L<_2š¹ïe9[V-¿ö>|ë¾$Œ½ÓÈ^¿g²»†šÉaŠnô2å=ïSb/Ic›õH„‡zØœ«Ã|AŒéèoÆ£qJ_ 82^Øwûq¾¥ú¾ëÇ­n‹{ž!Ü©-zò0óªMÑ‰ÏÆ@_y0D¨éb›Ž¢Aφ¥¦’ú8(6¸0˜P´ îún§zdø±^†WDÛ^„Yú¤!€ÔE ;âí)‚œô/@™-…ɤ9PkpxàÅVâehæ-’)7UÎü%òi®™Ø”E9°Èœ¿†Ò%C½C$¯Çjv‰ê³‘.tÒbå 5ÊiXÏ-–'Þ¬§ŽˆAM€Ê i±Í·( JµŽ—„ Î'·é;îaÒ`×ÖøNN ú#̇“ØôÜÙp6’éG*mz¥7]ƒÚh¶%@Uצ‡¤M~âQ—£×?ÑÈÁÿ0yÄ2rzî»yæÉ̦¹=Eí Ì=&Ç`ö¢+Yˆ‡?ÎeÁég 7yaft”úo›ºëïÉõѤ}Þì·EûEáVA2€-S¦!âZð‰ ,ž±} m®TYP£>5L£ÝPÎ7~tOÇ/¤/¶hÆ'†ê¦ÚÖm±#ôèk4fóŸÜb>abTMÁgÿ¥0¶‰Ð’HÊ"/K]Iz‹ºPÀWÚ) .î  %HfsÁx¬hòuݺFŠ`ÔeMÃÀ/¥À›zƒh·Ñ›ùó˜Ù”8ô¯ö¦Oæqøæ6Kç=0ðÿHP5›¦Ø>ià„ ÈÌ\Š“ËÈMNl 3¨2Lä›BÕ I8À4¤ø¹ ½ð¥éÀ+`,O·@d3¤`?šð±²GEº¬HšÈdûçz÷q[·+Õ Å…k¹ t˜Œ Æ„cé¦zÆ;‚å W+ÞƒJ*‹-!{„Å¥ ,•I›øÉ9Œ ¥CnÒúR/®ïdÓÖ¢çá‡4[µ–gÿq<:È£©{ÇKÜLå›!ÎL29Ôâ‘($Æi2E/=þ@ÅyíA”æ]‹{‚~p¼e/J.N“2êgoGz÷îãëwß¾ùùã?þtûò‚UsÆ@0•ÖAæÓ ~Î2f¼Å»Ytþ2°éf÷™Zúf€6À÷ 룰¸ôIßcgÿ¢¯(Ô›G²S–»8 }£µ¬ÎÀÍíÙF¦SupÜ$_[-j¿V ˆ¯Ä?ÆY6U¿@i¾iïûI×GýÂÉÝ«‹bp,ÉfÚKG*š½˜#eKhæ{µs£†E3Ïó‹1ÌMÝÅ*ž¾Qf‡ln¯Rj°í?÷jÛåbkîôŽS^ožmç« ´ß¼ö¦Lg5þÇÎDn¯2èËÆPµx{SE™±Í´5í|R”˜ÖÁâ TŒw¨«ãIÔ¢~ “˜½„*O À«ãÝ¡nÇRwd^¹ô8..áž4w6ƒö;O=\øXD¢Òå p­®FoÁ (£˜¾ÿ¹dA)Cºë±wwG:N{‰`bR~ç#‹Èã‡èx Dÿ”3sÀ‘CVÖã¹^,ÃEù“3GÅÞcFtòáÚqkYÝ$#Š"ƒØD‡¶éŠj<ÎÑ#ÎÄÇ„×ü´ ü[¹!ŸF¡™³Y4¿qN¨/°–ë–ëKƒ¾(fúj£«ûÑ}"ä3ÂÁåÅÔõYÖeáèÔ'‹¾=þãä3§Ës›fÜ~1¾ù|À|eA—Mh&×NWJß‘@@L 9w ü–j¿«ÌgrÒø”%íéœû9ÌÊ¿jM¶}$8Ž@—êæÜøºûú'êæ,›IÇ’Y³›m×ÜÔÁÅÒb²ngéË…åÚÎvÛÅP[™/t~¼]dùâ&ÀcQn¯è‹ó†ŠS”•ã}Lœ¼Ú~s*C1?PÏ8¾Âýay h®ÒŒôÓ³óöP" )€uúâpv¦Oˆ|Ï¿jØåmÑ¢£›T#¾›Q€Oz‘uûùéõ_®þ¼¢GZIsÒ6 BëÉ7jŽóÏ3Ïæê7ÑBÖÿ9tÈ= endstream endobj 563 0 obj 3615 endobj 570 0 obj <> stream xÚ•XmoãÆþ®_1ßâƒå=.¹|s€È5) 4(;ÈÆš¢,ö(RGR6Ô")ý‹}fIÉœ•|ip8}ûÌìì¼<3»Ý¿.º/ðãoøû¼øþ~ññGC™Šé~½Ðà¦4¤T‡*Ë ÝoWÅíÃÃöЩ¯¯¿£bEuõôáþ_„*ÉãˆïhWv5õëÕ®f?žª0óöJR£2;éXéH͵ë W©úkÙU/UóLën ƒ@%:ØvK¶¡»»Ÿÿq7šA£¿¨8JþnW•­«—+‚Ý Ý¾ö]ÙÓÖ~–»…Š7› —ôܶ+z²}IEmû¾ì ™Ì(#eî7¥@ä¹Ê$âðÍ)\-]I}µÝÕåg]ÑÆ |Ãÿ"Ö38Í?ÆZØ刊tÓ+uå—}Õ•Û²zjì<1™V‘‘Ç]BÃÆ^ú$Qv‚­Ûùr–ªH„õ9b‹ejÝ!êæÜJçk3fÒ çÃy–Øn9zC±±0±¥ºm?S»hÝvÒýFÒ %mZÑ™J3y•þŒ…ô|÷PQ«@ZJ#L¨ÂD”ïRœÖ>µM_Á¯ðIÕߎep©æcø:H´“AÙ>]i‡ò1|¸ò”Çi‚$ Çb¤ï‘îKÒK —>.I[Ñ„s²ÛÝÞ²îÛÁÕ2öL(NP#æ’PÕ Kò¹'6 œ1rÏÇoýÕ韤#3¹üsäê¾¥Ýþ©® g¿/¥cž9©ÿøkA ûFv5Üzƒz Óé?Rÿ;‘©ÄÈ ‘Nõ,{¸ºä)z´Ë3oÐãÓÃ:ÛŸù/‡çእìC£’ô!ÿ¨&]¥ÇPüæ¯F(…4y;çzßCÕ6 Ïá@vµ‚—QJ¨Ä‘€ñÕµûç U ê®lSøŽ7aÓ¾{jÛšVí#'r·yæ3£bûßW쀕ìyÔ šH’ŽñûíÛw‰?}„ñ˜:¿ Ò'±\~ã‘R®ÅºÏJð‹'Ÿ×4xë]Z£ ÈuøÒN êøíØÕàLj;WÝ-û(vVë\_ Š~°ýAG‚ ÝKêªçÍðÏ‹Qœ wvU 5¹A§%vl©ô¶Ó‘  GËQ¢¢X@Ë(šUILÆ–:‹ꨶ²Û#ý›s¹ç’þ+š_'þæ¯ôº©ŠßÍ#¨H $:I»ïÎÅ!W÷)Ù;N¹[ M«)rûfßÛ§-§?PÑßút}½¤jMÖAœ´\ìŒsÀ…Î8_>Y1zõX­Ô®]‰ö°á–zɉÅÿÿ6Í,½ßIlhÐqoÇ®Çý¸ƒÞ¶äŽkk7Þ*ˆ3LçÇfNŸ”l*ICOèhû“Ygõ”¦*3BR–TÆ#ªX?:ěѸ}§RÓ='ÙÝ®®J7̽wiûV«ò÷(ÙS gø{¦™h¬ö¹i­½]Dßã•ÒH +ÈWF¾;Q*_Ï¢àRÍ–OY4³mê§Ë’ »ïy(w¡æ‚£<éc’µ,r–XŠ~òÆG¸`Îö=Uüt€›¯¯§Ü 1Ûz‡ QŸá(´-Ñ:›ªßŽc'íû©ÁŠ®t†{ãr6 µZ^ÆS•lnÛ¼E¤oA*Ù^¢8Æœ ESƒ¿Ü¢<= ûÔÊC{Dµë$ÉHJ¦¿iÚáÆ¾cªAÉ‚……Ðq(:·Ó |ôxñè¹á`³FôÊ8B¿ e\†‹Yªy,3r\Ó¡ÝÓÐ8Ÿ8€—¡1JE‘PòUw‡aêã笼ä]½‹Wìrr&€¼~.$ÅvWÕèPe×!1Ð`0£œQc*DeÔBôHéh›GŸXÇEÙ÷^‡óì$ÄE7V ÜÔº¦9çÿŽbŒ?Šº›8/ëvΨt[5mçµZF¯x•ë¸}åb}É-ëZÑ?QG5›?³×OþH#bRƒl¼œ`F¬ƒƒ¼6op/•ðn°;Û¡õa¸ì¹ÓxÑIU*dl½/=BæQY'>Ü ÓabÝµÍ 4âGã÷>?ùÄÓÔ, ³œç‹¹(§®»l¹Ón[#œ¯GÏž0àU-4x÷ÏLáÿÅóÙa«6UZ?ÐÔ1N€ ‡ÍŒÔý£blºtT¾“’Ì©8VŽ”XA?¼hèÄõ­9ÂE£rªba ‹Ç‰ž¶-#˜ÄŸ ¨\ÿ^TpŸ›C›ç*y"_¸:Ù'[]¯iÊråârìT&õ/D—ÓÓÍu½¯ëwáæùhî × 4ƒ~¾Ê9%BH-m÷x„û’› ½âç¥Ô!ôâ¿oĹø¹Îq– Ü»CйSÂrüSõ;¤f]}–ÓJ0Ïåïu&dbË3ÎîÄ—™=æ'O謨c\4#“ —õ¥Æ†Ù S!0¥]q–œW'SÕLÙ3œÑmœÔ¸²êߢPbr`MåIóôqòC šŠüE6cÑÌÕ¹ùʃ›M/_}ÒI¢L®ÿð=Hã:æáŸ{Òqƒ<ú¿ßƒtŸ^®Ï_p톩ɟ|Òèýaž^|Êc˜—ùÏA?ÜŸ0ÝhULÅvÁ/sîûø™Q½ˆMà}púŽð9bùk³Xögãc€¤6Ü‚Ý3z~fÄ܆ԄtüÀ„=mæÿrúÒ*G+Nß“§ìgAŒõTM¯mÇñå…¦ú¥ç‘Æ6{[O¦±Üͨ `»ØO$~ÿúúÏ‹/ þä•4gkôÅ·¯À™9"Ž¿¿!Ž2›Å¯Ô@×ÿÐ- endstream endobj 571 0 obj 2144 endobj 574 0 obj <> stream xÚ•YÛŽ#·}×WðÉx†î ûæ}ÊnâÀÆÚ›ÍÈ0ZÝœQ{¥n¹/3VÿPöòu9E²%V4v`¬·µ,’źœ:Ebý´ ĺÂÿþŠ?«×ëÕ—_+‘ËD¬ïW¡ð_(²Hda$óB‰õ~õ™_~)j}_N»QT];ŒýT]ÿùúgÌŽE*ãŒÍ %–He&f‰PYá‹[‘LUê¶ú³î›G]ÿøÙŸ‹¯h’'™‘T*s’¯ËA“ØR(d¤r'ôïåhÉ@nô·åhJü9Ÿú¾ëo«n(ûfèÚ?tø(dˆ•aEsøäúáSJÄËÛÄþ8ü²;¾ú ýôXöÕ¶ì??•—L‡2 3 .Å¢PArÍ8a ó ½bœ¤ jîgÚíDÕërlžÛÆŸ˜ЭøÿÎx#.Œ7툱ͅó'Y ƒpqü#»”L ™‡á$ªi]3ATÈ(ô²âЦÝÅó_Ž ™HbäVì#½I˜Ë"MÇnïž>}÷tÉ(A.³”ç‹‘\È©›§×RF幌Ók)£ÒL™Ÿ2S[‘AÊ]3EY׺c'Æ­wwïßÞá«ï¦‡­hÚ-Ž4–m¥—k&™Ì²Ù ›®Û‰ºûièözÜ6í…îõ0âûÇÏðCÔåˆXµ\Fe2ÉlnýöjvJ,̬¢T:ßùKä1Næ?‰ÙY|‘"–°'è|uyË0Nâ¢nËÖšG.¨YìŸl(§öF»I웇í(ž|±0Še’3¹¶Ö½hîÅ3*l; ZúnÔÕWy^å†Ù#F8…þRl£HüaM~ïu­?¶úìÿOýI “âŸ4ˆÃ´Ù5•0N¾gµ\ùÂe¥¥øšÉ!|Î΋Ã"aè@7 ÛÆ¨'NêÝ;ì gÅnó3 2G®Ó‰âLìõ~£û«Š“Ó³Dœ£Æø«3ÏÅ º¥þ09¢›vµÐmUBc°áâÆËC]Ý:Ј”…dd_î‘fUÚFT»rÄæˆà@’]Áò6ÊC²m~=tfvYU«9SnCvýE$ ö°é7÷S3n9hÞ-ŠQž¡ñm‘æçРMá|®¸‹B…ä#'¬·& 6;½·{kàdè½-G¡Ëjëðk[ÒEfÇQúÀÔ¨»év¸ 18BεÝýìr{îœ. 2ŠóhqX¶ìµh5’®vV i˜[)9!<üݧúâ ›o@íáF ˜ÚùŒ0¢×·ÜÑ ,)x€· yÁQ‚àðò^ÀHOŦž©ý 9,±E%È™œ-úÈsè³q ÔãAŠ©/­|‘$Hat勔țmÉ„Àá²(ºªMO¸%‰‚¥¥ÕªT<ÏN07°O”§g Í›e$G/L£ ýQmã§íÆsÕwÍþ°;"øÆѵæËÁð¹ }‰p¬Êu«™¬if2Êõ5Qï Id¨X… ‰)&ãìT¶µxýöÝkñ¦ÛMûk9„õ#@~œ[Rö »üào”ðeô †ƒ®œ¡¢l.Q ´»šS™m+»­ߌŸ.«`ÎWÄ‚å=ø-Uk`[ïÕ;ñQÙ‘”ǃ¾L!èY!ãÄ®ÈXïf×m®P ˜ÎŸ¶9p„œ¯»v˜VM}¯Ûn.Rèî½ ´DÇ#îÆ¸}#ž¶ PÏ@ ¦½-/„Ê©?O8ôFcÈØ!N„xäy¡rÏ*X£ì5ˆ~Û û™Bk»‹ˆ©×ü(¢<»ðZo§tÔ-S«ê °è¾ï¬º3®€Îžö.åmdŽ#åŠ*¼  é­; èˆ=ÂruÓGÀŽL×HI„²¿ÆÑÁâþßå»Z\öz¾¹wt…*¨ŸRLŒ¬s´#‘ÞM£ãYàÓÈp9WÖì™ãXFî>൮Jʘ70æ`ô€Ÿm½CqoÚ²?Z›àõ³³¬ŠøûÆ£Ò\{´,éYú£(ÍË”Ö-{312Ó϶ææc[R1G«§Þ°äóe€K÷KÍ*¨Añ·që5OÝ,1â ¢íxk§ð°œ+{$O|üÕÖø9Ãék§G½;.Z‡°@¹ŽíTêÓ(âè q¬+‡4S1›ûRÜ…pÍB\ ÄœËã©ÌàB´ðGsÌ—[ë«(š² &ü;Õ3ΞÍ8UÃ=l¹ÑääöÁÞ`ØúH¨Ïûž,d«8ÍZÂ5e÷UË­MWÔŒä©âk¿dìI¾”GS9ÌuŽ ½0ÐN`•etìÛ9%Q šf"È”½ª«QÝê×”îšMO0o›Lc·/ -ä1*e Kñ†`»¹†ý ߹śôÒ¡ã4Θ<¥¸a±TÝZww¢èœøÀ)ðœebºùt÷ã¾QˆA»e)£àOÇ$–-elÌ™<«Q£×%ÝS ìÊ£6p‡ÎTDA@¿7®²6‹JŽ0ȪXºdç¨R|Y ‡^óŽ+–IÁ}\¶dJqŠê3ŽǺ„Ÿa\œfl4µêú~:Ð8%xë¶Â”Zoapú˜ wMM‹šÝuÝž~Ìø%4ÏÎ"•)› ²:¨ùËzõ Tÿ²O+Ò|)Çy÷«´iþµ[Ý­Þ¯™Ä&õI,Òw§K”Àuó[G,x'„ÐÁÈœ”íÑéŠå‡ë7 Ú¶O Äm¨$zœj¿2O«ô=æ@òD‹Oœ¾c|ZYúÚ®îg°_Ч¨Ó$ÍÒà™¾™©'öƒ®éìf˧/s¸³òîÛéqëØ<àfmw_6ßk<Æcâ‡Ôý»²®:ÕhÞ­] ½ÈN‚ý~yü½©“ ‘¬ mé…ôü5­Äüû,1ÏÙ®þ!Z¬õ?÷"W endstream endobj 575 0 obj 2824 endobj 579 0 obj <> stream xÚXÛnÛ8}÷WÌz"iZ¤¨›·ÅMl€ôÇEQÔE KŒ­F¢TIvl÷ƒö/w(Ù²u±Ûm‚$´HÎ9œFƒÉCOƒ‰‡¿.ðgÞ{9é Îu øð®GAÃo ‹Rbr˜D½£Ç“/Û)›ÐÚl¼Ï• ù"È ÞB_— ®—±T£|!@Ùœó†3Ʊk&½ypû%ór}s´Æz»™c“îÎs£$Ã{›—5Fôõâßé…K_@ß‹ü0‚,ú5p¹Í5Æò rç"ëXmRb™V¹ÚwhÎÆWç°óÕŸNÓéT¶¶”¦ÝÚÊÚ[÷Ð)¡¥ë@æÍI¦Ç¢ÅlärªÖ€›Î½ðnúTWŸ>O›©F,ü«6þÝœÓ4bXzü àBä໹;s3ŠðD–Aâ¦n$r‘fp—Æxq¹ÒE8w¤"2?f¢áÂ@èßu±DˈØ?õb_ø°rÃ¥@Ëq yŠJ<»¸D‘f‚4-ÙÒcT–¢Çìk˜$á(%“ ‡g%°+…k-ˆéQÉ‘bçúiçý“¦eÓAnÍÊr-¹”î,YèOÿhî3¤Öªö!Ó£ß6Ž¡I·Á¤Û®ùIE¾L%ЖmÝAÞœjí?ÍyjǦ»¼¾sÓ¬¤túYžrB®‚4–F¹NwâéaŽ‘.Ž\¾j×lbÙ¬2¾”Y0—+¥¹ šß>¼­‰™;xZí­œJ]ªQz¡|"œéQÿúýhüñöf2¾|sÑÁ,·m¢Û¼Île¨ƒZ®RmÔ¨-6M†PÈúöçÀñ÷÷ï‰È‹’IÔHà¿èŸ€>=îòcZH{[*Yî‡^¼ÌáùsèŸÅß3?Í1Ä$û-$!Ú¾š-– 釵- C`ýÀÑh<~;ÂKׯżØ4·0LvËô>)rÝÂ`8µõM9rfZ_¢’A›?jÇ¡-ß•¨Ü<vÂÏT Zˆ4“X;ˆHwLb8úÞ¤Û&Ñ­Ä:áê–‰¯U—U‘¦EÞa$ŠRš¤ñÓ¤:"1¸ð fXfÓ•HÿÍÔ8Å4ÍŒ¯›²ÑVS‘|ü ^+Ib=–‡cª2bÈU|é:‡‡ _ Â÷ã+Ìà÷e'0üyn ™ö~óûwêÒ즞,ò<%aDbµ!XdkÞ›ãO<šL!m:aa,îÇE ¢iôWÞHãÄÖØ7š(=<a¨ŽTˆ•(:ª2Ùì_¾FSÎNLMÿ€Ìæ„küÀØøP´3¬XWEQÀ”-dGâ»öº—ÉZêe'L3ºÕëæÅæž¿î}í©¡šQm^Ø3Õ¿1ª‘VÀ,Wl>oWlö,z@¢­ÿ ÁBi endstream endobj 580 0 obj 1567 endobj 583 0 obj <> stream xÚ­YÛrÛ8}×W ò°“ÔD0Þ=ó’díÙTef'Ž'³[•ª-J„$&¼($Yµµ¿”oÜÓ .lÈvfj×IÊh4€Ó§O7hOÜn'ž¸ãÛOø·œ¼¼\\"‘¡¸]L”ððG‰X‹Xi™¤¸­&O…óÕõùåå¼ÙôâÇÅ“L_WÙÒL_ç—â ý¤¨–ÿ*rzzuóæúqq!M+r3Û,—E½|vû‘­äi¥áXéUS÷¦î§ýnm.± V½ø¸6Ë'ǵ×QªeFÂuiêe¿â:K´Ôi|¯³ÃŽ.ó¬Ï†oƒ³O?<;lPŸí0ÖÒK“oïðàùÌA¤§ôÌÁ\»PI¾÷3‹@ÉÐSÌÆ”ÿv }%}OŸ-ùX°zs×_¬Ë¬¨Ÿ<Œ…VRyþ7ü^ÝÜüýæRüÒ Û¢_‰×½—zîÊ“©<Ž‚çÉØ;±ÑS((5ÏúùJ|x:oê®Õ®û\®×——/³üíÆ´»¿Ó"ü.„aâB¤Éß²:/ÈêøL³1¹mÚÎ{À‰sæÅ> S@“>âóíoW7ÿ{ô­#ÓÊí*ëÇü>s¤2æ”jM¿ik¡ÎLýT†J= ¼N¥¯ô·€¿º››u_4õCÈ«T*å»È¿"oÓ¬,­TQš~eZñóîÝÛ7ß/ÌÁíY0¼D¦*ø¿#H >âó§«_®n^¼ù³á½ŠþP<‚8ÞñƒñÂ?1fïÇ;óÄ2Âf]\\c –:q N€À$Ád(U(Ç~”ÌF¼CdÞ!T¹[jÔ-/ö™éû¢Ûd¥x…8jÏó‡]øpêlÁOCFï[¶ ¥dä3«¦ýÔ‰¦DµyªNt›õºi{“‹ÙîÄ ±+ȧ bæÊ̲Š3|ÏÇ#DóÃJ¤ÈK3Ï6r0aB¶4‹Ã¶œ`ù‰ôÃÎ#kø°=úÇ ¼}­÷*ÌÀ }ÄÍxÏÇST}6Î7þ\lXe,¶P“Ôgs¾°ñ0qÂÆMý³ˆbéó]õ€¤j˜QŠ­‡,“‚ù|•ØÝ‘bÑ6•…ûD…²TТ5ånì.Hˆù“ž¹A™?Œ¾^ˆ]³y#jǧ<ÈZ#æ›¶Å*åŽhÉÁÃÑ™Ÿ÷;_¦|7´(ˆŸ!›Ã€òC-}>nI*6ƒ˜^ºÇ¤"°7UL’€ Þ¶Eµ.-­3ôج—m–ż ’!_d çÁ™DÌÆ´¹GÒðŽ$êÈØg&„(ÙøPÉ=…C;Ç›7Õº(±¿²¨Š>³x½¬³ÖdŸ†¸“Ÿ)Ú$¤Ö~ –ŽÞˆ¤P_ïX¢ÝÒ!3› Π9g6<‹‘‘Z³qÆšÐòÒ‰‚ŠÉ×E\.ú)³àˆiÔjÒÜ—Žé;‡;mìên ìˆ0‹Ö»G(FÕR>4èïª&ß”6H™S•I‹ó×m~URœØ™bÐÅ(:>›ÄCG6£ñ}si+ß©ÚôvÚCÜnüäaßÔ×9kh¿š¶ÄÁ ¨ øN“ÍÄn×õ¦z~ @iw„îêöèÐSê9C1¯&ö7 ô|xLD9 Ïy„ÁñÙÇã`KO«É‚~=ujE›´×HŸ-=^9Fÿux ~{XÂýp|RtS/ûý³³ºУáÆ±Œ†—¢Ç—Ué‰ß:z]œÕ â~k4o:8ðh_„Ž`Ÿ;ù<¡G‰SÚm¤ôèɳÛ,ŸO‡9«É¯ÿÔxË· endstream endobj 584 0 obj 2363 endobj 587 0 obj <> stream xÚ…ZÛŽ7}Ÿ¯`^6^x†Û÷ òd;qblqÖ ‚ ”ÄuÜêVš-k´Ÿä‡|€¿nO±o,jÆa[š.’źœ:U=X®±ÚàŸñ÷þêåêê_¯23±º» E€?¡È#‘‘Œ²P¬öWÏ2ùÏÕóâI–2ñ›©š{ñ[SmÚ­§ªß‰Ûó»_~þœVÒ!a.£Â;#ËÇéxFÈN ƒ@†1—/Ä»]Û1±,”e”2±^üT™žËEQ$ÓƒUÝ6šœlXæl«Û­¨²öàiüÓùF ƒY|¹BžœØå“\†[ÐvˆC(&i~± ‘IȤUWµ5çýº­8èöPkq4što¾ÀvzµôtÜìÄçÁD#ƒyö>"Njž}¹-'©2•QÂÏ;{“¥LJ&ÂkIH¸Ê„0O€t’'°š'/~ZÝþ HîQÕ´™Ú5k´€úûgŸÿ±ÙèmU÷e€ï U_ýþŸÙ5]ø¥¶ÛÊÇ~W€Ø˜¿t}\d@4v¢uýäs"êžrÁ‚[_7mÍñ…,!ˆudµtGH€¯í¥xÓÚŽ .b¶–à ŒIaãîÝð¶±Gq$SÕ;ñhdä©Hœåz´×ñ@æMÄúÜk"$ÝrŽ8·%ÝÙe2]cqÓ%å//õQ9½oÿ¨€÷µ× ³‡c­x{R”2¡w—^ÛÛ ¹‰¤æ¶Ieã¸âÜx)ŒpÝÑ…Þkà”MÛ´{`Tˆá¥‹š‹œ­UõQÁ6"ø«'¼kí^‹ÏSYòk ¼RŸÂ3õOD9?Þ’bA¥C‹íAãQਠmÚ#ànL«;¯"QHéÇvxèYBôìÆ2S¶ ý»ˆÑ‘Å|D=jx–¡å-¸ÐY•kå1n8¯EÇ‘¤|щ ör. SȰûNí…–$w(:YÀ‡¶ë‡Üb Ý´² ¦ÅKeª¸=Ö}UWÔÔâ-šmöåí[vͤ!?CzE4I =ýÅQ×g9nÎd¯—ÙowV\…’czˆ˜CsâÊp°*Kx=0]­[êyˆ¤¹ÌK&Ü¢ùÝ(‚±¾mÑíõÚ‚ô}°Ë+¿ùÍdÎU^íZ ÷´ ªïg)w@NÜ÷~ d\'µá¨jÜöÀK4@ö–Í”z¥_Þ“xAµj¿×íÇt×W¨ÒŸKWÊ"aK¸•i"sªÈD%N.ŽQë=j‰mQžÜ5®ü1ª ßdg1¿ whÃ\}Û]×îýI†‘à eðêóçD¨@&#A1v`2 ÃEÞE ðõê´ZZÓúT…Œl2uGÉm¡ß RŠP¤c_õÇ’Ó”ÜR¯y)BY„\¯•¦ØŒc&âµÒ¡¯—öHpæÔÜsÕm⢠ÚcjLïš(tf6-ï-3êu]¦JyQ²ÇpÖb_œêñ²0-i´ÂV îTƒ´|úTšø$‰w,B¹®¿£#ÿ8¢”¡º¸U½²sð PXÕÜC¡#wM}¦Tâë•ÇÎ ™³c^¼}3Õ@߆Á½ˆ]Û¦Ív^b„ . “÷&:‰Lù~}s ;:WƵñ>ΰùþ83 îõ0ÊÙ\Ynâ8$¸ÏuÝö40›*F¢¼è”ÅûgJ|¬Û<˜#´1Ô´—ÁÿÍL¡Ôæü>þKât‘Iµ÷ƒ†Êk!ÐsåÓw"0öî<µ~FÄ™CµW¯oŠy#Åð5[Q G¼kk’K†¥™§q÷š;›v‚x€åˆÄÙñí+ôä.¢Yvú…ý.Á$É3Šw×ÞÎë‚/5%ÊüšB#”9¢x’‡Ô«»ÏϧPÑ÷Ä?nhç™L¦@vµÞ€'ƒ7K~Ô cG~û\ orGë?zfQÃP•æÛ¶à•+ËŒ¯|è-À®‡Ñ¢ƒ«F«Ä…ßĉ", 2êÌÝÇŸ<›ÙjêuÚãýĸe–1᳇ÿ¶ŠGÉÓçQaÊsïDšò£ÛžÐá®6ˆ¤‰nÚ2@v‘â5§à%´äi½71 t=£†žCÂúæ#q7Þ¹P¸~åbTã‹‹.ŒÖbÇ[™(B[\,ìhÉ]øU÷²€†•QGݵ+ê™?ù¥ùé TTÌa7‡ õؼ¦!‰· j–V Œà› ,RGõ=½¹Å­ú‹øÁg«zÓO‰"åþš¶ÂÙêJÉ9ÌÅâ¿›ŠP¯™”ì¤y.–æÚ…eî9’º:ÎG#4éEÆD•YÜLïÉ•±ˆM„¦Ö4S˜:;ô%zlºÅhõ{­yŠ9J0¬éõË@ì|l¦ ZlNèUãÆa^‰3 ÊÀ@s°3«÷,ó·Lx‘ñ~#F])b¶ý‰¿’Â-ÿ'üÕŒhàU‰Ç«èýEÉWÝþj¼}ûqV|xõîq>FœÐ[gQåñSâ”úŒ¯œòË´/I2!¦M×qÚU›/(iú&z8@«i¦xÑé”ñ,\‚˜n2}ûp¯´óõ‡Mõ‡‰©¦­yŸ¯îvöÝçäPuÏcšØIâJS¼õb©6t>‡†Ô$+3w½² ÁIs«6­ùa5/ ÄMˆN+›ýýý<},D}•&÷óçYú´»ºêÏË•ƒ-0{BlËþøâ|÷ø<‰ÄôAFÓ9þ—ùSH<¯äÇϤ‚sz”Ä2R<Ïé]Ð\²aóOfˆß ¬t«š£ªGÕhÝͰA@z‘‰ûþõç¿^ýyEéI^’¶2}ùX5‰éû"1­Ù]ý.ìõX¥K‚ endstream endobj 588 0 obj 3494 endobj 591 0 obj <> stream xÚ•ZÛrÛ8}÷Wàmœ!^gžofÖ[¹ÍZYR´[L(RCRVT[ûAÉC> _±Ÿ´§ARbCRf¶RNQB£Ñh4NŸnÊÓÍ™'¦3ü÷+þΞOÏžþ¢…—÷gJxø§Dì‹X)bº<;ÿ²nï“÷¦4uV¼ŸåßDÕ.L½É#Å“é‡Ý4•¤’O½aÃi"u46bÝeø™Íêªy)ªumÕ>ý%pìÒ¦Æc 5¦¶ó»NÜ݆´#.ÌØ z2`}Ê–«Âü,¶ÕúsmÄÆ³j «ÁÐ%ˆÑz¬{ŽÒtÐ1«æFd M.dg„bé'Ž‹£XI•ÄvR$µd¾ò<©4—ïÊÜ*¯Jzü´×Û¦5ˆ&^xÒ C:ޣǑL½ÎÀ—y¹þ$²rnµˆEƶ‚!›ðÈB%ã ÑXK.69Ì{7ýå"Ízµªê¶?Ýy¶m¤¸º·¾Õ ¡ÔæåC?Oä¨î…ïyJTµ(Ù)‰/#ÍܘZ<æe›=˜‰È[÷hïãë`'¾ª«»ì®Øb¯ ›-ëdïº ŒÝéÊßMSv“²ÞÜ mJ´¦^æeVˆ«§o„=—u97uÓ³MïSÒÀÛo³‰hªnû0ç¡Î–b^™¦üí5òpƒB¶z+jóû:G8fåX6ôBéÃacÙ­hVf–gE¿/¥Üm!®ak3B{VÕµ™µpϬxp]Ò™íâäZà›0Idw󚜀@Ç¥&ÌQEù8Ô t°ò“Èïmä|E jáŠÇvÃ\øä…ñìJ,ò‡ÅųëË«+1[du6CìY¨ÄiÍ ]Rû¥³Öï­=¿õ<Í7pþ&}yýÇ‚uygj™‘L4³ëçû÷¸ù6¡sv1Œ£äDz&„ làŽ8þ2QL¦eÕÂcå¼ ä°A$ÝEÃ`'?€¹Ã«¦þiÌf´;Ð:¡¾ÖÒç‹<òñDz\¥¡~`ÓÄX‚ðKùG&†« "WÑ‘MhPJ=¾ :R2ÐLt+î«zIá3d– ³ŠbBßÛZäM[Õùl(^ªD °ƒÂÚdMU6âJ<0W«PzIÀDyÒQ©Ô>àIÇ¤Š¹¬½«xê ¥âÖ‚#Wp)LH–$Ld 3ðˆ±a.6yQ8IÓéGéé•ýªRÇ~‹½%Tì.>­Ë ¸€é²l´”jH3}ST89‘\Ü!ÄvÀ!À˜ø¦\jiwÓ¦²¬ž÷g¦nlÄŠ8ä8 ´'“ ›j/Üýºœµ9˜Êq&§ü¤óóhB°|¼=¿}ru£¤Ø1ËJ±0ÅJÐí FŸqŽ]%}º1#%­sšˆD™FܶG.žÄLÀ²ÃS´·>õÿ³Yâ¶ÆÜNqÏŒH#ʽcl–yËS"’Q øÒ–¾ Gƒteâ¾6x¢ô´4àStd»,鹇¬’ýZ y#I·w4Ìü•iS>;/ÀÇ V¯–Öq¿¾~'ÞÖÕ𛾧m²M~VÚú yWgõÖ^Ê%2$Ÿ™}DýÐÒÞ®ž¿âG²¶?Ö¡ËwÎ]@€$ÜØ)P"ÕѲ “ñËCžå›ß^l D”ÏÍP2šêc £U–¡”4ñ.kò™‹ É Ôl"G5ð"°q°œc39>ö+nÊ÷ÑðË™!šEµ.æÈ6÷_gæ»…17¤Ÿ¾Ð Ž:c™q¡ÃcÁ—îÝXö&/ç‡ZÜÞ8aB›æø¶È6ˆ{'±HþXWJhÌDxA‹Øô5w­±d0b"›†gŠ„ÛñìíÕ?Û’r›q~/' ›cè2w|]æ×Hã[Aū剜cR]¬ù’•à†T9³º˜’âMi¸0ðE¢9Þ3þª„5êânÛš¡âJ#‡HÈ>Ãü/ìÖ„Ä™ÆÃÏ^__}SáÛóŒãi‰Ï¸Qƒdó‰Jß>±Y_ìÃ'EÁÍÅ·¨ãæäÆÏÏ>s´Ð^ŒˆäÆÝð|ƒ€O¸€#•ª§¸ ‚$+`Ý΃’¾u ¾»ë·9ÜdùÂÌUÁpß :ï.¯/üá"Ä2ß„ ›†%a/­âiس7|¬XŠkê’}¹ÿ…ã\ݵŽDoÿäÍÎÁ7Ÿ]8ö¥f‹MO¦Y’Ò!~eš&{0Ï«O§± ´ÆY÷ÏRࡈN}׫ûA8/‰&ͨÑìo^Öõ³&¶fÉPÁƒ‡ »ÝÕÓsóµìxû×W—oþú¢›DÅs)î˜4œ&láu^Ìé¶[ “?®r`¸§þ¼{…÷hNo£qS†ÇbR`О†÷ÍoÛ3_YK]† Û˜ü:a>n✒p³­³²)²;_ñh "[ÿ×ï9ÂE"Pû“?Y»h”è;/òLÌÛ…CŒN…ÌX¶rÈšï ü“£ ˆØxÞ #ˆKåàÎ7,¢³]·°!‚Í$#älÅ$7ŽernÁfìi„T&~}w5d îtU “ÕENMuÞq¥Î;ÓÕ³@$o§®Ñz›ÝYLbžÏ÷4ÅivxpÇ3y¯ÃÃ…Ùxæ¹íæ’¾¦B¹$åý~À4îxÛ ä4dJÖmç ΉS09&†(^—”¸ó¦Íg²ƒÿñŽÕ¡þÆû›Ýoìí°½K³s‡…¹Yz_€]zæF ¼fêjzqf±^p»”tG”bòœÛGÔÞ`ã(u¬$ç”/øøxü ±¤àŽšƒ2›P~$aYWßwtÞ!ò½„«ƒŸäëSÁ߈$Tá;Jݱöö¨÷K^7í䨩å˜(&í´$SElœ(pc~èEÂ)6–öq¡Â@[á§OÅ%jnʉ™¸J7DvÇ3©ð«z|í>»{ñ#$¤¡ëPáªM+ˆû·ç/ßN¯§ÿ«Ù›5öG¹¤ÄÓKSNì­éÚW³«ò ²ýÉ=­Ö»c’)œl© xµ.Úü9Š’iuÆ ¥·ç—oßcÉDx“n‰¸P“Á–ÞŽÛ'?»šµ²]5Òüw ᢃôÐqszçÁY§yà8°D2¿ÁäÛóÎ-ÇÜöòíå ¹ô¸ËT , ÕQ—)\˜8ô{— ~šV;çýI—ÙQïÐq*FÒõÞqG*@a;TPHÌû<\ç pJ޼ÓCd F£ÆöÛ*ó¥¥(ðš©kÜdÛŽÃaØâ¯1'Û£8x=6ÐôðécÓ®çyõty?£¿÷óâAÎV«uœ¯¹š¡„;¬´ìò-Ó:\C¡ŒõH´K:6‚^LÏ~µø;„7g¤µ#XðòŒª¤þCqv}öÑ'mÉÿ‹È9¤›DGN¥Íg õŸü^¨#E¬9…’ÐÆ27î´ d:šSà8ÞH0ý¯·.£Ñ)[fÂ)! ¾cÎË¿or´ò\;vµ4«T´+ŠºâÚ"€Ó•‹S¶¤íá.MF´“j}ë•ê¨tÇÓýÒa¬d[õe…Šì+•ç¯Þ ×3±´SúiàÔ((b¢~²ÓgJcqËF[ñ`ÚÝ/À>‚®Ý³·OŠç¸jÙƒËã€)Êr@E3`G€{Ô¯–ô"åtáqS©6§îüa£)ï‚6Þ{0(+г¬>ä±t~¢ Q„Â)ã]+åâPzýø@ãÅ–©Í‰‚õýP*íP9®—{"ÕA~sÐ.Žc©Á­GÚoÜ—m!ý i?~PðÈ„L‚“~ŠQð€‹dªØ>8¹DÙÁŒÆ³m#|A܈•©÷§|À’6o€¡AÄC¢À6B1[žÙßùÐóð˜ŒÂÀs!°{ÖxìdéiqvüaÚ£·¦ôòÛöðƒ#Æ6Ä/†é‹¹vOôs¢ÎŠÝsoÇþõ*8ï%†9‹³QB×ÿ!¹W endstream endobj 592 0 obj 3409 endobj 595 0 obj <> stream xÚ}Xmoã6þî_1ß.{µQ¤Þ|w lƒ¤°iw/Þæ€óPd&VW¦\‘ÚÄ8ÜJ?ôô×ÝP’ Á&´ùp^žÎ 7€ÅÃ$€E¿~À÷“ï“Ó ¿¼›pð‡CBÂ9‹Xl&'—w°«Û¿¼[üú ÈR–ecL£àv à\² #Ú²Z•úr`?ž/ ßn«²ÈmYkXž˜¶XCn¦°UÍ:ßââVykÔf!S–øª[ã$X²LŒa7d;ã,KÆÛ¥^Õc„ 2. LYDxª›Y¾›Bi‰Å2Ž'ôÎZÕ€­Áùh×j|Ù³lîØªÊÛ&oJeà®ÆcëÒÌÝ‰Ó h…º8 PaÔ>=…³ZSEâÏÀØÆ1Ujø²¸˜¥NÚ&·ÎŽ!,×/€³ëY8˜o^”aüãNCâXÔx"\žµ6ŠuÞüZ{—.ßù‡e†ìû¯¿'õ,íöeÛFÃ}¡ÕÃ`ÙòÄÉœB0u¾TJ÷_8Ú¯wƪÍ|¾Pv>?×Eíòm>GOqÿo¾¦0csØiúŸ¿‡±~HàŠzßbØ'}diövÿ\—+Ç¢3÷¤ço[üÔZL(mAãê£ÒSØóm.õµQš²8¯R%)“¨Í›&ßýýûUï[ücàGœ½ÿAY‡7x[jŸÐ(NYDƒüÁ\z•Ûõ|~Ub¤ö_΀O{¥³÷øùÞ®_¥ƒx··ìŸ­¶åFÍç—ïO½½VÍ·²PäYçÕ|~VowË“NºK_¬Lød €r>ÙfyÒ1í²h°ñƒD‚ÜîS³Ãÿ{ÿÝ|Z.ƒ§ƒ3a‚œ’ìÕRËÒÞÕ/º*¿’J+YœHW/@cé$Wp†šÆÀot7¤'ˆdÈ„ €Ÿ. ÁR–P%ª1X‘j4 K)da3øc¾ÙV˜l9Ví¢vk«ð*—ºèÝênضʭ»7°ÎõªCCU[¨ï\åÓ÷®|âß•G¶Ìij'ÊJ³5ÌóU0L‚ñ ÒxÄYÂɾ‚U­I]çIÌRª´R+È5!‡,‰nªiꆠ°ðI*mV¬UñÕ¼‡ªó£k“¦t´AS·¶D»Ò2 °˜I×ÜÇ„$ü%”U5ð‡lÓn¿µò8a\JrîÕæ“XþÇÀ À2.(Ào°!Þ ¦ì±?.­µræ–ÖÀªlTaa¥\> stream xÚ•ZË®ã6Ý߯àn’‰/#ê­ìÒ ¤ÑÉôMz0mÚVZ–=®ÛóIYdöùº9EJ6‹¶ä]°H‹U§Nˆ§ãC žVøß÷øoûðâéáëï2‹Rñ´yP"À?Jd¡È‚P†©Oû‡/2ùåÓoçÁ<—qš0ñs_5[ñöôþ§¾úJT(ÅÛ±ªa×ér­×âÇÎ]"N#™1[£Ývåž„¾þ.*ðÔI³Tfyn$ÏÛô¢iñ‡ÝDôåFÿeönܽB•É$a œÄ^— 4ÞŒµèuÓkyÖ}Õ6CY5½xv‰òŒ­ »“¨«a¨5&¬µvå ÊÕP±Sb‚ÊÙ<¶hœ+D|Ýú$v¥’ —av•DERqéfèIä1QÒµ»–Lã³àеãg8⢄5c¿€ýÖ¢¬kÑnD5•ÛÃPµMYKÁ ç2‰ø‚˜@’Iåí¨Å®d2Y(‹Œ‰<óñLæþë¶Ñ¢o÷Pœ]R”Ê0™pÛ}$—˜owhžüÈ.!бAêíà¸ÔpÖ+SÏ+ã"–qÁ&–+~sðòœ ì*~·*‘yÂO_âBn‡AÁ““^dàßpž–îvp‘œŽÝðºÕ}ó7WP…J¦|¡ŽƒoÚNl:­"ОQp}ÚiXV‡ û¶1s†üÿš@qx«ÝÁÙNâÍ×ï—íØ¬&ª]»Ò}ß2܈ÈäÛÌÎជ0TîéT’+/Dµ§vìh}vì$´ëÌ;ÇQPøVVùÅÊ-AA£WéLÓñ8¬„‚ûrN”c¯ixìGs`Å¡EËNËS<8‹s ‚Š9ß\w;òUDëhP¸«º<öºãxaR{“źÊeIøŠÐ€–€jÓ¹ã,¡sã+ˆ"w¸.ÓŒû%Ö‚ŒS!¿ý j=0›ãÒ±,a,„#‹à°Èd€Üâ®\V©DNDÖŽÕJ‹²ŽÏ0KàMì)ÞWÍJŸu*;-4‡èX¦Ÿ÷\ÕÏ®yޱÀ3@R\"qUòÊ ÂvWb;]¸w´ a†×u8@¦‰T [èè(Òƒ;ŽS6±Ñå0vW Œ]ƒÝ iß~WdVî .œKw=t£{ôöâ>ÉCw_,ÞÂË7ÌÈ °ìŠ-ð\ ’XFLì™ÆθTÀ«(ñ®`¿†m†@vÅä·|¼YÊOÀx¸w5 c(œz@ôú÷QÃïz)^{Ñ‹Ëâ–“6â&t=ÁÃÂñb=dŠ™½æªPîB šæe%Ãâ¾ú‰JeÀµ)ëXåßqvÁC ÝPŽ¢¤¿Ž;ݺ°>x^5ø™!‰óÛô d³aÍ#(“…bãð¯mkð©Åîý¸ŸˆíNÎGÑcá v\íÊÃHZj‹¼$ô'ô%$êu½1úN‹ÑøŒ4Ä-ücD„hq1ݜݠACkô:ÿ88È ¥/)ÞîݳÌ×Õ¾ L³ô`àmͲ@ „Ž2¶çÑn7ÖÚêXr*™›ØˆîQÍ4‹·Þ?ex }x®yß[vȸýž²Úã™ÜO>êÑÃ"‘YÌVdמœû|Vˆù -Ù(R2)˜Ä’0-™kٵаƒÑûv;§§™ÙµãÐWë«»Vï!´\µí` ?¨Bx9›ô/>̆á‰&;šˆ)Ŷ# C^`ÐÙº!>§DnB“4AÁR{˜³G\e±¶G…¯•ëg$Li%&d È^mçX"J¦RO±VA UÄeÄ‹±ª×â±éÝŠ-N‰3„fÆ µ!ˆÁpÅÆ?Î ¶gQ:uE9@€BÄ||ˈA/ &PîM1çSU„5®¤ai>wá+øŽ cT™|!ã‘íæ‚â%«¦çS¾ýñ ж%ïE&(¹¸áÊîÄ ‡à7pŸJ…iæÇAj)–UƒuÅ-\¢¦Ÿipé\©»R’9 ›‹{8~Õ¬êÑ@–¥iÖõÏMIShp² 柳Mh«ßèX¸2øÆÏ¸arÁ™gïI ©Î¶}§þs÷¤`WD¨;k¾'ï"B8nÆ×_zCpªŽ3±!Ú:!Ó{å !Vï®ô´Ó½­U†ÓÚP°"ý_¯'M”i¡Þ¤ša ȈìBP|ê¯m÷ößLs6Çh{›wwÄê3;ü»»½G˜‡þDÛŠªËÁ6T¦ñ\;Q9G&“p/êýÿq[¡83åêßS!F^òDÿ2ov=x$TïÊf@ù0X½rt ©‹¹ÁÄŸ7T€<•11ÜŸmŸ_‘j;¢¾w…9uJsF\àŠ;ÁO¹Ì±ÿLl‡0V s'ðà^˜¸íᣀ3ÞH%Îzçóž3‘÷3.07£áúÞ«Aˆb˜«~é “µxXÆE„B2eòwâÒ>hELtq+[†``g³í*düéÜK}³€W8_šòi>9CvuÇÀRLÀë=QR\0a¯ \P£Ë׆†(±¾_kïšlà'ûRâ]#2 ¤ïn¥€ÝÌ۸ׇ²£÷¦µ^ò–b!Sńǭ»ÃPí«ÿ€-ý&G”ð Èœ½©uîÖÎDù‹€•9¿NÿN¿Ø ñ§;•ÿr $+Šníc˜Ügê)À›hê©;¥”Ê’³Üm®kªRWìBuŦk÷ ºc·Òöž÷Õv7Ø£{eÓ»Ÿ»²[д‰¹w" PB=JWÒ¾ó£|¦Žw¼DQmâ ów\xÓÕ·\sû ½uÅnÐ[wx~ÔÂ5í€òH´mšÎœ|Õ6nGø>Ymµk+z€ñذ¢*cZ1ºÏ†]±×öµÃ'¨ôT1Á¹lnrçîÂÄ[^ £ÞbÃ[¯•WÐS+à½]Ók¸µ+Ñ{T8J¨áîJX*lžûûÔT!ræOSKÊc€Ôˆ“´ Є˜öÓ%ÊRW”?óe6ÀqúµÍìkíþ¡Bé©h~ÔÀm“(«Ž†_•½ó”´ö_2óæîN¦ŽüÞqXÐO\aN§£”Š(wüªw'© ¸¾zÅ\A_SonÍr¬‡¹†??ÞÃFÎÛ5Y,¸àà+7–Ì£ãÙØì2¨ÕV»²ÙÒ3çþPÕôäoÝgØi>ú,D|'Wޱl‡í™á1q‘ËŒÌàÌöÏSP»Ôía?Ñg:w|õn³p±ßŠuaÃÏU×6´ç¸Ã"råíj$ÁÒv†èq×'±k}Z‡¤êÌ<ú|jõö"®½+‚M¦áÑ/OÀ{œákßBu«˜î.Ø×Ü©Ñ¬×Æ^?'âQÅ侫ýýÄ|ÏŸ¹¨’8ð>!pþŽðieék÷°±DïÅ“ó(H/¾rjÖ§éÕþîöYŠùC†ó>þç/E5`må§oRÁÙê H0žÉ4c¿5|(É@üÜÃߖÍh›}Pæ=ÚÒ‹L$ØßŸÿéá÷ú¤‘¬ mS:_QÓJÌ_$æ9»‡¢ÁZÿ.©_ endstream endobj 600 0 obj 3467 endobj 603 0 obj <> stream xÚ•Zë®ÛÆþžb‘þHŠÈ4—ËëqÑÂq’Æ@Ó&ñiƒ j%1‡"^, }¢öG O×o–í¬$;a›çìÌrv®ßÌÒÇ;_<øçÏø»½ûâáîù×¾‰¤âas'…?R$HüÈ d"öwŸaÙûýÃÏ˲ô}O*N#^5u­‹¾ljñm^ç6}¦^’DŒ~ˢ̋|N ÷ºî‰èù× otÄ‹SßËTh(vZ|{zóý_Ä+ÁÄTÊË"Fúò»×b¨×º=”u]ÖÛ‘ïóÏźѨ›^äUÕØ›(ˆ”J¶ÉQ쇪/•ESCÛBRñË Û›àü¹è°÷¸<éÄc’EôR~ˆòõÄËB¶Þ DðÌ÷Â$#;âÉO$ÓÖJœ. E^‹v¨EY÷èwe'móXé=~³Hø¬ßµ:_ë5-nÛ|¿}Ó¬ÄqW;žãŽ)#ò½ˆ½å$ŽtLF”d^–q²wŒ á!#Ð-dÔb­û¼¬:¡«NÛ,!^œ¦)c9ît«WtF™#|3¹¥òd¼"Z [wQ¼püçÕÙ®ßÛv=;ùÿ˜ÿÂ^߯ûOyH/”Œ¦ÃŽý®iëÇŸ­ƒcÕb óˆÑ8ÝŠˆ†íŽÅ I¬B]¹'Ÿüï{2ŒþóÐõ¢À½&ƒëCÞâ~°BµyüObÓ´Bç0ùøJü—÷¢Özm6ÚçOÜ QÊ^Ëå}þ˜wzŽorW_JÒ¶-vXb“Ù›g™§ÒŒ5íˆtU‰r#NÍ v,»È$D6ŠË;N_H9ÑÈÁ.êaÿõ7›YÝçÃ_9»ŠRD`ìì5y%òzÍô8tðœ²ï¬L°8 ­iú¦‡èš,>ŠBÑéÖ9Sä9Œ8e±š{ /£ë'H<¤fFPîµh†žghߤA‹ŒÛ-ˆ‘š#ÈËž¼˜|ËuŠ(t4¥çx}}ÕÊ>äÌ8!×N‡œ@‹ªò-Û6cžÙ´"Õ;B•ÊR¶Á‰xçÌWuk"À‘‰)EIéE1'XÎþ«ó­©v‚í*Tž,¾}â0ô½$äºÝ‘ßKxö£,‰F×BFÿ¾Ð]WòÚ“"ºÃÛ¯PVý˜hïš[G r?E:K^‰§$[n³všÁG!S^Ê—›rLZ+SLÎ[EŸsÝwMS‰¢Ê»Žró¤vJÁZ€G°:`CÅ02?Ë+Ì—ø$ .X¦D *y.EJ¸*à´å#2õI<6ÍSwÏ5Cj%‰&â)Ï;]ÚŸ„­ë¶-×z‚êãI[× ˜D†œ“BœúD¼¾¿‘Ô˜0:ã­õÓg?ýþº"‡eu[Å~ ¹Fª5Ü»mN·w–AÌƬu}ošÎÈ&ßçïß–ëJ¿%Ürû-ºàäá„—pI€ª8Ì–A¢Œ,ªw|=5±ÖG["Ýè˘žKcyÁô?¢Ö8ʳÉ?æG¦Orxx[·õ‹± @× {½4³,7á™äòž>uKœ{¢vvœÌ¸®0(ƒÄŽ0F~¸Ö‹„hÜ“`òF°×’4 µ‰k}¼¡j´º-ˆEB@.À(†þZ†&èFŒ°§ö­hÂÕ5+oBG†ÞSSû~²3w%“%\éÖ®®êÌB.~ÐSÒüÛÁù߆¯™ò∽ölÄûûN÷o³ÓD”]²˜|ìêURºÛq#œóCîã)ãøp–‘Á#œ¹NêIG>9Ž•çœ`J,PSOóñJF#NÝÚÅ\€ã­Œ”"…eüMƒ[*¼äÓ”50³{í¦Ð¿Út¼5£{7ÉÖÇëšðoNg®G«Ór9:Y8p{Cp³œ½'õM YëtíJ5rLmíìsÝ\îŽÜ€n’”mEø¯¦¡üIlÜ1‹Ï3—‰SkãÎÝ|| ÜÌYÚæp´|<]½ƒ‰ÃÈ‘Îíb¾«{ ¸É%&“\ïԧ.1‘£çÊ!ZMº Ѿüâê Q–1>Ò]wQ£ƒÈ"<ŽC¬ð0o{)‹MÛìGß#¯âÊÇ»í׿ƒëÍKÂ6=Ù<æR³¤;#¨Bq¾Þɇpãb$ç,iL—Y6޲¢[( )Û\󪳓ûѽ¨jg¯©ûñÔE³6h¹ÛÌEñ¸FóZôfØdOàBb3¶·%øØz3ª{RìLK³W8ú†zßÂ…é2JÈm·’ñ9ô¿¡BEÞPóK")‘F#}Ÿ4Ó9m> ñ%# éÇ;&,M_8=m­¤'ýlÞÚ¾y9êÃý¦‹€á° ÿIà¿6ý4+8걫XkôOíÅöUþy÷\l«æ1¯æÒh®9°cn€é«ˆÓAÏGXn(Ì ˜»9’b"Ï»ohK“ ‡Ã‹q¯ å=Ž–Øïúl#ßÑå=¨‘`rú~&7šr·ø¨_¶‡2–oŠL,üÉaÈèjft³±—|cZ Çð÷â0<"ÅŠý©û¥:îï/á·µ) µœÿ¢¥¯–U_<“H$‘(öwôyžSQÝE¡ï<‚`yVxiéiw·?5»À6ˆ³(¤H2ÄÉ…¶ 4šÐtM/sXž$U‚j¤Ÿž'9Ή‰¾: M™&æôýNyXGQ¥¯Ù†¼šD#¾gã>ÉEzìç¯÷Ë=Ò }ÎPÝÅpƒó“oÄ)æŸÏ3ÏîîGQc¯ÿ´M endstream endobj 604 0 obj 3300 endobj 610 0 obj <> stream xÚ•WÛŽÛ6}÷WLóPx»»Œ(’º8@‹v{yI¦q‘†,Ók%’¨ˆR·hÿgÿ²CÉ’-ÊJÐN(‘sævf8r`y˜9°ŒñŸßð÷8ûi9{þ+‡€XîfüKÁwÁ§. BËl6/êMšÄ‹›åûÁ Ç%^(š€ž?‡å^‚Ú¼—qõ¤Aåéb•몬ãJ•–¸º„‡^/þ6ÉŠT>¨{†¨ç­yܨçbF‚ɧ8ÐúbØçš±R/fðAI£b¤8Þ A'‹‘âxË„kSùõµÉòCŽÓχ~–h8~6á«ÉV@q~ÌV€Úæ#‚è~X6ôű­Öwæ?S›ÑNÚµBqàŸª•ŸÿO­\(¶´àÐí‹!;½F¼°‰CµÖ½÷˲?áÀ=Å., ÎfÍwŠYwËÒ™àŽµÄýšá²=kVûÙ®ý6eˆËOS†Ÿ>‚“Óˆà##.mð±×t âvÊì‡~Õð0mÏŸÖ';:xÓsü òq|òÚryu|ûæåí-|ÂÖFø ^E9§'ÓŒÜ} à»Lœ`ðüåý7³3³4;~h¬õð³á¼r3ÛÝóùD'³Ÿ½ƒ±þÇ6%¶ endstream endobj 611 0 obj 1434 endobj 614 0 obj <> stream xÚWkoÛ8ýî_q§Ài“°zËÊtH3í ØÎl;Éb¿0h‰¶ÕÈ¢JRu=‹ùAù—s(É/*lú0’÷yîá½Ým&Ýåøïü[NÞÞM^¿hÊbº[L|òðǧ4 Ô X’á·ëÉá§­u¹¬EAemhÍ¿ÏÊ¢3S®ÅýÙýË—w_Ž/'YÀ¢,Ù_þŸ»? X¥û}ûóú5Ý C²UdE“MܯI|ç릗 UŠº¨¶’¹¬ ͈®I ^¹ Ò€yÙÔUÐHYÑF¶UK¦U5i - ÅsSÊšä‚ÌJ@¸ú&Ô£&è¨E·åÊO|6Í2WþÞpÙJÁ æ^}vêù`Jø£{2òYìùû³ºûÏ|/ìöU~ãF\¹G|e^´k×s¡¬«ïài«”¨ b[ÖÔjáÊñ<–zÏ ÁÊѳ²žáÞÌu"žz,ôÒc þtSÃ_ #”v¯¦ü;$Q›âêJUÖK*泋!OX@±ýh¸Ö©Š±q†0ôéús´e,í£|[ZœÝìmû¼¼êPÓEÿ$ot×Ϙï÷)І›2€€ÇbÖ'ufèæúãÇ·×7ÿšÝ~zwóáý‡w¿»2¼)Ëü>G°þ®ô2îÏY\-!Hµu ×g‹Š/GeS8Ñ'È­¶hŠòö“ã\ë‡ém]UmmDoèúÓ2’xUÉXBåm©ê²·0Õ(Î\h*«!²Ð?Ir-D¡/,šr®®ÐŠëúÑ~4°Ðá•»E ¨aL©-Á¶âÊ•ŸLæé±üFÉ%p …Ê«µÔ†–-°T¨†@pGWÌ|!f8:·<cªŠæ¢’WEœ" Ù±ŠM‰³9Œ´±€C›cÔZÑ‹RAiGTˆ‘l—« Íên],GQÊðq$}fHB€Ž¢ –y‰Z¼ yÛ9¡„õ‘jYÿ!”¤|ÅëÜ-Ñ(LYøÇ*† ²y½åÌz»áßíáïc÷qu¥) ƒÖ¡¶€Ñ+¹¡¥”*t[ Ô¥¤ üâs´*—+R²ÁµnU·áªðSæ᱊CP8®ì"V ‰_@I!;˜~mÞírmä%, ô·Þê¯UÓ\]Jüêj(2”¯2#n‡Y‚Ô¸/¹³¦ÅÙÇÛGﱨZ½ê®wA]”Cr»Ú鄋•œ&êIÙ|j¹‚ŽGI®w‰1|^YÎÛ:_u/p‡ S¢\Û ‡4L„ô¤nŽ Œð8IpȳÂÜè…qŒèJ1§û3]þwŸÊŽññ†’éü¼Dq¹ÄF1KC÷‘üEÒ½õPˆc{ö[½ h;)>YÜ c‡þè^ô5Ó¦–=š¶ÂþÿÑ@Ô)/˜Á(WC³0 \ ÏÝW\Çs¨o\Û7Àݯü~Ìüp$سºY‰ +)žP¼×]Ö¥^azËÂèDæú·¹lDq(Ê›û³WÃJP­×@EÈd|"a¾?û·Ç‰¦“œïJG(EoÞЋ÷¼¬,Iï ð\@xaÛ¦odQ!3éHÅyN"ù´t»© Y¹yèêÑÚ×l÷Ýa_ÚÈüaW•à5t`µu¥ÆVŠ+= Y ÚÕž}–ý‹Âk+ƒÆÆ¸9 ‚…QðtN?ƒþzÜÞŸåÍåOÃò…9ä†^õQíL~qÿò‰üú!ó£ðÄm§â÷ÞÚþ,M E'¿’õ=9Ø£‡Áñqž~eŽF Ò‘ L5>Æ…4 Äu4:Ì7£FfèejñÝtüâÏ1…ħÈÕ•` ôZEÇžÿ ˆÎÉ·‰#÷:†”0žb|LY|2¡Ü ¸»FT{fÞ71Ã[ŠH}ÙÐ;B3L+ñ!¯”@m Õ€ƒgˆ¢y3·ýOðध ¼ÒÂÅF˜8NžjÞý¿ (¬§þww{É]úàɘòõ¤÷ìz·œR5‰#ÏYâÀ~bÙŸµ«ÕdÑó!Bz<ˇ˜ ㈠½[’Œ8¶!Ãì,Ø)s¿ìWàªþü°ì؉·¬êapLÑÿ&=[ÿº½ýüñüœ¾Ð˜gcE¿òºí‡x˜fï]ö> stream xÚWmoÛ6þî_qMÁiFE½¤í€®KÛí°6Þò¡.Y¢c6z«HÅñ†þ üËeÙ’%»(æ -Rw¼çîyx´`²Y0‰ðÏ[ü½ý6¿qÀ'&ó (x6x–MÜŸ¦£1àçü>‰D„J€^(Dy¦¥c(…Ê«2 fbž—–ăÔÇ“¯]ƒn`'p·Ó•ú–ÅÅÅë<ËD¤ež]\¬MÞˆ,žŽ§ÇÏû&<›X¿5Q ]•Xƒu.%~Ôë¾÷ç8%^=ó½ÈyÚ¦„Z¬^ ³A Ô"åÔ³i(³©YayB´Kx†ãûÏ_¦Çý-‹xÖÍ{s<°·ÖÀ<•sˆÅ\fx÷êï˛ɻO—¯~¿Xä¾E˜åuóóVhˆCÎL’Â3¢ Ë0Z” æežB”§i˜Å ‹¾EÏÂÐýa‚ÄC˜‰P&UõÛïñeˆÒØ™Ž×á›À‡ã<@À‚­M o:~²yõX8ñèvy'Ét`š„Óvm?Ñœ„RÖè5—nê7Ï0@Ü–á BÄeS„àZ@œƒÔ=¬@ç …ê·|P§ë@/B½6ßÂ"#nó<î°Ci´‹.dv‹á… ,óòîÔl§ç |„c‡„Í–f" +U[Ë„ˆ1‚–FϾâÈl; “R…KÜŠ¡U߉ì§n× Ú0//Dt·ŽIêGù]XcÑÝ~=»±›,¤ê;ð|ÂèN©&¡Fpj‘WIŒqÜã£y(ãÿZfq¾T§0«4,%†±™IóA*×Ç\û;!`JP+¥Eª ÊÆU^ïLú•ÔòÞ¤BÊ5«$îa)õ¢Á«ï‚{˜í ë¢43vM…bêâ¹ e?\ž=#úAfÝ8.¡À¨ñKJú¦à¿eSš….á%"²„+i¸×&÷OœŽ· ê³ÂaávË ]®$sl0ÛÞaÙ–ìWQ^ˆ¸SLQ1?kötŠöª}^©G¨Ív,6T/Î~í×ßÞ;–KÛÙ1`>‘(KxñŽ>¬®>¾?9e¨²G]gKw³Õ&ã À¾ÒsÀ1æ›O­ÛÖ—Ú²Æø(«¬öW¦þ‰1 xd$ýà™ï"äîÀô!ábž‹ð{;ëûâÅ\õŠãñj«1 u´@¼·i¼|ˆDaò÷ ìÓYæpâíæk õä³!:(U2C® ÃMàD+•{‘fœpF÷"-ÈõÂÔÀA0mN³ê`”ÊØAìÀÁ wÔó MæDNilý#_QÝT!3Py*šŠR„ô‰jû†Öf:2¥ÑRCgÈ Q}ÊÄõébDÑÈd”—%b–¬—.ž0G}ûžƒÁ{èŽêmµ*K£í:ˆI[8ª ë^j\eJÞ‘ÂŽez¬eŠT´ 8#kKkfbB.dÇç/¨JýZ²F¼!uRœþÌß¾9Æwèÿ¶ßÙŒ0Çî¤-S”üGÜhȪô¦I8Æfæó鸉ëô¼ÿ Ubh”괥ؗƒuØUN –9°‰DÏÖsð¢»çpr"÷p—b#í9|(¶¦5$~Ù”`ch:6E#Êæëé&™pr¯S߯ ¸‡Å¸UˆhÓQÕ\W¥Jž9ÞAñ=º0ûF(¢<k+«}%N]±öZo)vüüPo©ƒ·~PI(Þ ·»J2Á†°nõ8až„· L³BéÄ*‹±ïÐØ´`“†-}¼mWe¿ù¦ï|§[­[·¦±˜ÏO‘¸±Dßv]mk·n2•Î <ºû¢EñêpgG´HQ¡ ?^?b%¯Ì“J-ê;—qݸÂö2”µÃyœZ5Q÷{ðþâñ<¶~Eá]…óÝ‚R‰ØYІK—“íz Î(ê,ÇÆÈ\êñfèC2âŽÕâ‚í˜áp½ÖŒ£ùúŽËˆî—Yo¤iƒ> stream xÚZÛŽ·}߯ À– ]ªïÙA q¢ FlhÇðw†3ÓÞžîq³{Gûʃ? _—Sì˰8³v$hÕ³,’ÅbÕ©SÕˆÛãU nWøñüÛ^}q{õú«D2·›«PøŠ<yÉ¢LÄíþê…˜þTâ"øìåíÏL0ˆdV¦Lð¸«j-î^TâsÑ ûŸú]§ÕÚˆO>uCÓTÍö‡êÇ»—âÕ«Ê_/+#™”Ù²Þ¿ýñ"’Q™/ãÏìu÷òlá<’AY,WíЋÏ?ºY×ôÿÇoëZÌšš¾=ôú£g‰³ÕÒPž”xýZ¼ßa¹ª «¬Ûc#¥ô§$¡Lƒp™´Öµîµ8´m}軳 âPÆAtQÝ3Ù(”a[Ù?èÚh< dœ.óîÅc[­ï^ªn»úLL8ªŽ.F˜_†Êìtç¯2Ò3}°ÆãÁÖ‚¢Ó˜Üi;ª~1潆Öê¾þ-{¦eãdÓšuµñòg<]_§û¡kÎý1MKœµ´rÖw^‹0ðÜ; ™ãv·;èç®R&2N˜Èµ?ÀËŽ®TÇ’KµÝƒǪ߉û?˜p˸`Òß¹ã¢(ájUͺe"!–2‘£ê+&•2™Ô#Ocfl\/¥šõ¨ÿ7ÿxÿî_ó¯ålÅœ£D\†2ÉEšD²œ– ‹ËËB"fÝ]Åz¥3o~3yˆ¸wµMƒDü4CU“¦ïãi”.¢©Ÿ°®Fˆ17 aÂ,g¢j¨{Ñ6ü²’RÆ\Œ]V˜Bû—æ©zº"Gs |ø”ßz ã’I²¨`LƒˆMÛá(•‡®Ývj/úø"xE+TÇ“îÄ¡V=d÷FŠ÷Z uÏôI|î6ÜÊÀú”Û}} ‡‰s^Ówê¯ÚÆööH5ß§â¾X¯sV8òñ\FÇ s_ˆâLæ%“!_ðQ6¡ü1¿Ûˆ§vÇŽ,Ч¨µÖÖÅ ½V;½BÄŽ&¥…‡¶ëE]=¸ËÆ!°˜­l—†®ëivaß蘖lÞ#Ïdê¯K1K>P.ÁU+n„¤@ªNÙ2‚h­ŸßCÊñ®=Š`ýúéý·õjDçÊ4Ÿú^_0ñþâ]†E.Ô r\|F9Ç]’ïÃðHަ§Ÿ}÷DÇ,ö"J>›ðyT„l¯W;ÕTf‹c– R%|[ìs¯V£ f×úf\ @³ÇÑo°ÌØnNèØißb¹,™<Ò?ŠœPÝ•`f‘ s6®ªšpPže„‡+÷VT×W«¡VX«f ¨–¼«Å~èBÆq"s¾ÕQ·0ÎbP4^“­˜ï'I&‘ö݉ZìÄ\>å(“Ëó ÁÚò„ Ë‘',ªèÞ í±WU3u91Ѷ¢x»8ŠJYæcƒ=—±äÛ€ÿÆ\FüU×ÈŸâ« :Ìe˜¢•Ë…8@]'»ÉI\ìe“ IGÈk7Ä6”OúSó;›N׊J)Ó«¾ZáJp ë1µÆŠZr@‡ tÝL.3ß¾MnǘRCàw£Â"–Yü\‰ãŒuÄU­¨‡sÙxaaNáN:YðÍ›Q•ŸÔZß½¸{ù àÛÙ"–Okä¹=j:©Í_ó1•%8ˆ*¬jKy5“”Tê³³P53ÁÊ%OQ+O’dã˃{¿o„® mYPŽÔÏôèJê<º+ó\I6 IñÎ'_ “[¦ï¨–s^ñL7”ùõ0…»Â‘W1@ÁöÐT'>S^Ã}Sf.8ð {!Fíɶm~[¯„¬Ã2j£û§ËÛ¦aDï]é7~Ÿ:ç);¨ñÒQˆk²ýÏá@¦œˆáBçÄœ9n÷zºoRw¶Yå­ÓK1¿ÆŽ«-Íö•´¯sB:³MÌsæŠé+9¿œ¸l°$K©ýâÈ[ªºÚUuÃß¹e%Õ?ά㔮ž+àal— ùÙ°ëŸÏqxkH¯·•J$Agü–Âu.)¿{CXpàD+ÔqLíCD¸û¬ôÀ âI“… òq%•=‰ê1¯AŽ3…¢°˜çHv6¯ãEÏä¾÷Ã$ÏÝaÜÞY›Ñò3W¨_nئÿjâsÏÖ¢}e ˆËKŒ;OÜ×U Æ#eNMWâ举½úÞû7H¯p¨"ã2û«0IæõÕû«oÇïÛÄ"ó¿mCï¿Bç$´À >Õ¿:çg¢!ü:ƒ®Ž¼ .óz&h»‹›„e(>“¨=& ØpĉÁ&Aá#žŽZ,Ï“N‡Ù+ŸmÉ»µäcŒº'ÿ4D†mÓjRæÝŒ ¤ÙI°Ï¿=þ­@ÐH^’¶”4NOUs”˜?Ÿ$æ9»«ïDƒµþê¹J endstream endobj 623 0 obj 3334 endobj 626 0 obj <> stream xÚZÛŽã6}ï¯à[¤‡‘¨{Þv²;‹6@.½,`!Ûl[3²äˆR{üSùÆ=EJ2‹nÏ,™ÈQY¬Ë©STÞD2U™x:?DâiûðÆûùOü³xûôðûDÄxýü‹bQ(QıÌSñt|øÖŒC=êïž>®ï«Df±/²¿ø¯ãHÉ2÷ß?ŠÞÖ“Ñb<4FO-É’s«˜œ‹§(+ÉážGóª’ylUÇÞž5pÆóÐW ð¯z§ù]%±ÄÞJ/M?rõÐ©d‰¯ú5%Y%£‚©<Šâ2‘¢6¦XØSUH¾‚Læ§lÁ'„ºï`¿ uø¼Êd¥ØqásçhMlßÏe!Éù‡wÏ} +¼Þ‰cý‰%k‘H•ûZÚÇD‰RqWõ¦Fê=¼°h•L ¦9à4÷Ó4ªd\úò_ Aj¸´¨‘yl¶œj ~7§ûï¾­ä—"“YfW9Ô¦û&(è´ô%°GKk|=³â¼ò¿v$¥˜8bntû,C[3 Œ²ïŸ-vÜ1 NQw¾ÊÕ†_ú¾}ÝŽ¸*­G»9ôS»såy§”òBƾ¢óöÍXãßþñݽrйš°BZ‘žèŸ…®·qæ“K*Ú«R?°äMÓJ¹/pÍŠqqª²8YÐ)UaÕ¤1ùƒ–8 ý¦ÞX<æY«\FTWÙQ ºm¬4°j×lGª8›œØw¸çÂ4—*c›î‡zsßyªdÂ.<ç­­¡cH™d%ŽËL=ß+KÄ3OR_ô«ÝÃ"Sýà ô8 p@‡èÅÐ;ñµføžã“¸øÜšªy·8õH‡M'ä÷Ü7$Üô/•¦°¸ò×2Ð6¦Ù´šVÛöÝV7Ì…*F‹ô5^øk sâ¿Ö”Ħ§šöð-Vî·–hm.Öõ?±-TIߘ¿ýòžÊÖ¡G>»^œ.=}«F±z&ª»JœEÏ3TYß®ï_Âü­ ï-e'îѨ/§[§1 Ò'y€&yŽì àéNÛAGœýóŒþ ®t•aêìfRüìÞïô&l^I•zKOû½€üƒÝÉ¢(=É‘Ü JæÀެùÔq¿dhÿ‘¿øY,™AÅEjÂôK[W7N‹e¯Ý2ÅÈå½¾8N±š8Φ~׋GZTF± <7Ùu¢$B`ÇŸ%ÑDøùòû¯ÿúþ{€/ªýiApôW FXÏ’Ïp¾| ø3ð€¤pIÙº³Û@u5šž!¯ü²ääÜ}=T)óÜ_íøh¾„y,€ÙÜ‚ÁaΩ]oÚþÁc»¯vq Àlrf´q²Èmõi Š<ŠÐq}!éŒÅË‚°cKŠpW±„Ÿe¸Tœpñû¡ȶ%ŠÇhJ9mA õR`IURŒ^…³¬È.-÷e^D÷þkÞ 0‚V1{ô±>"žÛŒý;Z”&@¢~=Û ŒÖ‹É¼ôÐÙÀáüE·1-gõvM“Ô¼r¡P±Ö´Q´õ.özñc‚ª …St®EYÔ*¥`ú27MäP3!#Íþ€Öµë§Íø<µóèŽ"¥ ]Õ¸t´%KfrI¢¸Ä–<‹¿>sƒi%ßVƒû¿½p¦±Üäørõ…Âp™ìõªìÑö >]Rç (kÍ sB^2©Ï§¶nÜT£uoÇ׃¦ÛE¶X?Ì®±-äÀŒ‰s%¦sg LßòKÐÖ‚‰¡‘ aÍR5@6üYºQÎiœ^K„n\c&š2×Ë ?'=\\HÝPfo®*e•¥l¹³q— ukzÊJX>Z÷ÏðîXW;±àBùÂiË2\˜ €Ž(.*Õ`Às¿ÁÁ½á'Æ?Ë;˜}™y8€ºñ+¦©Tɬä+”@1O-pA¢ow>ObB¥yÃ×Eö“$²c gÈI!#ÐV¦s]*1Û;ïä ,ä'O*Ö3E¿ùˆÔu|Æžö7ž‘%íΔÏÜ>ÅR[ø"d_É·Á,<ˆM½ý´ ó7;»ôZ.àS{;FÚªzk1×4ýè&S l^†ÇGÎ#·½…W¬J+`±hùªÝ—~¢Õù`E²ŠJ&…6û—­tÑöüÛåÆÍyàmpÇ d•ò=ƒ[†Œ ÌŸîÌјÁ*~äßúóÊä dgK ùy¹l¡ËüøsñÜq1o§Iˆ–ˆÌËM¦ÞÛ©±îì2W„ÐZ½ð êµûaЫZ=ÏzÕÃé¾9Ç0öÝ Gø½¹Y€Îtæ#~%+Px <ÃæÇ U–ÅLjAOUÄáé³t•zÇÈNÌ^†°F‹ñ/«˜ÈçšæÏWVš§@t|ib¾F´]`µ64*À×-¥`GÀºPJ"ƒ”Dã6®Æý4³²škiìƒ8rYñ3ý‡;&=½Ö ç"A—eFë°ýÅ4³úr˜9 “•/Á* dRÆü}ß숬µÍ³¶WT+/±wü %'ÜäÚ„BsYÀÛ[$0±Œ±–Þ~5´(]±5øwCš7#~Èð¢#QÑúîþê¿ïëµ(³n·t„µ¼€Ф½oxÿÂH›±U^ìðpÐôý‡ˆìî– ^Øt;}Òø«³úÔÀÈÓåž>j±›Þ$º"‘ßÍØÐ½ÎzƒÙŒz—àx*cK<}Él36h=³{&lÐZ{ÛÚ¬pM=b>þ‘芡’y˧"gû^ôNÞý<§Ê+ŒødÝÁà8£Œ3¦q&| (_\bÖO˜˜=JæGñ^l†y&™NÞwhÊq¢Ýmó‰ßš&Tl5øÝaƒiŽM[׈l‹9Ûë„EáÀ¯Š+\Ùx‡T‚"ø’u3ΣëF‹]c¶7ôC¡_ûÜ/]ßpM©Ðt¦Ù­#Ú›ûÄv¾¹ýO¸²­øÐ]YLc Ûƒ,>èö$&";W>Tn4ýuÝpÝXHY¹vÒ–©ü ˜ËÎZw+:Ó½ÈåM×w舘Ss¦J*ñ“øº­T\h¨[ô}í¾jm‡Ú¿9õÝm8~»@˱nZ«5ú–z²õopm™É„ïA)«ç™¹æ%¦à.ü Kç}`ûBw³°G«,ºÉÆÛ™»ª¨bÂtiOTÆÞ‰ñᬓș°Ö'oÇ8ç»+76ÑÜëQõ£ÕÛ5ÈDˆ\æˆz÷Òl-O: 8ƒqÜ<¾ÖHUâÁÐõsî†nÏ܇.WüKaþ^âF?ì戙E°<­‹Gâ æ©,Ûãƒý^JÏËc)Ú‡,‚G¬Ï ,=žéÿ¼¹Îúb*•û„[¨›­ý‹T‰å„iÞ"ü±>¡<3·÷úì®0æG€ð"-dînš¼6Iòßôýí纛Üg˜FzoÜÙEÞì÷—ßÿúðç=Ò›¢"kóXyO‘5ÓI,¿¯‹Îááƒè°ÖÿÂiuZ endstream endobj 627 0 obj 3143 endobj 630 0 obj <> stream xÚZIsÜÆ¾óWôÍv™l£±ÃU9H²ä(ey ™Ø]ÀA Ë‹F㟔ƒrLU~]¾×Xدg §\¤Aáõëî·|oƒ'îŽWž¸Ûá×÷øy¸z~wõÍ+OøžL‚XÜí¯”ððŸ‰/Ï—~¬Ä]}õe*¿ºû}}™¦2Œ#F ^´Í¾|»²yoN·¿üðõ×´ä›WPžÃ9Nb™¤©Yx÷¨E¡÷6{¾U>VƒØµÍ'ìeÛˆv¿l#Ê^ôc9ä÷•û¶uÛâ0v‡¶×ýµ¸·yQ"ã”ñ1<êN‹œ~Ä^Ûô¡ÊdÌÏr9nÙ‹S;Š]ÞˆÝcÞL2bŒ'-NÔ¡KíûR%Œ|7‡½Áê¬ý®+F¸èk> ‚x-Ú •áz®¸rB\KyüФžÂqÆD)#r|ÑwEº€ÝE{‰Â•î PÜŸ`ƒ½®6à©pqhnÑï]–‘ ”‘‘µ…xPÖˆfè•rîW¤¶/›Ý# Œ¢+›~€h'9.íÅØ ä@Æ/ëôdpG&ºHÉD1æm÷®—âõžÂßì°NÜ‹Bð›¨]ðGDŠQèŽo }ÊŒQäýr vÙ@MK7EÞë…®M<>–@ÄÇœ”„Œãþgâ;R0ƒ«m¢H¦ü*â¡—¹+8š›ÁÛMQ.BPîŠÖ°Ä³hÛZ“Šïˆ¹Èåã*h377´ÃM}êßW.Fî¢ë-<@Tù ÿ›²ÙUc±!™ ñÎ÷!lÝ}æËÏl@ÞP¬¯ÿÎ`Í·Z_Þ‰DŽÌ+ &ò¿¿|öÝ›—7ÿhÊrø8løpÌ™ÀVèáª_¢€œ‡£Jˆ@³¬ø±-¥¤k, 8Ïr{&ù±Wû)[éÛn [Ènвßñl(‚F)[ÉÓJJ=N yx#$O}Nr}/}¥dÊ MÌ76Nr™Lþ)æÍH÷Ͼٵ…žR^D~hr›+—À:Lƒ•æ".§»±ë(½ýþ™àò"©bÆ‘ö7+ù±†²ž‘”£LÿSl–´‡coIo $Djª‘ÕÒA†0ªxÙ+ö¹œb¯qaáMQÀ(>æÐ‚~ ÿ«ÙºTÆHÿÉß'„pöû’ºxË!Ïû²št?KªÎû~¬—¿$¨ßòz&ŠT›ùîÛ·oîÚ‡.¯§²äí[ÃgþŸ+"2ýdZy‹¸ƒj·1§_"ÞÜ ¡šŒÑ¶Çžj`ƒÎ“Ï*[- ŠUVP =/@Å¡+óA¶ýkÏæö‡±ýaÓPûãMþ±¬!ÐO!÷° ÇZü8Ö÷p]¸ì«RWÈŸ98ô”ôùŽºØly@q4·›!-ïzù±ŒCF¸§sàÙ1eâ£jü9F’1ŠüÔSBK A ·3u/""Ôðlñf+TüSÙ1ˆnlLxû–… ‰¨Øµß±÷©’g®kò=-~™x3¹†1¹­M½f‚Oî†Js¼ÅQoyÑSô´i¤àXéQjÂŽMË PJƉ / Íò¶*ërê^ÁØšÕˆ>š’ZSðì)Ûdk×n†CiS0Æ”àP\ýhæWNÛ´ûO¦a¸ØÕ!ß½ËôÒ;<«G£heÔÏÌ}µm¸ˆ^²ÊgŠÞº¾o‹“9޹’¹õT´làÊd’0fÈÒ¿!Û:áîòq£. Ò/û\Y€:ÛWg›ô¨ úÍÒÌ]ƒp”£~~Ðî`¤Õ÷?뮚kµ~®³\#ö{ál"9bC¿œ˜ ßUŒr¦†]¾Uµ!ÌE|‰9‡x+‚ø(M"d8“úþV.QwÍæzG]ŠGJô¬yŸ‚›mè™Øk¯ÜÛûo°¢K.ÿabç゚ Œ¢ÖÔ¾Ÿb¤>‡aQ·^C5Ì TS_ºÓïÇïkyiïÓLÑÞ+ïSïõˆÅÚ Ö=~Ëbxt±Öãíã[ïnçvßun×; M€é6ý·R {OóÎûr ÑÅ¿ç´eÖ=a×µ½ëÙñ£¾àÔab4X¥é,d}ÈaúR¼ü¸Óº8Ë æ!€+† \Yíò‘€Þtlfa|/û{Íeâ{4³e‹y¨ <Øï5™¡Shî6Õµ€QaoŒ„Cm¢ØÔ4¥zè`ûѹYR<¶iÏlCùÜ6¯Tظ“rªçÚˆ: OQÑV*/'|ÔU³Q+Þñƒ´"ɉS¯(Å9Áiò­±Ÿ:ö¼Ö"Ä„=UÖ—ó<Å8Îaêï8ƒãKìû.“z—H¨íûŸa5ÉÌ{B•ÙŽLiCiÅCS~ÚåfztKk¡?ÑÔD÷ƒx(_Ó¡éyÃ5 e–¡N¤ìÉdEwž5ë ľkka |œx˜pmD%Ûðg¿{Óš ,Ö®pã™ÕÚ¶0÷7ícÉë¹Ðôâzú¸¢*y®…TrÚ»iêìaQÓvHÚÊ?¦`]b³Ú\áåÝÕ{¨åoàr¼¢{„Ð$êÈúJ…áúWuu{õËô™J Ü/TTK?v†š¼KšO â‰è‡²?^‹Û¶Ê;j;‘`Ÿß~‡§7ùNüt+~3#³i¨ ;¥†k{ ïH 3ýo¦+ýú»—o¿º/NDz‘RŠçy?ÕÕ¼‡‡¼ÈcG¸4< ~JÞð²7C©Ú¤'ó™É¥¡òà[´4”sµ©H"4Ùd„ KÞ¨xùtãL®ÔŠˆAå™\QmÍå#Œ¿åxßiÌhÝæ'ñ/«aþßÉ]îgÄ23ÕLóç4S>X™a@ϹÓÄ.!aÙìºÛµ•)ØÌð¸5’>‰þ„X\ÓÈr`LBFŠOLú)˜Æ¦Øxœ…<'ÌÜ«ýÊ¥žHe¿-›‚áAD#^ŸþØ_J'•¢O¦ƒMw¸†s6»IT½F$¥tÙAð|åÉnøÄèØT-¼ºÒƒ‰ 5ïeøô•ÉõiÓR e²÷mY,}l2Ö|îp»cß †-±½ñó÷±7ŠzЃ;²W4âÙ>I¨R÷$ë÷Içßf”z¼…$dªú€¾ƒ»hý^²ð|ê‹pëOäCÓcœáîÂpµEêE6Ñ:È©íÝ7ÐàprÛ6צ¸­ó²ð)Ñ·0NfÞ(JlÞÎDÛ—*Èì÷z ‡Å2f^+á~Ý¡^ž»L‹ '¨€„çÔ—Íw¦ÚBq¨‚õsBKz3$¯YÇÜÛ;Iþ˜¯,œœ$±Å'wB¿t TbQ˜ÀO?œ¼™s—/cú¶¤jÛwë|nú¬ÌéñÛé’k#%˜ñu Äæ0sòÔ¶;û 3E¾êV[.,'8@ÀÚu“P½ÌŸIìçñS^ãæ#Ù!Õ…eÞôË—7âS홞Õt¾½Õ ]ÌÛw*X$TXúsC®™²3¦29•ÙLÅ_tÉh™w@£Æ„(ŒP.óEo-Æ_#Dõ¼ÇƒB¨ / 3ȰCÀ$z=¨±ô'R>Î@•2±ì/2¦¹‡â„$ê5Í{jO!GZyâ˜EbWS¶›çå1Ež…žó‚õ9ÀãDKOWû%§r®ô}Šœ?õI‚³CØgHB_,ÔÑš6sÿXŸLªšèççùö'03 ú`Êž•|€l¥'þÀ‚d­A•8ÖÝL <:ÉI°¿?ÿþ“…z‚Þ$6V¾õä™cNËßO˚ǫ_E^ÿÃDX endstream endobj 631 0 obj 3828 endobj 636 0 obj <> stream xÚYÛnÛH}÷W4°³ƒ±ÛlÞ9Ø] ·™˜\fì `€€–Zש°I;šOÚïû~Ýžj^ÔEKÞE™«ªëzªªå‰›‡3OÜ,ðñ3þ­Ï^Þœ]þ…ÿ\)áá‰/¥dœˆ›íÙ_o6Z,õêû›NÊó%'Ê»²e±-Z#Úf/ÚZà¹X3®Ì“a¸Z-rFã«Pz\rQ™Väe)ê•h7ÚhÁtñÓhαhëÆˆ‡MQjaÚ¬·º¨ÖbS¬7BWu‡PðV‹ÎèUWЇ¢Ýˆms^¿teÃÆ8ËF¹KmŠueäœ"IFŠ«•Ø×Ýw.A–Ê,si-n™WÈâØ¥èŠrIê¾Û_ÿúË?ˆUSo…©»f¡E]‰\ìʼ]ÕÍîÈ[²ÁWbÀ#‘+ñE×Ö‹ºZ“…ÎM¡aëƒËú©L™1¹âb“Wk=8~paæ.ˆ£CHNz\wMÞж-¶úG"¿ü)©Œfy±TYdYå%éX€U‹‹ ŠÉŪÐåòÂû÷ÈëÅÉÖ>Lð³OWR!·^!k™6fÑ»–ìÚå¦ß fBýXÉ ¾X?ßS饌Tü;_Ó!$¿en|_fœ¸uSªQå[½ùmÍ££¤ŠÛ=³—ú\pþГ~ö IrMSØ4lŸÖäÅ2æâ,Ô«ybP ~$M#Å^~ ý‘ÞugÊ=“¨4¹£÷QQµºÙ5ŸT ¤™Ù›VoÊ¿†¼Îg2I™ôº¹;ç5dˆŠbD];iP`àg/ˆðun÷O<#2n/ydæŽ8iQ º›©ÐM·ÛÕ rà¾ÈGÅH&cKzŽF²q¤ùPõ¸ ?5h˜ó'¥Ò@¦cÛ&g*xÈ@NsÏßG”Øî{MÁXŒ*€ÏItEO¤œ®Ò(¡ÔqÉOW)Ä("´åß4F—+É! ¹Þ7”m[€d£¿v kH*›9yµœÇ&Š'ö]×¶DZ´`€j» Íè±1­oyüÌ:Ç‘rO"–u¥m+°‘öUø/4Œ­FEà}YÜÍ“=ULŒžj§É Ó{¼Çúg ;òáü¬GýÅô·ssU"=ä„5×BœùZ¹+ÅÅJôhîRSR´Ê‰úk§›=ÊŒ1\Ç€<cŽ6‚Ã@ÆVÈûºí-±B¶uÕìÁÕÆ6þÁý£¡ó´‰dfLð`é‘C–̉QÔ·K¤Í$ûa„9|ßÔÛFk)þèS m@ ÑN:É#{]+“`’Ÿ¶hn Q¨< èµMˆ?óÛÒ–cgõ4©…èÁLêˆ.‚r¨^Ê?¾ï-9‚žÎ½†rË™Ê@òQÑnpñ²k ÄĺA¼/>^‰·:_ê†1è«^Æ8ÍÉ ô=÷¹vÕ2tK=I19¼76þõ˜ Ë|oÈqŸªâÛ~r|5ô!bPu® D:’É5ÄPUç'’*ôE.ãvÒ8n[̉Å!Ÿº gÙRŸUSèA·~¬Œ=®Šò€).uQ-Ên©ë¢"Å©ªð~’ÉÑIqÕg>÷ ïÇ2c„®s ª'¼@F™ËzÙ™ærPÿò9‡bSàœçâ €æÝ ócY‡ro•úCº]Y¹D6¹ÿ3 HadF Z¥ æ oÈq(}åòP«/óŽ»Ý±_e.×ù3¨Æ)]çw[€<äŠ)9æ‚K×-j3'F ª®$ûS-ÄmgWK3³T‚jŒã{Öu™’v$—þÿ…4™3ç¥|=NæJ‚x+&Å´ðI+7'2„†¨ a[iá´Ãáã7™ W1£×Ë Sü©íÎhC´{¬§.íº·ûÆü>Ž¢»Ú˜'ñÍ*)¬V.óÍàÍï|›I.á·VW†òw ¡½ÜtýŒµo¤Fë®øÝœ/ƒ˜‘´b¯éãqQX¼ÞåM;>BtÝbmÈ›å9xkÍ¢ ¿d¤1ÌRÅaú :Œóßñˬ þì\~ub9ô璬ôpñy2)G F-‡l •šg6f¸yæ=ðû˜ÈîX.aÝÜÑ5­Xwý€0ÂtEóʧKŸ$`"ÆÂ7v}BfPš4ºÜ“ÃO®!ŸÉ˜Éyκ¦fôcÂÛËdn ”©Æ„ÏKS÷x œá£7à%‰"Æ…Þ^Ó= },ó6·ùÎohÐã”3óû-LÏAÀ ò¢Ì-,N3t>›ùhæÎ¸!(ȾûM—{ƒV”£Ç‚aî|ijBÍ":Å!y¨l…õ_•0CUèL]Ú{þ:¡ËBçõ`ä¬ÔUf—8‡…>Œšk±nšº_¥Oì1´Û»ìýTv2kè;—œ®Ùqbù…˜+g[hLJ”ãMø¤œùðþgûq}bÎR—óHûHíÌ¥9¬X³o¿°Ó.!ÝXÜ<Ó—cs_ G¶M·hûo¯ÞÜL©(ϢЛ=‚`zðØÓÒÓælEß(†ô¦fyR, Ÿížœ@ÿñAúãó_¦'…*íÏžžg§ûh³0 §¯´FÞ£_JO|2«wyÕåå ñ]ô<Ò‹¼#ØïÏ¿ÿõìë=Ò›$#mc,ž‡'ϪÙSŒ¿(FžÍÙgQAÖÂÃw endstream endobj 637 0 obj 2590 endobj 640 0 obj <> stream xÚZÛnÜF}Ÿ¯è·$°Üf“Í[Þ9¼°s“œ`5lihsÈ É±<‹|Q¼ äëöT󢮞í"°M‰§ŠÝÕU§.@\?¬q½Æ_ßãÏýêÛëÕ‹W™F‰¸¾[)à?%ÒP¤A(ÃD‰ëíêË\~uý~y™eR'1ˆw}ÕÜ‹·‡«Ÿß<{&ªF¸aF`ÿdïóPê,c€v߉ñSç"uÉL+Ž|oÖ^¼Š„ ¼m$i"Sè&ä»ZÑ´®Fà}Ì`콊dÄÕ\ˆaSõb[4û¢›¢mSDYõë}ß›Ò5úmÞï›õPµx¨† D0î¢<`Ú?Û]mÄ®kï»bÛC  fkyWšv˜èE¸®n»¢;¸ˆ<“b )¸B™E pMÛ[oŠÝ`:|š¡‹8ú#ŸK•±÷¦ëí®ûÁìzqh÷¢10Nb(>p7Q8\.K°ªY·Ý®íŠÁ8¦Å‹9 [žŽRÉW‚)ÉEzëÄÏÇš"Á5¡áóæøÜõ2\šÖ»)ØãX&¹fBž ð Ív#%öÒÓvê}iÄè²ÚsÙ0Ìdpáí¡ÿ£~öLnN{y˜…G"ä{¦XoĶ-÷p'ëEûÞô³¥xÝL/ûå-sŒ8È¥·‹+ˆ^&ð !ÂÃÉŠ‘ya ZÔ}»xÁÓöPBC1=¬ÑŸ5ìçáåŒLeÌ ‘’!AcNÐ0š|$ŒRÚâiJ ²E÷7ÃH»y1zääoôïmq f自®£•0BœDŠéj›/$Çeb™`WÕæBM)*ülº¡¨ˆ˜þ(‰d$Oé@:QœxúëªùÀ B îÌ·MAÒ™->L12FvÑQšiJÓ §œ$Îg-–ÚAX[hÙÚ] m[DA*÷”YøŠÂQž0}サíÝx 3}áñ¶kÏD›‹›Fìw#©ôŒ_µ$BËÅ~äïµÌr®«CVèåüþ¹Áˆ»¶óH;Îô£€Óâ} ש‹à­;ãñ4Ž+WL%Q•E2ˆØ{Xp]4¢ÿPí8M†pùœcÙ®Bì:Íø"»‘ħ}Ñ––ÕŽ‡Uúþ•+¸8SbIf G@RI¿g±lj ‘ǪCIž©"ËÝ.æ×ª§$|ùìÙ¢UKí+'°­üBzûêÒ«3ÂTK•pÉ¥Î= iž¥‡8À†Uhe^ß4R ;aЬؙ¢<øé&A~޹Z/ݤõQ,4Ô˜}wA±æ•e ø/gr¿úaFç¼­}5ì˪½}q¯@FâOñ¯iP¤\ò ŸÆQý„¥¬7më¥àdõùé¶HN¬çý8ÇS¼£Q^Îp bßÌs§ óÍnWWë‚ü\ŠïQ¦lºv?–nÕ¿Š®$›ZÖiÐogSc$ô%Ä0— 6ô”ËÇ~lÖæT‘*™#ëºP~êa"³€ Ï?tࢫî7HØÑpшÚÝóšŸX@Éñì×""WðÕ^‹¡úc˜O €t(0ëý€i(ÉWm½·µòwŸvuÛ^ü#‚„¯âbv#ørÉP™þâ¤ÄÙ"C9fËKOê.ÊØݵuÍ `Pîq‘ä È7ͽ饸ùò·AÞBn.[Ó{9=IçLº3ëêî ^š[ß (O\ìþ^€v1µ)z”Þ&4*ùôÔ&úÝø@*¸nÛaã¥#­“E-Ëçû}gý¿—7_ùÐð1øþ3WÔ‰uq<‘¦Ó©þŸdKdJð§ ›‚ç4Ã[ËbÅ—/ÆÿÞ46»þÉyLg2˸ä7eYÑ~=Õ—/«QÑvp‘¯Ï›Ž'Fbt5]~}sóÓØŒY²ëonlö˜þYœ-ð÷IâIGÛ4öÛâR Jnn¦š÷Bö©¼_~{¶—E«¸¨œM¹ŽžqÌ;”bÝb¼ËF-hClrˆ¿~Ù7Cy3öŽ“Áÿz»¯‡ê9˜ eºçšI<í~ ®ùòÍxÿ‹·/Ë›¯þ¶´'£0”'z±´‘4[®KJñŠ»M,SÍÐÓ‡§0®ðQÌÐh"ââ6t 0ï [“^D ˆæÇâîÂyÇÖ¥R+ö˦È\ÖM4åOe±Œ¹RØABjç=HU—(D‹'‚&0_Î{oÐ0ZÒˆ‘ŒAádçb3Ba¬c†vBsr9š§#“¶„R; ÿ¯ GWW·^°á7§>†ŸšU½¸´„¾ô«¥92|ÂEq6ã@†²’wLq*‘,z°uÀõŠKëØ´ÃÒ(SƒŽÓÛù_,JFŽBöx‰Ðqî„Â*Lí™9@{¯›ÖX”ç|HÙôãŠÍ>ô§k"z†s\âåÔA®a³³$åˆÏÕS»q~Žà5JZd W'd}BNq’ÌÃ,C’›6Õ·ëQHxa%w»ßKù”;…(kãh”–Rc6ËîN1Õ¹õ˜©tw N¬îéµ!ªâ |œû•Õ?ÿTšÁîPÞPÕJ­µYä–S?õ…ßd†ü½!j• e˜)‘ØñÆv×vÃC~_¥© ¸z^²Ò4‘«¦®èLâÏcš»àßËÓ6Ó¨”=¨è÷wŸ?‰ÞN$mËÍ—ªs;D8»TÛ!_ªÍUãå“G;c–Ò®œèó`GÄ힦DÍ¿+g䩵߃„ ¿MÃã92¡â¯±§máÍ—¨ƒÓŒáŠf `ïÑÎMótç侎˜'Þ ð½m,AÒwkû—ü¸¦fæôADqp¤Ë~ߘqDÍýz,~h‡iÚÓ$݉жæ?Õ-(ð‹Ö3‡oÍq\ØVÔEÚ¸@w;Mçà ôØ™Q}4‚aâǘ˜½ŸÖkYã 7 <Ð|M3”u}Ίʗ‘OŒR:pŸ¥ð²âAž3‘ߪ¦lý<˜ÑFÐC/^Ù©êÖ—o^Ý¥LÄÍatv6£tnç:$ó­%ÇÞ» ð̃_Wæ™bmg[èû©ùŸwþà3šJs_ŽðöþæøÎ"¢Î˜ÀxiAÕÍ»0ñ¾]92µ+jFŸÚQ{Ë2Þùx”J5ey'¼Ø #êt]U’óì­îóDé„+ŠÒ†+<»b_7gF÷HΞÌ4*²3ŒçË ƒbwÒ&pr¼3¡n”éÀqÙlÒ#Ë®gP Å[nϘ.R&ì_¶©0^ÞncƒØZÍÁ¹ó½–ÚO”5tw¡r&‹lHk?U!Œ¥òw׫?p¶ÿ€’‡-0@•¬2±])­—ŸêÕÕêçqp™‘Ø‹ßHøw¾yJœöxB>¡ÍrU˜0¯¡ÐmÑðèQ2B½ÿFú¦NªŸë£bXå mvÐûa¼ {  [ê®üa j D%ŽØ@#|.,Ž€Yî[íÅÂìª'ÀT²•z×KL3m,Ï(E=0àÑÃë(“!Ëێ‚ÌÒ*Д±à8t:NËlTƒ ýÛÌ g%SãÜuvØ•|–Fe]1¬WÄÞ4'‰‹ãcHM—„ì=N å«~g‰kcªÎkÐ÷¤)³ÜBƒT•ñ¹))j ”V·4ÀÆþw³~Ô;W‡ž;i¤ÖNï*NŸ]ß(¾ŽÿqPèÛ#.°ÌímwXœ,(R¸Ã¬¿Þ,·Tˆº<ì¨NYµ"åÉ@¼ëAToíÿß1-äž ZÙI°ŸŸ~ÿ³eé@Л4§Õ&÷ǧÀ.sDÌ??"f™Íê7Ñ@×”òñô endstream endobj 641 0 obj 3028 endobj 646 0 obj <> stream xÚZÛrÜÆ}çWŒKÑ ÄýB;©²)QR%_HÅN«R vÈ……Ëpµ‰òCzPSå¯Ëé°;=\ʱË2v§§ÑÓ—Ó§gåŠËÍ‘+. üñÿÝ}wyt|_ÞyÂÅ¿žH|‘xž'â²>zôßÇ—¿î–R¶ô¶YÊNœ¶Í§Û¡Ëû²mÄ]»–]_J%>ˆ²‘]^-D±Ê›[)>ž¶u ¡s|r|ñÓÐôe-…Öë¶ë}+ú•ÇEÕ %û¾lnóý0-N3fÚS׉‚ˆN†'7öèx†¹†ødîñé“'0î´]ÊÉB²|oäó&¿®¤ ©çï ¹¦Uõ»¸éÚZ|ü»iM$Nxæ;pî«GÇÏ_ªâê±>߆¡f™µƒID¡xLçÏl=Ÿ)(û•¸xþÒ0–äÝ]¬MgÀài—¶2‡‘“ý”6˜~Ž¢YöÕØ¶ƒXå¦!ž‹Ã‡¦Ø[ö|ÇËÌe)òª“ùr+®™ $Sn(«^¼Þ^üxþäÉB\Svt’\‰Äºi»Zä¢hëu%{):Ét‘ïpÓ¡l)ò›×ñEBQ†))ÚÑW÷~;qj*¸D:ÒëÊJv“«âØvUÌ⛲ª„¬ËéËÝ‘8ž)Èå{N™ËT7â4L‘Ù&™ ˜¢¼kp(5²ÎßGlqÄ1£ÕBlVe±9ܸʻº’Já+ÙˆAMþÏÎÏņ2)§Ä?>=µK"ó Á®ö×]{Ûåõ ¦iÿíå†~z;?FŒZeúp ÑÞ  87t£kf$<ªíš:o€K²“/È<'HL¥—«R‰’ô° ¾C5¸—ÛÎùöO*oSÎ*Õ,pBvV©‘ë;al.—Ͳe^f²QSŽQ`ûÂq8éQ}^!!5$|Zî¹Î’›œUŸ{lØ÷’ÈÞsõ1aqìøQhÊÜÈNé Š uz•þöôü'Ár=ð#'uS4ÐβÁÞ…³ÎÉR,ËN}Ûm¿FHÊ€r¢F"ü×m¿:˜£À¥Iïœ)y³4ò†W^êêì7ƨùrùÅÜeüdî2aj+^¥ð§÷Ÿ±~… ŠÙrÛi·¨¼&ôÊu:S]Þ®zq[š»}XŒ5¶ßñõÔqƒØ\‡æšQÿé˯[]€¥Oo™#s8k`ªã¥‘©¯ÞªßªõÚYVÕᬠ}x.JÌ=±ÄË:!ÉïJv¼ª²ØI3öØ*Ve#è\äà$p¢t¬…e©ú®¼¶A4b’ñ‡Ñ” ®:Ü@¯aÜHY€FÎR–5ûírPäc–ö\%Ž™ïvä{ù€ÇRÏ’Ÿ* YÞ“·”Åw¢ÇЦN¿¨ D“¤›Ùf SílU/kÃê1ô8TÑè„EÛü§,úêHè…æ‹ÿ8 ÂÄÚÂû±š­ë.¯ÍX–76=BUC#›ÞvK˜ÍëQT6SDÁÎ"ß7…<Äa|Ÿ8Œ!hµå„8Œ±,çFaµ=ärÈ÷Ç#œøí)–_qú’jÉýŠX:b"a˶áå‚:Äæž~dzøaÃ4%êðÐa©›ù1?l>¿Þö,ÚüÞùbXO'³}Ki¾ý_N©éË¥Ðû/úaY¶ TßVœt©¿aLʀة¹q™F;T£ ˆOKü‡·”ÇCæAH àž9Ó¬€~འà LyÎÒ½Øñøé¬ÞÃ6Jœñ’Ñ\Ö÷µÈ ÷á·ëuU×ñ¢µÃ†~2'ɪ£¡!mSþ3ï–ó¼…hêo§ÈîQÞ))ŧÞ.1²IãH”Q bš¥âë!ÑPUÆÖ^ÔCqÐù( ¹ÆILÃ%Æ4wñúìt6‰ÓŠ[š"÷ç«Ð+¨òbÐÆMåw6õK™8}§zN8Éñ¾g9¡YØ>ŠwHvΦéÌñغÔöÞ´UÕòZÉ Á j¢÷t©/‹¡Ê;jdΛ痚ñL<þÄ6'Üøn~FaLÌÆO­‘Ñÿ?ÇýyÖ=tÊ)2šêOÖÓ0G8y×ï1^ç€ÝòáÙ¿OcSf&ƒuùž×NÞš’D•’õuµáøÁ19 vE]ÕŽJüÕÚ짦×éˆDZ UBA8R•×]Žž\•, d×·ë2ÎÕc;z^`GÏMبNBþ}6Ф=su"£çeÃ,òh ¡êØK"ðÄ«f=ôsLÕâ`?òC×IýÌÜÛ1:L6ü˜®S~£Úâf´jäw÷ÙFì´öX“`°g6:ÕD…ÄÓI˜|¬œªd˜t2øNRêvÆ*M½`yübÄ) cS,Ç©O Äpûˆÿƒ02wÉ÷9ݪ««;¥)åÕÕ†nÕüç® Î𤱭PÛ é“.6è^ (F¦õ¦í§ަïC·†SK{L×59%ô}áµ´¹‡IÜe»FîC÷¡E>݆y£{L'+tc–0˜GÜØÜÎï PÈ™g.ÏæP€ ‰ 3‹¦¡ðËÏŒ…žomÒÌäÏþã±3K­-sZÆnŠÇgKôå6û}ÃuÝñÎ-s|‡÷wԞˈ·Mù~+~€£yœ2:`Êd)¹N8‘…»C+<çµèƒÛÚ˜"Ãûfe\ËŸ¿»xÆZH×YÜöˆHÌ´|!~áRQoKêt{ Ú¹°ŒH,³ÅE &Z*Ç™cyc(üÎäǘ³pnÑèÔ«¶W„ê`9ߨ‘oÕ½NC·˜CL·š‰—)‚µ1˜k ¦Fμ¸ƒ©àg>Hb. غäS<Ô­£Ä‹–G9Éeîìß1,@À~T¯¡£nñpKl»,¸“hh SËI‚»x¨êÆk8sÇëü¼Áè}¸æ"@¢µal6äùQ|؃©K£¶¹Ì˜¦Nà±u8p$ÓÖõL@×%Lèµ* øÿù%Ñô):öínë‡:Ñ Yð¶Jb¼Zµ¼fõ¿)¸Ñ¿`vy£ª\·„ñr±n;zÓ{Ïéúš….C¸KtÒŽ×y  ý|£Ä‹7o­î‡ánË·Cßöm[!Ç;ñg£€!ɘ¸üTI›3úHîyýãK‰Éga÷gèI™\ÛUË/~ÙÍt96^fWmûN7D¸Ï{|`7Ȧ©itØÉœ¨©Ùpá¢{ã¥éŸÊ¦¨†¥ßè6aiõWë4 ùþtýÒƒl”ÍÕ£{#åFê7Ñÿ²×bÂ÷Q…À?SG:9¹³Ã™n;)iºzôåì-íŽ/¯m«¢Òôƒ*Õ/ON ºžÿæ›zÖ `þÕ= àþHΆNöC×÷ž5Rÿ}¸ˆI ‘Œ’ñh/¬€ÿ¾ÇDÔƒ×Å4G!þ<‚Ð/¾Ö=Ž'L‚êaœÀ²&0ÿL¦d8ýH NùåìüÛâä/âé«ãAuÇSêëpÎ_Vm‘W|éÞDAW÷ÙØçÎŸíµž ¦©õùånŸ+ž¢§ õ‘þµ˜žçÇTTGQèZØ=xeéiutsøom.°Y!d]ß3´! }1?8þü2ûÃî Sr4Z±{žìØýÄ"¬ïþ†Á wÖW¼Uha¯ófÈ«É4Ú÷tTà’]ä'Á>~ýǣߎè‘V’Œ¬1`ìŸ\mæ(1ÞKÌ{VG?‹ºþàë· endstream endobj 647 0 obj 3133 endobj 650 0 obj <> stream xÚYێܸ}Ÿ¯àC€ì®ghI¤nò`{½»ìØÎŒ0hº9ÝZëÒ+©Ýî|R6ïùºœ"%ŠÓ=Ékt›UE²XuêTu n¸YᯟñÿæâÅÍÅÓŸ´Èd,nî.BàO(ÒH¤a$³\‹›úâ»7?¾yýâZ<û“¸ªêcÿ[µÛMŸVUišáû›_™nÉ$­î«O¯^~¼yþâÍ+Òßšªj=é$‹d”§Vº¨ªgâŸZŸ¿÷œ˭øª2EóLøq(9ÿºZ\Ýù6ÅÒãéOJ„wõD2ÒÎÂÍÖ'¨=Áwm ÃÖLöÚ¬(±Ez)þõ±'÷̱ÓÀSo÷ÕPNîòs4 f3ï#ÿà! d–11 u‹×Z›¡(«ž=\ˆìˆ™ÎôlîW‹ç8—9?°õ$E¼³uÂÄ)£åƒÚ«L†±“|×®j3ⲋR£íÖ¦£7œ³ŽuŒ¢iÃí> Fyä‹ÏˆWÖ»¶Šfx&.cá zdw”2eÓõbÕV^÷¨o[¸ü®kkÑ•›-€Ú/µ1ªÐ¤[™»á’›ngåëÖ°Mx‹†=Áá­±vqc¨–â59‡6,þT*C¶Ç·¢ÞUærºµÙ™fmÃÂþÓ´¿ÌPÏ&NUÆ2gR ¨"_Î×ñ Æ„‘Óù;[ƒSùr»µõâTŠõÚ÷}l íc±¡3©2fóÑØ@¦{â66äó x’qù«ªé«3è«H_ž3¬Ã‡†ÿyÆ,2Ô“µîŒå4—*ò,×g,ç©/k Ϫ­ë¶‘cåý°_Å–zŒð@½^ªü8È‚ymFÄ¡7Õ•¯¬†‰FEb:SUe ˆÎ³*+†hX9Påé72õ¾*J¦âaXÆXÀù°\,SXGÊJv§د¹`(#d=l™ Þ á&â`Ä–#/À=æR_ùz,UÊÖ ÝuíØÎ™„H¡ßRéq°Ì}ñÇb 5K<ãr…¢áÉ…õšªÂéM4Õ¼˜)½-¾˜»²2ýém4bÇÓ°qÂÝ­s·ü¼»58Q®=w#Ì?Žt2 LuÁÑÏãp…ºöïbÓ»ÚOl=Ö(–‰bftè*Fº/{©L&wCOÑÏÂR¡D¯¶l»/¢tD”í­4ú‰­ Ðmh•ØÕ¶]U¬ÌôOS©™N(C™Ö ÎM&§Ô5bHŠ_Zž=©L3ÅD¬*… Ü*çìø¡Æ‚æ¦chKA\™Ä¥+£»¢Êð¡;—:èÆUÀï2EÞ™ìA|ûäÉTMbâç¿|Ä7F1T¬eŒ’Ê.AN®Ëfí`Œ È‹¯E·ݾ2–¾T媪#ƒbP‚8™A9Sñå#EÑ,p³mAœÙ’ɾÜ4®SûãèÑÀ© ŠÐó/­´^hã}À%—c|á*lFó\•Ü!0p-cŸl.@êÜ]9ÔÚrÀ" ùÏ´ U°]‰R^î§/àe´×kJ»¯Öv{÷š¤ß¯¶HbîÔb +¨To¬™u¹æÍ}„ÅL~ð€I…¡LS&òÕo~pCÏ´n—¼ *ô‰rr/X~e‘̶~D³‡¿|XžBmÁ~)Γ1VèGÙº·v†#‹Њr)Z4eUç21¢¹“ÿ‰˜¾e}Ñ|±@Œœç=¸K̤7ÆâÃD6ïøÐAQf§æÛ7'áµaâZÛþƒ‰£ÌÆß4ûŽ}º‹O²…ï›\¡?QL†ù†Þ3ãëÎ7_ýGJâÄ£AérDþäÉrü}…ÈÀ,cÊ—ÔÑÌøe^xqô‹/Õ¢<ä»Rõu$¯mÀ>駇‚ŸU+Äfž:ë°'RLþ§#;h9‰4.U©´ûñ ÊaÀ附 [ùHÍ 3<¬v5óÓª]›ñYé§;k?Q9éœ$v»¼öˆ…ÅDøû¢…ŠøºM‹â7Ô–SSòyP˜!Í—Z‚¿0ÝíZ¢þl.Þ{b!¿3(ŸÀE Q›¾'™Ø¤R#öLjö]ÆzÞ²*æcœP£¼5ÕŽ~ºscÒ~usñLüÐÎb©P¶ë 4—Ó—êâúâƒûÙV‰ÄÿÑ6Cz$ÞÏ0œ7e"A¼’¹Ìœ°"Ø IoÀj ·«q[ms?˜É¼)èÒlœøÍ#ã“¥½(pàÛq9«o÷›-Å'STýÆ µcafÐz½xÙ6 Þ´íž¾œ|>éâ*¤þW¬jò~b?O3x>Ö÷óg…N–>m/î¦Wòç¶ÀE-#—4iúàË3¤È­éõjn3ÿËü ð»SÌŸÇsÜ?‡’Jc 0Jøüó+Z ˆ=êÚÛ¢ÙÕx4Ò»r:ùI°ï¯°QZIs:mš}ÿ)°ÇtÓ÷{‰Ig{ñ7ÑÀÖf˜6 endstream endobj 651 0 obj 2783 endobj 657 0 obj <> stream xÚ…YínÛ¸ýï§ h‹&Œ(Q_î6M»’mwë¢] À…,1±Yòê#®ûL}Æ{Hɇ‰}±»]5<3$‡Ã3gÍ73ÍsüñÿÝÍÞÎggï=&bî'l~;ÌÃ?‚Å>‹½û"fóÕìeÊ%5ÿ±žÇE@1즬?|Õ(ãQré8Œâˆ§24à›ì^Ý–•êF|.: xäKƒž/³§O=î…q§jÕ–9ÝIÇðOb°[Àóó‹(u XYw};ä}ÙÔ˽ ?±5‚ ãÒãqJÆG:_¶^W[Ö7c\_Øð@$<¡ÓuŒLÝ€j;,5·ìÃ_*H}î b¶B ž’‘ fYÇ6ªª89.z<Šðo:ñ˜.¶ئ¬*¶Ì0x˜sè .i뚉µÎ-)x˜Ž€¢¼µGŸ'ܪVÕ¹êX1(}=’q]eýmÓ®Nà-xA³a\†å¤3fYñcèzUˆ¾Ÿ$<ˆ‰Ýñ4 ‚È58ß¹NxèÞ(ßçÈûüûåõ5;ÿ7û×÷—o>º¼øþÊ’ð¹鸎¿?ÿyýŸwWi›ßòó³Oms×f+ö^_â³›-†Ç?ÙES×*ï›–]°ˆ‹ß\¯8£Ô7N/¾}{ýæÃgíóô +ÙÏòýÕYYçÕP( `6ãùõëÝ—a*xì ãóúÝ£ËkÇeU.ðCË~p¶g-Ûa‚€úþäðúêíè¯Zm»ªÝÿ×k×*<À-ÖV—ß./¾Ìß¼½¾Ô–K\‰ÆEãR¤þȆYUë“x´zr!.tèL›W*«Ï™‹ð=L?/+TõœÃg™V¦`“x\ÉM$_f=»")-P!"‚$O µÀìö¸bC·ÏôÐåWlÞ§3cҸ8 @CÄ*+4“=ïÝ÷b.èjÛÕóÎ}¢âß\VeÖg-¹ÚÈ Iàwªçìj4Yg]Â<˜ê/“[.»D…ty„jƒÄƒ Ãmìv¨kÊ’)RÞ²v˜Š­}ðI„22¥à¢z¶Y*ì£ey³ZeuÑ™XЈ4æ© ¶ÁèŸmhQ(9EòÚ=„(!ÆÛ~YÖwlA HC÷òPB!ŽB‚?wjÁ³ÅÜC*j`x‰ ²¡Âí K  €„ï.Õ0Ñ*Û²…¿y¦—~åŠTû˜ÆâŽ'\Sˆ5®ØÅönƒÜž"®Š÷X"NGôfYæK¶nJˆ¾Y¯…{( \ 1üXdJ‰§’J@K‡!Ì—eǨªD©uÖøÊ›6lõ«íÀTe­vŒ÷«R'lÜ-ÙkÆ<ˆè^É8P~íqÕ¶&Ú­“”P´ÎÖé*yìÖÊ8á2!†Go­.ˆþÉ1£íÆÖC«FÁ­/j•_¢ÎÔ=&œÀýF™·mJN–·M×íµaЏe[(ÙûZQõ޳Ä~Ã…Û>šS2•¨iŽ‘!Sç.1÷œ¥‘qPr’q¨Rì°ïÁúæNô2­A qÔÛ¨pãˆú´cÛ,²"¹qE˜!¶ˆ¶¾ÓæžOuÝ4š§ .ÝWnô—‡Ö =«=B‡D²½¡YÁ£3cÝ`fb“µ¨U† w»ä_gH¼IÞ;Böì‚QÍ„!bâѹ˜R PU³^étÂ-CjîÁ¤ô!IRb|DD lZGb¼z‹,¿7ûÔÆÞ¾û·#éÉǨ ¯­™êòl ù³ÌÚ,GZXbcZ‡XF¦rSF¤’ Á¹©ê‹‘œ,m™Zꘌ«±‹ÊøŠ•·Ofàùe›µHZw“º>N ç&‰¾^Ž™•#üÈ«FVŠÑÝNL– I Åé'*œ….ä6‘[(aD¿¤Áջˎ}ù޲~$8:ëÃéÅëׄüdŠæÎF!ã u~þ¶jrE[šúzßqÎôú†ÈI|º;GÅA>5ý¡=¬XÝàšjVœ´QÍ–´'b´™„dQGk§Hý¸cƒ¿RݪŸè hFIÒÃ;ð1 €l¡U¹*ÝV"‰ŽxA™‰õRÀͺiûN‡@_ðUVš´®P«ØmÛ¬ØZ5ëjbT§8`ÂøHàµnu÷ Ѓ—½Ã÷B$'‰KîQœêKm7í½#õ„¹¤ޏ[«¼ü•›ÍmôúuQ¬•B‚³„,šZ9g™˜§%Û×î±ðy‹û¨#jÿÏûŠŒ\V”]>tæ)ÍyÔ‚ª`£i|!C…š;öD¥û &¢#ž"¡_Þ¨'­4L?ˆ> ·(ë™§Ý<–N0)Ÿ}Úµ1ì2§¤…üö%TåºSéÀOqLñø”ô¦côÅͼeÚˆ¬Õ¿b½‘$:Õ»r…ÄFšÓ&S]Ps#âî•G`£†aÏxQKû(ô£ö¼ÌÍVXi’®ƒÖÀjâCÍe¶ßã%£À5е7LoŠ9oË…r啿dºkÔIô ESpÉÈ&µ" õ{ª=lbÔ. £¨BºÅýú Î*ÓÎC1ÿºÚ‘¡õžŒœE-Áøá.¬m;<,tÌ['〚 RJõ£‚›Ž‘œ¼ô#ÍH¶™>yÍ™†.ÍKÏøÚá]+«éùÓtIGZ᥺µMïD ž¢~×èœû Áü/»ÜÅÖ}RAk›ÎéxÄeDÆ¢î>®áÿYŸúWˆÌAŸHòÔå»2«š;$I1& £MŽÄ‹‰Õ†UÙP£·´e'ö%êÔ¿”ÈÍÑô=9šX¿ÅØÃÈ5šÕ>÷PàmÈÏL“lj®,«-ûø™}cÝíÆ 4sä=ć*ôèZΆ®=[”õÙ]=ÉV?xbi.Å”¨æí\ß s[t×e~OÒ¸mš‘’öÚÝŽNàïýj£·Îë„þEHLP›ŽþM  ÷©£¯”äc-Oìq”ònåÊ)ç±ÇéTCßky2²§^eì 5ùFë Y”­é·¶T¨ú¥Ã†›¤¹œï!;E%(_ÍÌowô÷î3aÕ,”žó Àþ;ÀçˆÕ_ËÙ­þ­èãôh€%Ÿ~'O¦¶gŽ¥ÏvZâŒS¸Ù ÝVW#~úvf×RÔóBŒiaêËø» öÅË=ö¥Cã~“ÕCVMKÓv§£O¯KG‡‘¿ÿsöÏLê‘8Õ«@ _žYæˆØýý±³Yξ²¾þ¸-3 endstream endobj 658 0 obj 2550 endobj 663 0 obj <> stream xÚZÛŽÜÆ}߯èø%v´¢»ÙÍ›‚<8F°aÉÞ lCàpzfhqÈÉÙÑä“òWùºœjr¸¬žå($p·O5«««N]()NwR<øç¯ø»½ûóÃÝ—ßHÊ Ñ±xØÜ)!ñG‰$‰ ƒ0Vâa÷¹’Á¿N«Yd™añº.šý!ïËÕª8PQ •ß–«6o0K•¦ x_ïòz;‡éT*ËÌv„øò-”ôÎ'q`W‚=ìÊN»üÐÛV¬›â¸·u߉~×tVTN¡3­×[Û‰®¬ ‹5+ì¡Á/+¡‚$ÈDk+›w´’÷bÕÚü½°õúå±Ãž‡¶Ù¶ù¾ Ä\ãšÆ1ÓäŸ|=Å[oŽ¢Èk½ÄiMH×6?Tl‚$ ër ]p°®?næÛ*•q3ðF4Ç^4w®ÁfƳ™"8Ô˜‹¹K°ß6Û`¿~ÞÒ¡Ž¯¤Ä*{/¸3Ä*ˆRÃ`Pˆ´ì.ªf+6¸šW°oZ+šZØùFš@r|)ÔÛý=aĉn}—3ûÓqÛ7ÄqeÌÖ-¹úè$]CÖ¥Èı™Àlm—;4lAá•o@ÔþY"3m}<@ví½Âs`6¸/ÓJ¥&7ÍEç1ã\ÖÆwžÕz8$q¿’#!“U<ïr §D /ùÁs–,"/Ÿ#¸šRQÆÖq ,­(4]szõª9XJÓþôËÏŸÿüÅYã´¾°à”…z Kãe]Ã0 RͶ­š‘c}Æ—Þ©>ö0~Sƒ  ]ù/û®?À¬wà¨Å“e®O]5ÍûãáÝêü®Î÷örr¹xK&CJN‡ à;ðBïžLÌ0åz¨þÝW]Ñ–Ðu1¶ð¾ÿNô‘Weæ§‚X³­ÔIxaE<| Ý¡4¡(ÙÛ¼9g9M›HqÄvn›ÓOŸmJ[­?ûe‘ Ê'$'Ðë>ÿˆ$öÆ‹[Î<ʤDãs¦}ßýÑqÃI–¸ÃiXó7¨ &wZ8De(Q”ßäóÇÐFûb#mƒWºÞækŸM„Z(¼D%í¼všomM႟.ÉÉáÍ÷?¾þ‡èÎØi߉MÛì—ÔÏ’ â›c›îCu¨Ž IIGW"D^Ïï¯hûý™^px~{£}‰[ g:bÆpÙ²ß E뛼6G<Çkóõ›¼i†ýñí·o¶=?qÛŸnP›N}ùRè¶;Ü»£›‰Áä¡¡òj.ï^¾t›Wh‚peC þ6†GÑXgиps ë@2êÛcÑ“vƒß‹rã¹±†ÃM2ˆÂÚ’7þ”Ž‚ˆƒÓ~ “>GÝ·C¼¿hV¿¢,ºå(:QgŽÊEGÑ  )/5×S ²pºò‚B¢˜ qßAíl[‡Q9O¡æ#Aa‹«îÜ]ï‡>ê‰(«34Y¥ÝXì½¹èvMÛ“Éîq(+òEwIS¤A¶òÑBlÊØÇÉî¾î} lªK˜èwD‹ï¢Ú…ã}FÔhØž»¦šE¶Â>h!çàÓSÉèÌÅcó$L4üX€KÂå넯'®ª­x~MðšŒ!®ª4ÒѰö Úî¼_5U‡ê–*QñÝüòâ…ësÆŽfìu˜ˆmw“ŠÃ$óñƒ¡h8=3k°–Lö„èw™öù$k'±à;è P©])þâE°[ðÔ$ñ%ČċñHFÎ7f(Ô6Niÿ ¤ 23Öìãqš Û-%—1“sj°[ÐX¥¾õX »gðiÍÀ“=¶£+‘Ñ ®t£†ãâVäG»¦¤êè‡á¹:£jV(ö¦û÷DdÂŒmôŒ¦Ù´:oÔ@ùqÊ4®qj]?´G3uâÔ§‰(çå-M:Ï×öSÊä­.ZYÃÄÏC¸EFñÓd É1è.bÅ9»æpÍ{[»˜›o¥©0†£1M¡? ä}(".Aãî¦[M]s‚À Zï”a)Gx(jy%G]-2ÐTÌ07Æ42 ãἿ=ïÄéˆÒ¡w„W¯ŠÖ¢¢}·^ݨ’BÉÄÝu/ÑhÌ0ôºm··Ï´/#ZÛ[ðk{t#=¤ÕÂvÞ T§I@öžÉyq`¤$GœÇ­Q]lx™•Që5‡æUçHÞ•0ƒê±O}(šè¢fRR¬ ~Æß ª+#ï0e7‡Ð%¢“½,íŸ )7aËù<—ªú”Ilpç³ñáÅÞÈ"2ñ\Œ'Ylñm­ßÂgAªÂuðñìòUe¯:.•†ú·qn¢iyšß¡$ïË–rÈQq‰¹×Ãé«wÅð‹ž‰Ìæï²Ü9ÞIb†þä+¨9õ…îQ…â~:ëȈÌ›FÔ[Ì×ÑýTãP|ãz˜CÞÂd=%µÝ\%g~ÎüXõŽØ¯fÝth5Õ˜Åý§rž>Gxí]Bie¾>v×HSK·‰àT“ùôÝ!ö=™±ë¿§½ìï×–iÌÐWu… _?Qåß·%bЦûý!¦O°ó½x.Kè«[wÞô|¥ÃÌ™w†^´UAšAç·ù½3à‚Ë¡ŠôD…­ûqîøÈY[Óˆ`ŽÍ«£íî}cºéÿ(Ü4=J«±Ìòf(¸¸˜ aW"M5“áÇrì2z"â“Cp1nê€Æ‚²7`‚Œ«³ußÕÍòñ/Þ Wƒ9‰·GW³]_>ãVyï} Š4:€„áï‹ešAÊhb¹OÇžŠ%‚5ïae7¨#'oÿà#4nÖ?Œá§hâ¸c/Vvhãü¦McWi÷F߸éÊi‚qjó] ËmF'Ô±ÎÅý!d’²ujah7_{ *¨6aè¯Þ¼öœ2M§Å)„]cýr°õÐ* ä¾#RßÕפLÍwpº²tû‡¦tÝœóˆ’b…MjžDRªÏÄÏäÁ~¹eÈ"3WnedÙ²«¶È½.Åh´Ñs û²ìgâ 6ž(S\uI<á†8C•@o~ÙåëÔ_&¼/Ñû"RŠý}XwÏ—ÇTTw‘‘Þ#Ó³Æã€¥§Ý݆þ ÐS*Áe»¡é’dW¯ž¿9A–¼> stream xÚ[ÛŽÜÆ}߯è7Ûð.Íf7oÊ“¤H€X¶£5‚ ΰw‡‡\‘&ŸäçÑ€¿.§šäLWÏp$‰gݧªoU§.Í„â~Šû5þçøïãÍ‹û›ï^‡BFâþáFŠÿ‘"DæAª´¸ßÞ|ýêÓÚ< UÛÜu¦.SŠõ7÷¿Ñ2‹‚8c›¢yt!‘”J8Æô„øîµ2ô&O²4ˆR‹úÓU“MC£‚—uÑ÷¦£í©‘R1ƒ·McÖ´ËóÊÔ¸]ÒœæøÓÎt‡ËJ£0ÿ2¥‘¿Ü™~W Zãð µÆñ™ÖŸ{³ 5—¾Ö¢)4+©­™êvY¯RÒƒŠ¦u¯Ui$¹ Ø‹ÒtÃ$YJó‘ §*ˆw؈‡®ÝЬáõц{±ßTëxdêc™Y¼¨>ŽT2íÖxïÂ@g’| ¿¤Lȱ\[Mã?lLoÄz²ØB¬Ûí¶mDÕ ¦{`Δ'A¨˜l±Æ^ÚN”U_¬êªy†ùVY»ǽâM#в¬è/\g½mûÿ¨Eû °&ñd:W—޲ ‡Ÿ:ºî¶fØ´%ŸS')Ž[]šóî¸L„ãžK¢f©ÿ¸ÓÑ™-3 ©ã eXv#’\ u‡M†Ht)qOî̃é:pØ´¯+'«dHíj8.o¼ÓvõX¥U/†V¬;‚„ßàjû¡hpuãIOæ&)ˆ{± "iµ7lvx£ÌÝá½xÛ:fliZ‡À\ë÷·“iÛñÝ„°Ñ\»Ùv°æW‡EtÙ'Ás¯ºìún鉊~·—^ô¢n3qEåÌFëïí¨8„Æ.Ü=¢%žÏ=™Ó]á«FôëöÉpcÂ&‚D»BÿáÈk‰;ÜîÄz²S `’Ï-¯N-]Ùéþ~5Çüòõ/ß,œpâKwɼ5‰½NÃd”½ñ£k”70Úõ­X1§Š`DÊÅíQ=ˆöÛ6õAìyf ‚œi-š&ÞÎ6ZŠÁlŸÚ®èªúÀ­5 ò̽ÕðwÏ$PL;,¾èä‡ðj=tjúhÂuæÎ4´qU”ÝpBÄÅ‚×ÁÀ&‚ ãyè,W9 ½ÝìãŸf˜º¸U»ëg:aî‚L×Ã(è¿?¼ûéŸß~{ å­_†M1ÀÏžp°”­µ“·z|!äIW‚u»«Ë™Ñfé½=ƹ dÙ¿ç”J¹ÂØA5¸Ad‰0"ëUŽä•TÅ>xŠX·WhU#T £ÿ²´òÁÓ È3úVl ?wÈó K.žšo[ä|‘K‰~ˆ'6Š]Üâ[@·ÖB¬•UÙ0æˆp‚´ä“Ü€u>="l›­ k»2^\J¿±¾°)¸Á{Ù*yJš!ÿHÝaò"ñQ)ß…Ž4Q8ÛVÍxWƒtîbv­þøÄP8Ó˜OYÚ9£ D*ø0%!2޼xÇé,‡êè»b+VÜÞu† "qÑe"]Ño({*w†ìw׬‹ÝãfðòTäI̤OîR<€xÅî ³–¤ ZhÑÓVc`“׺zÏ·¬‚üåh5CX@ï…ð˜Ž1ÜAÞy™Ÿ}ÄH=Á¸„°SòC3Ȩ̂'cì]·]s_ »‚67e†XÝOò""a¦m¿TÊåU8òó©ŽJCOF<€Zvc~Íiìº-á9Űé'>ö}\7é †epg WDáàÂ*ƒ¥JìÁž3ëª@gü9fÈ.èXûqɼ«SMèHì¹—GT8Ãm÷^0û†JîÒ¤ÌÖÀ]J6ÜV¯( ¢« çW¬C »g«ôµg’¸€Sýæ%±”3æÏ¹¢H3ß|O çDe»~@!<¥ ž1#ŽˆŒO"'ŸäEz!ÅÍ2z^¥G1ò,åb>òáÜòîixªÒÏOÍÖ^*áÓíýBá¬2dƒÒÅ£nöˆ7¡ø)Žñ¢@.€ ü¢Æäx¦b¸DÄ&´vž°…2Щ Av[¬ªºdÑ{cÆlKå1çI§p“’ qAÇOˆX”K+Òoêj[5”â5O§’ Ï]°ß9»»%°©1–‡2CýÐoY «é4Î)ŠÎ%K1nÕ¾(Ê+YƒT¡ ö«µâŽû¤|¢˜V…~»?Pue–:Uâp˜³¥Ù-P¦ì¨çcû‚Ôf·‘Áöš?Ìûd¬²(ȧ~>³&Ô¹;úÉo•k&»ÞÑSÍë'Eòß×äwä‰U “CñžÂÕbËEæT›83ôCùìÙ±A»ÛCåIÇPÀù†î0M½n›¡¨šéÁ&§¤(dD£‚™ð‘® fk²ijQÏ£XùýWbÚHºò˜œé|¦eLjˆ*öUon/U::ö´ù•òÿœW¹ µŠWÜÇ"EîâM}Ùlâìx1f¤Èª‘®:ã{dùôô0[„m^ ”{cl-ýæEDÜÑÃk´‹oè”ï„áé˜ Èã@Ë.æà½«ËÌ!öádí·‡³£üçw$ŒAœ' såùj¯X³*sìjí½æY´œ»Ü~‡%WLq]jq«(HQ:¨±ÇÝ/¾Á'¨ÄS6ù皺QDµ)™Š ËFäþªÊ0ŽkWˆžc{WuÑY7±W²@äù¹+|­ Tšºà¯x— âdï÷é œ­õÞövÆ|}jÅÓÄãÅ×Yz'ÔÓÐÌÜKÅDBûŽÀµ‚Oûà¯|3ŽØä6züM4­QAö¡tcjïçU© ' JÚ‹9 S÷Ñ>PØÂÿ‚HÔÝž¬ ¬:œ÷n¥Sz”r6§]4å¦èÆVfñ;™±¦f¶»¦ú0U!/‡rT ì°,~uð20ª+&ˆÝØÈé~þQ ϸ¿‡G‡‡_r±ðxêÐÙ ÐÛ‰Œè±4q´•¹/_tUOÞv,øŠUë¥ØözH1R¶Š¹J£Cµ‡kŸ¯Ó½µ^ëßô*µ6pÕÕÁ–ð¶Ë¼ü’Ùv¦3 §—“ç\|=¢>˜v_¸­‡ÖÖÐòGL1Ý´‹wq¥`OrOd®×qvïý`¹Î>5­Ú¶ö^ºóœšªŽ¼}°áÙÿl' 2¸÷>ª¡ÂØEðn*Vš»£`ªª¯ÍøÐÍ9üÊØf¾½ÅÊÌmI²ÌÜoƒD:¢ö­ ”- ¢Ô“èÚÝãæZS$%GÊ\ñÏu&2½zâ啈Q—Ø‘»–„Ë3´Í`Åúd wdë—˜†»ä SQPŸ¯_$`Ó' ÁY^EÌ…³ÔŸ—7”M ä³ü/Ò³%‰àŒ‚Çœ7—mˆH]Œ÷Eø0Ë1 ·žÙÞ†ƒ·9}Û)¶KÞežÌñ +¥—²^àÍ36È®M¦ÃØ\N5é³1;ünüÔÏKá‘iÎáRJê +Ž:û¢6ã+¥L¬ðb“À©/o¾0<íðÙ³í¡ÿPÿ:Æ21Ñpù+]*°cÛûÏΠTîIÙÞ÷ÕJ"©ã€P{C±*pYH>ò”•­tÁà´Æì†®¨ý(.c9ƒÎΘ†¦#󾲃!½=¸KQ5wF¯^N¬ØDãݘöáÊ•Ðw®Ô-Ufà¤}WØž0]iPS¬Ç<šˆœW ¤ÛjX¼äY°¢¾£óùoÄî±d.¬©ÜaQD¸»llb¼3æ3t4ÅòOµ@{à_¿òQ­LQÕ¸XPô‡+#Ïbp?Ή¬œñ1S¶/©ý´I$eO°)Þ§×’RG°°‰(E›PÙ†{c9¯˜5Wè yL®æï„ÙуFdÂ{„¾`q—ªà0ðÔœÁ ÕîÃ\¡¬\Ñ#Þ%oÊí—ÏW¼é¸äM§QXô´]Õ¿èd·Ëa$ ‘ô³ÉÛý³gä­«þ-a^&ˆ7ƒÿ2#;j´È&`-cƒãÕýŠ;úX=ëí }gÏ?3QßÄ:ô~pü­ðsÄÒ¯ÍÍýœ:KO ažMíΜ"oœPö0Náÿqü£ŽÇ¹¿½Ù#P O5Uý¬áöQ?S÷}ÑìŠzZÉÝ BZŽ`_ÿéæÃ ý¤ ÍõM÷9ý í2GÄü÷ 1Ëlnþ-èú?éH0 endstream endobj 668 0 obj 3829 endobj 671 0 obj <> stream xÚ•ZÛŽÜÆ}߯hbE£/ÍÛÆÎƒœØ0 %±½ŽD†ÀåôîÐâeÌ&w4¿ä½ð×åTs.]=ËÁ2wyª/Õ§ªOˆ›ÝU n*üõ5þ»¿zusõǯbâ—wW¡ð'Y$²0”i&nÚ«Ïþóüæ§«—Œèçàʃ縲ðïú\Ž‹fº5ÕPoǺ»Öæ„L©²ÔE÷Ã#Ú~Т©?¸Ø(Œe˜±hñÊLעﴨÊî<•(ż8q”É4ýMûˆUâAÅ®7ÚŒíåÝgZÞË…‰TXȤH\ó¡ßýûY»¿«u³~öãã“&A웽{¾ý`ç&›€Ç9’´(dZ$K2±Ã$z¬ä»ç˜Û1bßOƒØýýP¶Äò+é Ö8/±_|ý×,¯ñÿá…ÙPÜu¿gÜø\£Ø” +"(\Ä]È‚mG#>u'&C÷-ÄŒåXW¾wÂìhprµ¸ú»âÙ=Á»ø‡š¸ûÀÉÈ,qAz052‚jÂ?Ï\ÜžçØ8’Eá¾/÷ì=Ø’åî{é¾çq±-qÞ¾JæDâ¥í0Hˆ¶‚o/Ä)îkœ4¹ö¶¬>ìü ŽYkó²êÛ-á¶nêq/6ºIÌBÞ‹²H†lµæçfÛLFn6 Y/ö-àöõRZÅy&© n÷˜àÅ‹ÅáUè[HñÍ¥ôŽR‡k¤Œߌ^ùŽÏcZŸ=n2"8'y¥2wqÜý1„Jâ¾ÖöÆ¡ôhŸ–¤B#sÍN;]P*ö Ž—‡]òvmr4ûö¶o ®AŠÂlËJ ;ôv{AÇ4<ŽuAG¼B`Ó«/q7u=®§Ž”Ir8AAŠ\¹6;ÑoõPŽ=I­—FjBZ$NÖãükZ |C¿Zº`m09c~E²qá>‰ÓÌC¯–ÆÅZ9ò;m¦f\`©G†~‚¼*ÊeÄ\·(­•J=(I”±¬;„žœm€SRy·fƒçÁA¼E2’Áâ› 2òùe¿¾¨' •Aæ¢ÀÖ n‹Ç" ÉP¹X)B<ô†:†ÀõÑY¸·¼ª<‚tž£öçI{ñùçâÙZ7zÔsºo÷c‰{D§X>”_ü.¸n÷e3égò(­(?AÄž†”Ûr0VX_@áü"ÎèZßQ}2ü£øB˜¾ÕïíÆöâÉcýQW§™=ºQãcž’N¢)àvd§Çо¼V)3›Oé)¯EãÿïÔ gÆĽ ‹3©P*zÌg'Ì écˆ5«HñQœä²È稸9ÊûŠlºz»ÕÈs\û¥(ª š\;d)c“ Ž”ÑJ¸.\l‰è£n·M Í.Ã>‘<©xh5Ѹ6-ÙR „¢&Ù˜ßÒ(×ׇÙßI|ø„àë‘ËiñÇE !”NN!D®Â0ER„¢qu‹þîpÛQO?Ð@<[£ ‹œ{z©€å=4=tÁZÜõCkhÜ}@© á+s"c!{£,ôó7DD˜ 5¸Ož=| ’¾K×CpÊГybt\ˆ±üp:aì…+Ü nýý·¯¿·ý§p{,LbP9šMNt5sçá¬\ÀƒRDm§•^>Å"²Úµû_Œ&yâ™PéFC•0þE”*8rG´òc•XA4up ÁPy| ¯[7hTθ®æ¨âÙ2¢6†;À{áuv„3TÔÍš¾DâJqÀÇ»CníFJãQ’ªæé/¦˜vŒþÅ}hûî{ê˜0o¡øÈøKLŠÐÛ åÖN:ŸåbX„E(“ƒ$þ-¡*Åll(xÞ ³’—ÁxÒÈ ™¥ìýʦ½‘‹M|V7€¡u\2•;Qæ)÷0-d’8¿Q³fa‡1Ç?Ñ‚‘}²<½þf¿]> /m =6}4ïcÛQÎð)SRu@\¤CžÛ¶,‘Äij?­ºv§^Íç4éDÕ”†j¸u=À•|ùâë92ÉN£ý“…cNŸšÜ×µïÄ—/^(Sw_¿õ›£ïæFº-=y#˜ná˜a{OªÄö˰ÂÉÖ݆ǛҚºû`ï&úTÀ;×1–'l˜¹u} àƒ›ýoFˆ}Ø®ÙÞV!<Ö“Ð~ßua7ä|/©…*9½§c²Õ:xòpF+±éýnÑÃ1Ûi?Q•¸.qt‰bï¹ü sÔ\!Xù Â’dž?e»OŒjODbîÅ©ø­DùëÍ ˆ—¸ä“DTí•ýhEÏÇÇ\4W‰ ¼GNÏ1g,=m®îèß!8J$Šú€4s^LíΜa¡ÇjâÏSø?œž¬8kfüáÙ› ¶ Hð>;þˆ7{Ôž‡˜„‹øÁ ôß”Ý![cid÷r  u‘wûùé÷ß^ý|Eô&+hµ)î“óS`—9#Ž?ŸG›ÍÕ[Ña¬ÿjT– endstream endobj 672 0 obj 2866 endobj 675 0 obj <> stream xÚZmoã6þž_Áo×¢YVõÚoݶw(°/í%EÑÃlÓ‰º²äŠR¼éÚûxïž!¥˜¤-g$Ãrf8/ÏŒ±ÛÃUÄn×øó/üÞ_½¾½úöŸ OØíöJ°?‚å1Ë£œg…`·»«¯%xôõퟖ8H³"æIšÒšJkÖV;ÅÖÄ0“‰¤ài‘x´U{ïÑä9—Á~JÛc%QxlZò²4T7ÊݧK:i.øK‚hŠ|Vtñ,àpHÏ(*K£è‘fQÓ¤4b)o†®W¿Žªº¨n’|'úbçié‚ÂD”Ì ÿ¦Õ…¤Ë i^RøH‰S_VWÊ€ëD]Üÿ´tA]"²…ôæ×7S±Ì\ê3§¹ÑøH³¨qf=Ó;ûöi¯¾ßTûAõ §"à:Ñ8Jç¥ßTË>÷z`+OÆXp É#áX7èÌ”¯J†bï’}ªõ@dën£Xå!ƒXdäVqU·8ØTg¯ºÇ•$—RõºîÚköÔlW=±ÏÈzõÀT³ßŽ :¶QŸ[›áwÕzÎoÉ)àHæT÷°éÛ?`Î_~¹{ÿæÇ»Þ|ss÷îû·?Ý,X^‚¦gû¾»ï«Ý?<ù äéÜ%×¾yc”kÔ(‡€Ì˺ý-5g.­L@Tº´·d°CÝ@ï±oY×2Ýí&½5LP L«{V55 ®?!le·¢òD6kýk°îÒ,¸š Õ®ÖtË`­Q뺾WzßµÆAºfB^2åYéîy ×»fr@XÒ3`IK—øÑ_.xT¸ËŠ}þäQĨÞÀƒdÖ£€™KõÄ:èÔ#hõ¨¬-'°„²‹èZ1+g.òÈ}ï›0J¸Gó诖:cÊ¢àÀMí“ã2ϵÒàDº©½s!v‘¹ë[Õ«v šî"“"Ü Þ…vÁ൭Ñí„FóÄFM6Zʰ¨‚Eêò_ø13 §LP±×oÞ¿F ´ƒ(²y&\òOƒµ½~èFDʨՂh2Ix*r—WÿÕÜ­šnµ€HË8d`ïi±Û÷@ T „%d£¶Ú&ÍÍÙÛ‰‘nb³ ô[*‹àÜ¡lêÕ·$#í¯ùÃB}ÌC6Fe@U›kÊãxIJ ¦Œ˜P˜uSôÒ .Pzâš" Õì+"=ñ•HP&šRÐ’n€ h Ú—Ê>ÒtÀ1É<]uë—Ï@étÈVyaÇ —G’­Z›4qÍ*m릱ƒgAM pù* ®[×÷-9@ÇVŠ|oÃVOLµÆ­µ9{=ÂE7#ìØó Ód¶‘$ŸšÓ½É ô­ßë JtOµl‰BÎ1˜ÚÝמæh#.¤1¤»<ùÈù«¤j\ —\›ï¾Ó.S&YÀr=ÕØúþ°£òRªe¶(lB}bê »R¨yƒÚí«?%˜·ä'U²vž#ÝM%î´VKíž@ëg.Ëj¢; X8»×6ì ÂÛM7® 'éªWÕÇk¿(É _¸[Œƒ©+¨c«jE\'µ80Ï=ÍŒþ9 š¡| {XË,"9™Q|¡¢²pÈç|Ça2AèdÓ0¬k[„€Y8 C}Ê Ö£OlE>U82‹ò2óh.ŒÌ¤jÉŸó—„ø ðÞ)2a­wðRm=­WsàÓ$äˆF<î–J_¸] tPÒ¥n§Y‡ï$OÑzõá+ÊH4ãŽ-–“-šôd9š~a\… UaE¦:‰Í<£Bé¬V ÒabU! &ËE:¡ëP£(ÏA—ÎÏHÕ´¥sbdA²àqYõMWm¨./䬲4YãÈq´\] wV¸_}øzaV„zäïpT¬êCè–zFºw„G©Œ–ŒË”‹©iuÍÂÙσ_…Pw¹”.Üqßi]¯*-lO±âç»XâB<ž§ù|{"u»{7¦^ûÑŒ™ÆÛol?Äå—ØX‚ÜçòÝ"‰bžyF Ú˜œð¹³lÝâú¹–RmÔηlŠDyl/‹*$µHfµµYx£8âÅ·Q€êªý;ß‘£ˆËÄå>x±`æèhu4üÃfíj‚ a —¹zqwzô— êðœelgŠøi“À-¢Øj)…àÂ=ñßï—Ó‡éûL,yyB&WˆµwÔST[nõ'ÜÝùZl= È"ñ¶üTÑU»›¡þ‹¦n|½ß/äetß?%Ÿsh2F ÅÏhR?µCõ ²Õ@:Öó–7I“'‡ýÒM ¤SŸšéqe74' =¹`MB& +ôæÊ˜•zƒÚÖÃX5ÔgÚlW€CÔƒ?Ðøˆ<© 9c,\Š`Ù|PÍSÝÀ³Õ Ç+]m…51Ô”^)´'÷MŠ2´9®gâ¾= ¶²@M.ÍabTî Î Û<Öý0G[)CÖì=%%ŠB.< ЧÓûÀ– ­LŠi*Ü¿öÓ@†Xàr˜Ol,¼uóZÐߤȸŒJ—hY4ÒÒgwzGHøbÁˆÈÌ-ò—ŒÈB‹`‚y\iWŒyV¾ÎtîëLg„m–²ibo ¼˜³bº&—AµÀòêNëæBÊ¢ ¥ÇeuY@8è’Ò¥¾ÑÍ¥Žó(`ÇÚpï§«;-I_÷a±ù(8‰t™(°PõôR²Nz7QtNŠÓ„ð·Ãù’ÇHr°5ú²A½Bâyµ¶Ü4‰B!× þ¿øZƒøå ¾œvY¾êõòÈŠ„0> stream xÚZënÛÈþ¯§ì6éÚ,ç›[èî¦E€nŠlTôƒ¦F7‡!‡–½Ô(Чë9¼HsÆ¢lI(ïÌ™9sîTÈÖ‡UÈÖüówøû°úa½úãß$ãðåvÅY8KK8bÅÖûÕ»MUåM§7ìýúW@+͹ "ÊP׺°¥©Gyžx ¿G܉š"uÉÝ’àTqâ"w¦³çeŠ0ñ°W « .‘^¨Iòj8a;›ÛþB¥ÉUêq¼~|ž FàI¹`h"õð/Î eÏXÂÿµêÌä‡=M#<DæÀ¼èÎ1ñŸ¨ËÕ¹„â7uEe:})RD9KBwg9¥BC%—ö-මK…|!A ç Ú”ÝÔÐ]Ð<¤_Ât5µ‹;(•óŠT`±{Ô¡b¯åžòåz*> !ÔPÁ¸ à^몠8SS›öfú¹é8]¢ RNë.hA- 7§5t…¯öTP–Ì´FÃ!@L0º[l½gY2÷ĬûVÝYØþ¾ŠïÞb^zÃØÝ:¼87(¾õoó-Ž4²ÈeC¡2–ZºØÃ_Á>ìbO—àDÃ=ÐòÊ÷°¾çJhòã¬êÿ~šAÜC}¼oª²€r¯‡V§nšé²>ú5£L]òÃq™*ÆÂš¶»ýÁp£Î?š T˜/RFœÝ¾£÷8èö°¤Ý8DˆƒübÛr4½3¢!ùPôíû¥F_…PÃ&.¶³›››îÂò*áËàvƒY±ËÛ?LýQAŠû2Ø‹#*ºùrÊI!ú: ?Míõ™x:89/—ƒ_&)÷×]¶Uqz —æ†GWP|:ðåµ…>xœdhèx>Z2jÅLµŒƒí¦¡Xcºn‰áŒn˜-@&÷œ§'qHŽA»@H8*"ôÑ=º+vOGtX~§.°·ÌÔÕ3£Ý`¬ G‘ý¶" ,[BAp8ÊzQo—oÎuŒè i:R "Œ)ZÆü+m°¡Eˆ]ø¢µE8ˆs€Ÿúªúóú/Kµ hvð£3'»4íWÌð_¾|þǸÚ1­º’é ]σ¡ª¤gFJ8©AãM•ÃÉÛ~CÝ –°ïph•CÁÓõ•xÐg1 x0Ÿ”c?îK‘x‘2pÞÌjƒëe0 íÄÑ¢L ´Ùë»m_c ÛwcTØ?Cjkš››ÙÙ~Ç6ööýŸQr†Õ…KÇ!&jö=;èaXO§K§ÁáôuIÝgšPØyŸG¤ÐpEÇ&p @,ø}æÍlc,Š]Àñb_oý X”ù‡|saN-Ré3̯)Tv|MeÞËBmG‡ Ö¹÷°9Z-Iˆ¨H‡§“Ý|çKa‘#"l¿˜ÃÒ¤ èƒ\0Ã2 bÈÈ-Îôм¦y0Á©‡"Lv¶Àò7ãV]mцÝÒ\#ã8H3z¨+â›Ì4†1º çV+9Iþyÿ+tQŸŒýxÜ܆¾8ï¦*x6y‰C³ê’ßn_<‚ ‰2¿b_Ä<†Ù¾8úIÈXñxD­É–|ç’̓-’nÛºšj{ é\*IérSïÆqñ`4Kn"ܯ¨"ŽÏq¦ƒZ;ލc»Ò™ “´;ˆÎçíÅJ54Ôî4XbMw2Ë)^ç…í!üByq®\â\¹ÆŽs½×µ®ôÃúˆÙ5þ@ bÅ~…£ùáy~LYµŠTè=àø,áqÄâÓnµÅŸ,œÚIYb¿ƒIå Ñ®äD 6?à{ÈQ„ÿáøÄ1ýU#~zö¤ ÐpeJ¢†ß /jŸAaßÏ!’!ƒвŸóº°5ä»q_¨F>_¦^}[á#R’ wCpz ‡mŽˆùó 1óìVÿf5¬õêÛ÷ endstream endobj 680 0 obj 2560 endobj 683 0 obj <> stream xÚZmã¶þ¾¿‚ý” nOE½n‚Í!WhÚ&Ù"_¸È½Ö,9zYŸÿÔõcÿ^Ÿ¡$/‡¶Ü"ÈÁk‡äpæ™g†öÅãñÎþù+þºûþñî›w¾xÜÞIáã?)’@$~æ%*û»Wï*]—"oJa>õ¢øúñãYX&Æ!›Qç½#ø‘—ø\j—7OLF…^˜ñµuOß¼ …ô-ÆiâÖ'AåJŸIŠªMËö(/d2G‘‹Nçµxûúµ(è,÷˜3ˆc?`h8t©·bÛvbØiQ´]§ûCÛ”Uó$Þ [¹J¤§”­ü/ÿüqÒ鉟òPqh»!ßTu5œDµ?äÅЋ¼Ó¶:m-*þc¥lèÇAìr:¡8Œ›º*D™¹ØëýFwX‘ßHìe±=ù·î´èuÓW›ZßÓáð7 –/Úò¢Ð}MoǦª¶íÖØ Ï÷Z4ôVÇî#µ,­õ…<«jŒn9™E^,í™d¹~èÆb;í¹æQrÕ<4$ÍÐ#–ÙçXOsˆ½4´å>ú`Ž7´Ø,P™S‰ë¾ÈÐËìéÛ:꯻c:²ö ±ëÉR/ImI~}ÊW^ÌÏ6í3›jX·kè#È"{"ÙÕlâl\ë§v„/•0kO™y25SÇ^‹ŸN¿þü·7ýAÕ—ÁÐôCÞÀ‡aº ¢è“xfÇ c³ü‹Ž¼u/Úq _ªoRøúõWì´p_ÚÓàäìUœzQfKW®K%©§˜®ðú®ð½âÐ1»„aäeÊ–{®Jm…Îå “)ýd?GT§q Ǧmkƒ2:/vs¤Áàÿ†s¹î¥Ñ¢ÈukˆÜŸ[Mj6–Ìq>_Ùê¾aw ãÄS©-;ÀÅŠz,á0u½@8bÛµû+N¨àAd«"'|æ÷‰$ mèƒ}œ(@”¤LÑoÜÙd¦DÔz;wv-¬9ìòð–Ÿ5ÂD_ò³ÂÙK×¶‰:Û­P4‹ó ÜZ… àÆN²™=és¾?ÔéâG³³)±ŒuÉ÷¥B„ml«À¾š¦AЕžø>ï«—qbV@¬glÝ{QmWV3ߓНP¶Å¸×Íàž>–ç ¦„ÙO€I P ÷¤ßغ2æöVóx¤3ÑK ök‰<µEÍu÷­DºŒ}sý/³ú¡|xxÖÅÐv+øŒ\À§ˆ#ç(±'¥=ÞvŸÞäuõ‰I!TâÄ–Ò¸ß Q|äž:bPÆÜSS r´k!•ÀÕc[–B ö™r¶É´½ö `HÅÙÚ’ˆL÷¾kǧ›Í%’Šl¹nšxÈK}¢0 Ãb£eÕÁÐøj >Ç×¾å WÄ¥E»ùˆ¥<ñ÷–›Ä÷be §p‡gîræô°sÀõ̇qéö¨^âîfòTI{”‘çgÙmMFœïsàù†@È@»ÉÖd%ú¦Ó[˜³)ôD>.îö—™­÷l‚ÍÜBæF;}¨sÒ±jôœ±-Þ2z˜Žô|fÚöòR°ÜaJ4nrÈ…8[AøYóÏsañíõµIML§žŒÿãnl›ÞJa‹œÈážî'îÖïåÄSÅ«–Ћc6é™g^$Ù¸6Éœ<}<põ°d<ºÙ·sâñ±}/à¸Îm|Ïç#¡æW.½A‘e ƒ´½¡ê±ÊgÆ¥å€Ç_–zÞ+5^H[‹b£ìç‘“é# )“99…ŸŒ½(æ"—…Ÿ 3/õ¹”[øÉ„¸[Ìd¦ÂïöRÕzÝ-dâ%/nA”ÕDÁØ*vyGõHÞˆô H1Âo`X>J ”©y‚ÙVÀ'~OAWÄÚÒcU—³§™è3õ“K\–=‰óœ(õàŒL@w€¿½°8ųB1% ¬ãâ…l¤T Ü(&Ýød?ÛjT‹Ç“²çŸ€×d)A†«õ2*QØE¾:³rS^š²`X8p,Ù*CÕœ>T¸è”-ù„\ˆüîy°‡(×É/-á“8é¼sëz*Š Å\¦CºDk•)/Q“¨Cï'h ½§f@7êï’qL°'‘s-8oÊfÓ •)›¶#Ñ[€K×µãT/àòvreÂOOüP‘¯–µì ™iÂÖ½mÿüЙpïš&•ç±vZœ6—0»ÿ¯òÞÚÿQÀb,l$’»bNØŠ¡"×Ä“ÀKå…ø‡±é«'¢ L—Þ „¹{«(;O¥Šç÷Ž!i–ÙgLÊìå÷_xµ£UÈ*¶Ü Áq,3<${MQ²oËê <~:½çDD¼}Étq TÄté”: O¹§ãPÓq‰§œîª®6]ŽM—-vßä_tìM :9q ,T4ñ'm$¯û"?Ðä÷¯¨ƒ,Îó*(w,Ù,žWãˆhª=®ëÓû¯a3Þý‘&v,1ž1²ØCRa›ëÊšˆ®]†ßœ¿8_7¡ÓãXç‰øBg¨oZ§ù· 妃Òíi%ý iaïݘTÑY0RF¸fÛ¡šì[ƒœýio|𝩖Jà_Iň6(BõA‰8ÁBmTº^LÙ9d«>»ph{|r¼a –%D–ÀU”蹫! ¸‘gêæô,¹PÊĹ…Ä¸Îº™Yû\¦ÂB…>‡uYÏn'Ó€¥Üñ‚†7ÚªQ³Á³¡I“Œ9„‰sàA(žžIÓ—³%{ì|˜ýö":!¾Èa¯¦Cýå³1û†ÛLTµÄǧéˆGÎÄ$•¶œu<ªêûöÂ1NÌæð–_l:Žö¸.W=ãj‹ H±Bb…ÎÃC7Õýyxÿêý×+-ƒ4fSÁWJPЄ0dÒ¿è~¬‡‡‡­ŠÝ‡®=®/D”Ç™MàP·Í“ñ¤Î©KS*¡méã­Bͯ˘øMùí´¿µz õ3‰N?Çž?Sêk¦Nã«Î2¿êµ•dÌ'9=/L1¥¹Þ;74'(øÄ F¦®N9.p’?]ÀuÆg=š5„»¶ì—.ÅÜÙ²(E‰›¦ln^÷+*-®Å_Ggá]5‘:ª¾æœÓÛ ªG§Ì7.`M?ºù-ãêÝ–o*dÚÅUéíeÍ·¥ ¼ aæ B5¾r©ÉÅÂÂý`Ç~tMÿ—>`¡|ÝYU¹ hµ}þÉ­”2.¥M“Eùz§E2€ç÷P¯ùœ ;~±#G¶ ¹,dÏn‘elüæ%?[²³‘~®ô t üÔê<åIe¼É0/]-²ÁÔ…[úAÔÅ.©32õ088‘gfëgV™y/dgîê,³<ÙüZFŒ«®uMë¸F÷ÝÑœ`¶+&K µEÁƒn ½¼_vt¿t_‰TLϸsÁ²Ñ°ªª÷¯ÞšþûZI‹‹Nþÿ­PÓÇ‘w¬ v—q3<»T>á HV6+t[öºõœ90E‘O½{þ žï\ƒ0Ï `ÜôDî\­Ì’³`ÓÂáPÊ›[ü况eú4_¹ý°{ærOuÛ~2¥p+ž4½¾í¹~Ò3‘=õD>;=6Òkª-6V@所L=Žó«çÅkPÆ™%lö0÷˜XEXéÞ-œ £`Þt`\N*u©mÁ#¹ºn›ünϺQSÈìBšÚ­ÈçÒœ |~ÌŸR— –¾¶hxÇÆPœJ6LŒša©Á?[bzý Æ- ¢våòjÍÉ0L®LþòÔç'aZ¿½p^dèÅ‘\ÌÒ o´­¥ Éü‹xíwßM¾âY¡E_"Ù×ëmk‚¤xþY¿ujoDlüh|ýbãÒ¼=؂ڀ÷ͧʓav¹w¶ßÏS|ñáE¢ØßÑO)Ìçåc*ê»(ô8Vø8ÉÒ§ÝÝvúQÑ&Ò{jèÍÆOËMØ{H@z–TUN‹¹œ?cÖ“üüyÞÇËï’àIh^æh /mUcâ_Ô0ÿ)oƼž·FóÞL |ÚÙI°¿oÿ|÷Ç}¤jÈÖwÄA^>ùf›“Äò÷‹Ä2gw÷›h ë¿xI`Ñ endstream endobj 684 0 obj 3112 endobj 687 0 obj <> stream xÚ•Y[¯Û¸~÷¯àS› 'Œ¨%}hv7ÅÝ Iô¡gÐm+‘%¯(Å9-ú‡òÐ×òë:CIIÙ^ èð›á\87Ê#«ãÂ#« þùüÝ.^­/^{„ùdµY0âÁF¸O¸—R„dµ_nyémêX­úG,$õO²ô÷}TÆ ¹rˆ‡Á™öNÃÖ™ö¸ߨý„Eç7õñ’ê±Ksƒê^¯ÉDsù ?ôü™æ!·Î4Ç­àFÍ'lïw4¯û}"»ÝïÍ•CF¿OgÚ³tÜz'ñåÄé÷|h­"gç$h ,.²å˜aȦnÈ·m#ö{Ñ|‡|+T]A!yíVf±"K?±¡0_ÅþPB+¥êý)û¶k*±|”rHÀv‚ Sh'¹É¬kɬ.\Ë@ªßej}×Má)àð,P-–ö¢5O¨+àűè23¨¶Š”Åg«(Æ 7’À´PwP‡æ3×µZw£P©Ä¶‘’‹vçHBéïÄNÛUŒCsn"EÙIJÞ£Oõ_”ª&VåöáD̦+á²í²[W®íÊÐÐ$ßÖ̓ÛHIÓ‡‰²d°;ææ¶tËWȃqÏcغ-ˆG Žà{(ªØ¢_AÙÙc¡IyCC§é3û(uÛY·HÝX#ö¸útLüF LØ¡|uû{(¯ Qm¾\BK WÿOóu6tØ\·6Ò¨ÖD3”³Û c—Å™q`8¶Îìƒ[áö™°Sy¿rÁi,u o¸#ÎÛÍ`‘K1uiÎLàÅãÖ™ p‹Ýh‚ ;Uº›L0Þn‚‰f¨u7˜`¢qM$á¸õxïmë½íG+eÌæ9@¥ c‹–Êoj/Ëòáû\WÄþˆÿýqK%=(釡C×lå…¶ ©^’£%c#·¹/`Ô®0%ɦa±òɽ„§Lr µ®¼#UÝêR ¥ ª"} s(̼Ãh•‡oW3h͆c.h† axÇýPzA½(4I–Ž ýxZY¯>LlQbRµ8¦çÅv‹Úäv™bLûxOïF?wÞM#ù×üLrÑBwÒ6]õYB·{“P›"Öd‹¡w‚[B*)óáMª%Løø¸íÌ*³Œ9 éG™É-NëÁ‚ˆBûabÇÞ£¬ëÏ:TÊñø|¸ò˜ò$0Ùéç$ÌÜu#‹jÞgg4áÌ$…Ž©UöÕ °ôG–nuó\ýÈ¡©×b &ßɼ˴¼¢¤§·Ï4^?ȉíúˆ§ÃÛ’íÕi.öLš%>Åõm:Ȭè}jß0êÔdrìûLôÆÿ Ýö½`Y@e,„fÑ›âß_]2‰~S­hÚî€ANšÇ9pv•ûˆÆ¡‘ëyŸQ÷ÍØþAýVËå»úHšúøÒËg;X}S  ‚ ­ó')Îè<¬<ÃÌ ¦‡ü…x/ñ X@þWñëKòìYqÿ”üÇ!†É*Šû&š/ȵщã;‘悟ÍÂÄÓíþ·~Zv=†£7Û/ð»€^Ë„”‹(ôœ%Në–=W»Å¦ÿ"}–ä<|˜¤~ß‚%Ñ™¦ <ôɸ þx˜ûã´b eÖƒÓ»p@=˜IyÈǼñËÃû·öŒ| (ì‘85ü"ªN”ƒhH÷¼gà¡\h'bý¾¼ÿvñÛ—¸ÃS”6f¾±ò´˜=bü=!FšÝ⟤^ÿ¶þµk endstream endobj 688 0 obj 2410 endobj 691 0 obj <> stream xÚZ[sܶ~ׯ@ŸâØ2M¼ÊíC”Ømfœtb«“éÄ –ÄjsÉ5ÁÕjÓéêCúÞ_× ¹ÂDõ’L&«å9À¹|ç;ྠž¦ìêp²«òì¥óçñßÍÙåÕÙ«·‚q<^Ÿqâ_βˆeœiÆ®¶gÏ®6r`µ>gu[©/¯~9‰ñˆ‘È]Ù»º½a;©6lSmź5“ìzèzõ/Ö+½o¦ÕÀ®¥(!b×R·o*öË–z5ìû–É–©ín8²¾sUE)U=°nõ‹*‡svØÔå† JšIÍÖ®b Å(&Š²Ñ §d«®kŒ¨qW.Œ»ϤE¤±•/»v )DpWâ›Ð«ã mÒtÝ.`ß“Cp쥈‰í„áw#õêmì(‚ç³"uå?ÿ°Wýñ½uò¨èGVðÌWDh¡Ç×" ò$sÅõP]\Ü»]ÿøqÈ}V©¾&¾çEg±+sKžGˆMDžËZ"(ž² ò §Ô9\ŠÃªaèYÙK½Qš»½=IèÇ9ÏfÍ]ßÝôrË:hɽVc õ ÛJökêU/û#:|O³3JpîÚ:ØD¦ÉoªÒ•¹+Õn¨»öŽÛ!qLQu-² Q©õd ‰åýÍ‘_+‰²™ÎLjo’0 ’ÄÕQ½Ær¨UWÌø KNùuõŽm¤É[±pÅ®à¸kªÜ´õç=JJ_Ìù•‰‡4iœâø‰ÕÞõçf·»¸xßPç‡×þ~…0WÖÏü‹ ]ÿª®‡ã+?°%A6•ûñüø¬f`ákV³ßx Úýö+ëÏ>~ùš½xQü’ýÍ7“ Ió1·Í>aº?Õ??X.L‘“ä«Wì›x°UHDÄè€L´êÈGåi&EðqŸ¼ÐŒP&‚,¥‚ Kr~Žð"6®ˆpÔúþb_ãhzÃêªî¶OD'‰‘ÀøÿDÄA˜‰ÿ ¦®ëAõÏ€ìD"ȳØÑ0z8X)$÷|÷»ñKTÈ)ZÃ#áJ¸Â'$\ÏY6¥ôÿˆU Ü2,<‰¾Ç(| y¾Ô3ÃÌ5ö V{óyOü)Àò'ü)°to=ÕàcMþÚ«'z˜<¼ðû’)J¦Mcé?…Z·ÈQtcãÓÁŒB¯Ùâ?h.^1…ÞÚMú†Ñ‘ÂÑ2n†Í“¶'Ë3R=ae+¢èž§ÏÈs$³¤Yt¶~)Ï>† ,³3ãÃú4kÆ ûñ m¸Ÿiì?ýüñ™mõ#ž/"¬(,ÕwíxÃaœ!Ø–+a§Ã} ûUm˜2²àø€| àe!R¢xXžuà¼0¦¹”ÕÛZ5Õ÷r« `ãkQzãI˜ÐíÏDA0tL§­îIw®ª)aœz£ŠˆŠ ʼn0Iö6=U§´î PuµºgnÊ›ÜÕzx8µ"0à®\ˆÙ<¦à koþ‰m =Åì [ÚèOZ®´xÌL^ ýÉ9µƒŒ\î¹¾ðéÚÔÒ¹y0ãq¯Öh m©Ì7ßDœ¦ÆÇ £vÓpnŠëñð0'²Ó.¼A UÆDúY¤uŸ#©Jìt@ÇÓÌ¿¹3½Œ­”d™Þ—s qÑ…«  Ä¸{SÂ\ƒÄ)ê»!X$ÆQaøþ87|Ø©²–Mý+½h3ω’Ü…Á±ûÒ̹>à‹€¯Ò¿Y 1›ºº>) ŸyB÷ñ)Ž2ˆlÊ/ÕžâµQFJäU·}¾ 涀ʛ|[0²&DX£·éçKLYøâ4Å ?ÎéâWfÖï‡ ¤µ™?'Ò²¯ô˲ÛîäP¯ê¦À<”¬Àxê5GgÉñN°YÀÚ(÷¦¾º-›}&¹@#‹øQW--d‚œ'Y©Àès¶òï>Š”î‡w˜ ˆ¾èJS~‡½™Ð;Ïåq××{›à” Ð!ºøég¦õÇ ñ›…m­À_7j`»n·oä€,^ÇÆarÚ£§‘HP(ׯÁgè)îós˜N6»™@«.…(ÑØ·-»,è"'²À(¹Ò]³ÀÏà,½šzž½ò²GÞÍmSä…×6#L³¹°gö©Y¥ÊFSµwOgúfvÕî0ûXæ$5N³§4øi¾íÕcÏ2l% ⪞2Û -=§f=Oe˜û*1Qƒ-ÐÒ²¡•eéØb0M“%ŽžÜyWxqaè 'B_µS!%^a$æ:+§žûê!.<DB%®Þ¼ŸbŒÔÅ$ûUI¢ÁŽIÝ,ÈbAžuùîÍR7Á˜" m·væ¤ásK©]ëHÙl;4Ùüææn…JÓ@³‹@Ù\yÔ¬U¥ÒºP`ÈÒJýÖš±ÃdDÙõ½Ò»n¼ßÓÕì²÷nxÃKé‰öuc•l¢O·ÓÁ‰Ž„¾gÃ{ÜûÐ!Kec/ßF~…öiÙóPÍöú~/õv×aç ^{K+7´Xà˜Bš#YÇíd?LWí¥iµj$S7ôþ> ƒ˜Ú ÷÷ˆŽˆÉóù.{:ïü‚&ɼ²æ¹ƒ¡Õ<°zﮀǘ”]ỹmM%»¦ó¹°‰M¬ƒo'€‹òúSç3Gq”@˜Jx—)›¥D„{S*qŽ CH-"R4E×½³È’ŸLðeEÁÑ˜Š‚ ·ƒ¼±G·Qn: :q¬Éy_6”  FI¾|â¸ÀŒRÕЈ$a!÷"2ößÇ^èðì¾{¬z%?´˜ÞjrᜈÞÚzíØ­Ø¥Z›»óo½˜‡æâ*Ýí‰,Úx/ƒÐCc"G!].ãäù9kÔð…ÿ¶(¦‹iÃ6èä Œ=}Ž ÈÉs5Vð¦¾ÙxÁ2Í—'OK3j qÂh>•ÝT¦t¿ iòà° M¿µ¶ïÞ "›DÜw°öÈ OJnØV™¥k½õyïôrƒæ›PtЦÃ~{à¶š^ØŽæîIŒI†­Ì‹eóSÈãÇ\^¦t¹óù¾îщ‘ƒÔ‰x:ßçæºD’꺼¶¦¯—††‚jNûµÊ†neÙwÞŠA´PÿUßa6œüï_@ƒp¢ð#e(©!Øîóérƒ"˜0zˆñšYÁ:ͨ¦S˜qG%Ouè" TöbyÝwÛ¥!3¿àDÑõ†ÔZr¹Åô´½™¬œ "0þ Âü&a«d«' ¼Ïɪzí¿.èRóÂJ ¥Æ–s iŸÛRwtäÑw¦¶(Ÿ9ìï&ŠŒÈ’ü2|_/:‰SM/•¢Ô&¹#ÐõŸæ«i†¹!ôÚOÈ-89*†Ì›D™RÐO¾<ˆR"µÙëóÉïæ‚ˆÎ*1’"âDáÀºÖðt²‘ؼx§r Ð}·ß釯‹ËÅZ`è‚j=\,¥)ZTÄ]Žÿ““{:óïYf­ïç*ïܼwTìu![O,´‘å'CNf”a÷Xb{Á›«“©½ä±qD¹=³¿E0Ÿç9kÎ’8ô>BàôYàã(k>mÎÖæ÷TNž3s¡3ÞÇç郥ݕ³8bóø|ZÂÿãô‰Y2®}úì­¡í„Àä,ÎæŸ7ÍMèŽgì/˜DÙw²Ý™­½—£ÐìËx‡‘¿Ÿ~þÃÙç3óÑ<É ³Û”GΧÐns”˜ÿ¾—˜u6g?²¶þ áesù endstream endobj 692 0 obj 3246 endobj 695 0 obj <> stream xÚZénä6þï§ òcãdEuÍ@$‹,2LìŲšv+ÖÑ£Ã~¥ý1°O·_‘R7‹Ýš ‚í°Š*ÖùU‘¾¸Û_ùâ®ÄþŽŸ®¾¿»úö§HøŸWðñO ÒP¤Aà%RÜ5W×?·âIµª/êqè&1l»©Þˆ%¦¡jŸÄWw¿aéìú¾çK{Ÿácý¡ìU1ª_÷»a:<â±ëEQ×âööÝ/·jS[«aÐr´JmÄØA %6Õ#m¹l$eìE¹½Ñ£êU;жh° mº)Æ‚X¾ñ=éG¤ëôIž{I Õ<¨~U+~xõJŒÛ¢Õ_§¯Ò>ãV‰²ë{5ìºvCú(»zjZÍ¡=ýke1¨ÍwYc2ž°[*+»fW«Ew> |ÑpI–.ÜU;ŒªØx¶fˆ"‰ ˆöÞˆj{›("HbƒØuÃP=ÔŠT¾-yš‘š-ò¶œEžÌíå3{…~à…Œd¶8ës6Ö¿vmAaÌ3/î·äÆ £}ó²¢IqäÅÙtË@J›ATÚº¶>97³<‹W‰^}¥ìóE¶Ç _½ ¶—‹Ú[DI½Ø–%‚“d)h3Ï7´a|Yê( ½(e‚“¹#ÄÍ4ŒŸóEˆ”g+jâ®xÙ e°0ê~`ÄQAa…¶ ŒÕ=ÎzÛo• )æƒa,½ °7*àm†Ÿ2ÐìëMQ ‡K™ p‘Ǿk4¿ëSÞ’ ·“‚Ü‹c½Ã[fÓ<óÒ$³iö+Ê |+HlÒ·S]ÿåîo+þû.½¦Ý®ëGTæTXZˆ‡ªUßµ Ë z¡új1׋„Èlß÷l= ¼(cëÕ0a[Ò8òyä‰ûë÷ó1>¼qT‡±ç‡’éDõÇ|ekÖO žK mpZf‘’%žŸÛ«0J'ƾ{` ' <É6™öÕ¸E¦óî¿bJ ’ÜK3›ø;¤:8i×joiŠª¦¬^W˜¡8P BnòÓ—L{¢˜}usËHâTgÂÉAìT·;&­aœÊgóåjìèrÆ);{?T]{#†Nì•ø =;r ÝzçñѢŢ%‡²"›‚*—^˜Ø«ÑM&Mô6ªDJ®†FûE7­)Ê(h|—ß J!ƒ)Œ”†¨Q`†ŒPü<°§ª)™r(¿†±Møþä´??}#À™‚˜üQ•£ÆPªR—ü6F-›‰oA ý ÊÝ7â?F¤^û|"Û{¾œR¡µ–yÀý—«1¢"ië’3LOOj Qòœ=÷I$)i³hî(vÊÅq,T?› Ÿ1ÞxØQÊ&×7%øÍç}õêK. übï3*_C.p¯U4?¤ê'ˆmÃ&+͇Åöþ”á h¿äÄl£ŒWízæ„2ÊlΗª›”#¦.™Â©MÖõÏŒ ‡9íuÿ¦8 ±4^Ødû%2s·ÄÄae©µjL^‚eÑÞÁ¿tÝó´û ùImV ìî0òÈ 2h”Lv"ø½T;íL”ìï(lJ˜û”Úw.¦ñC¶ù¾åÛG¹ÛžŸ~™³u¤À+¾‹DùŒÃ‹BjÕn¹¯t0€¨ò‹ÙC‘ïå£t8ÊÒ£BÏn¥‡Mc.—yožX¯DùÆ¡ÄØ» Ä™n`+„XmŠQglÊ/U©œ /T‡Øùb1ç/… ôÐýìñ%w·Ô )1œø–J€–Â=2JôLô‰ò5ÒG5’ÎŽ’kœ„€5rô …DКf!hm©[‰3G ©j³Oï“‘¹Ø[t‹oà€î`ÿÁo“‹:½Ì£8FùO˜XÔ¯.N@ýך™îA77e_ [ÌÚäSðþbTOòÄY×DöÚ ¸ªD%< OÚíT;\*m@çqšÛ¼(m›Åu>N -Ä ‹;ebŠÁ`,E»¶›ZU«ù\Qr–Y À†Î,€¹N‡‡Å „E„4†.¯2¾6Lƒ‚€Ü$ÊÁ)è>Œ›–*'m ÞØ!«ËL²ïP¾ÒNƒq¤È6-‚»,Ær«KÄÒsˆª\mZrÏ—ìäÍh·{ýúÇÅ•.gÊŸvXuŸt¼JdÍ™ÈàlmÓú£ú4ÕÓvDI BHOj93a‹Kî¥Â"Öæ'7Jh£æéòs@ð¿3eâu*iÈÀ: M{ªkù $覧­ç€aTp›‡Ú“Ì£k¶ë9z«amö“‘½¶ÃúòÊ„¯_k!.ÛBÃ}#6êS‹yŽÝYxöüдmÛ| I`{ {~{ü¾Wîv+%pÉâòÄ/g3ËlŠŽ£^—–ë‚N€ÞèT\¢E+ƒ·]Á<Òeƒ·¡ì93§^áo]ö´e´Étò0³Š¥dº1À/Ñ{W2UA¾ù “èBtÊïµø‹­A‚â3F€¤PX ®>rhÄÐ[ξ‚fvÏH<óÏ LíÉT8Ý,e¿²c­”Ćh‰ì y1 á8®µŽ€Mõa.hø&`¢q®c¤û®fd°laL冺]yŒ–ËÖn¸=Q~ÐZqÁ0áÄÀå2ëâ™=gqÑW:^©5PE¹Û48EëÀ· PöÄ·‡&*ž2/³wæÐ-мĿ/FÅsIS9w´C~Ú4ªÝ ˜9ôŽ$)ÙÚOÛ¨(K÷j§îzñvpµ†8JMmM¢Ý¼ÖYbeƒ6=blÚ÷×'^Ê©ÃàØãßÕà`™\MHQ†¯Ë?ôY !‹Ú ¡‘^SH"šnS}Ҧ––ji&cÓpËo¹Õ¡3í÷§†¹Mü} ñÊ£0%±œ ½4²—U_wÅÙ„æ~[Á?ÍhŽu©ÖÒ,oæÚÓ‘wžyØ€ë#V¿1Ïܵ‘<2{o§¡©T÷_Û¨«s½4mF~ÞÕmÛ÷•îGÑšð©‹DÜfM[Lõ(ŽiÁVúșƘô¶»™¯°÷^Y®1—~ pÒI€ƒ-tÀ®Ö惥Æ×Kðd¼Y'qÐÝfI<—õJØ kŠúâÒâ¯â‹7‡;úó-vûâÏ«ƒâ(@Y’ó•ZÕÖú^Ã=¿xøœ„aæ{y’~FB&ÜýW³x`Ý­âÔKæAû›j(U]­ê&¸ ¯…‘—sjÒ¾›¨S¬Ù4锬^è„z®hL´ô ~œº‘ìK¯†²ÐÝ[3ÁÝ›±<¨š&TN·†*±-›t#' ¡½S:BD}È%sÆNÒ‹rNà‰ï‹Á´E|&ƒÓÛ¤7Kbu¼b„êÏ0ˆ„“$ð›»W{³n+¦‹À„Ÿkn·.%0ŒŽdű;̳0J]ÝÜ&P~àÕ(`%Êk@êè§Æàqaî…1Ûœ†Ó¸›FmHnŠ Jι(õ4_^n§Æ@"|inëNæqì…yp·¡£-®slO–Þ‚i0¤Á<ß‘hÀšãùQî[kL¬Õ®.JÓÝ¢†¨tÙßt7ÎQ‚<×Ãs´Y”e^.í;2Üë×úê kÚ§õ¢5:hçÛtLUÚ8¹‹ *ø™áûU5L-yL“X›‚ã8ß÷✭«µSAˆ(e´Ã¤Ògàq‡g½W пE#þ¡k[3ð^Ñ\tÆr³Ö Ié’j+­½ 8£ëæU ›ú¶¢«†_Õ€úºÒc¡¹r˜Äýu;Ãóp¦¾¾÷}É7¸^‘‚b7OwÞÞªz¥ãEfpèQCé” MaPÄY{Ð IlXÊšæT(j0…ö}èºZwíʽvˆrÆüûHq÷¤Lƒ­FÖÈÒAöð¿ `ìß‘n6ÑÒ5¤†áëþ%©¨Glƒÿç_2=c¡„¡§Õ¸@ âýñîê#2ú?Àº¿"Q$¢¹¢t´üU_Ý^½Óƒ³@æw0‰S|ƒ(ñ¢³‹öŒQe 2µ}~R±TizZq| *®qò|š i›š½¿>Â>è÷]°:È*ôò aßÒosvS|#ôP§2˜@ã Ãé±c‰Þ#g;Ým§Aƒ¯Â`-V«fz%$—${|ã<$’:|lRˆ»òJ&ˆ%R¨yPЫ‡`y•VêGiz”cŒ…Z?•h-é]Ðr_|îÖâ0à^zÄ=,t˜È°/¡“'‘¬Â€+J_p“B„4uUÄVH?ôd(×5Cñùœ^k[N®5P‹°¼¢Òð× s÷j,@'%çÐ%*¡h9-“Þù…º Ê´'÷y™6„À޵Iÿl¬dºöGh_[κk«+–4àÈ{µbc 3DìHsv¬Zº×YMŽtá0Úñɇ]‰—ùL/8㎚ñŽ®O5âž_Ï5ÅnyˆHwmúŽPÌÙÒ5=ˆ’#ö}(ÊggnïÓôLÚ„ÿæëPVd/Ï8ÿô‚òr]g©Íg?û ±$T08«9:7"|?DU±¨fœsr,=_ò“ôÏ&ø–ÜÊß‚égZLƒ¥nß 2Ye@vnÎ_fôΆɿ ÙÔ¸Wêâ´*“^2S“Uçëø–ÏEônr&?½ypÁd?:ÞÆÌSòzÜW˜¨t‰MÍS'•9¶D¶qXBw¦Ùú. üˆ¯U­ý­1ts‚>^àÍhlaöÅ7(q,ÊæJ?¤ßËÏ ˆ,–¾óÇß~Zúµ½z¼üv9¢÷4’zU’.KÏ„°eHe(–Ô››¹é‰Tmèçß³§\xéÇXGžLÙÌæ%ò°&þ‰”#ÞíTÔ³hÄ÷ÙÀ'¹HO‚ýýùõwïú‚VÒœ¤MPtN¿|-¦¡Xþ>Q,<Û«‰{ý¯´‰á endstream endobj 696 0 obj 3929 endobj 700 0 obj <> stream xÚYÛnä6}÷WyI‚±QwÍ[2Ø äºã½a³ÐÛVF-õˆ’ÛÎ'åaö}¾nOéÒf±»EDO‹UŪSì«@E.nö¸)/®œ?¿Ç¿wßÝ\|ó6 Ë› %ü£DŠL)™fâf{ñÕ­e×Úº2½©ÄŸckDz4ÖnÆæ³Øß›V ÷¤5åPw­Ø}óûAW˜Ç2ˆ˜BmEÕ¹˜(ˆe¢b³o¥xW·¥™”[ÓZ#º þ¨­Œþß2%qœÉ”ë ë ÞO:ºÛßaäH( 8ÇM‹‚„Iªn…w]W ;èÁ\Šz]Û<‰Þ cßZ±qwUE*óÂ•× L=å= f»¸|%²ˆ˜|ÝX)Þè¦üæmìE'Ê"Y°-ß6yýº¶ï—=MõÛW¿}=ëð#œ„…§CÔÌ.òIž­‹OÝ(~áuZ¥"™d.N·ƒº9@®ï/ nãN’$c¤~ ÒdUvÁÊܲƒHæyì¢Æ;±í*#8.NèLÛX7ÕœAF4õm¯û'/¡ÈsWh/Z|ñ¾úBØqóéQlº^°*B³­þÎÖÃP†)[¯í¨ñæÕ«K¡ÛJü³„ý’)U(ó(çÞ€ç3XAÁ¸× žá¸‘‹~àË…äç‚»ºá^0T‚‹£øž¦·™]‚F~¬’èùÒà²4 êþî»q ÿ·.~.C“ܤ ÷¦1Úz! Üvt SGkìœRcߤ[«·u{'lyo¶ðâõ攨ÊUÅÝ£2Y$î²A\„áÅ%iêbk;ÐÆ»¾»ëõ–?ùRùÆ~²öÄêpî\-¹’QÁ–ÉÍâǧw¿þðêŠ9~Û5z@Zní%ýKæÅ8•qâê@Yi â„kZÞëöÎLÏÍâP¦Ì°ùöìè[E¦(´ž— ÇvÛS|Œ@Mõnr(0èr‘¥_…J”š5¤¬:SîL˜¹øŸ~~ÿÃÏ?}?ýçÝé:¨ŠÀ¢ÓÞ Dñ!“Ÿ±?þ ‘øå—÷ÿÇF .¦4÷z*f KÓ( dΖ»ºBmêkû [Ù5Mm§;·ž»¦»EÙê²ï|§Ùª„\jwºœÿÍ[ b{l A*¦áb¼ ³Ó§$h’ËhöNç$kÙhKW—Êù¡T™£@çX¨RK]>7¸>qÝÎôzüßÿ9¯?‚‡\!±E7ë*ŸtD ̈Ü®çîŽà;æ—ý©›ƒ.% ô®®ÛŠ£°œ; G¯HeL w½4»™‘Žx) Û¢Csß!:TôP¹¯ºÍU?†ÚÛž.K¦ÉG^ÝÃûGÎúÍTžVϱlÓœîÃ3V÷u7ZÐ,SO´¡Br·úȽ)?Çêž ªÁyè5^ò\˜¡^¥ŽçÂð¬çB çI/“å–%e‘PguÜ-ÁD´ÝuzíÁvñ‘NõìEÇ ä,IÌÆ1Íågwã4–m@~?ãZÔ¿Œ›ó’k‹#ôB&·f{ {9©§†^íÂ'*0½¿43ð9 7üÛ_Ö^véR[¯…±:H8®›ë~Íßö²i GàÁoDiÎÖ =?ðgÛ ¹Q0›Ï(ª@‰9¨©%¯$qm üÅ» ºÅĨ³®eÜk#`êHXüÄ­ GFˆny\ÕíRµ6|RD7Î'Å»îÒ³ ˆž¸KÓôƒD“ô‚™xêíü”´Õ˜ç¢LfÃOAߊÁfÅÔí|8~#&bÁ“öþµAátAǤ&Dk¤qã=†ô,ÄÜÔ‡ ñ¬æ½Ü\)nHÿÁçàäLGå'G<=°»b$8 wŸÇ00Çü¬/ÖOL IâÖÏxeiI~vLP9¼µôµwÝÖ àci~"šµÛr~7ÄHïE"ÈÁKR¦`w(¢¼‡ÂÊP~1…Ñ‰yyxÝÛ'û±ÙíÖ_fôà¬íù#&….fê0–hïàÞ;}ò¢r†ªãò¤}jþPi~À~â ;¤aÙ]§ËS¥¸>5å+XŠ º(ÈŸ]…²¡_ÁÖ>ý\ê"Fe»Þ0 íÝ¢œž]K¿i`f{øô Ãôª1ZÊ‚À73†íK)©bzÖ]RäMg;ºBó)’—:º‹8ÕÑÝõš“ˆaÙpí¦ë^x¸¹ó¤¥øí«kïÙ#!?P…™ð4xM—NÎÀÏ=—bxMcàxw?,OJSSõšñîŸC°ô*8‹zý€ÆÃ®Ëa„k¼ÉN)å셿ܤq¥¦ÛZn/¦ß>è{ýÌEs‘Ä÷ Àá;Â猥¯û‹ ý€í Ò"‰©ï‘Ay~´µ»s‡býẅÿÇá‹^Næ½ßÞî!Šu€®ÑïÐó#ËúV÷I¬‰¿Y4µu ?-¦‘ÜÕ¬ »È;‚ýýòú¯/è“V²‚¬MUè|“™3býû±ÊÜ_üC´Ðõ?èxÚf endstream endobj 701 0 obj 2671 endobj 704 0 obj <> stream xÚ•ZK“7¾Ï¯à-q2î4›ì×䔬÷‘ªd+ÞÌÖ^\å¢$jÔv«{Ü‘µ?iÉ}ÝdK(u»¶\¶5CAàÃP¯ã(µx<ܽޣ8/ÄãššFcñWøût÷ããÝwQBÆâq{'E ¤È‘Ke ¹¿ûúOm]›çÞnݳâÕ㘡ƒ2É#Ìj»ª¶ñ3Â=d‘EJÓbÝ6ýÐë¡íÄ`>VÍ“0bÕ¶µx÷õ~×ÛaÀ_¢îkqáÓr*ƒ£I¶Þá½eyå%ø¼¶Ï¨`/þ0Oï^ Óø#nì–NÔyå*£3ÍXT]½YÁÊÄŒYYžæTÍÐÂyz8AmÙYÇÞ5Ø7‘:Ê2º„Û-Z>›Îìí`;vÈ8ŽtNçD8 ÷® wïT·<2é/«6}oû¹ËuËŒMøÒífWSœyg6(Я ÒoGÛo¯È+ia:+æ‰*@Š ÀÀ]Åd2jùÂÇó¨ÈØ8DÁ¶k÷ ¡ d ‹j:éçvýѬj{û<ÊiÁ&pÛ1oP/iI…ÌÚÞƒ`?X³íVTûçÚîmsŠ‘ªÌ")ÄhÎV84gÇ¥~‘¥'ÿnlð?±wá}DEy­Nò?5¤t¸Œ£RR fß2òŒŽÚÎÔîH¦YÛþþ²'œÇ bhÛ¢]}ÏëÅê(øeàä%]ÍÔcè*.#Meˆ4LBÉ(a"6vû¹ ÝÚÎ6h}ŒE»ý}]Á 2Š<ÒÌ2G6\Ê(Ïéð•M¥…ú…GxáÝú2þdgÃ*NÙßÞþ¼X2U¼X#0|E÷—€†è¬¡^ìí~e»^8ˆsSf4€ËJ:y)ÎËP8´R 0—¦óV"ã_´‘ýG{x´Lf˜‰X™Ë`Ê-C•Šý?†*$ž+5g¦2½2DüiÛv€‚` ¯ !™‚Ê9•7]…ÀÈ ÚvÆÇbQÞî­?€í#Á#LE² k<TîÛæ~ß6çøU/;ÛølÆ‘Yç—®ò‡KŒªè`zXˆC=ˆgnÓ‡öÀ›Æü9Á<+ ±m½j㪮֧տÕ€š‡Ù¦Œ¶ÒÁÍmŸŸÛ¾ÝÜF¹³óEÚ0|ÀRft<°qG@èÈøãTZ›F¬w¦yòz{ d>©U1-{Q›c;x§àmÇôHAÏ8¥ò÷pó„öܘƟ»ö h‰¨«Æñ7psT¥®VéŽb?‚¬,@è*´Ð²ÎXÕÕÃM¦‰Ç1ÌuÕï%Ýàå;òV¼Rì*È%ÝzǶÑ2*]çȇ³()èp$ÞàÒ£ã¾í}P²bM'¼ð[RQÉÔ¶ž;Ìð†4‰Øîûcÿ©~¿™E!-ƒ ÷ÌI´„<϶dàbÓÑxsGÅ„–”³GÕeâ°.<êí“â]‚é Y_މW7¶Š‰ß»›Æ{y Ód "¸tœD'(F¤9•Ð9Ö&dxº¹U;ìj »¶·AL*¸ ¶äueе~†íψ¹`fé`dF/ .Ôk¢øIV •»mpeQ¿Þ¯L?gó4¦3øIeªáÙ’xTȹ$[ê(‰‹k5¾™Ij* åOÆûŠ3ô"âR'Êhêj8:_2bg€1ZH6Û¶Þ€ñ]vÐdÍö´´÷-Žì)ÜkŽàtÙãp‹5k ³Ó¸ߦ>ÂúˆýnÊ(ÃÁúl·ÇâúÆ>Ûfƒl¦8…Þ<⽈ab ‘ø­ÂÑPWŽë˜WQnTi\` !¨ Ð0“ûdIž©P'Ѧ¦Ü²qF¥_ƒwÔ7ywíXo~5kbM×`3fЉaX8Ó“që/ÑWÌÎÎðOw¹¿óà-m4ÄL'\Ãë|@/õÙB={õY.“¡Z?üúfPÓpPõ%Ûò<Ç€{®M}Ó‡W;•Ø\!£œ.6—’G³¸«5@‡¢¸{|¶ï«fÛÎÕñlNXZ’Rƒð'»Ä½Œâ’IðapII‡Íùe5T¿ÿ¤¬ Ò ¸aP™ÔIT²-1‡ÏÐìˆ;@3îgªtàd\t¢Ð, Àh‘S¡HüÚñ6T·ÅÖy©Ú±¯9„Ú!gB“kx O£‚Ýú½xjÅØ\lX·Àñ6¥à™çZ§Ö^Ð’À2*x«ëE[82#‘ø;÷¨O¤"Ž wÖsé«Þö Š«½ƒMpE×¼+γ ¾ç裙vÛ¸#[UCƒNyžõ4bWE¼ûú°«Ö;lCΕm.Ô©Ú³î”Æ’K¾{årTÈ­ñŽõTš0 âg9FMqÃË"_ýµœš0*lž`?M'Öp£ Œ=Ó¸œ*Ç}ön4à•dc·Š Ï×ßX9ß«®4¼ÿ´Ð©€j.˜sé‡öK,©bAf.µ ò+éSá|i‡£7„ãñ§@5k'Âlý)ÃíÚ¦EÖ`ÌúP5=µà­·’†ÂV«Çý•YDZù **]­æPÃ…¤»†ó8?Hcd>¦1Ÿä9ãK´«n©dï +sðõä‚HÂ}€•î犞DG%_¸ •²ao/s`N C»7.áÛ€{`ëÐu ŒÇ‚¹7[ËÁm µØ´†óELC¶Þaÿ Ï¥Ž1ÝŸùpêŒ|¶ëqðýþ³ƒŸ­g°»ÃjˆTY9•ò×ÛØµí{,³ñ¡¡ÿ躓Fø\å ÍuƧo—‰[MôÓ)YÙ«¦¯Bv§–á"p.ÃàåÏ4›ªó=Äy~ž”óÏ®k»ù[–ivžqÝ“Ä$©/K¦;Eëì0vMOo™¾$™Ù•ÆluZ±6@§Ät£C ’È_=ÙhÀÎLÇñ½&Ä™$‡1_À"p gÈðI¢TQÑå;‰oÍLHÞ}Õïx1³8`ç˜Ý‰¼q¦GÌ]búÃð¾"¢Tþ`7ÑÜ(…>H„¿ô6«ÊpÆî`“Q3]2´Ö¡°ó0ˆ]ˆ=8&ðüº…éÂK†Šº<±\^ìAm«è8?L0á“ÑÅ«ôTŒˆéšË@þÔ‹¹º`‰ *‰Ý&ÓO´ ®†ÌŒ(eÛàÑ¡4—ìŽ2õ÷EùŠ?»2ŠH»†úT•!aìCž§á%3áy C¢R˜G*9[à%™ ¼ïởfóÞÌR"L’‚.0›`¡Ò#bÓÚý`ºa!ÊœNZJ°*Ãt|½ƒm6óëk¨0ù¬_EÐ ‹4"s 6R€a×nú›¯* XÆUÜûŽq]e|ö/TkPrâ“ë³é#ñ¦€bŽ›û–B‰´õ²É›ßtÕ‹Í[ßQȹøIõSÛ·‡ÚK4ðÏ|ns-ú¢~mÛúᡳXä,ú›ãN»·k"s/U‡øê­+úq埆Ќ¼pHÝ·eÈ\ ÈK: i¹Ú ,…‘$|’yË[I²›–‹_-˜%Ötò ³$îq›ÈœÍò½¿3pŸ¾ml¬¸UÀ¢ŠÎäFÑb/¶§oAº›}†@zõ¥<"c&én,à6šÈ~ˆÔqp°@b°»ï¿71Xn¸D%é¼ÏÃ=žžzŠçœŠ÷j½ú +ßC‰Äߌ{É!ï®ÿÁ’Òíÿß)JD_=5(—½UÀ™ö€uöœ cÓ†¸Ô³3Ï϶ñÕ=ÐŽfÊ2a•.©J2÷*/$*ÁWè‹Ä%-}´¤("º¾óݰ˜I¶[?TUçæ¢s6þ ŽÍWz:ÞÕÖqŠIõ2ìüëÏgX¼†3¦©XïïÜ×ðóéc!ê»TÇÁG8VðÑËâ§ÝÝ¿ y9@vÿ˜Y”W[Ósˆ°Óì‡û-ÂΟ$¶vk/?}vG0‹ãÆslò¹ï·{ûó·ß¢ÛÁ˜ø'>½übšÑ·ÛA5œ÷Ú/£^hÁ~^{÷é?âH^¢¶~¡óü)vjz‰ÓωӜÝÝ¿DkýlBt endstream endobj 705 0 obj 3264 endobj 708 0 obj <> stream xÚ…VÛŽÛ6}×WÌ[$axuÉ[´E€hy¦mz­D·"ecûI}èô+úIJk›Ãì&0lŒ0gng.2‡Õ©à°ÚàÏïø½)Þ¬Š—¿q%+aµ+pü¨%Ô¼fU#`u(žŒ?]}A°Á3hÕ”LU3rµ·`¶Û.tn·;íÎh¡9«ˆÅ ЍZ¦E»1L¦‡ƒ {·õ,É”Y2R—™ñ[7 vÓùÓ¹þá”j2+è³=¦i© 9H!v výlöf¸±[Xzß­G3ÞAjYÖšç¯ß¼cð¾Òºµ¨™.IÝ©:Ò\˳*R<ÜÀ¿¶G6Ò“¸iR3ŒüÖ)FrÉÚ2°ãèë&Åï§ÃìÛ„9@7VTËJ•ÚSÒÊ’I’½s±ø§°‡ÿ—‡û’–UY‡Êè0p? 7TsÍ*ÂáD¹ÖLÖ„PŸ“]ñ‹®'º– ¢&ž›ŠÉ’ßyðfg±L%g²%H¦÷.²bmdÓ²Z¥Ø× YƒÉZ<ÌDëR§ÖÝ#´É¶Êj›SÏFFIÜ1‚š~Ò=Uå÷ ýÈ:¶‚ BÍ¥ÂõhÍWÿݤÇñhH‰8é°¶3á¸u!ïmÙœqËî,7=Nû/´Ijž£+ÞÃ1˜uoÁw[–û•ÕõâH÷v`òpêpÌÃ)¿ƒR¥Öf‹»ìºõ¯À¢á„i¹©G…;àâ Ó³3ñ"‹esF{p„ Ž*ú>Ru•ê–Ã4%Çu´>¸ÑFE^¢¸œ§Û±s#iC«˜jSÈ|o\RÅ—ÉØZdzöÞ-ÄÿC/¡Ô kËÔω„‘UÄÈâüfØ%BIÁâˆ^'$¡"ù"ÃÃóX½ëË~…HǎЇwZ§¦ïñ,"n)h4·`nˆI+'L7Ð×¼eœÔô99ÄALR%ƒªq'[ùh¥Z⩉yÞW.¯+á¼–×™ ‡ðÖ„ý<ë¿®.6^ 7­as(敊òYl /tÉ3Y¡¸`£´/vñŸÈ¥1Ⱦȥœóiùw¡ÓÈu)á,0y‘?\$Áj½Ä¾ÈYt‰KϹF=r^Ï)¼¿ûøágÏÿ¡>y$å½î/¦í^,xÌ+²äùÇúÅ_E£¦nc¶â«Äç4ÄùùŠ8Ûì‹Ï0 ¯o‘\UH endstream endobj 709 0 obj 901 endobj 712 0 obj <> stream xÚ}VK’Û6Ýë½³UÖÀ¿beeÇöT*JjlË•6 ‰°IBÀ‘u¥,|€œ"GJÔ‡ §¦¦f¦UxýÝ- ëãŒÂºÄ?÷ø»Ÿ½]Ï^ Q’Ǭw3ää4"QÆ`ÝÎ^2Fæë¯××¢ E‘XÉRtFv{|ý!F'³<#ùréáëZÀAË–ë”ê06Îâ%IÓ}Òr_[¨US m@u`QÿÓç«W¯ ‘[íìð®i Tªì[ÑYn%"¹ðûØ~Â"Ç}¾g$ £}”˜‘( ñý&;ƒþ6/YQ,7óÅßXÍÕ Kn*opÙhÕïkìe›¹Oä}Õ—>Þ®£„’¬ì¬Ã÷Œ°àY”u§µ?Á'aT¯Kað[WôŽ“«wWÓŠ[j‡²4pÔÒbC7s„b£< ¡ZLSM#’§Ã»k‚Bû›ÝY-·aÃs²,|o•Æ(µÞZXŽ=˜0ÅÕbŠS.‘xUIWFó !|ŽA“ Aclf¼ ŒýZón/VjOÚêiV'Érª?2`è´0ö]I3-G‘œÅ1¨÷D¶\oyÓÀNi¨\=ã‡òŽ’ˆ%n´Ç>Øòª¾~fV>‰v®+Á»¹æ:¥E#¸ôΛÏäþÏ/°ÆàÇ{Ñ È‡~ÛÈò<÷É´ºX!ï]LtÍ®áhqÐ Ùö·¢Q!2’¤ú¼'1¡¡52)nºLžLü‹ ýœãp5¢¹£ÑXó{)Žú`T+&è<"Y¢y{À¦—ª°Óªõ»Tz”îQâXuXwŒÇKí‚©¢)aY`×µ¦:·8e¹«)JŒfn…sÎG“ã[ÆÑýЖ²QF4'Øú†ž7çJvýwxìÉ­¾ŠÒŽûùÎõ#BÈè²é«'z–d)A¶AMKð.Ã(ÝîY‡âr> stream xÚZÛ’Û6}Ÿ¯ÀÛÚ MðÎÍ““ŠS©rvòx]©õ>P$1C‘ /ë§ü{ )4ÄqRŽS£hôõtc|ñðt狇ÿûw?<ܽzã ™zA&öwRøø#EˆÔ½@¦âát÷BJOz/þXÖ¥Ÿ{iÄhÄÏÿú Þª¾WøY5ª+jñnÜÚ\¡Ì½, []•âmUª¦WDúê m侗ú¹¦ÿ½ašzYÊ–U×Wm#OnÄ&qz2æ´ÛŽQD©—rбàIàq‚‹yžͽOÛC¿¯Þ„+7H2/#Íóc{¶7Í2/NÁ¥«ÇA|zñã§—´?®B§ˆ7Râ}»žlþ ^Âø‹Nñ»‘tÏhÇfW PÕFüÒ”žˆsÁ-•ÀBŒã­Ó¡üZêt®•xW¥Úˆ÷c5(†þFüÐöóëkáRÊ{ú©øðþõ¤5_kÍÖUœ,›þô™©*ðò„­«îÒ6JT½8«îT ƒÚ‰¡%W±ÌR³/¢hvbWõCW1 ÂÄK9툫09,†Òd užèäJõ¢Ý‹á©jãÙb×–ãI5ÃF°Ã¢ ò"ç,Q‹æP5Q t±¦DQ׭;—ÅŒñIí¼I£Qäj4Œºÿ>\øo8*ñµëÑ©Z=Çî(ÓØ‹RÆ:Å–¾›ZBýÝ[OüB"ö¤÷±zQ˜Ýû±,AÔv3‹ÎÕ¶+º ¥+ô7t´ïŠËÙL¶4Ñ··–ç°ßˆ£jJ¥Oã׉sOfk<ÍxÚâÈÞÿL=™…GpœC×Q¬9ßuª81CJ2Aò°©ê)¡­¤ƒ8 ½$žâ ¢NnÒ‹=”uBÀˆÞ s ç‡amNŠsú»S}uhŒçÅ#óÔ4 Oµ¹ÀÃ(²Ð‹ù¾<½ Û% ?÷".íØ‰=òÑ®=ѱýQ ƒÒÞ‹ˆ<ñÃÑ ]ÑÃï'û33B‰\¶µŠ†å½¾bÕ ªÙ™+• ü¬þZ Z»Ue‡ldŸ ¾û{ìpâê‹r”9.%¹u§̽J”/D7Gæ‘'9‰¾Uo$$«#Ä¡´^ŒªÞs÷RË_®yeÃ"qUQœÏ5å$RP{‚ügUV8î29NAIóVIȃYÄN&‘ÏEùXTm]ÎUIÛ¸²Êxá¨u°WD>¥€õ&3éùc½-b>@HÂh–"¦mÞbèqŽm׋§c‹û•ÕNÑÅ¡Uí’¬†Á¸IÆ6üi(%sÎeÑL›aÛÖMç¸@€Í‚|þD.s€Î†¹âN¢‹ýkpÁ§MZFýhq^§ö#«Ø¶´ÙQék²êÒvZ·m·«Ê­ëž0'ý­B™ì*,Ϫ Ä3&Íá2io-?Gù5,*²óx 9l’ œ§ªr¬‹÷"×Üêºû‘\L–@f€ŠŒÿ˹.mîwà1ȱFîd18XÈÖ—j™k2!‘’]0¹ÆëGmʳ*© ­ç Ar›&Ü+¹4¬©ºŽª;ô:§.ì6’:¨ÔŸ;XËÿŸ èžåüÅ.¾+{| ÜÛÄ×É’ÖŠÒª8øj¸o38`!ò€ ù†dS+9¯a­ˆ[26ÂZW µ®ãéÐÄf#•|z1e~†Ù#‰dŸ1âƒÉ¸:„8?C¯¢Úëk?UýñÓËï”E×€^4Ô©RU$1lb®¤Ðø µN—»’®¼ÓaLéå  ý&‰x9G‚IÙ¨„ þþj9Úb*„Ý$vd§ÔÙcªš”Ø úÒ(Ÿd<â)"Œb¼O®®ÂköÐæ;wí¡+Ný÷úˆELSÕa‡“Úqáw- Þ+7µ0’×~pšÁP²å–T9¤ Ûª^‡b£ –pÂ"€ “íA!KŽ[šÄ£%…ÔÛjµ{cßb¨Q¨†—Ÿ”²­MªqÕty#¬Ní-õ£Yjeè6ƒŽ±ë$ul^ó¨ƒÍ%c{0Äì’ÀW}ê {)Õ g,VÛª®†jª$Ôä¨+ÚˆâŒz)û4ß·(*ÌR=\HÓ§vWí/TÉ]¶äê‘o§ˆ$[ÆnìÐ=}È(¾ÔÊn¾q1™fÆm¦›‹‰I|Ž#öl¾ÍRÒ%C¥-®ñ Ø+È o=*ŽÎPªùµ?óõŒ…½nÒ²V!u—Ĺb€ø¿“jŸGÐÜyJ–3r^2H‚­ólÁ3¶®½ë¯9Á%›êw·K•[Ÿ¶Ú©tλÖã¢aºGm´Õ>½Ì ížç>ÀC~o`î©´Ú½óÓ±*NÜù5cò”›æT'ìu>›Œ(aØËp5§ÌÐRIsºƒ;HJù1èôp³×ãªÛéf@á“0ž«üœÜÆ^߬¢ñȧšaÓQQƒ¦_é©”.½ÏÙ(Ž=ŸËà–èÀžyÝâ6{ùŠÛTQW 0Z€ aL„³xiHЉ1 ý7½ fD¨W! oÈwÓC>F¹ øM2LY«¢[2Ÿ™û4-$²çœEGS®ËÔªL³¬ÕGè½r~žÀ¢”š={ýuÝ·ÞÜ–ÿÀuÍâ’õ¿2o/z†D3wU÷¦k8½éâ7.Â@fë›ÆB€')ÙIOÆX+aî…£¾8Ýi'” l†ßËC¶®æÉº™›T‡ª)jWÖ´neül/›Q2+pË®ÓDê|º!i¸foÑCqçq0㬧 ØŒÄÛBÅ{þ0é»Zœ{Š1 ¢f[«Ó„ØN:©nõð´kwciˆ4d¸éªkÎ÷†Äæs=Bð9#Ú¬Ì>±(ÑÜŒ í ç–†FÂý ƒìØ©b˜Ë±r‡Î1ßé ’€í]óISˆÐä²]„Ýy:Ñ õÎ&ÿÈ×3šwÛëJV’…^˜;´WLY,ó>wàXBBüBI‰noiºÎÏ_Óæ\«åVé(Ñ?\‘/Íç‰ÚÒ“ÖtÓŒͬŸwÕ0ðㆿ´Æ•¿Òû=ÕÝ8:r±tg›USÖãŽ@?0,Sÿ eÙ’j¡I˜ÄÞâóÍs—&Ò‰‹¸!ßú|Ô wBï|?ö€òÜ“©´Ç§óÓåß~g™g&Ö‹¥*šáOýFTÅä"BÇöñ¯ä: lÌ¿up“]¤5žû;:ÒÊl¾®û'Ð?CßÏ7_®Kž‰•žc™Gzݺêø‘J‚M š¦mîÉÉW=Ü.ÎsÅW¶jzh_,¹JËÚ<ò»'^2&kjyÖ&8h.bF~àôT½õ“õïco2¢~”Ü­"7?!LÉ7# £$l+óÔ1çˆ1¡€ˆq¶¸£ kìÆ›B?µ—N'ã3f}#ýîandÄ#5ñá@L/>_Û=ÂÙ]åþ†²uþ\@’åì|^M‚X7®Ïò£‰¿š•¸@²µ†J©Íå<Æ5•|nú—/nÃ\_ËXCN=ý²Äq Œ¶Æ >ˆýªã>ñôÄSvÈ ]UÌO%¨ ŽÔÆ–Yʤþfs$MãIO¸¨‹/×ã)ðÑ—‰”øÖÜ) Bj§S§bÿô°Pøâ^Ç¢<ÝÑ/ƒèïù3õ]ùÎ'––¾Žw{ú]·k9F EÔ«ÑÉyps´}r »ÏÔ,š#Ü–/I¿DVúéÛ9=ˆBÏ÷c¬§T uͽ¼ÿííw߉ϡ‡5ñìókÑŒ¦)hÄwo6ðI.ÒŽ`?{ý·»?ïè“VÒœ¤MP¯_¾ÓPÌ?_)fžãÝGÑ`¯ÿ%g}‰ endstream endobj 717 0 obj 3280 endobj 720 0 obj <> stream xÚZÙrÛÆ}×WÌÛµ+4Œe°Ý<)¶ì¨J^bÉ•J•_†àHD ËÌ'ù!௻§ §‡tr+ äl=½œ>Ý /î/|qWàŸ×øÿáâ§»‹ç¯"àËû‹@øø/i(Ò ð’TÜí.žüúôî÷e(ó½DÚ£ZªªD¿-;Q•…®;Z|½Ñ]§Ûoâµ®u«*ñ~Xc\ÜLsÖºPþ–½Ø4º4]ôØ·M¯‹Þìñö?öé2μ(²ïÄ}«õ¦ÙaªiÍæ{AÑe­+%y>¯jÚMY«öðá—HßààÖˆ"ºæ¾´EQèIÙ‹T«ÅF³I1vÎØÆl8 <Ÿm¡«f¯ÛIoͽÀåÕ†­‘2÷bÉöTu¯´`w’YèeQüÝ£e–zIÆÆqÕ¢Ùíu_Ö“ºÃ,sÕMëÆùuS?3º:ZµëTÙúåãÐ^™±·Ä£ãÅ,1‘F'vu¥^À¦Íª.kQè¶WøÛíuQB¥EÙîëU]L ²uGó¯ØPêÉÀ…!¸rBc…ã„/j·¯ôJÀÀ-¼) Õ•MÝ™{ã‹:Z„Z«„+º.š¡%ï'=Ò…{±oº®\W£«P-÷}°…‰£ØË™4+÷žòˆK ROð¤kv¤^„ü³{fˆ$7Æ?.SD%-nT»áQ†©J{ò·tÛÃPŶdú ßËí9ÜàIì¥l mp}%NX솮7Š®*Ž&lÊ4ñ8êÆsŠõ#g ¿y 'ÏR{üRìšvFú(:Aúp*Hýç ëYŠ’M7ZEP=É2& ®S;-~oÖBuÆEªɽ9Þÿˆâº“m<{ŸÉ}‡ÂØ`½ÌlÑàfg$X0gM ³+ fxLhœp>ß„r…´÷1‘RWnlÀ~fÏZa+6'ùNŠœ”ï»°ç \@Cc^$Á‹¯veGá:;„{Õöe1Tª].†è;õ7]+Ä)ѾǦõ°[ã¢v¯›ý¨r³ç9¥ÆÙ´8ŠÁsHXh!ÖÍæ@Ÿ×oÀ”ö ¨×¯8ÂúäÑÖÙB?Fr¶gÌÐvª%2Æë·Å (ÿÿP‘“Êbx\ltpP+N—¸¢¨rÔiÐrÛT£Ä9”ñÇîÐõz·2‘¢Añ·ì;ÁY‹d¥öˆ$‘Õ|¥ç7e=|9ÙÕͱ\‚æ²ê·Íð°ýw¥`4ähb”%“ 2 ì¹àAâʼn=lÒÃÌI;FJ£4ô‚Üžiöæ43àûIf/™q'‘‰â~d±GˆŠüOþ‹pê̵‹¦ÞKA ã+š½‹šò«µÍ—\ íÛrÍæ¦™—­[sÚØctR(óù¾qÒc”e^ÌòRàIF8{â=K¯¾ôò€I ÂST _ß#ÑM¸A Ý”ŒmÄà:bkïá lçSæKЮuÿ¨5n'¾r ¨ÌžÙ´ˆµ¢ŒÙÔv¶ÿf4㮓ˆ¬ë¬7ކøèØœD€` ¶µ’L«îLiR…Cfn6TfµåI9#í¥¼Ú唹=ŒËÜ·¦¾ÔŽŸËt‰ø3¬&Ï<ä{kÎj º) +2W»ð(PÄuYÛl¥C0˜:¢ €ç¯p‚ô¤S´K¢¦Y`N#´¾¹º½½ú ^_½½úpy#ÞüéæIäúÅÕÛÛ«qŸà´ô—’ªçxTëÕ‡7·âòíKñâÝÛ—×w×ïÞÞŠWï>àãû߮߾^‰—×·w®âè)É‹í}>ÒJ³Ï›w/¯_]¿¸ä¤JrÆüQÂ3Í d^”›y>wŒ,ð26~GmÎÌy#jÖÔK0 ½#®¨öûªÔ¦Ás)‘lTÔÖ¢ÃþfØsˆ~ÍÖðŒœh†ÒÇmYl>«ØAˆ€_•*à €gÏOæ½Ë0 íñC[>l{N.´œ®¤Ñ¶ü 'Ã-¡å«©‚:{(¼½ °wzl0ÔÆ;·3Ö8Ÿ’ïIvvnårÞk6Ò§'¦óB]%lþµ· øíÓSO\¡ª™+[“äÕfÓÒQâ _ÍðmN23•¡©’º^öÉÈÚ³áÅ×§vZ+@n" cz:µqˆ’%Iì]ÈÊ÷C]Œx÷ÚÞ¨^Q*‚’!®¥ŒW™€ç ‡åX„µág·® ‘=­q]—pÖêp $긌m5ãŠqì17-˜ï»ŠA8-[¨å§'£›!ìPÌŽ6¦¤Ãnl®ûé©)M€ÅœñR Õ‚µý×¹P][úzÃh]:EVxS§q2Þ zåé–8i⸀'°Åjb¯D«ï©­vú(BC¶‚f€NN}»¦ÒžéOùÀ¾˜É@IpT7‘·5eÞ3Á(C0{Å™ù8•4m`¯ºtu.ÁÍ“5êó8|’ëox éÒ MFqw®ÔÈÏŽ»N6ùMÈæpªŠãJËË+óþÌ4jPK´µæûE1J„¢Øš{¾(¦lˆ ÅYü‚™»ÜÁéÅ×íLñG—.Ó[°ÔçW0" š»r£Mתý—–fLpt†6áPEO–B1VmÞ±¡‚ÑUÁO¡®·2êÀÙ{€‰©+ ‰8îAeÞQ§·$q` ñÙ}ùlÜ(†¾¢$ôî–F¹Û3 ÿXHÔÔ> Óá‘e:q‚G(lB¾ê{$ ["Cî5þ©{«wæ4{DÂA‘ýØŽÍî²'¦ÏßÄ^ oýëV“㞃• ÏŽ±8åÕv 0&‰:öqnÅÝØ/È8ËëÀ- {þì21*IG‚t‰ÕÀ)Q1DÞšð›SÁ¥>nS“¹¡I´(b#? Íe±Ï7%ó:oVQ%%ö”9™ã`ƒÌp¼:¾ô±Öv ê3ôŸE}†p(4oÊĦŸcmÀ]œí¯ )!ç9ym›JG);½)‡Ýj6•/çš9—>A"­Ò‡Y%öü<·'Ð+ÓÍèt%Šš}Y ÍÐU£PkµÍ¾¥<ƒoöTýv[ò<­LÁ¿çèÉòÀ>à`^é79!›"!f2Mlsê LÎPTªÜYaâÖ{A¼àLÌ9îå±=Aµ GýáGÁ;ÑaæI6Oë=¥VÊ9‰BMïß oÛ”V{Æô¦ÇÖ¥ZwÔ˜ØÀ)vD]o묗Y¢¶AÂ?'ôw¢#ËôÙ ƒ}Nz¤ÿ=küplÌ7« šÛœç¿,‘¨ïí]–t»)>8¶–t¤q|ktFŽ-å„(™biÏ| °¿×#¿2Ø·åﳨÏVº²PÕœ m&.:&D×»Qv’/gãÔMÉÙø˜'Ó Æ kE³ŸhÏð0³W“wq¯c3&§X^5gßÅÇV°F;VGícMø5×C%]^Ý-+|ñ žÇ¢Ø]˜ Ðóü˜‰ê"–¾óˆ Ës„Çq.=m/îé·[ÇBš^fH’(ytr´}r ¬ž¼p>Âý°<ô£€jœ?=;§‡22ù%•ËË£7‡Û_n~øA|Ž<Œ‰Ô |£êAU“h´îÙ¸Or‘vûüÏã¿\üyA4’æ$mç?>ùFÌqÆüù8c^³½øUÔØë Je endstream endobj 721 0 obj 3425 endobj 724 0 obj <> stream xÚZÛŽãÆ}Ÿ¯èÇžaؼÓy3ì$†Çì %õH´)R˦F«ŸÚo̩歪%­`±ºººº.§.=¡z½<…êu‹ßãÿþéÛ×§¿~+/ßž´ ñO«7É2á«pO±D±êtîO½E‚hA‚Þ«yþhª¸üvn ¼@©Ut/ä)•u‚A¸Dü‡¿|'1 Òœ@KÆ÷µBP|ªŽ'Ò"ÃXºšóœK'Ýñä ”gÊ€}×áv ÂùŽcÀÍ`àº70ÖÅ4ÍËÎ|n͎Η•ß$)ã5¢vædð£fôf^"+Õ(N¨ˆa»‘ún]{ürÞØ©ú‰vÀ¼gdG½*³<®üÀ—þ|ë%Å%¾+â9¼tÀ¾,»¢v'úµj¾QõÍ—0P“³5îó$Ù«5¼³F/¿gµàÃW^Q–$9S",9iŒ Ó: j+Š5Òãʆ²ªó —ŠÊ\5™µþìt4gJ€0ŠWºçúŸä'Ý ·Ö‚º,(¥3j )*ò"æËþ U‘¯ƒx‰†½V˜qÂ;¶³ 鬲°ìºB1kqÝ'q—&bk€T=]dmQP9ÍXãÆvBÛ#ªS‰9pýLHL06Œ¹m­&œt”DeJÁÇï­a#»zäètÌLN½˜ë2ç£;ýLTfAœr¾äx$?yƒ{#ëd| ];Pßž‡/• ãdúÎQÊVG3]Y£Wõ®¼vuË Ú ×“³âgS[¿£Œ¢^°ù3-eÑȲmcººs±8G“RrÒóÜï®uí%­è÷–¤ÏY#É8ÖBñÚ®IG¹83# kk^€£S±5•Å@&#«3T¦9ÏOƒiw3PŒI`yŒ×­SAQA½ô…̳¨¾â$çü¤Ó#Dt*Î3Ôßñz##’!50ʽX×QF1_¯ú{?I‘âÖ®¦ÀÔ¥ïàrõx0óVôŒˆª]J¤ "­Ôí°$·ÚÎåòkSÕGÕ×ûÃ`Ç) Hí0NU¦¯A&É ©>–=í¥¯œ²¦á›ÍüM!þ`P¡ŠÈa'cà;â4æ°8É_†”EEJE4£ÿ$–“0HK¾lúm=õkîzc‘Ñ}×< ¨ˆƒ\s&KxøY!Ž£@'kRd˜,åËHÀ²‘ȃäñv4 ‘ØnF“5 Ô«/‚H?䔄 åÁIæB ·fp™áçXÚù6Û6•aâg‚xí×@Ñ·ç0Ï(H¿Õ~/£KÃWBºüºk/×K´`b½šTµ#¤xꝂӓSÀÜ»¤ºPï¿ø@õ­ûÖŸæ Md<Æœé ™¥öU¢h˜ŽA÷ÝQEüîÒ)*iFÞ5h8Çlb‡®¯öÎ3îù2¢”GÎ|4»ú|\kÁM?NkŒº£¼$$ÄO…bh·htîÎ(E…wñhPÄÞdâjAàφÃX,OÃa¼nÚ0V|>é®Ôïê–¬øý?Uß›=Y£þ}Þ éÌÂsì`ª‰q†±¯%ô#œä5¼bx‰u¥7ÃMd¡N8ÑuÉ \WEʒ£¢Ù¿(9­T«†w暯¿ÊeèUE5éáy T ”: ¢Ì2ès…µ›÷Œ9™'|ÛË^wA•wÂO»r«¹¼$å Ì<¶ã³;ÆXl5½u Û³°¸”<@¸»)XküÙâ1»@ho ßžç†I”¤™»¢ùnëë!Ó¬‡±i> >â¡6ž̖žRœm¼”“Ñã ;a’iÖÚIâr©í žúûXÈ{#£”¦‰àâõÃ) KŒâæ’É 5ÆïÔ¬ØÅÿñÃf}ü«ÝšÑ¼3 ‰wf>ÈÐŽ€tH+l÷»\¦N‚­ÞÆuD¡Vp9nŒ³@Ç|y.Þê¾÷J_(§|,JžÑצ¢¶—ŠjgZO²8ÕAòP°8M½›Oñû§àó.réT nÙ–'ÏTãMÏtîõÊ+®"WEÂÙHEPëñSdQDó‚ø ûQ^i±ßŸâgÕ_ŒÀEÎu¨µ¿¯d4HôlÓÕoÁ£Œ/û¥½æ£&¸Å8Ê!9[óvnÖ–•‚p,g¥& Õr𛿿“¬¹ívÆEÁMiNÌÔ§~¢º÷ •jäiqƇ)L"Ý@çK'7É>M4'É>s­[ž’½ÿ ?ÑaÌ ?‡âÌ• £›zQéUë#p[õkä¯HÜL¢häÍý Q~‰P"—Ìü=V]ó³kŽu›ßðÅd[o›†:(bÁì“\‡¢ yØöìÆŒ÷ÂZ§%Þ¿ð&léQvˆü§azœÑûÍëYÊ—ÿ0Lc0¼‡á-Í$½!,6é‚o¢ÙçZêÓŽÆ ôPlOôVÜîýð\'|Çj{¨[óÒ#1ŽóF4ÑÛ1Àž§ùÎÅ·išéD¹¿Û(Ê»:ªš¶\€‚9¡óí¼.|Bõ‚âzØŸèïPÜçùc¡š§4 ½ X>Çø8ÒÒ§ÃÓýqÕâ¤!T’P}N–ÉÍÑüä<‰Ôü`f<Âÿeù¤©ökFúé³wz„v% S¬/0òÓõ—ŸüúkõXS¿Z×OU{®šI4Ú÷22I.ÒŽ¿yýç§Oô‘Vò’¤ÍPÙ¬ŸB'æH1ÿ¾RÌ{OÿQ-xýÒ"ÿ endstream endobj 725 0 obj 3131 endobj 728 0 obj <> stream xÚ•ZÛŽãÆ}Ÿ¯à[va-ÍfóšJG™Ÿ¥|ÔÎ{ qF¦p¼ª‡ úêИ½7´Þ+iíÇb@Ûýî½VÑïÁ{¶ÛøøAÑí±;Jò|úlªæÓŸÎUµÚΫ«æw¾œJB?J3>Šv¹jØÑNË¢¦±…÷ŸWi/œ<ˆø@Ú¨½ëKoz¾ÛÿúÞçKyÄò¨òó4q¦À¢ Ömë‚lo·Ð´ƺ^«ÄCq^qíq`z!wü&ÖŸ¾5ƒŽqBnH¸ÏÒY.˜æ¾R²Ð}gRQîã6™þNº'õμ´ñ^ܰH¸6.ª÷ÚËÐW{c×èËölÆaÅ«Ò4½ñ'ÇIå#‰ç©þÑŠØÖ0$¿.Îc_g\,Œ¨‚À5›NÊS:Æ*ÞY'%Çu}N%¯´ØÉ}ŸÛÆLÙ™b€VÑxbÿ: áÊbÚ¯RŽÆBnÊËP<×f\ÆÝºgç~žé»v‰’ÈOµ;½5üKËÌ ÷Úxk¬gõ' DYÀtö¡'Øë¹žÞï¼® g¤S7›ÛшÇ8áÓo/§^A‘Æ|ä#tÅEQèÇ9Wù*Å©E\¼ÜPÕ¯$‚–ˆ-['™…9 »g‰¯".Åì{ ² 3ï³)möH¼~°~7˜îÔ{؇·¯ú¡«d¢@˜è„Ïz™sOOØ)=¾Eq°*K‡…k…âx³5ú9úU®]·P Èýr4ÛëU¸Þ(¸ÞÁgÿr±»ª¨½—®=a£)%Þ77ç¢Þ€Ä(Jü@%|ÑÕmŸƒyá³€:²(þvÓ׃7‘9È|*WÍPV”åc®..¶@¼J8V‰öõÓÌ{12Mª,ôÃÄݬ´™t8©Ã» †À •ŠLÖ^#^öí¥+ÍhÛ1ûÊpÕy槇™púpÝÅ5ýÙ”p€úêD^œ/E<¨úV üa<“<=< èôP§«rÙL$”k˜òDfï¹Xe;³#¢tk/…<àì…Ž<ô¦£œñM‚[èâ.ø%”õ™œÀo8v¦?¶õ~òn2j‹#»vÌÀ›mNdéÜÁìØÒ®ü­Á©.¤¥"?Q|¼dw Ÿ`ÔL<‡Î\àˆ“f>M`…Û™”bÝbAÛ`7Íå„У¤¸/NðÐï¼}1ÀÈîRœº¸‰±Ô§(KÓ÷-iÑ×þ_Bœ–]Û¯¸øq´FÕÀM€—¦ÓÚÓ»Oì-%Æ Ä9kÓ†#e¹áhÂî|4vùÒàzáå`öÈŠ2U5Fb ia7ÝÞî+½NT8ºw­—x«f`/L,ÖË"ë~šÓÄë-C2Î%J¡ˆŠ•˜ÇA9LÝ¡FãÝ@SB%¦€àòqY?|•h˜ûi.æ™sÛÌ`ˆ:ÚˆáIâ\_î2@ܪè_A±£Bæ—¿—–.'\ÂwÉûþÓ{W+XâéŸtϯÒÝ؃¹c>`‚šä ‹¬ªíA,∋ÝêYïW1Ñ&6o$ì0M¨V`Ú;álsë-ÖEÎ1/ƒ¹—àê¨V®…ìÝXe˶ûGùZU¿¬M² #ºt¦û±‘Žž`r'ýÒÝ%WøêÒ…(çâ; †$Aµz,æ¥ußJ¯%**®·xízæÝ‚50.匉A­æÕSâ”E·M¹¤ˆM!Ýì+$ a“õ©`™³[œ)tÉ2Iìz/1˜l:OÝǪðq[ã)EœWh}-ÍÙÚ‰•v2™cŸ[Ù>R ob¨Ó^é„ܬNo¯§lOÏ”ƒ¦̶t¢ Tžáÿ(loå¿(ZðÇ;wíþR·£4Ls]Ë­V¼ƒ—âô0šò9ÆT}+ØC›¨˜ê쮟kâH¹Ûš"ÛÖPØìÛyå±Eµµ£óÉÎP@©„Mð¥Ú›ýä[¡Î\cé•EÑnøðÎø¹øÔòf ŒLª´’l"ÚòŒ[å¥Z0Ÿ?IkÄÖøëœK(€G䱨Ýkc) ÙWrDF×ý"åÔÝrP/ÔØÍ~‰„‚˶…©yÞw.Îu9H™hÞM¿ `FËN¦¦×ŽÚ¯B”Q]ƤE°žwp¸ .˜«}q¡ÎĆ<ä„“¢ÈÖÁgÆ 2ÈjÙžec3E,òÑ×ÛwŽ*(«,!+p­§+ÛÛ¦æ0µóú#àorOØœlJ­]M-ynµµ×gÝ £"ÍE¹nÀ¥eË]\~»w!ùˆ ž úU 0»\Èç[ë/ç³%›®³Ø5qÝ´)½O·*0°Y˵`õýÅz°CÃQ¬EÂh²e„4®!§®6{ðŒ.‹ZKÌ Ü{¯I¿ ÂØ™Ürƒ!c^Ù…­n0C{+ŒuÂq³3®tãúÄ€TùYÎ|DZdfØ·(g^Ù“9°ÉþÏrÑÌà3¥yz/—P©O_5>–ôð!_y¨ƒL‰«ÙrïÜv¬™’x‚¡Yk”®øÐ¡ <·Íž,Šª›6:Sìmã‘·QX‹ŠZï4í«Êáü©Ÿ+!7”-‹æ`È3:³€Ò6ĨL#>–ŽÿôîõX-íu=›[ù:Q,VE‚ßKæÙoÜÍ_-!¥,†. CÔÛKQ÷zpàbóôþ/4Õíú*»2L®¯·—¦©7Í¿JqF™HmªÑ QÖ*§g®º¿IåxΦ;Vì9hã„› ´Ø8¤ÓÏÍ5ÕulÀ}Êi…Wd°ë÷piæâ;|YSA‹»µ0_¢ŸÚwD^®›Dh{/±4Y0WK'`²M#<ùÔ›FxÂ¥ËíˆBËÌ“o¶œ)'*%}N)0%jW|Æ|¬¯ÝK£ –Û%Ç‹lÐËi©YW„ûUƒSxÞZš6—°j XOE\c¨_VtU=¶²íU {NoÀv¾I¹šØ,„—Þp°]8 »h´xã3ø_DCæ«Ñªý± :1uA½“¡“VýÉâßüª÷¶Ï£Ä«¸­ç”h“\W_—“½3»o½ºy3OïŽ`ߺ ¬QÌ ¶Ùß°)F8Ÿ´¨)Ê®Ôxí‰d¶KÿP’þ,Q|ªÞ†2pÑtí$ï™fñÌŒRØã„‹Kó'97O'¨ B®|¥ ˜7½vD«fª%ôçÄQÊÇKìÃei­¸|ޝ±|zÂÀÖ9[TRHbÏøT_G/(xà}°€.²§½óÃ¥BêÄ01bŽÕh7ºñ”Û>bI6:«¦ÆgôÆXЫ‰S½YYʪüÆ*kVÓ½¸Ï˜Z¬_”æƒå)Cõ\››ÉQåÛ¶‰Ó[MÉLoÚÃ=Ns$ZsuËo„  M®\ÐsÞ~¬›|7ºTºÄcy›—17xÓºÏ˘ÒÂË ïµ«jë·ò7iH·Ã†¼ÈÄf¡³ðNÚ–œ<‰¸BQWã« l[›¢ìcñ®¦ w D’,V©$†c³¾¸¬IqéôÛâ43ôã&Ë«„eùñµ÷ì[Û·‘Õ}¾<÷s§¯Øm:Zi@(¤îü® DÅR†‰ öÀ”¹:—,™êÁÐ/¼Nôk IcŽëí#/"ÓœæþüæTëëý v©´¦ÐaJ¶XÛú¢^bk_Dyk²Ø>É2ÝËýæN`©%Ó¨¢‡çëÆå2? ¹úËØ_ß²È?˜ÖÔqHøˆëüb>þL¬ Š”Z]r±(…5rg±EÖÇsóÇ¥Ú´JR®átRr¼«¸¨)½Ý= =+j1`Œc×#„»¾»lH;¹ïÕ»W‡·6ZbÅÚgã 9¯¶À”2…»¯a™Þl•s¹#•×SæÅ2•[8Ä|†/nÝN‘ób`C<4êì$fJ×µB^Í`KKl‹Šéc![)=ÉÝÙå"¥ø–Çq-™­ åãØÔê¶;& Ð9Ó•ÉŒ•å*µ×õÃã¢x”}*Oö÷9ôyþ˜yõCÎG(,Ÿ5>ŽºôéøðB¿ceÆôbû»Z97Kó•Ó(ôæÞãî—å“¢"¤õ§ÏÎêÄ!ƒ †|1÷O×Ï?ÿøÝwÞ@‘•î¼ŸŠæRÔÓÖh܇q‚€öEÖñÄ÷·å??üñ@I’æ´ÛD…ìS`·9jÌßWyÌñá¯Á\ÿÿsQï endstream endobj 729 0 obj 3459 endobj 732 0 obj <> stream xÚ•ZË®ãÆÝ߯è]<ðšdó¯Àv Ø Ã7̆¢¨+ÎP¤ÌÇÜÑ/e‘È×åT7U-j€À°-Ý~U×ãÔ©jùêåíÉW/%þó3þ}}úÛËÓw?ià§§@ùø'Pi¨Ò ð’T½\ž¾ùéÝËÇm(õ¢€v½*ZUñ9yQÊ'}‘ù§Å U9Å¡©žÕx®T_ý9Õ}uT§®¿¨îdþøï7¾E§^¨¥Ÿ0¯Õ4TƒYñk}è‹þö_u™†QÕmÙLÇ ²ò}¢0öq›:ciG5uS7uí»×¾¸ B ¡Jò|YÔVÕÑÊ á1ý8•uûj¤ŠÉ/ øJ©˜b$|xQŒ:õÝEÕ£§þÞ =¤—Ç|Å›80Ì´§ÅŽŸåpæ…BžªãyìÅVÅ  5\«².y;‡^.oWV×±îZk×K1V=VÁ<:TêXc_„=rí(h¡XÒ/M{ï{N€ã“€#s‹déj‘î‘Ƀ®ã'|òm<[sÁ}êAµp»¢in{†‘öÂ0ç«„¾©5®Ù«¡›ú²Rp†CÝÂx§Þ0<+â#ËîríÚª¬¦/u#µkœIŸg-„:[#™+ —™Ÿ„·&^Ϋ¾­šgãäC§ºÂÍaÖ]«¾IÃm+„_«ÞÎuy¾wæ0O½<‡ oÖ~èeZŒ¯îÜOí𬦶©†Áê}Õ¼|¨š“*JúSÑÖ6œigŸî̯›èugçºd¢mTÈ•^‰µ³TÞâbi¼¸©Yj8Z‘â—†¼©sq½V­½ühXàëBw)»vì‹c]Ž“šº¬Ú Ž<«¤ØHõq ǵ¯«‘|¦1èe/"—^\sÕÆ„kä, ΄žÎù¬Û®Ù=õÇ›ìU]ªòÞºI•EKòlÕ¡³n}1þÄaþZ™‹Õ­‹ÁêÒnò HÒ|‚0ðÁÏøèêRFM$ÚNÔYî… _† õ™â|õÓÔS®Çðá‰AÀ‰X È/®MQV³BDD¤ùš¢¤T³Z»èZÊÉx±§…”ñÅðéZ¡ö¡>Vï·÷ô¨žà–m6aV»"¹ZÈÖ¸°N¹€hñÉÛ È/ÊNªB‹­?Ë´G1LJ+Êþ‡›§_mÌX¸Ú1®2*_ãªañß @»Í×É?sÎ}¦S¢ÄKb!yM™~ŽvS] DNåj1]abGb'’2›3™èš!X˜=ˆáð9ŸûÐ줞Å[NÇP™o¸YÊ6+ßj„5áRÈmVñŽbbp8r€m£W ñŠ3[xv$"‹†^ó4~;üue„ Ãÿ8`2ä| ä0‰tˆË4åS~ØÄ„6Ó,"ºŽc³79ÔU&Á”-—ëg+ Åű¦Ž#ÐMqÚ#s /Œ‘Šü˜/£ä¹ˆx—jÂ(¬äòÚØ)Nù¤Ûל&ô}/øôÕi$R†:1n±M|¡6 |Ÿñé ör!‰áSS{„0¤pÆË°¨ôjΙÅAÆ)R~¢ù.a" x$t"Ñß(Ì_cü_ú¹–x—fs$‚im}®(`.µ!4D@ØFÿî\k¾œŒÓ(öÄE9ZØàŒ´¤6dÕI¹ˆÄu0÷ÞQ¾†ðŽë‘£èˆO²p ·—‚7±I_ýê–øÄœª"ÂÿŸ™ìÑD”ôÙ7Z»¹¸(ïã*J(®øzÜÚÍïQ²BK¶“ßÙðN~g£s~·iN€Aå* 6÷æby$zV—îXŸnnˆ”#f Ó¡Y²`S·ŸŒ/=S…ñ ¢Èd ¯¡D¦Un ¡MÕFu^%³¥ïebÛ/WÐØ¡¹Ý%MLÉÄ lÒ\bºv+é(N74×”ö | U̧ýà°ÚœøG6Dêºà[BƒºàÆî:9œ4±á={…pþ0³þ?{Áks¾Þ5¢\¢Y’Ø‚®ž“ô[Ý4®n£ ³§±C ^—¦¸%\Eyг•{Õׯg)›Ôj ÙrÐ>6 ø¾²å ‘x}q®^‡à)–E¯†ÒÈ?Ä#~òvîPnIÝ…D¥¦ Y©ô*«Z:¶ö´~¸±Ä {É‘ ±¨Uܳéиº×+ ó¹×­1˜Ay­Ÿóå²kƒ"%*6þR÷Ky9lÆ5~ÓLφ/ÊD… ˆ¦úà4Aå¦.Úr-ƒ“(sêíhk“å‚‚EÅb‚ÄÐùA CTäÐÕ×vɰGò~T/¥ñRWKyäÛJëS2ãöÄ¡~¥œrßNÓ(ÌÈÖÛÇ·é"ùãÉ`?ü<éÛyFÝ-6þLò˜æSÕÀ^û‚ÚAtUC¿‡dg¯ó¡·´fAé¼PRʾÂŬ«q*œ³–­®œ"U?ê‚Ë&B@‹ÆÈÓ_YôŠõNR§Þe˜ñ Hêß$0Òb“S[ Mì ;ׇz´%eSÈúŽ+Ö¿©ú´Ô)ä+Ö#çÐyìbëÍIДì1¢®›ûB¬œÞ ™¬ýÈ öM¢(JÅúi\úË‹?ØF¼[êåBÄ›SŽ$‰ èb3•#Þ=­ÔíùcN³V‚ÄUJÊêRÁŠeo ûà¸ÐñÐÙÔ…œd¼ÐÒ}úKÙá,kÆ“i—^¥ìðΜE |Þm*##‘#§±T6Ý4ï”^w—0B-µ˜åÔ‚> ›2NZÐ[1ð=õcAÝÕúb!@¸×¿‚›òunïX?Lbã4QðÀú¡»é×loßeÊidw5&šò­EäÇ`’¡PÒQ±TùI¶4_óÄinê­m¹4RÍ»ˆiy #ã5s„:öø^„<”ð}—Qo„ ?ï‡#ü Õ ›{0¦·y–ìËM‡UqkdÇ×½‡­]½u/ErMÁOÄ(+Pê˵î^@öš/@µ?õ¦ú—}éVš}ø‹äy9õÑÙ6N]r‹cäë€ö{²Nn_MŸ‹¼™šŒ$¼¬[ «T`øÁC½D”̵£˜™t¸é¯Ð \qùÚ<ºÁŽU‹ÿš×¼!Í­Éþ¸1S[Û³àœnDdõËi~HƒáðŸjHúL¡>NÇWó€@aÝ4òÝ…ž7"¾ã« kT³9.–îâÀM,í©Ç…ªå€ÓvDTùð-–îP_öú`ÞךúBYÕ½éÖ„£/GÃT $ ÕÉÖA âú}øæíl[ÓP±UEוü(òµ¯ÖˬõÞ‡wËÃÒò‚áv?HØ­ÝÈs2Õó]ÛUG ߺ -¥!eÎç})éÅ„nº×ãsÉMøcËÅ>HIÌO0½oéaeñ‘“ÊÂ(eàÉ .SƒD]u•ô¦&ìPžÞUz¶EaEß©mLV—„D£¬ÑbùâX »£í–ÝjßèÃûC]Ú»8ÚKß¡Žy%¶ÀãcºÌ¸¹–ÞgšÆS?I²l¸[FØáf ?â3¾xWMq?Ê’×$Oƒ·k!S75GsÛ¥Wî«…öR1ÿV4ãíý q²O0â £2që¹ôàZ 7Žs:A´Ï”m¨L¿ãa`z8l Y „!È­æ6Â^ccË”vý6žûnz=“£Î~`X@Û8,‡Ú$òÜâfƒÊèpv÷¢[…f^7¡aû¶ÉKwù¢ y‹Ý†å‚é÷TjþšØßë…‰³‹xÚ{@‰›ónÞ¡—Ïå½úä„#=»Å|ÆM]»~;—l¿ZPç ’¹Ä§BqÆg—Nå).šúHvœZ›V+órk±ã®vq$£L[NMJ îËé2˜ªÂ2ÓCÑl%†‹ñAºâ»N ZÑç®ÃõÚÜ\¾æ|åóú¸½ìa`®Ž ìmG m\ÜáÎ>qÌ~OPÛ×S:æ:õ†º¹–Àþˆ‚inˆ˜o6›» µ±MsŽæç&Kš4?8ðÞ,ÛReSÔ3l¸3®4¬•o⦑ Úd°“4æ£dtúUwºû%ÜÇ;ÝlÊ ò½¼ù¹°¿¡HåL=¸ÄHSæ"Ž,!›.‘xÙ)¯ý,yu!Pº“|ŽŒR”ÜQ&îÑï>`ÅàÁQ,ö_±“Šã0w§×hcc`C^D ˜ŒíU\MyÍ ×žÚäDê7רç£pb[cuÕa7·a îŸ|âg7ÓÄ ¦_++õZµw°tÊ©¯‰‡ûš¯š,+°•Øñq7+›¾ýL» ra˜äÎUY ŸûÀÄH5Ÿh^—DaÈà¬pÄ&€Øryx‘ìg*[Ä.58V\}??¸M×ùZn$û)k´Ÿ»þ»c×ÚP:¢‚¢Ÿbœ”)TÕp6˜AÍ_ãµÝn•™Q˜íj™£J#q8=·Íwv¼$ ‰,²¹ ûšÕbÛânÕL;kn¿?™kKK²Ï]=wŽ|Y§ûê}Qö-/Oæ·Sôyù˜©æ)Ž|ç#&¬Ÿ5>Ú¹ôéüt¢«n?„žI?¦ÜÍON£P-¼p9Âý²~ Á;þìœN?¤ùt㤿Ýþøý×o¿UŸµ‡1õzE˜NE3‹FëÞÛ |’‹´£Ä÷¯ÿþôç}¤‘4'i°âí“oÄ´3–ïÛŒeÍù韪Å^ÿYj­ endstream endobj 733 0 obj 3583 endobj 736 0 obj <> stream xÚ[Ûrã6}÷Wàm“Ї!xgek«d‹³"KŽD㪼Ðeq#‘ )ã_ÊC> _·§A]Мl¥&C[_NŸ0¶ÈÞ®l‘Íð¿Ïøózu“]}ç ‰_.®¤°ñŸ¡#B)­ Ùúê›lY¶¢-fÛ²®>Ëj[Tób.¶µXç¿~›ý÷ØQư΅Ø.ë¦Þ½.Wïb¶*òF¼-ó-óR¬ÊBïí:Ž%#½÷WÞZ¶ËWkx)D.fuÕ¿íŠjVˆzI Ñí¶ûÆdƒrV@ÂÒÄ6ƒ(> &K¤]ÏyÙn›ò…íÌ ,ÇÓåwJy5ÿ¾nÄ®=N;(_š¼y§Ò šr¶Å:ËJÌŠf›Óßõ®Â¯‹V%:4âå]lrètÛŠZý4«7úÜ^ì[>[ë{S¾.1¬¹›0[íæeõJž‹¥Íu-Ú¿ƒó^˜Õu\KºçÓB›¢ÁÔäu… €ÀÊùºÆ 'W¨ê-ÆÞµæV}÷èì¬ Þë­jÑÅ.\‰v7[ŠYÞ×Üe5«›MÝÀ×:ƒi:É× ñÖÐB+Z#µ¿Ôó÷‹ôɶÜÐ'0Ñ×êSº–Зð#_—È0ü]SbR/¶oÌ ^hE6Îs£…–ÏD Èy·rµÍîeU¶K ÞË "˜šuûZ¶ÅüÄ•F‘åpé7ÁÉs,OêEÓb í жE$|.ª¢At=ÒªfGs,šz½W¦m‡¦2å1Ø·åº œ£¿-1!ãò•JÀh³>ÆJe(ü¾.qXê[¹Z„¶ð…Цo7%ü@M‰Ml€bÀ&cë˜RFÎù€×‚‡E,¡"6ñn«L4/:y®c9Ô…Zͼj®h5¬¥5vï£gl÷Ôn›µ³iê—U±Vp‹Ä`®Úƒ_;®ÑÏŽ!äÐ=ÓCxh"(ì_KîÕE¬&ùÕtz鱓 h€D;ø2ëâ81ÝùÜÕnýR4LñÓD©î€Ùí¦˜•rÃбg…ñ‡³˜è€”PΖ—Ôï‡G¬Ê7Àx‚ ZÀÍ|â¼â-­ÈÓ»¼‹P«1¼:ò,/Ðźµýu-ÞëXæLžoÙ‘.̵éÅVì²±ºÔ¸Q ‚m.êÕªæã³½uY=ù­ÚÜk^nU¤í³½ÒXnÄ“/m"Ng[1ÒœOdèÍv¬Ø×¥.ëÍŸu±½M÷° D Ù~ˆÐNèOÓúŸ´Êâ²åðùÌóæõ>ý)\€' /uÎÄUd#ç9ç«6Uäaà<HA@#M¦s¤Ù²¦toh4r•[œ:¼ºãu"]`¯Kžy@]‘)4)î| üø ÿ¯1\ß·Ø®ÏlLm¹LädŒ=èyq„+e¢8 ò@W¨sÄMé)ë‘ÆÞ(½RŸ8Hl³mÏhp©Zyþ‚6ì¯Ct¼)vuJyˆìJŸ¸ãRZ,Ñ&iê5ˆs ,?ì# ûðcsÒ?ÅévI‹$†D”§8äº|GÕŠÊ5í¯ˆø¦#om«—{x„U’ÑNÃB¼=3Ê W†º­]Á$e ƒq“­l¾Ø×ÿ{7ð@ÕÏf¹ãUD„ò)b >øÁõ±mSkö ÝtM}ÀÝOåÃS§sêÐFŽÕDŽ«øA¼‡Ô나NkÖ–®Ý%1[ChNØdh±Ÿ›Î]È’”¦,1Ú5`³RÅèû ÁÎ 6ðÄ‹xÃ÷I+Ö[kñZç+åÿŠ25_Ù@ù} ¢½S­9&ETrjê¸iÃq€B½ ã[áßô‡Ò}Ö¿PK©wû¨<÷ÛÀ1D–¤Œ¦öW¯ëía{í2oè››•°©Áð<‹ó™¤íQÒÒ¤h¦×Ž3¯Þ9/P)@5ëyÏ?bÆpÄKÈ <½ý‰ñ¸ÀŠ"½µ7÷†Ù³9¼{ŒD‘¸In{l}¨{$“šNÁS¯g¹®.‘Ý'bÞŒ{cžV]ÔäžE:àm2œ$}q7N1º·÷½ñçäZðŒÈ‰9Æ õ7tfN¬S“dJñPÓ0´æ½VÄÝh,ÌŠ82¦4uçóÂ~m€“y6K>rjæ[–èêíkv@bõÖÑ™Qõ†Q’Ÿ³d˜‰Çdüft~ó,xÈ9tt¡õê=>Â@½›,Úã…"ÊU]ò‰Û+0önaòÛä1ã:æ“=Ý'C1b2’4¶Á´ìe"¦ˆ§:É8Ïr©¶Ö÷Å›|›%雦>Ñ¥C…0„¯·?Ó,~6ìa+ÖŽ aÛÑãó8ý|Ÿ‰ûÑ ŸŒ'ÜM™GëÓö¿‡›Žx ­00F‹Gn,©ìª4ææB³!Òd"¹L8öt!¾ ÀÇ–ñ%ís ðG©™ëàøE1!) vyè o3´Ü "03VvFß\ž"ÜTØ¥ÏI°ÀeBP†©êÙ„+'檜Zbpô/¹ûLÉ5t¹gŒé4É—ºÄˆ7GThÍ_ÑOî’Û,ýbP+*Ôù\¼5¦{}¢©a¿ÎON½ÉdúÀ‘ßA†rÜØøíh’×5æë b˜Ü"R ó‚˜Å.WÒÄäð-6í—ôV!ë8aí#ä™zéØÈÿ®Ê{c,}<&eކ&[§´, 9Ôä Ñ®ép@x3NŒ(rèBJë7EÌŸS³@ËÖÄ>¦f.˜?[É“00Î ‚iƒñŠ]Zà3¸yß n!•®šLÆi8[ëH¤‰¬ç±î—X…V3©îÀ¹[—¡=Ïš6‘G$6×µ© n!¥Þ…òöˆãšgÙ±.rθ”]®Ç†s¦ sÙ†½£À"ü> <ÝÄCϼ=f"ÏâaÔOïŒôGÇ(ÆŽ„—¥“lœršÛóýO3ƒÆ¡ŽãæÛ75nûÿXi2Ï UØÚzr;Õ,ÜZ¶å»Lô†Û ‘RÐI€ðï†PWEW¹C¼S“ådå6Š­yd€L²mqžîQù«wŸ*îÑçLÜf»1 Žú,fÛýœL4ÊÈíD„K²ÑàÉŸ“a2î ® ƒ9ñû&Ém ž3. ŒŒ<]¼7 QÃs\#|tÉ)ш÷M­2)sË0 ,¬ `˽sHïú L¤ b÷F~.Ñ©‘&L™ˆŽ4ˆƒ9ø¸–³q/K,#bãñ‹< Ò®7LÅGò£ƒtr¤.ð[@f’¡.÷,~ùæä7»"+rÙ¬fáøtìªO{(!¸Ú¥­¶¦Éñ怊=­y$£‰¢ò}óxØcãpûã÷¾÷ñ4€I®Åž0cÊ£¢Îÿpâ‰aðá *÷Øã3Ü$¤Øq2D9;) ƒÍãI«•‹µöŒBÊf­··Ó1?‰CùìºH¦¼–´Š˜Lù™‡Cgâ’Í—/ñ :GÒ¤8ýC6زZ&—°…lˆì>÷͇ŽôÕŒÍ+ŸÐgƒ¨ºÏ˜*ö ÷¶:£`{LÇg%„x|½—âÊGùª†,íÿ]ѬµŽÄù«gž4¸|óXÕU{ÑNwÍÊD‚‚Vk"g\…]É8>ç*“Ñ]öăÞ#:§5N~ùöZQW‘ÞÁ½nï÷œI˜GPžŒ¨ 7'á53ñg—O`˜Äй>žÅ=ÿM’ M½{§”Ö7ÞäØžÞü%UÇ+wgšµ#]Œ…ù$Ýüh¿ß¾ùÔ†´í}”é4‚¯©Ê¬œÓ!#àãliUéëBxQÚc| š ÌHÀý” ’ É~IÏòŒ%ˆ¤êtÏ.þÁ£blNx£{±Þf³2O|ØQ|gÏ\.‘ѽ$‡º•|E|¡„bèêeYû`ںܳy©Ä|ktG44^FÁu¢ÈP@wá[m§Ó oJeèѹ®ûîyÎß1¡<‰|]Œ_µ£ø õÖbUoDn>†òóÔÄÞĪ»‹>»†Œt±ku¥î¶95³‰Äi‚yµÝó¨—ã£Ïצ Wu[±©Û–.¤Õ‹Ðà *õîëšn7›bV¯×&Zç¿–Õëá1¢™Ÿ{Ð ß~>ÌuùŽŽ`ÑC–ÓdéêL½.)LG´}6(׬[±ÍÚ‹æ½® 1Ë+¬ùÂ%½ãÆ€cZ—ݶ» œ-óêµ°Œ¼'á¡l†gó`Þ X; A³ÏkzvIOd»g”tÓxqEt’è ¢KÞÃkTŠ*õ.çÒ1“ôíC¯_¾©Ù›0['Ðà(+ TW°ÒÇ‹tA®c:asõæÂ¸ÜtCËáó—¾P´w¶º™—½­¸ü°ð—oM• ²ûAÍÜëJ½µô6ë]×v»ÝÒ»7u“m¾rà‚`œÚê TUoËY÷«{gzô^– äÔÑ©zÞæ $zƒqœx}©ÝæzÔ]PK lš™×Ídz?äŸ+ƒëã órÂvuÙ=pç@â) 9‰/ö|zkAÜùs$z?-ƒ‡€kÙ’Á›é=ƒÖÚ½ÿà‹P¢ElzÜ½½~eûÉ›XöþƒŠZ¥PRX»¬w«¹ñzÎ¥úêøô´„ $ØŠU‘“!±æ?Ìíà‰6Ó^÷Êå/¸JÕ¡HnšÕ>ð¦V¯ÛÉ´oË¢éê-v«ÕÞïÈ‹ôªÄ2NR¨ªØñoB75F1žjÒ-i¬É~=»,ð´ÖBwñ™gú‘.ÚŠ*_ï·'^+¢œ¹2•úG[õÎú’dÇlñI*gœ­¯è%«ú>|Fbuå{¶ñ ã·‹ÏN–¾–W úW2 ðYÇQ+ŒÃ³©õ™C@øáÃrS˜?¿$•)«N~ÿmÌîx¸Nè©ìÃûä§Áw߉¯®…61¥Ôyµëþ–Fý>uØ´.ÒŽ`?ÿ}ûOW¿]Ñ'µ„1­6¹:}Ùj™Äáç“Ä¡ÏòêITë†w endstream endobj 737 0 obj 4188 endobj 740 0 obj <> stream xÚ…WÝnÛ6¾÷Sœ]-E–Ô¿–¢€ÄM†$MmeEÞÐ2ms‘E—’kè‘¶GØÝÞl‡r$“v›Á±Aé|ç‡ç?²Ý€B–ãÏü.ï³Á›± _. (~>%3F¢²õàìRm^e¨^@ÂØ4Z.W5Л±÷,ìì+¥tÿª“oÁõ;x[òµµ¾­WJ¿sÄ£ò(I;ÙÙJVPÈ™æº<.´P©E½³™<‘8¶ù¸Ш-ä¼-沪µœ9<)#žÃ³­Èx9£4¬Õ\.ób[Î…†z% z]ÃÍÇûÇÃã¸v+ª ¹>ˆRh^ÀÃvVÈne.ÊJ¯`cÞT+1‡YÓÊ›«M¯æ‡!I™-¯cG„ú6D¡É¼–ª¼!Q¶†ï6C28 BWˆ0¼ÝÉ­¢°Ã;Ÿï0tÒ×3^7kP£ïë+tŸãå ³E4PðúØ"¯ø6lo9±%ð–?ˆ1ç±Í„1žƒ,[‡¯ÔCºÂ`w²(`&`[‰Å¶‚#Ç’Öa¶p£„f>ßd×3ИP5ºÿâ"|JÇàÏ.9%Ì0™Œî³/(‰HèÙ ‹/ú}ñî0?ÞF8˜ $^hÜh±b¢XT±w¨\o ‰þuk“E$ l4ך—ucêèîjryp|Éü¶˜ £÷7·7Ù“pã›ìþj:…ñÇɉãGË&¢sñÑÄ-‰„ÐÔ¦g7—·.¨uëûÅÃãäáãôŠÀTˆ®#ÀËu¿h ð\Ô\U›ßçèÍÔ3½ÙV¦}u:áe, Ì³ÉØå*Œa1‡wQ@¢ ²¡n£”©CØ+s!Ý Ià?•âQŠ}Ô¡c pÈݱáù¾I] ÕXôÜÆ U.Á¤*2ª¾Íkz⸤o"r¥ª‡°Ó{{­^賞‡Ucóž´Y/ˆHäÙ¾Íá¦ÌÉoçv¯m~‡›è^z$P` x(xŽíuº5Fû>Â{UÕFËÝè8ø¯rê1ÆÎ™Ocxœ:À•„‡Ä/*|nÚ ¦ãº½àßJ9Âø6ÛÎø/WeÍó¶å›±% ‘×Z•*œš°áŒá»ËëG†O4LÌâa›ä¥?Lð+1rȇçÆö¥xž9Æ]®Ñ)f|Ú¼0S Á˜¼;Mh•­H?™ÑÌa£ÕRóõZhœhX³­º*_)…£…¹CÎôõ¶D,µw¥˜E6}h¼YÉe‰Êþ>*• JHšºâö+ޏ¼àÍú§O}zìVÖW˜é6&ãŸËÅÝâpà¦6¸½W‰Õ_UÇXŒˆ+˜ÀµÀòÆU7I{¡©Ÿ·$³ÝU¿gj†/õ3‹ì†û-uÈš7¥èJ—™Øy-Â9~Ü{bJÂÈ‘±÷§,ÑfQÕÝFÐmÿ޵šýe¶›þUëËàO²\ž\-é‹ð©T³ sÆtœÇ"šö»qL°@Ô®yþ䘆ïHÚ5Ý#‘M>Ùˆ‚¨/Ñ·&¡x½Õírí¶zŸ¡Í\2F8²É \*U¾"Ñæ¡Ù-,àh£e…—ÒÃüôÇÊp¾ûÌ&ï• ác!碬OÌÇ©ú6Ëî m2Σ²7ÕïW›œ¶£ÉBì³È,Îm’c©ÊúÃq•õLÎ1s±ÙäëAlÖ-sîŽ ƒ0 GGôg{¬9­ ó¿X?pK ±;y­5ir¢ÚÖt³µíU?ô'lEá^w>ÒîáæHiˆôÞ!wÍôÓíë×ðCG(<šY}ÇË-/žM3|ç{ÔØe¼ÎóËôOƒos4”85ÖFØ'Úš¹GtÏDdz|†eýhÔ¥û endstream endobj 741 0 obj 1440 endobj 744 0 obj <> stream xÚ}XÛrÛ6}×Wà­ÉÄAI¼õ-M”TS;nle2É MÂ’P@Òª~ªßØ]P¤°”ìñØ {ß³ØcëýÂcëþ|‚ßÍâ÷õâ×óc.¶~\øÌƒŸÅ‚Å^È…³u½xåû\ð×ë¦{ßKy, »9ܹ~ó†}m•a7YãÒ‹8âQ†>«Øu™«¦UHjí\Î̈€3•¡åXâ”ˀܳ÷·ý}·úôÇz€sqaÀ£PZòõV±\ï¨_’)¡:˜r³íX§Yôs'щ²eš:ëñˆ Ù7ª`Vv-Ëún«MË_rZÄ®£ÓÔë$¯%¡`׫÷ËÏ÷ËçF¯â“Ó—œ¨³{P̨ÑEŸƒ¹YS°¢l;S>¸¾à2!2ûÈË†í·ºRL<ï2Ó]áA›pX­Š²¯ÙnK(ÁÓ€ê9´e¦jC` X˜Š‰FU*ïŒnÊüŠ+$¹"å‘O¨ŸÊLï¶$x y¬<²FwpÂÌBvUvDŒêJÝpö^×µ2y fu!Z2܈Î9QôN™ºì vÈðÖãÒO±@]ÇobÃt¨&×½É6ªàŒx¤Üó)ýz[šîÀŠì+ž@=¨œ‰Ï'·ŸÊŒ©:+«õGÈ2ýxÙË ¹”Tÿäf¶ÛG¯Pতi–k ú•Þ”Ê~(lÅc8¼ußvPݪ³ùzÔU¥ij#Lj=(šW7ÌšñÚ¨Ÿ}i”ÿÛŒN&ñDçÓlHr‰-pt”@͇°]ZeZ„±uÚc•=@ƒÞز¶Ï·|nBNœâÌçM€òoQtöÃw4*<©L6Úz¦L“¼àL™sù.ÿÑ̠͆ÐìÁ«+9£aî• äs(³É£º¬l.˜ãdQž™ã\¢ï•ÜêCÃuÚ¨wÉÖç¾µ¿è@‘É0!L¬ÉjÕÚ! =Mê[C´³C¯ÞUhÑ$‘4ªí«“<ù´/AooËâ¬}¡½_¶UÂH£ôÃXi¶gÑr¸‚É\åФ;ìÓX[ªíŽóp^]–³êr/×s uj!Týöûk "ÄòBN¬œQ0Ò8™a8°f Ãë~Ç»ÐYø))‘kGáó£Nr/&ôvÒA£|„6xT ¡…¬·vÊÓ±›³Ëo—¹ŸNÓ;.#xF˜K)gSO80¸Q¢³ÙE+6}(—rCw$ÜW(©ÔK»#¢™i¸5§æ®oLVÃyð …"²Ë^ÆÚmãk)ÏúV]šá">¡•,gXu;¬5»høfн'“ÐOðMã ÑæG;›2éŒ+”!ËŠ+}J˜è H ¹Q´¹$ÜIBpJPîDÅF<ŸÑÃþ E¦ÍNX^žMÔ±Dó}SÈ*·$¼%¹'fà ÷Rruglïƒ ÊgA!t-ñ¼8?x§b&pÊ?48ë´EU«®˜¢KŒ€ &Ìÿæj× q:èÞÆá¸J\|â¤ðô©ú¾Ã6ˆƒyMv)xèË™©—ÛþE”‹S¡“ˆÃ»#î\Óˆ{íy<&¬Z„Ò›`:phñ´]<â?¦ÈyÐá$ÂZ”¦gª]Í1@`ÃA÷tži0†> endobj 316 0 obj <> endobj 747 0 obj <> endobj 748 0 obj <> stream xÚ]ÔÍŠÚPÆñ}®âtQ˜.¬Ñ÷kËÐY´Æöbr´BMBts÷Í“G¦Ð…ú?É9ú#àûñÃónöÐtû<“ÏezÉ—îu¨ólû­ê‹ùöéËS{º¦ùóÐÕ»|M‡SÛ ·=iŸ§¶X,Ssª¯·Õô^Ÿo‡wo—k>?µ‡®X¯Óüe¼y¹oénúÅOÅüÇÐäáÔÓݯín\ï^ûþO>çöšÊb³IM>Œ_4Z¾WçœæÍ×®ž[ÿÝøùÖç´œÖ ê®É—¾ªóPµÇ\¬Ër“Ö›"·Í÷VÆ#ûCý»Šõ[Ërü{Á^ —ì%ZØ‚V¶¢mhg;:Æ^–‹úž×ïÑ+öt½bWè={®Ù5ºa7èÌÎèû0¶Ð/ð ý¿Ð/ð ý¿Ð/ð ý¿Ð/ðK°M¿À/ô üB¿À/ô üB¿À/ô üB¿À/ô üJ¿Â¯ô+üJ¿Â¯ô+üJ¿Â¯ô+üJ¿Â¯ô+üJ¿Â¯ô+üJ¿Â¯ô+üJ¿Â¯ô+üJ¿Â¯ô+üF¿ÁoôüF¿ÁoôüF¿ÁoôüF¿ÁoôüF¿ÁoôüF¿ÁoôüF¿ÁoôüF¿ÁoôüN³Ãì4;ÌN³Ãì4;ÌN³Ãì4;ÌN³Ãì4;ÌN³Ãì4;ÌN³Ãì4;ÌN³Ãì4;ÌN³Ã|ægôüAÀôüAÀôüAÀôüAÀôüAÀôüAÀôüAÀ_Ýþû1 ¥ÛôÁxÂà|wõë0Œ“pš®Ó¬Ã”;µù}÷]SÓë/7Y¶ endstream endobj 749 0 obj 610 endobj 474 0 obj <> endobj 750 0 obj <> endobj 751 0 obj <> endobj 752 0 obj <> stream xÚ]PAnà ¼óŠí¡Rzp!éÕ²¹ŠêCÒ(´°—ÅEªa|ðï‹)J¥i˜™ÝÙ}|¸Êê¨Ü@Õ˳€Ín HU{î=ãm÷ÚY_ƒCI´±* 4ËöPcAùÅ©˜å:Gš:««kà·DÎ1¬°ËŸŠ‚±#ì>[™°\¼ÿ¦‰lÁšéÔ(e¹ô?ª7‡U’þ«'8d¼ÿÍ€NÑì{¤ÐÛ‘X-DõéÔ0²êWƒÆ¯>¥³¶ün®mŸ{ \BHóÒ9Â6ÜXºßÅ;¿¹rýƒÀsW endstream endobj 753 0 obj 232 endobj 499 0 obj <> endobj 754 0 obj <> endobj 755 0 obj <> stream xÚ]‘ÁjÃ0 †ï~ í0èYÒ4Ì-„@é(ëa[iºHl¥ ,¶qÒCß~’:ØÁÖ'¤ß–?>ëd«m‹Éê9ƒŽöê&»÷Ɖtwx=˜~‚ôè­ªq‚®7ÚÏ=Ðâ¥7b™ƒîÕ4gaWÃ,®oã„ÃÁtV”%¤'*Ž“¿Á"Üø$ÒO¯Ñ÷拯]My}uî4d¢ª@cGÑ,Í€nõ›U µþÎ7‡‡|gPVãè…¾1e–UPî÷•@£ÿÕ–E”´ún¼(snÍ2 Äyäœyyͼ‰¼!^éÀDYÄž‚{^V)‘ fY2·‘[æ.rG,£V²VF­d­ŒçSà‡Ìó“Øì»Eêê=¹~$øÃÎôïŸæ¬cUX¿¤’t endstream endobj 756 0 obj 300 endobj 491 0 obj <> endobj 757 0 obj <> endobj 758 0 obj <> stream xÚ]‘ÁjÃ0 †ï~ í0èYœ¦f+„@é(ëa[i¶Hm¥ ,¶qÒCß~’:ØÁÑ'$ý‘ßßšlcÜ ³òQÂGw ³í[ëE¾Ý¿ìm?A~N78A×[æ8á¹·¢X‚éõ4gñ«‡y¸¹Ž{Û9QU©8Ná ‹øÇ‘ƒ¡·gX|mÊ›‹÷?8 @Šºƒ Ñ.ïí€o̫ӵþ>¯aó"í ÁÑ·CkÏ(*)k¨v»Z 5ÿjE™FNþnƒ¨VµJI¸L\2«ÄŠyxÍlfLŒÌ]âŽXÉȈ“¦bMµJ¼bNúŠõUÒW¬ÿô™/?oÉ×`ƒo¶èKäX|…è »Ñ[¼=”wž§âù…· endstream endobj 759 0 obj 295 endobj 147 0 obj <> endobj 760 0 obj <> endobj 761 0 obj <> stream xÚ]“AŽ›@E÷œ¢³ˆ4Y8`ÓU=#!K#G£x‘d4$€îÆAŠa¼ðíÓŸoM¤,l‚úõªDüðZožÃØÆMù¹0oñ2^g7‡oÍ”å‡ã—ãÐ/&G_ÇÅtýæû;¦§~ȶ;z¿ÜïÖ¾×·ËÏÇ¡³ª2ù[zxYæ›yX;~Êòsˆs?œÌïCîëë4ý‰ç8,¦Èö{b—‚’Ë÷æMþ¾Ž~“^ý÷àçmŠf·ÞoéàÇ/SããÜ §˜UE±7ÕËË>‹Cøï™8–´ÿÝÌYµÃ«E‘.‰Éà'ò¸%·`Oöà@àHމKf–È,·ä-xGÞ…,`ö-Ñ·dß}-k-j-k-jmI.Á–lÁÌ´È´JV°#;0óíšÏ¹,沜Ëb.˹,沜Ëb.Û‘»ÄÂ3 =žBO§ÐSà)ôx =žBO§ÐSà)ôx*óùÊ|E¾2_‘¯ÌWä+óùÊ|E¾2_‘¯Ü¹bçÊ^ºöjÈ ˜ûQìG¹Å~”;QìD¹ÅNwâ°GOOGOOGOOGOOGOOGOOG·tÁÇ|ÿjñYãÀ½çt‚ÖS¹žœŽ~ˆïw'T­¿¿îú endstream endobj 762 0 obj 487 endobj 146 0 obj <> endobj 763 0 obj <> endobj 764 0 obj <> stream xÚ]ÔÏŠÚPð}žâvQ˜.¬Ñûý™ËPm‡±}€˜ÜØ@MBŒ ß¾992….f<ÑÄóãHòñÃëañ\uÇ´ˆŸóð–.Ýu(Ób÷­è³ånÿeß6cX¾]yHc¨›¶îç„c:5m¶Z‡ª)ÇûÑü¿<ß/>Ü.c:ïÛºË6›°|›>¼ŒÃ-<ÌŸ²å¡JCÓžÂïÝa:>\ûþO:§v y¶Ý†*ÕÓM–ïÅ9…åsõµ+Ó©ÿ>øyëSXÏÇ+Ê®J—¾(ÓP´§”mò|6//Û,µÕŸyä%Ǻü] ÙfSó|z™²Oy¯žùþ#òóü~Á\ ™È%s‰\1Wȉ9!×Ìõ”#{#zãŠy…¼f^#Gæˆ,Ì‚¬ÌŠl̆ìÌŽL„?ÒáôGø#=¡A`¡A`¡A`¡A`¡A`î&ØM¸›`7án‚Ý„» v:NånŠÝ”f…YiV˜•f…YiV˜•f…YiV˜•f…YiV˜•f…YiPŒ½†^c¯¡×Økè5öz½†^c¯¡×Økè5öz½†^ãïeø½Œ»v3îfØÍ¸›a7ãn†ÝŒfƒÙ¹›c7§ßáwú~§ßáwú~§ßáwú~§ßáwú~§ßáwú§ÜŒ÷»·%ï·yy†é 0?Uæ{wwÓ¦÷Oßõ¸jþû £!¯ endstream endobj 765 0 obj 548 endobj 317 0 obj <> endobj 766 0 obj <> endobj 767 0 obj <> stream xÚ]“ÁŠÛ0E÷þ uQ˜.R;Žô”R†fÑv·`KrÆ0±â,ò÷Õõ5Sè"ñ¶®Î…§ÏŸ^ê͓۰Ù}-Ôk¸Ž·èÂæø£™²üxúvúYå/qtu˜U×>®ß¨6œû!Û–Ê÷n^WË¿»¬›ëûu—ÓÐYU©ü5½¼Îñ®–¿dù¯èC쇳zøs¬Óº¾MÓ{¸„aVEv8(º”\~6— ò'ÿ}t›ôé¿¿ïSPå²ÞÒÁ>\§Æ…Ø çUEqPÕóó! ƒÿïÞsKÛ¹·&fU‰O‹"=—ä¼#ïÀ†lÀ ¹{²rwä.±Þ.œ‰™¯‘¯™¯‘¯5Yƒy–ÆYZÈÞ“÷àGò#¸%·`Gv`ºi¸iºi¸iºi¸v7ènèiàièiàièiàièiàièiài,Ù‚éià)Ìd 3™ÂLA¦0S)Ìd » º û ú ; : ; : ; : ; :Zv´èhécácécácécácécácécácécáÓ¬g Ò­Ó„qÃEø_w‹1Mör[–ÙÅÔöCø¸PÓ8a×òû #¢åØ endstream endobj 768 0 obj 447 endobj 334 0 obj <> endobj 769 0 obj <> endobj 770 0 obj <> stream xÚ]“M›0†ïü ÷Pi{Hù23»Š´JµjmWKûÀ6)RˆCþ}ýòF[©‡Àã0?3¶?~xmvÏ~ê®üœ™·p™®‹ »Ã·vNÒÃñËqV“¾.“kÂjúaôË=Ætá4ŒI^?¸õ>Úžî|ŸÜÜ.k8Ç~JêÚ¤oñãe]næa[ñS’þX|X†ñd~š8n®óü'œÃ¸š,Ùï}L]¾·ç`Ògÿur»úïÃÏÛL±s:¸É‡Ëܺ°´ã)$u–íMýò²OÂèÿûVYNéz÷»]’º@h–ÅWd\dù¸ãÿØ“=8Cä’sKÌ-sr.ȸ$—`K¶àŠ\…,`%+ø‘ü~"ílÉ-˜n%Ü,,,,,,,×µX×2§ENëÈÌœvËÉz-ê­Xo…z+®Ua­Šù+ä¯zrY#ˆú|„ñ‚xaO=º Ü„=ôDØAO„=ôDè/ðî—`¿„µjÖ"¨EX‹ ¡§ÀSY—¢.¥³ÂYé¬pV:+œ•Î g¥³ÂYé¬pV:+œ•Î g¥³ÂY¹ñ…ƒz?‘8²¸LïWÀ]—%ÞŽíÆmç'Ãû¥œ§³¶ß_X@ó_ endstream endobj 771 0 obj 478 endobj 149 0 obj <> endobj 772 0 obj <> endobj 773 0 obj <> stream xÚ]ÔÍjÛ@ཞB]Ò…kÙ÷/c)¡Y´ qúú¥†Z²³ÈÛWGG$Ð…í33ù›+û~þôxXÝ6}•VòµÈŸÒ¹ë´ºûQÙúîáÛCw¼äëDZ¯é’·Ç®—kò*½»l³Í›c}YFó{}Z6ÞΗtzèÚ>ÛíòõÓ´x¾ŒoùÕü_²õ¯±Iã±{ɯ~ߦñáuþ¦Sê.y‘í÷y“ÚéF“ågyJùú¶ùÞ׫éÒ…ç·!åÛy¼¡¡î›tÊ:e÷’²]QìóÝýý>K]óßÚqKÕÖÊ1ÛmqiQLSÞ0o·Ì[dadc6dgvä˜ò¶ØÜ _sþù†yž/™K䊹B®™k䆹ANÌ ¹en§,4 ÌB³À,4 ÌB³À,ʬÈô üB¿À/ÁÈô üB¿À/ô üB¿À/ô üB³À,4 ÌJ§Â©t*œJ§Â©t*œJ§Â©t*œJ§Â©t*œJ§Â©t*œJ§Â©t*œÊ:+ê¬4+ÌJ³Âl¬³¡ÎF¿ÁoôüF¿ÁoôüF¿ÁoôüF¿ÁoôüF¿ÁoôüF¿Áo4ÌF§Áé{¸Óép:§Óép:§Óép:§Óép:>ߟN‡Óét8N‡ÓYgGf‡ÙYgG~‡?Xç@ƒþ€?èøƒþ€?èøƒþ€?èøƒþ€?èøƒþ€?èøƒæ€¹\þ³Ø[–¬í<¿ø}9Ù~Œ±^±Ì=£ZöáÜõòLp¾fyV:7§¥ ¡M¡¾·½úu§Ž8wÙ¹ç¡Û»ôÞˆ‡~À®ùõ\{[” endstream endobj 774 0 obj 629 endobj 148 0 obj <> endobj 775 0 obj <> endobj 776 0 obj <> endobj 777 0 obj <> stream xÚ]ÍJÄ0ÇïyŠñ ¬‡Ú´«ÈB),•ÅÔe»>@šLjÀ&!M}{“´¬à!á7ßÿ™û»s—…é1Û?R¸àdfÇ1kÞ™%yÓ¾¶ZyÈÏÎð=H¥…Ûr ÇAiR” ÷›•~>nÅÝ2y[- ©*È/!8y·À.M| ù§è”`÷ÕtÁîfkpDí’º24 Z>؈Å›áYHý \‹P&»X5p#p²Œ£cz@RQZCu:Õµø{^+zÉ¿™Û2)e‡:p‘eärå—ÈûÄ’G~Zý‡Ô{ë§Äýoªùì\X()IŽb•ÆÛ­±±*½_ü}| endstream endobj 778 0 obj 255 endobj 150 0 obj <> endobj 151 0 obj <> endobj 152 0 obj <> endobj 153 0 obj <> endobj 154 0 obj <> endobj 155 0 obj <> endobj 156 0 obj <> endobj 157 0 obj <> endobj 158 0 obj <> endobj 159 0 obj <> endobj 160 0 obj <> endobj 161 0 obj <> endobj 162 0 obj <> endobj 163 0 obj <> endobj 164 0 obj <> endobj 165 0 obj <> endobj 166 0 obj <> endobj 167 0 obj <> endobj 168 0 obj <> endobj 169 0 obj <> endobj 170 0 obj <> endobj 171 0 obj <> endobj 172 0 obj <> endobj 173 0 obj <> endobj 174 0 obj <> endobj 175 0 obj <> endobj 176 0 obj <> endobj 177 0 obj <> endobj 178 0 obj <> endobj 179 0 obj <> endobj 180 0 obj <> endobj 181 0 obj <> endobj 182 0 obj <> endobj 183 0 obj <> endobj 184 0 obj <> endobj 185 0 obj <> endobj 186 0 obj <> endobj 187 0 obj <> endobj 188 0 obj <> endobj 189 0 obj <> endobj 190 0 obj <> endobj 191 0 obj <> endobj 192 0 obj <> endobj 193 0 obj <> endobj 194 0 obj <> endobj 195 0 obj <> endobj 196 0 obj <> endobj 197 0 obj <> endobj 198 0 obj <> endobj 199 0 obj <> endobj 200 0 obj <> endobj 201 0 obj <> endobj 202 0 obj <> endobj 203 0 obj <> endobj 204 0 obj <> endobj 205 0 obj <> endobj 206 0 obj <> endobj 207 0 obj <> endobj 208 0 obj <> endobj 209 0 obj <> endobj 210 0 obj <> endobj 211 0 obj <> endobj 212 0 obj <> endobj 213 0 obj <> endobj 214 0 obj <> endobj 215 0 obj <> endobj 216 0 obj <> endobj 217 0 obj <> endobj 218 0 obj <> endobj 219 0 obj <> endobj 220 0 obj <> endobj 221 0 obj <> endobj 226 0 obj <> endobj 227 0 obj <> endobj 228 0 obj <> endobj 229 0 obj <> endobj 230 0 obj <> endobj 231 0 obj <> endobj 232 0 obj <> endobj 233 0 obj <> endobj 234 0 obj <> endobj 235 0 obj <> endobj 236 0 obj <> endobj 237 0 obj <> endobj 238 0 obj <> endobj 239 0 obj <> endobj 240 0 obj <> endobj 241 0 obj <> endobj 242 0 obj <> endobj 243 0 obj <> endobj 244 0 obj <> endobj 245 0 obj <> endobj 246 0 obj <> endobj 247 0 obj <> endobj 248 0 obj <> endobj 249 0 obj <> endobj 250 0 obj <> endobj 251 0 obj <> endobj 252 0 obj <> endobj 253 0 obj <> endobj 254 0 obj <> endobj 255 0 obj <> endobj 256 0 obj <> endobj 257 0 obj <> endobj 258 0 obj <> endobj 259 0 obj <> endobj 260 0 obj <> endobj 261 0 obj <> endobj 262 0 obj <> endobj 263 0 obj <> endobj 264 0 obj <> endobj 265 0 obj <> endobj 266 0 obj <> endobj 267 0 obj <> endobj 268 0 obj <> endobj 269 0 obj <> endobj 270 0 obj <> endobj 271 0 obj <> endobj 272 0 obj <> endobj 273 0 obj <> endobj 274 0 obj <> endobj 275 0 obj <> endobj 276 0 obj <> endobj 277 0 obj <> endobj 278 0 obj <> endobj 279 0 obj <> endobj 280 0 obj <> endobj 281 0 obj <> endobj 282 0 obj <> endobj 283 0 obj <> endobj 284 0 obj <> endobj 285 0 obj <> endobj 286 0 obj <> endobj 287 0 obj <> endobj 288 0 obj <> endobj 289 0 obj <> endobj 290 0 obj <> endobj 291 0 obj <> endobj 292 0 obj <> endobj 293 0 obj <> endobj 294 0 obj <> endobj 295 0 obj <> endobj 296 0 obj <> endobj 297 0 obj <> endobj 298 0 obj <> endobj 299 0 obj <> endobj 300 0 obj <> endobj 301 0 obj <> endobj 302 0 obj <> endobj 303 0 obj <> endobj 318 0 obj <> endobj 319 0 obj <> endobj 324 0 obj <> endobj 329 0 obj <> endobj 335 0 obj <> endobj 352 0 obj <> endobj 357 0 obj <> endobj 358 0 obj <> endobj 363 0 obj <> endobj 364 0 obj <> endobj 365 0 obj <> endobj 366 0 obj <> endobj 375 0 obj <> endobj 380 0 obj <> endobj 381 0 obj <> endobj 386 0 obj <> endobj 395 0 obj <> endobj 396 0 obj <> endobj 453 0 obj <> endobj 454 0 obj <> endobj 455 0 obj <> endobj 460 0 obj <> endobj 461 0 obj <> endobj 492 0 obj <> endobj 493 0 obj <> endobj 494 0 obj <> endobj 508 0 obj <> endobj 509 0 obj <> endobj 518 0 obj <> endobj 543 0 obj <> endobj 544 0 obj <> endobj 565 0 obj <> endobj 566 0 obj <> endobj 567 0 obj <> endobj 568 0 obj <> endobj 577 0 obj <> endobj 606 0 obj <> endobj 607 0 obj <> endobj 608 0 obj <> endobj 633 0 obj <> endobj 634 0 obj <> endobj 643 0 obj <> endobj 644 0 obj <> endobj 653 0 obj <> endobj 654 0 obj <> endobj 655 0 obj <> endobj 660 0 obj <> endobj 661 0 obj <> endobj 698 0 obj <> endobj 1 0 obj <> ] >> /Names 779 0 R /PageMode /UseOutlines /Outlines 5 0 R /OpenAction [142 0 R /XYZ 0 792 0] /Metadata 3 0 R >> endobj 2 0 obj <> endobj 781 0 obj <> endobj 782 0 obj <> endobj 783 0 obj <> endobj 784 0 obj <> endobj 785 0 obj <> endobj 786 0 obj <> endobj 787 0 obj <> endobj 788 0 obj <> endobj 789 0 obj <> endobj 790 0 obj <> endobj 142 0 obj <> endobj 145 0 obj <> >> endobj 791 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 792 0 obj 36 endobj 222 0 obj <> endobj 225 0 obj <> >> endobj 793 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 794 0 obj 36 endobj 304 0 obj <> endobj 307 0 obj <> >> endobj 795 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 796 0 obj 36 endobj 308 0 obj <> endobj 311 0 obj <> >> endobj 797 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 798 0 obj 36 endobj 312 0 obj <> endobj 315 0 obj <> >> endobj 799 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 800 0 obj 36 endobj 320 0 obj <> endobj 323 0 obj <> >> endobj 801 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 802 0 obj 36 endobj 325 0 obj <> endobj 328 0 obj <> >> endobj 803 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 804 0 obj 36 endobj 330 0 obj <> endobj 333 0 obj <> >> endobj 805 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 806 0 obj 36 endobj 336 0 obj <> endobj 339 0 obj <> >> endobj 807 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 808 0 obj 36 endobj 340 0 obj <> endobj 343 0 obj <> >> endobj 809 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 810 0 obj 36 endobj 344 0 obj <> endobj 347 0 obj <> >> endobj 811 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 812 0 obj 36 endobj 348 0 obj <> endobj 351 0 obj <> >> endobj 813 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 814 0 obj 36 endobj 353 0 obj <> endobj 356 0 obj <> >> endobj 815 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 816 0 obj 36 endobj 359 0 obj <> endobj 362 0 obj <> >> endobj 817 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 818 0 obj 36 endobj 367 0 obj <> endobj 370 0 obj <> >> endobj 819 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 820 0 obj 36 endobj 371 0 obj <> endobj 374 0 obj <> >> endobj 821 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 822 0 obj 36 endobj 376 0 obj <> endobj 379 0 obj <> >> endobj 823 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 824 0 obj 36 endobj 382 0 obj <> endobj 385 0 obj <> >> endobj 825 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 826 0 obj 36 endobj 387 0 obj <> endobj 390 0 obj <> >> endobj 827 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 828 0 obj 36 endobj 391 0 obj <> endobj 394 0 obj <> >> endobj 829 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 830 0 obj 36 endobj 397 0 obj <> endobj 400 0 obj <> >> endobj 831 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 832 0 obj 36 endobj 401 0 obj <> endobj 404 0 obj <> >> endobj 833 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 834 0 obj 36 endobj 405 0 obj <> endobj 408 0 obj <> >> endobj 835 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 836 0 obj 36 endobj 409 0 obj <> endobj 412 0 obj <> >> endobj 837 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 838 0 obj 36 endobj 413 0 obj <> endobj 416 0 obj <> >> endobj 839 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 840 0 obj 36 endobj 417 0 obj <> endobj 420 0 obj <> >> endobj 841 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 842 0 obj 36 endobj 421 0 obj <> endobj 424 0 obj <> >> endobj 843 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 844 0 obj 36 endobj 425 0 obj <> endobj 428 0 obj <> >> endobj 845 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 846 0 obj 36 endobj 429 0 obj <> endobj 432 0 obj <> >> endobj 847 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 848 0 obj 36 endobj 433 0 obj <> endobj 436 0 obj <> >> endobj 849 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 850 0 obj 36 endobj 437 0 obj <> endobj 440 0 obj <> >> endobj 851 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 852 0 obj 36 endobj 441 0 obj <> endobj 444 0 obj <> >> endobj 853 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 854 0 obj 36 endobj 445 0 obj <> endobj 448 0 obj <> >> endobj 855 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 856 0 obj 36 endobj 449 0 obj <> endobj 452 0 obj <> >> endobj 857 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 858 0 obj 36 endobj 456 0 obj <> endobj 459 0 obj <> >> endobj 859 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 860 0 obj 36 endobj 462 0 obj <> endobj 465 0 obj <> >> endobj 861 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 862 0 obj 36 endobj 466 0 obj <> endobj 469 0 obj <> >> endobj 863 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 864 0 obj 36 endobj 470 0 obj <> endobj 473 0 obj <> >> endobj 865 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 866 0 obj 36 endobj 475 0 obj <> endobj 478 0 obj <> >> endobj 867 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 868 0 obj 36 endobj 479 0 obj <> endobj 482 0 obj <> >> endobj 869 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 870 0 obj 36 endobj 483 0 obj <> endobj 486 0 obj <> >> endobj 871 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 872 0 obj 36 endobj 487 0 obj <> endobj 490 0 obj <> >> endobj 873 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 874 0 obj 36 endobj 495 0 obj <> endobj 498 0 obj <> >> endobj 875 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 876 0 obj 36 endobj 500 0 obj <> endobj 503 0 obj <> >> endobj 877 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 878 0 obj 36 endobj 504 0 obj <> endobj 507 0 obj <> >> endobj 879 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 880 0 obj 36 endobj 510 0 obj <> endobj 513 0 obj <> >> endobj 881 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 882 0 obj 36 endobj 514 0 obj <> endobj 517 0 obj <> >> endobj 883 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 884 0 obj 36 endobj 519 0 obj <> endobj 522 0 obj <> >> endobj 885 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 886 0 obj 36 endobj 523 0 obj <> endobj 526 0 obj <> >> endobj 887 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 888 0 obj 36 endobj 527 0 obj <> endobj 530 0 obj <> >> endobj 889 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 890 0 obj 36 endobj 531 0 obj <> endobj 534 0 obj <> >> endobj 891 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 892 0 obj 36 endobj 535 0 obj <> endobj 538 0 obj <> >> endobj 893 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 894 0 obj 36 endobj 539 0 obj <> endobj 542 0 obj <> >> endobj 895 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 896 0 obj 36 endobj 545 0 obj <> endobj 548 0 obj <> >> endobj 897 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 898 0 obj 36 endobj 549 0 obj <> endobj 552 0 obj <> >> endobj 899 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 900 0 obj 36 endobj 553 0 obj <> endobj 556 0 obj <> >> endobj 901 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 902 0 obj 36 endobj 557 0 obj <> endobj 560 0 obj <> >> endobj 903 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 904 0 obj 36 endobj 561 0 obj <> endobj 564 0 obj <> >> endobj 905 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 906 0 obj 36 endobj 569 0 obj <> endobj 572 0 obj <> >> endobj 907 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 908 0 obj 36 endobj 573 0 obj <> endobj 576 0 obj <> >> endobj 909 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 910 0 obj 36 endobj 578 0 obj <> endobj 581 0 obj <> >> endobj 911 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 912 0 obj 36 endobj 582 0 obj <> endobj 585 0 obj <> >> endobj 913 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 914 0 obj 36 endobj 586 0 obj <> endobj 589 0 obj <> >> endobj 915 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 916 0 obj 36 endobj 590 0 obj <> endobj 593 0 obj <> >> endobj 917 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 918 0 obj 36 endobj 594 0 obj <> endobj 597 0 obj <> >> endobj 919 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 920 0 obj 36 endobj 598 0 obj <> endobj 601 0 obj <> >> endobj 921 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 922 0 obj 36 endobj 602 0 obj <> endobj 605 0 obj <> >> endobj 923 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 924 0 obj 36 endobj 609 0 obj <> endobj 612 0 obj <> >> endobj 925 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 926 0 obj 36 endobj 613 0 obj <> endobj 616 0 obj <> >> endobj 927 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 928 0 obj 36 endobj 617 0 obj <> endobj 620 0 obj <> >> endobj 929 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 930 0 obj 36 endobj 621 0 obj <> endobj 624 0 obj <> >> endobj 931 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 932 0 obj 36 endobj 625 0 obj <> endobj 628 0 obj <> >> endobj 933 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 934 0 obj 36 endobj 629 0 obj <> endobj 632 0 obj <> >> endobj 935 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 936 0 obj 36 endobj 635 0 obj <> endobj 638 0 obj <> >> endobj 937 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 938 0 obj 36 endobj 639 0 obj <> endobj 642 0 obj <> >> endobj 939 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 940 0 obj 36 endobj 645 0 obj <> endobj 648 0 obj <> >> endobj 941 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 942 0 obj 36 endobj 649 0 obj <> endobj 652 0 obj <> >> endobj 943 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 944 0 obj 36 endobj 656 0 obj <> endobj 659 0 obj <> >> endobj 945 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 946 0 obj 36 endobj 662 0 obj <> endobj 665 0 obj <> >> endobj 947 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 948 0 obj 36 endobj 666 0 obj <> endobj 669 0 obj <> >> endobj 949 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 950 0 obj 36 endobj 670 0 obj <> endobj 673 0 obj <> >> endobj 951 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 952 0 obj 36 endobj 674 0 obj <> endobj 677 0 obj <> >> endobj 953 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 954 0 obj 36 endobj 678 0 obj <> endobj 681 0 obj <> >> endobj 955 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 956 0 obj 36 endobj 682 0 obj <> endobj 685 0 obj <> >> endobj 957 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 958 0 obj 36 endobj 686 0 obj <> endobj 689 0 obj <> >> endobj 959 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 960 0 obj 36 endobj 690 0 obj <> endobj 693 0 obj <> >> endobj 961 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 962 0 obj 36 endobj 694 0 obj <> endobj 697 0 obj <> >> endobj 963 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 964 0 obj 36 endobj 699 0 obj <> endobj 702 0 obj <> >> endobj 965 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 966 0 obj 36 endobj 703 0 obj <> endobj 706 0 obj <> >> endobj 967 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 968 0 obj 36 endobj 707 0 obj <> endobj 710 0 obj <> >> endobj 969 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 970 0 obj 36 endobj 711 0 obj <> endobj 714 0 obj <> >> endobj 971 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 972 0 obj 36 endobj 715 0 obj <> endobj 718 0 obj <> >> endobj 973 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 974 0 obj 36 endobj 719 0 obj <> endobj 722 0 obj <> >> endobj 975 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 976 0 obj 36 endobj 723 0 obj <> endobj 726 0 obj <> >> endobj 977 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 978 0 obj 36 endobj 727 0 obj <> endobj 730 0 obj <> >> endobj 979 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 980 0 obj 36 endobj 731 0 obj <> endobj 734 0 obj <> >> endobj 981 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 982 0 obj 36 endobj 735 0 obj <> endobj 738 0 obj <> >> endobj 983 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 984 0 obj 36 endobj 739 0 obj <> endobj 742 0 obj <> >> endobj 985 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 986 0 obj 36 endobj 743 0 obj <> endobj 746 0 obj <> >> endobj 987 0 obj <> stream xÚ+ä2P0PÈå234Ò9`ÚÜÒÈ2€Ò\á y\Ÿàì endstream endobj 988 0 obj 36 endobj 3 0 obj <> stream application/pdf Untitled Unknown XEP 4.19 build 20110414 Unknown 2021-04-28T22:40:25Z 2021-04-28T22:40:25Z endstream endobj 5 0 obj <> endobj 133 0 obj <> endobj 134 0 obj <> endobj 137 0 obj <> endobj 136 0 obj <> endobj 135 0 obj <> endobj 138 0 obj <> endobj 140 0 obj <> endobj 141 0 obj <> endobj 139 0 obj <> endobj 97 0 obj <> endobj 123 0 obj <> endobj 132 0 obj <> endobj 131 0 obj <> endobj 130 0 obj <> endobj 129 0 obj <> endobj 128 0 obj <> endobj 127 0 obj <> endobj 126 0 obj <> endobj 125 0 obj <> endobj 124 0 obj <> endobj 98 0 obj <> endobj 100 0 obj <> endobj 99 0 obj <> endobj 111 0 obj <> endobj 121 0 obj <> endobj 120 0 obj <> endobj 119 0 obj <> endobj 118 0 obj <> endobj 117 0 obj <> endobj 116 0 obj <> endobj 115 0 obj <> endobj 114 0 obj <> endobj 113 0 obj <> endobj 112 0 obj <> endobj 110 0 obj <> endobj 109 0 obj <> endobj 122 0 obj <> endobj 102 0 obj <> endobj 108 0 obj <> endobj 107 0 obj <> endobj 106 0 obj <> endobj 105 0 obj <> endobj 104 0 obj <> endobj 103 0 obj <> endobj 101 0 obj <> endobj 85 0 obj <> endobj 96 0 obj <> endobj 93 0 obj <> endobj 95 0 obj <> endobj 94 0 obj <> endobj 90 0 obj <> endobj 92 0 obj <> endobj 91 0 obj <> endobj 89 0 obj <> endobj 86 0 obj <> endobj 88 0 obj <> endobj 87 0 obj <> endobj 19 0 obj <> endobj 43 0 obj <> endobj 42 0 obj <> endobj 41 0 obj <> endobj 40 0 obj <> endobj 39 0 obj <> endobj 38 0 obj <> endobj 37 0 obj <> endobj 36 0 obj <> endobj 33 0 obj <> endobj 35 0 obj <> endobj 34 0 obj <> endobj 29 0 obj <> endobj 32 0 obj <> endobj 31 0 obj <> endobj 30 0 obj <> endobj 26 0 obj <> endobj 28 0 obj <> endobj 27 0 obj <> endobj 25 0 obj <> endobj 24 0 obj <> endobj 23 0 obj <> endobj 22 0 obj <> endobj 21 0 obj <> endobj 20 0 obj <> endobj 49 0 obj <> endobj 68 0 obj <> endobj 67 0 obj <> endobj 66 0 obj <> endobj 65 0 obj <> endobj 64 0 obj <> endobj 63 0 obj <> endobj 62 0 obj <> endobj 61 0 obj <> endobj 60 0 obj <> endobj 59 0 obj <> endobj 58 0 obj <> endobj 53 0 obj <> endobj 57 0 obj <> endobj 56 0 obj <> endobj 55 0 obj <> endobj 54 0 obj <> endobj 52 0 obj <> endobj 51 0 obj <> endobj 50 0 obj <> endobj 80 0 obj <> endobj 84 0 obj <> endobj 83 0 obj <> endobj 82 0 obj <> endobj 81 0 obj <> endobj 44 0 obj <> endobj 48 0 obj <> endobj 47 0 obj <> endobj 46 0 obj <> endobj 45 0 obj <> endobj 11 0 obj <> endobj 12 0 obj <> endobj 18 0 obj <> endobj 14 0 obj <> endobj 17 0 obj <> endobj 16 0 obj <> endobj 15 0 obj <> endobj 13 0 obj <> endobj 75 0 obj <> endobj 76 0 obj <> endobj 79 0 obj <> endobj 78 0 obj <> endobj 77 0 obj <> endobj 8 0 obj <> endobj 10 0 obj <> endobj 9 0 obj <> endobj 7 0 obj <> endobj 6 0 obj <> endobj 69 0 obj <> endobj 74 0 obj <> endobj 73 0 obj <> endobj 72 0 obj <> endobj 71 0 obj <> endobj 70 0 obj <> endobj 779 0 obj <> endobj 780 0 obj <> endobj 1125 0 obj <> endobj 1126 0 obj <> endobj 1127 0 obj <> endobj 1128 0 obj <> endobj 1129 0 obj <> endobj 1130 0 obj <> endobj 1131 0 obj <> endobj 1132 0 obj <> endobj 1133 0 obj <> endobj 1052 0 obj <> endobj 1076 0 obj <> endobj 1104 0 obj <> endobj 1109 0 obj <> endobj 1085 0 obj <> endobj 1029 0 obj <> endobj 1107 0 obj <> endobj 1070 0 obj <> endobj 999 0 obj <> endobj 998 0 obj <> endobj 990 0 obj <> endobj 989 0 obj <> endobj 1084 0 obj <> endobj 1117 0 obj <> endobj 1120 0 obj <> endobj 1115 0 obj <> endobj 1001 0 obj <> endobj 1095 0 obj <> endobj 995 0 obj <> endobj 994 0 obj <> endobj 1122 0 obj <> endobj 1067 0 obj <> endobj 1100 0 obj <> endobj 1020 0 obj <> endobj 1048 0 obj <> endobj 1088 0 obj <> endobj 1017 0 obj <> endobj 1013 0 obj <> endobj 1101 0 obj <> endobj 1121 0 obj <> endobj 1103 0 obj <> endobj 1111 0 obj <> endobj 1045 0 obj <> endobj 996 0 obj <> endobj 1118 0 obj <> endobj 1000 0 obj <> endobj 997 0 obj <> endobj 1075 0 obj <> endobj 1093 0 obj <> endobj 1062 0 obj <> endobj 1091 0 obj <> endobj 1098 0 obj <> endobj 1119 0 obj <> endobj 1038 0 obj <> endobj 1023 0 obj <> endobj 991 0 obj <> endobj 1018 0 obj <> endobj 1064 0 obj <> endobj 1022 0 obj <> endobj 1066 0 obj <> endobj 1002 0 obj <> endobj 1054 0 obj <> endobj 1008 0 obj <> endobj 1037 0 obj <> endobj 1099 0 obj <> endobj 1123 0 obj <> endobj 1032 0 obj <> endobj 1077 0 obj <> endobj 1011 0 obj <> endobj 1082 0 obj <> endobj 1016 0 obj <> endobj 1035 0 obj <> endobj 1116 0 obj <> endobj 993 0 obj <> endobj 1058 0 obj <> endobj 1078 0 obj <> endobj 1083 0 obj <> endobj 1041 0 obj <> endobj 1114 0 obj <> endobj 1061 0 obj <> endobj 1053 0 obj <> endobj 1050 0 obj <> endobj 1024 0 obj <> endobj 1094 0 obj <> endobj 1072 0 obj <> endobj 1105 0 obj <> endobj 1040 0 obj <> endobj 1056 0 obj <> endobj 1096 0 obj <> endobj 1039 0 obj <> endobj 1025 0 obj <> endobj 1030 0 obj <> endobj 1106 0 obj <> endobj 1074 0 obj <> endobj 1014 0 obj <> endobj 1068 0 obj <> endobj 1110 0 obj <> endobj 1090 0 obj <> endobj 1049 0 obj <> endobj 1010 0 obj <> endobj 1086 0 obj <> endobj 1034 0 obj <> endobj 1005 0 obj <> endobj 1060 0 obj <> endobj 1012 0 obj <> endobj 1055 0 obj <> endobj 1036 0 obj <> endobj 1108 0 obj <> endobj 1113 0 obj <> endobj 1097 0 obj <> endobj 1007 0 obj <> endobj 1124 0 obj <> endobj 1031 0 obj <> endobj 1028 0 obj <> endobj 1047 0 obj <> endobj 1073 0 obj <> endobj 1087 0 obj <> endobj 1027 0 obj <> endobj 1069 0 obj <> endobj 1051 0 obj <> endobj 1042 0 obj <> endobj 1004 0 obj <> endobj 1081 0 obj <> endobj 1009 0 obj <> endobj 1057 0 obj <> endobj 1071 0 obj <> endobj 1080 0 obj <> endobj 1006 0 obj <> endobj 1019 0 obj <> endobj 1065 0 obj <> endobj 1063 0 obj <> endobj 1044 0 obj <> endobj 1089 0 obj <> endobj 1003 0 obj <> endobj 1102 0 obj <> endobj 1033 0 obj <> endobj 1059 0 obj <> endobj 1021 0 obj <> endobj 1015 0 obj <> endobj 1043 0 obj <> endobj 1092 0 obj <> endobj 1026 0 obj <> endobj 1112 0 obj <> endobj 1079 0 obj <> endobj 1046 0 obj <> endobj 992 0 obj <> endobj xref 0 1134 0000000000 65535 f 0000313323 00000 n 0000313518 00000 n 0000358276 00000 n 0000278358 00000 n 0000359244 00000 n 0000377081 00000 n 0000376949 00000 n 0000376549 00000 n 0000376828 00000 n 0000376700 00000 n 0000374733 00000 n 0000374885 00000 n 0000375714 00000 n 0000375122 00000 n 0000375586 00000 n 0000375423 00000 n 0000375279 00000 n 0000375006 00000 n 0000366984 00000 n 0000370295 00000 n 0000370170 00000 n 0000370034 00000 n 0000369911 00000 n 0000369781 00000 n 0000369647 00000 n 0000369231 00000 n 0000369522 00000 n 0000369397 00000 n 0000368708 00000 n 0000369118 00000 n 0000369008 00000 n 0000368890 00000 n 0000368269 00000 n 0000368574 00000 n 0000368437 00000 n 0000368136 00000 n 0000367998 00000 n 0000367855 00000 n 0000367700 00000 n 0000367570 00000 n 0000367422 00000 n 0000367267 00000 n 0000367138 00000 n 0000374037 00000 n 0000374604 00000 n 0000374449 00000 n 0000374313 00000 n 0000374196 00000 n 0000370413 00000 n 0000373175 00000 n 0000373019 00000 n 0000372885 00000 n 0000372173 00000 n 0000372765 00000 n 0000372633 00000 n 0000372479 00000 n 0000372336 00000 n 0000372041 00000 n 0000371882 00000 n 0000371740 00000 n 0000371588 00000 n 0000371444 00000 n 0000371280 00000 n 0000371142 00000 n 0000370988 00000 n 0000370846 00000 n 0000370710 00000 n 0000370582 00000 n 0000377204 00000 n 0000377903 00000 n 0000377771 00000 n 0000377632 00000 n 0000377496 00000 n 0000377374 00000 n 0000375838 00000 n 0000376022 00000 n 0000376409 00000 n 0000376276 00000 n 0000376136 00000 n 0000373285 00000 n 0000373895 00000 n 0000373746 00000 n 0000373603 00000 n 0000373454 00000 n 0000365319 00000 n 0000366554 00000 n 0000366853 00000 n 0000366702 00000 n 0000366389 00000 n 0000366025 00000 n 0000366279 00000 n 0000366176 00000 n 0000365610 00000 n 0000365913 00000 n 0000365764 00000 n 0000365502 00000 n 0000360598 00000 n 0000361961 00000 n 0000362230 00000 n 0000362113 00000 n 0000365201 00000 n 0000364232 00000 n 0000365069 00000 n 0000364923 00000 n 0000364787 00000 n 0000364642 00000 n 0000364510 00000 n 0000364387 00000 n 0000364014 00000 n 0000363898 00000 n 0000362333 00000 n 0000363777 00000 n 0000363631 00000 n 0000363484 00000 n 0000363346 00000 n 0000363199 00000 n 0000363063 00000 n 0000362904 00000 n 0000362772 00000 n 0000362612 00000 n 0000362489 00000 n 0000364130 00000 n 0000360775 00000 n 0000361856 00000 n 0000361737 00000 n 0000361618 00000 n 0000361499 00000 n 0000361382 00000 n 0000361265 00000 n 0000361148 00000 n 0000361031 00000 n 0000360928 00000 n 0000359301 00000 n 0000359446 00000 n 0000359905 00000 n 0000359760 00000 n 0000359616 00000 n 0000360014 00000 n 0000360473 00000 n 0000360189 00000 n 0000360347 00000 n 0000315110 00000 n 0000000015 00000 n 0000012664 00000 n 0000315888 00000 n 0000285733 00000 n 0000284060 00000 n 0000292608 00000 n 0000290792 00000 n 0000293448 00000 n 0000293538 00000 n 0000293629 00000 n 0000293721 00000 n 0000293814 00000 n 0000293919 00000 n 0000294029 00000 n 0000294122 00000 n 0000294216 00000 n 0000294315 00000 n 0000294419 00000 n 0000294513 00000 n 0000294612 00000 n 0000294703 00000 n 0000294795 00000 n 0000294896 00000 n 0000294998 00000 n 0000295091 00000 n 0000295185 00000 n 0000295278 00000 n 0000295372 00000 n 0000295467 00000 n 0000295567 00000 n 0000295663 00000 n 0000295764 00000 n 0000295859 00000 n 0000295955 00000 n 0000296051 00000 n 0000296152 00000 n 0000296246 00000 n 0000296341 00000 n 0000296434 00000 n 0000296528 00000 n 0000296625 00000 n 0000296723 00000 n 0000296812 00000 n 0000296902 00000 n 0000296998 00000 n 0000297095 00000 n 0000297190 00000 n 0000297286 00000 n 0000297383 00000 n 0000297485 00000 n 0000297582 00000 n 0000297684 00000 n 0000297777 00000 n 0000297871 00000 n 0000297968 00000 n 0000298066 00000 n 0000298168 00000 n 0000298271 00000 n 0000298368 00000 n 0000298470 00000 n 0000298561 00000 n 0000298653 00000 n 0000298754 00000 n 0000298860 00000 n 0000298961 00000 n 0000299067 00000 n 0000299167 00000 n 0000299268 00000 n 0000299366 00000 n 0000299465 00000 n 0000299559 00000 n 0000299658 00000 n 0000299753 00000 n 0000299849 00000 n 0000299956 00000 n 0000300068 00000 n 0000300168 00000 n 0000300269 00000 n 0000300364 00000 n 0000316124 00000 n 0000012687 00000 n 0000024745 00000 n 0000316950 00000 n 0000300460 00000 n 0000300560 00000 n 0000300661 00000 n 0000300761 00000 n 0000300862 00000 n 0000300963 00000 n 0000301065 00000 n 0000301165 00000 n 0000301266 00000 n 0000301370 00000 n 0000301479 00000 n 0000301585 00000 n 0000301696 00000 n 0000301797 00000 n 0000301903 00000 n 0000302011 00000 n 0000302124 00000 n 0000302229 00000 n 0000302339 00000 n 0000302434 00000 n 0000302530 00000 n 0000302627 00000 n 0000302725 00000 n 0000302821 00000 n 0000302922 00000 n 0000303022 00000 n 0000303123 00000 n 0000303225 00000 n 0000303332 00000 n 0000303429 00000 n 0000303527 00000 n 0000303627 00000 n 0000303728 00000 n 0000303829 00000 n 0000303935 00000 n 0000304031 00000 n 0000304132 00000 n 0000304229 00000 n 0000304327 00000 n 0000304428 00000 n 0000304530 00000 n 0000304629 00000 n 0000304729 00000 n 0000304833 00000 n 0000304938 00000 n 0000305039 00000 n 0000305144 00000 n 0000305242 00000 n 0000305345 00000 n 0000305440 00000 n 0000305536 00000 n 0000305635 00000 n 0000305735 00000 n 0000305823 00000 n 0000305912 00000 n 0000306014 00000 n 0000306121 00000 n 0000306217 00000 n 0000306314 00000 n 0000306407 00000 n 0000306501 00000 n 0000306593 00000 n 0000306686 00000 n 0000306780 00000 n 0000306875 00000 n 0000306971 00000 n 0000307068 00000 n 0000307166 00000 n 0000307269 00000 n 0000307365 00000 n 0000307462 00000 n 0000307558 00000 n 0000307655 00000 n 0000307748 00000 n 0000307842 00000 n 0000307931 00000 n 0000308021 00000 n 0000308125 00000 n 0000317150 00000 n 0000024768 00000 n 0000028579 00000 n 0000317342 00000 n 0000317554 00000 n 0000028601 00000 n 0000029668 00000 n 0000317746 00000 n 0000317958 00000 n 0000029689 00000 n 0000032987 00000 n 0000318176 00000 n 0000278548 00000 n 0000287482 00000 n 0000308234 00000 n 0000308338 00000 n 0000318412 00000 n 0000033009 00000 n 0000036051 00000 n 0000318622 00000 n 0000308439 00000 n 0000318858 00000 n 0000036073 00000 n 0000036812 00000 n 0000319068 00000 n 0000308535 00000 n 0000319280 00000 n 0000036833 00000 n 0000040491 00000 n 0000319490 00000 n 0000289123 00000 n 0000308641 00000 n 0000319738 00000 n 0000040513 00000 n 0000042682 00000 n 0000319930 00000 n 0000320166 00000 n 0000042704 00000 n 0000044783 00000 n 0000320358 00000 n 0000320582 00000 n 0000044805 00000 n 0000047429 00000 n 0000320774 00000 n 0000320998 00000 n 0000047451 00000 n 0000050629 00000 n 0000321208 00000 n 0000308744 00000 n 0000321432 00000 n 0000050651 00000 n 0000054060 00000 n 0000321650 00000 n 0000308844 00000 n 0000308947 00000 n 0000321886 00000 n 0000054082 00000 n 0000058532 00000 n 0000322120 00000 n 0000309046 00000 n 0000309150 00000 n 0000309245 00000 n 0000309347 00000 n 0000322344 00000 n 0000058554 00000 n 0000061355 00000 n 0000322536 00000 n 0000322760 00000 n 0000061377 00000 n 0000065838 00000 n 0000322970 00000 n 0000309446 00000 n 0000323194 00000 n 0000065860 00000 n 0000069902 00000 n 0000323412 00000 n 0000309549 00000 n 0000309644 00000 n 0000323648 00000 n 0000069924 00000 n 0000071930 00000 n 0000323858 00000 n 0000309754 00000 n 0000324082 00000 n 0000071952 00000 n 0000073662 00000 n 0000324274 00000 n 0000324486 00000 n 0000073684 00000 n 0000075736 00000 n 0000324704 00000 n 0000309856 00000 n 0000309964 00000 n 0000324928 00000 n 0000075758 00000 n 0000077240 00000 n 0000325120 00000 n 0000325332 00000 n 0000077262 00000 n 0000079374 00000 n 0000325524 00000 n 0000325748 00000 n 0000079396 00000 n 0000081317 00000 n 0000325940 00000 n 0000326152 00000 n 0000081339 00000 n 0000083736 00000 n 0000326344 00000 n 0000326568 00000 n 0000083758 00000 n 0000086219 00000 n 0000326760 00000 n 0000327008 00000 n 0000086241 00000 n 0000089115 00000 n 0000327200 00000 n 0000327412 00000 n 0000089137 00000 n 0000091343 00000 n 0000327604 00000 n 0000327840 00000 n 0000091365 00000 n 0000092836 00000 n 0000328032 00000 n 0000328244 00000 n 0000092858 00000 n 0000094911 00000 n 0000328436 00000 n 0000328660 00000 n 0000094933 00000 n 0000097029 00000 n 0000328852 00000 n 0000329076 00000 n 0000097051 00000 n 0000098235 00000 n 0000329268 00000 n 0000329480 00000 n 0000098257 00000 n 0000099741 00000 n 0000329672 00000 n 0000329884 00000 n 0000099763 00000 n 0000101945 00000 n 0000330076 00000 n 0000330288 00000 n 0000101967 00000 n 0000106278 00000 n 0000330514 00000 n 0000310067 00000 n 0000310173 00000 n 0000310272 00000 n 0000330738 00000 n 0000106300 00000 n 0000109748 00000 n 0000330956 00000 n 0000310374 00000 n 0000310489 00000 n 0000331192 00000 n 0000109770 00000 n 0000111345 00000 n 0000331384 00000 n 0000331596 00000 n 0000111367 00000 n 0000112181 00000 n 0000331788 00000 n 0000332000 00000 n 0000112202 00000 n 0000114026 00000 n 0000332192 00000 n 0000280332 00000 n 0000332428 00000 n 0000114048 00000 n 0000116365 00000 n 0000332620 00000 n 0000332856 00000 n 0000116387 00000 n 0000118823 00000 n 0000333048 00000 n 0000333272 00000 n 0000118845 00000 n 0000120321 00000 n 0000333464 00000 n 0000333700 00000 n 0000120343 00000 n 0000122821 00000 n 0000333926 00000 n 0000282573 00000 n 0000310595 00000 n 0000310700 00000 n 0000310806 00000 n 0000334162 00000 n 0000122843 00000 n 0000125529 00000 n 0000334354 00000 n 0000281083 00000 n 0000334614 00000 n 0000125551 00000 n 0000127090 00000 n 0000334806 00000 n 0000335030 00000 n 0000127112 00000 n 0000129865 00000 n 0000335248 00000 n 0000310907 00000 n 0000311009 00000 n 0000335460 00000 n 0000129887 00000 n 0000132281 00000 n 0000335652 00000 n 0000335876 00000 n 0000132303 00000 n 0000134924 00000 n 0000336086 00000 n 0000311115 00000 n 0000336310 00000 n 0000134946 00000 n 0000137251 00000 n 0000336502 00000 n 0000336738 00000 n 0000137273 00000 n 0000138775 00000 n 0000336930 00000 n 0000337142 00000 n 0000138797 00000 n 0000142985 00000 n 0000337334 00000 n 0000337558 00000 n 0000143007 00000 n 0000145117 00000 n 0000337750 00000 n 0000337986 00000 n 0000145139 00000 n 0000146759 00000 n 0000338178 00000 n 0000338402 00000 n 0000146781 00000 n 0000148668 00000 n 0000338620 00000 n 0000311220 00000 n 0000311334 00000 n 0000338832 00000 n 0000148690 00000 n 0000151279 00000 n 0000339024 00000 n 0000339272 00000 n 0000151301 00000 n 0000152843 00000 n 0000339464 00000 n 0000339688 00000 n 0000152865 00000 n 0000154792 00000 n 0000339880 00000 n 0000340092 00000 n 0000154814 00000 n 0000157047 00000 n 0000340284 00000 n 0000340508 00000 n 0000157069 00000 n 0000160761 00000 n 0000340742 00000 n 0000311448 00000 n 0000311558 00000 n 0000311661 00000 n 0000311775 00000 n 0000340978 00000 n 0000160783 00000 n 0000163004 00000 n 0000341170 00000 n 0000341394 00000 n 0000163026 00000 n 0000165927 00000 n 0000341604 00000 n 0000311884 00000 n 0000341852 00000 n 0000165949 00000 n 0000167593 00000 n 0000342044 00000 n 0000342256 00000 n 0000167615 00000 n 0000170055 00000 n 0000342448 00000 n 0000342696 00000 n 0000170077 00000 n 0000173648 00000 n 0000342888 00000 n 0000343136 00000 n 0000173670 00000 n 0000177156 00000 n 0000343328 00000 n 0000343564 00000 n 0000177178 00000 n 0000178968 00000 n 0000343756 00000 n 0000343980 00000 n 0000178990 00000 n 0000182534 00000 n 0000344172 00000 n 0000344408 00000 n 0000182556 00000 n 0000185933 00000 n 0000344634 00000 n 0000311986 00000 n 0000312100 00000 n 0000312209 00000 n 0000344858 00000 n 0000185955 00000 n 0000187466 00000 n 0000345050 00000 n 0000345262 00000 n 0000187488 00000 n 0000189348 00000 n 0000345454 00000 n 0000345666 00000 n 0000189370 00000 n 0000191072 00000 n 0000345858 00000 n 0000346070 00000 n 0000191094 00000 n 0000194505 00000 n 0000346262 00000 n 0000346498 00000 n 0000194527 00000 n 0000197747 00000 n 0000346690 00000 n 0000346926 00000 n 0000197769 00000 n 0000201674 00000 n 0000347144 00000 n 0000312317 00000 n 0000312419 00000 n 0000347380 00000 n 0000201696 00000 n 0000204363 00000 n 0000347572 00000 n 0000347808 00000 n 0000204385 00000 n 0000207490 00000 n 0000348026 00000 n 0000312520 00000 n 0000312621 00000 n 0000348250 00000 n 0000207512 00000 n 0000210722 00000 n 0000348442 00000 n 0000348666 00000 n 0000210744 00000 n 0000213604 00000 n 0000348892 00000 n 0000312714 00000 n 0000312817 00000 n 0000312916 00000 n 0000349116 00000 n 0000213626 00000 n 0000216253 00000 n 0000349334 00000 n 0000313019 00000 n 0000313122 00000 n 0000349570 00000 n 0000216275 00000 n 0000219306 00000 n 0000349762 00000 n 0000349998 00000 n 0000219328 00000 n 0000223234 00000 n 0000350190 00000 n 0000350414 00000 n 0000223256 00000 n 0000226199 00000 n 0000350606 00000 n 0000350830 00000 n 0000226221 00000 n 0000229274 00000 n 0000351022 00000 n 0000351258 00000 n 0000229296 00000 n 0000231933 00000 n 0000351450 00000 n 0000351674 00000 n 0000231955 00000 n 0000235144 00000 n 0000351866 00000 n 0000352090 00000 n 0000235166 00000 n 0000237653 00000 n 0000352282 00000 n 0000352506 00000 n 0000237675 00000 n 0000240998 00000 n 0000352698 00000 n 0000352934 00000 n 0000241020 00000 n 0000245026 00000 n 0000353144 00000 n 0000313221 00000 n 0000353380 00000 n 0000245048 00000 n 0000247796 00000 n 0000353572 00000 n 0000353796 00000 n 0000247818 00000 n 0000251159 00000 n 0000353988 00000 n 0000354212 00000 n 0000251181 00000 n 0000252159 00000 n 0000354404 00000 n 0000354640 00000 n 0000252180 00000 n 0000253489 00000 n 0000354832 00000 n 0000355056 00000 n 0000253511 00000 n 0000256868 00000 n 0000355248 00000 n 0000355472 00000 n 0000256890 00000 n 0000260392 00000 n 0000355664 00000 n 0000355888 00000 n 0000260414 00000 n 0000263622 00000 n 0000356080 00000 n 0000356280 00000 n 0000263644 00000 n 0000267180 00000 n 0000356472 00000 n 0000356672 00000 n 0000267202 00000 n 0000270862 00000 n 0000356864 00000 n 0000357064 00000 n 0000270884 00000 n 0000275149 00000 n 0000357256 00000 n 0000357468 00000 n 0000275171 00000 n 0000276688 00000 n 0000357660 00000 n 0000357872 00000 n 0000276710 00000 n 0000278336 00000 n 0000358064 00000 n 0000279434 00000 n 0000279624 00000 n 0000280311 00000 n 0000280498 00000 n 0000280563 00000 n 0000280753 00000 n 0000281062 00000 n 0000281974 00000 n 0000282175 00000 n 0000282552 00000 n 0000283467 00000 n 0000283667 00000 n 0000284039 00000 n 0000284954 00000 n 0000285148 00000 n 0000285712 00000 n 0000286631 00000 n 0000286836 00000 n 0000287461 00000 n 0000288378 00000 n 0000288578 00000 n 0000289102 00000 n 0000290015 00000 n 0000290216 00000 n 0000290771 00000 n 0000291685 00000 n 0000291881 00000 n 0000292587 00000 n 0000292794 00000 n 0000292899 00000 n 0000293095 00000 n 0000293427 00000 n 0000378034 00000 n 0000378071 00000 n 0000313649 00000 n 0000313796 00000 n 0000313943 00000 n 0000314090 00000 n 0000314237 00000 n 0000314384 00000 n 0000314531 00000 n 0000314678 00000 n 0000314825 00000 n 0000314972 00000 n 0000315991 00000 n 0000316104 00000 n 0000317017 00000 n 0000317130 00000 n 0000317421 00000 n 0000317534 00000 n 0000317825 00000 n 0000317938 00000 n 0000318279 00000 n 0000318392 00000 n 0000318725 00000 n 0000318838 00000 n 0000319147 00000 n 0000319260 00000 n 0000319605 00000 n 0000319718 00000 n 0000320033 00000 n 0000320146 00000 n 0000320449 00000 n 0000320562 00000 n 0000320865 00000 n 0000320978 00000 n 0000321299 00000 n 0000321412 00000 n 0000321753 00000 n 0000321866 00000 n 0000322211 00000 n 0000322324 00000 n 0000322627 00000 n 0000322740 00000 n 0000323061 00000 n 0000323174 00000 n 0000323515 00000 n 0000323628 00000 n 0000323949 00000 n 0000324062 00000 n 0000324353 00000 n 0000324466 00000 n 0000324795 00000 n 0000324908 00000 n 0000325199 00000 n 0000325312 00000 n 0000325615 00000 n 0000325728 00000 n 0000326019 00000 n 0000326132 00000 n 0000326435 00000 n 0000326548 00000 n 0000326875 00000 n 0000326988 00000 n 0000327279 00000 n 0000327392 00000 n 0000327707 00000 n 0000327820 00000 n 0000328111 00000 n 0000328224 00000 n 0000328527 00000 n 0000328640 00000 n 0000328943 00000 n 0000329056 00000 n 0000329347 00000 n 0000329460 00000 n 0000329751 00000 n 0000329864 00000 n 0000330155 00000 n 0000330268 00000 n 0000330605 00000 n 0000330718 00000 n 0000331059 00000 n 0000331172 00000 n 0000331463 00000 n 0000331576 00000 n 0000331867 00000 n 0000331980 00000 n 0000332295 00000 n 0000332408 00000 n 0000332723 00000 n 0000332836 00000 n 0000333139 00000 n 0000333252 00000 n 0000333567 00000 n 0000333680 00000 n 0000334029 00000 n 0000334142 00000 n 0000334481 00000 n 0000334594 00000 n 0000334897 00000 n 0000335010 00000 n 0000335327 00000 n 0000335440 00000 n 0000335743 00000 n 0000335856 00000 n 0000336177 00000 n 0000336290 00000 n 0000336605 00000 n 0000336718 00000 n 0000337009 00000 n 0000337122 00000 n 0000337425 00000 n 0000337538 00000 n 0000337853 00000 n 0000337966 00000 n 0000338269 00000 n 0000338382 00000 n 0000338699 00000 n 0000338812 00000 n 0000339139 00000 n 0000339252 00000 n 0000339555 00000 n 0000339668 00000 n 0000339959 00000 n 0000340072 00000 n 0000340375 00000 n 0000340488 00000 n 0000340845 00000 n 0000340958 00000 n 0000341261 00000 n 0000341374 00000 n 0000341719 00000 n 0000341832 00000 n 0000342123 00000 n 0000342236 00000 n 0000342563 00000 n 0000342676 00000 n 0000343003 00000 n 0000343116 00000 n 0000343431 00000 n 0000343544 00000 n 0000343847 00000 n 0000343960 00000 n 0000344275 00000 n 0000344388 00000 n 0000344725 00000 n 0000344838 00000 n 0000345129 00000 n 0000345242 00000 n 0000345533 00000 n 0000345646 00000 n 0000345937 00000 n 0000346050 00000 n 0000346365 00000 n 0000346478 00000 n 0000346793 00000 n 0000346906 00000 n 0000347247 00000 n 0000347360 00000 n 0000347675 00000 n 0000347788 00000 n 0000348117 00000 n 0000348230 00000 n 0000348533 00000 n 0000348646 00000 n 0000348983 00000 n 0000349096 00000 n 0000349437 00000 n 0000349550 00000 n 0000349865 00000 n 0000349978 00000 n 0000350281 00000 n 0000350394 00000 n 0000350697 00000 n 0000350810 00000 n 0000351125 00000 n 0000351238 00000 n 0000351541 00000 n 0000351654 00000 n 0000351957 00000 n 0000352070 00000 n 0000352373 00000 n 0000352486 00000 n 0000352801 00000 n 0000352914 00000 n 0000353247 00000 n 0000353360 00000 n 0000353663 00000 n 0000353776 00000 n 0000354079 00000 n 0000354192 00000 n 0000354507 00000 n 0000354620 00000 n 0000354923 00000 n 0000355036 00000 n 0000355339 00000 n 0000355452 00000 n 0000355755 00000 n 0000355868 00000 n 0000356147 00000 n 0000356260 00000 n 0000356539 00000 n 0000356652 00000 n 0000356931 00000 n 0000357044 00000 n 0000357335 00000 n 0000357448 00000 n 0000357739 00000 n 0000357852 00000 n 0000358143 00000 n 0000358256 00000 n 0000382726 00000 n 0000382674 00000 n 0000384521 00000 n 0000389273 00000 n 0000385468 00000 n 0000383148 00000 n 0000383096 00000 n 0000383887 00000 n 0000384045 00000 n 0000382622 00000 n 0000382570 00000 n 0000383992 00000 n 0000382990 00000 n 0000384783 00000 n 0000388639 00000 n 0000388005 00000 n 0000387000 00000 n 0000388323 00000 n 0000387422 00000 n 0000384887 00000 n 0000388111 00000 n 0000386843 00000 n 0000385205 00000 n 0000387104 00000 n 0000383571 00000 n 0000386578 00000 n 0000388904 00000 n 0000385311 00000 n 0000383518 00000 n 0000384573 00000 n 0000388376 00000 n 0000383359 00000 n 0000388851 00000 n 0000384679 00000 n 0000384468 00000 n 0000385944 00000 n 0000386368 00000 n 0000389063 00000 n 0000387793 00000 n 0000387581 00000 n 0000382411 00000 n 0000386421 00000 n 0000387528 00000 n 0000385099 00000 n 0000388745 00000 n 0000386947 00000 n 0000385364 00000 n 0000387210 00000 n 0000384940 00000 n 0000384415 00000 n 0000386315 00000 n 0000386156 00000 n 0000385679 00000 n 0000387952 00000 n 0000388957 00000 n 0000388533 00000 n 0000383836 00000 n 0000389220 00000 n 0000387634 00000 n 0000383412 00000 n 0000386790 00000 n 0000385891 00000 n 0000387899 00000 n 0000382148 00000 n 0000385838 00000 n 0000384834 00000 n 0000387157 00000 n 0000386209 00000 n 0000388164 00000 n 0000385520 00000 n 0000388798 00000 n 0000387053 00000 n 0000385785 00000 n 0000384203 00000 n 0000388480 00000 n 0000384626 00000 n 0000388429 00000 n 0000384730 00000 n 0000383253 00000 n 0000386631 00000 n 0000387846 00000 n 0000382517 00000 n 0000388217 00000 n 0000386050 00000 n 0000387687 00000 n 0000386525 00000 n 0000384097 00000 n 0000382201 00000 n 0000385152 00000 n 0000385573 00000 n 0000389167 00000 n 0000388270 00000 n 0000388058 00000 n 0000385258 00000 n 0000385626 00000 n 0000382778 00000 n 0000382358 00000 n 0000386896 00000 n 0000387740 00000 n 0000383465 00000 n 0000388586 00000 n 0000386737 00000 n 0000384256 00000 n 0000389010 00000 n 0000384150 00000 n 0000385997 00000 n 0000383043 00000 n 0000386262 00000 n 0000387369 00000 n 0000384309 00000 n 0000384993 00000 n 0000383306 00000 n 0000383624 00000 n 0000388692 00000 n 0000383730 00000 n 0000382254 00000 n 0000386103 00000 n 0000386474 00000 n 0000382464 00000 n 0000387263 00000 n 0000382307 00000 n 0000386684 00000 n 0000383783 00000 n 0000389114 00000 n 0000387316 00000 n 0000385732 00000 n 0000382937 00000 n 0000385415 00000 n 0000382831 00000 n 0000383939 00000 n 0000384362 00000 n 0000382884 00000 n 0000383677 00000 n 0000383200 00000 n 0000385046 00000 n 0000387475 00000 n 0000378183 00000 n 0000378596 00000 n 0000379068 00000 n 0000379545 00000 n 0000379985 00000 n 0000380434 00000 n 0000380851 00000 n 0000381364 00000 n 0000381840 00000 n trailer <<40316B776C4EE8D81B5CA90C9A80BEB8>] >> startxref 389325 %%EOF mysql++-3.3.0/lib/stream2string.h000644 000765 000024 00000003305 14042362133 017335 0ustar00tangentstaff000000 000000 /// \file stream2string.h /// \brief Declares an adapter that converts something that can be /// inserted into a C++ stream into a std::string type. /*********************************************************************** Copyright (c) 1998 by Kevin Atkinson, (c) 1999-2001 by MySQL AB, and (c) 2004-2007 by Educational Technology Resources, Inc. Others may also hold copyrights on code in this file. See the CREDITS.txt file in the top directory of the distribution for details. This file is part of MySQL++. MySQL++ is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. MySQL++ is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with MySQL++; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ***********************************************************************/ #if !defined(MYSQLPP_STREAM2STRING_H) #define MYSQLPP_STREAM2STRING_H #include #include namespace mysqlpp { /// \brief Converts anything you can insert into a C++ stream to a /// \c std::string via \c std::ostringstream. template std::string stream2string(const T& object) { std::ostringstream str; str << object; return str.str(); } } // end namespace mysqlpp #endif // !defined(MYSQLPP_STREAM2STRING_H) mysql++-3.3.0/lib/mysql++.cpp000644 000765 000024 00000002465 14042362133 016365 0ustar00tangentstaff000000 000000 /*********************************************************************** mysql++.cpp - Implements functions dealing with the library itself, as opposed to individual features of the library. Copyright (c) 2007 by Educational Technology Resources, Inc. Others may also hold copyrights on code in this file. See the CREDITS file in the top directory of the distribution for details. This file is part of MySQL++. MySQL++ is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. MySQL++ is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with MySQL++; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ***********************************************************************/ #include "mysql++.h" namespace mysqlpp { unsigned int get_library_version() { return MYSQLPP_HEADER_VERSION; } } // end namespace mysqlpp mysql++-3.3.0/lib/connection.h000644 000765 000024 00000032101 14042362133 016664 0ustar00tangentstaff000000 000000 /// \file connection.h /// \brief Declares the Connection class. /// /// Every program using MySQL++ must create a Connection object, which /// manages information about the connection to the database server, and /// performs connection-related operations once the connection is up. /// Subordinate classes, such as Query and Row take their defaults as /// to whether exceptions are thrown when errors are encountered from /// the Connection object that created them, directly or indirectly. /*********************************************************************** Copyright (c) 1998 by Kevin Atkinson, (c) 1999-2001 by MySQL AB, and (c) 2004-2007 by Educational Technology Resources, Inc. Others may also hold copyrights on code in this file. See the CREDITS.txt file in the top directory of the distribution for details. This file is part of MySQL++. MySQL++ is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. MySQL++ is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with MySQL++; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ***********************************************************************/ #if !defined(MYSQLPP_CONNECTION_H) #define MYSQLPP_CONNECTION_H #include "common.h" #include "noexceptions.h" #include "options.h" #include namespace mysqlpp { #if !defined(DOXYGEN_IGNORE) // Make Doxygen ignore this class MYSQLPP_EXPORT Query; class DBDriver; #endif /// \brief Manages the connection to the database server. /// /// This class is a thick wrapper around DBDriver, adding high-level /// error handling, utility functions, and abstraction away from /// underlying C API details. class MYSQLPP_EXPORT Connection : public OptionalExceptions { private: /// \brief Pointer to bool data member, for use by safe bool /// conversion operator. /// /// \see http://www.artima.com/cppsource/safebool.html typedef bool Connection::*private_bool_type; public: /// \brief Create object without connecting to the database server. /// /// \param te if true, exceptions are thrown on errors Connection(bool te = true); /// \brief Create object and connect to database server in one step. /// /// This constructor allows you to most fully specify the options /// used when connecting to the database server. /// /// \param db name of database to select upon connection /// \param server specifies the IPC method and parameters for /// contacting the server; see below for details /// \param user user name to log in under, or 0 to use the user /// name this program is running under /// \param password password to use when logging in /// \param port TCP port number database server is listening on, or /// 0 to use default value; note that you may also give this as /// part of the \c server parameter /// /// The server parameter can be any of several different forms: /// /// - \b 0: Let the database driver decide how to connect; usually /// some sort of localhost IPC method. /// - \b ".": On Windows, this means named pipes, if the server /// supports it /// - \b "/some/domain/socket/path": If the passed string doesn't /// match one of the previous alternatives and we're on a system /// that supports Unix domain sockets, MySQL++ will test it to see /// if it names one, and use it if we have permission. /// - \b "host.name.or.ip:port": If the previous test fails, or if /// the system doesn't support Unix domain sockets at all, it /// assumes the string is some kind of network address, optionally /// followed by a colon and port. The name can be in dotted quad /// form, a host name, or a domain name. The port can either be a /// TCP/IP port number or a symbolic service name. If a port or /// service name is given here and a nonzero value is passed for /// the \c port parameter, the latter takes precedence. Connection(const char* db, const char* server = 0, const char* user = 0, const char* password = 0, unsigned int port = 0); /// \brief Establish a new connection using the same parameters as /// an existing connection. /// /// \param other existing Connection object Connection(const Connection& other); /// \brief Destroy object virtual ~Connection(); /// \brief Get version of library underpinning the current database /// driver. std::string client_version() const; /// \brief Connect to database after object is created. /// /// It's better to use the connect-on-create constructor if you can. /// See its documentation for the meaning of these parameters. /// /// If you call this method on an object that is already connected /// to a database server, the previous connection is dropped and a /// new connection is established. virtual bool connect(const char* db = 0, const char* server = 0, const char* user = 0, const char* password = 0, unsigned int port = 0); /// \brief Returns true if connection was established successfully /// /// \return true if connection was established successfully bool connected() const; /// \brief Returns the number of rows in a table /// /// \param table name of table whose rows you want counted /// /// This is syntactic sugar for a \c SELECT \c COUNT(*) /// \c FROM \c table SQL query. ulonglong count_rows(const std::string& table); /// \brief Ask the database server to create a database /// /// \param db name of database to create /// /// \return true if database was created successfully bool create_db(const std::string& db); /// \brief Drop the connection to the database server void disconnect(); /// \brief Returns a reference to the current database driver /// /// \internal This exists mostly for the benefit of Query, Result /// and ResUse. If there is something you want to use in the /// DBDriver interface, look for something similar in one of these /// classes instead. If you still can't find it, send a message to /// the mailing list asking about it. Unless you're doing something /// very low-level, there should never be a reason to use the /// driver directly. DBDriver* driver() { return driver_; } /// \brief Asks the database server to drop (destroy) a database /// /// \param db name of database to destroy /// /// \return true if database was dropped successfully bool drop_db(const std::string& db); /// \brief Return last error number associated with this /// connection int errnum(); /// \brief Return error message for last error associated with /// this connection. /// /// Returns either a MySQL++-specific error message if one exists, /// or one from the current database driver otherwise. const char* error() const; /// \brief Get information about the IPC connection to the /// database server /// /// String contains info about type of connection (e.g. TCP/IP, /// named pipe, Unix socket...) and the server hostname. std::string ipc_info() const; /// \brief Kill a database server thread /// /// \param tid ID of thread to kill /// /// \see thread_id() bool kill(unsigned long tid) const; /// \brief Test whether any error has occurred within the object. /// /// Allows the object to be used in bool context, like this: /// /// \code /// Connection conn; /// .... use conn /// if (conn) { /// ... nothing bad has happened since last successful use /// } /// else { /// ... some error has occurred /// } /// \endcode /// /// Prior to MySQL++ v3, the object was always falsy when we /// weren't connected. Now a true return simply indicates a lack of /// errors. If you've been using this to test for whether the /// connection is still up, you need to call connected() instead. operator private_bool_type() const { return copacetic_ ? &Connection::copacetic_ : 0; } /// \brief Copy an existing Connection object's state into this /// object. Connection& operator=(const Connection& rhs); /// \brief "Pings" the database server /// /// \retval true if server is responding /// \retval false if either we already know the connection is down /// and cannot re-establish it, or if the server did not respond to /// the ping and we could not re-establish the connection. bool ping(); /// \brief Returns version number of the protocol the database /// driver uses to communicate with the server. int protocol_version() const; /// \brief Return a new query object. /// /// The returned query object is tied to this connection object, /// so when you call a method like /// \link Query::execute() execute() \endlink /// on that object, the query is sent to the server this object /// is connected to. /// /// \param qstr an optional query string for populating the /// new Query object Query query(const char* qstr = 0); /// \brief Return a new query object /// /// \param qstr initial query string Query query(const std::string& qstr); /// \brief Change to a different database managed by the /// database server we are connected to. /// /// \param db database to switch to /// /// \retval true if we changed databases successfully bool select_db(const std::string& db); /// \brief Get the database server's version string std::string server_version() const; /// \brief Sets a connection option /// /// \param o pointer to any derivative of Option allocated on /// the heap /// /// Objects passed to this method and successfully set will be /// released when this Connection object is destroyed. If an error /// occurs while setting the option the object will be deleted /// immediately. /// /// Because there are so many Option subclasses, the actual effect /// of this function has a wide range. This mechanism abstracts /// away many things that are unrelated down at the database driver /// level, hiding them behind a coherent, type-safe interface. /// /// The rules about which options can be set, when, are up to the /// underlying database driver. Some must be set before the /// connection is established because they can only be used during /// that connection setup process. Others can be set at any time /// after the connection comes up. If you get it wrong, you'll get /// a BadOption exception. /// /// \retval true if option was successfully set bool set_option(Option* o); /// \brief Ask database server to shut down. bool shutdown(); /// \brief Returns information about database server's status std::string server_status() const; /// \brief Returns true if both MySQL++ and database driver we're /// using were compiled with thread awareness. static bool thread_aware(); /// \brief Tells the underlying database driver that this thread /// is done using the library. static void thread_end(); /// \brief Returns the database server's thread ID for this connection /// /// This has nothing to do with threading on the client side. The /// only thing you can do with this value is pass it to kill(). unsigned long thread_id(); /// \brief Tells the underlying database driver that the current /// thread is now using its services. /// /// It's not necessary to call this from the thread that creates /// the connection as it's done automatically. This method exists /// for times when multiple threads may use this object; it allows /// the underlying database driver to set up any per-thread data /// structures it needs. /// /// The MySQL++ user manual's chapter /// on threads details two major strategies for dealing with /// connections in the face of threads. The Connection-per-thread /// option frees you from ever having to call this method. The /// other documented strategy is to use ConnectionPool, which opens /// the possibility for one thread to create a connection that /// another uses, so you do need to call this method in that case, /// or with any other similar strategy. /// /// \retval True if there was no problem static bool thread_start(); protected: /// \brief Build an error message in the standard form used whenever /// one of the methods can't succeed because we're not connected to /// the database server. void build_error_message(const char* core); /// \brief Establish a new connection as a copy of an existing one /// /// \param other the connection to copy void copy(const Connection& other); /// \brief Extract elements from the server parameter in formats /// suitable for passing to DBDriver::connect(). bool parse_ipc_method(const char* server, std::string& host, unsigned int& port, std::string& socket_name); //// Subclass data mutable std::string error_message_; ///< MySQL++ specific error, if any private: DBDriver* driver_; bool copacetic_; }; } // end namespace mysqlpp // Not strictly required, but bring in our specialization subclasses #include "tcp_connection.h" #include "uds_connection.h" #include "wnp_connection.h" #endif // !defined(MYSQLPP_CONNECTION_H) mysql++-3.3.0/lib/stadapter.cpp000644 000765 000024 00000031404 14042362133 017054 0ustar00tangentstaff000000 000000 /*********************************************************************** stadapter.cpp - Implements the SQLTypeAdapter class. Copyright © 1998 by Kevin Atkinson, © 1999-2001 by MySQL AB, and © 2004-2009, 2018 by Educational Technology Resources, Inc. Others may also hold copyrights on code in this file. See the CREDITS.txt file in the top directory of the distribution for details. This file is part of MySQL++. MySQL++ is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. MySQL++ is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with MySQL++; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ***********************************************************************/ #include "stadapter.h" #include "mystring.h" #include "refcounted.h" #include "stream2string.h" #include #include #include using namespace std; namespace mysqlpp { SQLTypeAdapter::SQLTypeAdapter() : is_processed_(false) { } SQLTypeAdapter::SQLTypeAdapter(const SQLTypeAdapter& other) : buffer_(other.buffer_), is_processed_(false) { } SQLTypeAdapter::SQLTypeAdapter(const String& other, bool processed) : buffer_(other.buffer_), is_processed_(processed) { } SQLTypeAdapter::SQLTypeAdapter(const std::string& str, bool processed) : buffer_(new SQLBuffer(str, mysql_type_info::string_type, false)), is_processed_(processed) { } #if !defined(DOXYGEN_IGNORE) SQLTypeAdapter::SQLTypeAdapter(const Null& str, bool processed) : buffer_(new SQLBuffer(str.is_null ? null_str : str.data, str.is_null ? typeid(void) : typeid(str.data), str.is_null)), is_processed_(processed) { } SQLTypeAdapter::SQLTypeAdapter(const Null& str, bool processed) : buffer_(new SQLBuffer( str.is_null ? null_str.c_str() : str.data.data(), str.is_null ? null_str.length() : str.data.length(), str.is_null ? typeid(void) : typeid(str.data), str.is_null)), is_processed_(processed) { } #endif SQLTypeAdapter::SQLTypeAdapter(const char* str, bool processed) : buffer_(new SQLBuffer(str, strlen(str), mysql_type_info::string_type, false)), is_processed_(processed) { } SQLTypeAdapter::SQLTypeAdapter(const char* str, int len, bool processed) : buffer_(new SQLBuffer(str, len, mysql_type_info::string_type, false)), is_processed_(processed) { } SQLTypeAdapter::SQLTypeAdapter(char c) : buffer_(new SQLBuffer(stream2string(c), mysql_type_info::string_type, false)), is_processed_(false) { } #if !defined(DOXYGEN_IGNORE) SQLTypeAdapter::SQLTypeAdapter(Null c) : buffer_(new SQLBuffer(c.is_null ? null_str : stream2string(c), c.is_null ? typeid(void) : typeid(c.data), c.is_null)), is_processed_(false) { } #endif SQLTypeAdapter::SQLTypeAdapter(tiny_int i) : buffer_(new SQLBuffer(stream2string(i), typeid(i), false)), is_processed_(false) { } #if !defined(DOXYGEN_IGNORE) SQLTypeAdapter::SQLTypeAdapter(Null > i) : buffer_(new SQLBuffer(i.is_null ? null_str : stream2string(i), i.is_null ? typeid(void) : typeid(i.data), i.is_null)), is_processed_(false) { } #endif SQLTypeAdapter::SQLTypeAdapter(tiny_int i) : buffer_(new SQLBuffer(stream2string(i), typeid(i), false)), is_processed_(false) { } #if !defined(DOXYGEN_IGNORE) SQLTypeAdapter::SQLTypeAdapter(Null > i) : buffer_(new SQLBuffer(i.is_null ? null_str : stream2string(i), i.is_null ? typeid(void) : typeid(i.data), i.is_null)), is_processed_(false) { } #endif SQLTypeAdapter::SQLTypeAdapter(short i) : buffer_(new SQLBuffer(stream2string(i), typeid(i), false)), is_processed_(false) { } #if !defined(DOXYGEN_IGNORE) SQLTypeAdapter::SQLTypeAdapter(Null i) : buffer_(new SQLBuffer(i.is_null ? null_str : stream2string(i), i.is_null ? typeid(void) : typeid(i.data), i.is_null)), is_processed_(false) { } #endif SQLTypeAdapter::SQLTypeAdapter(unsigned short i) : buffer_(new SQLBuffer(stream2string(i), typeid(i), false)), is_processed_(false) { } #if !defined(DOXYGEN_IGNORE) SQLTypeAdapter::SQLTypeAdapter(Null i) : buffer_(new SQLBuffer(i.is_null ? null_str : stream2string(i), i.is_null ? typeid(void) : typeid(i.data), i.is_null)), is_processed_(false) { } #endif SQLTypeAdapter::SQLTypeAdapter(int i) : buffer_(new SQLBuffer(stream2string(i), typeid(i), false)), is_processed_(false) { } #if !defined(DOXYGEN_IGNORE) SQLTypeAdapter::SQLTypeAdapter(Null i) : buffer_(new SQLBuffer(i.is_null ? null_str : stream2string(i), i.is_null ? typeid(void) : typeid(i.data), i.is_null)), is_processed_(false) { } #endif SQLTypeAdapter::SQLTypeAdapter(unsigned i) : buffer_(new SQLBuffer(stream2string(i), typeid(i), false)), is_processed_(false) { } #if !defined(DOXYGEN_IGNORE) SQLTypeAdapter::SQLTypeAdapter(Null i) : buffer_(new SQLBuffer(i.is_null ? null_str : stream2string(i), i.is_null ? typeid(void) : typeid(i.data), i.is_null)), is_processed_(false) { } #endif SQLTypeAdapter::SQLTypeAdapter(long i) : buffer_(new SQLBuffer(stream2string(i), typeid(i), false)), is_processed_(false) { } #if !defined(DOXYGEN_IGNORE) SQLTypeAdapter::SQLTypeAdapter(Null i) : buffer_(new SQLBuffer(i.is_null ? null_str : stream2string(i), i.is_null ? typeid(void) : typeid(i.data), i.is_null)), is_processed_(false) { } #endif SQLTypeAdapter::SQLTypeAdapter(unsigned long i) : buffer_(new SQLBuffer(stream2string(i), typeid(i), false)), is_processed_(false) { } #if !defined(DOXYGEN_IGNORE) SQLTypeAdapter::SQLTypeAdapter(Null i) : buffer_(new SQLBuffer(i.is_null ? null_str : stream2string(i), i.is_null ? typeid(void) : typeid(i.data), i.is_null)), is_processed_(false) { } #endif SQLTypeAdapter::SQLTypeAdapter(longlong i) : buffer_(new SQLBuffer(stream2string(i), typeid(i), false)), is_processed_(false) { } #if !defined(DOXYGEN_IGNORE) SQLTypeAdapter::SQLTypeAdapter(Null i) : buffer_(new SQLBuffer(i.is_null ? null_str : stream2string(i), i.is_null ? typeid(void) : typeid(i.data), i.is_null)), is_processed_(false) { } #endif SQLTypeAdapter::SQLTypeAdapter(ulonglong i) : buffer_(new SQLBuffer(stream2string(i), typeid(i), false)), is_processed_(false) { } #if !defined(DOXYGEN_IGNORE) SQLTypeAdapter::SQLTypeAdapter(Null i) : buffer_(new SQLBuffer(i.is_null ? null_str : stream2string(i), i.is_null ? typeid(void) : typeid(i.data), i.is_null)), is_processed_(false) { } #endif SQLTypeAdapter::SQLTypeAdapter(float f) : is_processed_(false) { typedef numeric_limits nlf; if ((nlf::has_infinity && (f == nlf::infinity())) || (nlf::has_quiet_NaN && (f == nlf::quiet_NaN())) || (nlf::has_signaling_NaN && (f == nlf::signaling_NaN()))) { // f isn't null-able, but it's infinite or NaN, so store it // as a 0. This at least prevents syntactically-invalid SQL. buffer_ = new SQLBuffer("0", typeid(f), true); } else { ostringstream outs; outs.precision(9); // max dec digits needed for IEEE 754 32-bit float outs << f; buffer_ = new SQLBuffer(outs.str(), typeid(f), false); } } #if !defined(DOXYGEN_IGNORE) SQLTypeAdapter::SQLTypeAdapter(Null f) : is_processed_(false) { typedef numeric_limits nlf; if (f.is_null || (nlf::has_infinity && (f.data == nlf::infinity())) || (nlf::has_quiet_NaN && (f.data == nlf::quiet_NaN())) || (nlf::has_signaling_NaN && (f.data == nlf::signaling_NaN()))) { // MySQL wants infinite and NaN FP values stored as SQL NULL buffer_ = new SQLBuffer(null_str, typeid(void), true); } else { ostringstream outs; outs.precision(9); // as above outs << f; buffer_ = new SQLBuffer(outs.str(), typeid(f.data), false); } } #endif SQLTypeAdapter::SQLTypeAdapter(double f) : is_processed_(false) { typedef numeric_limits nld; if ((nld::has_infinity && (f == nld::infinity())) || (nld::has_quiet_NaN && (f == nld::quiet_NaN())) || (nld::has_signaling_NaN && (f == nld::signaling_NaN()))) { // f isn't null-able, but it's infinite or NaN, so store it // as a 0. This at least prevents syntactically-invalid SQL. buffer_ = new SQLBuffer("0", typeid(f), true); } else { ostringstream outs; outs.precision(17); // max dec digits needed for IEEE 754 64-bit float outs << f; buffer_ = new SQLBuffer(outs.str(), typeid(f), false); } } #if !defined(DOXYGEN_IGNORE) SQLTypeAdapter::SQLTypeAdapter(Null f) : is_processed_(false) { typedef numeric_limits nld; if (f.is_null || (nld::has_infinity && (f.data == nld::infinity())) || (nld::has_quiet_NaN && (f.data == nld::quiet_NaN())) || (nld::has_signaling_NaN && (f.data == nld::signaling_NaN()))) { // MySQL wants infinite and NaN FP values stored as SQL NULL buffer_ = new SQLBuffer(null_str, typeid(void), true); } else { ostringstream outs; outs.precision(17); // as above outs << f; buffer_ = new SQLBuffer(outs.str(), typeid(f.data), false); } } #endif SQLTypeAdapter::SQLTypeAdapter(const Date& d) : buffer_(new SQLBuffer(stream2string(d), typeid(d), false)), is_processed_(false) { } #if !defined(DOXYGEN_IGNORE) SQLTypeAdapter::SQLTypeAdapter(const Null& d) : buffer_(new SQLBuffer(d.is_null ? null_str : stream2string(d), d.is_null ? typeid(void) : typeid(d.data), d.is_null)), is_processed_(false) { } #endif SQLTypeAdapter::SQLTypeAdapter(const DateTime& dt) : buffer_(new SQLBuffer(stream2string(dt), typeid(dt), false)), is_processed_(false) { } #if !defined(DOXYGEN_IGNORE) SQLTypeAdapter::SQLTypeAdapter(const Null& dt) : buffer_(new SQLBuffer(dt.is_null ? null_str : stream2string(dt), dt.is_null ? typeid(void) : typeid(dt.data), dt.is_null)), is_processed_(false) { } #endif SQLTypeAdapter::SQLTypeAdapter(const Time& t) : buffer_(new SQLBuffer(stream2string(t), typeid(t), false)), is_processed_(false) { } #if !defined(DOXYGEN_IGNORE) SQLTypeAdapter::SQLTypeAdapter(const Null